硬分叉後,BCH的錢包解決方案

lidiya007發表於2018-11-19

        上週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 之一來構建提現交易,從而較方便地完成分離。

  另外,從工程實踐上,我們也建議充提幣的確認數可以適當提高,雖然目前來看兩條分叉鏈未發生明顯的攻擊情況。

  對於普通使用者來說,等著先,不著急。

 

作者:慢霧安全團隊

千氪連結:https://www.kg.com/article/513691712565153792

相關文章