錢衛(wèi)寧 邵奇峰 朱燕超 金澈清 周傲英
區(qū)塊鏈(blockchain或 block chain)是指通過數(shù)據(jù)加密、數(shù)據(jù)鏈?zhǔn)姐^稽、多副本存儲和分布式共識等機(jī)制,實(shí)現(xiàn)去中心化的分布式數(shù)據(jù)管理技術(shù)。它最早是由中本聰提出,并在比特幣(bitcoin)中加以實(shí)現(xiàn)和應(yīng)用。隨著比特幣應(yīng)用的快速發(fā)展,區(qū)塊鏈技術(shù)所具有的防篡改、不可抵賴、強(qiáng)一致和完整性等特性,特別是它的對等網(wǎng)絡(luò)(peer-to-peer network)去中心化本質(zhì),得到了工業(yè)界和學(xué)術(shù)界的廣泛關(guān)注。在加密貨幣、分布式賬本、單據(jù)管理、首次代幣發(fā)售(ICO)和眾籌、慈善等領(lǐng)域,區(qū)塊鏈技術(shù)得到了廣泛的探索和應(yīng)用。
另一方面,最早的區(qū)塊鏈技術(shù)被設(shè)計(jì)用于比特幣這一特殊的虛擬貨幣應(yīng)用。它與應(yīng)用緊密結(jié)合,所能提供的數(shù)據(jù)管理功能簡單,同時(shí)基于工作量證明(proof-of-work,簡稱 PoW)的共識機(jī)制的計(jì)算量耗費(fèi)巨大,導(dǎo)致極低的系統(tǒng)吞吐率和很長的系統(tǒng)延遲。如何提供豐富的數(shù)據(jù)管理和數(shù)據(jù)處理功能,提高系統(tǒng)性能,成為區(qū)塊鏈研究、開發(fā)和應(yīng)用所關(guān)心的熱點(diǎn)。以以太坊(Ethereum和 Hyperledger等為代表的開源項(xiàng)目則提供了相對完善的區(qū)塊鏈的開發(fā)與應(yīng)用基礎(chǔ),推動了區(qū)塊鏈普及、應(yīng)用的快速增長,以及新問題的發(fā)現(xiàn)與研究。
從數(shù)據(jù)管理角度看,區(qū)塊鏈的本質(zhì)是一個(gè)構(gòu)建在對等網(wǎng)絡(luò)上、提供了可信數(shù)據(jù)管理功能的數(shù)據(jù)庫系統(tǒng)。一個(gè)可信數(shù)據(jù)庫管理系統(tǒng)從 3個(gè)層面確保系統(tǒng)的可信性,即存儲的可信性、處理的可信性以及外部訪問的可信性。
存儲可信性是指數(shù)據(jù)處理結(jié)果一旦被確認(rèn),不會丟失或被篡改。它要求系統(tǒng)提供傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)和事務(wù)處理中所要求的事務(wù)持久性(durability),但同時(shí)也要求系統(tǒng)在存儲、通信故障,甚至在蓄意攻擊時(shí),仍能確保數(shù)據(jù)存儲的正確性。
處理可信性一方面是指數(shù)據(jù)處理的正確性,另一方面是指處理過程和結(jié)果可審計(jì)與可溯源。前者要求事務(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ù)。對等網(wǎng)絡(luò)環(huán)境中的數(shù)據(jù)管理,大都專注于查詢處理的性能。雖然已有大量關(guān)于分布式系統(tǒng)中的共識(consensus)機(jī)制研究,但在數(shù)據(jù)管理系統(tǒng)中,由于性能問題,共識機(jī)制和跨節(jié)點(diǎn)的協(xié)調(diào)通常只被用于選舉主控節(jié)點(diǎn),而較少被直接應(yīng)用于事務(wù)處理或被盡量避免。因此,在區(qū)塊鏈這樣的去中心化對等網(wǎng)絡(luò)環(huán)境中,如何在確保系統(tǒng)“正確”的同時(shí),實(shí)現(xiàn)高效事務(wù)處理,就成為一個(gè)突出的問題。
處理過程和結(jié)果的可審計(jì)及可追溯也是重要的研究問題。在傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)中,數(shù)據(jù)庫中存儲、維護(hù)的是當(dāng)前的數(shù)據(jù)狀態(tài),處理過程和數(shù)據(jù)的歷史信息通常存儲在數(shù)據(jù)庫日志中,僅被用于故障恢復(fù),并不直接提供查詢服務(wù);在系統(tǒng)無故障正常運(yùn)行的情況下,也不參與查詢的處理。在節(jié)點(diǎn)不可信的對等網(wǎng)絡(luò)環(huán)境中,一些查詢和事務(wù)在處理時(shí)需要驗(yàn)證數(shù)據(jù)的歷史狀態(tài),以確保當(dāng)前狀態(tài)的正確性。因此,傳統(tǒng)的數(shù)據(jù)管理技術(shù)無法被直接應(yīng)用于這一場景。
數(shù)據(jù)溯源(data provenance)是數(shù)據(jù)管理中的一項(xiàng)重要技術(shù),在科學(xué)數(shù)據(jù)管理和數(shù)據(jù)倉庫中有著廣泛的應(yīng)用。然而,很多數(shù)據(jù)溯源技術(shù)僅針對集中式數(shù)據(jù)庫或節(jié)點(diǎn)可信的分布式環(huán)境,在區(qū)塊鏈的應(yīng)用場景下無法直接應(yīng)用。
外部訪問可信性是指對用戶訪問的認(rèn)證。在實(shí)現(xiàn)機(jī)制上,它依賴于分布式身份認(rèn)證等技術(shù),也與具體的應(yīng)用場景和業(yè)務(wù)緊密相關(guān)。本文的綜述不涉及外部訪問可信性。
與己有的從數(shù)字貨幣、安全、協(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)證技術(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)行分析。
區(qū)塊鏈的基本數(shù)據(jù)結(jié)構(gòu)包括兩部分,即區(qū)塊內(nèi)結(jié)構(gòu)與區(qū)塊間鏈?zhǔn)浇Y(jié)構(gòu)。一個(gè)區(qū)塊包含頭信息和體信息。頭信息是區(qū)塊的元數(shù)據(jù),用于驗(yàn)證區(qū)塊,并與其前驅(qū)和后繼區(qū)塊建立關(guān)聯(lián)。通常,頭信息包含自身時(shí)間戳、前驅(qū)區(qū)塊的簽名值、一個(gè)特殊值(稱為 nonce)、驗(yàn)證要求(如難度目標(biāo))。體信息則是交易的序列。
只有當(dāng)一個(gè)區(qū)塊的簽名結(jié)果滿足驗(yàn)證要求時(shí),一個(gè)區(qū)塊才能通過驗(yàn)證。例如,在比特幣中,區(qū)塊散列(簽名)后的結(jié)果值必須小于某個(gè)特定值(該值由難度目標(biāo)決定,隨著時(shí)間的變化,難度逐漸增加)。當(dāng)一個(gè)區(qū)塊需要與其前驅(qū)建立關(guān)聯(lián)時(shí),其體信息、前驅(qū)區(qū)塊簽名值、自身時(shí)間戳、驗(yàn)證要求等信息都已經(jīng)確定,唯一能調(diào)整以獲得不同自身簽名值的變量就是nonce值。只有當(dāng)獲得了合法的nonce值后,區(qū)塊才能通過驗(yàn)證,與前驅(qū)區(qū)塊進(jìn)行鏈接。
區(qū)塊內(nèi)的交易序列常通過特殊的數(shù)據(jù)結(jié)構(gòu),如 Merkle-tree,進(jìn)行組織。Merkle-tree是一種樹型數(shù)據(jù)結(jié)構(gòu),最初提出時(shí)為二叉樹,但可被拓展為多叉樹,其葉子節(jié)點(diǎn)為數(shù)據(jù)項(xiàng)或數(shù)據(jù)項(xiàng)的散列值,每一個(gè)內(nèi)部節(jié)點(diǎn)的值為其所有子節(jié)點(diǎn)的散列值,從而根節(jié)點(diǎn)的值可被視為整棵樹的簽名。利用這一性質(zhì),Merkle-tree可被方便地用來實(shí)現(xiàn)數(shù)據(jù)集相等測試、定位修改以及零知識證明。因此,Merkle-tree在區(qū)塊鏈中被用于檢測區(qū)塊副本是否相同。
區(qū)塊鏈的邏輯結(jié)構(gòu)確保區(qū)塊間的關(guān)系可驗(yàn)證。在系統(tǒng)中,一個(gè)區(qū)塊存儲于多個(gè)節(jié)點(diǎn),以應(yīng)對由于節(jié)點(diǎn)或網(wǎng)絡(luò)故障所引起的區(qū)塊副本丟失問題。
需要注意的是,對于區(qū)塊(k-1),可能存在多個(gè)區(qū)塊k1,k2, …,kp,都能通過驗(yàn)證,成為(k-1)的后繼。如何讓參與區(qū)塊鏈的所有節(jié)點(diǎn)對區(qū)塊鏈結(jié)構(gòu)達(dá)成一致,其本質(zhì)是分布式共識(consensus)問題。通常,區(qū)塊鏈僅承認(rèn)鏈最長的那條鏈。下一節(jié)將對區(qū)塊鏈中的分布式共識機(jī)制進(jìn)行介紹。
區(qū)塊鏈系統(tǒng)的另一個(gè)重要方面是其提供服務(wù)的接口。在比特幣應(yīng)用中,區(qū)塊鏈僅提供轉(zhuǎn)賬,即事務(wù)的執(zhí)行與查詢。而隨著應(yīng)用需求以及以太坊和 HyperLedger等系統(tǒng)的發(fā)展,新的區(qū)塊鏈平臺提供了稱為“智能合約”(smartcontract)的用戶代碼執(zhí)行機(jī)制。從可信性角度看,智能合約不僅可被執(zhí)行,且其執(zhí)行歷史將被記錄,執(zhí)行過程和結(jié)果可審計(jì)、可追溯。第3.1節(jié)將介紹區(qū)塊鏈中的智能合約處理機(jī)制,而對于數(shù)據(jù)溯源這一特殊問題則在第 3.2節(jié)中加以介紹。
如前所述,存儲可信性解決區(qū)塊的容錯(cuò)一致問題,其本質(zhì)是分布式共識問題。比特幣中的區(qū)塊鏈采用了被稱為工作量證明(proof of work,簡稱 PoW)的機(jī)制來解決這一問題。PoW基于如下技術(shù)和假設(shè):根據(jù)bk,t和hk-1計(jì)算使心滿足驗(yàn)證要求的nonce需要耗費(fèi)算力,每次計(jì)算nonce所需的算力在一定時(shí)間段內(nèi)相當(dāng)。這一計(jì)算過程被稱為“挖礦”因此,如果需要篡改或偽造記錄,則需要構(gòu)造一條比當(dāng)前被公認(rèn)的區(qū)塊鏈(主鏈)更長的鏈,因此需要的算力需要超過整個(gè)區(qū)塊鏈中的其他(正在進(jìn)行正常挖礦運(yùn)算的)算力。或者,更準(zhǔn)確地說,在考慮網(wǎng)絡(luò)延遲時(shí),攻擊者的算力接近50%就會破壞比特幣區(qū)塊鏈的正確性。而當(dāng)考慮“自私挖礦(selfish mining)”——也就是當(dāng)自身“挖礦”所獲得的鏈比別人的鏈長時(shí),不發(fā)布自己的鏈,在自己的鏈上繼續(xù)挖;當(dāng)自身的鏈和別人己發(fā)布的鏈相比等長或者更短時(shí),立即發(fā)布自己的鏈,并在別人已發(fā)布的鏈上繼續(xù)“挖礦”,那么,攻擊者接近1/4算力即會危及比特幣的正確性。
PoW 共識機(jī)制的另一個(gè)問題是其性能問題。如Vukolic和Tseng對PoW 和傳統(tǒng)的拜占庭容錯(cuò)問題進(jìn)行了詳細(xì)的對比分析所述,由于比特幣區(qū)塊鏈為“公有鏈”,即其參與讀取、交易以及共識機(jī)制的用戶是開放的,其用戶規(guī)模是動態(tài)的,參與者是匿名的。這直接導(dǎo)致了 PoW機(jī)制的低吐率和高延遲。但從另一個(gè)角度看,PoW 機(jī)制實(shí)現(xiàn)了系統(tǒng)的高可擴(kuò)展性,支持從數(shù)千到數(shù)十萬個(gè)參與者,這一網(wǎng)絡(luò)規(guī)模遠(yuǎn)遠(yuǎn)大于絕大多數(shù)金融機(jī)構(gòu)信息系統(tǒng)的規(guī)模。
并非所有區(qū)塊鏈應(yīng)用的需求和對環(huán)境的假設(shè)都與比特幣相同。例如,在私有鏈(private blockchain或permissioned blockchain)或聯(lián)盟鏈(consortium blockchain)中,節(jié)點(diǎn)(參與者)就不再是匿名的,節(jié)點(diǎn)規(guī)模遠(yuǎn)小于公有鏈,且可信程度也遠(yuǎn)比在公有鏈中要高。實(shí)用拜占庭容錯(cuò)機(jī)制(practical Byzantine fault tolerance,簡稱 PBFT)可被用于該場景。與PoW不同,采用PBFT時(shí),區(qū)塊僅有被選舉出的唯一主控節(jié)點(diǎn)生成。PBFT由請求、預(yù)準(zhǔn)備、準(zhǔn)備、提交這 4個(gè)階段構(gòu)成。預(yù)準(zhǔn)備由主控節(jié)點(diǎn)發(fā)起,準(zhǔn)備階段各節(jié)點(diǎn)分別驗(yàn)證主控節(jié)點(diǎn)發(fā)起的共識請求的正確性,并將驗(yàn)證結(jié)果返回給主控節(jié)點(diǎn),并由主控節(jié)點(diǎn)匯總后在提交階段確定是否提交。與PoW相比,PBFT適用于節(jié)點(diǎn)數(shù)少于 20個(gè)的場景,可拜占庭容錯(cuò)少于1/3的節(jié)點(diǎn)的攻擊,即有少于1/3的節(jié)點(diǎn)存在漏發(fā)、錯(cuò)發(fā)或選擇性錯(cuò)發(fā)消息情況,主要開銷在于網(wǎng)絡(luò)消息傳輸帶寬,吞吐率可達(dá)數(shù)千,并將延遲降到毫秒級。此外,PBFT可確保系統(tǒng)的最終一致性。由于具有這些特性,PBFT被應(yīng)用于HyperLedger Fabric。
PoW 和 PBFT考慮的都是拜占庭容錯(cuò)問題。在私有鏈的場景下,若假設(shè)節(jié)點(diǎn)或參與者不進(jìn)行攻擊,則可進(jìn)一步放寬假設(shè)。Paxos是重要的非拜占庭場景下的共識機(jī)制,可被用于私有鏈場景。與PBFT相比,Paxos的吞吐率可進(jìn)一步提升到超過4萬tps。
Paxos的改進(jìn)版本也能處理拜占庭容錯(cuò)場景,被稱為拜占庭Paxos。Abraham 和 Malkhi提出了BVP,用以利用 TPM(trusted platform module)加密處理器提供高性能的拜占庭容錯(cuò)。
PoW、PBFT和Paxos分別是3個(gè)典型的可用于區(qū)塊鏈的共識機(jī)制。除此以外,不同的區(qū)塊鏈項(xiàng)目也采用它們的改進(jìn)版本或其他機(jī)制。PPCoin采用權(quán)益證明(proof of stake,簡稱PoS),面向公有鏈,避免了PoW導(dǎo)致的算力消耗和能源消耗。PoS通過獎(jiǎng)勵(lì)機(jī)制鼓勵(lì)參與節(jié)點(diǎn)成為驗(yàn)證者節(jié)點(diǎn),區(qū)塊的產(chǎn)生由隨機(jī)選取的驗(yàn)證者節(jié)點(diǎn)或驗(yàn)證者節(jié)點(diǎn)集合驗(yàn)證獲批。PoS避免了PoW導(dǎo)致的大量算力和電力消耗。Ripple為另一個(gè)公有鏈平臺,采用其自身的RPCA機(jī)制實(shí)現(xiàn)共識。RPCA首先將共識問題歸結(jié)到系統(tǒng)中的一組“受信任”節(jié)點(diǎn),然后采用類似于PBFT的投票選取主控節(jié)點(diǎn)方式,實(shí)現(xiàn)共識。
此外,還有Proof-of-Luck、Raft等共識機(jī)制被應(yīng)用于區(qū)塊鏈系統(tǒng)或應(yīng)用。
比特幣區(qū)塊鏈僅支持“挖礦”和轉(zhuǎn)賬,功能上僅適用于數(shù)字貨幣,具有很大的局限性。在傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)中,用戶通過提交事務(wù)來處理數(shù)據(jù)。事務(wù)常由過程型語言與SQL語句組合共同構(gòu)成,事務(wù)執(zhí)行的過程或結(jié)果通過日志進(jìn)行記錄。以太坊首先采用智能合約實(shí)現(xiàn)區(qū)塊鏈中的數(shù)據(jù)處理,而區(qū)塊鏈的邏輯結(jié)構(gòu)本身就和日志具有相似之處。
智能合約是指通過信息技術(shù)手段實(shí)現(xiàn)的可自動執(zhí)行的任務(wù)合約,其概念出現(xiàn)遠(yuǎn)早于區(qū)塊鏈技術(shù)。智能合約包含執(zhí)行條件和執(zhí)行邏輯。當(dāng)條件滿足時(shí),執(zhí)行邏輯會被自動執(zhí)行。從數(shù)據(jù)管理角度看,智能合約與數(shù)據(jù)管理系統(tǒng)中的觸發(fā)器和存儲過程具有相似性。另一方面,與傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)中的事務(wù)不同,不僅智能合約所做的處理結(jié)果需要在區(qū)塊鏈中保存,智能合約本身也需要被保存在區(qū)塊鏈中,并在系統(tǒng)的各個(gè)節(jié)點(diǎn)間同步,以確保不同節(jié)點(diǎn)和用戶所看到的智能合約的一致性。
比特幣區(qū)塊鏈僅提供非常簡單的腳本語言,用以實(shí)現(xiàn)智能合約;Ripple不提供智能合約;以太坊提供圖靈完備的智能合約腳本語言;而HyperLedger Fabric則提供Go和Java撰寫智能合約的功能。
智能合約擴(kuò)展了區(qū)塊鏈處理數(shù)據(jù)的能力,但同時(shí)也對其使用者以及系統(tǒng)的安全性提出了更高的要求。以太坊智能合約曾發(fā)生TheDAO攻擊。Maurice Herlihy對區(qū)塊鏈中由并發(fā)控制等因素導(dǎo)致的智能合約問題進(jìn)行了系統(tǒng)的梳理。
類似于數(shù)據(jù)庫日志,區(qū)塊鏈維護(hù)了區(qū)塊鏈上所有操作和處理的記錄。但區(qū)塊鏈所提供的數(shù)據(jù)查詢及分析處理功能較為簡單。作為一種可信數(shù)據(jù)管理系統(tǒng),對區(qū)塊鏈上的數(shù)據(jù)進(jìn)行溯源,是一個(gè)重要的問題。雖然理論上,在像比特幣這樣的區(qū)塊鏈平臺上,每一筆交易都能夠回溯到“挖礦”所獲得的原始比特幣,但是如何在引入更為復(fù)雜的智能合約以后,在區(qū)塊鏈平臺所管理的數(shù)據(jù)隨著應(yīng)用增多、規(guī)模擴(kuò)大以后越來越多時(shí),高效處理數(shù)據(jù)溯源查詢,是區(qū)塊鏈技術(shù)發(fā)展及在更多應(yīng)用中推廣使用所面臨的研究題目。
數(shù)據(jù)溯源(data provenance)是指對于數(shù)據(jù)處理流程的管理,解決回答數(shù)據(jù)為什么是該狀態(tài)(why)、數(shù)據(jù)從哪兒來(where)以及如何獲得(how)的問題。數(shù)據(jù)溯源的研究在科學(xué)數(shù)據(jù)管理、數(shù)據(jù)倉庫、數(shù)據(jù)資產(chǎn)管理(datacuration)的背景下進(jìn)行。
數(shù)據(jù)溯源方法可分成兩大類,即基于批注(annotation-based)的方法和非批注(non-annotation-based)的方法。對于非批注的方法,在處理數(shù)據(jù)的過程中,不需要對源數(shù)據(jù)和目標(biāo)數(shù)據(jù)(處理的結(jié)果)附加額外的信息。但是,此時(shí)需要了解存儲、維護(hù)數(shù)據(jù)進(jìn)行了何種處理。當(dāng)處理是可逆的時(shí)候,通過目標(biāo)數(shù)據(jù),就能反推得到源數(shù)據(jù)。需要注意的是,雖然如 SPJbelect-project-join)這樣的查詢,數(shù)據(jù)處理是可逆的,但是很多數(shù)據(jù)庫常用查詢是不可逆的。例如,很多聚集函數(shù)是不可逆的。非標(biāo)注的數(shù)據(jù)溯源可用于數(shù)據(jù)變換、數(shù)據(jù)集成過程的調(diào)試。當(dāng)源數(shù)據(jù)與目標(biāo)數(shù)據(jù)之間的數(shù)據(jù)模式改變時(shí),這類方法尤為有用。
基于批注的方法將每個(gè)數(shù)據(jù)項(xiàng)變換為三元組標(biāo)簽,其中s表示數(shù)據(jù)項(xiàng)源,d表示目標(biāo)數(shù)據(jù)(當(dāng)前數(shù)據(jù)),而i則表示中間數(shù)據(jù)結(jié)果。通過在數(shù)據(jù)處理過程中進(jìn)行標(biāo)簽傳播,實(shí)現(xiàn)數(shù)據(jù)的勾連,以支持?jǐn)?shù)據(jù)溯源。基于批注的數(shù)據(jù)溯源系統(tǒng)包括 DBNotes和 Mondrian。
數(shù)據(jù)溯源的查詢表達(dá)具有嚴(yán)格的代數(shù)學(xué)基礎(chǔ),可在關(guān)系數(shù)據(jù)庫上實(shí)現(xiàn)。CuratedDB和 Trio是兩個(gè)重要的數(shù)據(jù)溯源原型系統(tǒng)。
會計(jì)信息體統(tǒng)以計(jì)算機(jī)為基礎(chǔ),對當(dāng)前的數(shù)據(jù)分析更加的快捷、便利。傳統(tǒng)的管理模式無法適應(yīng)當(dāng)前信息系統(tǒng)的發(fā)展,阻礙了其加快的步伐。而云計(jì)算的優(yōu)勢便由此日益凸顯。在提高管理信息時(shí)效性的同時(shí),節(jié)省了大量的空間,縮小了內(nèi)存,提高了信息的安全性能。不可避免的是,網(wǎng)絡(luò)時(shí)代的發(fā)展使得眾多資源共享。由此,不良商家為了顧及個(gè)人的利益,通過一些非法的手段以謀取個(gè)人利益。后果不堪設(shè)想。綜上而言,要積極的定期對此類事件進(jìn)行排查,可以在一定晨讀上保障信息的安全狀況,同時(shí),完善健全監(jiān)督機(jī)制,實(shí)現(xiàn)信息安全化的發(fā)展。
數(shù)據(jù)溯源的理論和技術(shù)與數(shù)據(jù)的結(jié)構(gòu)化模式之間關(guān)聯(lián)緊密。雖然在當(dāng)前的區(qū)塊鏈應(yīng)用中,數(shù)據(jù)未必一定是結(jié)構(gòu)化的,但是,隨著應(yīng)用的發(fā)展,區(qū)塊鏈數(shù)據(jù)管理中數(shù)據(jù)模式的管理將成為一個(gè)重要的問題,也將是現(xiàn)有數(shù)據(jù)溯源方法能否被成功應(yīng)用的關(guān)鍵問題。
在查詢區(qū)塊鏈中的數(shù)據(jù)時(shí),確保每個(gè)區(qū)塊中數(shù)據(jù)的正確性是確保最終結(jié)果可信的前提,該問題類似于外包數(shù)據(jù)庫中的可認(rèn)證查詢處理。與可認(rèn)證查詢處理類似,區(qū)塊鏈也常用基于 Merkle-tree的結(jié)構(gòu)來維護(hù)一個(gè)區(qū)塊內(nèi)的事務(wù)之間的關(guān)系。
隨著區(qū)塊鏈上查詢需求的增長,在鏈?zhǔn)饺罩窘Y(jié)構(gòu)上的索引技術(shù)也正在成為重要的研究問題。
除了查詢處理,近年來在如云計(jì)算平臺這樣的硬件和操作系統(tǒng)不可信的非可信計(jì)算平臺上,提供可信的數(shù)據(jù)處理,也成為了研究熱點(diǎn)。例如,Haven系統(tǒng)原型通過在飛地(enclave)中利用Intel SGX芯片和Linux LibOS實(shí)現(xiàn)屏蔽模塊(shield module),提供包括線程、虛存、調(diào)度與文件系統(tǒng)的抽象,提供了無需進(jìn)行修改的應(yīng)用程序與Windows操作系統(tǒng)間的相互調(diào)用。
VC3是由微軟研究院研發(fā)的另一個(gè)原型系統(tǒng),用以在Hadoop平臺上運(yùn)行MapReduce程序,確保數(shù)據(jù)與處理是可信的。與 Haven不同,VC3并不在 SGX中加載操作系統(tǒng)庫,而只在其中加載Map/Reduce程序與處理的數(shù)據(jù)。程序與數(shù)據(jù)僅在處理器上運(yùn)行時(shí)是解密的。
Haven和VC3都可以運(yùn)行未經(jīng)修改的代碼,并處理數(shù)據(jù)。針對機(jī)器學(xué)習(xí)問題,如決策樹、SVM、神經(jīng)元網(wǎng)絡(luò)、矩陣分解、k-means聚類等算法,Ohrimenko等人提出了運(yùn)行于SGX的保護(hù)隱私的機(jī)器學(xué)習(xí)方法,他們通過使用實(shí)現(xiàn)了 oblivious原語的 libO庫,重寫機(jī)器學(xué)習(xí)算法,達(dá)到了可驗(yàn)證的安全機(jī)器學(xué)習(xí)的目的。
類似地,Sinha等人提出,通過將代碼分為包含程序邏輯的用戶程序和包含內(nèi)存管理和加密通信原語的運(yùn)行時(shí)庫兩部分,當(dāng)運(yùn)行時(shí)庫滿足信息發(fā)布約束(information release confinement,簡稱IRC)時(shí),系統(tǒng)的數(shù)據(jù)處理的安全性是可驗(yàn)證的。
除比特幣、以太坊和HyperLedger以外,近年來還出現(xiàn)了一大批區(qū)塊鏈相關(guān)的系統(tǒng)。
BigChainDB試圖同時(shí)實(shí)現(xiàn)傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的高性能和區(qū)塊鏈系統(tǒng)的可伸縮性。它采用兩層架構(gòu)。底層依賴于MongoDB,實(shí)現(xiàn)事務(wù)和故障恢復(fù),高層利用基于權(quán)威的區(qū)塊鏈協(xié)議應(yīng)對攻擊情況下的容錯(cuò)。由于沒有采用拜占庭容錯(cuò)機(jī)制,BigChainDB具有較高的性能。BigChianDB的目標(biāo)應(yīng)用為數(shù)字資產(chǎn)管理。
Bitcoin-NG的設(shè)計(jì)目標(biāo)為“下一代”比特幣,以具備更好的可伸縮性。與其他同類系統(tǒng)相似,它也采用兩層協(xié)議,一層選主。選舉得到的主控節(jié)點(diǎn)負(fù)責(zé)事務(wù)的串行化執(zhí)行。由于避免了事務(wù)執(zhí)行中的PoW,Bitcoin-NG可實(shí)現(xiàn)其更好的可伸縮性的目標(biāo)。
Blockstack為普林斯頓大學(xué)研發(fā)的基于區(qū)塊鏈的命名和存儲服務(wù)。BloCkStack將用于控制的元數(shù)據(jù)管理與數(shù)據(jù)存儲分開管理,并用skip-list管理區(qū)塊,以避免大規(guī)模地掃描區(qū)塊鏈。實(shí)驗(yàn)結(jié)果表明,它能極大地減少計(jì)算資源的消耗。
在應(yīng)用方面,CrowdBC為基于以太坊的去中心化的眾包平臺。眾包中的任務(wù)分發(fā)、回收等操作都采用智能合約實(shí)現(xiàn)。通過采用區(qū)塊鏈技術(shù),與集中式眾包平臺相比,CrowdBC可以更好地保護(hù)用戶的隱私。ProvChain則通過采用區(qū)塊鏈技術(shù),在云計(jì)算服務(wù)中提供數(shù)據(jù)溯源和數(shù)據(jù)驗(yàn)證服務(wù)。
與以上系統(tǒng)和應(yīng)用不同,Weaver是一個(gè)圖數(shù)據(jù)庫,提供了對于區(qū)塊鏈結(jié)構(gòu)的高效查詢。
Quoram(https://www.jpmorgan.com/global/Quoram)是Morgan基于以太坊開發(fā)的面向企業(yè)的區(qū)塊鏈平臺,與以太坊相比,Quorum實(shí)現(xiàn)了拜占庭容錯(cuò)的共識算法,其事務(wù)吞吐率可達(dá)到近千事務(wù)/秒。而 Corda(https://www.corda.net)則是R3公司主導(dǎo)研發(fā)的開源分布式賬本平臺。Corda面向金融應(yīng)用,與其他區(qū)塊鏈平臺不同,它并不在所有節(jié)點(diǎn)上維護(hù)所有數(shù)據(jù)的副本,并且,在分布式共識機(jī)制的基礎(chǔ)上提供了便利的業(yè)務(wù)邏輯編寫機(jī)制。
通過分析可見,PoW共識機(jī)制、智能合約等區(qū)塊鏈技術(shù)是面向金融應(yīng)用,特別是數(shù)字加密貨幣而設(shè)計(jì)的。它們在確保對等網(wǎng)絡(luò)中數(shù)據(jù)和處理的可信性方面,具有很好的特性,可伸縮性尤其突出。但同時(shí),現(xiàn)有的區(qū)塊鏈技術(shù)在如下 3個(gè)方面仍然存在著缺陷。首先,現(xiàn)有區(qū)塊鏈系統(tǒng)和平臺的服務(wù)接口通常是過程性的,需要用戶撰寫復(fù)雜的智能合約,與數(shù)據(jù)庫系統(tǒng)聲明性的數(shù)據(jù)操縱相比,容易導(dǎo)致錯(cuò)誤和漏洞產(chǎn)生。第二,現(xiàn)有區(qū)塊鏈系統(tǒng)大都不支持復(fù)雜模式數(shù)據(jù)管理,不能提供通用的數(shù)據(jù)建模和模式管理功能,導(dǎo)致系統(tǒng)及平臺與應(yīng)用耦合度高、應(yīng)用開發(fā)難度大。第三,由于部分區(qū)塊鏈平臺,特別是公有鏈系統(tǒng),為了保障系統(tǒng)可伸縮性,采用了PoW 共識機(jī)制,在性能上,特別是延遲和吞吐率方面,無法與傳統(tǒng)的可信數(shù)據(jù)管理系統(tǒng)相比,無法滿足大多數(shù)關(guān)鍵任務(wù)應(yīng)用的需要。
當(dāng)考慮更復(fù)雜場景下的可信數(shù)據(jù)管理問題時(shí),現(xiàn)有的區(qū)塊鏈技術(shù)和系統(tǒng)無法被直接應(yīng)用另一方面,信息技術(shù)發(fā)展是國家政策和新興商業(yè)模式落實(shí)應(yīng)用的前提:可信數(shù)據(jù)管理對于構(gòu)建社會信用體系,從機(jī)制上提供信用保障,至關(guān)重要。
例如,在共享經(jīng)濟(jì)、大宗商品交易、數(shù)字資產(chǎn)增值利用開發(fā)、安全監(jiān)督、政府治理等應(yīng)用中,業(yè)務(wù)可能涉及雙方或多方,業(yè)務(wù)間關(guān)聯(lián)模式各不相同,數(shù)據(jù)的結(jié)構(gòu)化程度不同,事務(wù)的復(fù)雜程度和并發(fā)數(shù)不同,數(shù)據(jù)處理的及時(shí)性響應(yīng)要求也不相同,借鑒區(qū)塊鏈在數(shù)字加密貨幣應(yīng)用中的成功經(jīng)驗(yàn),特別是其在系統(tǒng)可伸縮性、完全去中心化、靈活的智能合約撰寫、驗(yàn)證以及可信執(zhí)行上的特點(diǎn),在對現(xiàn)有區(qū)塊鏈和相關(guān)技術(shù)進(jìn)行梳理和分析的基礎(chǔ)上,探索大規(guī)模分布式環(huán)境下的可信數(shù)據(jù)管理基礎(chǔ)理論,設(shè)計(jì)針對特定應(yīng)用的可信數(shù)據(jù)管理系統(tǒng),或稱其為“分享型數(shù)據(jù)庫”(sharing database)系統(tǒng),提出安全、高效的可信數(shù)據(jù)管理系統(tǒng)實(shí)現(xiàn)方法,是研究的重要問題。
當(dāng)前所直接面臨的研究問題包括:在特定場景下的高性能分布式共識機(jī)制、區(qū)塊鏈上的結(jié)構(gòu)化數(shù)據(jù)管理方法、區(qū)塊鏈上的分布式數(shù)據(jù)索引構(gòu)造和維護(hù)方法、鏈?zhǔn)浇Y(jié)構(gòu)或日志結(jié)構(gòu)上的高效查詢處理和優(yōu)化技術(shù)等。
(摘自《軟件學(xué)報(bào)》2018年第1期)