首頁 ? 比特幣軟分叉是什么?
By Published On: 31 5 月, 2022Categories: 區(qū)塊鏈Tags: ,

軟件由于方案優(yōu)化、BUG修復(fù)等原因進(jìn)行升級(jí)是一種非常常見的現(xiàn)象。如手機(jī)應(yīng)用等傳統(tǒng)軟件,升級(jí)非常簡(jiǎn)單,只需廠商發(fā)布,用戶接 受升級(jí)即可。但是對(duì)于比特幣這種去中心化的系統(tǒng),升級(jí)是非常困難 的,需要協(xié)調(diào)網(wǎng)絡(luò)中每個(gè)參與者。軟件升級(jí)意味著運(yùn)行邏輯的改變, 但是在比特幣中,升級(jí)必然會(huì)導(dǎo)致不同節(jié)點(diǎn)在一定時(shí)間內(nèi)運(yùn)行不同的版本,于是就會(huì)產(chǎn)生分叉。

分叉主要包含軟分叉硬分叉兩種。如果比特幣升級(jí)后,新的代 碼邏輯向前兼容,即新規(guī)則產(chǎn)生的區(qū)塊仍然會(huì)被舊節(jié)點(diǎn)接受,則為軟 分叉;如果新的代碼邏輯無法向前兼容,即新產(chǎn)生的規(guī)則產(chǎn)生的區(qū)塊無法被舊節(jié)點(diǎn)接受,則為硬分叉。

軟分叉

軟分叉由于向前兼容,新舊節(jié)點(diǎn)仍然運(yùn)行在同一條區(qū)塊鏈上,并不會(huì)產(chǎn)生兩條鏈,對(duì)整個(gè)系統(tǒng)影響相對(duì)較小。到目前為止,比特幣發(fā)生過多次軟分叉,如BIP-34,BIP-65,BIP-66,BIP-9等。其中比特幣改進(jìn)建議(Bitcoin Improvement Proposal, BIP)指的是比特幣社區(qū)成員針對(duì)比特幣提出的一系列改進(jìn)建議,這些改進(jìn)建議的具體內(nèi)容感興趣的讀者可以通過訪問BIP的網(wǎng)站(1)自行查閱。

此處以BIP-34為例,簡(jiǎn)單說明軟分叉的過程。在舊版本中,存在一個(gè)無意義的字段“coinbase data”,礦工不會(huì)去驗(yàn)證該字段的內(nèi)容。BIP-34升級(jí)的新版本則要求該字段必須包含區(qū)塊高度,同時(shí)將版本信息由“1”修改為“2”。該升級(jí)共包含三個(gè)階段。

第一個(gè)階段:礦工將版本號(hào)修改為“2”,此時(shí)所有礦工驗(yàn)證區(qū)塊時(shí),按照舊的規(guī)則驗(yàn)證,即不關(guān)心“coinbase data”字段內(nèi)容,所有礦工不論以新規(guī)則還是舊規(guī)則打包區(qū)塊,均可以被整個(gè)網(wǎng)絡(luò)接受。

第二階段:如果最新產(chǎn)生的1 000個(gè)區(qū)塊中,版本號(hào)為“2”的區(qū)塊個(gè)數(shù)超過75%時(shí),則要求版本號(hào)為“2”的礦工必須按照新的規(guī)則打包區(qū) 塊,升級(jí)的礦工收到 版本號(hào)為 “2”的區(qū)塊時(shí) , 只會(huì)接受“coinbase data”字段包含區(qū)塊高度的區(qū)塊,對(duì)于版本號(hào)為“1”的區(qū)塊,仍然不校驗(yàn)該字段并接受。

第三階段:如果最新產(chǎn)生的1 000個(gè)區(qū)塊中,版本號(hào)為“2”的區(qū)塊個(gè)數(shù)超過95%,則升級(jí)的礦工只接受版本號(hào)為“2”的區(qū)塊,并會(huì)對(duì)“coinbase data”字段進(jìn)行校驗(yàn),版本號(hào)為“1”的區(qū)塊則不被接受,以此來逼迫剩余少量礦工進(jìn)行升級(jí)。

軟分叉雖然對(duì)系統(tǒng)的影響較小,但是為了保證向前兼容,不能新增字段,只能在現(xiàn)有數(shù)據(jù)結(jié)構(gòu)下修改,即可升級(jí)的內(nèi)容非常有限。同時(shí),因?yàn)檫@些限制,軟分叉一般升級(jí)方案比較復(fù)雜,復(fù)雜的方案往往更容易產(chǎn)生BUG,并且可維護(hù)性很差。