- 區塊鏈應用開發指南:業務場景剖析與實戰
- 熊麗兵 董一凡等
- 712字
- 2022-07-28 20:17:50
1.8 區塊鏈的硬分叉
區塊鏈就和傳統的程序一樣,隨著時間的推移,軟件的設計本身也會發生改變,甚至是在軟件中出現嚴重的漏洞,如果在傳統軟件中就會產生升級的操作。而升級后是否向下兼容就會對整個軟件造成完全不同的影響。區塊鏈也是一樣,區塊的數據格式、生成區塊的算法以及對區塊鏈進行打分的算法都可能會升級。如果這種升級向下不兼容,就會出現兩套算法在同時運行的情況。運行舊軟件的計算機節點會繼續用舊的協議來繼續構建區塊,而運行新軟件的節點就會用新的協議去構建新的區塊。通常升級會從某一個固定的區塊開始,所以從這個固定的區塊開始,就會分叉出兩條完全不同的鏈。兩者再也沒有互相融合的可能。這就是區塊鏈的硬分叉。
和傳統軟件升級不一樣的是,硬分叉的代價很大,因為節點是否升級所牽扯的面很廣,其中除了技術的原因,還有很多利益糾葛,比如有的節點的硬件就是專門為舊的協議設計,無法很好地適配新的協議,那么這些節點升級新協議的可能性就很小,甚至這種升級根本就不可能實現。更進一步,不同的人對區塊鏈的想法不一樣,不同的工作組有可能給出完全不同的升級協議,而這些協議都可能被一定數量的節點所接受,結果就是同一個區塊鏈隨著時間的推移,可能會發生很多次硬分叉。例如,比特幣就被分叉過很多次,在交易市場上,很多和比特幣的名字很類似的幣,其實就是硬分叉導致的。以太坊也在某一次DAO黑客事件后進行回滾,有的節點不接受這次回滾,結果就是分叉出以太坊和經典以太坊兩條鏈。
要解決硬分叉問題,在技術上并沒有什么好的辦法。不過隨著時間的推移,不同的鏈在進行公平的競爭,最終總會有一些更好的被留下來,其他一些則被慢慢淘汰。所以,硬分叉到底是不是一個嚴重的問題,更多的就要看觀察角度了。