主页 > 老版本imtoken > 比特币白皮书计算部分详解

比特币白皮书计算部分详解

老版本imtoken 2023-01-18 15:21:01

比特币白皮书的第 11 部分是关于比特币安全性的计算过程。原文有点难,就在这里说一下吧。了解这个过程可以告诉你所谓的六次确认是怎么来的,正确到什么程度。

问题描述

先把问题描述清楚。

这里涉及两个角色。一个是攻击者,可能是一个人,也可能是几个人一起行动。另一个角色是诚实节点,它是除攻击者之外的所有节点的集合。

一次成功的攻击意味着攻击者的链已经超越了诚实链。攻击者和诚实节点获得相同的区块链。交易发送后,诚实节点收到交易并开始计算下一个区块。攻击者不会包含或篡改交易,然后在自己的链上计算区块。由于交易历史不同,区块链被分叉为诚实链和攻击链。如果攻击链超过诚实链的长度,则成为最长链,最长链会被全网接受,因此攻击成功。

那么我们需要研究的问题是,交易发出后,包含该交易的区块链上必须释放多少个新区块,才能认为该交易难以被篡改?

比特币交易手续费计算_比特币汇率计算_描述比特币计算过程

泊松分布

白皮书一下子看不懂的可能是因为有泊松分布的概念,所以说一下。

泊松分布是一个常用的数学公式。例如,在火车站,平均每十分钟就有 100 人离开车站。我们知道,在每个特定的十分钟​​内,出站用户的数量不一定是一百,但一定是随机的。有一个概率问题。这种情况下的概率分布是泊松分布。

例如,计算出境人数为98的概率,让公式中的Lambda等于100,k等于98,可以带入公式计算。至于公式本身是怎么来的,不在乎。

比特币交易手续费计算_描述比特币计算过程_比特币汇率计算

回到我们的问题。如果诚实链比攻击链快 z 个块描述比特币计算过程,那么攻击链能赶上的概率是多少?

这里,p 代表诚实节点找到下一个区块的概率,q 代表攻击者找到下一个区块的概率。如果 p 小于或等于 q,则概率为 1。如果 p > q,即 q 除以 p 的 z 次方。可以看出,如果诚实节点的算力比较强,p>q,那么攻击者追上的概率随着被追块数的增加呈指数下降。一开始可能会有一点机会,但距离越远,机会就越渺茫。

接下来,如果交易的发送方已经看到诚实链扩展了z个区块,那么此时交易被成功攻击的概率是多少?请注意描述比特币计算过程,当诚实链扩展时,攻击者并没有停止,我们不知道攻击链扩展了多少块。但是这个数字的平均值与 z 成正比。

描述比特币计算过程_比特币汇率计算_比特币交易手续费计算

平均 Lambda,可以从比例关系推导出来。

那么根据泊松分布,可以直接将此时攻击者扩展块数为k的概率带入泊松分布公式:

这样,我们就理解了泊松公式的含义。

公式转换

描述比特币计算过程_比特币交易手续费计算_比特币汇率计算

下面计算追上的概率。

如果诚实链延长了z个块,攻击链延长了k个块,并且k是一个固定值,那么追上的概率可以通过前面的公式得到,即q除以p减去z去k次幂。

但问题是 k 可能取不同的值。将每个k值的概率乘以k值为该值时追上的概率。k的可能范围是0到无穷大,所以把这些概率加起来,就是最后能赶上的概率。

但是如果要按照这个公式计算最终的结果,就会涉及到无穷级数的累加,所以我们把公式改成形式。

比特币交易手续费计算_比特币汇率计算_描述比特币计算过程

由于赶上和不赶上的概率之和是100%,所以不赶上的概率减去1就是赶上的概率。当k大于z时,表示攻击已经成功并且已经被追上,所以不存在追不上的概率,所以在计算追不上的概率时,取值范围k 的值为 0 到 z。最后,从 1 中减去不赶上的概率,结果是和之前一样的赶上的概率,但这次是加了有限项。

在白皮书中,中本聪将最后一个公式转换为 C 代码。从计算结果可以看出,随着z的增大,追赶的概率会迅速下降。当然,这是基于一个合理的假设,即由于诚实节点的计算能力占主导地位,q 远小于 p。

总结

这里介绍推导过程。最终的结论是:六次确认,假设攻击者的算力较少,如果诚实链在交易之上叠加了六个区块,那么攻击链能够追上的概率就变得很小,可以近似为此交易不可篡改。不过需要注意的是,中本聪的论文不写 6 次确认是绝对安全的。首先,这是一个概率问题。其次,根据白皮书中的计算结果可以看出,攻击者的算力越强,需要等待的确认次数越多。也越多。

参考: