教程网

您现在的位置是: 首页 > 项目

BCH硬分叉背后如何解决重放攻击?

BCH硬分叉背后如何解决重放攻击?
BCH硬分叉背后如何解决重放攻击?今天来说一下BCH硬分叉,去年11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。在此次此次

BCH硬分叉背后如何解决重放攻击?今天来说一下BCH硬分叉,去年11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。

在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。

何谓“重放攻击”

传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。重放攻击在任何网络通讯过程中都可能发生,是计算机世界黑客常用的攻击方式之一。主要用于身份认证过程。

而在区块链领域,重放攻击(Replay Attacks)通常出现在区块链硬分叉的时候,指的是“一条链上的交易在另一条链上也往往是合法的”。

有一个例子可以简单的说明什么是区块链中的“重放攻击”:

小A向某个不能有效识别付款(这里指不能判断是哪一笔付款)的啤酒厂买啤酒,当他把用支付宝成功付款的付款信息出示给销售员后, 销售员把啤酒给他。 然后小A又再把上次的付款信息出示给另一个销售员, 销售员又给他一份啤酒。 只要小A不断重复出示他的付款信息,就可以源源不断骗得啤酒, 这对于啤酒厂来说就是被重放攻击了,损失了无数啤酒。

就本次BCH硬分叉来说,BCH由一条链变成了两条链,在这两条链都得到支持并持续运营的情况下,另外一条分叉出来的链又产生了BSV这一资产,也就是BCH ABC和BCH SV都存在。由于没有重放保护,分叉完了之后如果不去管它,任其自然生长,这时候就会出现这样的情况:你在SV链上交易时,由于相同的地址、算法和交易格式,拿到ABC链上去重新广播,就有可能会被ABC链承认有效,从而进行相同的交易操作。攻击者一旦利用这个漏洞,不断在交易所进行充提操作(BCH SV), 就能获取额外的BCH ABC。

这就意味着,没有重放保护的BCH用户资产已经被暴露于风险之中,更严重的,还将导致共识崩塌和算力归零。

“重放攻击”源起:以太坊硬分叉

2016年7月20日晚,以太坊在第192万个区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH Classic chain,上面的代币分别称为ETH和ETC。

这两条链上的地址和私钥算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,放到另一条链上去重新广播,可能也会得到确认。

由于事先没有做好预案,很多人利用这个漏洞,不断在交易所进行ETH充提操作,获取额外的ETC。 “重放攻击”得以在区块链世界被重新定义。

受重放攻击的影响,对用户来说,以太坊目前的问题是存在的。因为ETH和ETC都有很好的经济量,而用户如果无法解决掉自己的操作被重放的可能,他想卖其中一个资产的同时保留另一个资产,要么自行进行分离,要么就只能在交易所的协助下才能实现了。

应对:先分离 再交易

既然BCH在没有重放保护的前提下已经发生分叉,被重放无法避免,那么,为了避免受损失,交易所和用户都有必要在进行新的交易之前,对所持有的BCH ABC/BCH SV进行分离。

让我们回看一下BCH升级后的两个版本:bitcoin abc 0.18.2和bitcoin sv 0.1.

Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。

SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。

由于两个版本都更新了操作码,对于已经持有BCH的用户来说,使用新的 OP code进行交易操作,应先进行分离再操作账户更为稳妥。

分离最简单有效的办法,就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。

分离两种资产后,新OPCode你就可以使用了,不会出现因被重放而导致新OPCode在BCH链上有安全隐患的情况。

在此安比(SECBIT)实验室提醒广大BCH持有者和支持ABC/BSV的交易所,在分离你/你的用户的BSV之前,为避免重放造成损失,在交易中谨慎使用新的OPCode。

如何解决比特币硬分叉后的重放攻击呢?首先它是比较难解决的要把比特币分叉之前的所有交易转化成两次交易来进行也有可能一次转化不能成功

很多人都想问如何解决比特币硬分叉后的重放攻击?那么下面就让我们来详细的为大家介绍一下.希望本篇文章可以解答大家一直以来的疑惑让大家了解到它的产生它的作用。

比特币交易的规则:将用户有权使用的若干比特币汇款地址上的之前交易的输出金额作为一次交易的输入,若干比特币收款地址上增加的交易金额作为本次交易的输出。输入金额必须大于等于输出金额,超出部分作为本次交易的手续费。手续费没有输出地址,奖励给将本次交易记账成功的矿工。

