秦波/QIN Bo
喬鑫/QIAO Xin
(中國人民大學(xué),北京100872)
區(qū)塊鏈本質(zhì)上是一種去中心化的、節(jié)點(diǎn)與節(jié)點(diǎn)之間地位平等的數(shù)據(jù)庫,其概念首次出現(xiàn)在中本聰?shù)摹侗忍貛牛阂环N點(diǎn)對點(diǎn)式的電子現(xiàn)金系統(tǒng)》一文中[1]。區(qū)塊鏈通過運(yùn)用加密算法、時(shí)間戳、共識機(jī)制和獎勵機(jī)制,幫助陌生的節(jié)點(diǎn)建立了信任,目前廣泛應(yīng)用于代幣以及分布式系統(tǒng)之中。區(qū)塊鏈有著匿名性與安全性的特點(diǎn),避免了中心化帶來的數(shù)據(jù)丟失風(fēng)險(xiǎn)和管理問題。在區(qū)塊鏈基礎(chǔ)上,又延伸出超級賬本、智能合約等概念。作為區(qū)塊鏈中構(gòu)建信任的核心,共識機(jī)制也愈發(fā)受到學(xué)界的不斷關(guān)注。
由于區(qū)塊鏈中節(jié)點(diǎn)眾多,節(jié)點(diǎn)地理分布較廣,且不同節(jié)點(diǎn)之間的通信存在延遲,因此需要一種算法決定新塊的記賬權(quán)以保證節(jié)點(diǎn)數(shù)據(jù)的一致性,這種算法被稱為共識機(jī)制[2]。共識機(jī)制以所有誠實(shí)節(jié)點(diǎn)數(shù)據(jù)保持一致為目標(biāo),同時(shí)要求在節(jié)點(diǎn)互相平等的情況下明確記賬權(quán)的歸屬。由于共識機(jī)制的存在,用戶無需信任交易,另一方同時(shí)也無需信任第三方機(jī)構(gòu)即可完成交易。區(qū)塊鏈支持多種共識機(jī)制,這些共識機(jī)制在效率、安全性、資源消耗等方面各不相同,因此文章中我們著重探討了常見共識機(jī)制的發(fā)展歷史、效率以及安全性。
共識機(jī)制,即多個個體達(dá)成一致的機(jī)制。共識機(jī)制可以根據(jù)達(dá)成共識的個體,分為算法共識和決策共識2類[3]。算法共識致力于研究復(fù)雜的網(wǎng)絡(luò)環(huán)境下,去中心化的網(wǎng)絡(luò)如何達(dá)成一致的問題,本質(zhì)是多個機(jī)器達(dá)成共識。決策共識目的是幫助人達(dá)成一致,在分布式人工智能領(lǐng)域較為常見。區(qū)塊鏈中共識算法屬于前者,目的在于在多個節(jié)點(diǎn)中記錄同樣的賬本。區(qū)塊鏈中共識機(jī)制要求滿足2個性質(zhì):一致性,即不同的節(jié)點(diǎn)記錄的數(shù)據(jù)必須相同;有效性,節(jié)點(diǎn)記錄的數(shù)據(jù)格式和內(nèi)容必須滿足區(qū)塊鏈規(guī)則。
共識問題,首先在數(shù)學(xué)界受到關(guān)注。早在1959年,EISENBERG E和GALE D研究了特定條件下如何在一組個體中形成共識概率分布問題。隨后共識問題受到了不同學(xué)界的廣泛關(guān)注。
在計(jì)算機(jī)界,尤其是分布式系統(tǒng)部分,共識問題引起了廣泛關(guān)注。在共識問題的發(fā)展過程中,首先僅考慮了節(jié)點(diǎn)的可靠性,之后加入了容錯問題,但節(jié)點(diǎn)依然要求相對可信。在當(dāng)前常用的共識算法中,許多算法允許節(jié)點(diǎn)隨意加入網(wǎng)絡(luò)而不要求較高的可信性。
1989年,LAMPORT L已經(jīng)提出了Paxos算法[4],但由于Paxos算法過程較為復(fù)雜,且文章內(nèi)容過于晦澀難懂,直到1998年才通過評審。此種算法基于消息傳遞模型,適用于多個過程需要達(dá)成共識的場合。
2013年 ,ONGAROD和OUSTERHOUT J在《In Search of An Understandable Consensus Algorithm》一文中提出了Raft共識算法[5]。作者基于Paxos進(jìn)行了改進(jìn),使之更容易理解。它與Paxos相當(dāng),對構(gòu)建實(shí)際系統(tǒng)起了促進(jìn)作用。目前百度公開了Raft開源實(shí)現(xiàn)代碼。
驗(yàn)證池共識機(jī)制在基于傳統(tǒng)的共識算法上進(jìn)行了改進(jìn),適用于幾大商業(yè)中心的聯(lián)合建鏈。該方案是基于傳統(tǒng)的拜占庭容錯(BFT)及其變種的共識方案,需要參與者能夠相互辨識,不需要發(fā)幣即可實(shí)現(xiàn)。驗(yàn)證池算法十分高效,可以實(shí)現(xiàn)秒級共識。
拜占庭將軍問題,指的是地理上有一定間隔且可能不誠實(shí)的節(jié)點(diǎn)如何達(dá)成一致的問題。BFT指的是在整個系統(tǒng)中節(jié)點(diǎn)共有n個,最終要求誠實(shí)節(jié)點(diǎn)達(dá)成一致的情況下最多允許多少非誠實(shí)節(jié)點(diǎn)。經(jīng)典算法下,要求非誠實(shí)節(jié)點(diǎn)數(shù)量t與整個系統(tǒng)節(jié)點(diǎn)數(shù)量n滿足n≥3t+1。最早在1999年 的 《Practical Byzantine Fault Tolerant》[6]一文中作者就給出了容錯量為1/3的算法。在分布式數(shù)據(jù)庫中,為了避免部分服務(wù)器被黑客侵入造成整個網(wǎng)絡(luò)崩潰的問題,采用了帶有容錯的公式算法。更進(jìn)一步地,中本聰在設(shè)計(jì)區(qū)塊鏈網(wǎng)絡(luò)時(shí)提出了創(chuàng)新算法思路,增加了提出議案的經(jīng)濟(jì)成本,采用經(jīng)濟(jì)懲罰來制約破壞者。
2008年,中本聰提出了工作量證明(PoW)共識機(jī)制。該共識機(jī)制沿用了PoW的概念[7]。這一算法要求節(jié)點(diǎn)在提出議案之前必須進(jìn)行大量工作(運(yùn)算),并且提出議案時(shí)必須同時(shí)提交做出了大量工作的證明,這一方案將節(jié)點(diǎn)容錯量轉(zhuǎn)換為算力容錯量,對女巫攻擊進(jìn)行了有效防范,可以允許節(jié)點(diǎn)自主添加到網(wǎng)絡(luò)。在此之后提出的Proof of X的共識方案也是基于此種思想。傳統(tǒng)分布式網(wǎng)絡(luò)要求節(jié)點(diǎn)需要相對可信且進(jìn)入網(wǎng)絡(luò)需要認(rèn)證,而這一共識機(jī)制使其變?yōu)榱巳我夤?jié)點(diǎn)均可加入網(wǎng)絡(luò),使比特幣可以應(yīng)用于現(xiàn)實(shí)環(huán)境。
早在中本聰提出比特幣之前,BFT算法已經(jīng)存在,1999年LISKOU B等提出了實(shí)用拜占庭容錯算法。該算法達(dá)成共識需要“請求、預(yù)準(zhǔn)備、準(zhǔn)備、確認(rèn)、回應(yīng)”5個步驟。其中“預(yù)準(zhǔn)備、準(zhǔn)備、確認(rèn)”3個步驟用于保障一致性。該算法雖然擁有1/3的容錯性,但并不能防范女巫攻擊,因此不能用于公有鏈類型貨幣中。實(shí)用拜占庭容錯算法(PBFT)是傳統(tǒng)一致性算法的改進(jìn),算法十分高效,在不需要貨幣體系的許可鏈或者私有鏈中較為常用。目前,IBM創(chuàng)建的超級賬本就是使用了該算法作為共識機(jī)制。
秉持分布式系統(tǒng)無法同時(shí)兼顧一致性、可用性與分區(qū)容忍性(CAP)原理[8],中本聰設(shè)計(jì)了PoW共識機(jī)制?,F(xiàn)階段常見共識算法其中一類為證明類共識,即Proof of X共識方案,是在PoW共識方案之上的變種,將PoW改換為其余證明。PoW算法現(xiàn)階段依然盛行,使用PoW共識的代表貨幣比特幣依然占據(jù)最大市值。
2011年7 月,一 位 名 為MECHANIC Q的數(shù)字貨幣愛好者首次提出權(quán)益證明(PoS)共識算法[9]。該算法以節(jié)點(diǎn)持有幣數(shù)乘持有時(shí)間作為一個節(jié)點(diǎn)的權(quán)益,當(dāng)前權(quán)益最高的節(jié)點(diǎn)最可能獲得生成新塊的權(quán)力。點(diǎn)點(diǎn)幣、黑幣采用了PoW與PoS混合的共識算法,同時(shí)以太坊共識機(jī)制擬采用PoW與PoS混合的方案。
SCHWARTZ D提出了瑞波協(xié)議共識算法,該算法在產(chǎn)生新塊之前要求多輪投票,不需要挖礦。此算法較為高效,但BFT能力為僅(n-1)/5且節(jié)點(diǎn)必須提前確定。代表性應(yīng)用為瑞波幣。
2013年8 月,股份授權(quán)證明(DPoS)算法由比特股項(xiàng)目提出。該算法根據(jù)權(quán)益投票選舉,選舉中得到票數(shù)最多的前N個節(jié)點(diǎn)成為“代表”,輪流產(chǎn)生新塊。DPoS目前應(yīng)用于EOS中,支持了EOS的高效率交易。
2015年,小蟻鏈(NEO)白皮書提出授權(quán)拜占庭容錯(DBFT)共識算法。DBFT允許大規(guī)模節(jié)點(diǎn)參與投票,拜占庭容錯量為1/3。DBFT在生成新的區(qū)塊前需要先經(jīng)過投票。為了減少資源消耗,NEO需要通過投票確定多個記賬人組成記賬人團(tuán)體,記賬人團(tuán)體間按BFT算法達(dá)成一致。
當(dāng)前階段,共識算法呈現(xiàn)出百花齊放的態(tài)勢,例如2-hop[10],限制51%攻擊者在擁有51%以上算力的同時(shí)還需要擁有51%以上的權(quán)益。目前燃燒證明(PoB)、活躍證明(PoA)等共識機(jī)制成為了新研究方向。另外,存在共識算法在PoW基礎(chǔ)上添加了Ghost協(xié)議,將無用的挖礦算力轉(zhuǎn)換為解決有效問題。這些算法大多是PoW、PoS或者傳統(tǒng)一致性算法的改進(jìn)或混合,《區(qū)塊鏈共識算法發(fā)展現(xiàn)狀與展望》[3]一文將當(dāng)前的共識協(xié)議進(jìn)行總結(jié)并對其脈絡(luò)進(jìn)行梳理,指出了共識協(xié)議的發(fā)展方向。
區(qū)塊鏈的創(chuàng)新在于在去中心化系統(tǒng)中如何取得信任,并以此獲得可容錯性、抗攻擊性、抗共謀性。而作為取得信任的核心,共識機(jī)制是區(qū)塊鏈的神韻。目前,共識機(jī)制面對場景多種多樣,共識機(jī)制的設(shè)計(jì)也多種多樣,然而共識機(jī)制的本質(zhì)始終相同,即消耗資源以換取信任。因此,共識機(jī)制的評判標(biāo)準(zhǔn)可以總結(jié)為“消耗多少資源,換取多少節(jié)點(diǎn)的信任,換取信任的程度,換取信任的速度,換取是否需要前提條件”,即資源消耗問題、節(jié)點(diǎn)擴(kuò)展性問題、安全性問題、效率問題以及開放性問題。不同的場景中對以上問題的注重程度不同,因此所適用的共識機(jī)制不同,例如:大額資金交易過程中安全性的重要程度遠(yuǎn)遠(yuǎn)高于資源消耗的重要程度,因此大多選擇PoW共識機(jī)制。而小額資金交易過程中,對效率要求較高,因此DPoS是一個較好的選擇。
共識機(jī)制使用資源換取效率的過程并不是憑空產(chǎn)生的,而是有著一定的前提。當(dāng)前共識機(jī)制信任來源總結(jié)如下,其中一種共識機(jī)制不一定基于全部信任來源:
(1)對數(shù)學(xué)、密碼學(xué)的信任。任何共識機(jī)制都不能離開數(shù)學(xué)基礎(chǔ),例如:PoW建立在哈希函數(shù)的單向性之上,任何挖礦手段也都需要數(shù)學(xué)的參與,甚至隨機(jī)選擇過程中同樣需要數(shù)學(xué)知識。對數(shù)學(xué)的信任是最有力的信任,人為條件不能改變這種信任。
(2)相信節(jié)點(diǎn)注重自身利益。此種信任是強(qiáng)有力的信任,中本聰曾經(jīng)提到:占據(jù)整個系統(tǒng)51%算力的節(jié)點(diǎn)為了自身利益,會自動維護(hù)整個系統(tǒng),而不至于發(fā)動攻擊。這種思想即建立于節(jié)點(diǎn)足夠理性、足夠注重利益的基礎(chǔ)之上。同時(shí)一些保證金制度、投票制度同樣基于此種信任。
(3)多人信任。多人信任是指大部分認(rèn)定的即為正確。這種信任借用了在生活中的信任,例如:只需要一定數(shù)目的商家支持比特幣支付,那么比特幣就可以流通。在PoW共識中,多算力認(rèn)定的數(shù)據(jù)即為正確。多人信任不僅局限于人,同時(shí)也可能為算力、權(quán)益等。目前存在的“一中央處理器(CPU)一票”思想也是基于此種信任,選舉類共識機(jī)制是基于此種信任的典型代表。
(4)人為信任。人為信任包括身份認(rèn)證和證書等其他事先約定的信任。無論是在傳統(tǒng)的一致性算法還是在區(qū)塊鏈共識算法中都十分常見。分布式系統(tǒng)中的管理員是身份認(rèn)證的典型代表。在區(qū)塊鏈中一些聯(lián)盟鏈需要證書認(rèn)證都基于此種信任。基于人為信任會極大影響區(qū)塊鏈的去中心化程度,但由于事先約定的緣故,不需要大量資源換取信任,是代價(jià)最小的一種方式,同時(shí)可能換取效率的提升。
同時(shí),在區(qū)塊鏈中共識機(jī)制與激勵機(jī)制息息相關(guān),許多共識機(jī)制的改進(jìn)是為了更好地設(shè)計(jì)激勵機(jī)制,文章中我們對此不做討論。
目前存在的主流共識機(jī)制大多為PoW的改進(jìn)(PoX系列)、PoS的改進(jìn)、傳統(tǒng)共識算法的改進(jìn)或者PoW與PoS的結(jié)合。雖然共識機(jī)制經(jīng)過多年改進(jìn),仍然有著部分缺陷,面臨著嚴(yán)重威脅。本文針對PoW、PoS、DPoS三大共識機(jī)制對其基本方案、效率以及面臨攻擊和問題進(jìn)行探究。
(1)PoW:是目前數(shù)字貨幣最為普遍的算法之一,代表案例為比特幣。比特幣效率較低,生成一個區(qū)塊時(shí)間為10 min,不能適用于小額快速交易。參照《Mastering Bitcoin》[11]中的詳細(xì)描述,挖礦公式簡記為H(block header) (2)PoS:是當(dāng)前數(shù)字貨幣的典型共識算法之一,在最早的點(diǎn)點(diǎn)幣版本中,挖礦難度同代幣數(shù)量與持有時(shí)間的乘積成反比。挖礦公式為:H(H(Bprev),A,t)≤balance(A)m×Age,其中 H 為某一哈希函數(shù),H(Bprev)為對上一塊進(jìn)行哈希運(yùn)算,t為時(shí)間戳,balance(A)為余額,m為事先定義值,Age為持幣時(shí)間。目前改進(jìn)方案中,權(quán)益與Age不再線性相關(guān)。由于不再花費(fèi)大量時(shí)間進(jìn)行運(yùn)算,PoS速度較快,效率較PoW高。 (3)DPoS:意為股份授權(quán)證明,同樣秉持著權(quán)益越高越容易計(jì)算新塊的思想。該方案類似于股份制公司。用戶根據(jù)持有代幣的多少擁有不同數(shù)量的選票,同時(shí)可以投票選舉相對可信的代表,并且由代表輪流產(chǎn)生新塊。在比特股中,代表的數(shù)量被限定為101個。該算法效率極高,使用該共識算法的EOS號稱每秒百萬級處理速度,然而要求代表相對可信,去中心化程度不如前二者。 文章中我們僅討論針對共識機(jī)制的攻擊方式,并不考慮例如雙花攻擊、日蝕攻擊、整數(shù)溢出攻擊、分布式拒絕服務(wù)(DDoS)等針對區(qū)塊鏈其余部分的攻擊方式。白帽匯安全學(xué)院列舉了5種針對共識機(jī)制的攻擊方式[12],部分攻擊方式僅針對部分共識算法。 (1)短距離攻擊。短距離攻擊步驟為:首先向全網(wǎng)提交一個交易,然后攻擊者試圖回滾該交易,攻擊者在該交易之前的區(qū)塊上繼續(xù)進(jìn)行挖礦,在該交易得到n次確認(rèn)后,若不含該交易的分叉區(qū)塊數(shù)足夠長,則該分叉成為主鏈,成功回滾交易。 短距離攻擊的典型代表是賄賂攻擊。賄賂攻擊的核心思想在于使用賄賂促使節(jié)點(diǎn)選擇在對攻擊者有利的鏈。典型攻擊步驟如下: 1)攻擊者購買商品,并使用數(shù)字貨幣支付; 2)商戶開始等待交易入鏈; 3)攻擊者宣稱獎勵不包含此次交易的最長鏈,如果這條主鏈被廣泛接受,攻擊者被認(rèn)為沒有交易; 4)當(dāng)步驟3中產(chǎn)生的鏈足夠長時(shí),攻擊者使用更大的獎勵賄賂一部分礦工生成包含此次交易的鏈條。雖然存在更長主鏈,但礦工為了自身利益,會選擇從之前開始重新挖礦; 5)在此次交易得到6次確認(rèn)之后,攻擊者順利地造成了交易得到確認(rèn)而主鏈上并沒有此筆交易的情況,此時(shí)攻擊者停止獎勵; 6)貨物到手,由于包含交易的鏈較不包含交易的鏈短,不包含交易的鏈成為主鏈。 對于礦工而言,如果不存在獎勵(賄賂)的情況下,是否添加攻擊者進(jìn)行的交易獲得的獎勵是相同的,因此攻擊者在步驟3只需要較少獎勵即可誘使礦工在主鏈中不加入這筆交易。攻擊者在整個攻擊過程中,只需要賄賂金額小于商品金額即可攻擊成功。 對于不等待確認(rèn)的商戶來說,只需要很小甚至不需要賄賂即可簡單的促使這筆交易失效。 (2)長距離攻擊。長距離攻擊與短距離攻擊不同,指攻擊者在擁有一部分資源的情況下,直接對已經(jīng)存在的區(qū)塊進(jìn)行分叉,可能獲得更多的挖礦獎勵或者否認(rèn)某筆交易。 長距離攻擊的代表為51%攻擊,惡意節(jié)點(diǎn)占據(jù)了整個節(jié)點(diǎn)的主要部分。這一攻擊和共識機(jī)制的去中心化程度有著密切聯(lián)系,常用于采用PoS共識的區(qū)塊鏈和小型采用PoW共識的系統(tǒng)中。中本聰在提出比特幣構(gòu)想中秉持了大多數(shù)原則,即大多數(shù)算力所在的鏈即為正確的鏈。為了獲得挖礦獎勵,對于誠實(shí)的節(jié)點(diǎn)而言,在最長的鏈上生成區(qū)塊是有利的。由于生成新的區(qū)塊的權(quán)力只與算力相關(guān),在大部分節(jié)點(diǎn)誠實(shí)的情況下,對攻擊者有利的鏈長度趕超經(jīng)過6次確認(rèn)的合法區(qū)塊鏈概率極低。然而,假設(shè)攻擊者擁有系統(tǒng)一半以上的算力,那么經(jīng)過足夠長時(shí)間之后必然可以使整個系統(tǒng)按照攻擊者想法運(yùn)行。中本聰認(rèn)為:擁有51%算力的攻擊者是系統(tǒng)的實(shí)際受益者,在足夠理性的情況下并不會攻擊系統(tǒng)。然而,現(xiàn)實(shí)中已經(jīng)存在51%算力攻擊的實(shí)際案例:一些老牌大型PoW共識區(qū)塊鏈礦工入侵新型PoW區(qū)塊鏈。在PoS中不要求算力,生成塊的速度相對較快。因此,攻擊者可能期望重寫整個區(qū)塊鏈。 目前已有學(xué)者在在51%攻擊基礎(chǔ)上進(jìn)行改進(jìn),大約只需要1/3的算力即可達(dá)到與51%攻擊相同的效果。 (3)幣齡累積。幣齡累積是針對初期PoS共識機(jī)制的常見攻擊方式,不存在于PoW。因?yàn)槌謳艜r(shí)間越長,獲得記賬權(quán)的概率越大。在攻擊者擁有足夠代幣之后,可以通過累積時(shí)間來達(dá)到控制網(wǎng)絡(luò)新生成塊的目的。在代幣足夠的情況下,攻擊者甚至可以將自身代幣分散于多個節(jié)點(diǎn),這一攻擊方式可以幫助攻擊者多次生成有利塊,比如回滾以進(jìn)行雙花攻擊。占有代幣1%的攻擊者可以通過2個月不進(jìn)行交易來進(jìn)行攻擊。基于同樣的理由,PoS可能出現(xiàn)冷啟動的問題。 (4)預(yù)計(jì)算。在新一代的PoS共識機(jī)制中,挖礦公式可簡寫為H(H(Bprev),A,t)≤balance(A)m。由于新塊的挖礦只與時(shí)間、余額以及上一塊的哈希值有關(guān),因此控制當(dāng)前塊的生成可以幫助攻擊者得到新塊的挖礦權(quán)。在某一節(jié)點(diǎn)擁有一定數(shù)量代幣以及算力足夠的情況下,該節(jié)點(diǎn)可以通過隨機(jī)試錯方式控制第N塊的哈希值使得攻擊者有能力對N+1塊進(jìn)行挖礦。 (5)女 巫 攻 擊 。 在《The Sybil Attack》[13]一文中,DOUCEUR J R詳細(xì)地描述了女巫攻擊的全過程。女巫攻擊的核心思想在于:通過控制多數(shù)節(jié)點(diǎn)或者偽造多個節(jié)點(diǎn)進(jìn)行攻擊。女巫攻擊的條件在于對等網(wǎng)絡(luò)中實(shí)體為一個運(yùn)行程序,且同一實(shí)體可以擁有多個網(wǎng)絡(luò)身份。例如:在一投票的對等網(wǎng)絡(luò)中,攻擊者可以通過偽造多個IP達(dá)到多次投票的目的。不僅僅在區(qū)塊鏈網(wǎng)絡(luò)中,現(xiàn)今許多投票項(xiàng)目同樣可以通過女巫攻擊攻破。 (1)挖礦耗能問題。在PoW共識機(jī)制中,挖礦僅為簡單的遍歷,浪費(fèi)了大量的算力。根據(jù)加密貨幣信息網(wǎng)站Digiconomist的數(shù)據(jù)稱:目前投入到比特幣和以太坊挖礦當(dāng)中的電力可以在所有國家和地區(qū)消耗電力中排名第71位,其中比特幣礦機(jī)消耗功率為14.54萬兆瓦[14]。這些耗能僅用于交易的確認(rèn),造成了巨大的浪費(fèi)。同時(shí),挖礦造成了顯卡等產(chǎn)品的大量損耗,造成產(chǎn)品單價(jià)激增。 (2)去中心化程度不足問題。在PoS以及PoW共識機(jī)制中,節(jié)點(diǎn)與節(jié)點(diǎn)之間地位完全平等,因此去中心化程度較高。然而由于比特幣等貨幣算力不斷上漲,單個設(shè)備挖礦已經(jīng)很難獲得挖礦的獎勵。促使一些“bitcointalk”上的極客開發(fā)出一種可以將少量算力合并聯(lián)合運(yùn)作的方法,使用這種方式建立的網(wǎng)站便被稱作“礦池”。對于比特幣而言,目前全球約70%的算力在中國礦池手中,這可能會造成去中心化程度不足與51%攻擊。由于PoS對硬件要求較小,普通計(jì)算機(jī)可以挖礦,因此去中心化程度更高。對于DPoS而言,節(jié)點(diǎn)之間并不完全平等,因此去中心化程度不如PoW與PoS。 (3)冷啟動問題。對于PoS共識機(jī)制而言,持幣量和持幣時(shí)間的增長會降低挖礦難度。因此在PoS共識下,初期持有代幣的節(jié)點(diǎn)更加傾向于不進(jìn)行交易,以獲得挖礦利潤。這就會造成代幣不流通的問題,系統(tǒng)的啟動較為困難。 (4)賬本分叉問題。在區(qū)塊鏈中,通常以最長的鏈作為主鏈,礦工在最長的鏈上進(jìn)行挖礦。在PoW共識算法下,由于礦工算力有限,面臨多條鏈時(shí),礦工通常會在最長鏈上進(jìn)行挖礦。然而在PoS共識機(jī)制下,礦工為了自身利益,通常會選擇多個鏈進(jìn)行挖礦,這可能導(dǎo)致區(qū)塊鏈的分叉。同時(shí),攻擊者如果使用了預(yù)計(jì)算與幣齡累積攻擊同樣可能造成賬本分叉。 (1)PoW。由于PoW要求大量運(yùn)算力,因此賄賂攻擊很難實(shí)現(xiàn),攻擊者需要賄賂大部分節(jié)點(diǎn)才可以實(shí)現(xiàn)賄賂攻擊,這往往得不償失。同樣由于挖礦需要大量算力,女巫攻擊失去了效果。同時(shí)51%攻擊要求攻擊者擁有51%算力,攻擊條件十分苛刻。在新生PoW鏈中,為了防止原有的大型PoW鏈礦工發(fā)動51%攻擊,往往改動地址生成過程中的哈希函數(shù)。針對PoW耗能過高問題,目前部分節(jié)點(diǎn)采用Ghost協(xié)議,此協(xié)議將無用的挖礦改為了計(jì)算大素?cái)?shù)等數(shù)學(xué)問題,部分解決了耗能問題。 (2)PoS。對于短距離攻擊,最常見的解決方式為在PoS共識機(jī)制中引入保證金和懲罰措施,這基于“節(jié)點(diǎn)注重自身利益”這一條件下,目前以太坊擬采用casper協(xié)議抵御攻擊。在引入保證金機(jī)制后,節(jié)點(diǎn)會為保證金反對做出對區(qū)塊鏈不利的決策。懲罰措施可以使節(jié)點(diǎn)得不到攻擊者事先聲明的報(bào)酬,促使節(jié)點(diǎn)做出對區(qū)塊鏈有利的決策。針對幣齡累積攻擊,通常限制持幣時(shí)間對挖礦難度的降低作用。蝸牛幣提出了股份速率證明(PoSV)機(jī)制,將難度函數(shù)改進(jìn)為指數(shù)衰減函數(shù)。在PoSV共識下,節(jié)點(diǎn)累計(jì)足夠長的時(shí)間之后,繼續(xù)累積很難提高收益,解決了幣齡累積攻擊。針對冷啟動問題,目前大多數(shù)區(qū)塊鏈采取了在鏈初期首先使用PoW機(jī)制,中期使用PoW+PoS結(jié)合方式,最后采用純PoS共識機(jī)制。 (3)DPoS。DPoS機(jī)制本身對短距離攻擊與預(yù)計(jì)算攻擊有較強(qiáng)防范,其余防范方式與PoS基本相似。 共識機(jī)制經(jīng)過了數(shù)年的發(fā)展,在經(jīng)過探索和開放式創(chuàng)新之后,勢必進(jìn)入到性能安全性等的比拼之中。表1分別為PoW、PoS、DPoS面臨的攻擊威脅表。 為了保證較高的安全性,一部分共識算法在效率方面做出了退步,表2為當(dāng)前主流共識機(jī)制性能、特點(diǎn)的對比。 總結(jié)來看:當(dāng)前PoW共識機(jī)制的安全性較高、面臨攻擊威脅小,但效率較低;PoS和授權(quán)股權(quán)證明效率較高,但犧牲了部分安全性。傳統(tǒng)共識機(jī)制對各種攻擊防范較為到位并且效率比較高,但是大多不能進(jìn)行拜占庭容錯。 目前共識機(jī)制應(yīng)用的場景越來越廣泛,且不同場景下對共識機(jī)制安全性與效率要求不同,能否找到一種適用于大多數(shù)場景的共識成為關(guān)鍵。 共識機(jī)制的發(fā)展目標(biāo)在于資源消耗問題、節(jié)點(diǎn)擴(kuò)展性問題、安全性問題、效率問題以及開放性問題5個方面的提升,例如:Ghost協(xié)議是在PoW基礎(chǔ)之上緩解了部分資源消耗的問題。在5個維度不能同時(shí)提升的情況下根據(jù)特定情況選擇犧牲一部分換取另一部分的提升同樣是當(dāng)前研究的熱點(diǎn)。當(dāng)前為了適應(yīng)實(shí)際生活的交易,犧牲部分安全性以換取效率的共識機(jī)制十分常見,例如:DPoS機(jī)制。 表1 工作量證明、權(quán)益證明、授權(quán)股權(quán)證明面臨威脅 表2 共識機(jī)制性能 根據(jù)基于方案的不同,當(dāng)前共識機(jī)制可以歸結(jié)為傳統(tǒng)一致性算法的改進(jìn)、PoW算法的改進(jìn)、PoS算法的改進(jìn),以及PoW與PoS的結(jié)合。PoW與PoS的結(jié)合是當(dāng)前共識機(jī)制的發(fā)展趨勢之一,通常屬于時(shí)間效率與安全性的妥協(xié)。 根據(jù)基于信任來源的不同,當(dāng)前共識機(jī)制許多是在同一信任類型下的替換,例如:Proof of X類型的共識協(xié)議,通常是在多人信任之下修改信任的對象。是否可以找到一種可信的并且消耗資源量小的信任對象是當(dāng)前共識機(jī)制改進(jìn)的重要問題。2.3 共識算法攻擊方式
2.4 可能存在的問題
2.5 共識算法的防范與改進(jìn)
2.6 共識機(jī)制效率與安全性對比
3 結(jié)束語