傅易文晉,陳華輝,錢江波,董一鴻
(寧波大學(xué) 信息科學(xué)與工程學(xué)院,浙江 寧波 315211)
時空數(shù)據(jù)是指具有時間與空間2個維度的數(shù)據(jù),其主要用于描述地理信息在時間維度上的變化情況,目前在三維建模、自動駕駛和物流追蹤等方面得到廣泛應(yīng)用。
目前,針對時空數(shù)據(jù)的存儲主要通過集中式的方法,但隨著數(shù)據(jù)的進一步中心化,集中式存儲方法的弊端開始顯現(xiàn)。在2018年的長生疫苗事件中,包含疫苗采購、物流及最終銷售流向的時空數(shù)據(jù)均單點集中存儲于長生公司自身服務(wù)器中。通過偽造疫苗的生產(chǎn)日期、生產(chǎn)廠家地址等信息,長生公司將過期、未授權(quán)廠家生產(chǎn)的劣質(zhì)疫苗投放到市場,導(dǎo)致注射該疫苗的嬰幼兒患上了嚴(yán)重疾病。在事件發(fā)生后,盡管長生公司公布了其服務(wù)器中存儲的相關(guān)數(shù)據(jù),但經(jīng)過調(diào)查,這些數(shù)據(jù)已經(jīng)被篡改,原始數(shù)據(jù)不知去向。在執(zhí)法部門介入后,疫苗實際上已經(jīng)大量流通,對社會造成了嚴(yán)重危害。時空數(shù)據(jù)的單點集中式存儲導(dǎo)致其他行業(yè)商品的生產(chǎn)、認(rèn)證、流通、銷售等環(huán)節(jié)也同樣發(fā)生信息不透明、大面積假冒偽劣商品難以查處等問題[1]。在2008年的毒奶粉事件、2011年的地溝油事件、2016年的山東疫苗案等的調(diào)查過程中,都出現(xiàn)了不同程度的關(guān)鍵數(shù)據(jù)缺失問題,而這些數(shù)據(jù)中多數(shù)都是時空數(shù)據(jù)。
區(qū)塊鏈與時空數(shù)據(jù)相結(jié)合為上述問題提供了一種解決思路。本文總結(jié)現(xiàn)有區(qū)塊鏈體系架構(gòu)的特點,探討分析其針對時空數(shù)據(jù)所進行的優(yōu)化以及對于時空數(shù)據(jù)的性能支持度,在此基礎(chǔ)上,對區(qū)塊鏈技術(shù)在時空數(shù)據(jù)領(lǐng)域的應(yīng)用前景和未來的研究方向進行展望。
時空數(shù)據(jù)是空間數(shù)據(jù)的擴展,其通常表現(xiàn)為包含時間數(shù)據(jù)的地理信息數(shù)據(jù)。時空數(shù)據(jù)含有空間、時間和時空數(shù)據(jù)的概念,并捕獲數(shù)據(jù)的空間和時間信息,處理隨著時間變化的空間數(shù)據(jù)或同一時間點下的不同空間數(shù)據(jù)。
空間數(shù)據(jù)包含復(fù)雜的對象,如點、線、多邊形以及其他形狀的大小參數(shù)等。時空數(shù)據(jù)將多個屬性(如緯度、經(jīng)度和時間)組合成有助于理解人類行為的度量單位,其中,最典型的時空數(shù)據(jù)為經(jīng)緯度數(shù)據(jù),通過解析經(jīng)緯度數(shù)據(jù)可以快速獲取目標(biāo)的當(dāng)前位置。時空數(shù)據(jù)具有時序?qū)傩?因此,其可以是無限的,也可以隨時開始或停止,同時可以按順序排序。空間數(shù)據(jù)揭示基于鄰近的關(guān)系,對于互聯(lián)網(wǎng)數(shù)據(jù)用戶,位置通常定義一種相關(guān)性。時空數(shù)據(jù)在3D建模、智能行車、供應(yīng)鏈管理等方面發(fā)揮了重要作用。
在一個供應(yīng)鏈解決方案中需要對某個對象進行實時追蹤,因此,跟蹤機制不僅要求時空信息不斷更新,還要求支持有關(guān)對象隨時間變化的位置查詢。其中,典型的查詢有“列出時間t位置l處的所有對象”或“列出時間間隔[t1,t2]內(nèi)在位置l半徑r范圍內(nèi)移動的所有對象”。
時空數(shù)據(jù)是供應(yīng)鏈產(chǎn)業(yè)的基礎(chǔ),目前,時空數(shù)據(jù)大多以單點集中的方式進行存儲。大型供應(yīng)商通過將其物流的時空數(shù)據(jù)存儲在單點集中式服務(wù)器中以控制數(shù)據(jù)源。單點集中式存儲所帶來的問題是存在信息孤島,大型廠商控制了數(shù)據(jù)源頭,通過封閉數(shù)據(jù)源,廠商可以發(fā)布任意虛假信息來欺騙消費者[2]。區(qū)塊鏈的出現(xiàn)為上述問題提供了解決方案。時空數(shù)據(jù)的增長速度高于金融區(qū)塊鏈系統(tǒng)當(dāng)前支持的交易數(shù)據(jù)的增長速度,此外,用于時空數(shù)據(jù)的共識協(xié)議需要位置證明處理。時空數(shù)據(jù)區(qū)塊鏈應(yīng)同時考慮安全數(shù)據(jù)存儲和高效查詢處理,但是傳統(tǒng)區(qū)塊鏈體系架構(gòu)對于時空數(shù)據(jù)的支持度有限,因此,需要從安全數(shù)據(jù)存儲及高效查詢處理兩方面對現(xiàn)有區(qū)塊鏈體系進行優(yōu)化。
早期的區(qū)塊鏈技術(shù)[3]是作為比特幣的基礎(chǔ)架構(gòu),其實質(zhì)是加密后的分布式賬簿。區(qū)塊鏈的主要存儲機制為分布式加密存儲,在進行內(nèi)容修改時需要節(jié)點依照共識機制進行投票,從而最大程度地保障數(shù)據(jù)的安全性和不可修改性。目前較為成熟的區(qū)塊鏈架構(gòu)主要有2個,即以比特幣為代表的UTXO[4]模型區(qū)塊鏈1.0體系架構(gòu)和由以太坊為代表的Account[5]模型區(qū)塊鏈2.0體系架構(gòu)。Block-DAG[6]體系架構(gòu)由以色列耶路撒冷希伯來大學(xué)提出,其被認(rèn)為是區(qū)塊鏈3.0體系架構(gòu)的主要研究方向。區(qū)塊鏈體系架構(gòu)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)包括區(qū)塊鏈和區(qū)塊兩部分。
1)區(qū)塊鏈(Blockchain)。區(qū)塊鏈?zhǔn)且粋€去中心化的分類賬系統(tǒng)[7],圖1所示為區(qū)塊鏈的基本架構(gòu)。在比特幣網(wǎng)絡(luò)的區(qū)塊鏈體系架構(gòu)中,交易被存儲在區(qū)塊上,每一個區(qū)塊的塊頭中保存有上一個區(qū)塊塊頭的哈希指針。通過單向的哈希指針,區(qū)塊與區(qū)塊之間構(gòu)成一條單向延伸的鏈,即區(qū)塊鏈[8]。

