風險提示:若BCH分裂後,請在確保幣分離後再使用雙方新增加的OPCode
第0章 引言
在11月15日,BCH將面臨潛在的分裂,若真分裂,一個幣變兩個幣,但有些事要注意,否則你的一個幣可能會變成無效。
第1章 BCH協議升級
在11月15日,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的協議競爭性升級可能會導致分裂,即一條鏈變成兩條鏈,一個幣變成兩個幣。並且因為兩條鏈採用了相同的forkid,導致相互不帶防重放保護,即一條鏈上的交易,可能在另一條鏈也合法。
考慮到兩條鏈的交易重放和交易指令碼,這可能會導致使用者在一條鏈上發的交易,在另一條鏈上是合法的,但在另一條鏈上可能永遠無法花出去。即交易可合法重放,但卻無法合法解鎖。
交易重放的知識,上篇文章我寫到了,我複製到本文下一章,看過的直接跳過。本文重點描述交易可合法重放,卻不可以合法解鎖的情況。
第2章 交易重放
如果區塊鏈分裂後在任一條鏈上發起一筆交易,在兩條鏈上這筆交易卻都會有效。這就是顯得你發了兩筆交易,這裡的另外一筆,就是“重放”。
我打個比方來解釋這個,在國軍退守臺灣後,蔣公將大陸的很多機構都照樣在臺灣複製了一遍。比如在臺灣也建了清華大學。而在大陸的北京,也是有一個清華大學。
如果你在美國給清華大學寫一封信,就是用紙,讓郵遞員送的那種信。但收件地址上只寫了“中國清華大學XXX收”
這個收件地址即可以解讀為是北京的清華大學,也可以解讀為臺灣的清華大學。這下郵遞員麻煩了,他乾脆將你的信影印一遍,送到兩個大學去。
這就是重放攻擊。因為本來你只想寄給臺灣的清華大學,但現在卻被重放到了北京的清華大學。
所謂的重放保護,就是想辦法讓你發的交易,只在一條鏈上有效,在另一條鏈上無效。從而可以避免“重放”。
BCH在11月15日如果真分裂了,並且兩條鏈都不帶防重放保護,因為兩條鏈都繼承了分裂點之前的幣,所以使用在分裂點之前的幣構造的交易,在兩條鏈上都是合法的,即是可以被重放的。
但如果這筆交易是使用了新的OPCode,不管是哪條鏈的OPCode,都可能產生能重放但不能花的交易。
第3章 P2SH交易
比特幣有一種交易型別叫P2SH,Pay to Script Hash,支付到指令碼雜湊。 這種交易將UTXO鎖定到指令碼雜湊上,因為是指令碼雜湊,而不是指令碼的內容,所以這種交易廣播時節點並不知道指令碼內容,所以肯定不會知道這個腳本里麵包含了什麼操作碼OPCode。贖回P2SH交易裡的幣(即花費P2SH地址裡的幣)就需要運算腳本里的內容,也就是花費時,腳本里用了哪些OPCode就會被節點知道了。
上述P2SH的特性,就會讓BCH在這一次分裂之後的P2SH交易重放變得非常危險。
第4章 帶新操作碼的P2SH交易可重放,但在重放鏈上不可花費
如果在11月15日BCH分裂後,使用分裂點之前的UTXO來構造一筆P2SH交易,並且在腳本里面使用了新的OPCode。那這筆交易在兩條鏈都是合法的,因為兩條鏈的節點是無法知道這筆交易使用了對方鏈的OPCode,這樣,這筆交易就是可以被重放的。
這筆P2SH交易一旦被重放到另一條鏈,那就將不可再被贖回,因為這條鏈上這個對方鏈的新OPCode是非法的,無法解鎖。這就相當於,這筆幣在這條鏈永遠丟失了。
所以在分裂後,請謹慎使用新的OPCode。那如果使用者有業務需要用新的OPCode,該怎麼辦?
第5章 先確保幣準確分裂,再用新的OPCode
假如BCH真分裂了,而且你還需要用到新的OPCode,那一定要先將你的幣在兩條上分離出來。分離就是將你在分裂點之前的幣,在兩條鏈上分別發到一個新的地址。
分裂最簡單有效的辦法就是在分裂點後100個區塊,從礦池購買一丁點coinbase交易的UTXO,發到你的BCH錢包裡,然後將所有餘額一次性轉入一個新地址。只需要在一條鏈上這麼做一次,就可以徹底分離出來了。
分離幣後,新OPCode你就可以隨便用了,因為不會再被重放了。
如果在你沒有分離幣之前,最好別做轉賬,更不要轉幣到3開頭的地址。3開頭的地址就是p2sh地址。
有些交易所的充值地址就是一個多重簽名地址,是3打頭的。個人建議交易所先暫停使用3開頭的地址充值,也建議使用者在分離幣之前也不要往這樣的交易所裡充值。反正分離幣之前,最好別動。
對於很多小白使用者,最好的方式還是學習一下怎麼分離幣,如果不行,就存放到承諾會給潛在分裂幣的交易所吧。
第6章 結束語
分叉和分裂是區塊鏈世界必須掌握的知識。
作者:黃世亮
歡迎打賞BTM:bm1qefc720au672awrgazgw5c3kx7etr5kejju02p7