小吴乐意翻译版 · 2026 年全新重译

比特币:一种点对点的电子现金系统

Bitcoin: A Peer-to-Peer Electronic Cash System

作者 中本聪(Satoshi Nakamoto) · 2008 年 10 月 31 日 · 英文原文 9 页

把记账这件事,交给数学和算力,而不是任何一家公司。

导读

三分钟读懂比特币

下面四段话不需要任何技术背景。读完再看白皮书,每一段都会有落点。

这是什么?

2008 年 10 月 31 日,一个署名「中本聪」的人发布了这篇 9 页的论文,提出了一套不需要银行、不需要任何公司背书的电子现金系统。次年 1 月,这个系统上线运行,就是比特币。

它的野心只有一句话:让网上的钱像当面递现金一样,从 A 直接到 B。

难在哪?

现金没法复制,但数字文件可以无限复制——把同一枚「电子币」同时付给两个人,就是双重支付,这是数字货币的死穴。

传统解法是请银行当裁判:所有转账都过它一道账。而这恰恰是中本聪想绕开的东西。

怎么解?

三步:

① 全网记同一本账。所有交易公开广播,人人可以保存副本。

② 用算力给账本盖章。每约 10 分钟,矿工们比赛解一道数学题,谁先解出谁打包新「区块」,区块首尾相连成链。

③ 想改历史,先跑赢全世界。改动任何一个老区块,都得重算它之后的所有区块,还得比全网诚实算力更快——概率上被压到几乎为零。

凭什么可信?

不靠任何人的承诺,靠三样东西咬合:密码学(签名字迹无法伪造)、算力竞争(改账的成本高到不划算)、经济激励(守规矩比作弊更赚钱)。

没有客服、没有老板、没有总部。它当然不完美,但这个「组合创新」开创了此后整个行业。

怎么读这篇论文?

10 分钟

赶时间:摘要 → 第 4 节(工作量证明)→ 第 6 节(激励)→ 第 12 节(结论)。

1 小时

想真懂:从头到尾通读,每节先看「先说人话」框,再看译文;中途玩一下互动演示。

技术控

抠细节:第 2、4、5、11 节 + 每节展开英文原文逐句对照,最后跑一遍第 11 节的确认数计算器。

阅读约定:每节按「先说人话 → 译文 → 英文原文」三段式展开;文中方括号编号 [1] [2] 是原文的参考文献引用,见文末。小吴译注用 译注 标出,不属于原文。

发布那一刻,世界在发生什么

论文落款是 2008 年 10 月 31 日——雷曼兄弟倒闭后第六周,全球金融系统正在依靠各国央行「信任救援」勉强运转。2009 年 1 月 3 日,比特币创世区块挖出,区块里永久刻着当天《泰晤士报》的头条:「财政大臣正处于第二次救助银行的边缘」。白皮书没有一句情绪化的控诉,但这个系统的动机,都写在这两行日期里。

摘要

Abstract

一种纯粹的点对点版电子现金,将允许在线支付从一方直接发送到另一方,而无需经过任何金融机构。数字签名提供了部分答案,但如果仍然需要一个受信任的第三方来防止双重支付(double-spending),那么这种系统的主要好处就不复存在。我们提出一种利用点对点网络解决双重支付问题的方案。网络把交易不断哈希进一条持续延伸的、基于哈希的工作量证明(proof-of-work)链,以此为交易盖上时间戳;由此形成的记录,除非重新完成全部工作量证明,否则无法更改。最长的链不仅是事件先后顺序的见证证明,也证明它出自最大的 CPU 算力池。只要大多数 CPU 算力掌握在不协同攻击网络的节点手中,它们就会生成最长的链,并领先于攻击者。网络本身只需要极简的结构:消息以尽力而为的方式广播,节点可以随时离开与重新加入,重新加入时只需接受最长的工作量证明链,作为它离开期间所发生之事的证明。

英文原文 · Abstract

A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.

1

简介 Introduction