圖1 區(qū)塊鏈體系架構(gòu)
2)區(qū)塊(Block)。在比特幣網(wǎng)絡(luò)中,每筆交易都被加密并存儲在塊體中,塊體中的數(shù)據(jù)存儲在分布式列數(shù)據(jù)庫中。塊體上存儲每一筆交易的哈希值,而哈希值通過Merkle樹的形式進行存儲,因此,在塊體上并不存儲具體的交易信息。圖2所示為比特幣交易區(qū)塊架構(gòu),區(qū)塊包括塊頭和塊體,塊頭中所存儲的數(shù)據(jù)包括該區(qū)塊的版本信息、記錄交易的Merkle Root、父區(qū)塊哈希值和Timestamp等信息,塊體中存儲交易記錄的哈希值。塊體中存儲的已加密的交易內(nèi)容包括交易雙方的加密信息、交易具體金額以及付款者簽名等[9]。

圖2 比特幣交易區(qū)塊架構(gòu)Fig.2 Block structure of bitcoin transaction
時空數(shù)據(jù)是供應(yīng)鏈產(chǎn)業(yè)的基礎(chǔ),而區(qū)塊鏈在解決供應(yīng)鏈產(chǎn)業(yè)中出現(xiàn)的一些問題時發(fā)揮著重要作用[10],原因是區(qū)塊鏈自身所具有的特性與供應(yīng)鏈產(chǎn)業(yè)的需求相輔相成。表1所示為區(qū)塊鏈應(yīng)用于基于時空數(shù)據(jù)的供應(yīng)鏈產(chǎn)業(yè)時的優(yōu)點總結(jié),“”表示能實現(xiàn)該效果。

表1 區(qū)塊鏈的特性與優(yōu)點Table 1 Characteristics and advantages of blockchain
傳統(tǒng)區(qū)塊鏈體系架構(gòu)主要包括UTXO模型區(qū)塊鏈體系架構(gòu)和Account模型區(qū)塊鏈體系架構(gòu)。現(xiàn)有多數(shù)針對時空數(shù)據(jù)區(qū)塊鏈的相關(guān)研究也主要聚焦于上述2種架構(gòu),下文將對這2種架構(gòu)展開綜述。
比特幣由中本聰在2008年提出,其本質(zhì)是一種點對點的去中心化的交易貨幣,代表了區(qū)塊鏈1.0技術(shù)體系架構(gòu)。比特幣的每一筆轉(zhuǎn)賬內(nèi)容包括該轉(zhuǎn)賬地址的輸入和輸出[10],輸入及輸出的內(nèi)容為交易的金額。每個輸入產(chǎn)生一個對應(yīng)的輸出,所有的轉(zhuǎn)賬交易信息存放于交易池中,未被使用的交易輸出被稱為UTXO。在比特幣中,UTXO是用于轉(zhuǎn)賬的一種賬戶模型,與傳統(tǒng)交易模式不同,在比特幣網(wǎng)絡(luò)中沒有交易賬戶的概念,每個區(qū)塊記錄所有交易地址的加密交易信息而非賬戶余額。圖3所示為比特幣的交易機制。

