以太坊无效区块

以太坊的出块时间控制在10-19s之间,为什么是这个数而非其他数值呢?为什么要让时间差恒定,而不让难度值恒定呢?

 

我们假设难度值恒定的话,那么在网络算力充足的时候,很幸运,很快就会有电脑发现满足要求的随机数,用户的交易确认就会很快。但当网络算力不足的时候,找到那个对的随机数就会需要较长的时间,那么用户也需要等待较长的时间来确定交易。这类系统延迟不确定的特点肯定很难受到用户的青睐,因为用户总想明确知道需要多长时间能完成交易,就像我们去银行汇款,银行会告诉我们在多长时间内完成汇款。

 

好了,我们现在知道让时间差恒定更好。那这个恒定的时间差,可以缩短至1秒,也可以长到无限长,只需要调整难度值就可以改变。这个时间差的长和短各有什么影响呢?我们来看看。

 

在讨论之前,我们先来看这么一种情况:如果两个矿工几乎同时算出了满足条件的nonce1和nonce2,两个区块都是合法的,都满足工作量证明的要求。那谁上谁下?在以太坊中解决的办法很简单,就是难度值更大的那个区块上去,另外一个区块不能上。这种满足要求却不能上的区块,我们称之为无效区块,以太坊中也叫叔块(uncle block)。

 

所以,如果恒定的时间差很短会怎么样呢?意味着找到合格nonne的概率更大,所以当某个矿工向网络广播这个区块的时候,别的矿工可能也同时找到了合格nonce并进行了广播,由此便产生了更多的无效块。如果生产区块的时间变得长一点,多个矿工同时解决问题的概率就小一些,即使都解决了问题,也很可能存在时间差,在这个时间差里,第一个被解决的区块就可以进行广播,并阻止其他矿工继续挖本轮的区块。所以说,这个区块时间不能太短。那太长会怎么样呢,这个很好理解,区块时间越长,区块中包含的那些交易,他们的确认时间就越长,用户当然希望越快确认越好。所以,以太坊最终就选择了10-19秒这样一个区间。

 

那有人可能会说,我为了更快的确认,多一点无效块又有什么关系呢?我可以明确告诉你,无效块多了,问题大了。

  • 无效块会影响系统安全。
  • 无效块会导致确认时间大于区块生成时间。

 

我们来看为什么会这样。首先来看无效块怎么影响系统安全。我们知道区块链网络的安全是由整个网络中的矿工的全部算力来衡量的。从这个角度来说,一个区块链网络它的总算力越大,意味着更安全,因为节点想篡改区块链将需要更多的算力,使篡改更难。如果出现无效块会怎么样呢?当不同的节点几乎同时挖出两个区块时,系统的算力就被分成了两部分,分别在两个不同的区块链上工作,但最终胜出的只能是其中一个,所以在无效区块上工作的算力就被损失了,因为算力被用在了没有用的事情上面。所以,如果无效区块越多,算力损失就越多,所以我们必须控制无效区块的比例在一个合理的范围内。

 

我们接着来看,为什么说无效块会导致确认时间大于区块生成时间。当两个矿工几乎同时挖出一个区块时,他们打包的交易可能会有少许差异。因此如果有一笔交易只出现在其中的一个待确认区块中,就不能说交易已经确认了,因为交易所在的区块可能最终是无效区块。我们要再等待挖出几个区块。这样,就导致了无效区块的平均确认时间不等于生成区块的平均时间。

 

想了解更多?关注我们就够了。

公众号:ipfscom
微信(Q):18191727
Q
群:71789361
微信扫一扫,加入知识星球

 

猜你喜欢

转载自blog.csdn.net/angciyu/article/details/81841490
今日推荐