45

比特现金是否应该缩短区块间隔时间?

 5 years ago
source link: https://www.jinse.com/bitcoin/216354.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

第0章 引言

比特现金BCH社区天天吵架,多中心化的烦恼。现在又吵到了10分钟一个区块是否需要改变。争吵的各方都是BCH的死忠粉,都为了BCH好。

本文讨论BCH缩短区块时间的优劣。

2YJFvqj.jpg!web

第1章 比特币区块间隔时间的设定

比特币一开始设计就是将区块生产间隔时间设定为平均10分钟,并不是严格的10分钟。10分钟这个时间是一个统计上的平均值,设定原理是这样的:

比特币系统会每隔2016个块检查全网挖出前2016个块的区块平均间隔时间,即2016个块的总时间除以2016。系统有一个“难度值”的设定。如果这个平均间隔时间大于10分钟,则系统会将“难度值”调低,以希望下一个2016个块的生产周期的区块间隔时间尽量逼近10分钟。如果这个平均间隔时间小于10分钟,则系统会将“难度值”调高。

这么设计直接影响比特币的产出速率,比特币总量设计为2100万BTC。平均10分钟产出一个块,一个块的区块奖励是50BTC,每挖出剩下的一半时,区块奖励就减少一半,约四年会发生一次减半,现在已经发生了2次,目前一个区块奖励是12.5BTC/BCH。这样下去,大约到2140年会全部产出2100万BTC/BCH。

比特现金BCH现在不是使用上述2016个区块来调整难度,而是使用了另一个算法,叫DAA逐块调查难度值,目的是在算力波动大的前提下,让区块平均出块时间更趋进10分钟。

币的产出速率事关行业发展的时间窗口,这个是很重要的,但为什么是10分钟一个块,这个其实很难计算其合理性。不过,这次BCH讨论缩短区块时间,并不影响剩下的币的产出速率,所有参与讨论的人在这个目标是一致的。缩短区块的支持者也是要将区块奖励同比例下调,以保证币产出时间不受影响。

莱特币的区块间隔时间是2.5分钟。以太坊的区块间隔时间是平均15秒,但以太坊产生了大量的孤块,而且孤块在系统中还是合法的,有区块奖励但不打包交易,浪费。BTS更短,但使用的共识机制是DPOS,EOS最短0.5秒。

下面我们分析区块间隔时间具体对什么有影响。

第2章 区块间隔时间影响用户体验

比特币是通过“确认数”来保证安全性,所谓的“确认数”就是认可你这笔交易的区块数量,区块是矿工挖出来的。安全性和确认数是呈正比的,我们一般认为比特币(BTC和BCH)六个确认就是100%安全,以太坊36个确认就是100%安全。也就是比特币是1小时就可以达到100%安全,以太坊是9分钟。而实际情况是,比特币1个确认的安全性已经在绝大多数场景达到了100%,比如你往绝大多数交易所充值就只需要1个确认。而以太坊12个确认就满足了大多数场景的安全性。并且如果你是小额支付,在熟人圈的支付,零确认已经100%安全了。现实生活中绝大多数支付场景也是0确认就够了。

但人总是希望越短时间越好,太长的确认时间用户就不耐烦。这是支持缩短BCH区块间隔时间的最大理由了。

使用BCH的不但有人,未来还会有大量的智能合约。BCH上的智能合约的运行会依赖于BCH链上的区块数据。如果10分钟一个区块,那合约的合理设计就是执行时间要大于10分钟。这对很多合约来说,是不合理的。

这个不是特别好理解,我举个例子,合约A是一个赌资判罚合约,合约B是一个打赌合约,即B是判断谁输谁赢的合约。两个人各将1BCH发给一个合约A打赌,打赌结果通过合约B调用合约A,合约B将打赌结果作为参数传递给合约A,让合约A来执行赌资的归属。合约A的成立就必须在得到BCH区块对这两个人的交易的确认才能成立,但如果合约B的执行时间小于10分钟呢,打赌的结果都出来了,但赌资的判罚却要等10分钟。这样的用户体验并不好。

反对缩短的理由主要寄期望于零确认的安全性的推广。还有另外一种技术,就是弱区块,weak block,应该也能帮上忙。不过,这些都还有待程序员去写代码。

第3章 区块间隔时间影响挖矿多中心化

挖矿是这样的,系统会给出一个目标值,这是一个数,比如前面有18个零。挖矿就是找出一个小于这个目标值的随机数,比如前面有19个零。找到了,就挖到了区块。

这个随机数是对矿池对最新高度的区块链进行哈希得来的。矿池先构造一个最新的区块,并且将这个区块连并之前所有的区块进行哈希,哈希一次就对比一次目标值,如果不小于目标值,就调整他构造的最新区块中的一个叫Nounce值的随机数,再哈希。

显然一台矿机来哈希,你要试出满足目标值的Nounce值,那真是要慢死了。但矿池可以将不同的Nounce划分给不同的矿机来试。比如矿池一共有1000台矿机,将0到1000,给第1台试;10001到2000给第2台试……

