Py学习  »  区块链

区块链技术之BTC白皮书:计算

区块链技术学习 • 4 年前 • 384 次点击  

区块链技术学习(微信号:Blockchain1024)翻译

原文链接:https://hackernoon.com/bitcoin-white-paper-11-calculations-j565d2bnj



白皮书,顾名思义,是有着白色封面的报告或者重要文件,是一种立场明确。事实清楚,文字简练的没有任何文化色彩的文书。表达主体是官方的。



今天我们主要聊一下区块链技术基础上的数字代币的白皮书。给大家翻译了下主流代币BTC发行的白皮书里面的计算内容,供大家参考。

我们考虑攻击者试图生成一个比诚实链更快的备用链的场景。即使实现了这一点,它也不会使系统受到任意更改的影响,比如凭空创造价值或拿走从未属于攻击者的资金。节点不会接受无效的事务作为付款,而诚实的节点永远不会接受包含它们的块。攻击者只能尝试更改自己的一个事务以收回最近花费的钱。


诚实链和攻击链之间的竞争可以描述为二项式随机游走。成功事件是诚实链被扩展一个块,增加了+1,而失败事件是攻击者的链被扩展一个块,减少-1的差距。


攻击者从特定赤字中赶超可能性类似于赌徒的破产问题。假设一个拥有无限信贷的赌徒从赤字开始,为了达到收支平衡,他可能进行了无数次的尝试。我们可以计算出他达到盈亏平衡的概率,或者攻击者追上诚实链的概率,如下所示:



假设p > q,随着攻击者必须赶上的块数的增加,概率呈指数下降。由于他的胜算不大,如果他不尽早幸运地向前冲,随着他进一步落后,他的机会就会变得微乎其微。


现在,我们考虑新事务的接收方需要等待多长时间才能充分确定发送者不能更改事务。我们假设发送者是一个攻击者,他想让接收者相信他支付了他一段时间的钱,然后在一段时间后将其转换为向自己支付。当这种情况发生时,接收者会收到警报,但发送者希望为时已晚。


一个区块链,直到他足够幸运地提前完成足够多的工作,然后在此时执行事务。一旦事务被发送,不诚实的发送者就开始在包含其事务的另一个版本的并行链上秘密工作。


接收者等待,直到事务被添加到一个块中,并且Z块在它之后被链接。他不知道攻击者所取得的确切进度,但是假设诚实的数据块占用了每个数据块的平均预期时间,那么攻击者的潜在进度将是一个带有预期值的泊松分布:



为了获得攻击者现在仍然可以赶上的概率,我们用攻击者从该点开始赶上的概率乘以他本可以取得的每一次进度的泊松密度:



重新排列以避免对分布的无限尾求和…



转换为C代码......



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


q=0.1z=0
P=1.0000000z=1
P=0.2045873z=2
P =0.0509779z=3
P=0.0131722z=4
P=0.0034552z=5
P=0.0009137z=6
P=0.0002428z=7
P=0.0000647z=8
P=0.0000173z=9
P=0.0000046z=10
P=0.0000012q=0.3z=0
P=1.0000000z=5
P=0.1773523z=10
P=0.0416605z=15
P=0.0101008z=20
P=0.0024804z=25
P=0.0006132z=30
P=0.0001522z=35
P=0.0000379z=40
P=0.0000095z=45
P=0.0000024z=50
P=0.0000006


求解P小于0.1%…


P q=0.10 z=5
q=0.15 z=8
q=0.20 z=11
q=0.25 z=15
q=0.30 z=24
q=0.35 z=41
q=0.40 z=89
q=0.45 z=340



●编号251,输入编号直达本文

●输入m获取文章目录

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/36359
 
384 次点击