互联网上的商业交易,几乎完全依赖金融机构充当可信任的第三方来处理电子支付。尽管这套系统对大多数交易而言运转良好,但它仍然摆脱不了基于信任的模型的固有缺陷。完全不可逆的交易实际上并不存在,因为金融机构无法回避调解纠纷。调解的成本会抬高交易成本,限制了最小可行交易规模,使小额、零星的交易失去可能;更广义的损失是:为不可逆的服务付出不可逆的支付,这种能力也随之丧失。而由于撤销的可能性始终存在,对信任的需求还会向外扩散——商家必须提防自己的顾客,向他们索要比本不需要更多的信息;一定比例的欺诈,则被当作不可避免的损耗接受下来。这些成本和支付的不确定性,在面对面使用实体货币时可以避免,但要在通信信道上完成支付、又不依赖一个受信任的第三方,此前并不存在这样的机制。

真正需要的,是一套基于密码学证明而非信任的电子支付系统,让任何两个愿意交易的双方直接交易,无需受信任的第三方插手。在计算上不可逆的交易可以保护卖家免于欺诈;而要保护买家也很容易——部署常规的托管(escrow)机制即可。本文提出一种解决双重支付问题的方案:使用点对点的分布式时间戳服务器,为交易的时间先后顺序生成计算上的证明。只要在整体上,诚实节点控制的 CPU 算力超过任何协同作恶的攻击者节点组合,这套系统就是安全的。

英文原文 · 1. Introduction

Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non-reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party.

What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes.

2

交易 Transactions

我们把一枚电子币定义为一串数字签名。每一位拥有者把币转给下一位的方式是:对「上一笔交易的哈希」与「下一位拥有者的公钥」拼接而成的数据进行数字签名,并把签名追加到这枚币的末尾。收款方验证这些签名,即可验证这条所有权链。

问题在于:收款方无法验证之前的拥有者们是否曾把同一枚币双重支付。常见的解决方案是引入一个受信任的中央权威(铸币厂,mint),逐笔检查是否存在双重支付;每笔交易完成后,币要退回铸币厂重新发行一枚新币,且只有铸币厂直接发行的币才被信任没有双重支付。这一方案的毛病在于:整个货币系统的命运,完全系于运营铸币厂的那家公司,每一笔交易都必须经过它——这跟银行没什么两样。

我们需要一种办法,让收款方知道:之前的拥有者并没有把这些币签给更早的其他交易。就我们的目的而言,以最早的那笔交易为准,此后的重复支付尝试都无关紧要。而要确认「某笔交易不存在」,唯一的办法是知晓全部交易。在铸币厂模型里,铸币厂知悉所有交易,并裁决哪一笔先到。要在没有受信任方的前提下做到这一点,交易必须公开宣告 [1],并且需要一套系统,让所有参与者就「交易被接收的先后顺序」的唯一历史达成一致。收款方需要这样的证明:在每一笔交易发生的时刻,多数节点都认同它是第一笔被接收的。

持有人 0 的私钥 持有人 1 的私钥 持有人 2 的私钥 签名 签名 签名 交易 持有人 1 的公钥 持有人 0 的签名 哈希 交易 持有人 2 的公钥 持有人 1 的签名 哈希 交易 持有人 3 的公钥 持有人 2 的签名 哈希 验证 验证 一枚币 = 一串首尾相连的数字签名。收款方逐环验证签名,即可验证整条所有权链。
图 1(对应原文第 2 节):电子币是一串数字签名,每转手一次就多一环
英文原文 · 2. Transactions

We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership.

The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank.

We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.

3

时间戳服务器 Timestamp Server

我们提出的方案从时间戳服务器开始。时间戳服务器的工作方式是:对待加盖时间戳的一区块数据取哈希,然后广泛发布这个哈希——比如刊登在报纸上,或发布到 Usenet [2-5]。一个数据显然必须在打戳的当时就已存在,才能进入这个哈希,时间戳由此证明了这一点。每个时间戳都会把前一个时间戳纳入自己的哈希,从而形成一条链:每一个新时间戳,都在加固它之前的所有时间戳。

区块 交易 交易 … 整体取哈希 → 哈希 H1(公开发布) 区块 交易 交易 … + H1 整体取哈希 → 哈希 H2(公开发布) H1 打进下一块 每个哈希都包含前一个哈希:一个新时间戳,加固它之前的所有时间戳。
图 2(对应原文第 3 节):时间戳环环相扣,越往后越难推翻
英文原文 · 3. Timestamp Server

The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it.

4

工作量证明 Proof-of-Work

