区块链大学区块链研习社区块链

《锋哥论道区块链》之三区块链基础--共识机制POW

2019-05-21  本文已影响4人  7dfc697cf7a9

1POW(proof of work,工作量证明)机制
1.1POW的作用
2008年10月,中本聪(Satoshi Nakamoto)发表了论文《Bitcoin: A Peer-to-Peer Electronic Cash System》,在论文中设计了区块链的POW的共识机制。那POW共识机制主要的作用是什么?仔细分析比特币的整体设计思路,使用非对称秘钥解决了电子货币的所有权问题,使用区块时间戳解决了交易的存在性问题,用分布式账本解决了剔除第三方机构后交易的验证问题。最后就剩下双重支付问题,在点对点的分布式系统中,要保障所有节点的数据一致性,就必须引入一种机制来保障。中本聪设计了POW共识机制,通过该机制消除双重支付,保证所有节点数据的一致性。
1.2比特币POW实现方式
比特币采用哈希算法,逻辑上是对整个区块进行哈希运算,实际上是对区块头执行哈希运算。也就是说,所谓的区块的哈希值,更确切的表述为区块头的哈希值。区块头大小为80byte,包含六个字段:version、timestamp、bits、nonce、 hashpreblock及hashmerkleroot。如此设计首先带来的好处是方便哈希运算,每次运算只需要80字节的参数输入,而不是整个区块的数据,同时交易列表的任何变化又能体现在哈希运行结果上。
比特币采用SHA256哈希运算,且每次都是连续进行两次SHA256运算才能作为最终结果,前一次运算的结果作为后一次运算的输入,即Double SHA256,一般简称SHA256D,比特币合格区块判断依据如下:
SHA256D(Version,hashPreBlock,hashMerkleRoot,Timestamp,Bits,Nonce)<=MAXTARGET/Diff
比特币工作量证明(POW)的达成就是矿工计算出来的区块哈希值必须小于目标值。比特币工作量证明的过程,就是通过不停的变换区块头(即尝试不同的nouce值)作为输入进行SHA256哈希运算,找出一个特定格式哈希值的过程(即要求有一定数量的前导0)。而要求的前导0的个数越多,代表难度越大。我们可以把比特币矿工解这道工作量证明迷题的步骤大致归纳如下:
(1)生成用于发行新比特币奖励的Coinbase 交易,并与当前时间戳的其他所有准备打包进区块的交易组成交易列表,通过Merkle Tree算法生成Merkle Root Hash;
(2)把Merkle Root Hash及其他相关五个字段组装成区块头,其中nonce置零,将区块头的80字节数据(Block Header)作为工作量证明的输入;
(3)不停的变更区块头中的随机数即nonce的数值(nonce初始置零,每次增1),并对每次变更后的的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将每次结果值与当前网络的目标值做对比,如果小于目标值,则成功搜索到合适的随机数nonce并获得该区块的记账权,工作量证明完成。
(4)如果在当前时间戳未成功,则更新时间戳,重复上述步骤,直到找到符合条件的nonce。
(5)在节点成功找到满足条件的哈希值之后,会马上对全网进行广播打包区块。
(6)网络的其他节点收到广播打包区块,会立刻对区块的哈希值及交易数据的有效性进行验证。如果验证通过,则表明已经有节点成功解迷,自己就不再竞争当前区块打包,而是选择接受这个区块,记录到自己的账本中,然后进行下一个区块的竞争猜谜。

上一篇 下一篇

猜你喜欢

热点阅读