錢仲文,顧 曄,陳甜妹,徐天天
(國網浙江省電力有限公司物資分公司,杭州 310003)
隨著互聯網的全球化發(fā)展,區(qū)塊鏈已被廣泛應用于金融、醫(yī)療、供應鏈、資產管理等各個領域[1]。作為一種新型的分布式賬本,與傳統的會計技術相比,區(qū)塊鏈具有分散、安全、防篡改等特點。然而,區(qū)塊鏈技術的固有屬性可能影響其在商業(yè)中的應用和發(fā)展。受區(qū)塊大小和復雜驗證過程的限制,交易效率不高;各種區(qū)塊鏈都是獨立開發(fā)的,導致區(qū)塊鏈之間缺乏數據交流和共享的機制,從而極大地限制了區(qū)塊鏈的發(fā)展空間[2]。為了促進區(qū)塊鏈之間的協同運作,迫切需要打破這種溝通障礙,研究可靠的跨鏈通信技術已成為區(qū)塊鏈技術的重要發(fā)展方向之一。
目前,國家電網有限公司(以下簡稱“國網”)所屬企業(yè)普遍采用了以聯盟鏈為主的區(qū)塊鏈技術,并且現有國網的跨鏈技術僅能滿足國網所屬企業(yè)之間的數據通信問題,即聯盟鏈之間的跨鏈通信[3]。在國網供應鏈體系中與外部企業(yè)進行物資采購交易時,往往需要面對與包括公鏈在內的異構區(qū)塊鏈之間的跨鏈價值交換問題,目前國網還沒有構建出一套完整的兼容現有區(qū)塊鏈系統的異構鏈跨鏈體系[4]。
跨鏈是使一條區(qū)塊鏈上的代幣轉移到另一區(qū)塊鏈上,其本質是價值交換??珂湹囊饬x在于突破區(qū)塊鏈底層性能和功能的瓶頸,保障雙向信息和價值流通的準確性和可靠性??珂湙C制通常根據底層平臺技術是否同構進行分析:如果為同構,則雙方的共識算法、安全機制、區(qū)塊生成和驗證規(guī)則均一致,跨鏈機制相對簡單;如果為異構,則通常需要第三方輔助實現,跨鏈機制相對復雜和普遍。迄今為止,主要的異構跨鏈技術包括以下3 種:1)哈希鎖定(Hash-locking);2)側鏈/中繼(Side Chain/Relay);3)公證人機制(Notary Scheme)。哈希鎖定通過將資產鎖定一段時間并設置預測哈希值明文等解鎖條件實現公平交易,最早使用該技術的是比特幣閃電網絡[5]。哈希鎖定可以實現原子性的跨鏈交易,但其不適用于跨鏈資產可移植性和跨鏈智能合約[6-7]。公證人機制是引入一方或者多方可信的實體來做信用背書的跨鏈機制[8],其實現最為簡單,主要形式有3 種:基于單個節(jié)點的單簽名公證人機制、基于多個節(jié)點組成公證人組的多簽名公證人機制、分布式簽名公證人機制。側鏈錨定主鏈,不僅可以分擔其壓力,也可以擴展其性能,用于驗證來自其他區(qū)塊鏈的交易。其中,側鏈支持資產的雙向錨定,具體由單一托管、聯合錨定、驅動鏈和SPV(簡單支付驗證)錨定4 種模式組成。中繼模式則通過將原始代幣轉移到原始區(qū)塊鏈的多重簽名地址來將其鎖定,并通過簽名者投票來確定中繼鏈上發(fā)生的交易是否有效[9-10]。
目前,使用最為普遍的跨鏈技術是側鏈和中繼,而大部分的跨鏈項目核心目標是解決區(qū)塊鏈的交易吞吐量和交易速度問題,即可拓展性問題?,F階段,比較主流的跨鏈項目有:1)波卡(Polkadot)是于2016 年提出的一種支持不同區(qū)塊鏈結構的跨鏈平臺[11-12],它提供了一個中繼鏈,鏈上存儲了所有與其相連接的平行且結構化的區(qū)塊鏈數據,并可以實現不同鏈合并的安全性以及去信任的跨鏈交易性。2)宇宙網絡(Cosmos)與波卡的設計思路有些類似,即通過中繼鏈(Hub)和平行鏈(Zone)實現跨鏈信息的傳輸,進而構建出一個異構的跨鏈平臺[13-14]。Cosmos 采用了IBC(跨鏈交互協議)以實現平行鏈之間的跨鏈操作。Cosmos網絡如要鏈接其他的異構鏈,則需要額外加入一個Bridge-Zone 轉接層,其作用是對異構鏈的跨鏈交易進行中轉,并對跨鏈信息的數據結構進行規(guī)范化處理。3)Plasma 由于擴展以太坊的TPS(交易處理系統)而被提出。與閃電網絡相似,Plasma是由一系列運行在區(qū)塊鏈上的智能合約與側鏈間接交互來實現跨鏈,其優(yōu)勢在于可將主鏈上的交易轉移到側鏈(線下)執(zhí)行,主鏈只需記錄一段時間內側鏈上執(zhí)行的結果,從而顯著提升了交易效率[15-16]。
綜上所述,與單個區(qū)塊鏈上的價值交換相比,基于跨鏈的價值交換面臨著如下的挑戰(zhàn):1)如何提高可擴展性來面對蓬勃發(fā)展的跨鏈網絡,緩解區(qū)塊鏈上待寫交易的擁塞;2)當價值從一個區(qū)塊鏈被交換到另一個區(qū)塊鏈時,如何保證安全性;3)如何提高驗證效率,以降低交易的延遲。
為了降低跨鏈通信時的交易延遲,提高區(qū)塊鏈的安全性和可擴展性,本文提出一種適用于異構鏈的跨鏈價值交換機制,進而實現國網總鏈與各省分公司和子公司,尤其是與外部企業(yè)鏈間的數據協同。本文所提的跨鏈價值交換機制框架如圖1 所示。
圖1 跨鏈價值交換機制框架
該機制具有如下兩大特點:首先,針對聯盟鏈和公鏈互聯的場景,提出了通過側鏈/中繼與哈希鎖定技術相結合的跨鏈機制,在保證價值交換原子性的基礎上實現了異構區(qū)塊鏈之間的高效數據互通;其次,分別設計了面向聯盟鏈側和公鏈側的智能合約和相應的交易驗證流程。
聯盟鏈到公鏈的跨鏈過程主要包括價值在聯盟鏈側的鎖定以及在公鏈側的解鎖。以制造商和經銷商所構成的兩級供應鏈為例,當聯盟鏈上的經銷商企業(yè)發(fā)送一筆價值給公鏈上的制造商企業(yè),即向對方采購某批次產品時,跨鏈過程如圖2 所示。
圖2 聯盟鏈到公鏈的跨鏈過程
具體步驟如下:
1)聯盟鏈側經銷商發(fā)起跨鏈請求,經智能合約驗證后對價值進行鎖定,并發(fā)起轉賬操作。
2)智能合約完成轉賬后對交易進行記錄和簽名,再將該信息發(fā)送給經銷商。
3)經銷商將交易簽名信息發(fā)送給公鏈側的制造商,當制造商收到該信息后發(fā)送交易提案并調用智能合約對該交易提案進行驗證和投票,并通過QSCC(查詢系統鏈碼)和橢圓曲線加密算法分別確認聯盟鏈側的交易和簽名是否有效。
4)當委員會驗證并投票通過后,智能合約對上述請求進行驗證并實行價值解鎖,通過公鏈發(fā)幣賬戶向制造商轉賬,跨鏈過程結束。
聯盟鏈之間的跨鏈過程需要通過第三方企業(yè)進行,中繼方可實現不同聯盟鏈上的制造商和經銷商企業(yè)之間的價值交換,跨鏈過程如圖3 所示。
圖3 聯盟鏈之間的跨鏈過程
具體步驟如下:
1)聯盟鏈A 側的經銷商通過哈斯算法生成哈希原值s 所對應的哈希值h,并分別將s 和h 發(fā)送給制造商和第三方企業(yè)。
2)經銷商向公鏈側的中繼節(jié)點第三方企業(yè)發(fā)起轉賬,并通過哈希鎖定實現價值鎖定,而第三方企業(yè)則需使用s 對價值進行解鎖。
3)第三方企業(yè)收到h 之后向聯盟鏈B 側的制造商發(fā)起轉賬,并同樣通過哈希鎖定對價值進行鎖定,而制造商則需通過s 進行解鎖。
4)經銷商完成解鎖后,第三方企業(yè)獲得s 并用其對制造商的轉賬進行解鎖,跨鏈過程結束。
公鏈到聯盟鏈的跨鏈過程主要包括價值在公鏈側的鎖定以及在聯盟鏈側的解鎖。當公鏈上的經銷商企業(yè)發(fā)送一筆價值給聯盟鏈上的制造商企業(yè),即向對方采購某批次產品時,跨鏈過程如圖4 所示。
圖4 公鏈到聯盟鏈之間的跨鏈過程
具體步驟如下:
1)公鏈側的經銷商發(fā)起跨鏈請求,經公鏈側智能合約驗證后對價值進行鎖定,并發(fā)起轉賬操作。
2)智能合約執(zhí)行轉賬操作并對交易進行記錄和簽名,再將上述信息發(fā)送給經銷商。
3)經銷商將交易信息發(fā)送給聯盟側的制造商,制造商收到該信息后通過SPV(簡單支付驗證)[17]和橢圓曲線加密算法分別對該交易和簽名進行驗證。
4)驗證通過后制造商發(fā)起跨鏈請求,并繼續(xù)調用智能合約對上述請求進行驗證后對價值進行解鎖,進而聯盟鏈發(fā)幣賬戶向制造商轉賬,跨鏈過程結束。
為了確保驗證的公平性和準確性,本文提出通過委員會選舉和投票的機制來獲得最終的驗證結果,并為聯盟鏈側和公鏈側分別設計了不同類型的選舉機制。
在聯盟鏈側,本文提出由跨鏈價值交換的接收方選擇多個節(jié)點組成投票委員會,其具體過程如下:首先,接收方節(jié)點收到公鏈側的交易鎖定后,向智能合約發(fā)起請求;其次,通過背書策略指定的節(jié)點用戶組建基于該筆交易的委員會,并先后驗證簽名和交易原則;最后,將驗證路徑發(fā)送給委員會中的各個節(jié)點用戶進行SPV 驗證。
在公鏈側,本文提出所有節(jié)點均參與投票并選舉出委員會成員,而節(jié)點的投票權重則由所持有的代幣比例來決定。整個投票過程如下:首先,經過多輪投票,每輪投票中系統統計節(jié)點的票數和排名,并根據投票結果選出得票率最高的前K 個節(jié)點來組建委員會。然后,隨機改變上述K 個節(jié)點的順序并再依次進行信息驗證和投票。
為確保投標機制滿足一致性、可用性和容錯性等要求,當聯盟鏈側和公鏈側對交易進行驗證時,驗證結果在委員會中通過經典的PBFT(實用拜占庭容錯)共識算法來產生。
為了測試本文提出的跨鏈價值交換機制的效率和可擴展性,本文設計了由以太坊和Hyperledger Fabric 實現的原型系統,并通過上述區(qū)塊鏈系統的公有網絡來模擬供應鏈中異構區(qū)塊鏈企業(yè)之間物資采購的支付流程。本文實驗中計算機配置為處理器2.7GHz Intel Core i7,內存16 GB,開發(fā)環(huán)境為Linux。
本文實驗模擬基于公鏈的經銷商企業(yè)向基于聯盟鏈的國網制造商企業(yè)采購三批次不同型號電力設備產品這一支付過程。首先,由以太坊賬戶所在的客戶端發(fā)起跨鏈價值交換請求,并從以太坊 賬 戶 先 后 跨 出 562800INK,57000INK 和15000INK 至以太坊側合約賬戶實現鎖定。接著,當接收到價值跨出交易提案后,聯盟鏈側對上述交易是否到賬進行驗證。若驗證通過,則從聯盟鏈發(fā)幣賬戶執(zhí)行跨入交易至聯盟目標賬戶,先后跨入562800INK,57000INK 和15000INK。
為了驗證本文提出的機制具有較好的可擴展性(即交易的處理能力),在兩邊區(qū)塊鏈網絡中模擬60 個節(jié)點同時進行價值交換。聯盟鏈側的耗時忽略不計。公鏈側價值鎖定的處理時間統計如圖5 所示。可以看到,鎖定交易時間基本處于90~115 s 區(qū)間內,符合以太坊上交易的等待時間,并且實驗中沒有出現因交易擁堵造成處理時間線性增長的情況。
圖5 鎖定交易時間
圖6 分別給出了基于不同投票輪數情況下在公鏈側進行價值解鎖的處理時間統計??梢钥吹剑寒敒閮奢喭镀睍r,交易處理時間基本在8~16 s 區(qū)間內;當為三輪投票時,交易處理時間基本在10~18 s 區(qū)間內;當為四輪投票時,交易時間基本在10~20 s 區(qū)間內。上述3 種情況下,確認交易的等待時間均保持在較低水平,其與投票輪數的關聯不大。
圖6 不同投票輪數下的解鎖交易時間對比
通過上述實驗分析可以得出結論,本文機制中交易的鎖定和解鎖處理能力相較于傳統區(qū)塊鏈網絡具有較高的可擴展性。
圖7 分別給出了基于不同投票輪數情況下在鎖定交易中多重驗證機制所耗費的時間??梢钥吹剑寒敒閮奢喭镀睍r,多重驗證所需的處理時間基本在22~32 s 區(qū)間內;當為三輪投票時,交易時間基本在30~42 s 區(qū)間內;當為四輪投票時,交易時間則基本在38~47 s 區(qū)間內。因此可以得出結論,多種驗證機制所耗費的時間與投票輪數成正比。不過,即使經過四輪投票,所耗費的時間依然控制在可接受的范圍內。
圖7 不同投票輪數下的多重驗證機制所耗費的時間對比
通過上述實驗分析可以發(fā)現,投票輪數在四輪左右時已經可以保證投票結果具有較高的準確率,并且耗費的時間可在1 min 以內。與傳統驗證方式相比,本文提出的多重驗證機制具有較高的驗證效率。
在國網的供應鏈體系中,當與外部企業(yè)進行物資采購交易或者數據共享時通常需要解決與異構區(qū)塊鏈之間的跨鏈通信問題。為此,本文設計了一種基于異構鏈的跨鏈價值交換機制,以實現國網各省分公司和子公司之間,以及與外部企業(yè)之間的鏈間數據協同。該機制結合了側鏈/中繼和哈希鎖定的連接機制,確保了跨鏈交易的原子性。本文還提出了基于委員會的多種驗證機制,在保證驗證結果安全性和可靠性的同時,提高了驗證效率。
針對公鏈交易處理性能的局限性,下一步計劃研究如何提高公鏈交易處理能力。同時,為了使數據共享和價值交換更好地落地應用,需要加入身份認證機制來約束區(qū)塊鏈用戶的行為。