圖3 比特幣交易UTXO賬戶模型
比特幣的核心思想是去中心化,所有的節(jié)點都擁有交易的副本。與現(xiàn)有金融體系不同,比特幣使用UTXO進行結(jié)算。比特幣本質(zhì)上是一種加密貨幣,它的產(chǎn)生不依賴于任何中央權(quán)威,可以將其記賬過程形象地比喻為“采礦”的過程,從事采礦的比特幣網(wǎng)絡(luò)節(jié)點稱為礦工。礦工相互競爭以計算可調(diào)整難度系數(shù)的數(shù)學(xué)問題,解決了數(shù)學(xué)問題的礦工在最短的時間內(nèi)將結(jié)果和相關(guān)信息廣播到比特幣網(wǎng)絡(luò)。當(dāng)其他礦工收到廣播后,驗證信息的有效性,檢查該信息是否存在于先前的區(qū)塊中,如果所有檢查均通過,則在當(dāng)前周期中使用最短時間解決了數(shù)學(xué)問題的礦工將獲得更新區(qū)塊鏈的權(quán)利,這一過程時長平均為10 min。在此周期中,該礦工將所有未確認(rèn)的交易打包到一個新區(qū)塊中,并按時間順序?qū)⑵滏溄拥絽^(qū)塊鏈的主鏈,然后獲得一定數(shù)量的比特幣作為獎勵。如果驗證結(jié)果無效,則計算結(jié)果和信息被丟棄,所有礦工將再次競爭開采。比特幣使用工作量證明(PoW)共識算法來確保生成新區(qū)塊,從而保證區(qū)塊鏈的穩(wěn)定增長。在這一投票機制中,所有的節(jié)點都具有相等的投票權(quán),這意味著如果要對系統(tǒng)進行攻擊,攻擊者至少要獲得51%以上節(jié)點的信任才能完全控制區(qū)塊鏈系統(tǒng)[11],這一防御體系很好地提升了系統(tǒng)的安全性。在早期比特幣用戶非常少的情況下,所有在比特幣網(wǎng)絡(luò)中運行計算機的客戶端都可以看作是一個全節(jié)點,這些節(jié)點保存著整個比特幣區(qū)塊鏈網(wǎng)絡(luò)中的數(shù)據(jù),網(wǎng)絡(luò)中每發(fā)生一次交易,接收到信息的節(jié)點會對交易信息的安全性、合規(guī)性等進行驗證,驗證通過后再廣播到全網(wǎng)絡(luò)的其他節(jié)點,數(shù)據(jù)生成后不可以篡改,這意味著比特幣全節(jié)點的數(shù)量越多,比特幣區(qū)塊鏈網(wǎng)絡(luò)就越安全。隨著節(jié)點數(shù)量的增加,由于全節(jié)點需要占用較大的內(nèi)存與帶寬,因此比特幣網(wǎng)絡(luò)采取了輕節(jié)點與全節(jié)點的分類方式[12]。輕節(jié)點不保存所有區(qū)塊的數(shù)據(jù),只保存與自己相關(guān)的數(shù)據(jù),其體積小,可以運行于電腦、手機等設(shè)備。不借助第三方的計算,UTXO模型使用了一種最不信任的方式[13]完成了一種最值得信任的交易。
區(qū)塊鏈1.0體系架構(gòu)通過UTXO模型保證了數(shù)據(jù)的不變性,數(shù)據(jù)的安全性得到了極大提高。但是,比特幣網(wǎng)絡(luò)交易確認(rèn)時間長、效率低等問題[14]限制了其對于時空數(shù)據(jù)的性能支持度。時空數(shù)據(jù)是一種時間敏感度極高的數(shù)據(jù)類型,尤其是物流數(shù)據(jù),每時每刻都在變化。緩慢的交易投票雖然保證了數(shù)據(jù)的安全性,但是對于快速變化的時空數(shù)據(jù)而言將存在效率問題。
為解決上述問題,有研究機構(gòu)提出通過側(cè)鏈技術(shù)來提升區(qū)塊鏈的投票效率,從而提升區(qū)塊鏈1.0體系架構(gòu)對于時空數(shù)據(jù)的支持度。在比特幣架構(gòu)中,所有的區(qū)塊都在一條鏈上,所有的交易信息也都存在于一條鏈上。針對時空數(shù)據(jù)的時間和空間二維屬性,文獻[15]提出使用側(cè)鏈技術(shù)來提高區(qū)塊鏈1.0體系架構(gòu)效率以使其支持時空數(shù)據(jù)的方法。該方法的主要思想是將數(shù)據(jù)在不同的區(qū)塊鏈上進行存儲,將時間數(shù)據(jù)與空間數(shù)據(jù)分別存儲在2條鏈上,通過2條鏈的并行投票來提升交易效率。由于區(qū)塊鏈中的每個全節(jié)點區(qū)塊均備份有所有區(qū)塊的相同數(shù)據(jù),因此通過雙向錨定技術(shù)[16]可以暫時將時間數(shù)據(jù)鎖定于主鏈中,同時將其所對應(yīng)的空間數(shù)據(jù)在側(cè)鏈中釋放,同樣當(dāng)對應(yīng)的空間數(shù)據(jù)在側(cè)鏈中被鎖定時,主鏈的時間數(shù)據(jù)也可以被釋放。圖4所示為通過側(cè)鏈對時空數(shù)據(jù)區(qū)塊鏈進行優(yōu)化的示意圖,其中,陰影方塊分別表示起始區(qū)塊和處理區(qū)塊。

