在BCH硬分叉后防止重放攻击-1
导致新加密货币的硬分叉为加密交换运营商带来了独特的机遇和挑战。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的更多相关文章
- 在BCH硬分叉后防止重放攻击-2
重放攻击原理和防范措施——如何安全分离BCH的分来源:巴比特018-11-18 16:49:37 热度 12390 第0章 引言 即将面临的比特币分裂,如何保证你的币在分裂后肯定留下两种币?一个重点要 ...
- BCH硬分叉,BitcoinABC强势逆袭BitcoinSV
最近币圈讨论最多的就是BCH的硬分叉,今天凌晨BCH硬分叉在众多币圈大佬关注下落下帷幕,此次分叉大站BitcoinABC强势完胜BitcoinSV.吴忌寒在推特上表示:祝贺!在这个新的区块之后 ...
- 硬分叉后,BCH的钱包解决方案
上周BCH进行了硬分叉,分叉成了两条链:BCH和BCHSV,对于分叉后的BCH如何进行交易呢?钱包是否有相关的危险因素? 由于分叉后的两条链没做重放保护,可能导致一条链上发起的交易,在另一条链上做重放 ...
- BCH硬分叉在即,Bitcoin ABC和NChain两大阵营PK
混迹币圈,我们都知道,BTC分叉有了BCH,而近期BCH也将面临分叉,这次分叉将是Bitcoin ABC和NChain两大阵营的较量,最后谁能成为主导,我们拭目以待. 比特币现金(BCH)的价格自上周 ...
- BCH/BCHABC/BCHSV分叉后重放机制小结
1. 不过,在谈重放保护之前,我们需要先了解一下重放攻击(又称重播攻击.回放攻击).实际上,重放攻击在互联网行业里就有过出现,也是计算机世界黑客最常用的攻击方式之一,它是指攻击者发送一个目的主机已接收 ...
- what??|诞生才一年的BCH竟面临硬分叉的抉择
BCH才刚过一周岁生日一个星期,BCH社区的主力之一Bitcoin ABC(BCH全网接近三分之二节点运行的软件系统由Bitcoin ABC开发)就搅动了社区的涟漪.8月8号,Bitcoin ABC公 ...
- pre-fork 分叉 软分叉 硬分叉 前叉实现 pre-fork implementation
https://mp.weixin.qq.com/s/wIDTs2J1ZkLkAEHqQnkYnw 什么是分叉?为何对区块链发展至关重要? Uselink公有链 Uselink公有链 2018-12- ...
- ethereum/EIPs-607 Hardfork Meta: Spurious Dragon硬分叉相关
eip title author type status created requires 607 Hardfork Meta: Spurious Dragon Alex Beregszaszi Me ...
- 正本清源区块链——Caoz
正本清源区块链 说明:以下内容整理自Caoz的<正本清源区块链>,如有不妥,请联系我修改或删除. 简介 不讨论炒币!不讨论炒币!不讨论炒币! 本课程内容分为两部分: 第一部分,烧脑篇,介绍 ...
随机推荐
- How to Pronounce the Word OR
How to Pronounce the Word OR Share Tweet Share Tagged With: OR Reduction Study the OR reduction. Th ...
- Delphi XE3通过ADOConnection 连接 MySQL 5.5.27 数据库
Delphi XE3通过ADOConnection 连接 MySQL 5.5.27 数据库 unit Unit1; interface uses Winapi.Windows, Winapi.Mess ...
- ubuntu16 安装openssh-server 一直安装不上Unable to correct problems, you have held broken packages
zengqi@zengqi:~$ sudo apt-get install openssh-server Reading package lists... DoneBuilding dependenc ...
- 1.2、CDH 搭建Hadoop在安装之前(CDH基于包的安装所需的权限)
CDH基于包的安装所需的权限 以下部分描述了使用Cloudera Manager进行基于软件包的CDH安装的用户权限要求.这些要求是安装和管理包和服务的标准UNIX系统要求. 所需特权 sudo由Cl ...
- php支付宝接口 的使用
下载地址(java/php都有) https://doc.open.alipay.com/doc2/detail?treeId=66&articleId=103571&docType= ...
- cdnbest如何检查https证书是否有效
注意: 用此方法检查ssl证书是否有效,此帐号下必须有有效的cdn节点,因为这个证书是要通过底层的cdn节点来检测的 1. 在站点设置中如下图点打开添加ssl证书 2.加完证书后点检查,打勾就表示证书 ...
- 检查WMI协议是否通的
在APM上的运行执行“wbemtest”,然后在上面的root\sivm前面加RPC不通的机器,先查WMI协议是否是通的
- metasploit framework(十三):FTP扫描
设置目标IP 查看是否支持匿名登录 获取到版本信息 使用ftp登录模块 搜索刚才获取到的版本信息,找到一个针对这个版本的漏洞利用代码
- mac通过命令行获取证书和配置文件过期时间
背景:ios打包证书的profile配置文件过期了,导致以前已经打完的测试包不能安装.所以需要加上检测机制,在打包时提示证书是否将要过期,如果要过期了给出提示 方案: 1.查找profile配 ...
- 安装 pygame,找不到Python version 2.7
今天在安装pygame时出错,提示“Python version 2.7 required, which was not found in the registry”,经过网上查找资料后发现只需要新建 ...