發(fā)布時間:2020-03-10所屬分類:科技論文瀏覽:1次
摘 要: 摘要:作為支撐比特幣實現(xiàn)無中心高可信的賬本管理的技術(shù),區(qū)塊鏈在金融領(lǐng)域得到了廣泛關(guān)注.區(qū)塊鏈實現(xiàn)了不完全可信環(huán)境中的可信數(shù)據(jù)管理,具有去中心化、防篡改、不可抵賴、強(qiáng)一致和完整性等特性,但同時也存在高延遲和低吞吐率的性能問題.在互聯(lián)網(wǎng)技術(shù)發(fā)展
摘要:作為支撐比特幣實現(xiàn)無中心高可信的賬本管理的技術(shù),區(qū)塊鏈在金融領(lǐng)域得到了廣泛關(guān)注.區(qū)塊鏈實現(xiàn)了不完全可信環(huán)境中的可信數(shù)據(jù)管理,具有去中心化、防篡改、不可抵賴、強(qiáng)一致和完整性等特性,但同時也存在高延遲和低吞吐率的性能問題.在互聯(lián)網(wǎng)技術(shù)發(fā)展、新型應(yīng)用層出不窮的大背景下,借鑒區(qū)塊鏈在數(shù)字加密貨幣應(yīng)用中的成功經(jīng)驗,探索可信數(shù)據(jù)管理的理論、技術(shù),并設(shè)計、實現(xiàn)系統(tǒng),是學(xué)術(shù)界所面·l各的重要問題.從可信數(shù)據(jù)管理角度,介紹了區(qū)塊鏈相關(guān)的技術(shù)和研究進(jìn)展,包括分布式共識、智能合約、數(shù)據(jù)溯源等,并分析了應(yīng)用對可信數(shù)據(jù)管理所提出的需求和研究挑戰(zhàn).
關(guān)鍵詞:區(qū)塊鏈;可信數(shù)據(jù)管理;智能合約;數(shù)據(jù)溯源;分布式共識
區(qū)塊鏈(blockchain或blockchain)是指通過數(shù)據(jù)加密、數(shù)據(jù)鏈?zhǔn)姐^稽、多副本存儲和分布式共識等機(jī)制,實現(xiàn)去中心化的分布式數(shù)據(jù)管理技術(shù).它最早是由中本聰提出,并在比特~J(bitcoin)O0)JH以實現(xiàn)和應(yīng)用.隨著比特幣應(yīng)用的快速發(fā)展,區(qū)塊鏈技術(shù)所具有的防篡改、不可抵賴、強(qiáng)一致和完整性等特性,特別是它的對等網(wǎng)~(peer—to—peernetwork)去中心化本質(zhì),得到了工業(yè)界和學(xué)術(shù)界的廣泛關(guān)注.在加密貨幣”、分布式賬本[21、單據(jù)管理[引、首次代幣發(fā)售(ICo)和眾籌[4】、慈善[等領(lǐng)域,區(qū)塊鏈技術(shù)得到了廣泛的探索和應(yīng)用.
另一方面,最早的區(qū)塊鏈技術(shù)被設(shè)計用于比特幣這一特殊的虛擬貨幣應(yīng)用.它與應(yīng)用緊密結(jié)合,所能提供的數(shù)據(jù)管理功能簡單,同時基于工作量證明(proof-of-work,簡稱PoW)的共識機(jī)制的計算量耗費巨大,導(dǎo)致極低的系統(tǒng)吞吐率和很長的系統(tǒng)延遲.如何提供豐富的數(shù)據(jù)管理和數(shù)據(jù)處理功能,提高系統(tǒng)性能,成為區(qū)塊鏈研究、開發(fā)和應(yīng)用所關(guān)心的熱點.以以太坊fEthereum)[6]和Hyperledger[】等為代表的開源項目則提供了相對完善的區(qū)塊鏈的開發(fā)與應(yīng)用基礎(chǔ),推動了區(qū)塊鏈普及、應(yīng)用的快速增長,以及新問題的發(fā)現(xiàn)與研究.
從數(shù)據(jù)管理角度看,區(qū)塊鏈的本質(zhì)是一個構(gòu)建在對等網(wǎng)絡(luò)上、提供了可信數(shù)據(jù)管理功能的數(shù)據(jù)庫系統(tǒng).一個可信數(shù)據(jù)庫管理系統(tǒng)從3個層面確保系統(tǒng)的可信性,即存儲的可信性、處理的可信性以及外部訪問的可信性,如圖1所示.
存儲可信性是指數(shù)據(jù)處理結(jié)果一旦被確認(rèn),不會丟失或被篡改.它要求系統(tǒng)提供傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)[8]和事務(wù)處理[9】中所要求的事務(wù)持久性(durability),但同時也要求系統(tǒng)在存儲、通信故障,甚至在蓄意攻擊時,仍能確保數(shù)據(jù)存儲的正確性.
處理可信性一方面是指數(shù)據(jù)處理的正確性。另一方面是指處理過程和結(jié)果可審計與可溯源.前者要求事務(wù)的并發(fā)控制,而后者則要求系統(tǒng)不僅保存數(shù)據(jù)的最終狀態(tài),還要保存數(shù)據(jù)處理的過程.數(shù)據(jù)處理的正確性是對傳統(tǒng)數(shù)據(jù)管理系統(tǒng)的基本要求.但是,傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)是集中式的,保持事務(wù)的ACID屬性已有成熟并相對高效的技術(shù)is,.對等網(wǎng)絡(luò)環(huán)境中的數(shù)據(jù)管理,大都專注于查詢處理的性能[1O,H】.雖然已有大量關(guān)于分布式系統(tǒng)中的共~(consensus)機(jī)制研究[12,13】,但在數(shù)據(jù)管理系統(tǒng)中,由于性能問題,共識機(jī)制和跨節(jié)點的協(xié)調(diào)通常只被用于選舉主控節(jié)點,而較少被直接應(yīng)用于事務(wù)處理或被盡量避免IH】.因此,在區(qū)塊鏈這樣的去中心化對等網(wǎng)絡(luò)環(huán)境中,如何在確保系統(tǒng)“正確”的同時。實現(xiàn)高效事務(wù)處理,就成為一個突出的問題.
處理過程和結(jié)果的可審計及可追溯也是重要的研究問題.在傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)中,數(shù)據(jù)庫中存儲、維護(hù)的是當(dāng)前的數(shù)據(jù)狀態(tài),處理過程和數(shù)據(jù)的歷史信息通常存儲在數(shù)據(jù)庫日志中,僅被用于故障恢復(fù)『8I9],并不直接提供查詢服務(wù);在系統(tǒng)無故障正常運行的情況下,也不參與查詢的處理.在節(jié)點不可信的對等網(wǎng)絡(luò)環(huán)境中,一些查詢和事務(wù)在處理時需要驗證數(shù)據(jù)的歷史狀態(tài),以確保當(dāng)前狀態(tài)的正確性.因此,傳統(tǒng)的數(shù)據(jù)管理技術(shù)無法被直接應(yīng)用于這一場景.
數(shù)據(jù)溯源(dataprovenance)是數(shù)據(jù)管理中的一項重要技術(shù),在科學(xué)數(shù)據(jù)管理和數(shù)據(jù)倉庫中有著廣泛的應(yīng)用ll.然而,很多數(shù)據(jù)溯源技術(shù)僅針對集中式數(shù)據(jù)庫或節(jié)點可信的分布式環(huán)境,在區(qū)塊鏈的應(yīng)用場景下無法直接應(yīng)用.
外部訪問可信性是指對用戶訪問的認(rèn)證.在實現(xiàn)機(jī)制上,它依賴于分布式身份認(rèn)證等技術(shù),也與具體的應(yīng)用場景和業(yè)務(wù)緊密相關(guān).本文的綜述不涉及外部訪問可信性。
.與已有的從數(shù)字貨幣【】、安全[17]、協(xié)議、系統(tǒng)架構(gòu)【、私有鏈和研究挑戰(zhàn)【角度所進(jìn)行的區(qū)塊鏈技術(shù)綜述不同,本文從可信數(shù)據(jù)管理的角度梳理區(qū)塊鏈與相關(guān)數(shù)據(jù)管理技術(shù)的關(guān)聯(lián).介紹在不完全可信的對等網(wǎng)絡(luò)環(huán)境中的數(shù)據(jù)管理問題和相關(guān)技術(shù),并分析它們在新型應(yīng)用場景中的適用性.由于外部可信性一方面與應(yīng)用的具體模式緊密關(guān)聯(lián),另一方面又可以部分地依賴于分布式認(rèn)證[22】技術(shù)解決,因此,本文聚焦于存儲可信性和處理可信性技術(shù).
本文第1節(jié)簡單介紹區(qū)塊鏈的基本數(shù)據(jù)結(jié)構(gòu)和概念.第2節(jié)從分布式共識的角度介紹存儲可信性保障技術(shù).第3節(jié)介紹處理可信性,包括智能合約及其問題、數(shù)據(jù)溯源技術(shù)以及可認(rèn)證查詢處理.第4節(jié)簡要介紹主要的區(qū)塊鏈系統(tǒng)和應(yīng)用.最后,第5節(jié)對可信數(shù)據(jù)管理技術(shù)所面臨的研究挑戰(zhàn)進(jìn)行分析.
1區(qū)塊鏈基礎(chǔ)
區(qū)塊鏈的基本數(shù)據(jù)結(jié)構(gòu)包括兩部分,即區(qū)塊內(nèi)結(jié)構(gòu)與區(qū)塊問鏈?zhǔn)浇Y(jié)構(gòu),分別如圖2(a)~il圖2(b)所示.一個區(qū)塊包含頭信息和體信息.頭信息是區(qū)塊的元數(shù)據(jù),用于驗證區(qū)塊,并與其前驅(qū)和后繼區(qū)塊建立關(guān)聯(lián).通常,頭信息包含自身時間戳、前驅(qū)區(qū)塊的簽名值、一個特殊值(稱為nonce)、驗證要求(如難度目標(biāo)).體信息則是交易的序列.
只有當(dāng)一個區(qū)塊的簽名結(jié)果滿足驗證要求時,一個區(qū)塊才能通過驗證.例如,在比特幣中,區(qū)塊散列(簽名)后的結(jié)果值必須小于某個特定值(該值由難度目標(biāo)決定,隨著時問的變化,難度逐漸增加)¨].當(dāng)一個區(qū)塊需要與其前驅(qū)建立關(guān)聯(lián)時,其體信息、前驅(qū)區(qū)塊簽名值、自身時問戳、驗證要求等信息都已經(jīng)確定,唯一能調(diào)整以獲得不同自身簽名值的變量就是nonce值.只有當(dāng)獲得了合法的nonce值后。區(qū)塊才能通過驗證,與前驅(qū)區(qū)塊進(jìn)行鏈接.
區(qū)塊內(nèi)的交易序列常通過特殊的數(shù)據(jù)結(jié)構(gòu),如Merkle.tree[,進(jìn)行組織.Merkle.tree是一種樹型數(shù)據(jù)結(jié)構(gòu),最初提出時為二叉樹,但可被拓展為多叉樹,其葉子節(jié)點為數(shù)據(jù)項或數(shù)據(jù)項的散列值,每一個內(nèi)部節(jié)點的值為其所有子節(jié)點的散列值,從而根節(jié)點的值可被視為整棵樹的簽名.利用這一性質(zhì),Merkle—tree可被方便地用來實現(xiàn)數(shù)據(jù)集相等測試、定位修改以及零知識證明.因此,Merkle—tree在區(qū)塊鏈中被用于檢測區(qū)塊副本是否相同.
區(qū)塊鏈的邏輯結(jié)構(gòu)確保區(qū)塊間的關(guān)系可驗證.在系統(tǒng)中,一個區(qū)塊存儲于多個節(jié)點,以應(yīng)對由于節(jié)點或網(wǎng)絡(luò)故障所引起的區(qū)塊副本丟失問題.
需要注意的是,對于區(qū)塊(1),可能存在多個區(qū)塊1,,...,,都能通過驗證,成為(1)的后繼.如何讓參與區(qū)塊鏈的所有節(jié)點對區(qū)塊鏈結(jié)構(gòu)達(dá)成一致,其本質(zhì)是分布式共識(consensus)2_問題.通常,區(qū)塊鏈僅承認(rèn)鏈最長的那條鏈.下一節(jié)將對區(qū)塊鏈中的分布式共識機(jī)制進(jìn)行介紹.
區(qū)塊鏈系統(tǒng)的另一個重要方面是其提供服務(wù)的接口.在比特幣應(yīng)用中,區(qū)塊鏈僅提供轉(zhuǎn)賬,即事務(wù)的執(zhí)行與查詢.而隨著應(yīng)用需求以及以太坊和HyperLedger等系統(tǒng)的發(fā)展,新的區(qū)塊鏈平臺提供了稱為“智能合約(smartcontract)”的用戶代碼執(zhí)行機(jī)制.從可信性角度看,智能合約不僅可被執(zhí)行,且其執(zhí)行歷史將被記錄,執(zhí)行過程和結(jié)果可審計、可追溯.第3.1節(jié)將介紹區(qū)塊鏈中的智能合約處理機(jī)制,而對于數(shù)據(jù)溯源這一特殊問題則在第3.2節(jié)中加以介紹.
推薦閱讀:《軟件學(xué)報》創(chuàng)刊于1990年,由中國科學(xué)院軟件研究所和中國計算機(jī)學(xué)會聯(lián)合主辦。是一本刊登計算機(jī)軟件各領(lǐng)域原創(chuàng)性研究成果的期刊,所刊登的論文均經(jīng)過嚴(yán)格的同行專家評議。注重刊登反映計算機(jī)科學(xué)和計算機(jī)軟件新理論、新方法和新技術(shù)以及學(xué)科發(fā)展趨勢的文章,主要涉及理論計算機(jī)科學(xué)、算法設(shè)計與分析、系統(tǒng)軟件與軟件工程、模式識別與人工智能、數(shù)據(jù)庫技術(shù)、計算機(jī)網(wǎng)絡(luò)、信息安全、計算機(jī)圖形學(xué)與計算機(jī)輔助設(shè)計、多媒體技術(shù)及其他相關(guān)的內(nèi)容。
2存儲可信性
2.1工作量證明機(jī)制
如前所述,存儲可信性解決區(qū)塊的容錯一致問題,其本質(zhì)是分布式共識問題.比特幣中的區(qū)塊鏈采用了被稱為工作量證明(proofofwork,簡稱PoW)~機(jī)制來解決這一問題.PoW基于如下技術(shù)和假設(shè):根據(jù),t和hk-1計算使h滿足驗證要求的nonce需要耗費算力,每次計算nonce所需的算力在一定時間段內(nèi)相當(dāng).這一計算過程被稱為“挖礦”.因此,如果需要篡改或偽造記錄,則需要構(gòu)造一條比當(dāng)前被公認(rèn)的區(qū)塊鏈(主鏈)更長的鏈,因此需要的算力需要超過整個區(qū)塊鏈中的其他(正在進(jìn)行正常挖礦運算的)算力.或者,更準(zhǔn)確地說,在考慮網(wǎng)絡(luò)延遲時,攻擊者的算力接近50%就會破壞比特幣區(qū)塊鏈的正確性[鍆.而當(dāng)考慮“自私挖礦(selfishmining)”一一也就是當(dāng)自身“挖礦”所獲得的鏈比別人的鏈長時,不發(fā)布自己的鏈,在自己的鏈上繼續(xù)挖;當(dāng)自身的鏈和別人己發(fā)布的鏈相比等長或者更短時,立即發(fā)布自己的鏈,并在別人已發(fā)布的鏈上繼續(xù)“挖礦”,那么,攻擊者接近1/4算力即會危及比特幣的正確性.
pow共識機(jī)制的另一個問題是其性能問題.如Vukolic]]和Tseng]”]對PoW和傳統(tǒng)的拜占庭容錯問題進(jìn)行了詳細(xì)的對比分析所述,由于比特幣區(qū)塊鏈為“公有鏈”,即其參與讀取、交易以及共識機(jī)制的用戶是開放的,其用戶規(guī)模是動態(tài)的,參與者是匿名的.這直接導(dǎo)致了PoW機(jī)制的低吐率和高延遲.但從另一個角度看,PoW機(jī)制實現(xiàn)了系統(tǒng)的高可擴(kuò)展性,支持從數(shù)干到數(shù)十萬個參與者,這一網(wǎng)絡(luò)規(guī)模遠(yuǎn)遠(yuǎn)大于絕大多數(shù)金融機(jī)構(gòu)信息系統(tǒng)的規(guī)模.
2.2實用拜占庭容錯機(jī)制
并非所有區(qū)塊鏈應(yīng)用的需求和對環(huán)境的假設(shè)都與比特幣相同.例如,在私有鏈(privateblockchain或permissionedblockchain)或聯(lián)盟鏈(consortiumblockchain)中,節(jié)點(參與者)就不再是匿名的,節(jié)點規(guī)模遠(yuǎn)小于公有鏈.且可信程度也遠(yuǎn)比在公有鏈中要高.實用拜占庭容錯機(jī)$1](practicalByzantinefaulttolerance,簡稱PBFT)可被用于該場景[27,28].與PoW不同,采用PBFT時,區(qū)塊僅有被選舉出的唯一主控節(jié)點生成.PBFT由請求、預(yù)準(zhǔn)備、準(zhǔn)備、提交這4個階段構(gòu)成.預(yù)準(zhǔn)備由主控節(jié)點發(fā)起,準(zhǔn)備階段各節(jié)點分別驗證主控節(jié)點發(fā)起的共識請求的正確性,并將驗證結(jié)果返回給主控節(jié)點,并由主控節(jié)點匯總后在提交階段確定是否提交.與PoW相比,PBFT適用于節(jié)點數(shù)少于20個的場景,可拜占庭容錯少于1/3的節(jié)點的攻擊,即有少于1/3的節(jié)點存在漏發(fā)、錯發(fā)或選擇性錯發(fā)消息情況,主要開銷在于網(wǎng)絡(luò)消息傳輸帶寬,吞吐率可達(dá)數(shù)干,并將延遲降到毫秒級.此外,PBFT可確保系統(tǒng)的最終一致性.由于具有這些特性,PBFT被應(yīng)用于HyperLedgerFabric.
2.3Paxos和BVP
PoW和PBFT考慮的都是拜占庭容錯問題.在私有鏈的場景下,若假設(shè)節(jié)點或參與者不進(jìn)行攻擊,則可進(jìn)一步放寬假設(shè).Paxos是重要的非拜占庭場景下的共識機(jī)~lJ[29,30],可被用于私有鏈場景.與PBFT相比,Paxos的吞吐率可進(jìn)一步提升到超過4萬tps[].
Paxos的改進(jìn)版本也能處理拜占庭容錯場景,被稱為拜占庭PaXos[32].Abraham和Malkhi提出了BVP[,用以利用TPM(trustedplatformmodule1加密處理器[34J提供高性能的拜占庭容錯.
2.4其他面向區(qū)塊鏈的共識機(jī)制
PoW、PBFT和Paxos分別是3個典型的可用于區(qū)塊鏈的共識機(jī)制.除此以外,不同的區(qū)塊鏈項目也采用它們的改進(jìn)版本或其他機(jī)制.PPCoin采用權(quán)益證明(proofofstake,簡稱PoS),面向公有鏈,避免了PoW導(dǎo)致的算力消耗和能源消耗[35】.PoS通過獎勵機(jī)制鼓勵參與節(jié)點成為驗證者節(jié)點,區(qū)塊的產(chǎn)生由隨機(jī)選取的驗證者節(jié)點或驗證者節(jié)點集合驗證獲批.PoS避免了PoW導(dǎo)致的大量算力和電力消耗.Ripple為另一個公有鏈平臺,采用其自身的RPCA機(jī)制實現(xiàn)共識p們.RPCA首先將共識問題歸結(jié)到系統(tǒng)中的一組“受信任”節(jié)點,然后采用類似于PBFT的投票選取主控節(jié)點方式,實現(xiàn)共識.
此外,還有Proof-of-Luck[、Raft]】等共識機(jī)制被應(yīng)用于區(qū)塊鏈系統(tǒng)或應(yīng)用.