圖4 通過側(cè)鏈優(yōu)化時空數(shù)據(jù)區(qū)塊鏈的過程示意圖
Fig.4 Process diagram of optimizing spatiotemporal data blockchain through side chain
隨著區(qū)塊鏈1.0體系架構(gòu)的進一步發(fā)展,其數(shù)據(jù)量持續(xù)增加,尤其是時空數(shù)據(jù),實時更新速度快且持續(xù)性強。區(qū)塊鏈最初規(guī)定每個區(qū)塊的存儲容量僅為1 MB,這使得區(qū)塊的冗余度較小。文獻[17]提出一種區(qū)塊擴容架構(gòu),旨在通過一個轉(zhuǎn)發(fā)隊列實現(xiàn)區(qū)塊的擴容。區(qū)塊擴容能夠提升區(qū)塊鏈的整體數(shù)據(jù)處理容量,從而使得區(qū)塊鏈能夠更好地支持大數(shù)據(jù)。圖5所示為通過轉(zhuǎn)發(fā)隊列實現(xiàn)區(qū)塊擴容從而提升區(qū)塊鏈對于時空數(shù)據(jù)支持度的過程示意圖。閃電網(wǎng)絡(luò)[18]是基于比特幣網(wǎng)絡(luò)的第2層支付協(xié)議,其通過將小額交易數(shù)據(jù)從主鏈中分離出來,并建立部分節(jié)點之間的雙向快速支付通道,從而提升區(qū)塊鏈的交易效率。對于時空數(shù)據(jù)而言,在許多應(yīng)用場景下都存在雙向數(shù)據(jù)交互,例如,在供應(yīng)鏈系統(tǒng)中,司機和指揮中心的雙向數(shù)據(jù)交互相當(dāng)頻繁,如果每次的數(shù)據(jù)交互都進行投票將大幅增加區(qū)塊鏈的負(fù)載。對于可信任的司機節(jié)點,閃電網(wǎng)絡(luò)通過在主鏈之外建立雙向傳輸通道,從而提升信任節(jié)點間的傳輸效率。圖6所示為閃電網(wǎng)絡(luò)信任節(jié)點之間的數(shù)據(jù)傳輸過程。

圖5 區(qū)塊擴容體系架構(gòu)

圖6 閃電網(wǎng)絡(luò)中信任節(jié)點間的數(shù)據(jù)傳輸示意圖
Fig.6 Data transmission diagram between trust nodes in lightning network
由于區(qū)塊鏈1.0體系架構(gòu)協(xié)議的特殊性,使得區(qū)塊鏈1.0體系架構(gòu)的性能始終存在一定瓶頸,且現(xiàn)有研究大多聚焦于提升其架構(gòu)效率。側(cè)鏈技術(shù)的相關(guān)研究旨在通過雙向錨定的簡單支付認(rèn)證技術(shù)來減輕主鏈的處理壓力。區(qū)塊擴容技術(shù)通過擴大區(qū)塊的承載能力,從而大幅提升區(qū)塊鏈的處理能力。閃電網(wǎng)絡(luò)通過將不同體量的數(shù)據(jù)分開處理,以最大限度地提升網(wǎng)絡(luò)的利用率。以上3種方式均一定程度上提升了區(qū)塊鏈1.0體系架構(gòu)的效率,但是比特幣的交易機制限制了區(qū)塊鏈1.0體系架構(gòu)在不同領(lǐng)域中的應(yīng)用。為解決該問題,區(qū)塊鏈2.0體系架構(gòu)提出智能合約的概念,從而拓展了區(qū)塊鏈在時空數(shù)據(jù)領(lǐng)域中的應(yīng)用。
區(qū)塊鏈1.0體系架構(gòu)首次實現(xiàn)了去中心化的加密貨幣,并描繪了統(tǒng)一全球貨幣的宏偉藍圖。同時,加密貨幣觸發(fā)了“多米諾骨牌效應(yīng)”,將作為先驅(qū)者引發(fā)了貨幣領(lǐng)域的革命,并帶來社會形態(tài)和運營模式的演變,從而極大地改變了人們的生活方式。然而,區(qū)塊鏈1.0體系架構(gòu)僅專注于加密貨幣,在實際應(yīng)用中需要將其擴展到除加密貨幣外的其他領(lǐng)域并構(gòu)建去中心化應(yīng)用。為解決該問題,以以太坊為代表的區(qū)塊鏈2.0體系架構(gòu)應(yīng)運而生。以太坊由VITALIK在2015年末提出,并于2016年1月亮相于在美國佛羅里達州邁阿密舉辦的北美比特幣會議[19]。以太坊允許所有區(qū)塊鏈技術(shù)的開發(fā)者在以太坊平臺中建立并使用去中心化應(yīng)用。比特幣的交易機制是確定且無法修改的,而以太坊大幅拓展了區(qū)塊鏈的應(yīng)用場景。在以太坊中存儲賬戶的余額,同時以太坊維持一個狀態(tài)機,以保證用戶能夠快速獲取當(dāng)前狀態(tài)的賬戶余額[20]。圖7所示為以太坊賬戶的基本結(jié)構(gòu)模型。

圖7 以太坊賬戶的結(jié)構(gòu)模型
以太坊賬戶主要由以下四部分內(nèi)容組成:
1)合約序號,包括了該賬戶地址截至最近一筆交易為止的累計交易次數(shù)。
2)賬戶余額,包括了該賬戶地址截至最近一筆交易為止的以太幣余額。
3)賬戶地址哈希值,存儲了該區(qū)塊的賬戶地址,用于用戶查詢。
4)Merkle Root,包括了該區(qū)塊塊體中所存儲的該賬戶交易信息的Merkle樹根值。
以太坊通過一個MPT(Merkle Patricia Tree)[21]樹狀結(jié)構(gòu)索引來提升終端用戶對于賬戶余額的查詢效率。MPT可以在以太坊的架構(gòu)中實現(xiàn)對最新狀態(tài)余額的快速查詢,其由Merkle Tree[22]和Patricia Tree[23]構(gòu)成。Merkle Tree由計算機科學(xué)家RALPH提出,用于確保從其他節(jié)點接收的數(shù)據(jù)不會被破壞和替換,并且可以檢查其他人是否欺騙或發(fā)布虛假數(shù)據(jù)。Patricia Tree是一種前綴樹的索引結(jié)構(gòu),前綴樹的索引結(jié)構(gòu)可以以更快的速度和更小的計算資源代價進行查詢及更新操作,在更新時,Patricia Tree只需修改葉節(jié)點,從而大幅提高了更新效率。圖8所示為Merkle Tree和Patricia Tree的具體結(jié)構(gòu)。

