比特币白皮书导读

一封没多少人回复的邮件
2008 年 10 月 31 日,星期五,18:10(UTC)。
那是金融危机最凶险的一个秋天。雷曼兄弟倒下才一个多月,各国政府正忙着拿出巨额资金救助银行。就在这个时候,托管在 metzdowd.com 上的密码学邮件列表收到了一封邮件,标题是「Bitcoin P2P e-cash paper」,署名中本聪。
邮件的第一句话是:「我一直在研究一种全新的电子现金系统,完全点对点,无需可信第三方。」邮件里附上了一篇九页论文的链接。
回复不多,其中不少是质疑,也有人认真追问技术细节。在那之前,这个圈子已经见过太多「数字现金」的构想,大多停留在纸面上。当时恐怕很少有人想到,这封邮件开启的是一段持续至今的历史。
十八年后,我们把这篇论文重新读了一遍。最打动我们的,是它的推理方式:每一节都只解决一个问题,而每一个答案又会自然地引出下一个问题。十二节读下来,就像跟着作者把一道难题从头解到尾。
这篇导读写给没有技术背景的读者。我们会先解释几个绕不开的词,再一节一节往下读。每一节都会讲清楚三件事:这一节在解决什么问题,它是怎么解决的,以及它又留下了什么新问题。白皮书原文及中英文版本陈列在「创世之源」展厅的白皮书墙上,读完这篇再去看原文,会轻松很多。
读之前,先认识六个词
白皮书篇幅很短,但用了不少术语。先把下面六个词弄明白,后面就容易多了。
哈希:可以把它理解成一份数据的「指纹」。任何一段内容,不管是一个字还是一本书,经过哈希计算,都会得到一串固定长度的字符。内容哪怕只改动一个标点,指纹就会变得面目全非;而只拿到指纹,又没办法倒推出原来的内容。比特币到处都在用哈希,用来检查内容有没有被改过。
私钥与公钥:一对配套的数字钥匙。私钥自己秘密保管,公钥可以公开给所有人。可以想象成一个带锁的信箱:公钥是信箱的地址,谁都可以知道;私钥是开箱的钥匙,只有你有。
数字签名:用私钥给一段内容「签名」,任何人都可以用对应的公钥验证这个签名是不是你签的,但没有人能在不知道私钥的情况下伪造它。它像手写签名,只是没法临摹。
区块与区块链:比特币的账本是一页一页记下来的,每一页叫一个「区块」,里面装着一批交易。每一页都会写上前一页的指纹,于是所有的页按顺序串在一起,就成了「区块链」。
节点:参与比特币网络、保存并检查账本的电脑。任何人都可以运行一个节点。
工作量证明:一道只能靠反复猜来解的数学题。猜中需要花费大量计算,但别人检查答案对不对,只要一瞬间。比特币用它来决定谁有资格往账本上添新的一页。
有了这六个词,我们就可以开始读了。
第 1 节 · 引言:问题从成本开始
这一节在说什么:今天的网上支付,几乎都要靠银行或支付公司这样的「可信第三方」来居中处理。中本聪指出,这种依赖是有代价的。
举个例子。你在网上买了一件东西,付款后还可以申请退款,这对买家是保护,对商家却是风险:有人可能收了货又谎称没收到,要求退款。商家为了防范,只好向顾客要更多信息,还得承担一部分被骗的损失。这些成本最后都会摊进商品价格里,而且小额付款也因此变得不划算。
现金就没有这个问题:一手交钱,一手交货,付了就是付了。可是在网上,过去没有办法做到这一点。
留下的问题:能不能在网上实现像现金一样「付了就是付了」的支付,同时不需要任何第三方?如果没有第三方,一枚电子货币属于谁,又由谁来确认?
值得留意的是,整篇引言的语气非常平静。它读起来像一位工程师在列出一个待解的技术问题,从成本出发,一步步推导。
第 2 节 · 交易:一枚币,就是一串签名
这一节在解决什么:没有银行记账,怎么证明「这枚币是我的」?
中本聪的答案出人意料地简单:一枚电子货币,就是一串数字签名。
可以把它想象成一张不断转手的转让单。最开始,单子上写着「这枚币属于 A」。A 要把币给 B 时,就在单子末尾写上「转给 B」,并签上自己的名字。B 再转给 C,也照样在末尾签名。每个人都能从头到尾检查这张单子,确认每一次转手都有上一任主人的签名。
技术上,这里的「签名」用的就是前面说的数字签名:当前的主人用自己的私钥,对上一笔交易和下一位主人的公钥的哈希值签名。
这也回答了一个很多人都问过的问题:比特币到底存在哪里?它就记录在区块链上,体现为这串可以一笔笔追溯的签名。所谓「拥有比特币」,其实是掌握着那把能签出下一笔转账的私钥。
留下的问题:签名能证明转手,却拦不住一个人耍赖。A 完全可以先签一张「转给 B」,再签一张「转给 C」,把同一枚币卖两次。B 和 C 各自检查,签名都是真的。这就是「双重支付」问题,也就是常说的「双花」。白皮书接下来的大部分篇幅,都在对付它。
第 3 节 · 时间戳服务器:给交易排队
这一节在解决什么:要识破 A 的把戏,只需要知道哪一笔交易在先。先发生的那笔算数,后发生的作废。问题是,没有一个中心机构,谁来判断先后?
中本聪先借用了一个已有的思路:时间戳服务器。可以想象有一个公证处,定期把最新收到的一批交易打包,盖上一个带时间的印章,并把这个印章公之于众。关键在于,每一个新印章都会把上一个印章的指纹包含进去,就像每一页账本的开头都抄着上一页的指纹。
这样一来,所有的印章就一环扣一环地连成了一条链。如果有人想偷偷改动中间某一页,那一页的指纹就会变,后面所有页上抄写的指纹都对不上,篡改马上就会暴露。
不过,「容易被发现」还不等于「难以做到」。如果有人有能力把后面所有页都重新抄一遍,篡改依然可能成功。真正让篡改在现实中变得极其困难的,是下一节的工作量证明。
留下的问题:现实中的公证处是一个中心机构,而比特币不想要任何中心。那么在一个人人平等的网络里,谁有资格来盖这个章?
第 4 节 · 工作量证明:让投票有成本
这一节在解决什么:没有公证处,就得让全网一起决定由谁来盖下一个章。最自然的想法是投票,少数服从多数。
但在网上,投票有个致命漏洞:注册一个身份几乎不花钱。原文写道,如果按「一个 IP 地址一票」来决定,任何能掌握大量 IP 地址的人都能操纵结果。这就像一场网络投票,有人注册了一万个小号,就能拿到一万票。
所以,投票权必须和某种没法凭空制造的东西挂钩。中本聪选择了计算能力,也就是「算力」。
具体的做法是这样的:想要给下一页账本盖章的人,必须先解出一道数学题。这道题没有任何技巧可言,只能一遍遍地猜,就像不停地掷骰子,直到掷出一个足够小的数字。谁先猜中,谁就获得盖章的资格,并把答案公布出来;其他人只要验算一下,就能立刻确认答案是对的。
由于猜题需要实打实的电费和设备,一个人有多少算力,就相当于有多少「票」。注册再多的小号也没用,因为小号不会帮你算题。
在此基础上,比特币定下一条规则:大家始终认可「最长」的那条链,准确地说,是背后累积工作量最多的那条链。这就是「多数人的决定」。另外,为了应对硬件越来越快、参与者时多时少,题目的难度还会根据出块的速度自动调整,让平均出块时间保持稳定,大约十分钟一个区块。
现在回头看第 3 节留下的那个担心:如果有人想篡改某一页,他不仅要重抄后面所有页,还得把后面每一页的题重新解一遍,并且要比全网所有诚实参与者加起来还快。这几乎不可能做到。
第一处常见误读:原文写道:「工作量证明本质上是一 CPU 一票。」这句话常被理解为「人人平等参与」。但放回上下文里看,它要说的是:投票权必须付出真实的成本,而不是取决于你有多少个身份。
今天的挖矿早已由专用芯片和大型矿场主导,与原文描绘的图景相去甚远,「信任机器」展厅的矿机进化墙完整记录了这个变化。原文论证的是投票权必须与算力挂钩,至于算力最终会如何分布,它并没有作出预测。
第 5 节 · 网络:不到一页纸
这一节在解决什么:前面的零件都有了,整个网络是怎么一起转起来的?
中本聪只用了六个步骤:
- 有人发起一笔新交易,广播给全网所有节点。
- 每个节点把收到的新交易收集起来,打包成一个候选区块。
- 每个节点开始为自己的区块解那道工作量证明的题。
- 谁先解出来,就把这个区块广播给所有节点。
- 其他节点检查这个区块:里面每一笔交易都有效、而且没有被花过,才接受它。
- 节点表示接受的方式,就是以这个区块为基础,开始解下一个区块的题。
如果两个节点几乎同时解出了题,网络里会暂时出现两条一样长的链。这时节点会先在自己先收到的那条上继续工作,等下一个区块出现,哪条链更长就以哪条为准,另一条自然被放弃。节点永远把最长的链视为正确的那条,并持续延长它。
一个运行至今的全球系统,它的网络规则在原文里只占了不到一页纸。
留下的问题:解题要花电费、买设备,凭什么会有人愿意来做这件事?
第 6 节 · 激励:让诚实成为最划算的选择
这一节在解决什么:给参与者一个理由。
答案是奖励。每个区块的第一笔交易,会凭空产生一定数量的新币,发给解出这道题的人。这既是对他付出的电费和设备的补偿,也是新的比特币进入流通的唯一方式。正因为它像开采金矿一样,靠付出资源换来新币,这项工作后来被称为「挖矿」,参与的人被称为「矿工」。等新币发行完毕,交易手续费会接替这份奖励。
这一节真正精彩的是后半段。中本聪设想了一个算力超过全网所有诚实节点的攻击者,然后冷静地推演了他的选择:他可以用这些算力去作弊,把自己花出去的钱偷偷改回来;也可以老老实实挖矿,赚取新币。中本聪的结论是,守规矩反而更赚钱,因为按规则挖到的新币,比作弊能得到的更多。何况一旦发动攻击,大家对比特币失去信心,他自己手里那些币的价值也会跟着受损。
换句话说,比特币的安全并不指望每个人都是好人,它把规则设计成:守规矩,就是最划算的选择。前几节回答的是「技术上能不能做到」,这一节回答的是「有没有人愿意去做」。在一个开放的网络里,后者往往更难。
新币发行完毕后,手续费能否长期支撑足够的算力,是后来才浮现的问题,至今仍在讨论,没有定论。
第 7 节 · 回收磁盘空间:账本越来越厚怎么办
这一节在解决什么:每一笔交易都永久记在账上,账本只会越来越厚,普通电脑迟早存不下。
中本聪的办法用到了一种叫「默克尔树」的结构。可以这样理解:把一个区块里的所有交易两两配对,各自算出一个指纹;再把这些指纹两两配对,算出新的指纹;如此一层层往上合并,最后只剩下一个总指纹,叫作「默克尔根」。区块的指纹里,只需要包含这个总指纹。
这样做的好处是:一枚币最新的那笔交易被足够多的区块压在下面之后,之前那些已经花掉的旧交易就可以删掉,只保留树上必要的几个指纹,整条链的校验关系依然完好。中本聪还算了一笔账:只保留每个区块的「页眉」,一年下来也只需要几兆字节的空间。
第 8 节 · 简化支付验证:不用下载整本账
这一节在解决什么:即使压缩了,普通用户也未必愿意保存和检查整本账。那能不能只确认「我收到的这笔钱已经被记上账」?
可以。用户只需要保存每个区块的页眉,需要时向网络索要一小段证明,证明自己那笔交易确实在某个区块的默克尔树里。这有点像查快递:你不需要掌握物流公司的整个系统,只要有单号,就能确认自己的包裹已经发出。今天许多轻钱包的设计,都能追溯到这里。
原文同样写明了代价:这种方式依赖网络中诚实节点占多数,安全性不如自己运行一个完整节点。所以原文建议,频繁收款的商家最好还是自己运行完整节点。
第 9 节 · 合并与拆分:比特币的「找零」
这一节在解决什么:如果每一枚币都要单独转账,那付一笔钱可能要拆成几百笔交易,太麻烦了。
中本聪的设计是:一笔交易可以有多个「输入」和多个「输出」。可以想象你钱包里有一张 50 元和一张 20 元,要付 60 元,就把两张一起递出去(两个输入),对方收 60 元,再找你 10 元(两个输出,其中一个是找零给你自己)。
这也解释了比特币钱包的一个特点:你的余额并不是一个数字,而是由好几笔大小不一、还没花掉的「零钱」组成的。
第 10 节 · 隐私:假名,不是匿名
这一节在解决什么:账本对所有人公开,那每个人的交易岂不是一览无余?
传统银行保护隐私的方法,是不让外人看到账本。比特币做不到这一点,因为账本必须公开才能让大家核对。中本聪换了一个思路:账本公开,但账本上不写名字,只写公钥。外人看得到有一笔钱从一个地址转到另一个地址,却不知道这两个地址背后是谁。这就像股票交易所公布每一笔成交,却不公布买卖双方的身份。
原文还建议,每笔交易都使用一对新的密钥,作为额外的防线,避免多笔交易被关联到同一个主人身上。
第二处常见误读:很多人以为比特币是匿名的。但原文自己就提醒过,一笔交易如果有多个输入,就会暴露出这些输入属于同一个人;地址也可能被关联、被分析,最终和现实中的身份对上号。原文用的词是「匿名」,但它描述的机制,更接近今天所说的「假名」:你的名字不在链上,你做过的每一笔交易却都在。
第 11 节 · 计算:安全可以被算出来
这一节在解决什么:说了这么多,这套系统到底有多安全?中本聪没有停留在定性描述,而是把它算了出来。
他把攻击想象成一场追赶赛。假设你收到一笔付款,这笔交易已经被写进区块,后面又接上了几个区块。攻击者想推翻它,就得从那笔交易之前开始,偷偷另起一条链,并且追上、超过诚实节点不断延长的那条链。
只要攻击者的算力少于诚实节点,他落后得越多,追上的机会就越渺茫,而且是成倍地下降。原文给出了具体数字:假如攻击者掌握全网 10% 的算力,在落后 6 个区块的情况下,他追上的概率只有大约万分之二点四。
第三处常见误读:原文给出的是概率,并不是绝对的保证。区块越多,交易被推翻的可能就越接近于零,但严格来说永远不会等于零。这与传统金融里「结算终局性」的概念并不相同。后来人们常说的「等六个确认」,依据的正是这类概率计算:交易后面接上六个区块,大约一个小时,被推翻的可能性已经小到可以忽略。
在「信任机器」展厅的记账大冒险里,你可以亲手调整攻击者的算力占比,看看落后 1 个和 6 个区块时,这个概率怎么变化。
第 12 节 · 结论:一个写在明处的前提
结论很短。中本聪回顾了全文的思路:先用数字签名表示一枚币的归属,再用工作量证明和最长链解决双重支付,最后得出结论:只要诚实节点控制了多数算力,这个系统就是安全的。
这个结论带着前提,而原文把它写得清清楚楚。此后十八年里,围绕比特币的许多讨论,归根结底都在讨论这个前提在现实中能在多大程度上成立。
把十二节串起来
如果用一段话回顾整篇白皮书,大概是这样的:
想在网上像现金一样付款,又不要银行(第 1 节)。于是把一枚币定义为一串签名(第 2 节),但这挡不住一币两花,所以需要给交易排出公认的先后(第 3 节)。排序的资格靠解题争取,谁的算力多谁的话就有分量,大家只认累积工作量最多的那条链(第 4 节)。全网按六个步骤一起记账(第 5 节),靠新币和手续费吸引人参与,并让守规矩成为最划算的选择(第 6 节)。再用三个工程设计解决存储、轻量验证和找零的问题(第 7 至 9 节),用不写名字的公开账本兼顾隐私(第 10 节),最后用数学算出攻击成功的概率(第 11 节),并写明这一切成立的前提(第 12 节)。
合上这九页
重读这篇论文,最让我们感慨的是它的克制。它没有宏大的宣言,也不许诺未来。它只是提出一个问题,给出一种解法,再老老实实写明这个解法在什么条件下成立。
十八年前,那封回复寥寥的邮件,指向的就是这样一份文件。
如果你还没读过原文,不妨去白皮书墙前,花半个小时,从第一页读到第九页。有了这篇导读做底,你会发现它比想象中好懂。
本文对各节内容的概述由编辑部根据原文整理,并非逐句翻译,一切以原文为准。如发现与原文有出入,请写信到 editorialoffice@btc.com 告诉我们。