这样的结局就是目标值前置的零越多,为了在相同的时间里挖到区块,需要的矿机数量就越多。而如果有一个矿池长时间挖不到块,比如一年才挖到一个块,那就容易倒闭。这样的结局就是,随着目标值前置的零越来越多,小矿池就越不容易生存,挖矿就趋向于中心化。也就是全网算力越多,挖矿将越趋向于中心化。

缩短区块间隔时间,是有利于缓解随着算力的增长带来的挖矿中心化倾向。因为缩短区块间隔时间,意味着生产一个区块的目标值的前置零数下降,小矿池挖到一个块的时间周期就会更短,这样有利于小矿池的生存。

但是这只是一种推理,事实上能否带来更多中心化是不知道的。而且无法使用实验来验证,这是这个推理无法得到广泛认可的一个很重要的原因。

而且这种缩短时间只是一种权宜之计,如果缩短5倍时间,但算力涨上5倍之后,缩短区块时间带来的多中心化效应就消失了。

为了这一点可能的多中心化的,而改变区块时间,应该是不合理的。

第4章 区块间隔时间影响孤块率

如果同一时间,有两个矿池都挖出了一个块,那必然会有一个孤块。也因此,矿池之间需要建立比一般的P2P网络更紧密的联系,以及时发现别的矿池是否挖到了区块,从而更及时更新自己的挖矿高度,以避免浪费挖矿时间。

孤块率和网络硬件基础设计相关,越快的网络,就越能更快地发现同行是否挖到块,从而降低孤块率。而越大的区块,传播时间越长,就越容易造成同行发现时间更长,就会增加孤块率。

在完全相同的硬件基础设施下,以及相同区块大小下,区块间隔时间缩短了,会提高孤块产生的概率。区块总量多了嘛。大家发现最新高度的时间也缩短了。

而越长的区块间隔时间,在追求相同的孤块率下,可以支撑更大的区块。假设矿池追求孤块率达到0.1%,即1000个块有一个孤块。如果区块间隔时间是10分钟,全网可以传播最大区块可达到1G区块,而时间下降几倍,意味着最大区块尺寸就得下降。

这就是奥本聪说的区块间隔时间影响可扩展性的关键理由。

但10分钟是否是最合理的设计,也就是说有没有可能8分钟,5分钟……也能是相同概率的孤块率。这个问题其实是可以测试的。

直接在全球部署1000个节点,然后相互广播1G的区块,设置不同的区块生产时间,就可以直接测试出网络延迟造成的不同的孤块率。但目前没有团队去做这样的测试,只要拿出可靠的测试结果,才更有说服力。

以太坊的区块间隔时间是15秒,这个太快了。以致于以太坊的孤块率非常高,以太坊称为叔块,这些叔块在以太坊协议中是合法的,但却不打包交易,却需要支付给矿工奖励。

孤块应该尽可能降低,否则就不叫区块链了,应该叫区块树。

第5章 区块间隔时间影响51%攻击能力

在各种条件都相同的情况下,越长的区块时间,生产一个区块的成本就越高。那越短的区块时间,就显然降低了51%攻击的成本。

现在假设10分钟,对阵2分钟,所有其他条件都一样。全网有一个持有51%算力的坏蛋矿工,准备51%双花一笔交易。

这个坏矿工先花出去一笔交易,在得到一个确认后,开始发起51%攻击。因为持有51%算力,那他拼命算,假设算到3个块,就超过了其他算力成为最长链。那10分钟的区块间隔就需要40分钟的双花时间,而2分钟,则只要6分钟。这样的攻击成本完全是两个维度的。

但10分钟的安全是不是安全系数过高呢?51%攻击的安全隐患是不是被夸张了呢?毕竟莱特币2.5分钟也没啥问题,各种币都越来越短的区块时间,其实都挺安全的。

这又需要一大票计算,而且还无法做测试,麻烦。

第6章 区块间隔时间影响SPV钱包的使用

比特币是有SPV验证的,SPV钱包一般是会装在手机上,只保存所有的区块头。现在区块头是80字节,一天144个区块,一年会产生144*365*80/1024=4.1M的区块头数据。 现在是10年了,现在SPV钱包要下载41M的区块头数据了。

如果缩短区块时间,意味着区块数量大大增加,也意味着区块头数据大大增加。比如缩小到2分钟,则一年会新增区块头数据5倍,即一年将产生 4.1*5=20.5 M的区块头数据,10年就是205M。这样会导致SPV钱包比较难用。

这是一个可量化的数据,我们的手机4G网络包月是1G已经普及了,但还是很贵的,手机内存对付几百M的数据,我觉得问题不大,但网络流量吃紧。

第7章 结论

我是个保守主义者,我个人的态度是,目前不支持缩小区块间隔时间。在没有更充分的安全性验证之前,不宜作更改。

不过我的认证都是在逻辑上的,并不是建立在实验和数学上的,我们需要更多的实验测试和数学证明。

第8章 结束语

如果你喜欢多中心化,就加入比特现金社区吧,BCH粉天天吵架。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK