导致新加密货币的硬分叉为加密交换运营商带来了独特的机遇和挑战。Poloniex在最近的Bitcoin Cash硬叉之后面临的一个挑战是保护我们的客户免受重播攻击。由于SV链后面的开发团队选择在分叉后近两周才实施重放保护,因此Poloniex工程师的任务是设计解决方案。

社区中的许多人对Poloniex如何应对这一特殊挑战感到好奇,因此我们决定提供一些见解。

什么是重播攻击?

虽然名称暗示某种恶意行为,但重放攻击可能是由于节点在硬分叉后经历的混乱而发生的。这种混淆可能导致代币持有人无意中在其中一条新链上发送交易,从而导致资金损失。

在硬分叉之前,比特币现金节点都在监听新的有效比特币现金交易。当节点听到新交易时,它会执行数学测试,以便验证发件人是否是资金的真正所有者。如果此数学测试告诉节点该事务是有效的,它将告知网络中的其他节点,并且该事务最终将被添加到区块链中。

在硬分叉之后,一些节点运营商立即升级到比特币ABC链,一些运营商升级到SV链。当一个链上的节点听到另一个听起来有效的链的事务时,会发生重放攻击,因此它会将其传递给网络的其余部分。例如,Alice向Bob发送了1个比特币ABC,最终也无意中向Bob发送了1个比特币SV。她的交易在第二条链上得到“重播”。

为什么会这样?

要理解为什么会发生这种情况,我们必须看看比特币现金交易的内幕。

如果Alice有一个15比特币现金的钱包,她没有15个独立的BCH - 她拥有多块比特币现金,称为输出,最多可加15比特币现金。例如,Alice的15 BCH可能是两个输出的组合:10 BCH和5 BCH。在区块链拆分后,比特币现金硬叉之后,爱丽丝现在在两个不同的区块链上具有相同的输出:10个BCH-ABC,5个BCH-ABC和10个BCH-SV,5个BCH-SV。可以使用相同的私钥来移动所有这些输出。

为简单起见,假设Alice想要将她的5 BCH-ABC发送给Bob(尽管交易通常涉及多个输出的组合)。使用她的私钥,她签署了一条消息,说明将此BCH- ABC的特定输出发送给Bob。此时,BCH-ABC节点可以执行我们前面提到的数学测试,证明Alice拥有私钥来发送此事务。比特币SV节点“偷听”此事务时出现问题。比特币SV节点可以执行相同的数学测试,并得出结论,Alice使用她的私钥将5 BCH SV的特定输出发送给Bob。

Alice的数字签名在两个链上都有效。即使她只打算向Bob发送5个BCH-ABC,她也最终还向他发送了5 BCH SV的匹配输出。

如何防止重放攻击

如您所见,重放攻击可以在硬分叉后立即发生,因为每个人在两个不同的链上都有相同的输出。在一条链上移动输出的数字签名能够在另一条链上移动匹配的输出。

然而,由于两个链条都在叉子之后单独开采,因此通过新的coinbase奖励引入了新的独特输出。ABC链上的硬币基础奖由SV链上不存在的输出组成,反之亦然。这些后叉输出是防止重放攻击的关键。

比方说,吉米是比特币现金矿工。如果在分叉后,Jimmy开始挖掘BCH-ABC并获得新创建的BCH-ABC的币基奖励,这些将是SV链上不存在的输出。如果他将这5个BCH-ABC发送给Alice,她可以将它们发送给Bob而不用担心重播攻击。如果比特币SV节点无意中听到此事务,它将无法识别Alice尝试发送的输出,因此没有比特币SV会移动。

使用post-fork输出防止重放攻击

在分叉之后,Poloniex立即开始收集一小组后叉输出或UXTO。如果Alice是Poloniex的客户并且要求撤销5 BCH-ABC,我们将混合至少1个后叉输出。如果BCH-SV节点无意中听到我们的事务,则包含post-fork输出将阻止SV节点识别事务。数字签名将移动ABC链上的指定输出而不是SV链上的指定输出,因为这些特定输出并非全部存在于SV链上。

通过采用包括1个后叉输出以及所有BCH-ABC和BCH-SV撤销的方法,Poloniex能够充满信心地操作交易所及其客户不会因重放攻击而遭受资金损失。


文章来自Connor Dempsey

致March Boorstin领导BCH硬叉的工程设计,并与Anders Brownworth一起为本文提供了技术见解。

在BCH硬分叉后防止重放攻击-1的更多相关文章

  1. 在BCH硬分叉后防止重放攻击-2

    重放攻击原理和防范措施——如何安全分离BCH的分来源:巴比特018-11-18 16:49:37 热度 12390 第0章 引言 即将面临的比特币分裂,如何保证你的币在分裂后肯定留下两种币?一个重点要 ...

  2. BCH硬分叉,BitcoinABC强势逆袭BitcoinSV

        最近币圈讨论最多的就是BCH的硬分叉,今天凌晨BCH硬分叉在众多币圈大佬关注下落下帷幕,此次分叉大站BitcoinABC强势完胜BitcoinSV.吴忌寒在推特上表示:祝贺!在这个新的区块之后 ...

  3. 硬分叉后,BCH的钱包解决方案

    上周BCH进行了硬分叉,分叉成了两条链:BCH和BCHSV,对于分叉后的BCH如何进行交易呢?钱包是否有相关的危险因素? 由于分叉后的两条链没做重放保护,可能导致一条链上发起的交易,在另一条链上做重放 ...

  4. BCH硬分叉在即,Bitcoin ABC和NChain两大阵营PK

    混迹币圈,我们都知道,BTC分叉有了BCH,而近期BCH也将面临分叉,这次分叉将是Bitcoin ABC和NChain两大阵营的较量,最后谁能成为主导,我们拭目以待. 比特币现金(BCH)的价格自上周 ...

  5. BCH/BCHABC/BCHSV分叉后重放机制小结

    1. 不过,在谈重放保护之前,我们需要先了解一下重放攻击(又称重播攻击.回放攻击).实际上,重放攻击在互联网行业里就有过出现,也是计算机世界黑客最常用的攻击方式之一,它是指攻击者发送一个目的主机已接收 ...

  6. what??|诞生才一年的BCH竟面临硬分叉的抉择

    BCH才刚过一周岁生日一个星期,BCH社区的主力之一Bitcoin ABC(BCH全网接近三分之二节点运行的软件系统由Bitcoin ABC开发)就搅动了社区的涟漪.8月8号,Bitcoin ABC公 ...

  7. pre-fork 分叉 软分叉 硬分叉 前叉实现 pre-fork implementation

    https://mp.weixin.qq.com/s/wIDTs2J1ZkLkAEHqQnkYnw 什么是分叉?为何对区块链发展至关重要? Uselink公有链 Uselink公有链 2018-12- ...

  8. ethereum/EIPs-607 Hardfork Meta: Spurious Dragon硬分叉相关

    eip title author type status created requires 607 Hardfork Meta: Spurious Dragon Alex Beregszaszi Me ...

  9. 正本清源区块链——Caoz

    正本清源区块链 说明:以下内容整理自Caoz的<正本清源区块链>,如有不妥,请联系我修改或删除. 简介 不讨论炒币!不讨论炒币!不讨论炒币! 本课程内容分为两部分: 第一部分,烧脑篇,介绍 ...

随机推荐

  1. Pronunciation – The Definitive Guide to the Top 100 Words in American English

    Pronunciation – The Definitive Guide to the Top 100 Words in American English Share Tweet Share Tagg ...

  2. How to Pronounce the Word ARE

    How to Pronounce the Word ARE Share Tweet Share Tagged With: ARE Reduction Study the ARE reduction. ...

  3. 遍历DOM树,链式操作

    如果需要在同一个选取结果上使用多个jQuery方法,可以同时列出这些方法,并用.隔开,如下面的代码. 1 $("#one").hide().delay(500).fadeIn(15 ...

  4. [Linux]CentOS7搭建Nginx + MySQL + PHP

    ------------------------------------------------------------------------------------- Nginx安装参考地址:ht ...

  5. [Linux]Linux下动态安装PHP扩展的一般方法(图)

    ---------------------------------------------------------------------------------------------------- ...

  6. MyBatis动态SQL中trim标签的使用

    My Batis 官方文档 对 动态SQL中使用trim标签的场景及效果介绍比较少. 事实上trim标签有点类似于replace效果. trim 属性 prefix:前缀覆盖并增加其内容 suffix ...

  7. 24 week 4 安装 docker

    安装docker 出现问题 解决办法https://blog.csdn.net/VOlsenBerg/article/details/70140211 发现链接超时,然后就https://blog.c ...

  8. eclipse git 拉取内容

  9. Numpy知识(三)

    ndarray的花式索引. 正负数索引,正数就是从0开始的下标正向寻找,负数是-1开始的负向寻找. arr[[1,5,2,6],[0,3,1,2]]:拿取arr[1,0],arr[5,3],arr[2 ...

  10. windows上使用metastore client java api链接hive metastore问题

    https://github.com/sdravida/hadoop2.6_Win_x64 下载winutils.exe 添加到path中