因为有时作为输出的金额超过了用户想要支付的金额。在这种情况下,比特币客户端会创建一个新的比特币地址,并把差额发送回这个地址,这就是比特币的找零机制。

比如你想从商店买一块钱的棒棒糖,你打开你的钱包,发现里面只有一张20元面值的人民币。你能支付的最小金额是多少呢?当然不是1块钱,你不能把这张20元钱的纸币撕下20分之1再交给营业员。你必须把这张20元面值的人民币全部交给收银员,然后因为你只需要支付1元钱,收银员会找给你19元。

那么以上就那么是本篇文章关于解决比特币硬分叉后的重放攻击的介绍。大家有没有更加的了解呢?希望大家阅读完全篇文章之后,会对问题有一定的了解,会解答您的疑惑。希望会对大家的工作有所帮助。那么我们下次文章再见。

硬分叉之后如何保证资产安全?硬分叉后BCH的钱包解决方案 ,BCH分叉为两条链:BCH和BCHSV,我们持续做着相关风险监测,也注意到相关交易所/钱包暂停了充提。由于分叉后的两条链没做重放保护,可能导致一条链上发起的交易,在另一条链上做重放攻击,造成相关对象的财产损失(依实际攻击场景而定)。在无重放保护的情况下,分离这两种链上资产的方法,目前社区的解决方法主要有如下两个:

1.input污染法

原理是引入了一笔非法交易的输出作为输入,那么这笔非法交易的输入将会使得这笔交易也会变为非法。 例如: 一笔交易广播到了 BCHSV 链中,引用了非法交易(在 BCH 合法,在 BCHSV 非法)的 UTXO 作为输入,那么这笔交易相当于被污染了,不会被 BCHSV 链承认,那么这笔交易就被重放免疫了;对应的,一笔交易广播到了 BCH 链中,引用了非法交易(在 BCHSV 合法,在 BCH 非法)的 UTXO 作为输入,那么这笔交易相当于被污染了,不会被 BCH 链承认,那么这笔交易就被重放免疫了。

2. 构造特有操作码交易

两条链的共识是有差别的,如果出构造一个本链合法,对方链上不合法的交易也可以进行分离,本次分叉双方的共识差别也体现在操作码上,可以在 BCH 链中,构造含有 OP_CHECKDATASIG 的输出,那么该笔交易在 BCH 上是合法的,但在 BCHSV 上是不合法的;同理在 BCHSV 链中,构造含有 OP_MUL 的输出,那么该笔交易在 BCHSV 上是合法的,但在 BCH 上是不合法的。

结合社区的方式及交易所相关工程实践经验,我们推荐使用第 1 种 input 污染法,但这需要有分叉后的 BCH 或 BCHSV 的 coinbase 交易(创币交易) UTXO 作为污染源,从这个 coinbase 交易中可以划分大量的小额 output,在用户提现时,可以将这些小额的 output 作为新交易的 input 之一来构建提现交易,从而较方便地完成分离。

另外,从工程实践上,我们也建议充提币的确认数可以适当提高,虽然目前来看两条分叉链未发生明显的攻击情况。

对于普通用户来说,等着先,不着急。

相关资料:

可行的钱包重放免疫实现方法: https://bch.club/index.php?app=team mod=Forum act=detail topic_id=685 team_id=1

哥白尼团队提供的开源工具,有效分离 BCH 和 BCHSV 两条链: https://github.com/copernet/tools/tree/master/hardfork

分叉的初次迹象出现在今年7月下旬,两个比特币现金主要开发团队针对难度调整算法的落实上产生了分歧。在ABC的开发者Amuary Sechet提出实施一个叫做Grasberg的难度调整算法之后,Bitcoin ABC(ABC)和Bitcoin Cash Node(BCHN)陷入了僵局。而这个算法主要为了解决BCH网络中的三个问题:

1. 区块产出的连续性(consistency)

2. 稳固矿工的净收益(profit margin)

3. 奖励token产出可预测化

该提案本身并不是导致两方翻脸的直接因素。但ABC确实很清晰地阐明有意在未经BCHN团队同意的情况下,单方面实施此算法。不久,两团队还举行了一次会议试图解决这个矛盾。

一开始冷静的时候大家都还有希望解决问题,但很快,随着多位参会者愤然离席,会议就变味儿了。ABC还试图妥协摒弃Grasberg算法转而用Aserti3-2算法,但大局已定,ABC的分叉依然产生。

