工作量证明算法(4)

运行这段代码,你可以设置希望的难度(比特位,即头部多少位为0),看看需要多长时间才能找到一个解。例8-12显示的是在一台普通笔记本电脑上的工作情况。

例8-12 不同难度目标下运行工作量证明算法的结果

不同难度目标下运行工作量证明算法的结果

不同难度目标下运行工作量证明算法的结果

正如你所看到的,难度每增加1位,寻找解所需的时间呈指数增长。考虑整个256字节的数字空间,每次你将0的位数增加1个,就将搜索空间缩减了一半。在例8-12中,为找到前面26位为0的哈希,需要进行8400万次哈希计算才能找到合适的随机数。即使哈希速度超过每秒12万次,在一台普通笔记本电脑上也需要耗费10分钟才能找到解决方案。

在撰写本书时,比特币网络挖矿的要求是找到的区块头哈希值必须小于000000000000004c296e6376db3a241271f43fd3f5de7ba18986e517a243baa7。如你所见,这个目标哈希值开头有很多0,也就是说,可接受的哈希范围小了很多,因此,找到一个有效哈希也要困难得多。为了发现一个新的区块,全网平均每秒要进行1.5×1017次哈希运算。看起来像是不可能完成的任务,但幸运的是,比特币网络目前已经具备了每秒1017次哈希计算(100PH/sec)的处理能力,平均10分钟就可以找到一个新的区块。

868区块链学习网为您整理《工作量证明算法(4)》仅供参考。