原话导读 · SATONAMO 整理

掌握多数算力,就能随便改比特币吗?

重写付款、伪造交易、凭空增发,是不同的问题。10 段原话,读清多数算力的攻击能力,以及它无法绕过的交易校验。

这里的“多数”指超过全网一半的出块算力。改写付款记录、花走别人的币、改变发行规则,分别受到什么约束?先读中本聪对攻击者、节点验证和确认次数的解释。

算力更多,不会让无效交易变有效

完整验证节点会检查交易签名与账本规则。白皮书早期草稿给出了攻击的边界,正式版第 11 节保留了相同论述。2010 年的版本说明,也明确提到“累计工作量更大的无效区块链”。

对照正式白皮书第 11 节:攻击能改变什么

我们考虑这样一种情况:攻击者试图以比诚实链更快的速度生成另一条链。即使他做到了,也不能任意更改系统,例如凭空创造价值,或取走从未属于攻击者的钱。节点不会把无效交易当作付款接受,诚实节点也绝不会接受包含此类交易的区块。攻击者只能尝试更改自己的一笔交易,以拿回他最近花出去的钱。
中本聪 · · Bitcoin.org原文与上下文
对,正是如此。节点收到一个区块时,会根据已有区块中的先前交易,检查其中每笔交易的签名。区块中的交易,只能依赖于先前区块或同一区块中的有效交易。交易 C 可以依赖于同一区块中的交易 B,而 B 又依赖于更早区块中的交易 A。
中本聪 · · 密码学邮件列表原文与上下文
看到一条更长(累计工作量更大)的无效区块链时,安全模式仍会触发。
中本聪 · · Bitcointalk原文与上下文

真正的风险:把付出去的钱拿回来

他用购物后收回付款解释双重支付,也就是“双花”:攻击者重做一条符合交易规则的分支,替换商家原先看到的付款记录。这里的“更长”指累计工作量更大。多数算力还可能排除交易、阻碍确认,风险并不限于这个购物例子。

补充:开发者指南对 51% 攻击的定义

即使坏人真的压倒了网络,也并不意味着他会立刻发财。他能做的只是拿回自己花出去的钱,就像开出一张会被退票的支票。要利用这一点,他必须先从商家那里买东西,等货物发出后,再压倒网络,试图把钱拿回来。
中本聪 · · 密码学邮件列表原文与上下文
攻击者不是在末尾添加区块。他必须回头重做包含自己交易的区块,以及之后的所有区块,还包括他做这些工作时网络继续添加到末尾的所有新区块。他是在改写历史。一旦他的分支更长,它就成为新的有效分支。
中本聪 · · 密码学邮件列表原文与上下文

多等几个确认,能解决什么?

下文的 p > q,表示诚实方找到下一个区块的概率高于攻击者。确认越多、追上概率越低的结论有这个前提;低于一半算力仍可能双花,持续掌握多数算力时,也不能靠固定确认次数保证安全。“一小时”是他当时的等待建议。

对照白皮书:攻击者追上的概率及其前提

根据我们关于 p > q 的假设,随着攻击者需要追赶的区块数量增加,这个概率呈指数下降。形势对他不利;如果他没有在一开始幸运地大幅前进,那么随着他越落越远,机会就会变得微乎其微。
中本聪 · · Bitcoin.org原文与上下文
交易接收方通常需要等待大约一小时或更久,让这类潜在冲突有时间得到解决。他们仍然可以立即把币再次花出去,但在发货等操作之前应该等待。
中本聪 · · 密码学邮件列表原文与上下文

“挖矿更划算”,不等于没人会攻击

他认为逐利者可能更愿意正常挖矿;在谈早期网络安全时,也承认攻击者可能另有动机。2010 年,他再次公开承认恶意多数算力带来的威胁。经济激励可以劝阻攻击,却不能保证攻击永不发生。

我不认为他靠这种类似盗刷的骗局,能赚得比生成比特币更多。有了那么大的僵尸网络,他能生成的比特币会比其他所有人加起来还多。
中本聪 · · 密码学邮件列表原文与上下文
比特币的一个关键特点是,网络的安全性会随着网络规模和需要保护的价值增加而增强。缺点是,它在起步阶段规模很小时容易受到攻击,不过,能够偷走的价值应该始终低于行窃所需付出的代价。如果有人出于其他动机,想证明某一点,那他们证明的也只是我已经承认的一点。
中本聪 · · Mike Hearn 通信原文与上下文
但如果有人握有 50% 以上的 CPU 算力且心怀恶意,他们能证明设计文档里已经写明的那件事。
中本聪 · · Bitcointalk原文与上下文

读完这几段原话

多数算力可以严重威胁付款确认,甚至阻碍交易进入账本;但它不能单靠算力,让遵守现有规则的完整验证节点接受伪造签名或超额发行。确认安全与规则校验,是这组原话中的两条边界。

阅读字号

选择适合你的字号,之后阅读会继续使用。