侯佳憶 吳剛 藺靜茹
摘 要
區(qū)塊鏈開創(chuàng)性地利用密碼學(xué)元素和共識(shí)機(jī)制構(gòu)建了一個(gè)安全的去中心化系統(tǒng)。區(qū)塊鏈?zhǔn)潜忍貛诺暮诵?,它利用點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)通信,讓區(qū)塊鏈中的每一個(gè)參與的節(jié)點(diǎn),對(duì)每個(gè)區(qū)塊提案進(jìn)行確認(rèn)共識(shí),將最后的共識(shí)區(qū)塊信息存儲(chǔ)在區(qū)塊鏈的各個(gè)節(jié)點(diǎn)的本地?cái)?shù)據(jù)庫中,這樣就能夠保證數(shù)據(jù)的防篡改,公開透明性,同時(shí)能夠保證交易的正常進(jìn)行,但是由于區(qū)塊鏈的技術(shù)升級(jí),會(huì)導(dǎo)致每個(gè)節(jié)點(diǎn)的升級(jí)出現(xiàn)異步問題,對(duì)一致性產(chǎn)生威脅,導(dǎo)致區(qū)塊鏈出現(xiàn)分叉的問題,最終導(dǎo)致區(qū)塊鏈的安全,可信受到威脅,本文對(duì)區(qū)塊鏈分叉問題進(jìn)行研究,給出了一個(gè)解決區(qū)塊鏈分叉問題的方案。
關(guān)鍵詞
區(qū)塊鏈;分叉;分析研究
中圖分類號(hào): TP311.13 ? ?? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.19694/j.cnki.issn2095-2457.2020.09.063
0 概述
理想情況下的比特幣區(qū)塊鏈?zhǔn)且粋€(gè)同步的網(wǎng)絡(luò)環(huán)境,假設(shè)各個(gè)副本節(jié)點(diǎn)在區(qū)塊鏈中的信息交換和區(qū)塊的添加沒有任何的延時(shí),那么在這種情況下,如果不發(fā)生區(qū)塊鏈的系統(tǒng)升級(jí),那么每個(gè)副本節(jié)點(diǎn)上的數(shù)據(jù)塊會(huì)是相同的,但是現(xiàn)實(shí)的區(qū)塊鏈場(chǎng)景中,由于區(qū)塊鏈的副本節(jié)點(diǎn)在挖礦的過程中,存在著同時(shí)的情況,而且節(jié)點(diǎn)與節(jié)點(diǎn)的信息廣播也存在網(wǎng)絡(luò)時(shí)延,那么在這樣一個(gè)場(chǎng)景下,區(qū)塊的信息驗(yàn)證就會(huì)出現(xiàn)錯(cuò)誤的情況,如果這種情況發(fā)生,區(qū)塊鏈分叉問題就出現(xiàn)了,下面我們對(duì)區(qū)塊鏈分叉問題進(jìn)行詳細(xì)的分析。
單純的分析比特幣挖礦的模型,出現(xiàn)鏈的分叉是一個(gè)必然結(jié)果,早期的區(qū)塊鏈挖礦的設(shè)計(jì),是礦工與礦工之間獨(dú)立地進(jìn)行,下面我們進(jìn)行實(shí)驗(yàn)分析,實(shí)驗(yàn)條件是,已存在區(qū)塊長(zhǎng)度為10的區(qū)塊鏈,比特幣礦工只有10人,區(qū)塊鏈的尾塊暫且定為a,實(shí)驗(yàn)假定,10個(gè)比特幣的礦工,其中有兩個(gè)礦工同時(shí)達(dá)到了獲取比特幣的條件,即同時(shí)產(chǎn)生了新的比特幣區(qū)塊信息節(jié)點(diǎn),分別為i和j。而此時(shí)由于雙方都不知道對(duì)方是否挖礦成功,兩個(gè)礦工都默認(rèn)地向全網(wǎng)廣播了i和j,此時(shí)區(qū)塊鏈網(wǎng)絡(luò)中出現(xiàn)了兩個(gè)區(qū)塊,兩個(gè)區(qū)塊的指向的尾塊都是a,于是區(qū)塊鏈網(wǎng)絡(luò)會(huì)出現(xiàn)以i和j為尾塊的兩條鏈,而且兩條鏈都是合法的鏈,于是區(qū)塊鏈就出現(xiàn)了分叉的問題。
這個(gè)問題是單純的挖礦模型必然產(chǎn)生的問題,該區(qū)塊鏈分叉的問題會(huì)導(dǎo)致兩條分叉鏈,最終比特幣的消費(fèi)會(huì)出現(xiàn)重復(fù)消費(fèi)的風(fēng)險(xiǎn),如果一直持續(xù)下去,整個(gè)區(qū)塊鏈的分叉網(wǎng)絡(luò)鏈將會(huì)越來越多,使得區(qū)塊鏈中的節(jié)點(diǎn)網(wǎng)絡(luò)的通訊開銷呈指數(shù)級(jí)的增長(zhǎng),系統(tǒng)運(yùn)行效率急劇下降,最終會(huì)將網(wǎng)絡(luò)的性能拖垮,區(qū)塊鏈比特幣技術(shù)為了解決這個(gè)問題,引入了區(qū)塊鏈高度的變量,為共識(shí)檢測(cè)點(diǎn),每隔一段時(shí)間,區(qū)塊鏈網(wǎng)絡(luò)會(huì)同步一下區(qū)塊鏈的高度,將高度異常的區(qū)塊鏈定義為非法區(qū)塊鏈,這樣,非法區(qū)塊鏈上的區(qū)塊信息即為無意義區(qū)塊,對(duì)整個(gè)區(qū)塊鏈將不會(huì)產(chǎn)生任何影響,同步區(qū)塊鏈的高度過程,成為共識(shí)過程,比特幣區(qū)塊鏈實(shí)用共識(shí)技術(shù),解決了挖礦模型的分叉問題。
由于使用了共識(shí)的檢測(cè)節(jié)點(diǎn)作為處理分叉的方案,區(qū)塊的分叉并不是實(shí)時(shí)的同步,在某一時(shí)間節(jié)點(diǎn)下,每個(gè)區(qū)塊鏈的尾部部分的區(qū)塊可能是分叉區(qū)塊,在共識(shí)同步之前,還會(huì)有新的區(qū)塊信息追加在分叉的鏈后,但是因?yàn)橥焦沧R(shí)檢測(cè)點(diǎn)的存在,分叉鏈的無限增長(zhǎng)的概率會(huì)指數(shù)下降,在這樣一個(gè)實(shí)際情況下,比特幣組織在處理比特幣交易的時(shí)候,采用的是延時(shí)交易確認(rèn),即發(fā)起比特幣交易到交易成功中間需要有時(shí)間間隔,時(shí)間間隔的長(zhǎng)短正好是區(qū)塊鏈共識(shí)檢測(cè)點(diǎn)時(shí)間間隔。
1 區(qū)塊鏈的分叉類型
比特幣區(qū)塊鏈不僅僅是自身運(yùn)行會(huì)產(chǎn)生分叉,同時(shí)比特幣區(qū)塊鏈會(huì)在技術(shù)升級(jí)時(shí)人為的產(chǎn)生區(qū)塊鏈分叉問題,因?yàn)楸忍貛艆^(qū)塊鏈的組成是很多個(gè)共識(shí)節(jié)點(diǎn),當(dāng)技術(shù)升級(jí)時(shí),每個(gè)共識(shí)節(jié)點(diǎn)會(huì)出現(xiàn)升級(jí)的分歧意見,導(dǎo)致每個(gè)共識(shí)節(jié)點(diǎn)在升級(jí)之后的驗(yàn)證行為發(fā)生了不同,在之后的運(yùn)行過程中將會(huì)產(chǎn)生多個(gè)區(qū)塊鏈,這樣就出現(xiàn)了人為的區(qū)塊鏈分叉,這種分叉是允許的,同時(shí)該分叉的類型分為硬分叉和軟分叉兩種。
硬分叉指的是升級(jí)前的舊區(qū)塊共識(shí)節(jié)點(diǎn)和升級(jí)后的新區(qū)塊共識(shí)節(jié)點(diǎn)的鏈的分叉,在比特幣區(qū)塊鏈進(jìn)行技術(shù)升級(jí)之前,會(huì)將方案提交,盡量地征求大部分的比特幣區(qū)塊鏈共識(shí)節(jié)點(diǎn)的省級(jí)統(tǒng)一,這是硬分叉的前提條件,當(dāng)大部分共識(shí)節(jié)點(diǎn)同意升級(jí)請(qǐng)求后,會(huì)進(jìn)行升級(jí),升級(jí)過后,新的區(qū)塊鏈的區(qū)塊驗(yàn)證機(jī)制將會(huì)有別于就的區(qū)塊驗(yàn)證機(jī)制,比特幣區(qū)塊鏈此時(shí)會(huì)存在兩條區(qū)塊鏈,但是兩條鏈的區(qū)塊共識(shí)節(jié)點(diǎn)是不成比例的,在系統(tǒng)之后的運(yùn)行過程中,舊的區(qū)塊鏈節(jié)點(diǎn)會(huì)越來越少,挖礦的礦工會(huì)逐步的升級(jí)到新的區(qū)塊鏈中,硬分叉在最終將會(huì)被共識(shí)統(tǒng)一,前提是升級(jí)方案得到大多數(shù)節(jié)點(diǎn)的同意,硬分叉地出現(xiàn)在2017年,當(dāng)時(shí)力推了SegWit2x的升級(jí),產(chǎn)生硬分叉,此次的升級(jí)時(shí)為了提高區(qū)塊鏈的區(qū)塊信息大小。但是目前各方的反應(yīng)都不同,其中BTCC交易所的聯(lián)合創(chuàng)始人兼首席執(zhí)行官鮑比·李,從最初的贊同升級(jí),到現(xiàn)在反對(duì)和擔(dān)憂本次的硬分叉升級(jí)。
軟分叉的實(shí)質(zhì)相對(duì)硬分叉來說,沒有實(shí)際產(chǎn)生多條分叉區(qū)塊鏈,是一種在區(qū)塊信息驗(yàn)證機(jī)制上的分歧,但是新的區(qū)塊驗(yàn)證機(jī)制會(huì)去向下兼容就的區(qū)塊驗(yàn)證機(jī)制,這樣雖然在整個(gè)區(qū)塊鏈中,同時(shí)有兩種區(qū)塊驗(yàn)證方式,但是實(shí)際上不會(huì)產(chǎn)生新的區(qū)塊鏈分叉,軟分叉的產(chǎn)生比硬分叉要早,在2012年產(chǎn)生過一次,是比特幣的BIP升級(jí)項(xiàng)目,當(dāng)時(shí)使用的就是軟分叉方案。軟分叉的不足之處是在于區(qū)塊驗(yàn)證協(xié)議的兼容性和驗(yàn)證協(xié)議的安全性之間的矛盾,很難在兩者之間取一個(gè)合適的平衡點(diǎn),所以實(shí)際過程中,軟分叉不太好設(shè)計(jì)。
2 基于隨機(jī)公證節(jié)點(diǎn)機(jī)制算法
為了解決區(qū)塊鏈硬分叉的問題,作者提出了一種算法機(jī)制,隨機(jī)公證節(jié)點(diǎn)機(jī)制來解決區(qū)塊鏈分叉問題,該算法的具體定義流程如下,分為兩個(gè)部分,一個(gè)是隨機(jī)公證節(jié)點(diǎn)的選取,一個(gè)是新區(qū)塊的產(chǎn)生。
選取隨機(jī)公證節(jié)點(diǎn)的步驟如圖1所示。
首先需要選取一個(gè)節(jié)點(diǎn)作為算法的開始,由該節(jié)點(diǎn)進(jìn)行隨機(jī)挑選,產(chǎn)生一個(gè)公證節(jié)點(diǎn)a,同時(shí)將選取結(jié)果和節(jié)點(diǎn)a的信息一并廣播到區(qū)塊鏈網(wǎng)絡(luò)中,當(dāng)區(qū)塊鏈節(jié)點(diǎn)接收到廣播信息時(shí),未被選中的節(jié)點(diǎn)驗(yàn)證廣播信息,如果驗(yàn)證不通過,則丟棄信息,算法結(jié)束,如果驗(yàn)證通過,則將信息更新至本地日志,記錄公證節(jié)點(diǎn)編號(hào),被選中的節(jié)點(diǎn)驗(yàn)證廣播信息,如果驗(yàn)證不通過,則丟棄信息,算法結(jié)束,如果驗(yàn)證通過,則標(biāo)記自身為公證節(jié)點(diǎn),更新本地日志信息,同時(shí)會(huì)停止產(chǎn)生新區(qū)塊的功能。
新區(qū)塊的產(chǎn)生步驟如圖2所示。
新區(qū)塊產(chǎn)生機(jī)制其實(shí)有兩條分支在運(yùn)行,當(dāng)非公證節(jié)點(diǎn)產(chǎn)生新區(qū)塊之后,會(huì)廣播新區(qū)塊信息提案到區(qū)塊鏈,由區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行公示提案,同時(shí)還會(huì)將新區(qū)塊信息發(fā)送給公證節(jié)點(diǎn)進(jìn)行公證。
當(dāng)公證節(jié)點(diǎn)收到新區(qū)塊信息,會(huì)對(duì)區(qū)塊信息進(jìn)行驗(yàn)證,如果驗(yàn)證不通過,會(huì)將新區(qū)塊丟棄,同時(shí)會(huì)將該丟棄的記錄廣播給全網(wǎng),使新區(qū)塊不可信,新區(qū)塊信息的共識(shí)過程就會(huì)被終止。如果驗(yàn)證通過,會(huì)將新區(qū)塊更新添加記錄在公證節(jié)點(diǎn)本地的區(qū)塊鏈尾部,同時(shí)會(huì)將該驗(yàn)證消息廣播給全網(wǎng),使新區(qū)塊可信,新區(qū)塊信息的共識(shí)過程正常進(jìn)行。當(dāng)公證節(jié)點(diǎn)在同一個(gè)共識(shí)過程中,收到了多個(gè)新區(qū)塊的驗(yàn)證請(qǐng)求,當(dāng)都通過驗(yàn)證后,公證節(jié)點(diǎn)會(huì)發(fā)起全網(wǎng)投票,通過投票結(jié)果,決定新區(qū)塊是否可信,重復(fù)上述的動(dòng)作。當(dāng)新區(qū)塊全部產(chǎn)生,共識(shí)結(jié)束后,算法正常退出。
3 結(jié)論
論文論述了區(qū)塊鏈分叉的背景,區(qū)塊鏈分叉中的硬分叉和軟分叉,在此基礎(chǔ)上提出了一種基于隨機(jī)公證節(jié)點(diǎn)機(jī)制的算法,該算法能夠有效地避免區(qū)塊鏈的硬分叉鏈的不斷增長(zhǎng),當(dāng)區(qū)塊鏈出現(xiàn)硬分叉時(shí),同一共識(shí)視圖過程中,出現(xiàn)多個(gè)可信的新區(qū)塊的情況,能夠通過公證節(jié)點(diǎn)的裁決和投票,讓新區(qū)塊的盡量地轉(zhuǎn)移到大多數(shù)節(jié)點(diǎn)的主區(qū)塊鏈中,當(dāng)區(qū)塊鏈運(yùn)行一段時(shí)間過后,硬分叉的情況會(huì)逐步地減少,最終消除。該算法的公證裁決建立在本身的區(qū)塊鏈節(jié)點(diǎn),能夠消除區(qū)塊鏈分叉的同時(shí),保證了區(qū)塊鏈的去中心化特性,對(duì)區(qū)塊鏈中的區(qū)塊信息的安全性得到了保證,本文對(duì)于區(qū)塊鏈的分叉問題的分析研究,是為了給其他相關(guān)的研究人員一個(gè)借鑒思路,為以后提出更加成熟的解決方案奠定基礎(chǔ),這是本文研究的目的所在。
參考文獻(xiàn)
[1]張龑,劉德.區(qū)塊鏈中的安全問題研究[J].數(shù)字技術(shù)與應(yīng)用,2017(8):199-200.
[2]韓璇,劉亞敏.區(qū)塊鏈技術(shù)中的共識(shí)機(jī)制研究[J].信息網(wǎng)絡(luò)安全,2017(9).
[3]馬昂,潘曉,吳雷,et al.區(qū)塊鏈技術(shù)基礎(chǔ)及應(yīng)用研究綜述[J].信息安全研究,2017, 3(11).
[4]賈引獅.基于區(qū)塊鏈技術(shù)的網(wǎng)絡(luò)版權(quán)交易問題研究[J].科技與出版,2018(7).
[5]劉肖飛.基于動(dòng)態(tài)授權(quán)的拜占庭容錯(cuò)共識(shí)算法的區(qū)塊鏈性能改進(jìn)研究[D]. ?2017.
[6]王健,陳恭亮.比特幣區(qū)塊鏈分叉研究[J].通信技術(shù),2018.
[7]海沫,朱建明.區(qū)塊鏈網(wǎng)絡(luò)最優(yōu)傳播路徑和激勵(lì)相結(jié)合的傳播機(jī)制[J].計(jì)算機(jī)研究與發(fā)展,2019,56(6):1205-1218.
[8]卿蘇德,姜瑩,王秋野.區(qū)塊鏈的技術(shù)原理和意義[J].電信網(wǎng)技術(shù),2016(12):14-20.
[9]袁超.區(qū)塊鏈中硬分叉期間的防御方案[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2019(09):5-9+15.
[10]劉曉蕾.區(qū)塊鏈社區(qū):一種新型的組織模式[J].人民論壇·學(xué)術(shù)前沿,2018,No.148(12):13-19.