要在点对点的基础上实现分布式时间戳服务器,我们需要采用类似 Adam Back 的 Hashcash [6] 的工作量证明系统,而不是报纸或 Usenet 帖子。工作量证明的机制是:寻找一个数值,使得将它(比如用 SHA-256)哈希后,得到的哈希值以若干个零比特开头。所需的平均工作量,随零比特个数的增加呈指数增长,而验证只需执行一次哈希。

对我们的时间戳网络而言,具体做法是:在区块中不断递增一个随机数(nonce),直到找到一个值,使区块哈希满足所需的零比特个数。一旦花费 CPU 算力使区块满足了工作量证明,除非重做这些工作,区块便无法更改;又因为后续的区块都链接在它之后,更改它还意味着重做其后所有区块的工作量。

工作量证明还解决了「多数决策中如何确定代表性」的问题。如果按「一个 IP 地址一票」来计多数,任何能搞到大量 IP 的人都能操纵结果。工作量证明本质上是一 CPU 一票,多数决策由最长的链代表——投入工作量证明最多的那条链。如果多数 CPU 算力由诚实节点控制,诚实链就会增长得最快,甩开任何竞争者。要修改过去的某个区块,攻击者必须重做该区块及其后所有区块的工作量证明,然后追上并反超诚实节点的进度。我们将在后文说明:更慢的攻击者想追上来,其概率会随着后续区块的增加而指数级下降。

为了补偿硬件速度的提升,以及节点参与意愿随时间的变化,工作量证明的难度由移动平均值决定,目标是维持平均每小时出块数大致恒定:如果出块太快,难度就调高。

为什么这一步是全文的枢纽?它一次回答了三个问题:谁来记账?(谁先解出题);账本为什么改不动?(改老区块 = 重算其后全部工作量);「多数人」怎么认定?(不看人头不看 IP,看算力投入)。安全、不可篡改、共识,三件事在同一道数学题里同时解决。

英文原文 · 4. Proof-of-Work

To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof-of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash.

For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it.

The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added.

To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases.

5

网络 Network

网络的运行步骤如下:

  1. 新交易广播给所有节点。
  2. 每个节点将新交易收进一个区块。
  3. 每个节点为自己的区块寻找困难的工作量证明。
  4. 某个节点找到工作量证明后,将区块广播给所有节点。
  5. 仅当区块内所有交易都有效、且尚未被花费过,节点才接受该区块。
  6. 节点以「把被接受区块的哈希当作前哈希、在其上构造下一个区块」的方式,表达对该区块的接受。

节点总是把最长的链视为正确的链,并在其上持续扩展。若两个节点同时广播了不同的下一区块,各节点可能先收到其中之一。此时节点会在先收到的分支上继续工作,同时保留另一个分支,以防它后来变长。当下一个工作量证明出现、某条分支率先变长时,僵局即告打破:原本在另一条分支上工作的节点,会切换到更长的那条链上。

新交易的广播不必抵达每一个节点——只要抵达足够多的节点,这些交易很快就会进入某个区块。区块广播同样容忍消息丢失:如果某个节点没有收到某个区块,等它收到下一个区块时,就会意识到自己缺了一个,随即发出请求补齐。

区块 #4127 前块哈希:0000a3f… 随机数(nonce):918273 交易 交易 交易 … 区块 #4128 前块哈希:00007c9… 随机数(nonce):331207 交易 交易 交易 … 前块哈希 ← 最长链 = 全网公认的历史
图 3(对应原文第 5 节):区块首尾相连,前块哈希就是「上一页的页码」
英文原文 · 5. Network

The steps to run the network are as follows:

1) New transactions are broadcast to all nodes.
2) Each node collects new transactions into a block.
3) Each node works on finding a difficult proof-of-work for its block.
4) When a node finds a proof-of-work, it broadcasts the block to all nodes.
5) Nodes accept the block only if all transactions in it are valid and not already spent.
6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash.

Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof-of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one.

New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one.

6

激励 Incentive

按照约定,每个区块的第一笔交易是一笔特殊交易:它创造一枚归该区块创建者所有的新币。这为节点支持网络提供了激励,也提供了把新币初次投入流通的途径——因为不存在发行货币的中央权威。新币以恒定数量稳定增发,类似于金矿矿工耗费资源把黄金注入流通;在我们的场景里,被耗费的是 CPU 时间和电力。

激励同样可以由交易手续费提供。若一笔交易的输出值小于输入值,差额即为交易手续费,会被加进包含该交易的区块的激励值中。一旦预定数量的币全部进入流通,激励即可完全过渡到手续费,从此彻底免于通胀。

