
诚实链与攻击者链之间的竞争可描述为二项随机漫步。成功事件是诚实节点被延长一个区块,两条链的差距加 1,失败事件是攻击者的链延长一个区块,两条链的差距减 1。
攻击者从某一落后位置赶上诚实链的概率类似于赌徒破产理论。设想一个拥有无限筹码的赌徒从一定亏损开始,进行可能无限次的赌博试图达到盈亏平衡。我们可以计算他达到盈亏平衡,即一个攻击者赶上诚实链的概率,如下 [8]:
p = 诚实节点找到下一个区块的概率
q = 攻击者找到下一个区块的概率
qz = 攻击者从落后 z 个区块赶上诚实链的概率

我们假设 p > q,概率将随着攻击者需要赶上的区块数增加而呈指数下降。 由于形势对他不利,如果他没有在早期幸运地快速赶上,他落得越远赶上的机会就越渺茫。
我们现在考虑一个新交易的收款人要等多久才能确保付款人不能再改变这个交易。我们假设作为攻击者的付款人是想让收款人相信他暂时已经付款,然后在一段时间后转换成支付回自己。这时收款人会收到警告,但付款人希望警告已为时已晚。
收款人生成一个新密钥对,并将公钥给付款人,这样付款人就无法提前对交易签名。这能防止付款人通过持续工作直到他足够幸运获得大幅领先的方式预先准备一条区块链,然后在那时执行交易。一旦交易被发出,不诚实的付款人就开始秘密地在一条包含了他的替换版交易的平行链上工作。
收款人等到交易被加到区块中且其后追加了 z 个区块。他不知道攻击者确切的进度,但是假设诚实的区块按期望的平均时间生成,攻击者可能的进度将是一个泊松分布,其期望值为:

为计算攻击者现在仍然能赶上的概率,我们给每个他可能达到的进度的泊松密度乘以他在那个进度能赶上诚实链的概率:

变换以避免对分布的无限尾部求和

转换成 C 语言代码...

运行得到一些结果,我们可以看到概率随 z 呈指数下降。”

论文第11章标题是计算calculations
本章将通过公式和代码来论证,在实践中,比特币网络被攻击成功的概率非常非常低。
我们假设一个攻击者试图生成一条比诚实链更快的替代链,假设这个目标达到了又能怎么样呢?能不能凭空创建一个比特币,或者说拿走别人的比特币呢?这个答案是否定的。
因为这需要破解别人的账户私钥,这是一个难度极高的数学问题,如果没有私钥,那这交易就是一笔无效的交易,诚实的节点是不会接受无效的交易作为支付的,而且诚实节点永远不会接受一个包含无效交易的区块,这在第五章网络中提到过。
所以说,攻击者只能通过改变他自己的交易,来拿回他不久以前已经支出的钱,也就是双重支付,通过双重支付来完成攻击。
本章余下就是通过创建概率模型,来估算这种概率,后面数学的部分会相对复杂,我尽可能用通俗易懂的语言来讲解,如果读者不能够理解也没有关系,其实只要知道这个结论就行了,就是成功攻击的概率非常非常的小。
中本聪说诚实链与攻击链之间的竞争,可以描述为一个叫二项随机游走模型,我们约定成功的事件是指,诚实节点被延长一个区块,也就是两条链的差距加一,失败的事件是,攻击者的链延长一个区块,也就是两条链的差距减一,这就好比两边在赛跑,那么攻击者从某一落后位置上赶上诚实链的概率,就类似于赌徒破产理论,就像一个拥有无限信用的赌徒,从一定亏损开始,或者说落后开始,他进行无限次的赌博,试图达到盈亏平衡,我们可以计算他达到盈亏平衡的概率,也就是一个攻击者赶上诚实链的概率。

