比特币白皮书计算.docx
- 文档编号:28826608
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:9
- 大小:181.95KB
比特币白皮书计算.docx
《比特币白皮书计算.docx》由会员分享,可在线阅读,更多相关《比特币白皮书计算.docx(9页珍藏版)》请在冰豆网上搜索。
比特币白皮书计算
比特币白皮书-计算
设想如下场景:
一个攻击者试图比诚实节点产生链条更快地制造替代性区块链。
即便它达到了这一目的,但是整个系统也并非就此完全受制于攻击者的独断意志了,比方说凭空创造价值,或者掠夺本不属于攻击者的货币。
这是因为节点将不会接受无效的交易,而诚实的节点永远不会接受一个包含了无效信息的区块。
一个攻击者能做的,最多是更改他自己的交易信息,并试图拿回他刚刚付给别人的钱。
诚实链条和攻击者链条之间的竞赛,可以用二叉树随机漫步(BinomialRandomWalk)来描述。
成功事件定义为诚实链条延长了一个区块,使其领先性+1,而失败事件则是攻击者的链条被延长了一个区块,使得差距-1。
攻击者成功填补某一既定差距的可能性,可以近似地看做赌徒破产问题(Gambler’sRuinproblem)。
假定一个赌徒拥有无限的透支信用,然后开始进行潜在次数为无穷的赌博,试图填补上自己的亏空。
那么我们可以计算他填补上亏空的概率,也就是该攻击者赶上诚实链条,如下所示
假定p>q,那么攻击成功的概率就因为区块数的增长而呈现指数化下降。
由于概率是攻击者的敌人,如果他不能幸运且快速地获得成功,那么他获得成功的机会随着时间的流逝就变得愈发渺茫。
那么我们考虑一个收款人需要等待多长时间,才能足够确信付款人已经难以更改交易了。
我们假设付款人是一个支付攻击者,希望让收款人在一段时间内相信他已经付过款了,然后立即将支付的款项重新支付给自己。
虽然收款人届时会发现这一点,但为时已晚。
收款人生成了新的一对密钥组合,然后只预留一个较短的时间将公钥发送给付款人。
这将可以防止以下情况:
付款人预先准备好一个区块链然后持续地对此区块进行运算,直到运气让他的区块链超越了诚实链条,方才立即执行支付。
当此情形,只要交易一旦发出,攻击者就开始秘密地准备一条包含了该交易替代版本的平行链条。
然后收款人将等待交易出现在首个区块中,然后在等到z个区块链接其后。
此时,他仍然不能确切知道攻击者已经进展了多少个区块,但是假设诚实区块将耗费平均预期时间以产生一个区块,那么攻击者的潜在进展就是一个泊松分布,分布的期望值为:
当此情形,为了计算攻击者追赶上的概率,我们将攻击者取得进展区块数量的泊松分布的概率密度,乘以在该数量下攻击者依然能够追赶上的概率。
化为如下形式,避免对无限数列求和:
写为如下C语言代码:
#include
doubleAttackerSuccessProbability(doubleq,intz)
{
doublep=1.0-q;
doublelambda=z*(q/p);
doublesum=1.0;
inti,k;
for(k=0;k<=z;k++)
{
doublepoisson=exp(-lambda);
for(i=1;i<=k;i++)
poisson*=lambda/i;
sum-=poisson*(1-pow(q/p,z-k));
}
returnsum;
}
结果,发现概率对z值呈指数下降。
当q=0.1时
z=0P=1.0000000
z=1P=0.2045873
z=2P=0.0509779
z=3P=0.0131722
z=4P=0.0034552
z=5P=0.0009137
z=6P=0.0002428
z=7P=0.0000647
z=8P=0.0000173
z=9P=0.0000046
z=10P=0.0000012
当q=0.3时
z=0P=1.0000000
z=5P=0.1773523
z=10P=0.0416605
z=15P=0.0101008
z=20P=0.0024804
z=25P=0.0006132
z=30P=0.0001522
z=35P=0.0000379
z=40P=0.0000095
z=45P=0.0000024
z=50P=0.0000006
求解令P<0.1%的z值:
为使P<0.001
则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.45z=340
01 攻击者的伪造
如果攻击者制造了一条区块链,该区块链比目前正在运行的区块链(诚实节点制造的链)速度更快,他完全可以伪造交易,比如从某某地址转账给自己,并且记录在自己制造的区块链上,但这只能是自己玩玩,因为,该交易不存在有效的上一笔交易,因此,该交易是无效的,钱也不会被诚实节点认可,因此攻击者花时间伪造区块交易是无意义的。
02 什么是泊松分布
泊松分布适合于描述单位时间内随机事件发生的次数的概率分布,比如机器出现的故障数。
假设每产生一个诚实的区块耗费时间符合预期值,则说明攻击者的行为也符合泊松分布。
03 为什么总说等6次确认
我们经常会说,比特币网络上要等待6次确认之后,才可以说转账成功,白皮书给了我们很好的解释:
诚实节点出块的概率+攻击者出块的概率=1
攻击者如果想追上诚实节点链的概率与以下因素有关:
∙
∙
攻击者落后于诚实节点链的距离攻击者出块的概率
因此,攻击者只能从这两个方面攻击。
根据白皮书中的数据,我们可以得出3个参数
z=攻击者落后于诚实节点链的距离
q=攻击者出块的概率
P=攻击者追上诚实节点的概率
当攻击者出块的概率(q)固定时,攻击者落后于诚实节点链的距离(z)越大,攻击者追上诚实节点的概率(P)越小
当攻击者出块的概率q=0.3时,说明攻击者的算力增强,但是随着攻击者落后于诚实节点链的距离(z)增大,攻击者追上诚实节点的概率(P)也在呈指数递减。
白皮书中还指出:
如果想让攻击者追上诚实节点的概率(P)值维持在0.1%以下,如果攻击者出块的概率(q)是10%,攻击者落后于诚实节点链的距离(z)等于5就可以了。
因此,为什么说比特币网络上要等待6次确认之后,才可以说转账成功,因为达到6个确认之后,攻击者追上诚实节点的概率就非常小了。
但是如果攻击者制造下个区块的概率大于诚实节点制造下个区块的概率,则要考虑51%的攻击了,这是另一个话题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 比特 白皮书 计算