激励机制还有助于促使节点保持诚实。如果一个贪婪的攻击者能够集结起超过所有诚实节点的 CPU 算力,他将不得不做出选择:是用它来欺诈他人、偷回自己已付出的款项,还是用它诚实地生成新币。他理应发现,按规则出牌更有利可图——这套规则让他的新币收益比其他所有人加起来还多——而不是破坏这套系统、连带摧毁自己财富的有效性。

一个被无数次验证的设计直觉:比特币的安全模型不假设人是善的,只假设人是趋利的。它不要求矿工诚实,只要求「诚实更有利可图」。把道德问题换成经济学问题,正是这篇论文最漂亮的一笔。

英文原文 · 6. Incentive

By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended.

The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free.

The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth.

7

回收磁盘空间 Reclaiming Disk Space

一旦一枚币的最新交易被足够多的区块覆盖(深埋于区块之下),它之前那些已花费的交易便可以丢弃,以节省磁盘空间。为了在不破坏区块哈希的前提下做到这一点,交易按默克尔树 [7][2][5] 组织哈希,区块哈希中只包含树根。此后,旧区块便可以通过砍掉树杈来压缩,树的内部哈希无需保存。

一个不含交易的区块头大约 80 字节。假设每 10 分钟生成一个区块:80 字节 × 6 × 24 × 365 = 每年 4.2MB。以 2008 年计算机普遍配备 2GB 内存、且摩尔定律预言内存以每年 1.2GB 的速度增长来看,即便必须把全部区块头保存在内存中,存储也不成问题。

交易 Tx0 交易 Tx1 交易 Tx2 交易 Tx3 Hash0 Hash1 树根 Root 区块头 只存树根 已花费交易的明细可删,只留哈希枝干——校验能力不减,磁盘占用大降。
图 4(对应原文第 7 节):默克尔树——一个树根,担保全部交易
英文原文 · 7. Reclaiming Disk Space

Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored.

A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory.

8

简化支付验证 Simplified Payment Verification

不运行完整网络节点,也可以验证支付。用户只需保存最长工作量证明链的区块头——通过持续询问网络节点,直到确信自己握有最长链——并获取一条把该交易链接到其所在时间戳区块的默克尔分支。他无法亲自检查这笔交易,但通过把它链接到链上的某个位置,他可以看到某个网络节点已接受了它;而其后叠加的区块,进一步确认了整个网络对它的接受。

因此,只要诚实节点控制着网络,这种验证就是可靠的;而一旦网络被攻击者压制,它就更为脆弱。尽管网络节点可以亲自验证交易,但简化方法可能在攻击者持续压制网络期间,被其伪造的交易所蒙骗。一种防御策略是:当网络节点侦测到无效区块时发出警报,用户的软件收到警报后,下载完整区块与被警告的交易,确认不一致之处。收款频繁的商家,多半仍会希望运行自己的节点,以获得更强的独立安全性与更快的验证速度。

英文原文 · 8. Simplified Payment Verification

It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it.

As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification.

9

价值的组合与分割 Combining and Splitting Value

虽然逐枚处理每一枚币是可行的,但如果一笔转账里的每一分钱都要单独立一笔交易,那就太笨重了。为了让价值可以分割与组合,交易支持多个输入与多个输出。通常的情形是:单笔大额的前序交易作为唯一输入,或者多笔小额合并为多个输入;输出则至多两个——一个付给收款方,一个把找零(如果有)退回付款方。

需要指出:扇出(fan-out)——一笔交易依赖若干笔交易,而那几笔又依赖更多交易——在这里并不构成问题。因为从不需要提取某笔交易历史的完整独立副本。

英文原文 · 9. Combining and Splitting Value

Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender.

It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history.

10

隐私 Privacy

传统银行模型通过限制信息的流向——只向交易相关方与受信任的第三方开放——来实现一定程度的隐私。公开宣告所有交易的必要性排除了这一方法,但隐私仍可保住:在另一个环节切断信息流,即让公钥保持匿名。公众可以看到某人向另一个人转账了某个金额,却没有任何信息将这笔交易关联到任何人。这类似于证券交易所公布的信息水平:逐笔成交的时间与数量(「行情带」)是公开的,但不公布交易双方是谁。

