孫善勇 張玉清
[中國地質(zhì)大學(xué)(北京)信息工程學(xué)院,北京 100083]
區(qū)塊鏈源自以比特幣為代表的數(shù)字貨幣系統(tǒng)支撐技術(shù),具有去中心化、去信任化、不可篡改、集體維護(hù)、時序數(shù)據(jù)等特點(diǎn).在分布式網(wǎng)絡(luò)中實(shí)現(xiàn)去中心化的點(diǎn)對點(diǎn)交易,并且無需節(jié)點(diǎn)信任,有效地解決了高成本、低效率以及數(shù)據(jù)安全問題等中心化機(jī)構(gòu)存在的諸多弊端.區(qū)塊鏈技術(shù)如今在眾多領(lǐng)域的發(fā)展?jié)摿σ呀?jīng)愈加顯著.
本文主體由5節(jié)組成:第1節(jié)描述區(qū)塊鏈技術(shù)定義;第2節(jié)介紹區(qū)塊鏈底層架構(gòu),以及架構(gòu)各層所使用的關(guān)鍵技術(shù)點(diǎn);第3節(jié)介紹3種基本區(qū)塊鏈類型,以及每種類型所對應(yīng)的主流開發(fā)平臺;第4節(jié)提出區(qū)塊鏈技術(shù)的7大問題;第5節(jié)總結(jié)全文.
談到區(qū)塊鏈,多數(shù)人會把區(qū)塊鏈和比特幣混為一談,比特幣是一種基于點(diǎn)對點(diǎn)支付的數(shù)字貨幣,區(qū)塊鏈?zhǔn)沁@種系統(tǒng)的底層實(shí)現(xiàn)技術(shù).狹義的講,區(qū)塊鏈?zhǔn)怯蓞^(qū)塊數(shù)據(jù)按照時間為順序,以圖1的形式鏈接組成的一種數(shù)據(jù)結(jié)構(gòu),由密碼學(xué)技術(shù)實(shí)現(xiàn)數(shù)據(jù)的不可篡改性和不可偽造性[1],是一種去中心化共享賬本,或稱為分布式數(shù)據(jù)庫系統(tǒng).
圖1 區(qū)塊鏈接示例
區(qū)塊鏈技術(shù)則是指多個節(jié)點(diǎn)間,基于加密鏈?zhǔn)絽^(qū)塊結(jié)構(gòu)、分布式節(jié)點(diǎn)共識協(xié)議、P2P網(wǎng)絡(luò)(對等網(wǎng)絡(luò))通信技術(shù)和智能合約等技術(shù),組合而成的一種去中心化基礎(chǔ)架構(gòu).區(qū)塊鏈技術(shù)是多項成熟技術(shù)的一次整合.
區(qū)塊鏈的基礎(chǔ)架構(gòu)由圖2所示,每個層次相互協(xié)作,共同構(gòu)成了區(qū)塊鏈底層結(jié)構(gòu)基礎(chǔ).
圖2 區(qū)塊鏈技術(shù)架構(gòu)
數(shù)據(jù)層用來存儲數(shù)據(jù)區(qū)塊,涵蓋了時間戳、Merkle樹、非對稱加密和哈希函數(shù)等技術(shù)點(diǎn),確保數(shù)據(jù)的可追溯性和不可篡改性.
數(shù)據(jù)區(qū)塊結(jié)構(gòu)上有區(qū)塊頭和區(qū)塊體2個部分.區(qū)塊頭記錄版本號、父區(qū)塊哈希值、時間戳、隨機(jī)數(shù)和Merkle根等信息.區(qū)塊體中存儲以Merkle樹為組織形式的交易數(shù)據(jù).數(shù)據(jù)區(qū)塊以時間戳為順序構(gòu)成鏈?zhǔn)浇Y(jié)構(gòu)[2].
Merkle樹可用于快速校驗(yàn)區(qū)塊數(shù)據(jù)的存在性和完整性.橢圓曲線密碼算法是區(qū)塊鏈技術(shù)中使用的非對稱加密方式,擁有公鑰和私鑰2個密鑰的非對稱加密方式確保了數(shù)據(jù)安全.
組網(wǎng)方式、消息傳播協(xié)議、數(shù)據(jù)驗(yàn)證機(jī)制等構(gòu)成了網(wǎng)絡(luò)層.構(gòu)建去中心化的節(jié)點(diǎn)拓?fù)浞植?,任?個節(jié)點(diǎn)無需建立互信即可交易,交易信息通過廣播傳遞,為了維持整個網(wǎng)絡(luò)的正常運(yùn)轉(zhuǎn),利用激勵機(jī)制來保證擁有足夠的節(jié)點(diǎn)參與貢獻(xiàn)算力.
扁平式拓?fù)浣Y(jié)構(gòu)的P2P組網(wǎng)方式,使得網(wǎng)絡(luò)中的每個節(jié)點(diǎn)承擔(dān)相同角色,主要具備路由發(fā)現(xiàn)、驗(yàn)證交易信息、廣播交易信息和發(fā)現(xiàn)新結(jié)點(diǎn)等功能[1].整個網(wǎng)絡(luò)的正常運(yùn)轉(zhuǎn)不會被部分節(jié)點(diǎn)的損壞而影響,但同時提高了維護(hù)全部節(jié)點(diǎn)的成本.
全部的網(wǎng)絡(luò)節(jié)點(diǎn)會實(shí)時監(jiān)聽網(wǎng)絡(luò)中的廣播信息,發(fā)現(xiàn)其他節(jié)點(diǎn)的廣播數(shù)據(jù)后,會查看交易中的簽名和時間戳等標(biāo)記,并利用區(qū)塊的工作量證明去驗(yàn)證此次交易和區(qū)塊有效性.若通過驗(yàn)證則進(jìn)行存儲并繼續(xù)轉(zhuǎn)發(fā)廣播.否則,廢棄此數(shù)據(jù)信息并不再轉(zhuǎn)發(fā).
節(jié)點(diǎn)通過廣播將自己生成的交易信息向周圍節(jié)點(diǎn)發(fā)送,其他節(jié)點(diǎn)驗(yàn)證通過后繼續(xù)傳播,當(dāng)大多數(shù)(51%)節(jié)點(diǎn)接收到信息后即為交易通過.若信息驗(yàn)證未通過,便會廢棄,停止繼續(xù)傳播錯誤信息.
去中心化網(wǎng)絡(luò)中的決策權(quán)高度分散,必須有效實(shí)現(xiàn)各節(jié)點(diǎn)對數(shù)據(jù)的有效性,高效地達(dá)成共識.共識層利用工作量證明機(jī)制(PoW)、權(quán)益證明機(jī)制(PoS)、股份授權(quán)證明機(jī)制(DPoS)以及分布式一致性算法等幾種方案[3],有效地解決了這個問題.
共識過程與經(jīng)濟(jì)激勵的結(jié)合極大地增強(qiáng)了區(qū)塊網(wǎng)絡(luò)的可靠性.在PoW機(jī)制中,要想達(dá)到篡改或偽造區(qū)塊的目的,必須對此區(qū)塊以及后面的所有區(qū)塊都重新尋找隨機(jī)數(shù)[4],控制區(qū)塊網(wǎng)絡(luò)51%以上的算力后才有可能,因此攻擊的成本極大.
為了克服PoW算力資源被浪費(fèi),以及51%攻擊等問題,PoS機(jī)制用權(quán)益證明(幣齡和代幣數(shù)量等)來替代PoW中的算力證明,挖礦難度隨著擁有的資源數(shù)量增多而減小.在一定程度上違反了完全去中心化的概念.
DPoS機(jī)制類似董事會投票,每個節(jié)點(diǎn)可將其權(quán)益授權(quán)于一個節(jié)點(diǎn)代表,節(jié)點(diǎn)代表對其他節(jié)點(diǎn)負(fù)責(zé),由節(jié)點(diǎn)代表輪流記賬的形式生成新區(qū)塊.由于減少了數(shù)據(jù)驗(yàn)證時節(jié)點(diǎn)參與的數(shù)量和記賬權(quán)競爭的資源消耗,實(shí)現(xiàn)了秒級的共識驗(yàn)證.
在聯(lián)盟鏈中不同于完全去中心化要求的公有鏈,其更適合無需大量消耗算力資源的分布式一致性算法.在區(qū)塊網(wǎng)絡(luò)中推選出一個主節(jié)點(diǎn),來完成產(chǎn)生新區(qū)塊、廣播節(jié)點(diǎn)交易信息等工作.
在激勵層將經(jīng)濟(jì)因素集成到區(qū)塊鏈體系之中,共識節(jié)點(diǎn)之間構(gòu)成了服務(wù)眾包機(jī)制[5].共識節(jié)點(diǎn)既可最大化自身的利益,又可保障整個系統(tǒng)有效地整體運(yùn)作.比特幣系統(tǒng)常見的分配機(jī)制有每N股支付、每股支付和按比例支付等.
合約層的本質(zhì)是區(qū)塊鏈底層的商業(yè)邏輯及算法[6],合約層的存在能夠?qū)崿F(xiàn)對區(qū)塊數(shù)據(jù)的靈活操作,還可在合約層實(shí)現(xiàn)區(qū)塊鏈系統(tǒng)的應(yīng)用編程.比特幣平臺使用腳本去保證合約控制,新一代區(qū)塊鏈平臺大多開始使用智能合約.
使用編程語言編寫的智能合約實(shí)現(xiàn)了商業(yè)邏輯,在區(qū)塊鏈中的全部節(jié)點(diǎn)發(fā)布合約,被調(diào)用時會在虛擬機(jī)上進(jìn)行運(yùn)行,運(yùn)行后無法被強(qiáng)行停止.將交易的商業(yè)邏輯以及訪問數(shù)據(jù)的規(guī)則封裝為智能合約后,外部應(yīng)用通過調(diào)用智能合約來跟區(qū)塊鏈進(jìn)行訪問區(qū)塊狀態(tài)或交換數(shù)據(jù)等操作.
智能合約的主要優(yōu)點(diǎn)包括:較低的人為干預(yù)風(fēng)險、準(zhǔn)確的執(zhí)行、高效的實(shí)時更新、去中心化的權(quán)威以及低運(yùn)行成本[7].智能合約為數(shù)據(jù)層的數(shù)據(jù)賦予了可靈活編程的機(jī)制,承擔(dān)起了區(qū)塊鏈中的機(jī)器代理的的角色.
基于區(qū)塊鏈平臺在應(yīng)用層可實(shí)現(xiàn)各種應(yīng)用場景和現(xiàn)實(shí)案例.
區(qū)塊鏈1.0支持虛擬貨幣相關(guān)應(yīng)用,可構(gòu)建與轉(zhuǎn)賬、數(shù)字化支付相關(guān)的去中心化電子貨幣應(yīng)用,能夠?qū)崿F(xiàn)跨國交易和快捷支付等多樣化服務(wù).比特幣應(yīng)用是其典型代表.
區(qū)塊鏈2.0增加了智能合約的創(chuàng)新應(yīng)用,智能合約在金融領(lǐng)域被作為金融市場的公正基石之后,在債券、股票、產(chǎn)權(quán)、貸款和抵押等方面便可得到廣泛應(yīng)用.同時將技術(shù)拓展到支撐一個去中心化的市場,擴(kuò)大交易范圍.
區(qū)塊鏈3.0則是以去中心化的思想去配置全球資源,將區(qū)塊鏈的應(yīng)用范圍拓展到貨幣和金融以外的領(lǐng)域.比如政府選舉、文化版權(quán)、社會公正和健康醫(yī)療等.
區(qū)塊鏈類型可基本被分為公有鏈、聯(lián)盟鏈和私有鏈3類.公有鏈最早出現(xiàn),是最能體現(xiàn)區(qū)塊鏈理念的一種類型.針對當(dāng)下的需求場景和公有鏈的一些問題,具備聯(lián)盟屬性的聯(lián)盟鏈開始被推向市場.私有鏈?zhǔn)情_放程度最低的一種類型,僅供內(nèi)部人員使用.目前區(qū)塊鏈開發(fā)平臺層出不窮,圖3列舉了一些當(dāng)前主流區(qū)塊鏈應(yīng)用開發(fā)平臺.
圖3 主流區(qū)塊鏈平臺
公有鏈完全對外公開,用戶可自由訪問區(qū)塊網(wǎng)絡(luò),以及在鏈上廣播交易數(shù)據(jù),還可即時參與網(wǎng)絡(luò)共識過程.
公有鏈?zhǔn)钦嬲邆渫耆ブ行幕卣鞯膮^(qū)塊鏈,能夠在去信任化的網(wǎng)絡(luò)環(huán)境中快速建立共識,形成去中心化的運(yùn)行機(jī)制[8],并且交易信息不可篡改.共識機(jī)制一般采用Pow或PoS.比特幣系統(tǒng)就是基于公有鏈,但其應(yīng)用范圍僅限于數(shù)字貨幣類型,以太坊(Ethereum)是在公有鏈場景中應(yīng)用最廣泛的通用開發(fā)平臺.
聯(lián)盟鏈中只有聯(lián)盟成員可加入聯(lián)盟鏈網(wǎng)絡(luò),按照聯(lián)盟規(guī)則來制定用戶在鏈上的讀寫權(quán)限和記賬權(quán)限.由于聯(lián)盟鏈的注冊許可限制的特征,對于金融機(jī)構(gòu)的交易、結(jié)算或清算場景非常適用.共識機(jī)制對安全性能要求較高,一般采用權(quán)益證明或?qū)嵱冒菡纪ト蒎e算法、Raft算法等共識算法來代替工作量證明的挖礦機(jī)制.常見平臺有超級賬本(Hyperledger)以及國內(nèi)的FISCO-BCOS.
私有鏈網(wǎng)絡(luò)僅在私有組織內(nèi)部使用,按照私有組織規(guī)則來制定用戶在鏈上的讀寫權(quán)限和記賬權(quán)限.應(yīng)用場景一般是數(shù)據(jù)庫管理和審計等企業(yè)內(nèi)部的私有應(yīng)用.私有鏈可有效防范來自內(nèi)部或外部對數(shù)據(jù)的安全攻擊.許多公有鏈?zhǔn)腔跓o政府主義理念而設(shè)計的,所以采用P2P網(wǎng)絡(luò)以實(shí)現(xiàn)完全去中心化.私有鏈?zhǔn)怯伤接薪M織進(jìn)行管控,數(shù)據(jù)信息不對外開放,只有內(nèi)部人員能夠參與.
(1)安全問題.
基于PoW共識協(xié)議的區(qū)塊鏈系統(tǒng),51%攻擊問題是其面臨的最大安全威脅,雖然通過掌握51%算力去攻擊網(wǎng)絡(luò)難度極高,并且收益小于投入,但是威脅始終存在.
(2)匿名性和隱私性.
區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)并不具備真正的匿名性,在數(shù)據(jù)傳輸時仍然給出了一個地址,就擁有了被識別和定位的可能性,導(dǎo)致隱私性無法保障.
(3)吞吐效率.
區(qū)塊鏈系統(tǒng)安全性的確保犧牲了性能指標(biāo)[9],交易數(shù)據(jù)的簽名、驗(yàn)證以及區(qū)塊的哈希運(yùn)算等都占用大量系統(tǒng)開銷.比特幣系統(tǒng)每秒最多僅能完成7筆交易,吞吐量僅僅為7 TPS;以太坊的吞吐量也僅為25 TPS.
(4)資源浪費(fèi).
PoW共識機(jī)制中的大部分算力消耗在搜索隨機(jī)數(shù),進(jìn)行哈希運(yùn)算的過程中,并沒有產(chǎn)生實(shí)際的價值,是一種典型的資源浪費(fèi).算力證明導(dǎo)致世界范圍內(nèi)大量礦池的出現(xiàn),同樣是資源的浪費(fèi).
(5)數(shù)據(jù)空間存儲.
區(qū)塊網(wǎng)絡(luò)中的所有節(jié)點(diǎn)存儲著相同的數(shù)據(jù)信息,當(dāng)數(shù)據(jù)與日俱增積累到一定量級時,如何有效的解決存儲空間的需求問題是一個嚴(yán)峻挑戰(zhàn).
(6)并發(fā)處理.
區(qū)塊鏈網(wǎng)絡(luò)是以P2P形式相互關(guān)聯(lián),每個節(jié)點(diǎn)的身份對等,對于高并發(fā)服務(wù)場景下的相關(guān)設(shè)計不夠周全.
(7)去中心化的自治組織.
當(dāng)下的區(qū)塊鏈系統(tǒng)本質(zhì)上并未達(dá)到完全的去中心化,更多的是一種弱中心化或多中心化[10].
本文概述了區(qū)塊鏈技術(shù)的基本原理、技術(shù)要點(diǎn)和基本類別,希望能夠?qū)^(qū)塊鏈初學(xué)者提供有價值的啟發(fā)與幫助.人工智能、物聯(lián)網(wǎng)技術(shù)飛速發(fā)展,區(qū)塊鏈技術(shù)可以與其進(jìn)行廣泛的深入結(jié)合,未來的“區(qū)塊鏈+”時代定會改變?nèi)祟惿罘绞?,給社會發(fā)展帶來深刻變革.