之前在介紹Parent Hash和Ommer Hash時有提到,不同礦工幾乎在同一個時間算出下一個區塊的答案時,區塊鏈會暫時分裂成兩條鏈(兩個子區塊),等到下一個區塊建立時,新區塊的贏家會選擇其中一條區塊鏈接下去,根據比特幣區塊鏈中的最長鏈原則,長的區塊鏈就是有效主鏈,在以太坊區塊鏈中主鏈的分支叫Ommer Blocks,Ommer區塊的礦工能獲得一點點的Gas,但在Ommer區塊後面6個區塊之後,就不再有獎勵了,這樣短時間的分叉經常發生,是自然發生的分叉,最後都會收斂並重新回到一致狀態的單一主鏈,除此之外,還有另一種共識規則改變造成的分歧,是有意修改的分叉,也就是說,礦工對於要採納哪一個分叉已經達成共識,礦工隨後會會放棄其他分叉,這樣的分叉又可以分成軟分叉(soft fork)和硬分叉(hard fork)。
軟分叉(soft fork)像是一種軟體的升級,軟分叉後會有新的共識規則,新產生的區塊能向前兼容,也就是說新區塊在舊規則下仍然有效,但舊區塊未必在新規則下有效,即使未依照新規則,仍然可以按照先前的規則對待交易或區塊,但是參與者的功能受到了影響,第一次學到軟分叉時,我腦中想到的是高乘載管制,假如明天設置高乘載管制時(新共識規則),車上要有滿3個人以上才能上國道,不滿3個人就上不了,但是不滿3個人,你可以走替代道路,一樣到的了目的地。
硬分叉(hard fork)是共識規則的重大變化,舊版本與新版本將不兼容,所有參與者必須升級到新軟體才能在新分叉上繼續運行,硬分叉的經典案例是以太坊升級到「大都會(Metropolis)」版本,「大都會」又細分成拜占庭階段和君士坦丁堡階段。另一個例子是DAO在遭遇以太幣竊案後,採取硬分叉回復到駭客攻擊前的狀態。
區塊鏈的分叉會包含以太坊改進方案(EIP),用來描述以太坊的一些新功能或新環境,舉例來說EIP-1234的內容就是我們之前提到的以太坊區塊鏈獎勵從3 ETH減少到2ETH。
總而言之,良好的分叉幫助區塊鏈改進及處理意外事故,並且幫助區塊鏈建立可信度,下一篇我們來講講Dapp,那我們明天見~