• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      區(qū)塊鏈共識(shí)算法綜述*

      2021-12-06 08:29:31呂榮鎮(zhèn)
      關(guān)鍵詞:共識(shí)區(qū)塊證明

      姜 義, 呂榮鎮(zhèn)

      (哈爾濱理工大學(xué) 測(cè)控技術(shù)與通信工程學(xué)院,黑龍江 哈爾濱 150080)

      0 引 言

      中本聰在2009年發(fā)表的比特幣白皮書(shū)[1]拉開(kāi)了區(qū)塊鏈發(fā)展的序幕。近年來(lái)區(qū)塊鏈技術(shù)的巨大發(fā)展為其在更多領(lǐng)域應(yīng)用提供了可能性。區(qū)塊鏈技術(shù)的研究與應(yīng)用都呈現(xiàn)出爆炸性增長(zhǎng)的態(tài)勢(shì),被認(rèn)為是信息技術(shù)領(lǐng)域的第五次顛覆性創(chuàng)新,是人類信用進(jìn)化史上繼血親信用、貴金屬信用、央行紙幣信用之后的第四個(gè)里程碑[2]。

      在對(duì)區(qū)塊鏈的研究中,共識(shí)算法不僅是核心的技術(shù)之一,也是分布式網(wǎng)絡(luò)重要的研究課題,其研究?jī)?nèi)容包括共識(shí)算法和獎(jiǎng)勵(lì)機(jī)制。共識(shí)算法是區(qū)塊鏈技術(shù)達(dá)成去中心化系統(tǒng)的關(guān)鍵,其作用是使決策高度分散的去中心化系統(tǒng)能夠高效且快速的對(duì)數(shù)據(jù)的有效性達(dá)成一致。共識(shí)中的激勵(lì)包含代幣的發(fā)行機(jī)制和分配機(jī)制,其設(shè)計(jì)中引入了經(jīng)濟(jì)學(xué)的設(shè)計(jì)用于保證參與節(jié)點(diǎn)的積極性。

      目前發(fā)表的文獻(xiàn)中,袁勇[3]、蔡曉晴[4]、張亮[5]、何蒲[6]等人分別對(duì)區(qū)塊鏈技術(shù)的基礎(chǔ)技術(shù)、概念、以及未來(lái)的應(yīng)用方向進(jìn)行了敘述。該文則對(duì)區(qū)塊鏈的共識(shí)算法進(jìn)行綜述。

      1 基于一致性算法的共識(shí)機(jī)制

      在區(qū)塊鏈系統(tǒng)中共識(shí)機(jī)制的目的是使所有的誠(chéng)實(shí)節(jié)點(diǎn)獲得一致的區(qū)塊鏈視圖。一致性視圖包含兩個(gè)含義:一致性,即對(duì)區(qū)塊鏈的每一次更新后,每個(gè)節(jié)點(diǎn)都能獲得相同的視圖;有效性,即由任一誠(chéng)實(shí)節(jié)點(diǎn)在區(qū)塊鏈發(fā)布的信息都最終被其它節(jié)點(diǎn)承認(rèn)并記錄。而在區(qū)塊鏈系統(tǒng)中達(dá)成以上兩個(gè)特性的算法就是一致性算法。本節(jié)將對(duì)區(qū)塊鏈系統(tǒng)中常見(jiàn)的基于一致性算法的共識(shí)機(jī)制進(jìn)行介紹。

      1.1 PAXOS和RAFT

      早期的分布式系統(tǒng)共識(shí)中僅考慮對(duì)錯(cuò)誤節(jié)點(diǎn)的容錯(cuò),其中代表性工作包括Paxos[7]和Raft[8]等一致性協(xié)議。這些一致性算法旨在解決如何快速且正確地在集群內(nèi)部對(duì)某個(gè)數(shù)據(jù)的內(nèi)容達(dá)成共識(shí),且保證在可能發(fā)生一定異常的情況下不破壞整個(gè)系統(tǒng)的一致性。

      1.1.1 Paxos

      Paxos算法可以使分布式異步網(wǎng)絡(luò)中存在著二分之一的故障節(jié)點(diǎn)或者網(wǎng)絡(luò)本身出現(xiàn)異常的情況下,網(wǎng)絡(luò)中信息的傳輸也能正常的運(yùn)行。該算法在一定程度上容忍了信息的丟失、延時(shí)、亂序以及重復(fù)的可能性,該算法擁有的容錯(cuò)能力是2f+1。

      Paxos將節(jié)點(diǎn)的角色分為三種:提議者Proposer提出議案(Proposal),提案中包括提案編號(hào)(Proposel ID)和提案的值(Value);Acceptor決策者,用來(lái)回復(fù)Proposer的提案;收到Proposal后,若獲得多數(shù)的Acceptor的接受,提案才被允許;Learner決策學(xué)習(xí)者,不參與決策,只能學(xué)習(xí)最新達(dá)成共識(shí)的提案。Paxos算法主要解決了兩個(gè)問(wèn)題:一是各節(jié)點(diǎn)能夠區(qū)分當(dāng)前的提議者和前一個(gè)提議者,能夠阻止共識(shí)被破壞;二是一旦提議達(dá)成共識(shí),之后的提議者也必須承認(rèn)該提議,確保達(dá)成一致性。

      1.1.2 Raft

      Raft算法則是從多副本狀態(tài)機(jī)的角度提出,通過(guò)管理多副本狀態(tài)機(jī)的日志復(fù)制來(lái)實(shí)現(xiàn)共識(shí)。Raft算法中有三種角色,分別是領(lǐng)導(dǎo)者(Leader)、跟從者(Follower)、候選人(Candidate)。其中領(lǐng)導(dǎo)者主要用于傳達(dá)客戶端的信息,通知跟從者日志的同步,在收到大部分跟從者確認(rèn)后,提交日志。而跟從者則是接受并持久化日志,在領(lǐng)導(dǎo)者確認(rèn)之后進(jìn)行提交。候選人就是節(jié)點(diǎn)從跟從者到領(lǐng)導(dǎo)者的中間角色。該算法的容錯(cuò)能力與Paxos算法相同,為2f+1,但是比Paxos更容易理解和實(shí)現(xiàn)。

      Raft算法的關(guān)鍵問(wèn)題是領(lǐng)導(dǎo)者選舉(Leader Election)和日志同步(Log Replication)。Raft通過(guò)心跳觸發(fā)系統(tǒng)進(jìn)行領(lǐng)導(dǎo)人的選舉。選舉過(guò)程分為兩步:首先跟從者將自己的任期期號(hào)加一,并將角色轉(zhuǎn)變?yōu)楹蜻x者;其次向其他節(jié)點(diǎn)發(fā)送投票請(qǐng)求,希望跟從者能給其投票。如果某個(gè)候選人得票超過(guò)半數(shù),就可成為下一任期的領(lǐng)導(dǎo)人。如一段時(shí)間內(nèi),沒(méi)有節(jié)點(diǎn)獲勝,即多個(gè)領(lǐng)導(dǎo)者的票數(shù)相同,則候選人繼續(xù)增加任期號(hào),并重啟選舉。日志同步則是由客戶端發(fā)送請(qǐng)求給領(lǐng)導(dǎo)者,再由領(lǐng)導(dǎo)者進(jìn)行發(fā)布確保其和其它跟從者之間的狀態(tài)是一致的。

      1.2 BTF類

      1.2.1 PBTF

      實(shí)用拜占庭容錯(cuò)算法(PBFT)[9]出現(xiàn),使得拜占庭協(xié)議的運(yùn)行復(fù)雜度從指數(shù)級(jí)別降低到多項(xiàng)式級(jí)別,保證了算法的活性和安全性以及3f+1的容錯(cuò)能力。該算法首次提出在異步網(wǎng)絡(luò)環(huán)境下使用狀態(tài)副本復(fù)制協(xié)議,并實(shí)現(xiàn)了一種拜占庭容錯(cuò)的分布式文件系統(tǒng)。 PBFT算法中節(jié)點(diǎn)都是副本(Replica),在同一個(gè)視圖中有一個(gè)副本作為領(lǐng)導(dǎo)者(Primary),其余的副本則作為備份(Backup)。該共識(shí)機(jī)制主要有兩個(gè)部分,其中一個(gè)是有五個(gè)步驟達(dá)成共識(shí):請(qǐng)求(Request)、預(yù)準(zhǔn)備(Pre-Prepare)、準(zhǔn)備(Prepare)、提交(Commit)、回復(fù)(Reply)。如果領(lǐng)導(dǎo)節(jié)點(diǎn)出現(xiàn)故障或者錯(cuò)誤的時(shí)候,導(dǎo)致了數(shù)據(jù)無(wú)法處理,就需要啟動(dòng)視圖轉(zhuǎn)換。這個(gè)過(guò)程被稱為視圖轉(zhuǎn)換(View-Change)。

      1.2.2 HotStuff

      HotStuff[10]算法由Abraham,Gueta和Malkhi提出,該算法以傳統(tǒng)BFT共識(shí)算法為基礎(chǔ)實(shí)現(xiàn)了Pipeline BFT共識(shí)模式,將原先需要兩輪通信才能達(dá)成共識(shí)寫(xiě)入鏈中的方式,改成了先將區(qū)塊上鏈。只要一個(gè)區(qū)塊后面產(chǎn)生了三個(gè)連續(xù)區(qū)塊,那么就說(shuō)明該區(qū)塊經(jīng)過(guò)了三輪投票確認(rèn),就可以最終確認(rèn)該提前上鏈區(qū)塊成功出塊了。這種方式使得系統(tǒng)的響應(yīng)特性大幅度提高了。HotStuff網(wǎng)絡(luò)模型為部分同步網(wǎng)絡(luò),容錯(cuò)能力為n=3f+1。

      HotStuff在PBFT的基礎(chǔ)上做了較多改進(jìn)。其一將PBFT網(wǎng)狀通信網(wǎng)絡(luò)拓?fù)鋼Q成星形通信網(wǎng)絡(luò)拓?fù)?,降低了系統(tǒng)通信的復(fù)雜度。HotStuff只依靠主節(jié)點(diǎn)進(jìn)行消息的發(fā)送和處理,再把結(jié)果傳送給其他節(jié)點(diǎn)。其二將視圖切換流程和正常流程合并,采用線性視圖轉(zhuǎn)換(Linear View Change,LVC)降低切換視圖的復(fù)雜度。此外HotStuff引入了門限簽名和流水化處理。引入門限簽名的目的是為了減少共識(shí)協(xié)議中的簽名的個(gè)數(shù),在其三階段確認(rèn)中,對(duì)消息門限簽名并發(fā)送給主節(jié)點(diǎn)即為投票。這兩個(gè)改進(jìn)大幅度提高了共識(shí)的效率。

      1.2.3 LibraBFT

      LibraBFT算法被稱為另一種HotStuff的共識(shí)算法。LibraBFT基于HotStuff設(shè)計(jì)并保留了HotStuff的流水線的設(shè)計(jì),但在投票時(shí)節(jié)點(diǎn)僅將投票發(fā)給領(lǐng)導(dǎo)者,而不是發(fā)給其他節(jié)點(diǎn)。LibraBFT還使用了HotStuff無(wú)法使用的廣播形式,LibraBFT在以下情況中要求非領(lǐng)導(dǎo)者節(jié)點(diǎn)執(zhí)行廣播:節(jié)點(diǎn)定期使用廣播進(jìn)行狀態(tài)的同步;當(dāng)網(wǎng)絡(luò)出現(xiàn)問(wèn)題或者領(lǐng)導(dǎo)節(jié)點(diǎn)故障時(shí),節(jié)點(diǎn)會(huì)向其他節(jié)點(diǎn)發(fā)送消息超時(shí)。此外在LibraBFT中還添加了現(xiàn)實(shí)考量的機(jī)制,引入了“代”的概念,允許了共識(shí)節(jié)點(diǎn)交換以及增加了一些獎(jiǎng)懲機(jī)制。

      1.2.4 SBFT

      可擴(kuò)展拜占庭容錯(cuò)協(xié)議(Scalable Byzantine Fault Tolerance, SBFT)由Golan Gueta等人[11]提出,是對(duì)拜占庭容錯(cuò)算法(PBFT)的一種擴(kuò)展,其主要解決了BFT的去中心化和可擴(kuò)展性問(wèn)題。相比于PBFT適用于少數(shù)節(jié)點(diǎn)的情況,SBFT能夠使200個(gè)節(jié)點(diǎn)高效的達(dá)成共識(shí)。此外還有其它一些改進(jìn)。首先采用相互確認(rèn)的方式來(lái)確認(rèn)區(qū)塊,而SBFT則是采用收集器的線性通信模式。每個(gè)節(jié)點(diǎn)不需要再將信息發(fā)給復(fù)制節(jié)點(diǎn),而是發(fā)給收集器,再由收集器進(jìn)行廣播。其次SBFT采用了快速共識(shí)的機(jī)制,只要節(jié)點(diǎn)沒(méi)有發(fā)現(xiàn)錯(cuò)誤并且使用門限簽名將消息長(zhǎng)度降低到常數(shù)。其容錯(cuò)能力是3f+1。

      1.2.5 Honey Badger BFT

      傳統(tǒng)的PBFT是一種弱同步網(wǎng)絡(luò)的共識(shí)算法,但是這種算法受到網(wǎng)絡(luò)的延時(shí)的影響非常大。Honey Badger BFT[12]則是一種異步網(wǎng)絡(luò)的BFT算法,其對(duì)網(wǎng)絡(luò)的依賴很低,效率比PBFT提高很多。Honey Badger BFT的容錯(cuò)能力n=3f+1。Honey Badger BFT是針對(duì)異步網(wǎng)絡(luò),采用原子廣播協(xié)議設(shè)計(jì)的共識(shí)算法,其核心是Reliable Broadcast (RBC)廣播協(xié)議。RBC廣播協(xié)議使用糾刪錯(cuò)算法降低節(jié)點(diǎn)間的數(shù)據(jù)傳輸量,并通過(guò)BA算法形成一致的交易列表。該算法在網(wǎng)絡(luò)節(jié)點(diǎn)少的情況下性能不如PBFT;但在網(wǎng)絡(luò)節(jié)點(diǎn)較多時(shí),Honey Badger BFT算法的性能不會(huì)下降,而PBFT性能會(huì)顯著下降。

      2 基于證明的共識(shí)機(jī)制

      2.1工作量證明

      基于工作量證明(Proof of Work)的共識(shí)算法是各個(gè)節(jié)點(diǎn)通過(guò)競(jìng)爭(zhēng)優(yōu)先計(jì)算出隨機(jī)數(shù)來(lái)決定記賬權(quán),以此來(lái)保障數(shù)據(jù)的一致性問(wèn)題。工作量證明由Dwork和Naor[13]為了反垃圾郵件而提出,其原理為在郵件發(fā)送之前,發(fā)送方需要完成一定的計(jì)算量來(lái)獲得郵件發(fā)送的權(quán)力。比特幣網(wǎng)絡(luò)是工作量證明共識(shí)算法第一次運(yùn)用在大規(guī)模非授權(quán)網(wǎng)絡(luò)中。

      2.1.1 比特幣

      作為最典型的工作量證明的代表,比特幣系統(tǒng)的節(jié)點(diǎn)允許隨意進(jìn)入或者退出。各節(jié)點(diǎn)的工作主要是通過(guò)計(jì)算一個(gè)復(fù)雜的SHA256數(shù)學(xué)難題來(lái)爭(zhēng)奪記賬的權(quán)利。該難題通過(guò)區(qū)塊預(yù)先設(shè)定的隨機(jī)數(shù),各節(jié)點(diǎn)通過(guò)哈希函數(shù)不斷的計(jì)算出一個(gè)小于該數(shù)的數(shù),即稱為挖礦。只有第一時(shí)間被發(fā)現(xiàn)并通過(guò)校驗(yàn)的區(qū)塊才會(huì)被所有節(jié)點(diǎn)計(jì)入?yún)^(qū)塊鏈中。而解題的過(guò)程是困難的,需要強(qiáng)大的算力進(jìn)行暴力計(jì)算;但是校驗(yàn)的過(guò)程十分方便,容易很快的達(dá)成共識(shí)。因?yàn)槭褂昧嘶诠ぷ髁孔C明的共識(shí),比特幣節(jié)點(diǎn)獲得獎(jiǎng)勵(lì)的概率和其擁有的算力成正比,算力越高越容易拿到獎(jiǎng)勵(lì)。而隨著算力增加,解題的速度加快,也會(huì)產(chǎn)生過(guò)多的分叉。而挖礦難度如果過(guò)高就會(huì)導(dǎo)致系統(tǒng)的性能下降,交易的吞吐量也會(huì)為之降低,所以需要不斷的修正難度系數(shù)。

      PoW的共識(shí)系統(tǒng)中,通過(guò)獎(jiǎng)勵(lì)礦工和繳納交易費(fèi)來(lái)確保了安全性。如果某個(gè)惡意節(jié)點(diǎn)試圖破壞區(qū)塊鏈,則它需要超過(guò)總節(jié)點(diǎn)的51%的算力,即稱為51%攻擊。而發(fā)動(dòng)此類攻擊的代價(jià)是非常昂貴的,并不符合攻擊者的利益需求。但是隨著比特幣系統(tǒng)的不斷龐大,解題的難度不斷上升,獨(dú)立礦工的盈利的可能性越來(lái)越低,所以一些礦工組織起來(lái)形成了礦池來(lái)提高獲取記賬權(quán)的概率。目前算力排名前五的礦池的總算力已經(jīng)占比50%以上[14],這對(duì)系統(tǒng)的安全性和公平性有著很大的威脅。由于區(qū)塊大小和生成間隔的限制,導(dǎo)致產(chǎn)生區(qū)塊的時(shí)間過(guò)長(zhǎng)。而單純的提高區(qū)塊的容量又會(huì)導(dǎo)致網(wǎng)絡(luò)發(fā)生擁塞。如果縮短區(qū)塊生成時(shí)間,就會(huì)造成更多的分叉,也會(huì)導(dǎo)致雙花等安全問(wèn)題。

      2.1.2 Bitcoin-NG

      Bitcoin-NG是由Eyal等人[15]所提出的改進(jìn)版PoW共識(shí)機(jī)制。該算法提出了首領(lǐng)選擇(Leader Election)和交易序列化(Transaction Serialization)。它將時(shí)間劃分為段,在每個(gè)時(shí)間段都有個(gè)領(lǐng)導(dǎo)者,該領(lǐng)導(dǎo)者有資格序列化交易。該方案極大提高了吞吐量。Bitcoin-NG是序列化交易的區(qū)塊鏈共識(shí)算法,和比特幣的共識(shí)算法很相似,但是該算法會(huì)生成兩種不同的區(qū)塊:首領(lǐng)區(qū)塊和微區(qū)塊。與比特幣相比,首領(lǐng)區(qū)塊多了包含微區(qū)塊的公鑰,而微區(qū)塊中則多了一個(gè)對(duì)應(yīng)首領(lǐng)區(qū)塊的私鑰。相比于首領(lǐng)區(qū)塊,微區(qū)塊的產(chǎn)生并不需要經(jīng)過(guò)挖礦,領(lǐng)導(dǎo)節(jié)點(diǎn)的可以快速高效的生成微區(qū)塊。除此以外,系統(tǒng)通過(guò)一個(gè)專門的賬目記錄“毒藥交易”來(lái)防止分叉。后來(lái)的領(lǐng)導(dǎo)者節(jié)點(diǎn)可以對(duì)毒藥交易進(jìn)行舉報(bào),如果成功就能使惡意節(jié)點(diǎn)的酬金無(wú)效,舉報(bào)者能獲得獎(jiǎng)勵(lì)。同時(shí)因?yàn)樽铋L(zhǎng)鏈的原則,Bitcoin-NG引入了區(qū)塊重量的概念,并且只有關(guān)鍵區(qū)塊才有重量,微區(qū)塊沒(méi)有。所以Bitcoin-NG中只有最重且最長(zhǎng)的鏈才是主鏈。

      2.1.3 Byzcoin

      Byzcoin[16]是基于強(qiáng)共識(shí)協(xié)議的加密貨幣,Byzcoin建立在成熟的實(shí)用拜占庭容錯(cuò)算法之上引入聯(lián)名簽名方案來(lái)減小PBFT輪次的開(kāi)銷和輕量級(jí)客戶端校驗(yàn)交易請(qǐng)求的開(kāi)銷。Byzcoin和Bitcoin-NG一樣,區(qū)塊鏈?zhǔn)怯申P(guān)鍵區(qū)塊和微區(qū)塊組成,通過(guò)PoW機(jī)制選出領(lǐng)導(dǎo)區(qū)塊。但是Byzcoin則引入了拜占庭容錯(cuò)算法,可以在不信任的網(wǎng)絡(luò)中建立信任,同時(shí)完成即時(shí)的、不可逆的交易。Byzcoin交易的特點(diǎn)主要是其微區(qū)塊的確認(rèn)需要共識(shí)小組聯(lián)合簽名來(lái)驗(yàn)證,只有大多數(shù)礦工同意才能通過(guò),這防止了雙花攻擊。Byzcoin算法相對(duì)于Bitcoin-NG在吞吐量有所提升且降低了交易延遲。

      除了上述的一些PoW算法的改進(jìn),還有一些研究人員通過(guò)修改一致性協(xié)議來(lái)提升算法的性能,例如以太坊采用GHOST協(xié)議提升吞吐量時(shí)保證了區(qū)塊鏈的安全性。另一些研究者則采用DAG數(shù)據(jù)結(jié)構(gòu)來(lái)改進(jìn)區(qū)塊鏈的性能,例如Spectre[17]和Hashgraph[18]。

      2.1.4 性能分析

      基于工作量證明的共識(shí)算法主要面臨以下幾個(gè)問(wèn)題:

      51%攻擊[19]:51%攻擊是PoW算法最致命的弱點(diǎn)。一旦有礦工或礦池的算力能夠超過(guò)總算力的51%,就可以發(fā)動(dòng)攻擊。發(fā)動(dòng)攻擊者可以通過(guò)阻止交易被確認(rèn),或者不給其他礦工挖礦,只允許自己發(fā)送的交易被確認(rèn)來(lái)進(jìn)行攻擊。但是該攻擊成本比較大,而且收益低于成本。

      自私挖礦(Selfish Mining)[20]:Ittay Eyal等人提出的自私挖礦攻擊揭示了比特幣網(wǎng)絡(luò)中的一個(gè)漏洞,即惡意節(jié)點(diǎn)發(fā)現(xiàn)新區(qū)塊,然后將新發(fā)現(xiàn)的區(qū)塊保持為私有并在其后面添加更多的新區(qū)塊。當(dāng)其他節(jié)點(diǎn)挖掘到該區(qū)塊時(shí),惡意節(jié)點(diǎn)就將之前挖掘的區(qū)塊公布出去,成為主鏈中的最長(zhǎng)鏈并被其他節(jié)點(diǎn)所承認(rèn)成為主鏈。自私挖礦是讓惡意節(jié)點(diǎn)以犧牲所有誠(chéng)實(shí)節(jié)點(diǎn)的利益為代價(jià)牟取暴利。

      日蝕攻擊(Eclipse Attack)[21-22]:日蝕攻擊主要是攻擊區(qū)塊鏈中的節(jié)點(diǎn)而不是整個(gè)網(wǎng)絡(luò)。在比特幣系統(tǒng)中每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)能最多和117個(gè)節(jié)點(diǎn)連接,而日蝕攻擊則是將該節(jié)點(diǎn)的輸入切斷,隔離到正常的區(qū)塊鏈網(wǎng)絡(luò)之外。

      2.2 權(quán)益證明

      PoS(Proof of Stake)權(quán)益證明機(jī)制,是共識(shí)機(jī)制的一種,又稱股權(quán)證明機(jī)制。簡(jiǎn)單來(lái)說(shuō)就是依據(jù)持有代幣的數(shù)量和時(shí)間,給相應(yīng)的利息。這樣擁有更多權(quán)益的節(jié)點(diǎn)更會(huì)去維護(hù)區(qū)塊鏈的安全,以此達(dá)成共識(shí)。Sunny King和Scott Nadal[23]設(shè)計(jì)的點(diǎn)點(diǎn)幣,首次將PoS算法應(yīng)用于實(shí)際的工程中,一定程度上減少了工作量證明算法所造成的算力浪費(fèi)和能源消耗?!皺?quán)益證明”共識(shí)的優(yōu)點(diǎn)是不需要像PoW算法那樣龐大的計(jì)算能力,而是以投入的代幣為資本確定出塊權(quán)。但僅通過(guò)投入代幣的數(shù)量來(lái)確定偽造者將會(huì)為較富有的用戶帶來(lái)好處,如不加以限制將削弱區(qū)塊鏈的去中心化特性。“基于幣齡的選擇” 和“隨機(jī)塊選擇”則是為了解決該問(wèn)題所設(shè)計(jì)的兩個(gè)較優(yōu)秀的方案。

      “基于幣齡的選擇”系統(tǒng)根據(jù)將自己的股份保留的時(shí)間來(lái)確定下一位出塊者。系統(tǒng)計(jì)算由節(jié)點(diǎn)擁有的代幣數(shù)量乘以持有代幣的時(shí)間,將該乘積作為選擇出塊者的依據(jù)。按照這種方式,貨幣持有越久,被選作下一個(gè)出塊者的機(jī)會(huì)就越高,越能獲得獎(jiǎng)勵(lì)。但是一旦用戶偽造了區(qū)塊,系統(tǒng)便會(huì)取消其出塊的權(quán)利至少30天[24]。為了防止少量用戶控制網(wǎng)絡(luò)并使區(qū)塊鏈更加安全,該方案將貨幣的壽命設(shè)置為不超過(guò)90天。此外用戶不能被分配為出塊者的時(shí)間越長(zhǎng),其成為下一個(gè)出塊者的機(jī)會(huì)就越大。因此,該方案的設(shè)計(jì)可以促進(jìn)區(qū)塊系統(tǒng)的公平性并促進(jìn)區(qū)塊系統(tǒng)的成長(zhǎng)。防止擁有更多代幣的錢包總是在“權(quán)益證明”系統(tǒng)中獲得獎(jiǎng)勵(lì)的第二種機(jī)制稱為“隨機(jī)區(qū)塊選擇”。此實(shí)現(xiàn)基于最低哈希值和股份大小的組合選擇新的出塊者,該機(jī)制進(jìn)一步加強(qiáng)了權(quán)益證明公平性。

      PoS算法面臨的最重要的問(wèn)題是如何在不消耗資源的情況下達(dá)到PoW算法的安全性能。權(quán)益證明的主流協(xié)議中分別是:Tendermint和Casper the Friendly Gadget(CFFG)。

      2.2.1 Tendermint

      Tendermint[25]算法基于投票機(jī)制進(jìn)行工作,其設(shè)置一組驗(yàn)證節(jié)點(diǎn)并形成一個(gè)表用于輪換領(lǐng)導(dǎo)者。領(lǐng)導(dǎo)節(jié)點(diǎn)進(jìn)行全網(wǎng)監(jiān)聽(tīng)并收集信息,最后將內(nèi)容寫(xiě)入一個(gè)區(qū)塊中并全網(wǎng)廣播;通過(guò)全網(wǎng)投票超過(guò)三分之二節(jié)點(diǎn)同意后,新區(qū)塊就能寫(xiě)入?yún)^(qū)塊鏈中。如果出現(xiàn)領(lǐng)導(dǎo)節(jié)點(diǎn)宕機(jī)或者網(wǎng)絡(luò)延遲,則該輪次所在區(qū)塊為空,不寫(xiě)入任何內(nèi)容。除此以外Tendermint引入了一種鎖機(jī)制,即使節(jié)點(diǎn)在預(yù)提交后突然中斷導(dǎo)致而無(wú)法收到最終結(jié)果,在下一輪中這些節(jié)點(diǎn)仍然會(huì)繼續(xù)上一輪的投票,最終與正常節(jié)點(diǎn)的區(qū)塊一致。該算法需要三分之二以上的驗(yàn)證者存在,才能保證運(yùn)行的正常,所以其區(qū)塊鏈永遠(yuǎn)不會(huì)產(chǎn)生分叉。

      2.2.2 Casper the Friendly Gadget

      CFFG[26]是基于鏈的權(quán)益證明和基于拜占庭容錯(cuò)的PoS算法的一個(gè)共同體,是Tendermint核心算法的一種傾向于活躍性而非安全性環(huán)境下的改編。CFFG可以看作是覆蓋在以太坊上的PoW協(xié)議的PoS算法,旨在使其從PoW算法向PoS算法進(jìn)行過(guò)渡。以太坊作為區(qū)塊鏈技術(shù)2.0版本,從出現(xiàn)以來(lái)就備受關(guān)注。以太坊的共識(shí)機(jī)制是融合了PoW和PoS算法的技術(shù),在其目前的發(fā)展階段中仍然使用的是PoW的共識(shí)算法。

      CFFG是以保守的方式將以太坊從PoW的模式過(guò)渡到PoS的模式,其最終的版本可能會(huì)結(jié)合CFFG和CTFG的優(yōu)勢(shì),向著一個(gè)完善的PoS共識(shí)機(jī)制演化。其算法相比于PoW算法消耗大量的算法來(lái)獲取記賬權(quán)不同。節(jié)點(diǎn)是通過(guò)自身?yè)碛械腅TH來(lái)成為以太坊中的驗(yàn)證節(jié)點(diǎn),將自身的ETH提交來(lái)獲取最終確認(rèn)區(qū)塊的權(quán)利。CFFG采用問(wèn)責(zé)的方式來(lái)確保無(wú)利害攻擊的危害,問(wèn)責(zé)意味著對(duì)作惡或者不作為的懲罰將高于獎(jiǎng)勵(lì)。CFFG共識(shí)中最重要的就是有檢查點(diǎn)的存在,在每增加50個(gè)區(qū)塊時(shí)就需要對(duì)其進(jìn)行最終確定。這被稱之為檢查,而50個(gè)區(qū)塊被稱為周期。Casper在每個(gè)周期發(fā)送投票消息來(lái)觸發(fā)這個(gè)處理過(guò)程。

      CFFG最終化區(qū)塊主要分為兩步:第一步是超過(guò)三分之二的節(jié)點(diǎn)在第一個(gè)周期對(duì)區(qū)塊一進(jìn)行投票檢查;第二步是超過(guò)三分之二的節(jié)點(diǎn)在第二周期的時(shí)候,對(duì)區(qū)塊二進(jìn)行投票檢查,并最終化其父區(qū)塊。只有區(qū)塊被最終確認(rèn)后驗(yàn)證節(jié)點(diǎn)才能獲得獎(jiǎng)勵(lì),如果出現(xiàn)區(qū)塊分叉,那么保證金最少會(huì)被降低三分之一。CFFG算法安全性的最大保證是需要在三分之二驗(yàn)證者一起保證區(qū)塊才能達(dá)成一致,協(xié)同作惡的可能性很低,如果進(jìn)行串謀有可能導(dǎo)致自己受益的降低。

      2.2.3 委托權(quán)益證明

      委托權(quán)益證明(Delegated Proofs of Stake)[27]的機(jī)制類似于股份制有限公司,通過(guò)資產(chǎn)占比來(lái)進(jìn)行投票,節(jié)點(diǎn)為了自身利益的最大化會(huì)選擇相對(duì)可靠的節(jié)點(diǎn)。各個(gè)節(jié)點(diǎn)投票選舉出社區(qū)可信度較高的節(jié)點(diǎn)作為共識(shí)過(guò)程的決定者,選中的決定者輪流作為出塊節(jié)點(diǎn)。如果出塊節(jié)點(diǎn)在委任期間未按要求生產(chǎn)區(qū)塊則會(huì)被除名,并從新進(jìn)行選舉。DPoS算法要求隨機(jī)指定節(jié)點(diǎn)的出塊順序且每個(gè)周期都將順序打亂。由于該共識(shí)機(jī)制不需要競(jìng)爭(zhēng)出塊者,在處理能力得到提升的同時(shí)舍棄了一部分的去中心化特性。

      2.2.4 性能分析

      無(wú)利害攻擊(Nothing at Stake)[28]:該攻擊主要是在區(qū)塊鏈出現(xiàn)分叉時(shí),出塊節(jié)點(diǎn)可以在不受任何損失的情況下同時(shí)為多個(gè)分叉出塊,從而獲得所有可能到利益。而PoS算法則不同,惡意節(jié)點(diǎn)自身利益不會(huì)被損害。所以在鏈產(chǎn)生分叉時(shí),可以同時(shí)在兩個(gè)鏈上都進(jìn)行挖礦,從而利益達(dá)到最大化。

      長(zhǎng)程攻擊(Long Range Attack)[25]:長(zhǎng)程攻擊的本質(zhì)就是惡意節(jié)點(diǎn)通過(guò)創(chuàng)建一條從創(chuàng)世區(qū)塊開(kāi)始的分叉,并通過(guò)獲取一些在歷史上某個(gè)時(shí)刻控制了超過(guò)51%的股權(quán)的賬戶的私鑰,來(lái)試圖欺騙一些新的節(jié)點(diǎn)相信這條鏈的合法性。由于區(qū)塊鏈網(wǎng)絡(luò)是弱主觀性的,網(wǎng)絡(luò)中有新的節(jié)點(diǎn)或者長(zhǎng)期離線的節(jié)點(diǎn)重新加入網(wǎng)絡(luò)時(shí),是需要有節(jié)點(diǎn)為其提供創(chuàng)世區(qū)塊的,但他們并不能分辨該鏈?zhǔn)欠駷橹麈湥容^容易受到欺騙。

      2.3 其他證明共識(shí)算法

      2.3.1 燃燒證明

      燃燒證明[29]本質(zhì)上是指礦工將虛擬貨幣發(fā)送到一個(gè)無(wú)法使用但可被公眾驗(yàn)證的虛擬地址,通過(guò)該方式銷毀虛擬貨幣來(lái)證明節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)的投入,并以此來(lái)競(jìng)爭(zhēng)生成區(qū)塊的權(quán)利。銷毀貨幣的過(guò)程代表了類似PoW算法中挖礦的能力。節(jié)點(diǎn)銷毀的貨幣越多,說(shuō)明其擁有的算力也越大,被選為出塊者的成功率越高。燃燒證明背后的想法是通過(guò)燃燒一種加密貨幣,甚至可以是本國(guó)貨幣,來(lái)表明自己愿意更長(zhǎng)期的投資而愿意承受短期的損失。所以該證明鼓勵(lì)長(zhǎng)期參與,從而獲得網(wǎng)絡(luò)的穩(wěn)定性以及貨幣價(jià)格的穩(wěn)定,有助于公平和分散的方式確定加密貨幣的分布。于PoW共識(shí)類似,燃燒證明共識(shí)存在著資源的浪費(fèi),也會(huì)造成卡特爾的產(chǎn)生并導(dǎo)致富有的礦工更富有。

      2.3.2 活躍度證明

      活躍度證明(PoA)[30]通常被稱為工作量證明和權(quán)益證明的混合體。但是PoA算法能夠改進(jìn)網(wǎng)絡(luò)拓?fù)?,保證一定量的在線節(jié)點(diǎn),而且能量損耗也比PoW減少很多。

      活躍度證明(PoA)算法有兩種節(jié)點(diǎn)分別是:礦工和參與節(jié)點(diǎn),其中參與節(jié)點(diǎn)不需要一定在線。PoA的區(qū)塊由礦工構(gòu)造,并由區(qū)塊選出N個(gè)幣的所有者,將參與后續(xù)的校驗(yàn)和生成。后續(xù)的參與者的選舉由所擁有的幣的多少數(shù)量決定,而且這些參與者必須得滿足在線的要求,這就是PoA活躍證明的由來(lái)。PoA的機(jī)制與PoW類似,當(dāng)?shù)V工發(fā)現(xiàn)新的區(qū)塊,他們將選擇n個(gè)活動(dòng)節(jié)點(diǎn)來(lái)廣播該區(qū)塊。n-1個(gè)節(jié)點(diǎn)驗(yàn)證新區(qū)塊并對(duì)其進(jìn)行簽名,第n個(gè)節(jié)點(diǎn)除了需要驗(yàn)證和簽名以外,還需要將該區(qū)塊封裝并廣播該區(qū)塊。本次過(guò)程中,構(gòu)造新區(qū)塊的礦工以外,其他參與者也能得到一部分的激勵(lì),來(lái)保證其一直維持在在線狀態(tài)。網(wǎng)絡(luò)通過(guò)控制參與者的激勵(lì)分成比例來(lái)控制參與者人數(shù)。

      2.3.3 空間證明

      空間證明(Proof of Spaces, PoSpace)[31]指的是通過(guò)用戶付出的硬盤(pán)空間來(lái)競(jìng)爭(zhēng)出塊權(quán)利。PoSpace中有兩種節(jié)點(diǎn),分別是驗(yàn)證者和證明者。證明者是普通節(jié)點(diǎn)只存儲(chǔ)區(qū)塊鏈的信息,而驗(yàn)證者不僅有存儲(chǔ)區(qū)塊信息,還有一些證明者的信息。PoSpace通過(guò)一個(gè)特殊函數(shù)來(lái)選取出塊者,存儲(chǔ)空間越大對(duì)應(yīng)函數(shù)的數(shù)字越小。由于付出空間是一次性的,此后的作惡成本變的很低。在競(jìng)爭(zhēng)出塊權(quán)時(shí),PoSpace通過(guò)計(jì)算從主鏈出發(fā)的所有區(qū)塊的函數(shù)值之和來(lái)判斷,哪個(gè)支鏈上的函數(shù)值之和最小,則哪條分叉為主鏈。在此基礎(chǔ)上,為了強(qiáng)調(diào)越早的區(qū)塊所占的比重越高,可增加一個(gè)削減函數(shù)對(duì)早期的區(qū)塊函數(shù)值進(jìn)行縮減。

      2.3.4 權(quán)益速度證明

      權(quán)益速度證明(Proofs of Stake Velocity)[32]是在權(quán)益證明的基礎(chǔ)上進(jìn)行優(yōu)化,促進(jìn)網(wǎng)絡(luò)節(jié)點(diǎn)的積極參與。在傳統(tǒng)的PoS中隨著時(shí)間的推移,已持有的貨幣會(huì)呈線性積累幣齡,這導(dǎo)致了一些長(zhǎng)期離線節(jié)點(diǎn)的幣齡也獲得增長(zhǎng),而網(wǎng)絡(luò)卻無(wú)法獲得其提供的安全性。所以PoSV引入了一種非線性的貨幣時(shí)效功能,在該功能中,交易后的前幾天和幾周積累的幣齡比后幾周要快,與長(zhǎng)期離線的節(jié)點(diǎn)相比,活躍在網(wǎng)絡(luò)上的節(jié)點(diǎn)可多獲得獎(jiǎng)勵(lì)。

      2.3.5 貢獻(xiàn)量證明

      貢獻(xiàn)量證明(Proofs of Contribution)[33]是對(duì)比特幣協(xié)議的一種擴(kuò)展,在不改變比特幣數(shù)據(jù)結(jié)構(gòu)的條件下,設(shè)定不同地址不同的挖礦難度,并引入黑名單配合實(shí)現(xiàn)共識(shí)中的懲罰機(jī)制。

      除了上述的一些證明算法以外,還有幸運(yùn)證明(Proof of Luck)、融入知識(shí)證明的工作量證明(Entangled Proof of Work and Knowledge)、有益工作證明(Proof of Useful Work)等一些類算法。

      3 結(jié) 論

      不同的共識(shí)機(jī)制都有自己適合的區(qū)塊鏈應(yīng)用場(chǎng)景,證明類算法適合全球性節(jié)點(diǎn)的公有鏈。由于互聯(lián)網(wǎng)范圍內(nèi)巨大數(shù)量的不信任節(jié)點(diǎn)的存在,越開(kāi)放的系統(tǒng)為了能達(dá)成共識(shí)需要付出更大的代價(jià)。證明類算法中,工作量證明類共識(shí)算法適用于加密貨幣類應(yīng)用,而權(quán)益證明類算法則適用于一般性的區(qū)塊鏈。而經(jīng)典的Paxos和Raft算法適合私有鏈,在節(jié)點(diǎn)數(shù)量不多時(shí)能夠高效率的達(dá)到共識(shí)。拜占庭容錯(cuò)算法則適合只有少量節(jié)點(diǎn)的聯(lián)盟鏈。在設(shè)計(jì)區(qū)塊鏈系統(tǒng)時(shí)宜根據(jù)不同的需求采用不同的共識(shí)算法,也可以將現(xiàn)有的算法進(jìn)行融合,設(shè)計(jì)出最佳的共識(shí)機(jī)制。

      猜你喜歡
      共識(shí)區(qū)塊證明
      獲獎(jiǎng)證明
      共識(shí) 共進(jìn) 共情 共學(xué):讓“溝通之花”綻放
      判斷或證明等差數(shù)列、等比數(shù)列
      區(qū)塊鏈:一個(gè)改變未來(lái)的幽靈
      科學(xué)(2020年5期)2020-11-26 08:19:12
      論思想共識(shí)凝聚的文化向度
      區(qū)塊鏈:主要角色和衍生應(yīng)用
      科學(xué)(2020年6期)2020-02-06 08:59:56
      商量出共識(shí)
      區(qū)塊鏈+媒體業(yè)的N種可能
      讀懂區(qū)塊鏈
      證明我們的存在
      朝阳县| 天峨县| 盐山县| 新丰县| 讷河市| 汝州市| 阿荣旗| 荆门市| 阜阳市| 新巴尔虎右旗| 千阳县| 巫山县| 黄浦区| 黔东| 明光市| 罗田县| 庆阳市| 金塔县| 石嘴山市| 青神县| 晋宁县| 龙泉市| 连江县| 涟源市| 天津市| 平原县| 珠海市| 安庆市| 都兰县| 布拖县| 宁阳县| 堆龙德庆县| 祁连县| 综艺| 邹城市| 中卫市| 老河口市| 连江县| 望城县| 正镶白旗| 监利县|