作为额外的防火墙,每笔交易都应使用一对新密钥,以免各笔交易被关联到同一个主人。不过有些关联仍无法避免:多输入交易必然暴露「这些输入属于同一个主人」。风险在于:一旦某个密钥的主人身分被揭露,关联分析就可能揪出属于同一主人的其他交易。

英文原文 · 10. Privacy

The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the "tape", is made public, but without telling who the parties were.

As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner.

11

计算 Calculations

我们来考察这样一个场景:攻击者试图以快于诚实链的速度生成一条替代链。即使他成功了,系统也不会因此对任意篡改敞开大门——比如凭空创造价值,或攫取本不属于攻击者的钱。节点不会把无效交易当作有效支付来接受,诚实节点也永远不会接受包含无效交易的区块。攻击者唯一能尝试的,是改写自己的一笔交易,把最近花出去的钱拿回来。

诚实链与攻击链之间的这场竞赛,可以刻画为一个二项随机游走(Binomial Random Walk)。成功事件是诚实链延长一个区块,领先优势 +1;失败事件是攻击链延长一个区块,差距 −1。

攻击者从落后 z 个区块处追上的概率,类似赌徒破产问题(Gambler's Ruin):设想一个握有无限信用的赌徒,从落后的局面开始,可以无限次地尝试,直到达到盈亏平衡。他最终达到平衡的概率——即攻击者追上诚实链的概率——可以这样计算 [8]:

p = 诚实节点找到下一个区块的概率

q = 攻击者找到下一个区块的概率

qz = 攻击者从落后 z 个区块处追上的概率

qz = 1,若 p ≤ q(q/p)z,若 p > q

给定 p > q 的假设,攻击者需要追赶的区块数越多,成功概率就按指数级下降。胜算不利时,如果他无法在开局侥幸猛冲一把,随着落后越拉越大,他的机会将趋近于零。

现在考虑:一笔新交易的收款方需要等待多久,才能足够确信发送方无法再撤销这笔交易?我们假设发送方就是攻击者:他先让收款方相信自己已经付款,过一段时间后,再把同一笔钱转回给自己。那种情况一旦发生,收款方当然会警觉——但攻击者指望的正是「那时已经太迟」。

防范办法是:收款方在签名前一刻才生成一对新密钥,并把公钥交给发送方。这使发送方无法提前在一条平行链上偷偷挖矿、攒够足够领先后再执行交易。交易一经发出,不诚实的发送方才开始秘密地在一条包含另一版本交易的平行链上工作。

收款方一直等到交易被打进区块、其后又链接了 z 个区块。他并不知道攻击者确切前进了多少,但假设诚实区块的出块时间符合平均预期,则攻击者的潜在进度服从一个泊松分布(Poisson distribution),其期望值为:

λ = z · qp

要算出攻击者此刻仍能追上的概率,需把他可能取得的每一种进度所对应的泊松密度,乘以从该进度出发仍能追上的概率,然后求和:

Σk=0 λk · e−λk! · (q/p)z−k,若 k ≤ z1,若 k > z

为避免对分布的无穷尾求和,可将其整理为:

1 − Σk=0z λk · e−λk! · ( 1 − (q/p)z−k )

写成 C 代码:

#include <math.h>
double AttackerSuccessProbability(double q, int z)
{
    double p = 1.0 - q;
    double lambda = z * (q / p);
    double sum = 1.0;
    int i, k;
    for (k = 0; k <= z; k++)
    {
        double poisson = exp(-lambda);
        for (i = 1; i <= k; i++)
            poisson *= lambda / i;
        sum -= poisson * (1 - pow(q / p, z - k));
    }
    return sum;
}

代入几组数值,可以看到概率随 z 呈指数下降:

q = 0.1(攻击者占 10% 算力)
z(落后区块数)P(追上概率)
01.0000000
10.2045873
20.0509779
30.0131722
40.0034552
50.0009137
60.0002428
70.0000647
80.0000173
90.0000046
100.0000012
q = 0.3(攻击者占 30% 算力)
z(落后区块数)P(追上概率)
01.0000000
50.1773523
100.0416605
150.0101008
200.0024804
250.0006132
300.0001522
350.0000379
400.0000095
450.0000024
500.0000006

解出 P < 0.1% 所需的确认数 z:

q(攻击者算力占比)z(所需确认数)
0.105
0.158
0.2011
0.2515
0.3024
0.3541
0.4089
0.45340
英文原文 · 11. Calculations

We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent.

The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1.

The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]:

