“不过也不怪你会中招,你这次遇到的是双花攻击。”
“艾弗里斯曼,别光笑了,双花攻击到底是怎么回事?这种攻击我还是第一次碰到。”
林枫压住内心的不甘,谦虚地请教。
“别急,我给你解释。”艾弗里斯曼开始耐心地讲解,“比特币的核心原理之一就是去中心化,交易一旦完成就会被永久记录在区块链上,理论上无法篡改。这也是比特币如此受欢迎的原因之一。但这个设计有个漏洞,黑客正是利用这个漏洞发起了双花攻击。”
艾弗里斯曼继续说道:“双花攻击的意思很简单,一张钞票不能花两次,双花攻击就是攻击者尝试用同一笔比特币进行两次支付。你可以想象,一张钞票原本只能使用一次,但如果在比特币的网络中,黑客能够利用网络延迟和交易确认的空档期,将同一笔比特币转账给两个不同的地址,就形成了双花攻击。”
林枫越听越疑惑:“那这个‘Ки6ерТень’到底是怎么操作的?他是怎么利用双花攻击把我那笔比特币拿走的?”
“很可能是通过‘竞赛攻击’实现的。”艾弗里斯曼停顿了一下,语气变得更加严肃,“比特币交易确认是有一个时间延迟的,黑客通过这个时间差实现了攻击。”
林枫心中一惊:“竞赛攻击?这又是什么攻击方式?”
艾弗里斯曼耐心解释道:“双花攻击通常有两种手法,一种是竞赛攻击,另一种是‘51%攻击’。对于普通用户来说,遇到51%攻击的可能性很小,因为这种攻击需要控制超过一半的算力,实际上只有大型矿池或者准官方力量才有可能发动这种攻击。可是你那才100比特币,根本不值得发动这种级别的攻击。所以,我们可以把注意力集中在竞赛攻击上。”
“竞赛攻击并不需要过多的算力。黑客利用比特币交易确认时间的空档期,通过向两个不同的地址同时发出转账请求,然后依靠网络延迟和计算速度的差异实现交易的劫持。”艾弗里斯曼进一步解释道,“比如说,在你和对方确认交易的同时,黑客通过自己的节点向你的钱包地址和他自己控制的钱包地址提交了相同金额的交易。接着,他利用更强的算力,生成了一个包含自己交易的分支链,超过了原链的长度,最终他自己控制的链识别速度更快,比特币网络认为他自己控制的链才是‘真实链’,导致你那边的交易被‘替换’掉了。这种操作虽然也需要算力,但只要他的算力比你的强并精确把握交易时机就足够了。”
林枫顿时明白了:“原来如此!所以说,那个黑客通过这条分支链把交易‘替换’掉了,导致我无法收到比特币?”
艾弗里斯曼点了点头:“对。实际上,在比特币网络中,确认过程是分阶段的。通常,交易完成后需要经过六次确认,确保交易的有效性。在这个过程中,交易并不是立即被确认的,而是在确认过程中,黑客利用了确认间隙,使得自己的交易成功替代了你的交易。”
“那就是说,我明明看到100个比特币即将到账,但实际上那只是一个假象?”林枫疑惑地问道。
艾弗里斯曼笑了笑:“正是如此。通常,比特币的确认需要几分钟甚至更久,这段时间是黑客实施竞赛攻击的最佳时机。你看到的‘即将到账’其实并不代表交易已经完全确认,而是系统尚未完成最终确认,黑客利用这一点将交易劫持。”
林枫若有所悟:“明白了,竞赛攻击就是利用网络确认时间的空隙,向多个地址提交相同的交易,最终通过算力竞争选择其中一个作为有效交易。而我的那个恰巧就在这个确认空隙中被‘替换’掉了,是这样吗?”
“是的,可以这样理解。”艾弗里斯曼说道。