比特币白皮书Calculations笔记

区块链白皮书地址中Calculations部分截图如下:

这里附上我粗浅的理解,如出现错误,欢迎指正。

其中讨论了攻击者试图比诚实链更快地生成替代链的场景,诚实链和攻击链之间的的竞赛可以看作一个二项随机游走(Binomial Random Walk),成功事件是诚实链延长一个块,其领先优势+1,失败事件是攻击者的链延长一个块,减少差距-1。

攻击者弥补给定赤字的概率类似于赌徒破产问题。假设一个拥有无限信用额度的赌徒从赤字开始,为了达到收支平衡,他可能会进行无限次的尝试。我们可以计算出攻击者达到收支平衡的概率或者产生诚实链的概率满足以下公式:

                                                             

         其中p表示诚实节点挖得下一个区块的概率,q表示攻击者挖得下一个区块的概率,表示攻击者从落后z个区块追赶上来的概率。

我们假设p>q,随着攻击者落后的区块数量的增多,攻击者赶上诚实链的概率会呈现指数下降.我们现在来考考虑一个交易的接受方需要等多长时间才能充分确认发送者不会更改这笔交易。我们假设发送方是一个攻击者,他想让接收者确认他已经支付了,然后过一段时间把这笔钱转会给自己。当这种情况发生时,接收方会得到通知,但是发送方希望这个时候已经来不及让接收方做出改变。

收款人生成了新的一对密钥组合,然后只预留一个较短的时间将公钥发送给付款人。这将可以防止以下情况:付款人预先准备好一个区块链然后持续地对此区块进行运算,直到运气让他的区块链超越了诚实链条,方才立即执行支付。当此情形,只要交易一旦发出,攻击者就开始秘密地准备一条包含了该交易替代版本的平行链条。

收款人将等待交易出现在首个区块中,然后在等到z个区块链接其后。此时,他仍然 不能确切知道攻击者已经进展了多少个区块,但是假设诚实区块将耗费平均预期时间以产生一 个区块,那么攻击者的潜在进展就是一个泊松分布,分布的期望值λ为:

                                     ---------------------------[1-1]

       泊松分布是指某段连续的时间内某件事情发生的次数,而且“某件事情”发生所用的时间是可以忽略的。例如,在五分钟内,电子元件遭受脉冲的次数,就服从于泊松分布。

泊松分布属于二项分布。二项分布是说,已知某件事情发生的概率是p,那么做n次试验,事情发生的次数就服从于二项分布。泊松分布是二项分布n很大而p很小时的一种极限形式。

二项分布的期望是:

       ---------------------------------[1-2]

       据此可以推出:

                                     ----------------------------------[1-3]

当n趋近于无穷的时候,我们可以计算泊松分布:

其中有两步的证明结果如下:

泊松分布的概率密度函数为:

    -------------------------------------------[1-5]

在本论文中,λ即代表,则概率密度函数为:
    ----------------------------------------------[1-6]

当此情形,为了计算攻击者追赶上的概率,我们将攻击者取得进展区块数量的泊松分布的 概率密度,乘以在该数量下攻击者依然能够追赶上的概率。

    -------------------------------[1-7]

将其变换一下,避免无限求合:

              ---------------------------------[1-8]

中本聪将上式装化成C语言代码为:

上述代码乍一看挺复杂,但其实就是式子1-8的一个复现,如果我们用P表示最终我们求的概率,那么这段代码运行的结果如下(l原谅我这只截图狗:) :

如果我们限制P的概率小于0.1%,则攻击者率先挖出下一个区块的概率q和相差的最少区块的个数z分别是:

在比特币的交易中,大额的交易必须等到六个区块验证之后才能确保有很小的机率被篡改,应该跟这个计算结果有关系,菜鸡接着去学了。

参考:
       1、https://www.zhihu.com/question/26441147

2、https://files-cdn.cnblogs.com/files/X-knight/Bitcoin英文版.pdf

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章