『学概念找员外』哈希谜题的特性
这个哈希谜题其实就是矿工在挖矿的过程中必须解答的一道难题,只要解出这道题才能获取到区块内的比特币奖励和所有的矿工费。对于这个难题来说,它并不是随便设计的,整个哈希谜题具有三个特性:难于计算、成本可参数化、易于证实。
难于计算
比特币的奖励如此的诱人,所以想要获得它,是需要付出巨额代价的,这个代价就是计算机通过耗费掉大量的电量来计算出这个随机数。在2014年年底,产生一个区块平均要做1020次哈希运算,也就是说答对的概率是1/1020。这种计算量已经是普通电脑无法承载的计算量了。所以后续被制造出了各种各样的矿机,专门用来挖矿。矿机等级提高了,竞争力也就越强,也就导致了挖矿生态系统要消耗大量的能源。
成本可参数化
随着时间的推移,肯定会有更多的人进入挖矿这个行业,当矿工越来越多之后,就希望这个挖矿的难度和成本可以随之升高,也就是在这中间需要一个参数来调节。所以在比特币的网络中是这样设计的:每产生2016个区块之后,所有的节点都会自动重新计算挖矿的难度值,使得后续的区块产生的时间间隔始终保持在10分钟左右。这样的话,生产完2016个区块就需要两个星期,所以两周之后这个参数就会自动调节一次。其实调整这个参数并不难,只要统计一下目前全网有多少算力,就可以求出这个参数。
这样重新调整的目的是什么?我们为什么想要维持10分钟间隔不变?原因很简单。如果区块产生的间隔太小,在一个区块内放入的交易就会变少,也就会降低效率。当然这个10分钟并不是绝对的,比如以太坊和EOS的出块时间就比比特币短很多,效率也比比特币要高出若干倍。在这里咱们不做太多讨论。
易于证实
继续说工作量证明函数第三个重要的特性,就是证实一个节点是否正确的计算出了这个随机数。假如一个节点需要尝试10^20次来找到可以满足这次哈希计算的临时随机数,并且这个被找出来的临时随机数必须作为区块的一部分被公布出来。这样任何其他节点都可以很容易的通过一次计算来验证是否准确。区块链的世界本来就是去中心化的,这种关键的数据都必须是透明的,所以将之公布出来免得引起争议。这样做还有一个好处,比特币不需要一个中央权威机构来证明矿工正确地完成了工作。任何节点或者矿工,都可以迅速地证实其他矿工找到的区块符合工作量证明的规定。