中本聪举了一个例子,我们考虑一个新交易的收款人,要等多久才能够确保付款人不能够再改变这个交易,这个问题其实非常现实,就是指收款人落袋为安的时间期望值。
这一章首先设定了一个具体场景,一切计算都建立在此之上:攻击者的目标:实施 “双重支付”,即把同一笔比特币花掉两次。
具体手段:攻击者先付款,等交易被包含进区块后,就开始秘密地挖掘一条不包含这笔交易的“备胎链”(即攻击链),试图用这条更长的链来替换掉原来的链,从而让自己的付款“作废”。
本质上,这变成了诚实节点和攻击者之间的一场“区块赛跑”。
假设诚实节点占据全网多数算力,即 `p > q`。在这种概率优势下,白皮书给出了一个判断:如果攻击者一开始落后了z个区块,他最终能追上诚实链的概率是 (q/p)^z。
这意味着,诚实节点的算力优势(`p > q`)会变成攻击者的巨大劣势。例如,如果诚实节点有90%算力,攻击者只有10%,那么攻击者每多落后一个区块(z增加1),他翻盘的概率就会变为原来的1/9,成功希望变得极为渺茫。
但这个理想模型忽略了一个问题:攻击者在秘密追赶时,诚实链也在往前走,而且攻击者也可能偶然发现一些区块。
因此,白皮书采用了更精确的模型,在之前的基础上,引入了泊松分布的概念。这让整个计算变得更加复杂,你需要将所有可能的情况相加:
假设攻击者在追赶期间,可能运气好,挖出了k个块。
但k是一个随机数,其概率遵循泊松分布。最终的成功概率,就是把所有可能的k值情况都考虑进去后,再乘以在这些情况下他能最终反超的概率。
中本聪将上述复杂的数学模型编用C语言代码进行模拟,得到了一个重要的参考数值。他的运算结果显示:当攻击者的算力占比在10%-30%之间时,等待6个区块确认,攻击者成功的概率就已经非常接近于0。
这也就是“比特币交易需要6个确认”这个说法的源头,它为我们提供了一个兼顾安全性与效率的平衡点。
总结来说,比特币白皮书的这一章就是用严密的数学,将“双重支付”这一古老难题的成功率压缩到了一个极小的数值,从而在现实应用中实现了交易的可靠与安全。
“12,总结
我们已经提出了一种不依赖信任的电子交易系统。我们从通用的数字签名货币体系开始, 这体系提供了强有力的所有权控制,但由于缺乏防止双重支付的方法而不完善。为解决这个问题,我们提出一种使用工作量证明来记录公共交易历史的点对点网络,只要诚实节点控制了多数的 CPU 算力,对于攻击者,交易历史将很快变得在计算上不可更改。网络因其结构简洁性而强大。节点只需很少的协调就能同时工作。它们不需要被认证,因为信息不会被发送到某个特殊的位置,只需被尽力传播。节点可以随时离开和重新加入网络,只需接受工作量证明链作为它们离开时发生事件的证据。节点使用 CPU 算力来投票,通过致力于延长有效区块来表达对其接受,通过拒绝在无效区块上工作来表达对其抵制。任何需要的规则和激励都可通过这个共识机制来加强。”
论文的最后一章是总结的部分conclusion。
中本聪总结说,我们已经提出了一种不依赖信任的交易电子系统,我们参考了通用的数字签名货币体系,这种体系虽然提供了强有力的所有权控制,但是由于缺乏防止双重支付的方法而不够完善。为了解决这个问题,我们提出了一种工作量证明机制,并在点对点的分布式网络中,记录公开的交易数据,只要诚实节点控制了多数的CPU算力,对于攻击者来说,这种交易历史将很快在计算上变得几乎不可更改。
他还总结说,这是一个结构简洁而健壮的网络,节点只需要很少的协同就能够同时工作,它们不需要被认证,因为信息不会被发送到某个中心位置,只需要广泛的传播,所以节点可以随时的离开和重新加入网络。节点使用CPU算力来投票,通过努力延长有效区块来表达接受,通过拒绝在无效区块上工作来表达抵制。任何必要的规则和激励都可以通过这个共识机制来加强,其实这就是区块链的内核思想,一种去中心化的经济学。
至此白皮书的全文就讲完了,其实这些年外界对比特币的评价和研究非常的多,从信息学、经济学、货币银行学、哲学、社会学、政治学、生物进化论,甚至宗教等多种视角给予了诠释。
我认为比特币除了像中本聪所说的,它是一种点对点的电子现金系统,更重要的是它构建的这种区块链模型,给科技界带来了一种思想变革,甚至说是形成了一种社会思想。
正如《失控》的作者凯文·凯利所说,在这个现代生活中最中心化的事物,都可以在一定程度上去中心化,那么任何事物其实都可以去中心化了。
此公众号内容为区块链技术科普文章,不构成投资的意见和建议。