p = probability an honest node finds the next block
q = probability the attacker finds the next block
qz = probability the attacker will ever catch up from z blocks behind

qz = 1 if p ≤ q; (q/p)z if p > q

Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind.

We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late.

The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction.

The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value:

lambda = z * (q/p)

To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point:

Sum over k=0..∞ of (lambda^k * e^-lambda / k!) * ((q/p)^(z-k) if k ≤ z, 1 if k > z)

Rearranging to avoid summing the infinite tail of the distribution...

1 - Sum over k=0..z of (lambda^k * e^-lambda / k!) * (1 - (q/p)^(z-k))

Converting to C code... (see the code block above for the original listing)

Running some results, we can see the probability drop off exponentially with z. (see the data tables above for the original figures)

Solving for P less than 0.1%... (see the table above)

「六个确认」的行业惯例从何而来?就是从这一节算出来的:对占 10% 算力的攻击者,等 6 个确认后翻盘概率约 0.024%,等 5 个即可低于 0.1%。惯例不是玄学,是这条指数曲线。下面的计算器把这张表变成了任意取值。

12

结论 Conclusion

我们提出了一套不依赖信任的电子交易系统。我们从「由数字签名构成币」这一惯用框架出发——它为所有权提供了强有力的控制,但若缺少防止双重支付的手段,仍不完整。为解决这一问题,我们提出利用点对点网络与工作量证明,记录一份公开的交易历史:只要诚实节点控制着多数 CPU 算力,攻击者想改写它,很快就会在计算上变得不切实际。网络的健壮,源于其无结构的简洁。节点一拥而上地工作,几乎无需协调;它们无需表明身份,因为消息不路由向任何特定位置,只需尽力送达即可。节点可以随时离开与重新加入网络,重新加入时接受工作量证明链,作为它离开期间所发生之事的证明。它们以算力投票:在有效区块上继续延伸,即为接受;拒绝在无效区块上工作,即为否决。任何所需的规则与激励,都可以凭借这一共识机制来强制执行。

英文原文 · 12. Conclusion

We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism.

文献

参考文献 References

  1. W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.
  2. H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.
  3. S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991.
  4. D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.
  5. S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.
  6. A. Back, "Hashcash - a denial of service counter-measure," http://www.hashcash.org/papers/hashcash.pdf, 2002.
  7. R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980.
  8. W. Feller, "An introduction to probability theory and its applications," 1957.
演示

动手玩:白皮书里的概念,亲手试一遍

以下演示全部在你的浏览器本地运行(SHA-256 由页面内置实现计算,无任何数据上传)。玩过再回读第 4、5、11 节,会顺利得多。

① 哈希指纹机 —— 「改一个字,面目全非」

哈希函数把任意长度的内容压成 64 位十六进制「指纹」:输入哪怕改动一个标点,指纹也会完全变样。这就是白皮书里一切「防伪」的基石。

SHA-256 指纹

② 挖矿模拟器 —— 亲手找一次 nonce

工作量证明就是:不断递增 nonce,直到区块哈希以足够多的 0 开头。0 越多越难——每多一位,平均要多试 16 倍。点「开始挖矿」,看你的浏览器花多长时间「出块」。

区块内容「小吴乐意」的区块 #1 · 2026-09-18 · 交易若干
当前尝试nonce = 0
当前哈希
已计算0 次

挖矿不是「解题的聪明办法」,而是纯粹的体力活——这正是设计意图:让「记账权」的获得必须付出真实、可验证、无法伪造的算力成本。

③ 篡改实验室 —— 试试改动一块,会发生什么

下面是一条 3 个区块的迷你链。试着修改中间区块的记录,观察链条如何「报警」;再试试「重挖」,体会为什么说改历史要付出指数代价。

先随便改一条记录试试。每个区块的哈希由「前块哈希 + 记录 + nonce」共同决定,一处改动,后面全乱。

④ 确认数计算器 —— 「等几个确认才安心?」

第 11 节的公式变成了可调参数:拖动滑块设定攻击者的算力占比,计算器按原文算法算出把攻击成功率压到目标以下所需的确认数 z。

5个确认

攻击者占 10% 算力时,等 5 个确认,其翻盘概率即低于 0.1%——与白皮书第 11 节的表完全一致。

