以太坊的出块时间控制在10-19s之间,为什么是这个数而非其他数值呢?为什么要让时间差恒定,而不让难度值恒定呢?
我们假设难度值恒定的话,那么在网络算力充足的时候,很幸运,很快就会有电脑发现满足要求的随机数,用户的交易确认就会很快。但当网络算力不足的时候,找到那个对的随机数就会需要较长的时间,那么用户也需要等待较长的时间来确定交易。这类系统延迟不确定的特点肯定很难受到用户的青睐,因为用户总想明确知道需要多长时间能完成交易,就像我们去银行汇款,银行会告诉我们在多长时间内完成汇款。
好了,我们现在知道让时间差恒定更好。那这个恒定的时间差,可以缩短至1秒,也可以长到无限长,只需要调整难度值就可以改变。这个时间差的长和短各有什么影响呢?我们来看看。
在讨论之前,我们先来看这么一种情况:如果两个矿工几乎同时算出了满足条件的nonce1和nonce2,两个区块都是合法的,都满足工作量证明的要求。那谁上谁下?在以太坊中解决的办法很简单,就是难度值更大的那个区块上去,另外一个区块不能上。这种满足要求却不能上的区块,我们称之为无效区块,以太坊中也叫叔块(uncle block)。
所以