圖8 Merkle Tree和Patricia Tree結(jié)構(gòu)Fig.8 Structure of Merkle Tree and Patricia Tree
Patricia Tree可以作為索引,從而使用戶快速地查找到自身賬戶的當(dāng)前狀態(tài)以太幣余額。以圖8(b)為例,Patricia Tree共有6個葉子節(jié)點,其key的值分別是to、tea、ted、ten、A、inn,通過這樣一種前綴樹的結(jié)構(gòu),可以快速找到用戶的目標(biāo)對象。MPT是一種樹形結(jié)構(gòu),包含根節(jié)點和分支節(jié)點。根節(jié)點由分支指針和值組成,其中,分支指針存儲指向分支節(jié)點的指針。分支節(jié)點中的鍵列出了所有可能的字符,以減少動態(tài)更新帶來的計算量。當(dāng)搜索路徑到達分支節(jié)點時,關(guān)鍵詞的索引號指向搜索代碼的值。當(dāng)分支節(jié)點作為根時,分支節(jié)點的值字段存儲Merkle Tree的Merkle Root。當(dāng)用戶發(fā)起查詢時,查詢請求從Merkle Root開始逐層計算,最終到達分支節(jié)點以獲取用戶的賬戶余額。
以太坊代表了區(qū)塊鏈2.0體系架構(gòu),其MPT索引結(jié)構(gòu)滿足了用戶對于查詢速率的需求。以太坊維持一個狀態(tài)機,能夠更好地支持用戶對于賬戶余額的查詢。在每次數(shù)據(jù)寫入后只需要更新Merkle Tree,從而極大地提高了數(shù)據(jù)的寫入性能。然而,由于哈希函數(shù)的單向性,以太坊的MPT僅維持最近一次的交易狀態(tài),用戶難以查詢到歷史數(shù)據(jù)。與賬戶余額不同,時空數(shù)據(jù)具有連貫性,數(shù)據(jù)與數(shù)據(jù)之間的相關(guān)性較強。
區(qū)塊在以太坊中通過其建塊時間來進行排序。對于交易信息,交易時間與建塊時間排序相同,這樣可以保證交易的順序。但是對于時空數(shù)據(jù)而言,交易的時間并不一定是用戶最想獲取的信息,按照建塊時間進行排序反而會造成架構(gòu)查詢效率降低。文獻[24]針對學(xué)籍信息數(shù)據(jù)集提出了一種時空數(shù)據(jù)區(qū)塊鏈體系架構(gòu)ECBC,其中,學(xué)籍信息是學(xué)生在不同時間不同地點的時空數(shù)據(jù)。如圖9所示,通過對時空數(shù)據(jù)區(qū)塊鏈的區(qū)塊塊頭進行優(yōu)化,在塊頭中加入時間數(shù)據(jù)的區(qū)間信息和空間數(shù)據(jù)的索引,從而提升區(qū)塊鏈體系架構(gòu)對于時空數(shù)據(jù)的支持度。針對區(qū)塊鏈2.0體系架構(gòu)難以查詢歷史狀態(tài)的問題,通過在MPT索引結(jié)構(gòu)的葉節(jié)點中增加指針,使區(qū)塊鏈按照學(xué)號進行排列,從而有效提升了時空數(shù)據(jù)在區(qū)塊鏈上的查詢效率。

圖9 ECBC時空數(shù)據(jù)區(qū)塊鏈結(jié)構(gòu)
有研究機構(gòu)提出通過本地主機將區(qū)塊鏈的交易情況進行解析處理,從而提升時空數(shù)據(jù)區(qū)塊鏈的處理效率。文獻[25]針對時空數(shù)據(jù)區(qū)塊鏈查詢速度較慢的問題,提出一種Ethernity DB架構(gòu),其在區(qū)塊鏈2.0體系架構(gòu)的數(shù)據(jù)層和共識層中加入一個解析層,通過模塊化代碼將每次進行投票時的時空數(shù)據(jù)解析至本地數(shù)據(jù)庫然后實時存儲,從而實現(xiàn)在本地數(shù)據(jù)庫上的查詢操作。區(qū)塊鏈2.0體系架構(gòu)與區(qū)塊鏈1.0體系架構(gòu)最顯著的區(qū)別在于智能合約,通過定義智能合約,用戶可以自定義數(shù)據(jù)交互的形式、時間和邏輯等,Ethernity DB同樣定義了智能合約,用以提升其架構(gòu)本身的數(shù)據(jù)交互效率。圖10所示為Ethernity DB的體系架構(gòu)。其中,陰影部分表示處理動作。

