区块链共识机制 – POW 工作量证明 Proof Of Work

 

优势:安全可靠。
劣势:浪费算力,且会被拥有全网超过 50% 算力的节点进行区块改写的恶意攻击 (所谓的 51% 攻击)

 

比特币与工作量证明 Proof Of Work

POW 工作量证明 Proof Of Work,顾名思义就是用工作成果来证明完成的工作量。在区块链採用 POW 工作量证明的共识机制中,比特币 Bitcoin 是其中最具有代表性的,其共识协议则主要是由工作量证明最长链机制两部分组成。

在比特币区块链上,每隔 10 – 15 分钟就会把这期间的所有交易讯息打包成一个区块并加到最长的区块链上,帮助成功验证新区块链的节点会被区块链上的奖励机制给予帮助新区块生成的营运奖励金,这整串打包区块纪录帐本与获得奖励的过程即俗称挖矿 mining,而所有参与写入帐本竞争的节点则称为矿工 miner。

比特币区块链上的节点,需付出工作量证明来获得记帐权。意味在比特币区块链上的所有节点,只要提出工作量证明都可以参与写帐本打包新区块的竞争。优先胜出的节点会将新区块的帐本讯息广播至比特币全网路上,其馀的节点验证后即从竞争改为接受新的区块并同步新区块的帐本讯息,大家全部完成后再一同参与新的交易讯息区块打包。

 

比特币挖矿运算与竞争难度

比特币挖矿竞争的实际行为,是所有的参与节点使用电脑算力来执行数学运算,其第一个运算结果满足下列算式的节点有权利写入帐本并获得奖励。

SHA256 ( Block data + Nonce) < Difficulty

比特币设计的挖矿难度会在维持 10-15 分钟区块生成速率的前提下,依据整个网路算力大小来动态调整难度值 Difficulty (难度值为使用杂凑函数 Hash Algorithm 算出的无法预测数值),全网越多人挖矿算力月高而难度越高。

难度值 Difficulty 的调整是在每个完整节点中独立自动发生,每 2016 个区块,所有节点都会按统一的公式自动调整难度值,这个公式是由最新 2016 个区块的花费时长与期望时长(期望时长为 20160 分钟即 2周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整,其公式如下:

新难度值 = 当前(旧)难度值 * [实际 2016 个区块生成花费时间 / 理论上 2016 个区块生成花费时间 (2周)]

比特币採用的 SHA256 生成的 Hash 值都为 256 位元,每一位有62种可能性 (大小写字母与数字的组合)。Block data 为上一笔交易资料,比特币的演算即是结合上一笔交易资料与一个随机值 nonce 并 hash 出一个位数并不长的值,当此值符合难度值 Difficulty 时即为成功挖到矿,若不符合难度值时便不断更改随机值直到符合为止。所谓挖到矿就是猜到一个 Nonce 值让该区块的摘要值小于一个会根据难度而调整的难度值。

 

比特币经济与奖励

中本聪所开发的比特币为了避免货币发行太多或太快,有设计出一套抑制通货膨胀的机制并最终只会发行 2,100 万个比特币。为鼓励节点帮忙验证营运,设计了挖掘新区块的奖励,区块奖励从 2009 年开始每个区块可获得 50 个比特币的奖励,但此一奖励区块回报每产出 21 万个区块减半一次,即每 4 年减半,2013 年到 2016 年 6 月则是 25 个比特币,2016 年 7 月 9 日区块奖励再度折半到 12.5 个比特币,估计到 2021 年时会再度折半到 6.25个,在 2022 年中就会挖出超过 90%,因为比特币最小单位是 0.00000001,所以 2140 年之后区块奖励就会小于最小单位,即不会再生成比特币产生。

 

总结

POW 工作量证明共识机制是一个随机选择下一个区块上传者的机制,随机机制是根据计算能力。POW 工作量证明已接受了市场实战的检验,目前为公有链最主流的演算法,即便是 POW/POS 溷合型态的公有链一开始也是以 POW 来设计来兼顾资讯验证安全性与公平性奖励机制。

 

延伸阅读

区块链共识机制 – POW 工作量证明 Proof Of Work
区块链共识机制 – POS 权益证明 Proof Of Stake
区块链共识机制 – DPOS 委託权益证明 Delegated Proof Of Stake
物联网共识机制 – DAG 有向无环图 Directed Acyclic Graph