根據bitcoincash.org網站提供的信息顯示,比特幣現金(BCH)網絡將于UNIX時間戳1542300000進行一次硬分叉協議升級,而使用BCH網絡的企業(yè)和個人,都應該檢查自己運行的軟件,以確保自己的軟件與這次升級相兼容。
截至目前,已實現兼容的客戶端包括Bitcoin ABC 0.18.2、Bitcoin Unlimited Cash Edition 1.5.0.0, 而即將實現兼容的客戶端還有bcoin-bcash 1.1.0。
(如果用戶因不熟悉或其他原因,也可以將自己的資產存放于支持這次硬分叉升級的可靠交易所,截至目前,已明確支持這次升級的交易所包括幣安、火幣、coinbase、Poloniex等。當然,如果讀者對自己的技術的很有信心,自行操作會是更好的一種選擇,因為如果萬一出現了鏈分裂的情況,你就可以第一時間獲取到分叉幣。)
以下為這次硬分叉協議升級的具體說明:
當最近11個區(qū)塊(MTP-11)的時間中位數 [1] 大于或等于UNIX時間戳1542300000(譯者注:北京時間2018年11月16 日0:40:0)時,比特幣現金(BCH)將根據此規(guī)范執(zhí)行網絡共識規(guī)則升級。而從下一個區(qū)塊開始,這些共識規(guī)則的更改將會生效:
刪除拓撲交易排序限制,并強制執(zhí)行規(guī)范交易排序;
啟用OP_CHECKDATASIG和OP_CHECKDATASIGVERIFY操作碼;
實施最小交易大小規(guī)則;
為scriptSig(腳本簽名)強制執(zhí)行“push only”規(guī)則;
實施“清理堆?!币?guī)則;
以下部分不是共識方面的更改,而是對比特幣現金(BCH)實施的推薦更改:
對于未來升級的自動重放攻擊保護;
規(guī)范交易排序
除了coinbase交易之外,區(qū)塊內的交易必須按交易 id的數字升序排序,它們會被解釋為256位的小端整數(little endian integers)。coinbase交易必須是一個區(qū)塊當中的第一筆交易。
操作碼(OpCode)
新的操作碼OP_CHECKDATASIG以及OP_CHECKDATASIGVERIFY將按照 op_checkdatasig.md [2]中的規(guī)定得到啟用。
最小交易大小
小于100字節(jié)的交易,應被視為無效交易。這可以防止黑客利用默克爾樹(Merkle tree )漏洞,針對輕錢包(SPV) [3]實施欺詐交易攻擊而造成影響。
Push Only
如果在一個腳本簽名當中,出現了編號大于96(十六進制編碼為0x60)的操作碼,則交易會被認為是無效的。這和比特幣BIP 62 #2 規(guī)則 [4]是相同的。
清理堆棧
而要使一筆交易是有效的,在完成腳本評估的時候,堆棧上必須只有一個非零項。如果堆棧上仍然有額外的數據元素,則腳本的計算結果為“false”。這與比特幣BIP 62 #6規(guī)則[4]是相同的。
自動重放攻擊保護
當最近11個區(qū)塊(MTP-11)的時間中位數 [2] 小于UNIX時間戳1557921600(2019年5月15日)時,比特幣現金(BCH)全節(jié)點必須執(zhí)行以下規(guī)則:
forkid [5]等于0.
當最近11個區(qū)塊(MTP-11)的時間中位數 [1]大于或等于UNIX時間戳1557921600(2019年5月15日),執(zhí)行2018年11月份共識規(guī)則的比特幣現金全節(jié)點,應該執(zhí)行以下更改:
將forkid [5]更新為等于0xFF0001,以0xFF開頭的ForkID,將被保留,以用于將來的協議升級。
這一特殊的共識規(guī)則,絕不能由比特幣現金軟件錢包來實現。跟隨升級的錢包,不應該改變任何東西。





