苗齊
摘要:區(qū)塊鏈發(fā)展日益蓬勃,其不可篡改、去中心化等特性逐漸被認可。其安全性的本質是副本冗余與歷史數(shù)據(jù)參與加密,這導致了區(qū)塊鏈容量的過大且無限增長,對資源的消耗是不可避免的。該文提出一種基于星際文件系統(tǒng)(IPFS)的區(qū)塊鏈存儲優(yōu)化方案,通過減小上鏈數(shù)據(jù)大小的方式限制區(qū)塊鏈容量。
關鍵詞:區(qū)塊鏈;IPFS;物流信息;數(shù)據(jù)存儲
中圖分類號:TP3? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)11-0257-03
1 引言
目前,物流行業(yè)內(nèi)部信息交互并不通暢,而一些涉及客戶的敏感信息安全問題也被外界廣泛關注?,F(xiàn)有的物流系統(tǒng)都是由企業(yè)中心化統(tǒng)一管理,如果企業(yè)內(nèi)部人員企圖謀取私利,容易發(fā)生信息泄露等問題。本文提出的一種基于IPFS優(yōu)化的聯(lián)盟區(qū)塊鏈方案,以區(qū)塊鏈的安全、可溯源、不可篡改的特性,提高了物流信息數(shù)據(jù)的可信度和安全性,防止了中心化系統(tǒng)下信息泄露等問題的出現(xiàn)。并且系統(tǒng)使用星際文件系統(tǒng),構建一種物流企業(yè)間的數(shù)據(jù)交流平臺,以實現(xiàn)物流資源的充分合理利用。
2 技術背景
區(qū)塊鏈[1]是在去中心節(jié)點的網(wǎng)絡中,由一個個區(qū)塊組成的鏈式數(shù)據(jù)結構,每個區(qū)塊中由一條條的數(shù)據(jù)信息(一般稱之為交易)構成。其中,聯(lián)盟鏈網(wǎng)絡節(jié)點劃分為各個組織,組織內(nèi)又有許多普通節(jié)點構成,網(wǎng)絡內(nèi)部的共識以組織為單位實現(xiàn)。聯(lián)盟鏈的網(wǎng)絡模型更加符合現(xiàn)代企業(yè)、機構的運營模式,因此,可以實現(xiàn)更有現(xiàn)實意義的落地應用。
IPFS(星際文件系統(tǒng))是由Juan Benet設計的,并于2014年開始由Protocol Labs在開源社區(qū)的幫助下發(fā)展的一個網(wǎng)絡傳輸協(xié)議,其旨在創(chuàng)建持久且分布式存儲和共享文件。它所具有的內(nèi)容可尋址、可追溯文件修改歷史的特點為區(qū)塊鏈信息數(shù)據(jù)的下鏈提供了條件。IPFS綜合了已有技術的特色,包括DHT、BitTorrent,Git和SFS等,實現(xiàn)了將數(shù)據(jù)存儲于本地,并將節(jié)點彼此連接從而實現(xiàn)數(shù)據(jù)傳遞的主要功能[2]。
在物流行業(yè)中,現(xiàn)有區(qū)塊鏈如果想實現(xiàn)數(shù)據(jù)安全,就必須將所有數(shù)據(jù)上鏈,而僅2019雙十一當天,菜鳥網(wǎng)絡統(tǒng)計訂單量達到12.92億單。如果想要保障這些數(shù)據(jù)全部上鏈,所形成鏈的大小將難以想象。
3 相關工作
對于區(qū)塊鏈體積過大這一問題,國內(nèi)外很多學者都提出了各自的解決方案。Robert[3]等人,基于以太坊環(huán)境提出了數(shù)據(jù)下鏈,IPFS與區(qū)塊數(shù)據(jù)綁定這一理念,提高兩個模塊之間的關聯(lián)性。對于輕節(jié)點,可以與數(shù)據(jù)進行綁定,提高使用效率。文章還提出了Block重用的概念,簡化了數(shù)據(jù)在IPFS中存儲的方式,既可以提高數(shù)據(jù)查詢效率。又能夠優(yōu)化數(shù)據(jù)在IPFS中的存儲結構;此外,文章還將初始化Hash與運行時Hash相區(qū)別,簡單區(qū)分了一個區(qū)塊中數(shù)據(jù)的使用頻率。Chen[4]等人提出將IPFS與區(qū)塊鏈相結合,并應用于Bitcoin中,實現(xiàn)了區(qū)塊數(shù)據(jù)大小大幅縮減。Zheng[5]等人使用BlockStack和ZigzagCode結合的方法,將數(shù)據(jù)在IPFS和區(qū)塊鏈間轉化的過程細化,將數(shù)據(jù)分為冷數(shù)據(jù)與熱數(shù)據(jù),區(qū)別對待,從而進一步區(qū)分了數(shù)據(jù)的使用頻率,優(yōu)化了系統(tǒng)模型。
在實際應用方面也已有很多學者提出針對不同領域的應用方案。李瑾[6]等人設計的基于區(qū)塊鏈的分布式電能量數(shù)據(jù)可信存儲機制,則是在電能量計量工作上的應用。方案提出了IPFS存儲數(shù)據(jù),區(qū)塊鏈存儲地址的概念模型,該模型對于減小區(qū)塊鏈容量有著十分顯著的效果,但是其代價是降低了數(shù)據(jù)的查詢效率,在數(shù)據(jù)查詢時,步驟煩瑣,除必要共識外,仍需經(jīng)過數(shù)據(jù)存儲節(jié)點的驗證,在大數(shù)據(jù)量情況下效率低下。
4 本文方案
本文所提出方案主要有兩個方面內(nèi)容,一是數(shù)據(jù)存儲模塊,一是數(shù)據(jù)查詢檢索模塊。其中數(shù)據(jù)存儲模塊的設計目的是通過改變區(qū)塊內(nèi)存儲內(nèi)容減小區(qū)塊大小,從而減少整個區(qū)塊鏈容量。而數(shù)據(jù)查詢檢索則是利用IPFS生成的Hash值進行數(shù)據(jù)查詢獲取的特點進行行業(yè)內(nèi)數(shù)據(jù)的交易或交換。
4.1 系統(tǒng)結構
本文提出的系統(tǒng)模型如圖1所示,聯(lián)盟內(nèi)網(wǎng)絡節(jié)點負責數(shù)據(jù)收集與處理。在收集到網(wǎng)點數(shù)據(jù)后,節(jié)點將數(shù)據(jù)打包上傳至IPFS。IPFS對接收到的數(shù)據(jù)進行存儲,完成后向節(jié)點進行反饋,并返回數(shù)據(jù)對應的地址Hash。組織節(jié)點將返回的Hash值作為普通數(shù)據(jù)進行上鏈操作。數(shù)據(jù)在聯(lián)盟網(wǎng)絡中,進行打包、背書驗證,完成區(qū)塊生成,最后存入?yún)^(qū)塊鏈。
本文方案以Fabric為基礎,設計出一個聯(lián)盟模型,由若干組織構成,每個組織有且僅有一個Anchor節(jié)點,該節(jié)點也即為Leader節(jié)點。而Orderer節(jié)點除了完成交易排序、共識外,在聯(lián)盟網(wǎng)絡中還要考慮其容錯,因此設置數(shù)量為:
[Numorderer=Numorgs3+1]? ? ? ? ? ? ? ? ? ? (1)
將Orderer節(jié)點設置大于聯(lián)盟內(nèi)組織數(shù)的三分之一,可以從數(shù)量上為Orderer節(jié)點提供足夠的容錯空間。
方案中,一個物流企業(yè)對應一個組織,組織中的節(jié)點包含企業(yè)節(jié)點、物流網(wǎng)點節(jié)點等。這些節(jié)點在系統(tǒng)中都為普通peer節(jié)點,但企業(yè)主節(jié)點為Leader節(jié)點,該節(jié)點負責與其他組織通信。
4.2 數(shù)據(jù)上傳
系統(tǒng)數(shù)據(jù)傳輸按照傳輸內(nèi)容劃分分為物流數(shù)據(jù)傳輸以及地址Hash傳輸兩個部分。
物流數(shù)據(jù)由網(wǎng)點生成并發(fā)送至企業(yè)節(jié)點,第i個物流網(wǎng)點Ni向企業(yè)節(jié)點L中傳輸?shù)臄?shù)據(jù)格式為:
[TxNi=EPKLP(Data||CertNi||SigsignNi|timestampLP? ? ? ? ? ?](2)
其中,[PKNi]為節(jié)點Ni的公鑰,[EPKLP]為利用[PKLP]加密信息,Data為從主節(jié)點LP從節(jié)點Ni獲得的數(shù)據(jù),[CertNi]為Ni身份信息,[timestampLP]為時間戳,[SigsignNi]為利用實體Ni的私鑰對[Data]哈希運算后進行的簽名數(shù)據(jù)。Data數(shù)據(jù)在傳輸時將由Peer節(jié)點第一次加密。
[Data=EPKNiDataNi||timestampNi]? ? ? ? ? ? ?(3)
[DataNi]代表物流網(wǎng)點Ni獲取的原始數(shù)據(jù),該數(shù)據(jù)在Ni中進行初始加密,并生成簽名。
企業(yè)節(jié)點向區(qū)塊鏈網(wǎng)絡發(fā)送上傳請求,調用智能合約并將地址Hash等參數(shù)傳入?yún)^(qū)塊鏈網(wǎng)絡。區(qū)塊鏈節(jié)點收到請求首先驗證用戶身份,通過后執(zhí)行智能合約將哈希值、ClientID、企業(yè)節(jié)點ID、數(shù)據(jù)收集時間等綁定并進行打包、發(fā)送給Orderer進行排序,再由Endorsing節(jié)點進行背書。之后將智能合約執(zhí)行結果寫入?yún)^(qū)塊鏈賬本,反饋給收集節(jié)點客戶端信息保存情況。
4.3 數(shù)據(jù)存儲
IPFS所存儲的數(shù)據(jù)將被Hash后存入一個默克爾無回路有向圖(MerkleDAG)以保證數(shù)據(jù)的安全性,此Hash值被稱為地址Hash。然后,將地址Hash存入?yún)^(qū)塊,從而取代原有的數(shù)據(jù)。IPFS中,使用兩次SHA256算法,再進行Base58編碼,生成的Hash長度為33Byte,使用地址Hash替代原有數(shù)據(jù),因此將原有的快遞信息替換為Hash地址,將大幅度減小一個區(qū)塊的大小,從而實現(xiàn)整個區(qū)塊鏈的“瘦身”。
方案中,在數(shù)據(jù)存儲至IPFS時,將對數(shù)據(jù)進行驗證。Leader節(jié)點利用自身私鑰,對其進行身份驗證確定數(shù)據(jù)來源,并計算相應的公鑰,解碼簽名,再對Data進行哈希加密得到Hash值,與發(fā)送節(jié)點發(fā)送來的數(shù)字簽名解密得到的Hash值進行校驗,若兩個數(shù)據(jù)相同則通過校驗,驗證數(shù)據(jù)正確。如果數(shù)據(jù)來源安全且完整有效,數(shù)據(jù)收集節(jié)點客戶端向IPFS請求將信息存儲到IPFS中。
4.4 區(qū)塊生成
方案中,收集到的交易實際上為IPFS返回的地址Hash,節(jié)點接收到數(shù)據(jù)后運行區(qū)塊創(chuàng)建程序,構建交易提案并提交給相應的背書節(jié)點,背書節(jié)點對接收到的交易提案請求進行驗證。驗證通過后調用鏈碼進行模擬執(zhí)行,產(chǎn)生包括響應值、讀寫集的事務結果,對結果進行背書并響應給應用程序。應用程序收集到足夠的消息和背書簽名之后,構建合法的交易請求并將交易請求廣播給Orderer服務節(jié)點。Orderer節(jié)點接收到事務請求之后,按時間順序對它們進行排序,并創(chuàng)建交易區(qū)塊。之后廣播給同一通道內(nèi)所有組織的Leader節(jié)點,Leader節(jié)點再同步廣播給組織內(nèi)的其他節(jié)點。每個Peer節(jié)點將區(qū)塊附加到區(qū)塊鏈中,讀寫集被提交到當前的狀態(tài)數(shù)據(jù)庫中。區(qū)塊上鏈工作就此完成。
本方案為了實現(xiàn)簡化查詢,要求各節(jié)點獲取的地址Hash除上傳區(qū)塊鏈外,需要保留一份無加密副本。副本僅保存地址Hash與節(jié)點相關信息,可用于不保證可靠性基礎上的數(shù)據(jù)快速查詢。
4.5 數(shù)據(jù)查詢
由于數(shù)據(jù)被存儲到了IPFS之中,因此單純從Fabric中無法查詢原始數(shù)據(jù),節(jié)點需從區(qū)塊鏈中獲取地址Hash,而后再根據(jù)地址Hash在IPFS獲得相應數(shù)據(jù)。其查詢流程如圖2所示,某一節(jié)點發(fā)起查詢請求,執(zhí)行智能合約。從區(qū)塊鏈賬本中檢索出查詢信息對應的哈希記錄并返回。由于在傳輸存儲過程中,原有物流數(shù)據(jù)已經(jīng)進行加密,仍須獲得相關節(jié)點的密鑰。查詢節(jié)點獲取IPFS中加密的數(shù)據(jù)以及用于解密的私鑰即可對數(shù)據(jù)進行解密,獲得原始數(shù)據(jù)。
如果數(shù)據(jù)被惡意修改或替換,其地址Hash將與節(jié)點從區(qū)塊鏈中獲取的Hash不一致,節(jié)點就無法獲取數(shù)據(jù),此時應當返回數(shù)據(jù)異常錯誤。如果數(shù)據(jù)正常則可得到響應數(shù)據(jù)。
上述查詢方式涉及兩次數(shù)據(jù)讀取,并且存在驗證步驟,從一定程度上會降低效率。而IPFS本身的查詢接口就可以實現(xiàn)對于物流數(shù)據(jù)查詢,因此,在不要求數(shù)據(jù)高安全性的情況下,可以跳過區(qū)塊鏈系統(tǒng),直接使用IPFS進行查詢,如圖3所示。
聯(lián)盟內(nèi)部節(jié)點要想直接獲取數(shù)據(jù),其步驟與上述查詢模式基本一致,不過省去了調用智能合約訪問區(qū)塊鏈的步驟,直接調用節(jié)點存儲的數(shù)據(jù)副本中的地址Hash。整個過程,聯(lián)盟網(wǎng)絡內(nèi)部只有一條請求數(shù)據(jù)、一條響應數(shù)據(jù)。直接使用IPFS查詢這意味著,數(shù)據(jù)可以面向非聯(lián)盟節(jié)點,當節(jié)點Ea想要獲取數(shù)據(jù)時,必須通過客戶節(jié)點CLi發(fā)送請求,聯(lián)盟對CLi進行身份驗證,并根據(jù)請求通知相應節(jié)點Ni,Ni自行進行數(shù)據(jù)獲取后,將加密后數(shù)據(jù)發(fā)送給Ea,外部數(shù)據(jù)查詢完成。
5 系統(tǒng)實現(xiàn)
本文提出的基于IPFS優(yōu)化的區(qū)塊鏈物流信息管理方案,區(qū)塊鏈層采用Linux基金會主持的Hyperledger Fabric項目構建的。方案部署了一個orderer節(jié)點、兩個org組織、四個peer節(jié)點,并在組織中部署了相關鏈碼。
本文設計的系統(tǒng)模型與原始區(qū)塊鏈模型存儲相同數(shù)據(jù)容量對比如圖6所示,本系統(tǒng)生成的區(qū)塊比原有普通區(qū)塊的縮小了超過75%,在很大程度上縮減了區(qū)塊鏈的容量。
6 總結
本文實現(xiàn)了一種基于IPFS的區(qū)塊系統(tǒng)模型,并將其在物流聯(lián)盟領域進行應用,本文方案主要利用IPFS進行數(shù)據(jù)存儲,預期實現(xiàn)減少區(qū)塊鏈上數(shù)據(jù)大小目標。上一章對數(shù)據(jù)進行對比可得出結論,本文方案可以實現(xiàn)減少數(shù)據(jù)量這一目標。不過,方案的實現(xiàn)是以查詢效率為代價的,在之后的工作中,將繼續(xù)探究方案對效率的影響,盡可能少的影響查詢時間,在空間與時間上做到最完美的平衡。
參考文獻:
[1] Liebeherr J, Dong G. An overlay approach to data security in ad-hoc networks[J]. Ad Hoc Networks, 2007, 5(7): 1055-1072.
[2] J.Benet.IPFS-Content Addressed, versioned, P2P File System, https://ipfs.io/,Online; accessed Jul. 28th, 2017.
[3] R.Norvil. IPFS for reduction of chain size in Ethereum[C]. IEEE 2018 International Congress on Cybermatics,2018:1121-1128.
[4] Y. Chen.An improved P2P File System Scheme based on IPFS and Blockchain[C]. IEEE International Conference on Big Data,2017:2652-2657.
[5] Q.Zheng,Y.Li and P.Chen,An Innovative IPFS-Based Storage Model for Blockchain[C]. International Congress on Web Intelligence,2018:704-708.
[6] 李瑾,仵松頎,張森林,等.基于區(qū)塊鏈的分布式電能量數(shù)據(jù)可信存儲機制[J].網(wǎng)絡與信息安全學報,2020,6(2):87-95.
【通聯(lián)編輯:代影】