区块链知识分享——POW

scry.info無域

POW 机制是什么?

从去中心化账本系统的角度看,每个加入这个系统的节点都要保存一份完整的账本,但每个节点却不能同时记账,因为节点处于不同的环境,接收到不同的信息,如果同时记账的话,必然会导致账本的不一致,造成混乱。因此,需要有共识来达成哪个节点有权记账。比特币区块链通过竞争记账的方式解决去中心化的记账系统的一致性问题。

比特币系统设计了以每个节点的计算能力即“算力”来竞争记账权的机制。在比特币系统中,大约每 10 分钟进行一轮算力竞赛,竞赛的胜利者,就获得一次记账的权力,并向其他节点同步新增账本信息。然而,在一个去中心化的系统中,谁有权判定竞争的结果呢?比特币系统是通过一个称为“工作量证明”Proof of Work,Pow 的机制完成的。

简单地说,PoW 就是一份确认工作端做过一定量工作的证明。PoW 系统的主要特征是计算的不对称性。工作端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查工作端是不是做了相应的工作。

举个例子,给定字符串“blockchain”,我们给出的工作量要求是,可以在这个字符串后面连接一个称为 nonce 的整数值串,对连接后的字符串进行 SHA256 哈希运算,如果得到的哈希结果(以十六进制的形式表示)是以若干个 0 开头的,则验证通过。为了达到这个工作量证明的目标,我们需要不停地递增 nonce 值,对得到的新字符串进行SHA256 哈希运算。按照这个规则,需要经过 2688 次计算才能找到前 3 位均为 0 的哈希值,而要找到前 6 位均为 0 的哈希值,则需进行620969 次计算。

blockchain1 →4bfb943cba9fb9926df93f33c17d64b378d56714e8a29c6ba8bdc9690cea8e27

blockchain2 →01181212a283e760929f6b1628d903127c65e6fb5a9ad7fe94b790e699269221 … … blockchain515 →

0074448bea8027bebd6333d3aa12fd11641e051911c5bab661a9b849b83958a7 … …

blockchain2688→0009b257eb8cf9eba179ab2be74d446fa1c59f0adfa8814260f52ae0016dd50f … … blockchain48851:00000b3d96b4db1a976d3a69829aabef8bafa35ab5871e084211a16d3a4f385c … … blockchain6200969:000000db7fa334aef754b51792cff6c880cd286c5f490d5cf73f658d9576d424

通过上面这个计算特定 SHA256 运算结果的示例,我们对PoW 机制有了一个初步的理解。对于特定字符串后接随机 nonce 值所构成的串,要找到这样的 nonce 值,满足前 n 位均为 0 的 SHA256 值,需要多次进行哈希值的计算。一般来说,n 值越大,需要完成的哈希计算量也越大。由于哈希值的伪随机特性,要寻找 4 个前导 0 的哈希值,预期大概要进行 2^{16}次尝试,这个数学期望的计算次数,就是所要求的“工作量”。