圖10 Ethernity DB體系架構(gòu)Fig.10 Ethernity DB architecture
除了擴容技術(shù),對區(qū)塊進行改造從而提升區(qū)塊鏈2.0體系架構(gòu)對于時空數(shù)據(jù)的支持度也是目前的研究熱點之一。文獻[26]提出一種名為Loamit的區(qū)塊鏈2.0體系架構(gòu),用于檢測信貸用戶的貸款征信情況。該系統(tǒng)通過區(qū)塊鏈架構(gòu)存儲信貸用戶的交易時空數(shù)據(jù),從而監(jiān)測該用戶的資金流動情況。與ECBC不同,Loamit并未改變區(qū)塊鏈2.0體系架構(gòu)的塊頭內(nèi)部,而是通過在每個區(qū)塊的底部加入時間范圍與空間閾值,再建立所有區(qū)塊的索引,從而提升區(qū)塊鏈2.0體系架構(gòu)對于時空數(shù)據(jù)的支持度。圖11所示為Loamit架構(gòu)的區(qū)塊結(jié)構(gòu)。

圖11 Loamit時空數(shù)據(jù)區(qū)塊鏈區(qū)塊結(jié)構(gòu)
與以比特幣為代表的區(qū)塊鏈1.0體系架構(gòu)相比,區(qū)塊鏈2.0體系結(jié)構(gòu)最顯著的特點是智能合約,這也是以太坊的核心內(nèi)容。智能合約是內(nèi)置在區(qū)塊鏈應(yīng)用程序中的代碼片段,其預(yù)先設(shè)置了各種規(guī)則和操作,且觸發(fā)機制包含在代碼中。一旦滿足觸發(fā)條件,代碼將自動根據(jù)約定的規(guī)則進行執(zhí)行。由于時空數(shù)據(jù)具有更新速度快、數(shù)據(jù)關(guān)聯(lián)度大的特點,因此對于時空數(shù)據(jù)區(qū)塊鏈2.0體系架構(gòu)的優(yōu)化主要在于提高區(qū)塊鏈效率。區(qū)塊鏈2.0體系架構(gòu)本身的MPT體系架構(gòu)存在難以查詢歷史交易數(shù)據(jù)的問題,因此,對歷史數(shù)據(jù)的查詢與維護也是時空數(shù)據(jù)區(qū)塊鏈2.0體系架構(gòu)的一個重要研究方向。
有向無環(huán)圖(DAG)是計算機科學(xué)領(lǐng)域數(shù)據(jù)結(jié)構(gòu)理論中的一個重要概念,由于獨特的拓?fù)浣Y(jié)構(gòu),DAG通常用于處理動態(tài)編程問題,例如最短路徑跟蹤、數(shù)據(jù)壓縮等。“有向”意味著網(wǎng)絡(luò)中存在方向,而且是完全相同的方向,“無環(huán)”則表示整個網(wǎng)絡(luò)結(jié)構(gòu)中沒有閉環(huán)。文獻[27]提出了一種名為PHANTOM的可擴展Block-DAG協(xié)議,其被看作區(qū)塊鏈3.0體系架構(gòu)。Block-DAG的出現(xiàn)大幅提升了區(qū)塊鏈的交易效率,比特幣的交易速度為每秒7筆交易,而Block-DAG能達到每秒200筆交易。在Block-DAG中,每筆交易構(gòu)成一個區(qū)塊,每個區(qū)塊所記錄的是其對應(yīng)用戶的交易內(nèi)容。相比傳統(tǒng)的區(qū)塊鏈體系架構(gòu),Block-DAG中的交易封裝時間大幅縮短。在Block-DAG網(wǎng)絡(luò)中,每個新交易都直接驗證其父交易,并間接驗證父區(qū)塊的交易。經(jīng)過多次直接和間接驗證后,可以找到最左邊的創(chuàng)始單元。每個交易都包含從創(chuàng)始單元到其父單元的哈希值,通過驗證父區(qū)塊的交易從而決定當(dāng)前交易,而具體驗證前序交易的數(shù)量,取決于用戶所定義的合約,用戶可以通過合約來定義交易驗證的敏感程度,這種驗證機制意味著Block-DAG實現(xiàn)了并行且異步的交易,并形成一種樹形的拓?fù)浣Y(jié)構(gòu),這可以大幅提高可擴展性。隨著時間的增加,所有節(jié)點都相互連接形成纏結(jié)結(jié)構(gòu),只要改變?nèi)魏我粋€節(jié)點的數(shù)據(jù),整個網(wǎng)絡(luò)的哈希值都會改變,因此,篡改網(wǎng)絡(luò)的難度非常大。圖12所示為Block-DAG區(qū)塊鏈基本體系結(jié)構(gòu)。