注意曲线的形状:q 越接近 50%,所需确认数暴涨。这就是「51% 攻击」名字的由来——安全不是非黑即白,而是一条可以算出来的概率曲线。

答疑

常见答疑:读论文时,大家最常问的 10 个问题

比特币和支付宝、游戏币的本质区别是什么?

支付宝里的余额,本质是「阿里巴巴数据库里的一行记录」,由这家公司负责记账、纠错和兑付——你必须信任它。游戏币也一样,且通常由发行方无限增发。比特币的账本由全球数万个节点各自持有一份,没有任何一方能单方篡改、冻结或增发。论文第 1、2 节讲的就是这个区别:把「信任一家公司」换成「信任数学与全网共识」。

「总量 2100 万枚」写在哪?谁保证不会偷偷增发?

写在每个节点都在运行的代码里(第 6 节的「造币交易」):新币只能随区块产生,数量按每 21 万个区块(约四年)减半的等比数列递减,数学上收敛于 2100 万。任何想增发的节点,产出的区块会被所有其他节点直接拒绝(第 5 节第 5 步)——「增发版比特币」根本进不了公认的最长链。

比特币是匿名的吗?

不是匿名,是化名(第 10 节)。所有交易永久公开可查,只是记录的是公钥而非姓名,且建议每笔交易换新地址。这类似「每次出门换一个马甲」:正常使用难以对应到人,但一旦某个马甲被对上真人,同一主人的其他交易就可能被链上分析顺藤摸瓜。

挖矿到底在「挖」什么?为什么这么耗电?

矿工在暴力搜索一个能让区块哈希以足够多个 0 开头的 nonce(第 4 节)。耗电不是浪费,而是这套系统的「防伪成本」:它让伪造账本必须付出真实的物理代价。对应到传统金融,就是印钞、运钞、金库与武装押运的开支——只是比特币把这个成本变成了全球分布的算力竞争,并让「造假」在经济上得不偿失(第 6 节)。

什么是 51% 攻击?能偷走我的比特币吗?

不能偷走别人的币,也不能凭空造币(第 11 节开篇明确说了这一点)。攻击者算力过半时,唯一能做的是「撤销自己最近的交易」制造双重支付。而且这需要持续压制全网,代价极高,一旦发生还会重创币价——第 6 节解释了为什么攻击者往往「按规则出牌更划算」。51% 是概率与经济学问题,不是「黑客入侵」那种故事。

挖矿奖励归零之后,谁来维护网络安全?

手续费。第 6 节已经预设了这条路:奖励逐块减半,手续费逐渐补位,「激励可以完全过渡到交易手续费,彻底免于通胀」。这套过渡是否足以长期支撑安全预算,是业界至今仍在讨论的真问题——但机制本身论文里写得明明白白。

私钥丢了、被盗了怎么办?

没有客服,没有挂失,没有密码找回。私钥就是所有权的全部(第 2 节):谁掌握私钥,谁就是主人。所以「自托管」的代价是自担全责——这也是为什么行业反复强调备份与冷存储。硬币的另一面是:没有任何机构能替你「冻结」或「没收」资产。

论文写于 2008 年,里面的设计和今天的比特币一致吗?

大骨架原样运行:SHA-256 工作量证明、约 10 分钟出块、难度自动调整、默克尔树、最长链规则、创币交易与减半。细节有多处演进:「一个 CPU 一票」演变为专业矿机与矿池时代的高度集中;轻钱包(第 8 节 SPV)的实际安全性比论文的乐观估计更弱;区块上限、脚本能力等属于工程社区的后续决策。论文给出的是骨架与原理,不是今天的全部。

不是技术背景,应该重点读哪几节?

摘要 → 第 1 节(为什么要做这件事)→ 第 4 节(工作量证明,先只读「先说人话」)→ 第 6 节(激励,比特币的灵魂)→ 第 10 节(隐私,纠正「匿名」误解)→ 第 12 节(结论)。技术细节遇到读不懂的,跳过正文、先看每节的「先说人话」框,完全没有问题。

一篇 9 页的论文,为什么影响这么大?

