世界硬分叉史 | BCH內亂始末與重放保護之謎

買賣虛擬貨幣
進入到11月,BCH即將迎來又一次升級。這本來對大家已經習以為常,但是由於此次升級很有可能引起再次分叉,因此BCH近期備受矚目。
對於分叉,不同的人持有的態度是不同的。一些人贊同分叉,認為分叉是新事物替代舊事物的良性發展,一些人反對分叉,認為分叉是傷害共識的不利行為。有人因為分叉而名利雙收,也有人因為分叉爭得面紅耳赤。分叉究竟是好是壞,我們不做評價,這裡只做科普並帶大家瞭解區塊鏈世界的幾次著名的分叉事件。何為硬分叉?所謂硬分叉指的是區塊鏈發生永久性分歧,在新的共識規則釋出之後,一些沒有及時升級的節點沒有辦法驗證已經升級的節點所產生的區塊,這個時候硬分叉就會發生。硬分叉有三個特點:一是沒有向前相容性,之前的版本將不可再用,需要強制升級;二是在區塊鏈的層面會有分叉的兩條鏈,一條舊鏈,一條分叉的新鏈;三是需要在某個時間點全部同意分叉升級,不同意的將會進入舊鏈。
事件一:BTC分叉事故在2013年3月12日,當時是bitcoin qt 0.8.0版本軟體釋出了,0.8版本採用了一種新的資料庫level db。有的礦工節點升級了bitcoin qt 0.8版本,有的礦工還繼續使用bitcoin qt0.7版本的軟體。雙方各自生產區塊,但bitcoin qt 0.8採用的新資料庫生產出的區塊被被qt0.7版本節點拒絕掉。具體的原因是舊的資料庫對超過800Kb的區塊有時不接受。因此在區塊高度225430比特幣區塊鏈分成了兩條鏈,結果導致了比特幣區塊鏈產生兩條鏈,一條是包含大於800kb區塊的鏈,另一條是拒絕承認這些包含更大區塊的鏈,這就發生了硬分叉。當時是採用bitcoin qt 0.8版本的礦工放棄了他們挖的鏈,退回到bitcoin qt 0.7版本上繼續挖礦。這次硬分叉是一次意外,是bitcoin qt 0.8版本的軟體出了bug,導致採用舊軟體的節點拒絕驗證新軟體節點生產的區塊。但硬分叉的成因就是採用舊軟體版本的節點拒絕驗證採用新軟體版本的節點生產的區塊,然後雙方各自挖礦。事件二:The DAO事件以太坊也曾出現過大規模的硬分叉事件,“末日戰車”ETC就是因此誕生。2016年的6月17日,以太坊上著名的專案The DAO由於其自身漏洞,導致駭客竊取了當時價值約6000萬美元的以太幣。這個錯誤並非來自以太坊本身,而是建立在以太坊上的應用。
為了挽回損失,以太坊開發團隊透過修改以太坊軟體的程式碼,在第1920000個區塊強行把The DAO及其子DAO的所有資金全部轉到一個特定的退款合約地址,從而“奪回”駭客所控制的DAO合約幣。這條被回滾的鏈就是ETH。雖然這個過程得到了大多數人的同意,但是以太坊團隊中有少數成員是不贊成的。他們認為區塊鏈的基本特徵之一就是交易不可逆,回滾交易的做法違背了區塊鏈的不可篡改精神。於是,以太坊硬分叉成了兩條鏈:回滾交易的ETH和拒絕回滾交易的ETC。在這次分叉中,由於沒有重放保護,導致分叉後在ETH上進行的交易,也會在ETC上也進行,反之亦然,因此造成了交易所與使用者的資產損失。之所以會發生這一現象,是因為在分叉發生時,這兩條鏈在資料結構上完全一致,這個弱點直接導致同一筆交易在兩條鏈上完全合法。有人利用這個漏洞,不斷在交易所進行ETH的充幣、提幣操作,從而導致交易所莫名其妙流失大量ETC。事件三:BCH的誕生BCH的誕生是幣圈裡程碑式的分叉事件。眾所周知,BCH是由比特幣透過硬分叉產生的。這是因為BTC在發展的過程中,僅有1M的區塊大小的限制導致交易延遲、交易費高,無法滿足日益增長的交易需求。為了解決這一問題,社羣出現了分歧。一派是大區塊的支持者,認為直接更改共識進行擴容,一派則是小區塊鏈支持者,寄希望於閃電網路等第二層應用。經過長期的討論,這一問題始終未能達成共識。最終,比特幣於2017年8月1日在區塊高度478558後被分叉為BTC和BCH,BCH將區塊擴容至8M。在BCH誕生後不久,BCH獲得了大量交易所和錢包以及應用設施的支援。在這個過程中,BCH 主動新增重放保護,將收幣交易的鎖,修改為與比特幣的鎖不一樣的鎖,而且將交易簽名修改為與BTC完全不一樣的規則SIGHASH_FORKID,使得這次分叉是一次安全的分叉。如果沒有重放保護,對於剛剛分開的兩條鏈來說,雖然名義是兩條鏈,但是由於共同使用一套私鑰、公鑰、和地址,使用者在一條鏈上轉賬時,也會將另一條鏈上的幣轉移出去。加了重放保護之後,一條鏈的礦工在接收到另外一條鏈的交易或區塊的時候,就會拒絕另外一條鏈的交易或區塊,從而兩條鏈將徹底分開,互不影響。
在BCH的誕生過程中,交易所根據比特幣的持有量空投BCH,投資者受益良多。這一過程引發了硬分叉熱潮,僅僅基於BTC的分叉鏈就層出不窮。BTG(位元黃金)、BCD(比特幣鑽石)、SBTC(超級比特幣)等都是在這一時間出現。不過,後期由於缺乏價值支撐而逐漸沒落。事件四:BCH算力戰BCH誕生之初由BitcoinABC、Bitcoin Unlimited,Bitprim,Nchain,Bitcrust,ElectrumX,Parity和Bitcoin XT等多個團隊開發維護。在BCH的發展中,隨著社羣理念的不統一與技術的摸索與前進,BCH開發團隊在發展方向很快出現了分歧。Bitcoin ABC支持者希望在區塊大小維持在32MB的情況下,應讓BCH往基礎建設公鏈方向發展,這樣一來,BCH便能像以太坊一樣,開拓出更多應用場景。Bitcoin SV支持者希望迴歸比特幣最原始的版本,堅信Craig S. Wright即中本聰,為吸引沃爾瑪級別的企業使用BSV,提前將區塊擴容為128MB。社羣的分歧來源於是從擴容還是新增或重新啟用幾個比特幣指令碼操作碼(op程式碼)來實現BCH未來的發展方向。更深層次的衝突是比特幣原教主義與演進派之間的意識形態分歧,以及CSW是真假中本聰。
各執不同意見的兩方也造成BCH的共識協議不再相容,必須透過分叉來解決,並約定硬分叉後最長的鏈才能為主鏈,獲得BCH的冠名權。由於此次硬分叉沒有新增無重放保護,導致交易所處理困難。不管是命名還是空投糖果方面都給交易所出了難題。硬分叉結束之時,BCH、BCHABC、BCHSV、BSV等都曾出現。最終兩條鏈經過算力戰,BCHABC獲得大量支援,取得BCH的名稱。最後,這兩條鏈都有穩定的算力支援,且都可以正常出塊,難度調整波動處於正常範圍,BCH和BSV就此分開兩條鏈開始各自發展。交易所也按照使用者的BCH持有量空投BSV糖果。迴歸當前:BCHN 篡權 2020年11月15日,按照慣例,BCH網路即將迎來又一次硬分叉升級。但是與過去的硬分叉升級有所不同的是,因為IFP的爭議,開發團隊ABC與BCHN似乎將在協議升級後執行截然不同的規則,這可能會導致兩條鏈分裂。BCHN 與ABC 關於IFP 的理念之爭可以追溯到1月22日《BCH的基礎設施融資計劃》提出向開發者捐贈區塊獎勵。這一提議引發了社羣激烈的討論。最終,開發團隊間並未對此事達成共識。ABC將IFP寫入這次升級,規則包含將8%區塊獎勵給開發者。Bitcoin Cash Node作為反對IFP的一方,複製了ABC程式碼的同時刪除了IFP。由於理念的不同,導致兩個客戶端版本不互相相容,BCH很有可能再次分叉為兩條鏈。關於此次分叉,開發者表示暫未新增重放保護,可能影響BCH主鏈的正常使用。但對於使用者而言,假如BCH一分為二,使用者可以獲得新幣的糖果。因此,各交易所、錢包宣佈為保護投資者,暫停BCH相關業務。
Matrixport作為數字資產金融服務平臺表示支援BCH分叉,也將於新加坡時間2020年11月15日12:00(GMT+8)暫停BCH充值、提現業務。Matrixport還將為使用者處理硬分叉中的任何技術問題,待區塊網路執行穩定後,Matrixport會盡快恢復充值、提現業務。目前Matrixport已經為BCH分叉做了充分的準備。如果BCH分叉成為兩條鏈,Matrixport將使用染色UTXO做混淆防止重放。原理是找分叉之前的UTXO,分兩次簽名在不同的分叉鏈上,花掉作為染色UTXO的種子,待安全確認後,後續交易中如果生成交易的UTXO都是分叉之前的,則自動帶上種子UTXO。如此以來,一旦BCH分叉,ABC和BCHN兩條鏈新產生的區塊資料獨立。ABC鏈上新發行的幣,即產生的coinbase交易,在本鏈上被認為是合法的,但是在BCHN鏈上是非法的,反之亦然。舉個例子:一筆交易廣播到了ABC鏈中,引用了非法交易(在ABC合法,在BCHN非法)的 UTXO 作為輸入,那麼這筆交易相當於被汙染了,不會被BCHN鏈承認,那麼這筆交易就被重放免疫了;對應的,一筆交易廣播到了BCHN鏈中,引用了非法交易(在 BCHN 合法,在ABC非法)的 UTXO作為輸入,那麼這筆交易相當於被汙染了,不會被 ABC 鏈承認,那麼這筆交易就被重放免疫了。透過這種方法,不僅能夠有效防止重放,Matrixport也可以有效的保護使用者的資產。由於技術複雜,使用者可以將自己的資產儲存在Matrixport平臺,不僅保護自己的資產安全,而且如果BCH分叉可以輕鬆獲得新幣糖果。誰是最後的BCH?針對BCH的此次分叉,由於涉及到“BCH”的冠名權,不同的交易平臺也表現出不同的態度。
第一種是價高者得到BCH的名稱。這類交易平臺包括:CoinEx、OKEX。它們表示分叉完成後,會參考各主流交易所分叉幣對交易價格,選擇其中價格較高鏈繼承BCH的命名,另外一條鏈的代幣將按1:1空投到使用者資金賬戶。第二種是待社羣形成共識後確定BCH名稱。這類交易平臺包括:火幣、幣安、Bithumb Global。它們表示若硬分叉後生成新的分叉幣,將尊重社羣和使用者的意見與共識,將獲得社羣較多支援的方案命名為 BCH,另外一條鏈上的代幣,將持倉快照,按照 1:1 的比例空投到使用者賬戶中。
第三種是支援BCHN,反對Bitcoin ABC。這類交易平臺包括:Coinbase、Kraken。Coinbase直接官宣站隊BCHN,宣告稱一旦硬分叉完成,Coinbase.com和Coinbase Pro將不支援ABC分叉幣的傳送和接收。Kraken表示無論分叉結果如何都將支援BCHN,在其平臺上,BCHN將被稱作BCH,只有當ABC的算力佔到BCH網路的10%及以上,平臺才會支援ABC服務,代幣代號會使用“BAB”。頭部礦池BTC.com表示,已充分測試和驗證了BitcoinABC和Bitcoin Cash Node(BCHN)兩種客戶端,也一直保持和兩邊技術團隊交流。BTC.com礦池會選擇BCHN作為分叉後的節點方案,若有後續變化將及時另行通知。同時,BTC.com上線BCH硬分叉倒計時,實時更新雙方的價格、算力、節點佔有率、出塊數量、節點資訊等資料,幫助關注此次分叉的使用者更直觀的瞭解BCH硬分叉的動態。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;