主页 > imtoken钱包正版 > 区块链共识算法的POW

区块链共识算法的POW

imtoken钱包正版 2023-01-18 17:21:49

介绍

POW,proof of work,即工作量证明,是著名公链比特币采用的共识算法。 那么POW到底是什么? 简单的说,pow就是证明你确实做了一定数量的符合要求的工作。 通常“这项工作”做起来有点困难,但验证者可以很容易地通过结果验证相应的工作是否已经完成。

战俘如何运作

一句话,比特币的POW是干什么的? 其实就是对block header进行疯狂的hash运算,其中夹杂着nonce的增量,得到的hash值与“某个hash值”进行比较(也验证了某大佬的话:背后的本质所有算法都是按比例大小)。

估计有人是一脸疑惑的纳尼? 什么是区块头? 哈希运算使用哪个哈希函数族? nonce 到底是什么东西? 什么是“某个哈希值”? 比尺寸? 是大了还是小了? 让我们一一道来。

1.区块头。 比特币的块头大小为 80 字节。 它包含4字节的版本号、32字节的前一个块的哈希值、32字节的Merkle根哈希值、4字节的时间戳(UTC)、4字节的难度值、4字节的nonce。 表格如下:

比特币算法软件_比特币是什么算法_比特币共识算法

比特币区块头BlockHeader定义如下:

比特币算法软件_比特币共识算法_比特币是什么算法

2、哈希运算。 比特币系统使用 SHA256。 SHA256是哈希函数族之一,输出值是256位的哈希算法。 到目前为止,还没有针对SHA256算法的有效攻击。

3.随机数。 它是块头中的最后一个字段 nNonce。 比特币源码中nonce的处理是++pblock->nNonce(期间增加nonce)。 涉及的源码如下:

比特币共识算法_比特币是什么算法_比特币算法软件

4. 一定的哈希值。 由全网当前难度值(即区块头中倒数第二个字段nBits)计算得出,其中形参nCompact为nBits。 源代码如下:

比特币共识算法_比特币是什么算法_比特币算法软件

5、比大小。 比值小,即疯狂哈希运算得到的哈希值小于难度值得到的哈希值,说明你得到了真相。 第 80 行从难度值 nBits 中获取哈希值并将其设置为 bnTarget。 第 87 行比较大小。 如果大于难度值,返回false。 对不起,我白做了。 源代码如下:

比特币共识算法_比特币是什么算法_比特币算法软件

总结

以上就是比特币的POW工作机制。 有兴趣的可以仔细看看 3.nonce中最外层的while循环比特币共识算法,里面有一些更深层次的细节,所以BB就不在这里了。 POW给人的感觉就是太浪费了。 到目前为止,整个比特币网络的算力已经非常庞大。 我认为用这么庞大的计算能力来做这种无用的散列运算是一种巨大的浪费。 好了比特币共识算法,结束了。