圖12 Block-DAG區(qū)塊鏈基本體系架構(gòu)
Block-DAG網(wǎng)絡(luò)采用Gossip算法[28]來確保不同交易之間狀態(tài)的最終一致性,盡管其不能始終保證網(wǎng)絡(luò)狀態(tài)的一致性,但整個網(wǎng)絡(luò)的數(shù)據(jù)將最終在某個特定時間達成一致。在以太坊區(qū)塊鏈2.0體系架構(gòu)中,MPT只能查詢到最近一次的狀態(tài)。同時,以太坊雖然可以實現(xiàn)鏈的分支,但是其訪問依舊按照某種順序進行。對于時空數(shù)據(jù)而言,查詢所得到的結(jié)果更多與其本身性質(zhì)相關(guān)而不關(guān)注塊頭的時間戳排序。Block-DAG網(wǎng)絡(luò)采用異步通信機制,可以大幅提升區(qū)塊鏈的可擴展性(吞吐量和交易速度)。網(wǎng)絡(luò)中涉及的交易越多,確認(rèn)交易的速度就越快。但是,Block-DAG良好的性能是以周期一致性為代價的。異步通信和Gossip算法在某些特定時間點獲得了Block-DAG網(wǎng)絡(luò)的數(shù)據(jù)同步,在此之前,攻擊者可以使用數(shù)據(jù)不一致性來發(fā)起雙花攻擊[29]。同時,在Block-DAG網(wǎng)絡(luò)中可能存在前向區(qū)塊鏈接失敗的情況,這將導(dǎo)致網(wǎng)絡(luò)交易確認(rèn)緩慢甚至無法確認(rèn)等問題。
時空數(shù)據(jù)包括時間和空間2個維度,目前的集中式存儲存在一些問題,而區(qū)塊鏈作為分布式存儲的代表,為解決上述問題提供了一種思路。傳統(tǒng)的區(qū)塊鏈架構(gòu)對于時空數(shù)據(jù)的支持度有限,而Block-DAG的體系架構(gòu)及快速投票協(xié)議對于時空數(shù)據(jù)的存儲、查詢等均具有較高的支持度。
目前,IOTA[30]、HLC[31]等基于Block-DAG的架構(gòu)得到了一定研究與應(yīng)用。IOTA是為物聯(lián)網(wǎng)(IoT)設(shè)計的基于時空數(shù)據(jù)的區(qū)塊鏈系統(tǒng),其將比特幣的P2P交易模式擴展到M2M模式,滿足了大量機器之間的小額支付需求。在IOTA網(wǎng)絡(luò)中,如果一個節(jié)點要發(fā)起一個新的事務(wù),首先必須驗證網(wǎng)絡(luò)中的其他2個事務(wù)并指向這2個事務(wù),此時新交易不斷進行驗證并添加到網(wǎng)絡(luò)中使得網(wǎng)絡(luò)得到擴展。IOTA網(wǎng)絡(luò)結(jié)構(gòu)如圖13所示。

圖13 IOTA區(qū)塊鏈體系結(jié)構(gòu)
HLC是基于Block-DAG的面向清真食品的來源可追溯平臺,其通過IOT數(shù)據(jù)采集體系對供應(yīng)鏈物流中的時空數(shù)據(jù)進行自動記錄和上傳,無需經(jīng)過人工的干預(yù)。同時,通過對塊頭結(jié)構(gòu)及塊鏈體系、共識機制等進行改進,從而優(yōu)化清真食品供應(yīng)鏈體系。文獻[32]提出了一種基于Block-DAG的區(qū)塊鏈體系架構(gòu)Conflux,其核心是共識協(xié)議。Conflux在保證安全性能的情況下允許多個參與者同時向區(qū)塊鏈系統(tǒng)進行請求與寫入。共識算法根據(jù)時間序列將Conflux網(wǎng)絡(luò)劃分為若干個單元,然后分別確定每個單元的子鏈,所有子鏈最終組成主鏈。只要主鏈保持清晰和穩(wěn)定,網(wǎng)絡(luò)中的多數(shù)常規(guī)安全問題都將得到解決。文獻[33]提出了一種Block-DAG區(qū)塊鏈體系架構(gòu)SPECTER,其核心在于避免并行處理帶來的交易沖突,并確保新生成的區(qū)塊中所包含信息的一致性。用戶可以自定義交易順序,其包括上級交易的順序和上級交易的上級交易順序。在網(wǎng)絡(luò)可用性高的前提下,表決機制可以保證網(wǎng)絡(luò)中事務(wù)的穩(wěn)定進行,并避免由系統(tǒng)沖突引起的安全問題。通用區(qū)塊鏈編程平臺Nerthus于2017年發(fā)布,其將以太坊和Block-DAG相結(jié)合,構(gòu)建了“DAG+以太坊”的區(qū)塊鏈體系結(jié)構(gòu)模型。此外,許多面向時空數(shù)據(jù)的Block-DAG體系架構(gòu)正在興起,例如Nano、Hash-Graph和ITC等都是基于Block-DAG的區(qū)塊鏈3.0體系架構(gòu),且都針對以時空數(shù)據(jù)為基礎(chǔ)的供應(yīng)鏈產(chǎn)業(yè)進行了相應(yīng)的優(yōu)化[34]。
本文闡述現(xiàn)有的時空數(shù)據(jù)區(qū)塊鏈體系架構(gòu),并分析了時空數(shù)據(jù)區(qū)塊鏈的研究現(xiàn)狀。對于當(dāng)前典型的區(qū)塊鏈體系架構(gòu),以比特幣為代表的區(qū)塊鏈1.0架構(gòu)按照建塊順序存儲,根據(jù)UTXO模型保證數(shù)據(jù)不被篡改,查詢聚焦于交易而非賬戶,其對于時空數(shù)據(jù)的支持度較低。以以太坊為代表的區(qū)塊鏈2.0架構(gòu),塊鏈按照建塊順序排序,其對于原始數(shù)據(jù)的支持度較低。由于時空數(shù)據(jù)具有更新速度快、數(shù)據(jù)關(guān)聯(lián)性強等特性,以上2種體系架構(gòu)對于時空數(shù)據(jù)的支持度均有限,而Block-DAG能夠很好地解決以上問題。對上述3種架構(gòu)進行比較,其區(qū)塊鏈體系架構(gòu)對比如圖14所示。