ABC很快意识到会产生分叉,所以决定要控制BCH网络而奋发努力,并且分享了他们计划对比重奖励进行重组(coinbase)以资助ABC的未来发展。这项建议名为IFP(Infrastructure Funding Proposal)基础设施筹资提案,试图将8%的区块奖励从新开采的区块中转移到ABC的地址中,来帮助开发。ABC早在2020年5月15日就试图实施这个提案了,当时网络虽然升级成功,但是未能满足共识需求。

区块奖励的结构调整可不是闹着玩儿的,这是对激励机制、网络安全性设计的完全改变。不出意料,矿工们并没有为新提案站台。BCHN(也就是不使用IFP的那队)目前得到了84.7%的矿工支持。不出意外的话,也就是如果不对网路的哈希率进行任何重大更改的话,BCHN将成为主链。

想要了解这次奖励重构的全貌,我们必须了解比特币和比特币分叉。比特币并不会经常分叉,开发者和粉丝们都不愿意看到他无论是在容量还是什么方面的任何改变。甚至一些升级都以失败而告终。在比特币人的眼中,任何新软件或者对网路的更改都会为恶意行为者常开新的大门,也会遇到很多无法预料的网络故障。这就是人们对当前比特币网路(包括现在的很多参数如2100万枚代币供给上限,固定的发行时间等)如此信任的原因,它并不会被轻易改变。

而对于一个开发团来说,能独立完成区块奖励重组,进而将区块奖励转移到中央实体拥有的地址中去,这几乎是不可想象的。ABC的开发者老大,Amuary Sechet非常理解这一点,并且也可以很合理地假设这种改变奖励结构的决策会导致硬分叉。毕竟,分叉并不是由于单个更改或者提案引起的,是由ABC团队不愿意对别人就该提案提出的改进达成共识,而决定强制实施网络更改而引起的。

毕竟,Bitcoin Cash对硬分叉再熟悉不过了,它自己就是最著名的比特币硬分叉。按照市值计算,他目前是第五大网络。该网络每六个月进行一次升级(也就是产生新的硬分叉),分别在5月15日和11月15日进行,打开了人们提出反对意见或升级计划的窗口。例如,2018年11月15日,BCH硬分叉了Bitcoin Satoshi Vision(BSV),这个分叉的支持者们希望增加区块的容量并减少交易费用。

大多数交易所表示他们有意支持BCHN作为BCH的主链,而至于是否支持ABC,取决于分叉后的共识和用户需求。本文提供了交易所的完整列表以及他们对分叉的站队态度。

交易所列表以及就Nov 15 BCH硬分叉的态度

Binance:我们将于2020年11月15日暂停BCH的存款和提款。我们会根据香港时间2020年11月15日20:00后第一个区块的持仓快照,分别对币安链和币安智能链上拥有BCH资产的账户,按照1:1的比例进行空投,空投完成时将另行公告。如果分叉后,并没有产生社区广泛认同的分叉币,BCH BEP20/BEP2 将继续锚定BCH。

Bitgo:我们目前正在运行BCHN的节点并将会在分叉后继续支持其成为主链。所有BCH的服务会在2020年11月15日00:00 am UTC的时候暂停。

Trezor:我们会在分叉后继续支持Bitcoin ABC的实施,但我们也会基于用户利益考虑转向BCHN。分叉后,我们并不会按比例分代币了,所以想参与分叉的用户,需要将他们的BCH余额转移到其他钱包。

BitMEX:我们会持续关注分叉,再决定哪一条更适合BitMEX支持。

Kraken:无论分叉的结果是什么我们会支持BCHN,可能也会支持ABC,如果他们那在自己的网络中算力至少是BCHN的10%的话。如果Kraken支持ABC,我们会为用户提供等量的ABC分叉后的代币给予他们在分叉时BCH账户中的余额快照。

Ledger:Ledger会在2020年11月12日7:00am UTC停止BCH的服务,然后我们会关注分叉后的活动,并决定支持哪一条链。Ledger并未设定BCH服务回归时间。

FTX:在我所的BCH期货合约会被按照主链的BCH指数进行单一结算,任何的BCH小链儿并不会被算入BCH指数。对于现货市场,FTX会于2020年11月15日11:00am暂停存款提款。如果小链能维持10%的哈希率,FTX会允许用户从小链上取款,基于他们在12:00pm UTC时候的余额快照。

 1/4    1 2 3 4 下一页 尾页