聊聊BCH分叉一事
最近,BCH內戰和分叉在寒冬裡掀起一股熱浪,整個區塊鏈圈子都在熱議。這次的分叉內情十分複雜,是前所未有的一次大戰。我在10月初發表的長文《BCH的戰爭與進化》中分析了主要方面,目前看仍然適用。但戰事爆發前後,仍有一些廣泛流傳的誤解,使複雜的局面變得更加迷離。在這裡做個梳理和澄清,也算是對文章的補充。
鑑於目前形勢已經明朗,ABC版本在各方面已經明顯佔優,除BSV以外的開發版本都選擇了相容ABC版本。因此,文中的BCH指ABC及其相容版本執行的那條鏈,而將BSV版本區塊鏈稱為BSV。
一.所有分叉都會分出兩個幣?錯!只有共識分歧導致的分叉才有新幣
“分叉”這個詞有三層意思:
1)區塊鏈產生孤塊。密碼貨幣正常記賬因網路延遲等技術原因,同一高度出現了兩個不同內容區塊,當其中一個後面跟的區塊更多時,另一個區塊及跟隨的短鏈就會被拋棄變成“孤塊”,這也就是所謂“追隨最長鏈原則”。
2)硬分叉升級。在軟體升級時,如果新舊版本記的區塊能夠相互相容,稱為軟分叉升級,不能相互相容就稱為硬分叉,就像有一次word升級後不識別word97版本一樣。硬分叉升級時要求大家都更換到新版本,如果有人還用老版本,就會產生兩個相互不承認的分叉鏈,這時“最長鏈原則”無效了。但老版本出的塊往往沒有交易所支援,區塊獎勵一文不值,所以用老版本的人發現沒人跟隨他出塊,就會找原因,發現新版本就會立刻更新版本,老版本的鏈就消失了。
3)鏈、幣和社群的分裂。如果兩個不相容的版本不是因為意外而並存,而是因為各有一些人支援不同版本的特徵,堅決反對另一個版本的特徵。那麼,兩個版本就一直有人支援同時執行,互相不接受包含了對方版本特徵的鏈,所以記出來的區塊鏈就永久分成了兩個鏈,鏈上記載的幣就分成了兩種,社群也分裂成兩個社群。
簡單說,只有共識發生分歧,各自支援互不相容的版本,導致鏈的永久分叉,才會分裂出新幣。
二.位元大陸和ABC反對擴容?錯,擴容是雙方共同的發展手段
最普遍的誤解是說ABC和位元大陸拒絕擴容,而CSW的BSV版本主張擴容。實際上ABC和位元大陸一直主張根據市場需求不斷擴大區塊容量,BCH就是因為這個誕生的。ABC和位元大陸反對的是在11月15日的升級中就將區塊擴大的128M,原因是:
1)目前BCH每塊實際容量在200k以內,現有32M區塊上限是實際容量的160倍以上,市場也處於熊市,根本沒有擴容的市場需求。
2)BSV的128M擴容並不成熟,缺乏測試資料。在曼谷會議上,技術人員對nChain提問BSV版本是否對128M容量進行了測試,有沒有測試資料,回答還沒有。
3)近期BCH系統進行了多次壓力測試,即製造巨量微小交易測試能否正常出塊與傳播。測試中打出了21M和32M的區塊,但也造成許多節點掉線,生態中的一些小礦工為此放棄了BCH挖礦。
因此,在缺乏市場需求、未經充分測試的情況下,貿然在11月15日的升級中擴容到128M既不必要,也有很大風險。
經過曼谷會議的討論,ABC、吳忌寒和Roger等人均表示,同意在15日升級之後開始測試128M擴容,如果測試通過可在2019年5月的升級中部署。但CSW堅持在15日上線128M的BSV,並在宣傳中攻擊ABC和位元大陸拒絕擴容,這很具有誤導性,但的確奏效了,以至於這場內戰開始時被稱為新的擴容之爭。
簡單說,雙方都主張擴容,ABC和位元大陸主張充分測試,保障安全的前提下擴容,CSW要求立即擴容。
三.BSV要世界貨幣而ABC要基礎鏈?錯,雙方目標都是“世界貨幣+基礎公鏈”
對於這次BCH內戰的原因,普遍流行的觀點認為CSW的BSV想要把BCH發展成世界貨幣,而ABC和位元大陸則想把它做成跑各種Dapp的基礎公鏈。實際上,雙方都想把BCH做成世界貨幣加基礎公鏈。只是實現的方式不同而已。
CSW曾發表文章論證比特幣在0.1版所提供的指令碼就是“圖靈完備”的,只是後來禁用了許多操作碼,限制了指令碼的功能,所以他要逐漸恢復這些操作碼。這次的BSV版本就恢復了4個早期禁用的操作碼,並且刪除對每個指令碼201個操作碼的限制。
ABC和位元大陸為BCH發展智慧合約功能的方案略保守一些。本次升級的ABC 0.18.2版本增加了兩個新的操作碼OP_CheckDataSig和OP_CheckDataSigVerify,用於資料簽名和驗證,這兩個操作碼的功能用原有指令碼中也能實現,只是新操作碼實現起來更簡潔。
位元大陸為BCH增加智慧合約功能的方案是二層協議解決方案,它藉助OP_Return操作碼能夠在每個交易中將少量資訊寫入主鏈的功能,搭載智慧合約資訊,在BCH節點之上搭載蟲洞節點來讀寫執行智慧合約。這種二層協議解決方案的好處是,一旦該協議失敗,可以很容易停止或拋棄,不影響主鏈的安全。而CSW的智慧合約則是直接在BCH主網上,通過“圖靈完備”的交易指令碼來實現的。
所以說,雙方都想把BCH發展成世界貨幣,併成為能夠執行智慧合約的基礎公鏈。相比之下,CSW的方案更加激進,給主鏈帶來的風險更大。