圖14 現(xiàn)有3種區(qū)塊鏈體系架構(gòu)對比
如表2所示,本文針對現(xiàn)有3種區(qū)塊鏈架構(gòu)對于時空數(shù)據(jù)所進行的優(yōu)化進行總結(jié)。區(qū)塊鏈1.0體系架構(gòu)所進行的優(yōu)化主要包括側(cè)鏈、閃電網(wǎng)絡(luò)等,區(qū)塊鏈2.0體系架構(gòu)的優(yōu)化方式主要包括塊體優(yōu)化、數(shù)據(jù)分區(qū)等。Block-DAG區(qū)塊鏈體系結(jié)構(gòu)突破了傳統(tǒng)區(qū)塊鏈處理能力的局限性,在系統(tǒng)吞吐量和交易速度上有了較大的提升,這使得其能夠更好地支持以時空數(shù)據(jù)為基礎(chǔ)的供應(yīng)鏈產(chǎn)業(yè)。Block-DAG區(qū)塊鏈體系結(jié)構(gòu)具有并行處理和多線程操作的優(yōu)勢,適用于供應(yīng)鏈產(chǎn)業(yè)大數(shù)據(jù)量的交易場景。目前,已有部分研究機構(gòu)使用Block-DAG體系架構(gòu)來處理時空數(shù)據(jù)及供應(yīng)鏈問題。

表2 現(xiàn)有時空數(shù)據(jù)區(qū)塊鏈體系架構(gòu)的特性比較Table 2 Comparison of characteristics of existing spatiotemporal data blockchain architectures
由于區(qū)塊鏈與基于時空數(shù)據(jù)的供應(yīng)鏈產(chǎn)業(yè)具有較高的適用性,因此有研究人員將區(qū)塊鏈的應(yīng)用前景聚焦于供應(yīng)鏈產(chǎn)業(yè)。在將區(qū)塊鏈應(yīng)用于供應(yīng)鏈的過程中,早期研究者根據(jù)區(qū)塊鏈來跟蹤供應(yīng)鏈中的相關(guān)信息,例如追蹤執(zhí)行者、執(zhí)行時間和執(zhí)行地點。供應(yīng)鏈中的每個合作伙伴都可以跟蹤產(chǎn)品的裝運、交付和進度。將區(qū)塊鏈應(yīng)用于供應(yīng)鏈產(chǎn)業(yè)還可以衡量供應(yīng)鏈中各項活動的績效,并監(jiān)控運輸過程中產(chǎn)品的質(zhì)量。基于區(qū)塊鏈的供應(yīng)鏈系統(tǒng)能夠減少工作量并確保產(chǎn)品的可追溯性,同時提高效率和降低成本。文獻[35]基于區(qū)塊鏈體系結(jié)構(gòu)提出了一種用于大豆生產(chǎn)溯源的供應(yīng)鏈系統(tǒng),其提高了大豆及相關(guān)產(chǎn)品的安全性。文獻[36]基于區(qū)塊鏈體系架構(gòu)提出一種面向醫(yī)療健康領(lǐng)域的供應(yīng)鏈系統(tǒng),其可以用于解決醫(yī)療產(chǎn)品采購中的信任問題。文獻[37]基于區(qū)塊鏈體系結(jié)構(gòu)提出了一種面向汽車生產(chǎn)裝配產(chǎn)業(yè)的供應(yīng)鏈系統(tǒng),從而提高了該產(chǎn)業(yè)中的生產(chǎn)效率。
目前,區(qū)塊鏈技術(shù)的發(fā)展極為迅速,但其仍然存在一定的問題并面臨一些挑戰(zhàn)。例如,對于區(qū)塊鏈物流和供應(yīng)鏈管理的研究仍處于起步階段,許多物流運營商,特別是中小型公司對區(qū)塊鏈知之甚少,甚至認(rèn)為區(qū)塊鏈技術(shù)是一種威脅。此外,對于區(qū)塊鏈架構(gòu)本身而言,區(qū)塊鏈1.0體系架構(gòu)已被證明不適用于大規(guī)模數(shù)據(jù)處理問題,而區(qū)塊鏈2.0體系架構(gòu)在處理歷史數(shù)據(jù)時也具有一定的局限性并存在效率瓶頸。Block-DAG區(qū)塊鏈網(wǎng)絡(luò)提升了可擴展性,但是,由于特殊的同步機制,使其更容易遭受到雙花攻擊。同時,Block-DAG區(qū)塊鏈網(wǎng)絡(luò)中可能存在前向區(qū)塊鏈接失敗的情況,這可能導(dǎo)致網(wǎng)絡(luò)交易確認(rèn)緩慢甚至無法確認(rèn)等現(xiàn)象。上述都是未來研究中需要解決的問題。
時空數(shù)據(jù)是供應(yīng)鏈產(chǎn)業(yè)的基礎(chǔ),傳統(tǒng)的集中式存儲給供應(yīng)鏈產(chǎn)業(yè)帶來了一定的問題,區(qū)塊鏈的出現(xiàn)為解決這些問題提供了一種思路。Block-DAG架構(gòu)被看作是區(qū)塊鏈3.0體系架構(gòu),其突破了傳統(tǒng)區(qū)塊鏈處理能力的局限,為區(qū)塊鏈在大數(shù)據(jù)供應(yīng)鏈領(lǐng)域中的應(yīng)用提供了可能。盡管目前Block-DAG體系架構(gòu)仍存在一定技術(shù)瓶頸,但其能夠更好地支持以時空數(shù)據(jù)為基礎(chǔ)的供應(yīng)鏈產(chǎn)業(yè),兩者相結(jié)合能夠帶來較大的經(jīng)濟效益和社會效益。