额外的Nonce解决方案

自2012年以来,挖矿已经发展出一种解决区块头结构中的一个基本限制的方法。在比特币的早期阶段,挖矿者可以通过迭代Nonce直到得到的哈希值低于目标值来找到一个区块。随着难度的增加,挖矿者经常会循环遍历所有40亿个Nonce值,但仍然找不到一个区块。然而,这个问题很容易通过更新区块时间戳以考虑经过的时间来解决。因为时间戳是头部的一部分,改变时间戳会允许挖矿者再次迭代Nonce值,从而产生不同的结果。然而,一旦挖矿硬件超过4GH/s,这种方法就变得越来越困难,因为Nonce值在不到一秒钟的时间内就会被耗尽。随着ASIC挖矿设备开始超过TH/s的哈希率,挖矿软件需要更多的Nonce值空间才能找到有效的区块。时间戳可以被延长一点,但如果将其移动得太远,将会导致区块无效。区块头需要一种新的变化来源。

一个被广泛采用的解决方案是使用coinbase交易作为额外Nonce值的来源。因为coinbase脚本可以存储2到100字节的数据,挖矿者开始使用这个空间作为额外Nonce空间,从而使他们能够探索更大范围的区块头值以找到有效的区块。coinbase交易包含在默克尔树中,这意味着coinbase脚本的任何更改都会导致默克尔根的变化。8字节的额外Nonce加上4字节的“标准”Nonce,使得挖矿者每秒可以探索总共2^96(8后跟28个零)种可能性,而无需修改时间戳。

今天广泛使用的另一种解决方案是利用区块头版本位字段的最多16位用于挖矿,这就是BIP320中描述的方法。如果每台挖矿设备都有自己的coinbase交易,那么通过仅对区块头进行更改,这使得个别挖矿设备可以达到高达281 TH/s的哈希速率。这比每40亿个哈希值增加一次coinbase交易中的额外Nonce更简单,后者需要重新计算默克尔树的整个左侧直到根节点。

Last updated