学习区块链的重难点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DanielDingshengli/article/details/86358332

1.区块链为什么不可以篡改

在这里插入图片描述
**解释:**区块链的哈希运算可以有效地避免碰撞(生成相同的哈希值),那么你修改区块链的数据就要改掉存储在下一个区块链(A)中的哈希指针,而下下个区块链(B)的指针即和A的哈希值有关也和自己的数据有关,如下图:

在这里插入图片描述
所以如果要篡改,那就要一直改下去,问题来了,其他节点和自己电脑里的后几个哈希指针的值一比对就知道了,简单快速。

2.如何防止双花攻击

双花攻击的产生:
在这里插入图片描述
A支付给B一份未花费的钱,全网广播,被矿工写入区块。意外发生了,A获得了下一个区块的记账权,同时A忽略(记录A->B交易的)前一区块,将那笔未花费的钱转给自己。
在这里插入图片描述
在这里插入图片描述

计算

设想如下场景:一个攻击者试图比诚实节点产生链条更快地制造替代性区块链。即便它达到了这一目的,但是整个系统也并非就此完全受制于攻击者的独断意志了,比方说凭空创造价值,或者掠夺本不属于攻击者的货币。这是因为节点将不会接受无效的交易,而诚实的节点永远不会接受一个包含了无效信息的区块。一个攻击者能做的,最多是更改他自己的交易信息,并试图拿回他刚刚付给别人的钱。 诚实链条和攻击者链条之间的竞赛,可以用二叉树随机漫步(Binomial Random Walk)来描述。成功事件定义为诚实链条延长了一个区块,使其领先性+1,而失败事件则是攻击者的链条被延长了一个区块,使得差距-1。 攻击者成功填补某一既定差距的可能性,可以近似地看做赌徒破产问题(Gambler’s Ruin problem)。假定一个赌徒拥有无限的透支信用,然后开始进行潜在次数为无穷的赌博,试图填补上自己的亏空。那么我们可以计算他填补上亏空的概率,也就是该攻击者赶上诚实链条,如下所示[8] :在这里插入图片描述
假定p>q,那么攻击成功的概率就因为区块数的增长而呈现指数化下降。由于概率是攻击者的敌人,如果他不能幸运且快速地获得成功,那么他获得成功的机会随着时间的流逝就变得愈发渺茫。那么我们考虑一个收款人需要等待多长时间,才能足够确信付款人已经难以更改交易了。我们假设付款人是一个支付攻击者,希望让收款人在一段时间内相信他已经付过款了,然后立即将支付的款项重新支付给自己。虽然收款人届时会发现这一点,但为时已晚。 收款人生成了新的一对密钥组合,然后只预留一个较短的时间将公钥发送给付款人。这将可以防止以下情况:付款人预先准备好一个区块链然后持续地对此区块进行运算,直到运气让他的区块链超越了诚实链条,方才立即执行支付。当此情形,只要交易一旦发出,攻击者就开始秘密地准备一条包含了该交易替代版本的平行链条。 然后收款人将等待交易出现在首个区块中,然后在等到z个区块链接其后。此时,他仍然不能确切知道攻击者已经进展了多少个区块,但是假设诚实区块将耗费平均预期时间以产生一个区块,那么攻击者的潜在进展就是一个泊松分布,分布的期望值为:
在这里插入图片描述
在这里插入图片描述

赌徒破产问题

概率论所提供的有趣定理:在“公平”的赌博中,任一个拥有有限赌本的赌徒,只要长期赌下去,必然有一天会输光。
参考:https://baike.baidu.com/item/赌徒输光定理/2170192?fr=aladdin
在这里插入图片描述

3.椭圆曲线加密是怎么进行的

椭圆曲线加密

猜你喜欢

转载自blog.csdn.net/DanielDingshengli/article/details/86358332