區(qū)塊鏈?zhǔn)侨ブ行幕臄?shù)據(jù)結(jié)構(gòu)扔罪,所以不同副本之間不能總是保持一致逻住。區(qū)塊有可能在不同時(shí)間到達(dá)不同節(jié)點(diǎn),導(dǎo)致節(jié)點(diǎn)有不同的區(qū)塊鏈視角浙踢。解決的辦法是,每一個(gè)節(jié)點(diǎn)總是選擇并嘗試延長(zhǎng)代表累計(jì)了最大工作量證明的區(qū)塊鏈灿渴,也就是最長(zhǎng)的或最大累計(jì)難度的鏈洛波。節(jié)點(diǎn)通過(guò)將記錄在每個(gè)區(qū)塊中的難度加總起來(lái),得到建立這個(gè)鏈所要付出的工作量證明的總量骚露。只要所有的節(jié)點(diǎn)選擇最長(zhǎng)累計(jì)難度的區(qū)塊鏈蹬挤,整個(gè)比特幣網(wǎng)絡(luò)最終會(huì)收斂到一致的狀態(tài)。分叉即在不同區(qū)塊鏈間發(fā)生的臨時(shí)差異棘幸,當(dāng)更多的區(qū)塊添加到了某個(gè)分叉中焰扳,這個(gè)問(wèn)題便會(huì)迎刃而解。
比特幣網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)不是基于地理位置組織起來(lái)的够话。相反蓝翰,在同一個(gè)網(wǎng)絡(luò)中相互連接的節(jié)點(diǎn)光绕,可能在地理位置上相距遙遠(yuǎn)女嘲。正常情況下,分叉發(fā)生在兩名礦工在較短的時(shí)間內(nèi)诞帐,各自都算得了工作量證明解的時(shí)候欣尼。兩個(gè)礦工在各自的候選區(qū)塊一發(fā)現(xiàn)解,便立即傳播自己的“獲勝”區(qū)塊到網(wǎng)絡(luò)中,先是傳播給鄰近的節(jié)點(diǎn)而后傳播到整個(gè)網(wǎng)絡(luò)愕鼓。每個(gè)收到有效區(qū)塊的節(jié)點(diǎn)都會(huì)將其并入并延長(zhǎng)區(qū)塊鏈钙态。如果該節(jié)點(diǎn)在隨后又收到了另一個(gè)候選區(qū)塊,而這個(gè)區(qū)塊又擁有同樣父區(qū)塊菇晃,那么節(jié)點(diǎn)會(huì)將這個(gè)區(qū)塊連接到候選鏈上册倒。其結(jié)果是,一些節(jié)點(diǎn)收到了一個(gè)候選區(qū)塊磺送,而另一些節(jié)點(diǎn)收到了另一個(gè)候選區(qū)塊驻子,這時(shí)兩個(gè)不同版本的區(qū)塊鏈就出現(xiàn)了。
分叉問(wèn)題幾乎總是在一個(gè)區(qū)塊內(nèi)就被解決了估灿。從理論上來(lái)說(shuō)崇呵,兩個(gè)區(qū)塊的分叉是有可能的,這種情況發(fā)生在因先前分叉而相互對(duì)立起來(lái)的礦工馅袁,又幾乎同時(shí)發(fā)現(xiàn)了兩個(gè)不同區(qū)塊的解域慷。然而,這種情況發(fā)生的幾率是很低的汗销。單區(qū)塊分叉每周都會(huì)發(fā)生犹褒,而雙塊分叉則非常罕見(jiàn)。比特幣將區(qū)塊間隔設(shè)計(jì)為10分鐘弛针,是在更快速的交易確認(rèn)和更低的分叉概率間作出的妥協(xié)化漆。
一群礦工控制了整個(gè)比特幣網(wǎng)絡(luò)51%的算力,他們聯(lián)合起來(lái)打算攻擊整個(gè)比特幣系統(tǒng)钦奋。由于這群礦工可以生成絕大多數(shù)的塊座云,他們就可以通過(guò)故意制造塊鏈分叉來(lái)實(shí)現(xiàn)“雙重支付”或者通過(guò)拒絕服務(wù)的方式來(lái)阻止特定的交易或者攻擊特定的錢(qián)包地址。區(qū)塊鏈分叉/雙重支付攻擊指的是攻擊者通過(guò)不承認(rèn)最近的某個(gè)交易付材,并在這個(gè)交易之前重構(gòu)新的塊朦拖,從而生成新的分叉,繼而實(shí)現(xiàn)雙重支付厌衔。有了充足算力的保證璧帝,一個(gè)攻擊者可以一次性篡改最近的6個(gè)或者更多的區(qū)塊,從而使得這些區(qū)塊包含的本應(yīng)無(wú)法篡改的交易消失富寿。
BCH分叉中國(guó)區(qū)主宰睬隶。