楊宇光 張樹新
(北京工業(yè)大學(xué)信息學(xué)部 北京 100124)
(yangyang7357@bjut.edu.cn)
2008年,一位化名“中本聰”的學(xué)者以一篇《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》的文章[1],闡述了一種數(shù)字加密貨幣的實(shí)現(xiàn)思路.一年之后作者釋放出了以論文為原型設(shè)計(jì)出來的加密貨幣——比特幣[2].歷經(jīng)近10年的發(fā)展,比特幣一直保持著交易量和市值全球第一的地位,與此同時(shí),支撐比特幣運(yùn)行的核心技術(shù)——區(qū)塊鏈——憑借去中心化、易驗(yàn)證、難篡改,已成為各國(guó)政府、國(guó)際組織關(guān)注的一個(gè)熱點(diǎn),許多金融巨頭和研究機(jī)構(gòu)紛紛在該領(lǐng)域投上寶貴的精力.各種區(qū)塊鏈相關(guān)項(xiàng)目爆發(fā)式增長(zhǎng).對(duì)于區(qū)塊鏈技術(shù),目前普遍的觀點(diǎn)是其對(duì)未來的改變是不可預(yù)估的.
作為一個(gè)分布式的P2P網(wǎng)絡(luò)系統(tǒng).比特幣沒有運(yùn)行中心,也沒有管理員.比特幣的來源是采礦.任何節(jié)點(diǎn)都能作為礦工,發(fā)揮自己的計(jì)算優(yōu)勢(shì)來驗(yàn)證和記錄交易.并收到相應(yīng)的報(bào)酬.
比特幣的優(yōu)勢(shì)來自其發(fā)明以前的數(shù)字貨幣,如b-money[3]和文獻(xiàn)[4]的hashcash,之前就已經(jīng)創(chuàng)造了一個(gè)完全分散的電子現(xiàn)金系統(tǒng),不依賴于貨幣的擔(dān)?;蚪Y(jié)算交易驗(yàn)證,保證中央的權(quán)威.主要的不同點(diǎn)是使用了工作量證明機(jī)制(PoW),使網(wǎng)絡(luò)集中同步事務(wù)記錄.巧妙地解決了一個(gè)核心問題——“雙花”問題.在此之前,雙重支付問題是數(shù)字貨幣的痛點(diǎn),只能通過一個(gè)中心處理所有交易.
比特幣的獨(dú)創(chuàng)性表現(xiàn)在它為拜占庭將軍問題提供了一種可行解.這是分布式計(jì)算中一個(gè)尚未解決的問題.簡(jiǎn)而言之,該問題就是想在一個(gè)低容錯(cuò)的異構(gòu)網(wǎng)絡(luò)上,通過信息傳送達(dá)成行動(dòng)的一致性比特幣中的解決方案,可以在沒有可信中央機(jī)構(gòu)下達(dá)成一致行動(dòng),是分布式計(jì)算領(lǐng)域的一個(gè)進(jìn)步,具有超越貨幣的廣泛適用性.它可以實(shí)現(xiàn)公平選舉、彩票、資產(chǎn)登記、數(shù)字公證等集中的網(wǎng)絡(luò)中的共識(shí).
1)比特幣交易
我們可以把比特幣交易理解為復(fù)式記賬中的每一行.在交易的一頭是大于等于1個(gè)輸入(input),另一頭是1個(gè)或者多個(gè)輸出(output).輸入之和輸出之和不要求必須相等.相反,當(dāng)輸出略小于輸入時(shí),兩者差額代表隱含的“礦工費(fèi)”,這也是礦工將這筆交易記入賬簿的1筆小額付款.如圖1所示,描述了作為記賬簿的比特幣交易.交易中最常見的形式是從一個(gè)支付地址到另一個(gè)支付地址(P2PK),輸出中包含自己的地址是“找零”.
圖1 比特幣交易
2)比特幣的密鑰、地址、錢包
比特幣所有權(quán)由3部分建立:付款地址、密鑰和數(shù)字簽名.出于安全原因,數(shù)字密鑰不會(huì)在網(wǎng)絡(luò)中流通,而是基于用戶生成的公鑰生成,并存儲(chǔ)在一個(gè)文件或一個(gè)稱為“錢包”的簡(jiǎn)單數(shù)據(jù)庫中.數(shù)字密鑰可以由錢包軟件生成,獨(dú)立于比特幣協(xié)議而存在,并且可以離線生成.該密鑰包含比特幣的許多功能,包括分布式管理、所有權(quán)認(rèn)證和基于加密的安全模型.
在交易數(shù)據(jù)包中,有一個(gè)特殊的字段專門存儲(chǔ)簽名,并且有效的數(shù)字簽名只能由被認(rèn)可的數(shù)字密鑰才能產(chǎn)生.因?yàn)樵诒忍貛沤灰椎闹Ц哆^程中,收款人是用比特幣地址來標(biāo)識(shí)的,簽名作為驗(yàn)證的一個(gè)重要組成部分而存在.但并不是所有的收款地址都是公鑰,除了P2PK之外的交易使用腳本作為支付對(duì)象.比特幣地址可以通過單向加密哈希算法作用在公鑰上獲得,常用的算法是SHA(secure hash algorithm)和RIPEMD(the RACE integrity primitives evaluation message digest),特別是SHA256和RIPEMD160.通常用戶的比特幣地址編碼采用“Base58Check”.圖2示出了如何從公鑰生成比特幣地址.
圖2 公鑰到比特幣地址
圖3 Base58Check編碼過程
為了在網(wǎng)絡(luò)傳播中保證數(shù)據(jù)的準(zhǔn)確,使用錯(cuò)誤檢查代號(hào)來檢查轉(zhuǎn)錄中數(shù)據(jù)的錯(cuò)誤.在數(shù)據(jù)前我們添加一個(gè)記錄版本的字節(jié)作為前綴.例如,在比特幣地址的前綴是0(16進(jìn)制是0x00),而私鑰的前綴是128(16進(jìn)制是0x80).因而結(jié)果變?yōu)?部分:前綴、數(shù)據(jù)和校驗(yàn)碼.稱之為Base58Check編碼,圖3描述了編碼過程.
3)挖礦
挖礦是比特幣系統(tǒng)中最有趣和值得研究的地方,比特幣通過挖礦來產(chǎn)生,它還保證比特幣的穩(wěn)定、安全誠(chéng)實(shí)的運(yùn)行.礦工們?cè)诟?jìng)賽中勝出,獲得記賬的權(quán)利.把一段時(shí)間之內(nèi)的交易驗(yàn)證通過,再添加到鏈中.我們稱“把交易包含在塊中并添加到鏈中”作為“確認(rèn)”交易.交易確認(rèn)后,新所有者只能使用他們?cè)诮灰字蝎@得的比特幣.礦工在采礦中獲得2種獎(jiǎng)勵(lì):創(chuàng)造一個(gè)新的區(qū)塊的獎(jiǎng)勵(lì),以及交易中所包含的交易成本.
個(gè)人認(rèn)為“挖礦”一詞有一定的誤導(dǎo)性,從而讓我們將注意力集中在獎(jiǎng)勵(lì)上,雖然挖礦會(huì)帶來一部分獎(jiǎng)勵(lì),但它主要的目的不是獎(jiǎng)勵(lì)本身,或者新幣的產(chǎn)生,反而把手段當(dāng)成了目的.挖礦是一個(gè)以結(jié)算為中心的過程,每一筆交易都要經(jīng)過結(jié)算處理和檢查.比特幣挖礦保護(hù)系統(tǒng)在沒有中央機(jī)構(gòu)實(shí)施情況下也可以使比特幣網(wǎng)絡(luò)達(dá)成一致.它與我們主要討論的共識(shí)機(jī)制有著千絲萬縷的聯(lián)系.
作為支持比特幣服務(wù)的核心技術(shù),區(qū)塊鏈?zhǔn)且环N基礎(chǔ)設(shè)施,是加密貨幣或者其他應(yīng)用的底層根本.它使用鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來驗(yàn)證和存儲(chǔ)數(shù)據(jù),并使用分布式節(jié)點(diǎn)協(xié)商機(jī)制來生成和更新數(shù)據(jù).
根據(jù)不同的應(yīng)用場(chǎng)景,區(qū)塊鏈分為公共鏈、聯(lián)盟鏈和專有鏈.
1)公共鏈.節(jié)點(diǎn)可以自由地連接和退出網(wǎng)絡(luò),參與鏈上數(shù)據(jù)的讀寫操作.目前,基于區(qū)塊鏈的數(shù)字貨幣或智能合約平臺(tái)屬于公共鏈的范疇.
2)聯(lián)盟鏈.其實(shí)現(xiàn)是在現(xiàn)實(shí)生活中有相應(yīng)的組織結(jié)構(gòu),并通過授權(quán)節(jié)點(diǎn)加入和退出網(wǎng)絡(luò).組織形成利益相關(guān)的聯(lián)盟,共同維護(hù)系統(tǒng)的健康運(yùn)行,當(dāng)前企業(yè)界更多關(guān)注聯(lián)盟鏈的搭建和使用.
3)專有鏈.每個(gè)節(jié)點(diǎn)的寫權(quán)限都是內(nèi)部控制,讀權(quán)限可以選擇性地對(duì)外開放.專有鏈具有多節(jié)點(diǎn)操作的通用結(jié)構(gòu),適用于特定組織的內(nèi)部數(shù)據(jù)管理和審計(jì).
與其在討論某項(xiàng)技術(shù)的發(fā)展前景,不如說我們關(guān)注的是其作用方式.區(qū)塊鏈最近幾年熱度很高,部分企業(yè)已經(jīng)在自己現(xiàn)有的業(yè)務(wù)上找到了應(yīng)用模式,但很多企業(yè)仍處于不斷的反復(fù)嘗試中.事實(shí)上,要找到合適的應(yīng)用場(chǎng)景,重點(diǎn)應(yīng)該在分析區(qū)塊鏈本身的特性[5],即在不引入第三方中介的前提下,連續(xù)的區(qū)塊存儲(chǔ)和共識(shí)算法提供的難篡改性、安全性和可靠性的保障.因此,直接或間接依賴可信任的第三方的活動(dòng)可以從該技術(shù)中受益.
1)物聯(lián)網(wǎng)和物流供應(yīng)鏈
IBM在物聯(lián)網(wǎng)領(lǐng)域具有數(shù)十年的技術(shù)和理論,致力在自己擅長(zhǎng)的領(lǐng)域引入?yún)^(qū)塊鏈技術(shù),解決了存在的一些問題,比如成本和安全問題.于是在2016年初,IBM和三星宣布他們合作開發(fā)了ADEPT[6]系統(tǒng),目的是使用區(qū)塊鏈技術(shù)創(chuàng)建一個(gè)可行的分布式網(wǎng)絡(luò).該系統(tǒng)使用Bit Torrent和Ethereum,TeleHash.Visa和DocuSign則聯(lián)合推出了使用區(qū)塊鏈技術(shù)維護(hù)的出租車服務(wù).Skuchain基于商品流動(dòng)和資本流動(dòng)的區(qū)塊鏈同步,創(chuàng)造了一種新的供應(yīng)鏈解決方案,以解決假冒商品問題.京東萬象利用區(qū)塊鏈技術(shù)將一頭牛從育種免疫、屠宰等過程轉(zhuǎn)變?yōu)樽约旱穆?lián)盟鏈,確保信息真實(shí)性的安全性.
2)金融服務(wù)
在金融領(lǐng)域中,為了使交易成本降低,減小組織交互之間的風(fēng)險(xiǎn),金融組織和銀行將區(qū)塊鏈技術(shù)落地的愿望更加迫切,同時(shí)也會(huì)讓區(qū)塊鏈技術(shù)加速成熟.中國(guó)人民銀行行長(zhǎng)周小川表示,央行的數(shù)字貨幣可以采用區(qū)塊鏈的技術(shù)模式,從而將徹底改變傳統(tǒng)的貨幣流通模式.而在這方面英國(guó)的銀行已經(jīng)先走了一步,他們實(shí)現(xiàn)了數(shù)字貨幣系統(tǒng)——Rscoin[7].Rscoin的目標(biāo)是提供一個(gè)由中央銀行控制的數(shù)字貨幣.它采用2層供應(yīng)鏈結(jié)構(gòu),提高了2PC[8]提交和多鏈交叉驗(yàn)證機(jī)制在區(qū)塊鏈技術(shù)的運(yùn)行效率.通過中國(guó)人民銀行和附屬銀行的信托基礎(chǔ),可以提供更好的業(yè)績(jī).2016年10月,中國(guó)郵政儲(chǔ)蓄銀行宣布與IBM合作推出基于區(qū)塊鏈技術(shù)資產(chǎn)托管的系統(tǒng),這是中國(guó)銀行業(yè)首次成功地將其核心業(yè)務(wù)發(fā)布到區(qū)塊鏈接技術(shù)平臺(tái).新的業(yè)務(wù)系統(tǒng)消除了重復(fù)結(jié)賬過程,比原有業(yè)務(wù)流程縮短了約60%~80%的時(shí)間,提高了信用交易的效率.2015年10月,納斯達(dá)克證券交易所推出了區(qū)塊鏈平臺(tái)Nasdaq Linq[9],實(shí)現(xiàn)了將區(qū)塊鏈技術(shù)應(yīng)用到交易股票的一級(jí)市場(chǎng).2017年2月,R3聯(lián)盟成員招商銀行宣布將區(qū)塊鏈技術(shù)應(yīng)用于總行.香港分行和永隆銀行臺(tái)灣之間的直接結(jié)算系統(tǒng),減少交易時(shí)間并減少查詢程序.此外,在區(qū)塊鏈技術(shù)的基礎(chǔ)上涌現(xiàn)出了大量的創(chuàng)新型支付企業(yè).例如Ripple[10]:實(shí)現(xiàn)了一個(gè)跨地區(qū)、多幣種、低成本的實(shí)時(shí)交易平臺(tái),引入了類似銀行的網(wǎng)關(guān)概念.
目前來看區(qū)塊鏈主要在以上2個(gè)領(lǐng)域有比較好的應(yīng)用實(shí)踐,另外在其他領(lǐng)域大家都在積極地探索區(qū)塊鏈的應(yīng)用.
分布式計(jì)算和集群異構(gòu)系統(tǒng)的一個(gè)基本目標(biāo)是在部分錯(cuò)誤的進(jìn)程下,保證系統(tǒng)的可靠性,這往往需要在計(jì)算過程中對(duì)一些協(xié)議所需的信息達(dá)成一致.為了在一個(gè)問題上達(dá)成共識(shí),協(xié)商的過程需要多方參與多方作用,因此共識(shí)問題在本質(zhì)上是一個(gè)一致性問題.
分布式存儲(chǔ)系統(tǒng)等多數(shù)分布式系統(tǒng)在建立之初首先要解決的就是一致性問題.如果分布式系統(tǒng)中的每個(gè)節(jié)點(diǎn)都能保證具有很強(qiáng)性能(即時(shí)響應(yīng)和高吞吐量)的操作,無需故障,協(xié)商一致過程的實(shí)現(xiàn)并不復(fù)雜,可以通過組播過程簡(jiǎn)單地進(jìn)行投票.不幸的是,在現(xiàn)實(shí)中這樣一個(gè)“理想”的場(chǎng)景并不存在.主要有以下需要考慮的點(diǎn):
1)節(jié)點(diǎn)之間的網(wǎng)絡(luò)通信是不可靠的,包括任意延遲中斷和內(nèi)容故障;
2)節(jié)點(diǎn)的處理可能是錯(cuò)誤的,甚至節(jié)點(diǎn)自身隨時(shí)可能宕機(jī);
3)同步調(diào)用會(huì)讓系統(tǒng)變得不具備可擴(kuò)展性;
4)存在惡意節(jié)點(diǎn)故意要破壞系統(tǒng).
一般情況下,失敗(非響應(yīng))的情況被稱為“非拜占庭錯(cuò)誤”,而惡意響應(yīng)的情況稱為“拜占庭錯(cuò)誤”.一致性問題是20世紀(jì)70年代以來研究的經(jīng)典問題.為一致性問題設(shè)定上限的3位科學(xué)家Fischer,Lynch和Patterson[11],他們?cè)?985年發(fā)表的論文中提出了FLP不可能性.作為分布式理論的重要定理之一.他們認(rèn)為,在完全異步系統(tǒng)下沒有任何協(xié)議可以容忍甚至一個(gè)進(jìn)程的失敗.FLP定理定義了分布式系統(tǒng)一致性算法的上界.Leslie Lamport[12]描述分布式系統(tǒng)容錯(cuò)與一致性問題設(shè)想并首次提出拜占庭將軍問題:拜占庭位于伊斯坦布爾,現(xiàn)在的土耳其.為了保衛(wèi)國(guó)家,各軍相距甚遠(yuǎn),將軍之間溝通必須依靠信使.為了統(tǒng)一地進(jìn)攻和撤退必須就行動(dòng)達(dá)成一致.但有些將軍可能是叛徒,他們會(huì)故意發(fā)送錯(cuò)誤信息干擾別人.忠誠(chéng)的將軍如何在明知有叛徒的情況下統(tǒng)一作戰(zhàn)計(jì)劃.由此,比特幣的每一個(gè)節(jié)點(diǎn)都可以看作是一個(gè)將軍.
鏈中的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)僅用于形成鏈中的元素.如何形成這樣的存儲(chǔ)結(jié)構(gòu),如何保證其可信度,如何保證其安全性,如何確保分布式存儲(chǔ)的一致性,都取決于共識(shí)機(jī)制.因此,共識(shí)機(jī)制是區(qū)塊鏈的靈魂,區(qū)塊鏈的工作原理和應(yīng)用場(chǎng)景取決于共識(shí)機(jī)制.區(qū)塊鏈協(xié)商的目標(biāo)就是讓普通的節(jié)點(diǎn)形成一致的區(qū)塊鏈結(jié)構(gòu),需要滿足以下屬性:
1)一致性.所有誠(chéng)實(shí)節(jié)點(diǎn)保存的區(qū)塊鏈的前綴部分完全相同.
2)有效性.由某誠(chéng)實(shí)節(jié)點(diǎn)發(fā)布的信息終將被其他所有節(jié)點(diǎn)記錄在自己的區(qū)塊鏈中.
1990年,Lamport的Paxos[13]算法從工程的角度,最大化地實(shí)現(xiàn)了分布式系統(tǒng)一致性.Chubby和Zookeeper使用的就是由Paxos啟發(fā)而來的算法.算法中將節(jié)點(diǎn)分為3種類型:
1)proposer.提交建議等待批準(zhǔn)的人.它通常的角色是客戶.
2)accepter.負(fù)責(zé)對(duì)提案進(jìn)行表決.服務(wù)器端的普遍角色.
3)learner.被告知協(xié)商的結(jié)果,并與之相統(tǒng)一,不參與表決過程.可能為客戶端或服務(wù)端.
基本過程包括申請(qǐng)人的建議,當(dāng)超過一半的支持時(shí),將結(jié)果發(fā)送給所有人確認(rèn).一個(gè)很小概率的情況是在每一次新一輪的提案中,proposer都崩潰,系統(tǒng)將不會(huì)達(dá)成共識(shí).因此如果Paxos可以保證系統(tǒng)能達(dá)到共識(shí),必須有超過1/2的正常節(jié)點(diǎn)存在.
Raft[14]算法是Paxos算法的簡(jiǎn)化實(shí)現(xiàn),它包括3個(gè)角色:領(lǐng)導(dǎo)者(leader)、候選人(candidate)和跟隨者(follower),基本過程是:
1)領(lǐng)導(dǎo)人選舉.每一位候選人都會(huì)在某一段時(shí)間內(nèi)隨機(jī)提出一個(gè)選舉方案,擁有最新階段的多數(shù)選票將被選為領(lǐng)導(dǎo)人.
2)同步Log.當(dāng)選的領(lǐng)導(dǎo)者會(huì)找到系統(tǒng)中日志最新的記錄,并強(qiáng)制所有的跟隨者刷新到這個(gè)記錄.
拜占庭的問題中,如果總的節(jié)點(diǎn)數(shù)為N,惡意將軍數(shù)為F,當(dāng)N≥3F+1時(shí),拜占庭問題才有解決方法,也就是BFT(Byzantine fault tolerant)算法.
Lamport證明了在誠(chéng)實(shí)者不少于1/3時(shí)存在有效的算法能取得一致的結(jié)果.如果有太多的叛變者難以保證一致性.在超過1/3的叛國(guó)者的情況下有解決辦法嗎?假設(shè)有叛徒f個(gè)和g個(gè)忠誠(chéng)者,叛徒故意給了錯(cuò)誤的結(jié)果或者故意不作出回應(yīng).在某個(gè)時(shí)刻上,f個(gè)叛徒都不會(huì)作出回應(yīng),而大多數(shù)忠誠(chéng)的擁護(hù)者由于占多數(shù)就可以得到正確的結(jié)果.當(dāng)f個(gè)叛徒給出惡意的建議,并有g(shù)個(gè)離線的忠誠(chéng)者時(shí),g-f個(gè)忠誠(chéng)者無法分辨正確和錯(cuò)誤.如果要確保大多數(shù)仍然可以正常工作,因此,g-f>f,g>2f,所以整體系統(tǒng)大小要大于3f.
PBFT[15]是Castro和Liskov在1999年提出.是第1個(gè)廣泛使用的BFT算法.只要系統(tǒng)中2/3個(gè)節(jié)點(diǎn)正常工作就可以保證一致性.該算法由3個(gè)階段組成:準(zhǔn)備之前、準(zhǔn)備和提交.
這類機(jī)制的特點(diǎn)是很快出塊,很快地達(dá)成共識(shí),以至于沒有時(shí)間允許分叉.但這類機(jī)制要求在一個(gè)封閉的節(jié)點(diǎn)集合中兩兩節(jié)點(diǎn)進(jìn)行通信,因此比較適合于節(jié)點(diǎn)數(shù)量不多的聯(lián)盟鏈和私有鏈.聯(lián)盟鏈多采用技術(shù)成熟的PBFT機(jī)制及其相應(yīng)的變種RAFT,DBFT和HBFT等來達(dá)成共識(shí),如2016年Linux基金會(huì)發(fā)起的開源超級(jí)賬本(Hyper Ledger)、IBM推出的Fabric基礎(chǔ)設(shè)施項(xiàng)目等.
Schwartz等人[16]提出了Ripple協(xié)議共識(shí)算法(ripple protocol consensus algorithm,RPCA),將失效節(jié)點(diǎn)數(shù)量控制在1/5以內(nèi).因此可以在秒級(jí)達(dá)成一致性.
即工作量證明,比特幣區(qū)塊鏈采用了該機(jī)制來實(shí)現(xiàn)共識(shí)[17].在比特幣系統(tǒng)中時(shí)刻都在產(chǎn)生新的交易,而節(jié)點(diǎn)需要將合法交易放入塊中.區(qū)塊頭包含6部分,分別是版本號(hào)、前一個(gè)區(qū)塊哈希值、Merkle根、時(shí)間戳、難度目標(biāo)nouce和隨機(jī)數(shù).參與者需要尋找隨機(jī)數(shù)使區(qū)塊頭哈希值小于或等于難度目標(biāo)[18].例如,困難目標(biāo)的二進(jìn)制表示由32個(gè)0組成,平均需要232次嘗試來解決這個(gè)問題.困難的目標(biāo)將在達(dá)到每2 016塊時(shí)調(diào)整,使出塊的平均速度保持在每10 min,所以難度目標(biāo)將每2周更新1次(2 016×10 min).PoW保證一段時(shí)間內(nèi)出現(xiàn)在系統(tǒng)中的交易是可以計(jì)算的.
截至目前,PoW機(jī)制或多或少地存在于Dogecoin,Litecoin等數(shù)字貨幣中.
2011年,數(shù)字貨幣愛好者Bitcointalk論壇上,署名為“Quantum Mechanic”的愛好者提出PoS(proof of stake)機(jī)制.經(jīng)過討論后社群同意并認(rèn)可.如果PoW競(jìng)爭(zhēng)是計(jì)算力,挖礦概率與計(jì)算力正相關(guān).然后,PoS競(jìng)爭(zhēng)的是資產(chǎn).節(jié)點(diǎn)越多挖掘塊的概率就越大.PoS合格區(qū)塊的評(píng)判標(biāo)準(zhǔn)可以表述為F(Timestamp)<Target×Balance.
與PoW相比,公式中的難度值成為時(shí)間戳.在等式的右邊,還有作為因子的均衡因素.這樣,整體目標(biāo)值受平衡值和時(shí)間的影響.時(shí)間有限,所以出塊的時(shí)間必須在一定范圍內(nèi).過早或過晚的塊不會(huì)被其他節(jié)點(diǎn)接受.在某些加密貨幣實(shí)現(xiàn)思路里將公式中的平衡因子改為所持貨幣量產(chǎn)生了所謂的“幣齡”.由于時(shí)間戳有限,PoS鍛造塊的成功率主要與平衡因子有關(guān).與采礦業(yè)的競(jìng)爭(zhēng)性質(zhì)不同,PoS更像是一個(gè)彩票,積累了更多的貨幣年齡來爭(zhēng)取獲勝的機(jī)會(huì),但由于一旦消耗了一定的價(jià)值,再贏的概率就減少了,避免了“富人更富”[19].在PoS中,主鏈被定義為最高消費(fèi)鏈,每個(gè)塊的交易將被提交,給塊增加得分.在這種情況下,攻擊者發(fā)起對(duì)主鏈的攻擊就必須有很多的資金,并在PoS系統(tǒng)積累了很多時(shí)間,攻擊者獲得了大量的金錢,同時(shí)消耗得更多.并且一旦出現(xiàn)了攻擊和破壞,攻擊者自身的資金也會(huì)受損.它可能是從一開始就杜絕了攻擊者的行為動(dòng)機(jī),一旦區(qū)塊生成,其年齡立即被清除,這將確保攻擊者不能繼續(xù)攻擊.
在PoS思想出現(xiàn)后,很多協(xié)議基于此進(jìn)行二次開發(fā)可以看作是PoS系協(xié)議.
1)PoSV[20]
PoSV意味著權(quán)利和頻率,在PoS中,“幣齡”受時(shí)間的線性影響,因此會(huì)出現(xiàn)囤幣現(xiàn)象.瑞迪幣(Reddcoin)改進(jìn)PoS中的這個(gè)問題,將線性函數(shù)改造為指數(shù)衰減函數(shù),使幣齡的增長(zhǎng)率趨于0.在一定程度上解決了PoS的囤幣問題.瑞迪幣在發(fā)展前期使用PoW進(jìn)行發(fā)幣,后期使用PoSV維護(hù)系統(tǒng)運(yùn)行.
2)DPoS[21]
DPoS(delegated proof of stake)即為授權(quán)股權(quán)證明,比特股(BTS)最先采用.顧名思義,DPoS類似與股份制公司,各個(gè)節(jié)點(diǎn)首先投票選舉出社區(qū)可信度較高的來作為達(dá)成共識(shí)過程中的決策者.當(dāng)然,每個(gè)節(jié)點(diǎn)支持的票數(shù)由其持有的貨幣數(shù)量決定.這些可信節(jié)點(diǎn)可以被視為“挖礦池”,它們之間具有相同的權(quán)利.普通節(jié)點(diǎn)可以選舉或驅(qū)逐不合格的“股東”.在比特股中這個(gè)股東數(shù)量被控制在100個(gè).
3)LPoS
LPoS(lease proof of stake)也就是租賃權(quán)益證明,在傳統(tǒng)的PoS中,擁有少量余額的持有人不太可能會(huì)投注一個(gè)塊,就像計(jì)算哈希能力弱的礦工不太可能在比特幣中挖礦一樣.網(wǎng)絡(luò)中有很多節(jié)點(diǎn)多年才產(chǎn)生一個(gè)區(qū)塊,這意味著許多擁有較低余額的持有者不會(huì)運(yùn)行節(jié)點(diǎn),并且將網(wǎng)絡(luò)維持在數(shù)量有限的大型玩家身上.由于參與者越多網(wǎng)絡(luò)安全性越好,因此激勵(lì)這些較小的持有者參與是非常重要的.LPoS通過允許持有者將其余額租賃給節(jié)點(diǎn)來實(shí)現(xiàn)這一目標(biāo).租賃資金完全由持有人控制,隨時(shí)可以轉(zhuǎn)移或消耗(租賃結(jié)束時(shí)).通過借硬幣增加了被允許在區(qū)塊鏈中添加交易區(qū)塊的機(jī)會(huì),收到的任何獎(jiǎng)勵(lì)與承租人按比例分?jǐn)?這是Waves[22]采取的方法.
4)PoA
PoA(proof of activity)即活躍度證明[23].為了避免惡意通貨膨脹,比特幣選擇了產(chǎn)生一定數(shù)量的貨幣,然后就是通貨緊縮.獎(jiǎng)勵(lì)每4年減半,在分?jǐn)偨Y(jié)束時(shí),礦工的參與率下降,比特幣的安全性值得關(guān)注.Po A為了避免這種情況,獎(jiǎng)勵(lì)線上的主動(dòng)節(jié)點(diǎn),大部分當(dāng)前電子貨幣在“發(fā)布”后切換到離線狀態(tài),從而減少在線交易.PoA機(jī)制中的礦工開采過程與PoW機(jī)制類似,當(dāng)?shù)V工發(fā)現(xiàn)新塊時(shí),他們隨機(jī)選擇n個(gè)活動(dòng)節(jié)點(diǎn)來廣播新發(fā)現(xiàn)的塊.n-1主動(dòng)節(jié)點(diǎn)驗(yàn)證新發(fā)現(xiàn)的數(shù)據(jù)塊并對(duì)其進(jìn)行簽名,第n個(gè)主動(dòng)節(jié)點(diǎn)除了驗(yàn)證數(shù)據(jù)塊和簽名外,還會(huì)封裝并廣播該數(shù)據(jù)塊.礦工和n個(gè)活躍節(jié)點(diǎn)將收取獎(jiǎng)勵(lì)費(fèi)用.如果n個(gè)活動(dòng)節(jié)點(diǎn)中存在不活動(dòng)的節(jié)點(diǎn),它將不能簽署該塊,因此不會(huì)收到適當(dāng)?shù)莫?jiǎng)勵(lì)費(fèi)用.因此,Po A機(jī)制可以有效解決囤積錢的行為,并且在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中有非常重要的應(yīng)用.現(xiàn)在Decred是使用Po A的唯一數(shù)字貨幣.
5)Casper[24]
Casper是Ethereum即將采用的新的一致性算法.不同于PoW中以塊為單位連續(xù)的記錄交易信息,它以鏈為單位.一個(gè)典型的場(chǎng)景是如果你提交了2個(gè)一樣序號(hào)的交易,你將失去所有的保證金.有一定的懲罰機(jī)制,所以非法節(jié)點(diǎn)可以通過惡意攻擊進(jìn)行交易,但他們也面臨著巨大的賠錢風(fēng)險(xiǎn).本協(xié)議下的驗(yàn)證器主要有2個(gè)活動(dòng):出塊過程和PoW類似.投注過程比較復(fù)雜,目前采用模擬PBFT的驗(yàn)證策略.
PoI(proof of importance)就是重要性證明,是一個(gè)更公平的算法.人們不需要使用更強(qiáng)大的機(jī)器,也不需要持有更多的股票以獲得更多的回報(bào).它只需要證明自己的重要性,才能獲得出塊權(quán)從而得到獎(jiǎng)勵(lì).它不需要特殊的采礦設(shè)備,可以運(yùn)行在樹莓派,因此節(jié)省了電力資源.此外,在重要性的證明下,貨幣資產(chǎn)不是決定重要性的主要因素.它更關(guān)心的是交易量、活動(dòng)量以及交易雙方的關(guān)系.這些特點(diǎn)可以消除PoS系統(tǒng)中的其他弊端.NEM[25]中使用的就是PoI,其中具體是根據(jù)錢包交互次數(shù)和貨幣資產(chǎn)判斷一個(gè)節(jié)點(diǎn)的重要性.相比之下,其他數(shù)字貨幣沒有考慮到節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)的支持.為了鼓勵(lì)用戶積極地在NEM網(wǎng)絡(luò)上交易維護(hù),它后期會(huì)將傳輸數(shù)量也作為一個(gè)彰顯重要性的因素.
2014年,Tendermint[26]團(tuán)隊(duì)中的Kwon著眼于現(xiàn)存算法的速度、可擴(kuò)展性和資源問題,旨在以一種更安全更高效的方式實(shí)現(xiàn)共識(shí).他們改進(jìn)了20世紀(jì)80年代MIT開發(fā)的BFT算法,并概念性地證明利益概念證明(PoS)貨幣的安全性,以解決NXT和BitShares1.0中存在的“Nothing at Stake”問題出發(fā)提出了Tendermint共識(shí)機(jī)制.
Tendermint基于圓形投票機(jī)制(如圖4所示).一個(gè)投票過程需要3個(gè)處理步驟:首先驗(yàn)證器提出一個(gè)塊,然后發(fā)送提交意圖,最后提交一個(gè)新塊.在這個(gè)圓形投票機(jī)制中,原子廣播安全狀態(tài)可以被復(fù)制,Tendermint責(zé)任層基于此使問題可以被追蹤.Tendermint共識(shí)算法首先讓驗(yàn)證人員保持區(qū)塊鏈的完整副本,并利用公共密鑰來識(shí)別被驗(yàn)證的身份.在每個(gè)新塊的高度上,輪流提出塊.每一輪投票只需要一個(gè)驗(yàn)證器,用相應(yīng)的私鑰進(jìn)行驗(yàn)證簽名,這樣,一旦出現(xiàn)錯(cuò)誤,負(fù)責(zé)的驗(yàn)證者就很容易被找到.然后其余的驗(yàn)證者將需要對(duì)每一個(gè)提案進(jìn)行投票,投票用的是個(gè)人的私鑰簽名,這些構(gòu)成了一個(gè)圓.然而,由于網(wǎng)絡(luò)的異步需要,可能會(huì)提交一個(gè)新的塊數(shù)輪.
圖4 Tendermint共識(shí)機(jī)制過程
1)Proof of Luck
伯克利大學(xué)的研究人員基于TEEs(trust execution environments)設(shè)計(jì)了一種新型的共識(shí)機(jī)制,他們運(yùn)行在支持SGX的CPU上,來抵御挖礦以及對(duì)能源的消耗.算法分為2個(gè)函數(shù):PoLRound和PoLMine,其中所有參與者都運(yùn)行這2個(gè)函數(shù),得到以同一區(qū)塊為祖先的不同區(qū)塊.PoLMine會(huì)選擇一個(gè)介于0到1之間的隨機(jī)數(shù)字(運(yùn)氣),最大數(shù)字意味著運(yùn)氣最好,將所持有的區(qū)塊作為被用作區(qū)塊鏈中的下一個(gè)塊.由于在SGX環(huán)境中發(fā)生隨機(jī)數(shù)選擇,所以不能偽造它.在論文中研究人員使用的是Intel的TEE——SGX,基于Intel的硬件環(huán)境提出了對(duì)應(yīng)的共識(shí)協(xié)議——POET(proof of elapsed time).據(jù)Intel自己的實(shí)驗(yàn)數(shù)據(jù)該算法可以拓展到數(shù)千節(jié)點(diǎn).但是問題就是這些算法依賴底層CPU需要把信任交給Intel,這卻與區(qū)塊鏈去中心化的思想相悖.
2)PoDD(proof of DDos)[27]
在USENIX技術(shù)研討會(huì)上,一個(gè)新的加密數(shù)字貨幣DDOSCoin被科羅拉多大學(xué)和密歇根大學(xué)的研究人員提出,旨在用于獎(jiǎng)勵(lì)用戶使用他們的電腦參與DDoS攻擊.在DDOSCoin中,礦工工作量的計(jì)算是依據(jù)建立的TLS連接,這導(dǎo)致其只適用于已啟用TLS加密的網(wǎng)站.他們使用的共識(shí)機(jī)制就是PoDD,參與DDoS攻擊會(huì)給礦工數(shù)字貨幣,礦工便可將貨幣轉(zhuǎn)換成比特幣或其他法定貨幣,這可以認(rèn)為是PoW的另一種形式.惡意的“DDoS身份驗(yàn)證”操作是讓礦工連接到Web服務(wù)器.將響應(yīng)作為鏈接證據(jù),在現(xiàn)代版本的TLS中,服務(wù)器在握手過程中簽署客戶端提供的參數(shù),并在連接的密鑰交換中使用服務(wù)器提供的值.這允許客戶向其他人證明他已經(jīng)與服務(wù)器通信.此外,服務(wù)器返回的簽名值對(duì)于客戶端來說是不可預(yù)知且隨機(jī)分布的.
3)PoB(proof of burn)[28]
至于PoB,和開發(fā)比特幣的過程也很相似.但PoB是通過將貨幣轉(zhuǎn)移到不可逆轉(zhuǎn)的地址上以銷毀貨幣,而不是投資到計(jì)算硬件上.這種轉(zhuǎn)移也叫作“燃燒”.貨幣被你轉(zhuǎn)到了某個(gè)很難找到的地址,基于隨機(jī)選擇程序的系統(tǒng)上,你就相當(dāng)于獲取了挖礦的終生權(quán)力.同時(shí),你也可以轉(zhuǎn)移本地貨幣或者其他區(qū)塊鏈的數(shù)字貨幣.你燃燒貨幣的數(shù)量是和你被選中挖下一塊幣的概率是成正比的.時(shí)間越久你在這個(gè)系統(tǒng)的份額可能會(huì)逐漸減少,所以你會(huì)愿意通過燃燒更多的數(shù)據(jù)貨幣來獲取更多的挖礦機(jī)會(huì).
盡管PoB是PoW的一種有趣的替代選擇,但是這種協(xié)議仍舊造成了很多不必要的資源浪費(fèi).另一種批評(píng)就是挖礦能力只會(huì)被那些愿意燃燒更多資金的人所掌控.PoB的應(yīng)用場(chǎng)景有Counterparty[29],TGCoin,Slimcoin等.
4)PoC(proof of contribution)
到目前為止,共識(shí)機(jī)制的目的無非是既讓用戶積極參與又要防范不法分子進(jìn)行惡意的行為.如何在這兩者之間求得平衡,Cybervein給出了他們的答案——PoC(貢獻(xiàn)證明機(jī)制).他們認(rèn)為使用PoC和其他機(jī)制可以在攻擊的同時(shí)獲得更多的用戶參與和貢獻(xiàn),從而達(dá)到同樣的預(yù)防效果.整個(gè)網(wǎng)絡(luò)參與者的貢獻(xiàn)可以是硬盤容量、帶寬、功率、數(shù)據(jù)等各種資源.所以根據(jù)貢獻(xiàn)力的方式可以分為Proof of Storge和Proof of Space等.在Cybervein PoC中,盡管一些參與者的貢獻(xiàn)可能集中在長(zhǎng)尾效應(yīng)的曲線的頭部,而貢獻(xiàn)力量分布在正態(tài)曲線的尾部是非常小的,但在這部分人數(shù)占據(jù)整個(gè)網(wǎng)絡(luò)的參與者多數(shù).為了保證參與者的利益,隨著時(shí)間的推移,這部分小貢獻(xiàn)的比例逐漸增加,形成了上述正態(tài)分布曲線的“長(zhǎng)尾”,貢獻(xiàn)的積累將帶來充足的收入,而大貢獻(xiàn)者作為制衡的角色,以實(shí)現(xiàn)公平的狀態(tài),所以會(huì)有更多的人參與其中.Burstcoin[30]采用這種機(jī)制實(shí)現(xiàn)共識(shí).
區(qū)塊鏈上采用不同的共識(shí)機(jī)制,鑒于共識(shí)機(jī)制在區(qū)塊鏈技術(shù)中的重要性,從以上分析也可以知道有很多種實(shí)現(xiàn)思路,為了便于分析,在滿足一致性和有效性的同時(shí),系統(tǒng)的整體性能也會(huì)產(chǎn)生不同的影響.鑒于共識(shí)機(jī)制的不同特點(diǎn),可以在下面幾個(gè)方面進(jìn)行評(píng)估:
1)安全.無論是防止2次支付、私自開采攻擊,還是對(duì)錯(cuò)誤的寬容程度都是將系統(tǒng)作為一個(gè)整體對(duì)外提供服務(wù)角度來判斷的.從內(nèi)部來看,Eclipse[31]攻擊控制目標(biāo)對(duì)象的網(wǎng)絡(luò)通信,阻礙交易的傳播.Sybil[32]攻擊通過類似于DoS的方式讓大量的無意義節(jié)點(diǎn)影響系統(tǒng)安全.
2)擴(kuò)展.是否支持網(wǎng)絡(luò)節(jié)點(diǎn)擴(kuò)展.可擴(kuò)展性是區(qū)塊技術(shù)設(shè)計(jì)中需要考慮的關(guān)鍵因素之一.擴(kuò)展性大體由2部分組成:提高系統(tǒng)節(jié)點(diǎn)數(shù)和驗(yàn)證確認(rèn)次數(shù)的增加.并由此而帶來的通信負(fù)載和運(yùn)行負(fù)載的提高.一般用吞吐量來衡量.
3)性能.是從事務(wù)生成到節(jié)點(diǎn)存儲(chǔ)系統(tǒng)中最終記錄下來的過程中的延遲.換句話說,系統(tǒng)可以處理每秒響應(yīng)的數(shù)量.比如,比特幣系統(tǒng)每秒最多有7筆交易.與現(xiàn)有集中交易系統(tǒng)的交易量相差甚遠(yuǎn).
4)資源.各節(jié)點(diǎn)在共識(shí)協(xié)議的指導(dǎo)下,對(duì)交易的處理達(dá)成一致所消耗的計(jì)算機(jī)的性能資源包括CPU、內(nèi)存、電池等.
1)工作量證明機(jī)制存在一些問題.首先,工作量證明機(jī)制存在嚴(yán)重的效率問題:每個(gè)區(qū)塊的產(chǎn)生需要耗費(fèi)時(shí)間,同時(shí)新產(chǎn)生的區(qū)塊需要后續(xù)區(qū)塊的確認(rèn)才能保證有效,這需要更長(zhǎng)的時(shí)間,嚴(yán)重影響系統(tǒng)效率;其次,工作量證明機(jī)制的安全性要求攻擊者所占的計(jì)算資源不超過全網(wǎng)的50%,然而從目前比特幣礦池挖礦算力情況來看,算力排名前5礦池的總算力所占比例已經(jīng)過半[33],對(duì)系統(tǒng)的安全性和公平性造成嚴(yán)重威脅;最后,被批評(píng)是浪費(fèi)資源.礦機(jī)日夜運(yùn)轉(zhuǎn)消耗大量計(jì)算資源、電力能源,人力資源,造成巨大浪費(fèi).據(jù)估計(jì),電力需要將大于1 GW(100萬kW),幾乎相當(dāng)于整個(gè)愛爾蘭的電力消耗.也有很多人在致力于PoW的優(yōu)化,提出了PoUW[34](proof of useful work).原理一般是通過求解最短路徑等問題代替無意義的隨機(jī)數(shù),但收效甚微.
2)后來,權(quán)益證明機(jī)制實(shí)現(xiàn)了改進(jìn)PoW的目標(biāo).但PoS并不完美,首先是初幣的分發(fā),一種是依舊使用PoW進(jìn)行挖礦,另一種是IPO,前者依舊存在PoW的問題,后者缺乏信任基礎(chǔ),容易滋生貿(mào)易犯罪.在應(yīng)用方面,基于PoS的共識(shí)機(jī)制有很多應(yīng)用,但是還沒有完全基于PoS的區(qū)塊鏈技術(shù).另外,在高延遲網(wǎng)絡(luò)環(huán)境下很容易產(chǎn)生分叉,影響一致性.如果惡意節(jié)點(diǎn)在這種情況下發(fā)起攻擊,它將通過控制網(wǎng)絡(luò)進(jìn)行通信,形成腦裂.
3)DPos能耗比較低,具有比較快的出塊時(shí)間.但是其缺點(diǎn)也是有的:因?yàn)槠胀ü?jié)點(diǎn)話語權(quán)比較低,投票的積極性有待提高.如果發(fā)現(xiàn)一個(gè)惡意節(jié)點(diǎn),處理流程不是很高效而且存在中止的情況.此外,代表的選舉做不到實(shí)時(shí),并且該系統(tǒng)還是依賴于代幣,不適合公有鏈.
4)BFT算法的安全性和可擴(kuò)展性也存在一些問題.通過以上分析,BFT的安全性取決于系統(tǒng)中無效節(jié)點(diǎn)數(shù)的比例.實(shí)際應(yīng)用中,惡意節(jié)點(diǎn)實(shí)施Sybil攻擊.許多偽造的客戶端出現(xiàn),稀釋了正常節(jié)點(diǎn)的比例,進(jìn)而影響到系統(tǒng)的穩(wěn)定運(yùn)行.因此,在節(jié)點(diǎn)比較多的區(qū)塊鏈系統(tǒng)上擴(kuò)展性比較差.而且一輪共識(shí)中對(duì)主節(jié)點(diǎn)的依賴太強(qiáng).
在達(dá)成一致性的前提下,平衡效率、擴(kuò)展性和資源是共識(shí)機(jī)制的痛點(diǎn).在此基礎(chǔ)上如何因地制宜結(jié)合共識(shí)機(jī)制,設(shè)計(jì)最佳協(xié)商機(jī)制,是未來研究的主要方向.而且我們可以看到,依據(jù)系統(tǒng)授權(quán)程度的高低,依次分為無需許可、公共的共享系統(tǒng)、需要許可、公共的共享系統(tǒng),需要許可的、私有的共享系統(tǒng).越開放的系統(tǒng)達(dá)成共識(shí)的代價(jià)越高.鑒于共識(shí)機(jī)制的優(yōu)缺點(diǎn),我們可以嘗試將不同的共識(shí)機(jī)制結(jié)合起來,形成一種新的共識(shí)機(jī)制.比如將PoW和PoS結(jié)合,將PoS和BFT結(jié)合.
對(duì)于現(xiàn)存區(qū)塊鏈的一些問題,要結(jié)合加密算法和底層存儲(chǔ)技術(shù)的改進(jìn),共識(shí)機(jī)制才能發(fā)揮出最大效果,比如零知識(shí)證明[35]、環(huán)簽名、閃電網(wǎng)絡(luò)、DAG、HashGraph[36].隨著全球?qū)^(qū)塊鏈的關(guān)注,越來越多的人投入其中研究開發(fā),未來會(huì)有更多工作高效設(shè)計(jì)巧妙的共識(shí)機(jī)制被設(shè)計(jì)出來.
區(qū)塊鏈技術(shù)的重要基石無疑是共識(shí)機(jī)制.學(xué)術(shù)界和商界越來越關(guān)注共識(shí)機(jī)制,以便更好地應(yīng)用這項(xiàng)技術(shù).區(qū)塊鏈要想落地開花離不開精妙的共識(shí)算法,但是,現(xiàn)有可用于區(qū)塊鏈技術(shù)的仍存在這樣那樣的問題.令人欣慰的是,隨著區(qū)塊鏈的發(fā)展熱度,共識(shí)機(jī)制相關(guān)的算法逐年增加,各種設(shè)計(jì)思想比比皆是.作為分布式計(jì)算中解決一致性問題的共識(shí)機(jī)制的應(yīng)用場(chǎng)景分析也很重要,在一定程度上決定了區(qū)塊鏈技術(shù)的未來.下一個(gè)創(chuàng)新是降低復(fù)雜性并提高一致性適應(yīng)能力.
[1]Nakamoto S.Bitcoin:A peer-to-peer electronic cash system[EB/OL].[2018-03-20].https://bitcoin.org/bitcoin.pdf
[2]Bitcoin Core.Integration/staging tree[OL].2009[2018-03-20].https://github.com/bitcoin/bitcoin
[3]Dai W.b-money[EB/OL].1998[2018-03-20].http://www.weidai.com/bmoney.txt
[4]Back A.Hashcash—A denial of service counter-measure[C]//Proc of USENIX Technical Conf.Berkeley,CA:USENIX Association,2002:15-25
[5]袁勇,王飛躍.區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J].自動(dòng)化學(xué)報(bào),2016,42(4):481-494
[6]Panikkar S,Nair P.ADEPT:An IoT practitioner perspective DRAFT copy for advance review[EB/OL].2015[2018-03-19].https://ibm.biz/devicedemocracy
[7]蔡維德,趙梓皓,張弛,等.英國(guó)央行數(shù)字貨幣RSCoin探討[J].金融電子化,2016(10):78-81
[8]Bernstein P.Two-phase commit protocol[EB/OL].(2018-01-23)[2018-03-23].https://en.wikipedia.org/wiki/Twophase-commit-protocol
[9]Underwood S.Blockchain beyond bitcoin[J].Communications of the ACM,2016,59(11):15-17
[10]Baliga A.Understanding blockchain consensus models[EB/OL].2017[2018-03-21].https://www.persistent.com/wp-content/uploads/2017/04/WP-Understanding-Blockchain-Consensus-Models.pdf
[11]Fischer M J,Lynch N A,Paterson M S.Impossibility of distributed consensus with one faulty process[C]//Proc of ACM SIGACT-SIGMOD Symp on Principles of Database Systems.New York:ACM,1983:1-7
[12]Lamport L,Shostak R,Pease M.The byzantine generals problem[J].ACM Trans on Programming Languages and Systems,1982,4(3):382-401
[13]Lamport L.The part-time parliament[J].ACM Trans on Computer Systems,1998,16(2):133-169
[14]Ongaro D,Ousterhout J.In search of an understandable consensus algorithm[C]//Proc of USENIX Conf on USENIX Technical Conf.Berkeley,CA:USENIX Association,2014:305-320
[15]Castro M O,Liskov B.Practical Byzantine Fault Tolerance[J].OSDI,1999,99:173-186
[16]Schwartz D,Youngs N,Britto A.The ripple protocol consensus algorithm[EB/OL].2014[2018-03-22].https://ripple.com/files/ripple-consensus-whitepaper.pdf
[17]周鄴飛.區(qū)塊鏈核心技術(shù)演進(jìn)之路——共識(shí)機(jī)制演進(jìn)(1)[J].計(jì)算機(jī)教育,2017(4):155-158
[18]Antonopoulos A M.Mastering Bitcoin:Unlocking Digital Crypto-Currencies[M].Boston:O'Reilly Media,Inc,2014
[19]Houy N.It will cost you nothing to‘Kill'a proof-of-stake crypto-currency[J].Social Science Electronic Publishing,2014,34(2)
[20]Ren L.Proof of stake velocity:Building the social currency of the digital age[EB/OL].2014[2018-03-23].https://www.reddcoin.com/papers/PoSV.pdf
[21]Larimer D.Delegated proof of stake consensus[EB/OL].[2018-03-22].https://bitshares.org/technology/delegatedproof-of-stake-consensus/
[22]Alexander I.Waves platform[EB/OL].(2018-03-19)[2018-03-23].https://en.wikipedia.org/wiki/Wavesplatform
[23]Bentov I,Lee C,Mizrahi A,et al.Proof of activity:Extending Bitcoin's proof of work via proof of stake[J].ACM SIGMETRICS Performance Evaluation Review,2014,42(3):34-37
[24]Danny R.Casper proof of stake FAQ[EB/OL].(2018-03-04)[2018-03-23].https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ
[25]Beikverdi A.NEM(cryptocurrency)[EB/OL].(2018-03-08)[2018-03-23].https://en.wikipedia.org/wiki/NEM-(cryptocurrency)
[26]Kwon J.Tendermint:Consensus without mining[EB/OL].2014[2018-03-23].https://www.github.com/tendermint/tendermint/wiki
[27]Wustrow E,Vandersloot B.DDoSCoin:Cryptocurrency with a malicious proof-of-work[C]//Proc of USENIX Conf on Offensive Technologies.Berkeley,CA:USENIX Association,2016:168-177
[28]Stewart I.Slimcoin a peer-to-peer crypto-currency with proof-of-burn,mining without powerful hardware[EB/OL].2014[2018-03-23].http://www.doc.ic.ac.uk/~ids/realdotdot/crypto-papers-etc-worth-reading/proofof-burn/slimcoin-whitepaper.pdf
[29]Jansen R.A TorPath to TorCoin:Proof-of-bandwidth altcoins for compensating relays[J/OL].2014[2018-03-23].https://petsymposium.org/2014/papers/Ghosh.pdf
[30]Quibus B.Burstcoin—The green innovative cryptocurrency[EB/OL].2017[2018-03-23].https://www.burst-coin.org/proof-of-capacity
[31]Heilman E,Kendler A,Zohar A.Eclipse attacks on Bitcoin's peer-to-peer network[C]//Proc of USENIX Conf on Security Symp.Berkeley,CA:USENIX Association,2015:129-144
[32]Eyal I,Sirer E G.Majority is not enough:Bitcoin mining is vulnerable[C]//Proc of Int Conf on Financial Cryptography and Data Security.Berlin:Springer,2014:436-454
[33]全球算力分布[EB/OL].[2018-03-20].http://qukuai.com/pools
[34]Marshall B,et al.Proofs of useful work[J/OL].IACR Cryptology ePrint Archive,2017[2018-03-23].https://allguantor.atj/blockchainbib/pdf/ball2017proofs.pdf
[35]Wac?aw B,Stefan D,Daniel M.Efficient zero-knowledge contingent payments in cryptocurrencies without scripts[C]//Proc of European Symp on Research in Computer Security.Berlin:Springer,2016:261-280
[36]Baird,Leemon.Hashgraph consensus:Fair,fast,byzantine fault tolerance[EB/OL].2016[2018-03-23].http://www.swirlds.com/wp-content/uploads/2016/2016-05-31-Swirlds-Consensus-Algorithm-TR-2016-01.pdf