因为它第一次把一组早已存在的零件——数字签名(第 2 节)、哈希时间戳(第 3 节)、Hashcash 式工作量证明(第 4 节)、默克尔树(第 7 节)——组装成一个无需信任第三方的双花解法,并用概率论(第 11 节)与博弈论(第 6 节)把安全性论证闭环。单看每个零件都不新鲜,新鲜的是这台「永不出错的记账机器」本身。引用它的论文数以万计,它定义了此后整个行业。

附录

术语表:读论文必备的 20 个词

电子现金 Electronic Cash
以数字形式存在的货币,核心难题是防止被复制花两次。
双重支付 Double-Spending
同一笔电子货币被同时支付给两方。比特币要解决的头号问题。
哈希 / SHA-256 Hash
把任意数据压成 256 位「指纹」的单向函数:改一字,全变样;无法从指纹反推原文。
数字签名 Digital Signature
用私钥生成、任何人用对应公钥即可验证的凭证,证明「这笔转让确实出自本人」。
私钥 / 公钥 Private / Public Key
成对出现。私钥=签名权=所有权本身;公钥(的哈希)=收款地址=化名。
区块 Block
一批交易打包成的「账本页」,含前块哈希、时间戳、nonce 与交易默克尔树根。
区块链 Blockchain
区块按哈希首尾相连而成的账本链,改动任何一页都会导致其后全部失效。
时间戳 Timestamp
证明「数据在该时刻已存在」的凭证。哈希链让时间戳环环加固。
工作量证明 Proof-of-Work
通过暴力搜索找到满足条件的 nonce,向全网证明「我烧掉了真实的算力」。
nonce
「Number used once」:矿工反复调整的那个数,直到哈希符合难度要求。本页挖矿演示就是在找它。
挖矿 Mining
竞争出块的过程:打包交易 → 搜索 nonce → 广播区块,胜者获得新币与手续费。
矿工 Miner
参与出块竞争的节点,用算力换取奖励。
节点 Node
网络中的参与者。全节点独立验证一切并保存完整账本;轻节点依赖 SPV。
算力 Hashrate
单位时间能算的哈希次数,是全网「投票权」的度量(一个 CPU 一票)。
最长链规则 Longest Chain Rule
分叉时,全网以累计工作量最大的链为准;短链上的区块作废。
分叉 Fork
两个矿工几乎同时出块造成的暂时多链局面,通常下一个出块即分出胜负。
默克尔树 Merkle Tree
交易的二叉哈希树:一个树根担保全部交易,并让轻钱包可验证单笔交易。
确认 Confirmation
交易被打进区块后,其后又叠加的区块数。越多越不可逆,见第 11 节计算。
SPV 简化支付验证
轻钱包只存区块头、用默克尔分支验证交易的机制(第 8 节)。
创币交易 Coinbase
每个区块的第一笔特殊交易:凭空生成新币付给出块者,是唯一的新币发行通道。
译后记

关于这个译本

为什么重译?

现有的中文译本大致两类:忠实的偏拗口,通顺的常删减。这个版本想两者兼得:译文完整、逐句忠实,一个段落都不删;同时在每节前面放一个「先说人话」框,把大白话和原文分开——想轻松就看框,想较真就读文,想核对就展开英文原文。

翻译约定

  • 段落划分与英文原文一一对应,方便逐句对照。
  • 方括号引用编号 [1]–[8] 原样保留,对应文末参考文献。
  • 第 11 节的公式、数据表与 C 代码原样保留,未做任何改写。
  • 「先说人话」、图解、演示与答疑均为译者补充,用样式与原文区隔,绝不混入译文。

关键术语对照

英文原文本译法
electronic cash电子现金
double-spending双重支付(俗称「双花」)
proof-of-work工作量证明
hash哈希(指纹)
nonce随机数(保留原文 nonce)
timestamp server时间戳服务器
mint铸币厂
escrow托管
Merkle Tree默克尔树
Simplified Payment Verification简化支付验证(SPV)
fan-out扇出
Binomial Random Walk二项随机游走
Gambler's Ruin赌徒破产问题
Poisson distribution泊松分布
best effort basis尽力而为

版权与转载

英文原文由中本聪于 2008 年发布,比特币社区多年来自由传播,bitcoin.org 亦长期公开展示。中文译文与本站全部补充内容(导读、图解、演示、答疑、术语表)由小吴乐意完成,欢迎非商业转载,请注明「小吴乐意翻译版」并附本站链接。本站不构成任何投资建议。

翻译这件小事,我是乐意的。—— 小吴