『学概念找员外』双重支付攻击(二)

在比特币的网络中,一个新的节点往往会被添加到一条相对更长的链上,更长的链意味着之前所有的交易被认可和真实的可能性更大。但是在一些特殊情况下,比如网络延迟,很可能之前被确认的区块是后被创造出来的。所以下一个被生产出的节点是有可能添加在那个有双重支付的区块后面的。员外为了提高这次双重支付攻击的成功率,就会拿出一部分比特币去贿赂下一个提议节点来加大这个可能性。

总之如果下一个节点真的接受了这个双重支付的区块,那么这条链就会比包含支付给天宇比特币的交易的那条链更长。然后下一个诚实节点就更有可能把下一个区块追加到这条分支上,因为它更长,意味着更可靠。随着这条链越来越长之后,那个包含了双重支付攻击的交易就成了其中的一部分。反而原本那个正常的交易却被比特币网络遗忘,最终成为一个孤块(orphan block)

如何防止被双重支付攻击

如果真的可以发起双重支付攻击的话,那么作为A9段位的天宇来说,是不可能不知道该如何防范的,所以天宇就需要针对这种情况,来保护自己的资产不受侵犯。所以在员外广播他向天宇支付的交易时,天宇就会去网上听着,一般在下一个区块被创建之前就能听到这笔交易被广播了。当然天宇也可以在网上完成检查程序,同时让员外也下载一个此软件,共同验证交易是否成功。但如果天宇允许员外在没有收到区块链一条确认信息的情况下就下载软件,那么员外可以立刻广播一条双重支付交易,一个诚实节点就有可能把这个交易放进下一区块,而不是支付给天宇的那笔交易。

另一方面,天宇甚至在看到交易被包含在一个区块后仍然不会允许员外下载软件,而是继续等待。如果天宇看到员外成功发起了双重支付的攻击,他会意识到那个含有员外向他支付的交易的区块有可能已经被丢弃。他应该放弃这个交易,不让员外下载软件。如果在尝试双重支付的情况下,恰巧下几个节点还是建立在员外向天宇支付交易的区块上,那天宇就相信这笔交易会被纳入长期共识链。

总而言之,一个交易被其他诚实的区块确认的越多,它被纳入长期共识链的概率就越大。如前文所述,诚实节点总是选择延展最长的共识链。因为长链增长更多,那条含有双重支付的短链追上长链的概率会变得越来越小。节点越多,发起51%攻击的难度也就越大,比特币的安全性也就越高。

事实证明,双重支付攻击成功的概率将随着确认的数目的增加而指数级降低。所以,如果你感兴趣的交易已经收到 n 个确认,双重支付攻击交易被纳入长期共识链的概率会以关于 n 的一个函数指数级下降。在比特币生态系统里,最常见的方法是等6个确认。并不是6这个数字有什么特殊意义,只不过,这样在你等待的时间与确认你所感兴趣的交易被纳入长期共识链之间做了很好的平衡,让攻击变得不可能。

最后

其实如果想要防止不正当交易,必须完全使用密码学的方法。但这些方法被共识所加强,意思是一个节点如果想放进一个密码学上不正当的交易,这个交易不会被纳入长期共识链的唯一原因是绝大多数的节点是诚实的,不会把一个不正当交易放进区块链。另外,防止双重支付攻击完全依赖于共识,密码学不起任何作用。从密码角度来看,这两个交易都是正当有效的。但共识可以能决定哪个被放进长期共识链。最后,你无法百分之百保证你感兴趣的交易被放进了长期共识链。但指数级概率保证了不错的结果,6笔交易过后,实质上你没有犯错的可能了。

你可能感兴趣的:(『学概念找员外』双重支付攻击(二))