我的账户
链视界

关注数字经济、区块链

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

链视界 门户 资讯

如何在BSV网络上双花零确认交易

前两天国外有个网友reizu发帖,说自己成功在BSV网络上双花了零确认交易。让我们一起看看他是如何实现的。

在说明reizu如何双花之前,我们先来定义一下零确认交易和双花。

什么是零确认交易?就是所有已经开始广播,但仍未被挖矿节点打包到区块里的交易。

什么是双花呢?就是同一笔加密货币,重复使用。更具体一点来说,即使用相同的UTXO构造两笔交易,发送给两个不同的节点,同一笔币,成功花出去两次。

这里要说一下的是,节点验证交易的时候有一个原则,叫做“先到先得”。即按照时间验证交易,相同两笔交易,节点会认为第二笔是不合法的。

reizu自己编写了一个工具izubitcoin,用于连接网络里的所有节点,以便同时向这些节点发送交易。拿BSV网络为例,网络里现在大约有450个节点。

1-同时构造两笔交易,一笔交易T1发送到其中300个节点,另外一笔交易T2(双花)发送到另外150个节点。节点肯定会相互广播,但是会相互排斥。已经接收T1的节点,会排斥T2,反过来亦是如此。

2-如果T1发给了大部分非挖矿节点,而T2(双花交易)发给了小部分挖矿节点,那么网络大部分节点只看到T1,但实际上被打包到区块里的是T2。这就可以实施一次双花。

那么如何确定哪些是挖矿节点呢?

3-作者reizu修改了他的工具izubitcoin,向所有的BSV节点发送一笔带有随机数据的交易,用于记录所有交易被发送到哪个节点,以查看哪笔交易被打包到了下个区块里。Reizu用这个方法定位到了BSV的挖矿节点:

34%的算力集中在一个节点上。
59%的算力集中在两个节点上。
68%的算力集中在三个节点上。
75%的算力集中在四个节点上。

4-   因此,如果BSV网络有450个节点,可以把交易T1发送给446个节点,T2发送给4个挖矿节点。T2被打包的概率就是75%。

Reizu说在BSV网络上利用这个方法成功进行了多次双花,并给了他的结论:

可以通过节点的数量,控制成功的概率。如果你想要保证100%成功,那么就发送交易到20个节点。

把T2发送到6个节点,被检测到双花的概率很小。作者使用APP POP!进行测试,这款应用连接了10个节点检测双花交易,但是并没有成功。这是符合逻辑的,如果BSV网络有450个节点,检测到双花交易的概率大约是14%。

检测双花交易的难度与网络节点的数量成正比。

所有交易的手续费都要大于1聪/字节。

执行双花交易的时间不能超过20秒

发起双花交易的成本几乎为零,只需要连接网络,和一个中高等的路由器。

即使所有的矿工都是诚实的,这个方法也奏效。

在这里补充一点,作者这里说的双花攻击属于非算力用户双花,实际上还有一种双花,叫做算力用户双花。即针对零确认交易的双花攻击是由矿池发起的。攻击者可以直接把T2隐藏起来,不广播,只存在内存池里,等挖出区块再打包到区块里。

最后作者认为,解决双花问题很简单。当节点收到双花交易的时候,需要相互沟通(发送proof)。BU在Github提出过这样的方案BUIP088。

另外一个方法是连接到更多的节点,或者公开挖矿节点。不过作者认为这两个方法都并不高效,这样会让钱包和支付处理器变得更加复杂。更好的方法是改进协议,简化检测双花的过程,让SPV钱包也能在智能手机上完成检测。

总结

作者能够成功双花,主要原因在于节点相互之间的联系不够紧密且BSV是个新生的网络,这也说明为保证支付安全商家应该与挖矿节点保持联系。

(扫二维码 入群交流)

上一篇:
什么是投机? 投资和投机的区别发布时间:2018-12-11
下一篇:
加密数字货币和区块链价值—讲透区块链到底有什么用发布时间:2018-12-11
区块链百科
微信扫码
行业动态资讯早知道

Copyright © 2022 链视界 粤ICP备2021100744号   Designed by 链视界