密语 · CIPHER | 目录 CH.23 / 26
绝密
Phase 6 · Web3

区块链的密码学积木

区块链没有发明任何新密码学。它只是把你已经学过的哈希,用一种新方式串起来,就搭出了"无需信任"。

阅读 ~16 分钟 前置 第 10、11 章 Demo 迷你区块链 + Merkle 证明

抛开炒作,区块链在密码学上其实非常朴素:它的"不可篡改"、"去中心化信任",几乎全部建立在第 10 章那个单向、雪崩的哈希函数之上。这一章不谈币价、不谈投资,只拆解让区块链成立的三块密码学积木——你会发现它们你都认识。

一、哈希链:改一个字,后面全废

核心创意只有一句:每个区块都存着前一个区块的哈希。就像每一页都抄下上一页的指纹,把所有页钉成一条不可分割的链。

区块N.hash = SHA256( 区块N.数据 + 区块N-1.hash + nonce )

由于哈希的雪崩效应(第 10 章),你只要改动任何一个历史区块里的一个字符,它的哈希就面目全非;而下一个区块存的是哈希,于是对不上了;下一个的下一个也跟着崩……篡改一处,其后整条链全部失效。这就是"不可篡改"的全部秘密——它不是"改不了",而是"一改就人人看得见"。

下面亲手试试。这是一条 5 个区块的迷你链,每块的数据都能编辑。改动任意一块的内容,看它自己和它之后的所有区块如何瞬间变红(哈希断裂)。之前的区块不受影响——这正是链式结构的方向性。

DEMO 迷你区块链篡改
绿色边框=哈希链完好;红色=被篡改导致链断裂。真实区块链有成千上万个区块,篡改一个历史块意味着要重算它之后的全部区块——而这需要跨过下面的"工作量证明"这堵墙。

二、工作量证明:让"重算"贵到做不起

上面的链有个漏洞:哈希算得很快,攻击者篡改一块后,把后面几块的哈希重算一遍不就行了?工作量证明(PoW)就是来堵这个漏洞的——它故意让"算出一个有效区块"变得极其昂贵。

规则:区块的哈希不能是任意值,必须小于某个目标(等价于"哈希要以若干个 0 开头")。由于哈希不可逆、输出随机(第 10 章),想让哈希凑够前导零,唯一办法是不停地改 nonce、反复哈希、暴力碰运气,直到蒙中一个满足条件的。这就是"挖矿"。

DEMO 挖矿:寻找满足难度的 nonce
每增加一个前导 0,平均要多试约 16 倍的 nonce。感受一下:难度 4 你的浏览器还行,难度 6 就开始吃力——比特币的实际难度需要约 19 个前导零,全球矿机每秒合计尝试数以万亿亿次。这堵算力墙,就是篡改历史的成本。

把两块积木合起来:要篡改一个历史区块,你不仅要重算它,还要重新挖出它之后的每一个区块,而且速度得超过全网诚实矿工继续往前挖的速度。这就是所谓的 51% 攻击门槛——你得掌握全网过半算力,经济上通常得不偿失。安全性来自"重算太贵",而"贵"来自哈希的单向性。

PoW 之外

工作量证明费电,所以以太坊等已转向权益证明(PoS):不靠烧算力,而靠"质押资产"来获得记账权,作恶就没收质押。PoS 的密码学重心从"哈希难题"转向了"签名与随机性"(谁被选中出块、如何防作弊),但"用密码学让作恶不划算"的核心思想一脉相承。无论 PoW 还是 PoS,哈希链保证历史不可篡改这一层始终不变。

三、Merkle 树:手机也能验证账本

第三块积木解决一个很实际的问题:一个区块可能装着成千上万笔交易,而你的手机钱包(轻节点)没有能力下载整条几百 GB 的链。它怎么在不下载整个区块的情况下,确认"我这笔交易确实被记进了某个区块"?

答案是 Merkle 树(第 10 章的哈希用法之一):把区块里所有交易两两哈希、层层向上合并,最终汇成一个 Merkle 根,存进区块头。神奇之处在于——要证明某笔交易在树里,你不需要整棵树,只需要从那笔交易到根的路径上的少数几个"兄弟哈希"(叫 Merkle 证明)。对 100 万笔交易,证明只需约 20 个哈希,而不是 100 万个。

DEMO Merkle 树与轻节点证明
高亮的绿色路径是被证明的交易,橙色是证明所需的"兄弟哈希"。只用这几个哈希 + 区块头里的 Merkle 根,轻节点就能确认交易存在,无需下载其余交易。这就是手机钱包 SPV 验证的原理。
中本聪的拼装

2008 年比特币白皮书里,没有一个密码学原语是新发明的:哈希链早已用于时间戳(Haber & Stornetta,1991)、Merkle 树来自 1979 年、工作量证明源自反垃圾邮件的 Hashcash、数字签名更是几十年的老技术(第 18 章)。中本聪的天才在于组合——把这些现成积木拼成一个无需可信第三方就能达成共识的账本。这再次印证全书主题:密码学的威力,往往在于原语的正确组合,而非原语本身。

这一章我们看的都是"账本"层面的密码学:哈希如何让历史不可篡改、如何让轻节点高效验证。但还有一个更贴近用户的问题:你的"钱"到底是什么?一个地址、一把私钥、12 个助记词之间,是怎样的密码学关系?丢了助记词为什么就永远找不回?下一章,我们钻进钱包。

本章要点

  • 哈希链:每块存前块哈希,靠雪崩效应实现"改一处、其后全断"的不可篡改。
  • 工作量证明要求哈希满足难度(前导零),只能暴力试 nonce,使篡改历史需重算+超过全网算力。
  • Merkle 树把海量交易汇成一个根;Merkle 证明让轻节点用少量哈希即可验证交易存在。
  • 区块链未发明新密码学,而是把哈希链、PoW、Merkle 树、签名正确组合成无需信任的账本。