原文精选:实践中,节点往往用延展它们在点对点网络里最早听到的区块这种启发式的方法。但这不是一个无懈可击的法则。在一些情况下,因为网络延迟,很可能它们先听到的区块实际上是后被创造出来的。所以下一个提议节点至少是有可能选择在那个包含双重支付的区块上延展。爱丽丝甚至还可以贿赂下一个提议节点来加大这个可能性。不管出于什么原因,如果下一个节点真的接受了这个双重支付的区块,那么这条链将比包含支付给鲍勃交易的那条链更长。基于此,下一个诚实节点就有可能去延展这条链,因为它更长。随着这个过程继续,这条包含双重支付的链会更有可能成为长期共识链的一部分。相反,那个包含爱丽丝支付给鲍勃交易区块的链会被网络完全遗忘,成为一个孤块(orphan block)。
我们现在从商家鲍勃的立场重新考虑整个情况。理解鲍勃如何保护自己不受双重支付攻击是理解比特币安全措施的重要的一部分。当爱丽丝广播她向鲍勃支付的交易时,鲍勃也在网上听着,鲍勃在下一区块被创建之前就能听到这笔交易。如果鲍勃比我们前面描述的更加草率的话,他可以在网上完成检查程序,并允许爱丽丝此时下载软件。这叫作零验证交易(zero confirmation transaction)。这将导致一个比前面所说的更加基础的双重支付攻击。前面所述情况,为了实现双重支付攻击,我们需要假设一个恶意黑客控制了发起下一个区块的节点。
读书笔记:
1,如果数字签名机制是安全的,比特币就没法被窃取,因为它背后的密码学基础非常牢靠。
2,如果爱丽丝不把鲍勃发起的任何交易放入她提议的区块,也会有下一个诚实节点发起区块的时候放进去。
原文精选:但如果鲍勃允许爱丽丝在没有收到区块链一条确认信息的情况下就下载软件,那么爱丽丝可以立刻广播一条双重支付交易,一个诚实节点就有可能把这个交易放进下一区块,而不是支付给鲍勃的那笔交易。见图2.3。
注:这是一个从商家鲍勃的立场来看爱丽丝做的双重支付尝试。为了保护自己免受双重支付攻击,鲍勃应当等爱丽丝向他支付的交易被区块链包含进去,并且多等几次确认。
另一方面,一个谨慎的商家甚至在看到交易被包含在一个区块后仍然不会允许爱丽丝下载软件,而是继续等待。如果鲍勃看到爱丽丝成功发起了双重支付的攻击,他会意识到那个含有爱丽丝向他支付的交易的区块有可能已经被丢弃。他应该放弃这个交易,不让爱丽丝下载软件。如果在尝试双重支付的情况下,恰巧下几个节点还是建立在爱丽丝向鲍勃支付交易的区块上,那鲍勃就相信这笔交易会被纳入长期共识链。
读书笔记:
1,如果数字签名机制是安全的,比特币就没法被窃取,因为它背后的密码学基础非常牢靠。
2,如果爱丽丝不把鲍勃发起的任何交易放入她提议的区块,也会有下一个诚实节点发起区块的时候放进去。
原文精选:总而言之,一个交易得到的确认越多,它被纳入长期共识链的概率就越大。如前文所述,诚实节点总是选择延展最长的共识链。因为长链增长更多,那条含有双重支付的短链追上长链的概率会变得越来越小。在只有一小撮恶意节点的情况下,这个结论尤其正确。因为短链要想赶上,这些恶意节点需要被一直连续选中。
事实证明,双重支付攻击成功的概率将随着确认的数目的增加而指数级降低。所以,如果你感兴趣的交易已经收到k个确认,双重支付攻击交易被纳入长期共识链的概率以关于k的一个函数指数级下降。在比特币生态系统里,最常见的方法是等6个确认。并不是6这个数字有什么特殊意义,只不过,这样在你等待的时间与确认你所感兴趣的交易被纳入长期共识链之间做了很好的平衡。
读书笔记:
1,如果数字签名机制是安全的,比特币就没法被窃取,因为它背后的密码学基础非常牢靠。
2,如果爱丽丝不把鲍勃发起的任何交易放入她提议的区块,也会有下一个诚实节点发起区块的时候放进去。
总结起来,防止不正当交易完全是用密码学的方法。但这些方法被共识所加强,意思是一个节点如果想放进一个密码学上不正当的交易,这个交易不会被纳入长期共识链的唯一原因是绝大多数的节点是诚实的,不会把一个不正当交易放进区块链。另外,防止双重支付攻击完全依赖于共识,密码学不起任何作用。从密码角度来看,这两个交易都是正当有效的。但共识可以能决定哪个被放进长期共识链。最后,你无法百分之百保证你感兴趣的交易被放进了长期共识链。但指数级概率保证了不错的结果,6笔交易过后,实质上你没有犯错的可能了。
一叶之秋带你一分钟速读经典书籍,每天一分钟(只需阅读读书笔记部分),天天获新知。
作者:全职高手一叶之秋
链接:https://www.jianshu.com/p/9fb55c1e8cb6
共同学习,写下你的评论
评论加载中...
作者其他优质文章