我之前的文章介紹過(guò)比特幣的挖礦是怎么回事兒。比特幣采用的工作量證明機(jī)制,就是讓礦工互相競(jìng)爭(zhēng)求解一個(gè)數(shù)學(xué)題,誰(shuí)先解出來(lái)了,他就大喊一聲:“我的工作量證明成功了,你們快來(lái)看!比w礦工就都過(guò)來(lái)把那一頁(yè)賬目抄寫(xiě)一份,貼在自己賬本的最后面,然后又開(kāi)始新的記賬過(guò)程。
在這個(gè)過(guò)程中,經(jīng)常會(huì)出現(xiàn)這樣一種情況:兩個(gè)礦工同時(shí)解出了題目,這時(shí)要怎么辦呢?
前面的文章也曾經(jīng)講過(guò):“在任何區(qū)塊里,第一條都是沒(méi)有轉(zhuǎn)出地址的,就是所謂的CoinBase(挖礦交易)。沒(méi)有任何人付給礦工這筆錢(qián),礦工只是理所應(yīng)當(dāng)?shù)膶?xiě)上自己獲得了12.5比特幣。所有節(jié)點(diǎn)都認(rèn)可礦工這樣寫(xiě),因此礦工就得到了挖礦收入。不同的礦工在填寫(xiě)區(qū)塊的時(shí)候,數(shù)據(jù)一定是不一樣的,因?yàn)槊總(gè)礦工的第一條肯定不一樣,礦工只會(huì)把挖礦收入轉(zhuǎn)入自己的地址!
由于每個(gè)礦工的區(qū)塊數(shù)據(jù)都不一樣,所以他們解題得出的結(jié)果也是不一樣的,都是正確答案,只是區(qū)塊不同。于是,區(qū)塊鏈在這個(gè)時(shí)刻,出現(xiàn)了兩個(gè)都滿足要求的不同區(qū)塊。那么,全體礦工這時(shí)該怎么辦呢?
由于距離遠(yuǎn)近,不同的礦工看到這兩個(gè)區(qū)塊是有先后順序的。通常情況下,礦工們會(huì)把自己先看到的區(qū)塊復(fù)制過(guò)來(lái),然后接著在這個(gè)區(qū)塊開(kāi)始新的挖礦工作。于是,出現(xiàn)了這樣的情景:
我們把這種現(xiàn)象叫做分叉。
在以工作量證明機(jī)制為共識(shí)算法的區(qū)塊鏈系統(tǒng)中,這個(gè)問(wèn)題是這樣被解決的:從分叉的區(qū)塊起,由于不同的礦工跟從了不同的區(qū)塊,在分叉出來(lái)的兩條不同鏈上,算力是有差別的。形象地說(shuō),就是跟從兩個(gè)鏈礦工的數(shù)量是不同的。由于解題能力和礦工的數(shù)量成正比,因此兩條鏈的增長(zhǎng)速度也是不一樣的,在一段時(shí)間之后,總有一條鏈的長(zhǎng)度要超過(guò)另一條。當(dāng)?shù)V工發(fā)現(xiàn)全網(wǎng)有一條更長(zhǎng)的鏈時(shí),他就會(huì)拋棄他當(dāng)前的鏈,把新的更長(zhǎng)的鏈全部復(fù)制回來(lái),在這條鏈的基礎(chǔ)上繼續(xù)挖礦。所有礦工都這樣操作,這條鏈就成為了主鏈,分叉出來(lái)被拋棄掉的鏈就消失了。
最終,只有一條鏈會(huì)被保留下來(lái),成為真正有效的賬本,其他都是無(wú)效的,所以整個(gè)區(qū)塊鏈仍然是唯一的。
注意,能夠讓區(qū)塊鏈保證數(shù)據(jù)唯一性的前提是:所有礦工都遵從同樣的機(jī)制。
還有一種情況,就是礦工不遵從同樣的機(jī)制,那么也會(huì)出現(xiàn)分叉。這種分叉又有兩種情況:一是由于整個(gè)區(qū)塊鏈系統(tǒng)軟件的升級(jí),一部分礦工沒(méi)有來(lái)得及升級(jí),出現(xiàn)了遵從不同機(jī)制產(chǎn)生的分叉。當(dāng)這部分礦工升級(jí)系統(tǒng)后,這個(gè)分叉就會(huì)消失,我們稱這種分叉為軟分叉。二是由于礦工之間出現(xiàn)分歧,一部分礦工決定采用不同的機(jī)制,產(chǎn)生出來(lái)的分叉是不會(huì)消失的。我們一般把這種分叉稱為硬分叉。
軟分叉很好理解,我們重點(diǎn)談?wù)動(dòng)卜植妗?/P>
區(qū)塊鏈圈里第一個(gè)有影響力的硬分叉應(yīng)該是以太坊的分叉事件。以太坊上一個(gè)著名的項(xiàng)目The DAO由于其自身漏洞,導(dǎo)致黑客竊取了當(dāng)時(shí)價(jià)值約6000萬(wàn)美元的以太幣。2016年7月,以太坊開(kāi)發(fā)團(tuán)隊(duì)通過(guò)修改以太坊軟件的代碼,在第1920000個(gè)區(qū)塊強(qiáng)行把The DAO及其子DAO的所有資金全部轉(zhuǎn)到一個(gè)特定的退款合約地址,從而“奪回”黑客所控制的DAO合約幣。由于一部分礦工并不認(rèn)同這個(gè)修改,于是形成兩條鏈,一條為以太坊(ETH),一條為以太坊經(jīng)典(ETC),各自代表不同的社區(qū)共識(shí)以及價(jià)值觀。當(dāng)以太坊發(fā)生了這次硬分叉后,產(chǎn)生了兩條區(qū)塊鏈。由于這兩條鏈在發(fā)生分叉之前的數(shù)據(jù)都是一樣的,一個(gè)非常有意思的現(xiàn)象出現(xiàn)了:原本持有以太幣(ETH)的人,發(fā)現(xiàn)自己除了持有原有的ETH外,又有了相同數(shù)量的ETC。
也就是說(shuō),憑空的多出了一些資產(chǎn)。這些資產(chǎn)的價(jià)值具體怎樣,還要看市場(chǎng)交易情況。但總的來(lái)說(shuō),區(qū)塊鏈的硬分叉,沒(méi)有減少資產(chǎn),反而讓人手里多了一種資產(chǎn),看上去總歸是一件不虧的事情,于是區(qū)塊鏈分叉就成了一種資產(chǎn)憑空增加的方式。
在2017年8月1日,由ViaBTC領(lǐng)導(dǎo)的礦工團(tuán)體創(chuàng)建一個(gè)比特幣分叉——Bitcoin Cash(簡(jiǎn)稱BCC或BCH)。這次分叉,讓大量的比特幣持有者憑空的增加了一種新的數(shù)字貨幣(BCH)。
硬分叉這種創(chuàng)造貨幣的方式和ICO非常類似,于是一個(gè)新的名詞誕生了——IFO(Initial Fork Offerings)。礦工團(tuán)隊(duì)在創(chuàng)造分叉的同時(shí),可以在分叉發(fā)生的區(qū)塊中,利用自己的特權(quán),分配一些貨幣給自己或其他人(直接寫(xiě)成CoinBase交易即可),然后再開(kāi)放讓所有人都可以參與挖礦。
隨著越來(lái)越多的硬分叉發(fā)生,比特幣的公信力是否還能像以前一樣?IFO會(huì)不會(huì)成為比特幣的殺手?還需要時(shí)間的考驗(yàn)。
作者簡(jiǎn)介
敖萌,現(xiàn)就職于中國(guó)信息通信研究院北京泰爾英福網(wǎng)絡(luò)科技有限責(zé)任公司,主要研究模式識(shí)別和區(qū)塊鏈,