共识与网络

工作量证明

工作量证明,是一种通过「让尝试本身就很昂贵」来决定谁能添加下一个区块的办法。每个参与者都在抢着解一道没有捷径的数字难题——你只能靠一次又一次地猜,每秒上亿次地猜,才可能找到答案。谁先撞上一个有效答案,谁就赢得发布下一个区块的权利。这实际上是一场代价高昂的数字抽奖,而「多买彩票」意味着「多烧电」。

这道难题建立在密码学哈希之上。矿工把区块数据,加上一个可以随意更改的数字(叫随机数 nonce),一起丢进哈希函数里运算,期望算出来的结果小于某个目标值——就像掷骰子,需要掷出一个低于极小门槛的数。这里没有任何取巧的办法:唯一的策略就是不停地改随机数、再重算,直到走运为止。可一旦有人找到了答案,其他所有人都能在一瞬间验证它。难以产生,却极易核对。

正是这种不对称守护着整条链。由于每个区块都嵌入了前一个区块的哈希,要想改写一笔旧交易,攻击者就必须重做那个区块的工作量,以及它之后的每一个区块,而且速度还要快过整个诚实网络延长链条的速度——这是一项贵到天文数字的任务。工作量证明,就是比特币让一个无领袖网络对历史达成一致的方式:累积工作量最多的那条最长链,就是所有人都认作真相的那一条。

block + nonce → hash
  nonce=1  → 9f3a...  (too big, retry)
  nonce=2  → c10b...  (too big, retry)
  ...
  nonce=87142  → 0000a3...  (below target — winner!)

不断更改随机数,直到哈希值以足够多的零开头。找到它很慢,核对它却是一瞬间的事。

用这种方式保护一条链会消耗大量电力,这也是一些较新的链改用权益证明的原因。

又称
PoW工作量证明工作量證明