11月28日,双重花费测试网站doublespend.cash的创建者公布了比特币现金网络上的双重花费测试结果。他表示,在第一笔交易之后的一秒钟内,1,105次双重花费中只有1次成功。该网站的创建者强调指出,在大多数情况下,“只有同时提交,双花交易才能成功。”
零确认确认交易和双花交易
零确认交易是比特币被设计之初附带的一个功能。比特币的区块确认时间是10分钟,也就是说一笔交易从付款到收账至少需要10分钟
时间才能完成,而面临算力波动时甚至需要1到2个小时才能完成交易,这就对比特币的支付体验相当不友好。由此社区也提出了零确认交易的模式,简单来说,零确认交易(Zero Confirmation Transaction )就是指交易卖家不等待该笔交易被区块链网络节点确认,即交付出售的东西。
在这一过程中,并不是百分百安全,恶意用户有可能使用双花交易,或称双重支付,来攻击网络。双花,指的是在数字货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况。而在零确认的情况,因为交易信息并没有被全网所有节点所确认,所以有几率出现双花交易。双花交易严重威胁了区块链网络的安全性。
零确认交易的即时性非常关键,还有像双花证明(预防双花交易的系统)这样的概念可以增强即时交易,比特币现金社区对此一直很感兴趣。本质上,双花交易是指恶意用户尝试将同一BCH花费到两个不同的地址。即使这种情况不常见,在BTC,BCH和BSV等数字货币上也有可能会出现双花交易。网站doublespend.cash一直在Bitcoin Cash区块链上的测试和收集有关双花交易的信息。
一位名叫达格瓦尔(Dagurval)的Reddit用户(一位比特币XT软件开发商和数据站点的创建者)在上周表示说,如果恶意用户想要发起双花交易,两笔交易必须同时发送。doublespend.cash开发者也在Reddit上表示:“在1105次双重支出尝试中,只有1次在广播1秒后成功完成。” Dagurval告诉BCH支持者说:“在图标里‘首次看到和第二次看到之间的时间'显示了看到第一次交易和两次消费之间的时间差。’”
“它表明,在大多数情况下,两笔交易只有同时提交,双花才能成功。这也表明矿工尊重“第一眼”原则。(当双花发生时,全网可以只接受双花中第一个被收到的交易)
社区观点
在数据发布之后,BCH社区讨论了双重支付的风险,并讨论了双花交易与商人之间的关联。一位用户评论说:“很高兴知道(这条消息),这意味着0-conf(零确认交易)非常安全,双花证明将使其更安全。”其他人则没有那么确信,他们说:“除非你能衡量其中(数据中)有多少是故意发起的双花攻击,否则无法以某种方式确认这一数字的安全性。”
Reddit用户杰斯奎特(Jessquit)回应安全隐患时写道:“ (数据)意味着,愿意等待三秒钟以查看是否出现双花交易的商人在接受未经确认的低价值交易方面大约有99.9%的安全。”Dagurval的doublespend.cash统计数据也使人们讨论了双重花费证明的想法,在过去的几年中,一些BCH开发人员一直在尝试这种想法。
双花证明机制
在2015年,比特币开发者 Mike Hearn 发表了一篇论文《Double spending in Bitcoin and how to make it harder》。在这篇论文里,他提到了一种中继方案,来解决双花问题。在该方案中,当比特币节点发现双花交易时,只把最先到达的交易向全网其它节点中继,这也就是最初的“第一眼”原则。比特币的早期开发者 Gavin Andresen 和 Tom Harding 实现了这个功能,并把这个功能集成到了早期的比特币系统中,不过遗憾的是这个方案被集成进比特币系统后又被比特币团队移除了。
在比特币核心开发团队把这个功能从比特币移除后,Hearn 和 Harding 把这个功能留在了 Bitcoin XT中。Tom Harding 是 Bitcoin XT 的开发领队。他一直在研究并和 BCH 社区讨论这个问题。在东京举行的“Satoshi Vision Conference”大会上,他发表了题为“Native Respend Resistance”的演讲,再次提到了一种解决双花问题的中继系统。
除此以外,“Autonomous University of Barcelona”大学的信息和通信工程系的研究员,发表了一篇题为《Double-spending Prevention for Bitcoin Zero-Confirmation Transactions》的文章。在这篇论文里,作者提到采用一种特殊的交易输出方式来抑制发起双花的动机:如果两个不同的签名被用于给同一笔交易输出进行签名(双花)那么用来给这笔交易签名的私钥将被曝光。
Openbazaar 的开发者 Chris Pacia 给出了一个名为“Double Spend Alters”的方案,提出在 BCH 全网中一旦发现双花交易,立刻在全网发布报警信息。不过他也指出,这个方案目前有局限,无法保证能发现所有的双花交易,因此技术上尚不太成熟。
Bitcoin Unlimited 团队提出了名为“Double Spend Proof Creation and Forwarding.”的方案。该方案中,一旦任何节点收到双花交易,将创建一个双花交易的证明,其它节点可对这个证明进行验证并向全网传播。
BCH社区开发
除了这些已有的抵制双花交易的方案,BCH社区还有很多被视为大杀器的方案正在开发中。Avalanche雪崩共识协议是社区开发工作的重点,目前开发已经超过10个月。简单来说,Avalanche共识协议为网络上的节点提供了一种新的方式,可以在两个冲突的交易之间进行选择,并就下一个区块中应该包含哪一个交易达成共识。Avalanche的作用是大幅提升交易的确认速度。把BCH交易确认的时间从当前的10分钟左右提升到2到3秒。Avalanche通过“预共识”来保持内存池的同步,来避免快速双花交易;通过“后共识”帮助加入网络的新节点确定其他人正在关注哪条链,并且将避免同步到由51%攻击者生成的链,来增强对51%攻击的防御能力。
也可以把Avalanche协议视为零确认交易的修复补丁,Avalanche协议可以实现无任何副作用的零确认交易,99.9%也将变成100%的安全。对于BCH即时的用户体验来说,Avalanche协议的确是大杀器级应用。从时间上来看,目前Avalanche协议开发已经接近尾声,“预共识”的开发也已经进行到第二阶段。