� 上周BCH进行了硬分叉,分叉成了两条链:BCH和BCHSV,对于分叉后的BCH如何进行交易呢?钱包是否有相关的危险因素?
由于分叉后的两条链没做重放保护,可能导致一条链上发起的交易,在另一条链上做重放攻击,造成相关对象的财产损失(依实际攻击场景而定)。
在无重放保护的情况下,分离这两种链上资产的方法,目前社区的解决方法主要有如下两个:
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
之一来构建提现交易,从而较方便地完成分离。
另外,从工程实践上,我们也建议充提币的确认数可以适当提高,虽然目前来看两条分叉链未发生明显的攻击情况。
对于普通用户来说,等着先,不着急。
作者:慢雾安全团队