国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于去中心化身份的開放區(qū)塊鏈預(yù)言機(jī)方案

2023-11-24 05:25張展鵬李可欣闞海斌
計算機(jī)研究與發(fā)展 2023年11期
關(guān)鍵詞:參與方公鑰合約

張展鵬 李可欣 闞海斌

1(復(fù)旦大學(xué)計算機(jī)科學(xué)技術(shù)學(xué)院 上海 200433)

2(上海市區(qū)塊鏈工程技術(shù)研究中心(復(fù)旦大學(xué))上海 200433)

3(上海市智能信息處理重點實驗室(復(fù)旦大學(xué))上海 200433)

(20210240045@fudan.edu.cn)

隨著區(qū)塊鏈相關(guān)研究與應(yīng)用在最近十余年的快速發(fā)展,區(qū)塊鏈已不限于一種電子現(xiàn)金系統(tǒng)[1],成為了去中心化應(yīng)用(decentralized application,DApp)的基礎(chǔ)設(shè)施[2-3]與可編程社會的基礎(chǔ)技術(shù)[4].區(qū)塊鏈憑借數(shù)據(jù)可信、可溯源的優(yōu)勢,在多種場景下承擔(dān)了越來越核心的角色.

在近5 年,隨著依賴智能合約[5]的DApp 快速發(fā)展,以以太坊[3]為代表的區(qū)塊鏈2.0 形成了豐富的生態(tài).在滿足定制化需求的場景下,區(qū)塊鏈成為了越來越多異質(zhì)化服務(wù)的提供者[6].定制化的區(qū)塊鏈服務(wù)通常不關(guān)心來源于其他區(qū)塊鏈或鏈下數(shù)據(jù)庫的數(shù)據(jù),且將外界數(shù)據(jù)直接寫入?yún)^(qū)塊鏈的原生途徑是不存在的[3],因此區(qū)塊鏈可被視為“數(shù)據(jù)孤島”.

解決區(qū)塊鏈“數(shù)據(jù)孤島”問題的關(guān)鍵是在源鏈與目的數(shù)據(jù)之間構(gòu)建可信的信息中繼機(jī)制[7],區(qū)塊鏈預(yù)言機(jī)是將區(qū)塊鏈外部信息寫入?yún)^(qū)塊鏈的機(jī)制[8].當(dāng)這些信息來源于其他區(qū)塊鏈時,這樣的數(shù)據(jù)獲取機(jī)制即為跨鏈[9],跨鏈問題是區(qū)塊鏈預(yù)言機(jī)相關(guān)研究熱點之一[10-12].除此之外,解決資產(chǎn)報價等即時數(shù)據(jù)可用性問題也是區(qū)塊鏈預(yù)言機(jī)相關(guān)研究熱點之一[13],此類區(qū)塊鏈預(yù)言機(jī)通常由鏈下分布式節(jié)點將價格數(shù)值等離散化信息提交到智能合約,由智能合約計算并廣播最終結(jié)果數(shù)值.

為避免單點故障,區(qū)塊鏈預(yù)言機(jī)在應(yīng)用中通常是分布式的.如何可信地聚合多點提交的數(shù)據(jù),是當(dāng)前區(qū)塊鏈預(yù)言機(jī)研究面臨的顯著挑戰(zhàn)之一[8,10].在此問題背景下,分布式區(qū)塊鏈預(yù)言機(jī)描述了一種安全多方計算場景,需要保證數(shù)據(jù)的機(jī)密性、完整性與可用性,且正確的數(shù)據(jù)獲取結(jié)果不能被少數(shù)參與方篡改.此外,區(qū)塊鏈預(yù)言機(jī)鏈上、鏈下兩部分存在業(yè)務(wù)耦合,且當(dāng)前在以太坊等公有鏈上執(zhí)行計算與存儲操作的成本較高[14],因此通過優(yōu)化設(shè)計與實現(xiàn)節(jié)省鏈上部分運(yùn)行成本也是需要予以討論的問題,否則這將限制區(qū)塊鏈預(yù)言機(jī)的應(yīng)用.

區(qū)塊鏈預(yù)言機(jī)是區(qū)塊鏈2.0 中炙手可熱的技術(shù),相關(guān)研究主要關(guān)注區(qū)塊鏈預(yù)言機(jī)在多種應(yīng)用場景下提供數(shù)據(jù)可用性服務(wù).本文認(rèn)為,從分布式相關(guān)理論出發(fā),對區(qū)塊鏈預(yù)言機(jī)所做的討論相對缺乏.隨著所承載業(yè)務(wù)越來越復(fù)雜,區(qū)塊鏈預(yù)言機(jī)在研究與應(yīng)用中將遵循越來越規(guī)范的范式,例如在資源可訪問的要求下實現(xiàn)透明性、開放性、可拓展性等分布式系統(tǒng)的目標(biāo)[15].

目前,區(qū)塊鏈預(yù)言機(jī)在多數(shù)應(yīng)用案例中[16-18]是開放的,即支持節(jié)點加入與退出.在海外相關(guān)研究中,節(jié)點通常依賴抵押虛擬貨幣為身份擔(dān)保[10,19],且節(jié)點將因誠實行為被退還一些虛擬貨幣作為激勵,本文將此類方案總結(jié)為基于虛擬貨幣抵押與激勵的節(jié)點身份方案.基于虛擬貨幣抵押與激勵的節(jié)點身份方案在國內(nèi)很可能受到合法性與合規(guī)性的挑戰(zhàn),因此為開放區(qū)塊鏈預(yù)言機(jī)項目設(shè)計與實現(xiàn)不將虛擬貨幣作為經(jīng)濟(jì)門檻的節(jié)點身份方案將有助于國內(nèi)相關(guān)項目的發(fā)展.

本文的主要工作包括4 個方面:

1)在現(xiàn)有區(qū)塊鏈預(yù)言機(jī)研究的基礎(chǔ)上,基于目的數(shù)據(jù)確定性與數(shù)據(jù)聚合方法之間的關(guān)系,作為對區(qū)塊鏈預(yù)言機(jī)分類的方法,相比同類研究,此分類方法更貼近區(qū)塊鏈預(yù)言機(jī)運(yùn)行多點電子投票的業(yè)務(wù)實質(zhì);

2)基于雙線性群與分布式密鑰生成經(jīng)典算法,本文實現(xiàn)了去中心化、適合可拓展區(qū)塊鏈預(yù)言機(jī)的密碼學(xué)方案,節(jié)省了鏈上運(yùn)行成本;

3)探索了將非同質(zhì)化通證[20]應(yīng)用為區(qū)塊鏈預(yù)言機(jī)節(jié)點身份標(biāo)識的方案并驗證了可行性,基于公開標(biāo)準(zhǔn)簡潔地實現(xiàn)了節(jié)點生命周期管理;

4)基于分布式哈希表(distributed Hash table,DHT),本文為大型分布式區(qū)塊鏈預(yù)言機(jī)設(shè)計了命名系統(tǒng),連通了鏈上與鏈下部分的節(jié)點身份標(biāo)識,從分布式系統(tǒng)的角度討論了區(qū)塊鏈預(yù)言機(jī)承載的數(shù)據(jù)可用性業(yè)務(wù).

1 相關(guān)工作

本文的研究對象是區(qū)塊鏈預(yù)言機(jī),密碼學(xué)方案基于門限簽名與秘密分享,此節(jié)將介紹相關(guān)研究現(xiàn)狀.

1.1 區(qū)塊鏈預(yù)言機(jī)

區(qū)塊鏈預(yù)言機(jī)是將外界信息可信地寫入?yún)^(qū)塊鏈的機(jī)制.當(dāng)外界信息來源于區(qū)塊鏈時,此問題即為跨鏈問題,跨鏈的目標(biāo)是實現(xiàn)區(qū)塊鏈之間的互操作性[15].互操作性是不同分布式系統(tǒng)依賴各自公開聲明的服務(wù)標(biāo)準(zhǔn)實現(xiàn)共存與協(xié)同工作,因此,區(qū)塊鏈之間實現(xiàn)互操作的機(jī)制需要彼此支持共識協(xié)議并能讀寫數(shù)據(jù).目前,跨鏈問題相關(guān)研究主要關(guān)注側(cè)鏈/中繼[21-24].除了商業(yè)項目[16-18]中和數(shù)字資產(chǎn)相關(guān)的場景,區(qū)塊鏈預(yù)言機(jī)相關(guān)研究也關(guān)注了區(qū)塊鏈預(yù)言機(jī)在跨鏈場景下解決數(shù)據(jù)驗證問題[10-12];在存儲、計算與網(wǎng)絡(luò)受限的邊緣計算場景下[25]解決物聯(lián)網(wǎng)設(shè)備和區(qū)塊鏈之間的信息中繼問題[26-27];在海量數(shù)據(jù)存儲場景下解決數(shù)據(jù)獲取與治理問題[28].針對區(qū)塊鏈預(yù)言機(jī)的可靠性分析,Lo 等人[29]分析了目前區(qū)塊鏈預(yù)言機(jī)的成功案例,提出區(qū)塊鏈預(yù)言機(jī)的鏈下部分更容易成為系統(tǒng)可靠性的故障點.Al-Breiki 等人[7]從鏈上智能合約開發(fā)、鏈上與鏈下部分之間數(shù)據(jù)傳輸?shù)陌踩耘c隱私性、鏈下數(shù)據(jù)治理與系統(tǒng)設(shè)計等角度討論了區(qū)塊鏈預(yù)言機(jī)項目在信任問題上遇到的挑戰(zhàn).

目前,相比區(qū)塊鏈可伸縮性的相關(guān)研究[30-32],針對分布式區(qū)塊鏈預(yù)言機(jī)可伸縮性的研究較少.Hess等人[33]在區(qū)塊鏈預(yù)言機(jī)應(yīng)用了狀態(tài)通道將共識機(jī)制做平行拓展.Sheng 等人[34]基于主、側(cè)鏈對數(shù)據(jù)可用性服務(wù)分片,減輕了鏈上通信開銷.相關(guān)研究主要關(guān)注區(qū)塊鏈預(yù)言機(jī)鏈上部分的可拓展性,以及減輕鏈上部分計算、存儲與通信開銷,未對優(yōu)化鏈下部分設(shè)計與實現(xiàn)給予足夠關(guān)注.

1.2 門限簽名

門限簽名允許不小于門限值個成員構(gòu)造聚合簽名代表全體成員,這些成員可以構(gòu)造全局公鑰驗證聚合簽名.Desmedt 等人[35]在1989 年提出了門限簽名概念,并在1991 年提出了基于RSA 的門限簽名方案[36].1998 年,Wang 等人[37]提出了基于離散對數(shù)的門限簽名方案.2004 年,Boneh 等人[38]提出了基于雙線性群的門限簽名方案,即BLS 簽名,BLS 簽名系統(tǒng)可拓展、帶寬開銷低、證書鏈更短,因此至今仍被廣泛應(yīng)用.2022 年,Jalil 等人[39]基于BLS 簽名實現(xiàn)了適用于公有云存儲的安全審計系統(tǒng),楊坤偉等人[40]應(yīng)用了BLS 簽名長度短的特性,提出了適用于低帶寬群智網(wǎng)絡(luò)環(huán)境的有序聚合簽名方案.

1.3 秘密分享與分布式密鑰生成

分布式密鑰生成(distributed key generation,DKG)是指分布式系統(tǒng)各方協(xié)作,生成各自公私鑰的過程;DKG 一般以秘密分享(secret sharing,SS)作為密碼學(xué)原語.

1979 年,Shamir[41]提出了基于多項式的秘密分享方案Shamir-SS.1985 年,Chor 等人[42]引入了秘密分片的可驗證性,這樣的秘密分享被稱為可驗證秘密分享(verifiable secret sharing,VSS).1987 年,F(xiàn)eldman[43]基于Shamir-SS,在私有信道上設(shè)計了一種可驗證秘密分享方案Feldman-VSS,此方案允許秘密分片持有者對秘密分片的正確性做非交互零知識證明.1991 年,Pedersen[44]基于Shamir-SS 提出了一種可驗證秘密分享方案Pedersen-VSS,相比Feldman-VSS,Pedersen-VSS 方案保證了被分享的秘密是不可泄露的.此外,秘密分享方案也可基于中國剩余定理構(gòu)造.1983 年,Asmuth 等人[45]提出了一種具有代表性的、基于中國剩余定理的秘密分享方案.

在秘密分享研究基礎(chǔ)上,1991 年,Pedersen[46]提出了一種分布式密鑰生成方案Pedersen-DKG,此方案令每個參與方并行運(yùn)行Feldman-VSS,實現(xiàn)了去中心化,不依賴于可信第三方.目前,基于Feldman-VSS與Pedersen-VSS 的DKG 方案被廣泛應(yīng)用,相關(guān)研究關(guān)注在實際應(yīng)用中如何減輕通信開銷,在分布式計算實例之間實現(xiàn)高效傳輸.2004 年,Canny 等人[47]指出,在基于Shamir-SS 的DKG 方案包含大規(guī)模參與方時,各方的通信開銷將非常大,因此提出了基于稀疏矩陣的DKG 方案,使各方無需跟全體其他參與方通信.2020 年,Kokoris Kogias 等人[48]提出了計算安全的異步DKG 方案.2022 年,Das 等人[49]在跨地域分布式云計算實例上應(yīng)用了一種低通信開銷的異步DKG 方案.

2 預(yù)備知識

本文歸納了區(qū)塊鏈預(yù)言機(jī)目的數(shù)據(jù)確定性和數(shù)據(jù)聚合方法之間的關(guān)系,應(yīng)用了BLS 簽名與Pedersen-DKG.

2.1 區(qū)塊鏈預(yù)言機(jī)投票方法

區(qū)塊鏈預(yù)言機(jī)智能合約根據(jù)區(qū)塊鏈外界實際事件自動和被獲取的數(shù)據(jù)執(zhí)行相關(guān)邏輯.除了在跨鏈場景下獲取來自其他區(qū)塊鏈的數(shù)據(jù),區(qū)塊鏈預(yù)言機(jī)還能獲取的數(shù)據(jù)包括:來自物理過程的隨機(jī)數(shù)或熵、資本市場數(shù)據(jù)、天氣信息等[50].

相關(guān)研究[8, 10]提出,區(qū)塊鏈預(yù)言機(jī)獲取數(shù)據(jù)的過程通常是多點提交,可被看成電子投票[51]過程,這也是區(qū)塊鏈預(yù)言機(jī)的業(yè)務(wù)實質(zhì).基于數(shù)據(jù)獲取節(jié)點的投票內(nèi)容是否被要求全體或多數(shù)一致,區(qū)塊鏈預(yù)言機(jī)可以被分成強(qiáng)投票協(xié)議預(yù)言機(jī)與弱投票協(xié)議預(yù)言機(jī).

定義1.強(qiáng)投票協(xié)議預(yù)言機(jī).在這類投票協(xié)議下,各節(jié)點提交的結(jié)果被要求多數(shù)或全體一致,否則無法聚合最終結(jié)果.例如,區(qū)塊鏈預(yù)言機(jī)在跨鏈場景驗證交易合法性,合法的結(jié)果有且僅有“是”或“非”,當(dāng)其中一種結(jié)果足夠多時,跨鏈預(yù)言機(jī)聚合并返回此結(jié)果.這類區(qū)塊鏈預(yù)言機(jī)適用于獲取確定性數(shù)據(jù),也方便應(yīng)用聚合簽名方案對各數(shù)據(jù)獲取結(jié)果的數(shù)字簽名做聚合.

定義2.弱投票協(xié)議預(yù)言機(jī).在這類投票協(xié)議下,各節(jié)點提交的結(jié)果是彼此獨(dú)立的,能否聚合最終結(jié)果跟各節(jié)點提交的結(jié)果是否達(dá)成了多數(shù)或全體一致無關(guān).例如,數(shù)字資產(chǎn)報價預(yù)言機(jī)從若干節(jié)點獲取價格數(shù)值,這些數(shù)值并非被要求達(dá)成全體或多數(shù)一致,容忍存在數(shù)值偏差,且聚合過程是對各節(jié)點提交的結(jié)果求算術(shù)平均、加權(quán)平均或中位數(shù)等返回最終結(jié)果數(shù)值.這類區(qū)塊鏈預(yù)言機(jī)適用于獲取非確定性的、動態(tài)變化的實時數(shù)據(jù),一般需要在智能合約驗證簽名并計算最終結(jié)果.

圖1 是著名區(qū)塊鏈預(yù)言機(jī)項目Chainlink 實現(xiàn)的跨鏈互操作性協(xié)議[16]示意圖,這是強(qiáng)投票協(xié)議預(yù)言機(jī),不同預(yù)言機(jī)節(jié)點基于數(shù)字簽名對跨鏈傳輸消息的正確性與完整性做驗證,調(diào)用合約函數(shù)將被驗證的消息從源鏈傳輸?shù)侥康逆?在強(qiáng)投票協(xié)議中,節(jié)點驗證的合法消息內(nèi)容保持一致,聚合過程對消息字符串一致性做驗證.

Fig.1 Illustration of cross-chain interoperability oracle[16]圖1 跨鏈互操作性預(yù)言機(jī)示意圖[16]

圖2[13]是著名區(qū)塊鏈預(yù)言機(jī)項目MakerDAO[18]的體系結(jié)構(gòu),這是弱投票協(xié)議預(yù)言機(jī),各預(yù)言機(jī)節(jié)點將交易對報價數(shù)據(jù)提交到智能合約做聚合,智能合約將聚合結(jié)果廣播到下游;交易對報價數(shù)據(jù)可以是不一致的,聚合計算僅關(guān)注數(shù)值.

Fig.2 Software architecture of MakerDAO[13,18]圖2 MakerDAO 軟件架構(gòu)[13,18]

除目的數(shù)據(jù)確定性這一特征外,弱投票協(xié)議預(yù)言機(jī)的規(guī)模通常更大,所支持?jǐn)?shù)據(jù)源更多.例如交易對報價預(yù)言機(jī)通常作為公共服務(wù),計算并廣播多種交易對價格,預(yù)言機(jī)節(jié)點運(yùn)行面向各種交易對、基于各種指標(biāo)(例如近期交易、流動性)的算法,計算價格并提交到智能合約.相比而言,強(qiáng)投票協(xié)議預(yù)言機(jī)通常面向單一數(shù)據(jù)源,例如在跨鏈場景下,僅討論“源鏈X,目的鏈Y”的模式[10-12],原因之一是鏈下節(jié)點之間存在相互通信,過大的節(jié)點規(guī)模、過于復(fù)雜的業(yè)務(wù)將導(dǎo)致性能下降.

同類研究將區(qū)塊鏈預(yù)言機(jī)根據(jù)節(jié)點數(shù)目分成集中式或分布式;根據(jù)設(shè)計模式分成發(fā)布—訂閱/請求—響應(yīng)等分類方法也可應(yīng)用于其他數(shù)據(jù)可用性服務(wù)、分布式系統(tǒng)等.本文的分類方法特異性更好,更接近業(yè)務(wù)實質(zhì).

2.2 BLS 簽名

BLS 簽名是基于雙線性群的系統(tǒng).簽名者選擇雙線性群 (p,G1,G2,GT,e),其中 G2的階是p,生成元是g,以及抗碰撞的散列函數(shù)H:(0,1)*→G1.簽名者隨機(jī)選擇私鑰sk∈Zp,并計算公鑰pk=gsk.

BLS 簽名構(gòu)造方法基于橢圓曲線群的加運(yùn)算,簽名者將消息m映射成 G1的一個元素H(m),構(gòu)造簽名σ=H(m)sk.

BLS 簽名驗證方法基于雙線性群的雙線性,驗證者驗證式(1)是否成立:

2.3 Pedersen-DKG

Pedersen-DKG 是一種去中心化的DKG 方案,基于Shamir-SS 與Feldman-VSS.考慮參與方集合P={P1,P2,…,Pn}試圖構(gòu)造滿足 (t,n)門限性質(zhì)的分布式密鑰,一種基本的Pedersen-DKG 方法包含初始化、廣播、驗證3 個階段.

在初始化階段,P商定一個p階群 G,以及一個q階元素g∈G,其中q|(p-1) .每一參與方Pi輸入一個秘密數(shù)ki∈Zq,并隨機(jī)選擇t-1個系數(shù)ai,j∈Zq,構(gòu)造多項式:

在廣播階段,Pi為其他每一參與方Pj構(gòu)造秘密分片si,j=fi(j)modq并通過私有信道發(fā)送到Pj;為多項式系數(shù)構(gòu)造承諾ci,j=gai,jmodp,其中ci,0=gkimodp,并將全體承諾在全體參與方廣播.

在驗證階段,Pj可根據(jù)公開的承諾驗證秘密分片的合法性,即驗證式(3)是否成立:

此后,Pi可構(gòu)造自己的分布式私鑰:

全局公鑰可被任意參與方構(gòu)造:

根據(jù)文獻(xiàn)[46],Pedersen-DKG 滿足:1)計算安全.基于離散對數(shù)問題難解假設(shè).2)抗共謀.根據(jù)拉格朗日插值法,任意小于t個參與方都無法重建秘密數(shù)或私鑰.3)去中心化.參與方是平等的,每一參與方的分布式私鑰由其他參與方所輸入的秘密數(shù)共同決定.

2.4 非同質(zhì)化通證

Wang 等人[52]在2018 年設(shè)想用染色代幣在比特幣系統(tǒng)上表示真實世界資產(chǎn).這些真實世界資產(chǎn)通常是大量存在的同類事物,不可再分、不可合并,彼此之間存在差別、不可互換.非同質(zhì)化通證(nonfungible token,NFT)是在以太坊上對染色代幣的成功實現(xiàn),至少支持在以太坊上表示2128個同類資產(chǎn).“非同質(zhì)”的含義是:每個NFT 都嚴(yán)格聲明了所有者并被賦予了全局唯一ID,因此任意2 個同類NFT 都是不等同的.

NFT 方案在第721 號以太坊改進(jìn)提案[20]上通過.跟NFT 相對的概念是同質(zhì)化通證.以太幣是最典型的同質(zhì)化通證,考慮到合法性與合規(guī)性,本文將僅應(yīng)用非同質(zhì)化通證解決非商業(yè)問題,不對相關(guān)案例展開討論.

如表1 所示,將同質(zhì)化通證跟非同質(zhì)化通證作比較,非同質(zhì)化通證不僅可表示真實世界資產(chǎn),而且能作為海量真實世界個體的身份映射,且繼承區(qū)塊鏈去中心化、不可篡改的性質(zhì).

Table 1 Comparison of Fungible Token and Non-Fungible Token表1 同質(zhì)化通證與非同質(zhì)化通證對比

3 基于BLS 簽名與Pedersen-DKG 的投票方案

本節(jié)將基于BLS 簽名與Pedersen-DKG 為區(qū)塊鏈預(yù)言機(jī)節(jié)點設(shè)計電子投票方案,并基于智能合約注冊與管理全局公鑰.本節(jié)內(nèi)容將為區(qū)塊鏈預(yù)言機(jī)設(shè)計安全、去中心化的密碼學(xué)方案,并討論鏈下部分的可拓展性,作為后續(xù)對開放性展開討論的基礎(chǔ).

3.1 密鑰生成階段

在密鑰生成階段,考慮參與方集合P={P1,P2,…,Pn},P 選擇雙線性群 (p,G1,G2,GT,e),其中 G1與 G2是橢圓曲線群,P 在 G2上運(yùn)行Pedersen-DKG.為更好地描述簽名階段,本節(jié)還將指出:1)全局私鑰表示方法;2)任意分布式私鑰對應(yīng)的分布式公鑰可被任意參與方構(gòu)造.

當(dāng)i=0時,式(4)可寫成:

全局私鑰sk0的構(gòu)造方法是隱式的,即不能被任何參與方基于接收與廣播的信息構(gòu)造.

根據(jù)式(5),每一參與方掌握全局公鑰pk0,為橢圓曲線上一點.將式(5)外推,記:

值得注意的是,當(dāng)i>0 時,ski對應(yīng)的分布式公鑰并非pki,而是:

在密鑰生成階段完成后,每一參與方都掌握了自己的分布式私鑰ski、全局公鑰pk0以及全體分布式公鑰gski.密鑰生成方案運(yùn)行了參與方之間的全量通信,因此通信復(fù)雜度是O(n2).

3.2 簽名階段

在簽名階段,任意t個參與方 Pt={P1,P2,…,Pt}都能對相同消息構(gòu)造聚合簽名,并被全局公鑰驗證.在此過程中,聚合簽名的參與方可通過分布式選舉產(chǎn)生;不失一般性,設(shè)P1構(gòu)造聚合簽名,其他參與方驗證聚合簽名.

設(shè) ?Pi∈Pt,將消息mi散列到 G1,構(gòu)造簽名份額:

Pi將H(mi)與 Σi發(fā)送到P1.根據(jù)式(8),P1掌握了任意參與方的分布式公鑰,因此可根據(jù)式(1)驗證 Σi.此過程即區(qū)塊鏈預(yù)言機(jī)電子投票的投票過程.

在收到t個簽名份額后,P1構(gòu)造一系列點(1,Σ1),(2,Σ2),…,(t,Σt),并構(gòu)造拉格朗日插值多項式:

當(dāng) Pt對相同消息簽名,即m0=m1=m2=…=mt時,等價于sk0對m0的簽名,即聚合簽名.此過程即區(qū)塊鏈預(yù)言機(jī)電子投票的計票過程.

3.3 參與方加入階段

在3.1 節(jié)與3.2 節(jié)的基礎(chǔ)上,本節(jié)構(gòu)造全局公鑰關(guān)于邏輯時鐘的遞推關(guān)系實現(xiàn)參與方受控加入DKG,在智能合約注冊與管理全局公鑰.本節(jié)所做工作是實現(xiàn)區(qū)塊鏈預(yù)言機(jī)鏈下部分可拓展的密碼學(xué)基礎(chǔ).

設(shè)參與方運(yùn)行了同步化邏輯時鐘[15],即在時刻T,參與方集合為 P(T)={P1,P2,…,Pn(T)},待加入的參與方集合為 ΔP(T)={Pn(T)+1,Pn(T)+2,…,Pn(T)+Δn(T)},其中ΔP(T)的規(guī)模和時刻T門限值滿足:

此方案等價于在保持 P(T)輸入的秘密數(shù)不變的情況下,在時刻T與T+1分別隨機(jī)構(gòu)造了多項式,即多項式關(guān)于邏輯時鐘的遞推關(guān)系為:

因此,全局公鑰關(guān)于邏輯時鐘的遞推關(guān)系為:

智能合約存儲的信息是公開、不可篡改的,因此挑戰(zhàn)過程是公開的.式(18)中pk0,actual在時刻T+1更新,pk0,expected在時刻T即時更新,因此式(18)是否成立可區(qū)分待加入?yún)⑴c方是否已實際運(yùn)行DKG 加入,掌握分布式私鑰與其他參與方的分布式公鑰,區(qū)分此狀態(tài)是對區(qū)塊鏈預(yù)言機(jī)節(jié)點做生命周期管理的根據(jù)之一.

4 節(jié)點身份方案與拓?fù)?/h2>

本節(jié)設(shè)計區(qū)塊鏈預(yù)言機(jī)的主要業(yè)務(wù)流程,包含基于去中心化身份的節(jié)點加入與退出流程、基于DHT 的數(shù)據(jù)獲取與驗證流程.在節(jié)點加入與退出流程中,新節(jié)點無需抵押虛擬貨幣即可受控加入與退出區(qū)塊鏈預(yù)言機(jī);在數(shù)據(jù)獲取與驗證流程中,數(shù)據(jù)流與節(jié)點身份標(biāo)識相關(guān),智能合約單次驗證滿足門限性質(zhì)的聚合簽名,保證了數(shù)據(jù)獲取業(yè)務(wù)可信.本節(jié)內(nèi)容將在密碼學(xué)方案的基礎(chǔ)上,討論節(jié)點身份方案的開放性以及數(shù)據(jù)可用性業(yè)務(wù)的去中心化程度.

4.1 區(qū)塊鏈預(yù)言機(jī)節(jié)點加入與退出流程

為使新節(jié)點受控加入?yún)^(qū)塊鏈預(yù)言機(jī),區(qū)塊鏈預(yù)言機(jī)所有者校驗新節(jié)點的鏈下身份,并基于NFT 對新節(jié)點的加入操作授信.新節(jié)點之所以被要求受控加入,是因為在基于公有鏈的開放項目中,用戶能匿名創(chuàng)建多個鏈上身份,因此敵手能藉此批量創(chuàng)建鏈上身份并試圖控制電子投票過程.此方案替代了海外相關(guān)研究中要求新節(jié)點抵押保證金以加入公有鏈項目的一般方法[10,13],適合在國內(nèi)全面禁止虛擬貨幣交易的環(huán)境中得到應(yīng)用.

設(shè)待加入的新節(jié)點為P0,鏈上身份是addr0,鏈下身份是user,即user 掌握了以太坊地址addr0的私鑰.區(qū)塊鏈預(yù)言機(jī)所有者有權(quán)控制節(jié)點加入與移除,鏈上身份是addrOfOracleOwner,鏈下身份是ownerOfOracle.

首先,user 在鏈下跟ownerOfOracle 交互,要求加入?yún)^(qū)塊鏈預(yù)言機(jī)并公開以太坊地址addr0;ownerOfOracle如果批準(zhǔn),則將addr0對應(yīng)的以太坊公鑰散列到DHT的標(biāo)識符空間 Zh,即公開P0所對應(yīng)標(biāo)識符h0∈Zh,此標(biāo)識符是全局唯一的.此步驟的本質(zhì)是ownerOfOracle聲明映射關(guān)系:f:h0→ addr0.值得說明的是,此方案將公鑰散列成地址的做法源于以太坊公鑰與地址的關(guān)系.

此后,ownerOfOracle 將鑄造(mint[20])一個NFT,此NFT 的ID 是h0;所有者(owner[20])是addr0,此過程被定義為NFT 生命階段1.此NFT 是公開的,有且僅有以太坊地址addr0能操作此NFT,因此新節(jié)點能通過操作此NFT 證明自己的鏈上身份,此NFT 也可被視為新節(jié)點的去中心化身份憑證.

在此之后,P0將對區(qū)塊鏈預(yù)言機(jī)節(jié)點組 P廣播,聲明自己掌握了addr0的以太坊私鑰.?Pi∈P,Pi將向P0的鏈上身份發(fā)起挑戰(zhàn),P0將通過將ID 為h0的NFT轉(zhuǎn)移到addrOfOracleOwner 證明自己的身份.此步驟本質(zhì)上是由新節(jié)點聲明并證明映射關(guān)系g: addr0→P0.此后,NFT 進(jìn)入生命階段2,所有者是addrOfOracleOwner.新節(jié)點的身份也被映射關(guān)系確定:g°f:h0→ addr0→P0.

當(dāng) P運(yùn)行DKG,使新節(jié)點加入后,屬于 P 的節(jié)點將可以調(diào)用合約函數(shù),公開地更新或挑戰(zhàn) P 的全局公鑰.智能合約也能通過驗證式(18)是否成立確認(rèn)全局公鑰被正確更新.當(dāng) P的全局公鑰被更新并接收后,addrOfOracleOwner 將批準(zhǔn)(approve[20])addr0轉(zhuǎn)移或銷毀NFT,此步驟可被視為:P0在加入 P后,對應(yīng)的身份憑證被解鎖,可自由退出;也可因不誠實行為受到挑戰(zhàn),被ownerOfOracle 移除.值得特別說明的是,被批準(zhǔn)者(approved[20])也是NFT 的重要字段,在本文方案中,批準(zhǔn)和被批準(zhǔn)者這2 個字段不僅控制了NFT 的操作權(quán)限,而且能夠表示NFT 處于生命周期的哪一階段[4].此后,NFT 進(jìn)入生命階段3,所有者仍然是addrOfOracleOwner,被批準(zhǔn)者是addr0.

最后,考慮節(jié)點自由退出或被ownerOfOracle 移除,此過程可基于NFT 銷毀操作實現(xiàn),銷毀本質(zhì)是將NFT 轉(zhuǎn)移給零地址.以太坊的零地址是創(chuàng)世地址,被叫做“黑洞地址”,無人掌握它的私鑰,因此將通證轉(zhuǎn)移給零地址是銷毀通證的通常做法.在區(qū)塊鏈預(yù)言機(jī)鏈下部分,P可在運(yùn)行下一輪密鑰生成算法時,將此節(jié)點排除在外;在鏈上部分,已退出節(jié)點對應(yīng)的NFT 將被銷毀,注銷身份.NFT 生命階段4 表示NFT被銷毀的狀態(tài),此時所有者與被批準(zhǔn)者字段都是零地址.

綜上,在節(jié)點加入與退出流程中,NFT 的所有者與被批準(zhǔn)者字段表示了所處生命周期的階段,對應(yīng)了節(jié)點加入與退出的狀態(tài).NFT 的字段是公開的,且存儲在以太坊上,繼承了去中心化、公開與不可篡改的特性,良好地解決了數(shù)據(jù)公開與信任問題.

表2 是NFT 生命周期與節(jié)點狀態(tài)的對應(yīng)關(guān)系.

Table 2 Node Status Corresponding to NFT Life Cycle表2 NFT 生命周期對應(yīng)的節(jié)點狀態(tài)

圖3 是節(jié)點加入與退出區(qū)塊鏈預(yù)言機(jī)的時序模型,右手邊的泳道表示NFT 的生命周期,跟節(jié)點狀態(tài)對應(yīng).序號1~12 表示加入流程;序號a~e 是退出的一般流程.

Fig.3 Sequence diagram of node identity system圖3 節(jié)點身份系統(tǒng)時序圖

綜上,節(jié)點身份方案基于NFT 實現(xiàn),將節(jié)點的以太坊地址跟NFT 的ID 通過區(qū)塊鏈的交易構(gòu)建了映射關(guān)系,并實現(xiàn)了節(jié)點跟NFT 生命周期的映射,使節(jié)點狀態(tài)公開、可跟蹤.區(qū)塊鏈預(yù)言機(jī)是開放的,節(jié)點加入過程是基于3.3 節(jié)提出的節(jié)點加入方案,有可拓展的特性;節(jié)點退出是自由的,僅需銷毀NFT 即可.

4.2 基于DHT 的區(qū)塊鏈預(yù)言機(jī)拓?fù)?/h3>

考慮在大規(guī)模節(jié)點實施DKG,無論是構(gòu)造聚合簽名還是節(jié)點加入與退出時重新運(yùn)行DKG,越來越大的節(jié)點規(guī)模都意味著越來越高的通信復(fù)雜度.本質(zhì)上,這跟區(qū)塊鏈預(yù)言機(jī)鏈下部分拓?fù)溆嘘P(guān),直接在全體節(jié)點運(yùn)行DKG 要求任何節(jié)點跟其他每一個節(jié)點通信才能構(gòu)造分布式私鑰、聚合簽名等.

為解決這一問題,本節(jié)使連通矩陣更稀疏,將大規(guī)模區(qū)塊鏈預(yù)言機(jī)鏈下部分分成若干個節(jié)點組,任何節(jié)點在密鑰生成階段與簽名階段,僅需跟一部分節(jié)點通信即可完成.從鏈下部分拓?fù)淇?,?jié)點仍然是連通的,數(shù)據(jù)獲取請求仍可在節(jié)點組之間轉(zhuǎn)發(fā)與認(rèn)領(lǐng).

圖4 是基于DHT 的區(qū)塊鏈預(yù)言機(jī)模型.區(qū)塊鏈預(yù)言機(jī)被分成鏈上與鏈下2 部分,鏈上部分被部署為智能合約,負(fù)責(zé)跟用戶交互、調(diào)度與管理鏈下分布式區(qū)塊鏈預(yù)言機(jī)節(jié)點、驗證數(shù)據(jù)獲取結(jié)果;鏈下部分被部署為一系列執(zhí)行實際數(shù)據(jù)獲取業(yè)務(wù)的分布式節(jié)點,分組執(zhí)行數(shù)據(jù)獲取業(yè)務(wù)并對結(jié)果投票與聚合.

Fig.4 Blockchain oracle model based on distributed Hash table圖4 基于DHT 的區(qū)塊鏈預(yù)言機(jī)模型

在圖4 表示的區(qū)塊鏈預(yù)言機(jī)鏈下部分,相同形狀的節(jié)點屬于同一組,按照P(組ID,節(jié)點ID)編號.除4.1節(jié)提出的節(jié)點加入與退出業(yè)務(wù)外,區(qū)塊鏈預(yù)言機(jī)還承載了數(shù)據(jù)獲取業(yè)務(wù).數(shù)據(jù)獲取由用戶和智能合約交互發(fā)起并被廣播到鏈下,鏈下部分拓?fù)涫荄HT,節(jié)點標(biāo)識符跟NFT 的ID一致,在多節(jié)點合作完成請求后,最終由某節(jié)點調(diào)用智能合約響應(yīng)數(shù)據(jù)獲取結(jié)果,并由用戶回調(diào)函數(shù)完成數(shù)據(jù)獲取業(yè)務(wù).

在開始數(shù)據(jù)獲取業(yè)務(wù)前,區(qū)塊鏈預(yù)言機(jī)鏈下部分全體節(jié)點商定抗碰撞的散列函數(shù)Hc: {0,1}*→ Zh、請求轉(zhuǎn)發(fā)的跳數(shù)閾值hopmax與分布式投票的完成時限timeout.數(shù)據(jù)獲取步驟如下:

1)業(yè)務(wù)發(fā)起.用戶調(diào)用區(qū)塊鏈預(yù)言機(jī)合約的函數(shù),發(fā)起數(shù)據(jù)獲取請求;智能合約記錄用戶地址addr,并賦予此請求一個自增ID,記為qid,記錄映射:qid→addr.

2)請求廣播.智能合約確認(rèn)用戶的數(shù)據(jù)獲取請求可用后觸發(fā)合約事件,廣播字符串格式的查詢參數(shù)表,包括qid、函數(shù)名funcName 以及參數(shù)表funcArgs、最近回調(diào)函數(shù)結(jié)束查詢的用戶地址addrOfLatestCallback等.廣播addrOfLatestCallback 是為了增強(qiáng)區(qū)塊鏈預(yù)言機(jī)鏈下部分的認(rèn)領(lǐng)過程對用戶的透明性,為請求認(rèn)領(lǐng)步驟引入隨機(jī)性.

3)請求認(rèn)領(lǐng).區(qū)塊鏈預(yù)言機(jī)鏈下部分全體節(jié)點都保持監(jiān)聽區(qū)塊鏈,因此它們都將收到數(shù)據(jù)獲取請求廣播,它們對上述請求的關(guān)鍵信息計算摘要h′=Hc(qid||addrOfLatestCallback).在結(jié)構(gòu)化點對點體系結(jié)構(gòu)中,節(jié)點的標(biāo)識符hi,j是全局確定的,因此hi,j≥h′且hi,j最小的節(jié)點將認(rèn)領(lǐng)請求.當(dāng)發(fā)起數(shù)據(jù)獲取請求的用戶足夠多、業(yè)務(wù)足夠高頻時,發(fā)起請求的用戶將難以預(yù)測當(dāng)自己的請求被廣播到鏈下時,最近回調(diào)函數(shù)的用戶是誰,即addrOfLatestCallback 對發(fā)起請求的用戶而言是難以預(yù)測的,因此將addrOfLatestCallback作為鹽(salt)輸入散列函數(shù),可以盡可能使具體執(zhí)行數(shù)據(jù)獲取業(yè)務(wù)的節(jié)點對用戶透明.

4)請求轉(zhuǎn)發(fā).當(dāng)且僅當(dāng)當(dāng)前認(rèn)領(lǐng)請求的節(jié)點Pi,j無法執(zhí)行數(shù)據(jù)獲取業(yè)務(wù)時,請求將向后轉(zhuǎn)發(fā),否則當(dāng)前節(jié)點將執(zhí)行下一步驟.在向后轉(zhuǎn)發(fā)時,Pi,j將在請求體添加字段,記錄自增的轉(zhuǎn)發(fā)跳數(shù)hop,并用Pi,j的以太坊私鑰eki,j對hop構(gòu)造數(shù)字簽名σi,j=S ign(eki,j,hop).當(dāng)hop≥hopmax時,請求失敗.最后一跳節(jié)點調(diào)用合約函數(shù),告訴區(qū)塊鏈預(yù)言機(jī)鏈上部分反饋qid對應(yīng)的數(shù)據(jù)獲取請求已失敗,并提交轉(zhuǎn)發(fā)過程的以太坊公鑰鏈[eKi,j] 與簽名鏈[σi,j].智能合約將根據(jù)簽名驗證確認(rèn)轉(zhuǎn)發(fā)鏈未被惡意篡改.

5)分布式查詢.設(shè)數(shù)據(jù)獲取請求在第hop跳被Pi,j最終認(rèn)領(lǐng),Pi,j將在所屬節(jié)點組Pi={Pi,1,Pi,2,…,Pi,n}發(fā)起關(guān)于分布式查詢結(jié)果的投票,即 Pi運(yùn)行3.2 節(jié)提出的簽名階段算法,由一個機(jī)選舉的節(jié)點收集包含查詢結(jié)果、簽名份額的選票.

6)鏈下聚合.簽名聚合者Pi,j即時統(tǒng)計投票結(jié)果,在timeout內(nèi),當(dāng)且僅當(dāng)某一查詢結(jié)果mi,0獲得了至少t票,且投票者為這一結(jié)果構(gòu)造了可驗證的簽名份額,Pi,j將構(gòu)造并公開勝選的查詢結(jié)果mi,0與對應(yīng)的聚合簽名 Σi,0;否則請求失敗.Pi的任意節(jié)點都能對勝選結(jié)果發(fā)起挑戰(zhàn).

7)鏈上驗證.對已獲取投票結(jié)果的分布式查詢,智能合約也將根據(jù)節(jié)點組 Pi的全局公鑰驗證投票結(jié)果.當(dāng)查詢結(jié)果mi,0對應(yīng)的聚合簽名 Σi,0被成功構(gòu)造、未被成功挑戰(zhàn)且被智能合約驗證時,這一結(jié)果將被用戶獲取.

8)業(yè)務(wù)結(jié)束.用戶可以在此之后回調(diào)合約函數(shù),根據(jù)qid以及對應(yīng)的addr獲取的數(shù)據(jù)獲取結(jié)果mi,0.

考慮區(qū)塊鏈預(yù)言機(jī)鏈下部分作為分布式系統(tǒng)提供數(shù)據(jù)可用性服務(wù)的過程,步驟3)已說明鏈下部分關(guān)于用戶是透明的.此外,鏈下部分節(jié)點是平等的,請求認(rèn)領(lǐng)與聚合步驟引入了隨機(jī)性,任意節(jié)點都能基于公開信息挑戰(zhàn)數(shù)據(jù)獲取結(jié)果,因此滿足去中心化.

圖5 是數(shù)據(jù)獲取業(yè)務(wù)流程,一個數(shù)據(jù)獲取請求發(fā)起、廣播、認(rèn)領(lǐng)、轉(zhuǎn)發(fā)、查詢、聚合、驗證與結(jié)束的例子.

Fig.5 Data availability business of blockchain oracle圖5 區(qū)塊鏈預(yù)言機(jī)數(shù)據(jù)獲取業(yè)務(wù)

4.3 區(qū)塊鏈預(yù)言機(jī)節(jié)點調(diào)度

在4.1 節(jié)構(gòu)建基于NFT 的節(jié)點身份方案,以及4.2 節(jié)基于DHT 的、和節(jié)點標(biāo)識符相關(guān)的稀疏節(jié)點拓?fù)涞幕A(chǔ)上,本節(jié)內(nèi)容將提供一個調(diào)度方案,確定節(jié)點和節(jié)點組之間的所屬關(guān)系.

調(diào)度是分布式系統(tǒng)增強(qiáng)可用性、容災(zāi)能力,實現(xiàn)負(fù)載均衡的重要方法,是自動化管理與運(yùn)維大型分布式系統(tǒng)的重要步驟.分布式系統(tǒng)調(diào)度解決的基本問題是為調(diào)度對象最優(yōu)分配資源,調(diào)度對象承載分布式系統(tǒng)具體業(yè)務(wù),資源由物理機(jī)或虛擬機(jī)提供.在本文設(shè)計的區(qū)塊鏈預(yù)言機(jī)中,調(diào)度是將節(jié)點調(diào)度到最優(yōu)的節(jié)點組,使分布式區(qū)塊鏈預(yù)言機(jī)盡可能高效地為DApp 提供數(shù)據(jù)獲取服務(wù).本節(jié)設(shè)計的節(jié)點調(diào)度方案將遵循“鏈上兜底,鏈下調(diào)度”的設(shè)計思想.

鏈上調(diào)度將調(diào)度算法放在智能合約運(yùn)行,在合約所有者批準(zhǔn)新節(jié)點加入后,智能合約具備運(yùn)行調(diào)度算法為新節(jié)點選擇節(jié)點組的基礎(chǔ)能力.鏈下調(diào)度將調(diào)度算法放在鏈下服務(wù)運(yùn)行,智能合約通過觸發(fā)合約事件、被鏈下服務(wù)調(diào)用合約函數(shù)和鏈下服務(wù)交互,發(fā)起與結(jié)束調(diào)度流程,智能合約僅關(guān)注調(diào)度算法的輸入與輸出.

表3 比較了鏈上兜底與鏈下調(diào)度方案.鏈上是區(qū)塊鏈完成節(jié)點調(diào)度的原生解決方案,可繼承區(qū)塊鏈公開、可信等特點,依賴于區(qū)塊鏈,比鏈下調(diào)度更穩(wěn)定,但受限于Solidity 等開發(fā)敏捷度、智能合約部署、運(yùn)行復(fù)雜算法的效率與開銷等,也將因為存儲跟調(diào)度相關(guān)的、區(qū)塊鏈預(yù)言機(jī)鏈下部分的資源信息帶來額外的存儲開銷.鏈下調(diào)度將調(diào)度邏輯放在鏈下執(zhí)行,智能合約僅需在函數(shù)觸發(fā)事件、廣播參數(shù)表以及被調(diào)度器調(diào)用合約函數(shù),接收函數(shù)參數(shù)表作為調(diào)度結(jié)果即可,計算與存儲開銷和調(diào)度算法復(fù)雜度無關(guān),但如果鏈下服務(wù)發(fā)生宕機(jī),則無法調(diào)度.因此,在綜合考慮鏈上與鏈下調(diào)度方案后,本節(jié)將兜底邏輯,例如round-robin 等常用、簡單的調(diào)度算法部署在智能合約,在一般情況下依賴鏈下服務(wù)調(diào)度節(jié)點,執(zhí)行更復(fù)雜的調(diào)度邏輯,增強(qiáng)節(jié)點調(diào)度方案穩(wěn)定性.

Table 3 Comparison of On-chain and Off-chain Scheduling表3 鏈上與鏈下調(diào)度比較

圖6 是“鏈上兜底,鏈下調(diào)度”方案.在收到區(qū)塊鏈預(yù)言機(jī)新節(jié)點加入請求后,智能合約將向鏈下調(diào)度器廣播調(diào)度請求,請求包含節(jié)點的標(biāo)識符以及與具體業(yè)務(wù)相關(guān)的信息;在鏈下調(diào)度器運(yùn)行合適的調(diào)度算法,為新節(jié)點分配最優(yōu)節(jié)點組后,調(diào)度器通過調(diào)用合約函數(shù)將調(diào)度結(jié)果發(fā)送給智能合約.考慮智能合約實現(xiàn)了兜底邏輯,以及即使是非最優(yōu)的調(diào)度結(jié)果也不導(dǎo)致區(qū)塊鏈預(yù)言機(jī)無法提供服務(wù).

Fig.6 Blockchain oracle node scheduling scheme圖6 “鏈上兜底,鏈下調(diào)度”方案

5 實現(xiàn)與評估

本節(jié)將討論密碼學(xué)方案的安全性,實現(xiàn)密鑰生成與簽名并評估算法效率,將全局公鑰更新、節(jié)點去中心化身份生命階段變更以及調(diào)度方案實現(xiàn)在智能合約并評估鏈上運(yùn)行開銷.

5.1 實驗環(huán)境

實驗環(huán)境為:1)物理機(jī)MacBook Pro,芯片Apple M1,內(nèi)存16 GB,操作系統(tǒng)macOS Ventura 13.2.1.2)阿里云云服務(wù)器ECS,雙核虛擬CPU,內(nèi)存4 GB,操作系統(tǒng)Debian GNU/Linux 10(buster),僅用于在AMD64架構(gòu)為低版本Solidity 開發(fā)的智能合約生成應(yīng)用二進(jìn)制接口(application binary interface,ABI)文件.3)區(qū)塊鏈預(yù)言機(jī)鏈下部分編程語言Go,版本go1.19.6 darwin/arm64;區(qū)塊鏈預(yù)言機(jī)鏈上部分編程語言Solidity,版本v0.6.12+commit.27d51765;智能合約編譯、部署與測試框架Truffle,版本v5.7.4;以太坊硬分叉Petersburg;區(qū)塊鏈構(gòu)建框架Ganache,版本v7.7.3;Node.js 版本v19.6.0;Web3.js 版本v1.8.2;Vue.js 版本v2.7.14.

本文所使用的BLS 簽名與 Feldman-VSS 基于開源實現(xiàn)[53],所使用雙線性群是BN256[54].本文使用的ERC721 通證標(biāo)準(zhǔn)基于一種開源實現(xiàn)[55]并根據(jù)Solidity 版本做了兼容性調(diào)試,在智能合約實現(xiàn)BN256 的群運(yùn)算基于NPM 包elliptic-curve-solidity 實現(xiàn),版本0.2.4,并為Solidity 版本做了兼容性調(diào)試.此外,為避免網(wǎng)絡(luò)時延波動的影響,本節(jié)的實驗將參與方部署為獨(dú)立的Go 協(xié)程(goroutine),通信方式為通道(channel)數(shù)據(jù)類型以及并發(fā)安全的共享內(nèi)存方法.

5.2 安全性分析

3.1 節(jié)提出的密鑰生成方案安全性來源于Pedersen-DKG,具體為[46]:1)參與方所輸入的秘密數(shù)僅被用來構(gòu)造承諾,根據(jù)離散對數(shù)問題ci,0=Qki難解假設(shè),每輪密鑰分發(fā)滿足計算安全性;2)秘密數(shù)在秘密分片分發(fā)完成后被銷毀,未被持久化或傳輸,全局私鑰未在任何位置被構(gòu)建、存儲或傳輸過,根據(jù)拉格朗日插值法,任意小于t個惡意參與方都不能共謀構(gòu)建全局私鑰,因此私鑰滿足隱私性.

考慮3.2 節(jié)提出的簽名方案安全性,根據(jù)拉格朗日插值法,任意小于t個參與方都不能構(gòu)造合法的聚合簽名,因此滿足抗共謀性.考慮惡意參與方試圖破壞合法的簽名過程,具體為:1)當(dāng)敵手拒絕提供簽名體時,聚合者仍可在接收不小于t個合法簽名體時嘗試構(gòu)造聚合簽名;2)當(dāng)敵手提供錯誤簽名體時,聚合者可根據(jù)敵手的分布式公鑰驗證簽名體的合法性;3)當(dāng)敵手作為聚合者拒絕提交聚合簽名體時,其他參與方可發(fā)起選舉重新選擇聚合者;4)當(dāng)敵手作為聚合者提交錯誤聚合簽名體時,任意參與方可根據(jù)全局公鑰驗證聚合簽名體合法性并發(fā)起挑戰(zhàn).簽名方案滿足去中心化,能防御至多n-t個惡意參與方.

3.3 節(jié)提出的參與方加入方案滿足計算安全性與抗共謀性[46].考慮惡意敵手竊取被持久化存儲的秘密分片的情況.根據(jù)式(11),在任意時刻,任意參與方持久化存儲的秘密分片數(shù)目都小于門限值,因此敵手無法根據(jù)竊取的信息構(gòu)造秘密數(shù).此外,當(dāng)參與方預(yù)計算并持久化的秘密分片都分發(fā)完畢時,全體參與方將重新輸入隨機(jī)秘密數(shù)運(yùn)行DKG.因此只要無法在某一邏輯時刻控制不小于門限值個參與方,惡意敵手始終無法依賴各節(jié)點持久化存儲以及過時的信息構(gòu)造秘密數(shù)或私鑰.

考慮第4 節(jié)的節(jié)點身份方案,節(jié)點P0的身份標(biāo)識h0、對應(yīng)的NFT 以及公鑰、以太坊地址等信息都是被存儲在智能合約并公開在區(qū)塊鏈的,有且僅有NFT 的所有者或被批準(zhǔn)的地址才能發(fā)起交易,變更節(jié)點身份憑證.此方案的安全性基于區(qū)塊鏈交易合法性依賴的簽名驗證,因此是計算安全的.此外,驅(qū)動NFT 生命周期變更的交易歷史全被公開在區(qū)塊鏈,滿足不可篡改性.

考慮在節(jié)點身份方案引入?yún)^(qū)塊鏈預(yù)言機(jī)所有者的安全性.區(qū)塊鏈預(yù)言機(jī)所有者作為維護(hù)者(maintainer)保障項目正常運(yùn)行是相關(guān)案例[16-18]的通常做法.不限于區(qū)塊鏈預(yù)言機(jī),開放項目的維護(hù)者可由社區(qū)選舉產(chǎn)生,選舉通?;跉v史貢獻(xiàn),通過郵件組等方式進(jìn)行.為增強(qiáng)去中心化,節(jié)點身份方案將節(jié)點與所有者的歷史操作公開在交易中,接受監(jiān)督與挑戰(zhàn),節(jié)點實施公開交易、監(jiān)督、挑戰(zhàn)等行為的權(quán)限是平等的.此外,節(jié)點身份方案支持節(jié)點自由退出,因此所有者應(yīng)保持誠實行為,否則項目將受到傷害.

關(guān)于區(qū)塊鏈預(yù)言機(jī)所有者選舉后出現(xiàn)變更的情況,根據(jù)表2,當(dāng)NFT 處于生命階段2、3 時,僅需在區(qū)塊鏈預(yù)言機(jī)所有者之間發(fā)起NFT 轉(zhuǎn)移即可更新所有者字段,因此上述所有者變更是可行的.

5.3 投票方案測試與評估

本節(jié)實現(xiàn)了第3 節(jié)提出的密碼學(xué)方案.關(guān)于區(qū)塊鏈預(yù)言機(jī)鏈下部分,本節(jié)將測試節(jié)點生成分布式私鑰、構(gòu)造全局公鑰與聚合簽名的時延,驗證密碼學(xué)方案的可行性;關(guān)于鏈上部分,本節(jié)將測試新節(jié)點加入的手續(xù)費(fèi)開銷,說明參與方加入方案的可行性以及可拓展性.最后,本節(jié)將基于這些討論來討論門限值選擇對系統(tǒng)效率與安全性的影響.

圖7(a)是單個參與方Pi計算秘密分片列表[si,j]與承諾列表[ci,j]的時間開銷;圖7(b)為Pi驗證全體秘密分片[sj,i]與構(gòu)造全局公鑰pk0的時間開銷.這2個過程都可以在各參與方并行執(zhí)行,因此測試方案給出了單個參與方的時間開銷,在實際場景中,多個參與方共同完成秘密分片計算、分發(fā)和驗證的時間與實際通信時延和調(diào)度策略等有關(guān).

Fig.7 Time cost of a single participant running key generation scheme圖7 單個參與方運(yùn)行密鑰生成方案的時間開銷

圖8 是單個參與方Pi根據(jù)t個合法簽名份額構(gòu)造聚合簽名 Σ0的時間開銷.單個參與方Pi構(gòu)造簽名份額與驗證其他參與方簽名份額的時間開銷在5 ms 內(nèi),因此不予展示.

Fig.8 Time cost of a single participant constructing signature scheme圖8 單個參與方構(gòu)造簽名的時間開銷

基于對密鑰生成方案與簽名方案的時間開銷與通信復(fù)雜度的討論,本文認(rèn)為:在工程實踐中,合理控制節(jié)點規(guī)模n對控制時間與通信成本起決定性作用,相比而言,門限值t對算法運(yùn)行的時間與通信成本影響比n小,可更多地結(jié)合實際業(yè)務(wù)靈活決定.

圖9 是參與方加入過程中,智能合約預(yù)更新全局公鑰的手續(xù)費(fèi)開銷,單位是gas[3].手續(xù)費(fèi)開銷本身無經(jīng)濟(jì)意義,它體現(xiàn)了鏈上算法的復(fù)雜程度,即計算與存儲成本.其中,新節(jié)點數(shù)目為0 表示初始化智能合約存儲的全局公鑰,開銷是114 704 gas.

Fig.9 Transaction fee corresponding to the process of participant joining圖9 參與方加入過程的智能合約手續(xù)費(fèi)

基于對參與方加入方案手續(xù)費(fèi)開銷的討論,本文認(rèn)為:當(dāng)系統(tǒng)發(fā)生拓展時,僅有新節(jié)點支付手續(xù)費(fèi)預(yù)更新全局公鑰,其他節(jié)點從智能合約讀全局公鑰無需支付手續(xù)費(fèi),這解釋了圖9 中手續(xù)費(fèi)開銷為什么關(guān)于新節(jié)點數(shù)目近似線性.相比總是在新節(jié)點加入時重新運(yùn)行DKG[10],此方案的優(yōu)勢在于:1)更公平,每一節(jié)點都需要支付近似相等的手續(xù)費(fèi)加入系統(tǒng);2)實現(xiàn)更容易,基于全局公鑰關(guān)于邏輯時鐘遞推關(guān)系,無需在智能合約處理多點提交全局公鑰.

基于對密碼學(xué)方案在區(qū)塊鏈預(yù)言機(jī)鏈上、鏈下部分的實現(xiàn)評估,以及5.2 節(jié)的安全性分析,門限值對系統(tǒng)效率與安全性都有影響.考慮節(jié)點規(guī)模不變,當(dāng)門限值變大時,系統(tǒng)特征有4 個變化:1)系統(tǒng)可拓展性增強(qiáng),參與方加入方案支持更多新節(jié)點加入;2)敵手控制節(jié)點竊取私鑰、偽造簽名更困難;3)密碼學(xué)方案效率受影響,特別是構(gòu)造聚合簽名的時延變長;4)敵手控制節(jié)點惡意提交非法簽名體,攻擊電子投票過程更容易.

5.4 節(jié)點身份方案測試與評估

本文實現(xiàn)了第4 節(jié)提出的節(jié)點身份方案以及節(jié)點調(diào)度方案.本節(jié)將測試節(jié)點生命周期的手續(xù)費(fèi)開銷,并展示數(shù)據(jù)獲取業(yè)務(wù)的日志,證明節(jié)點身份方案的可行性;基于對鏈上與鏈下調(diào)度方案手續(xù)費(fèi)開銷以及可用性的討論,說明“鏈上兜底,鏈下調(diào)度”的必要性.

表4 是在區(qū)塊鏈預(yù)言機(jī)鏈上部分實現(xiàn)NFT 生命階段1~4,驅(qū)動NFT 生命階段變更的手續(xù)費(fèi)開銷.因為存在激勵清零操作的手續(xù)費(fèi)退還機(jī)制[3-4],銷毀NFT 的手續(xù)費(fèi)開銷顯著地比其他操作低.實現(xiàn)基于NFT的智能合約,證明公開、受控的節(jié)點身份方案是可行的.

Table 4 Transaction Fee in NFT Life Cycle表4 NFT 生命周期變更手續(xù)費(fèi)

圖10 是區(qū)塊鏈預(yù)言機(jī)鏈下部分執(zhí)行一次數(shù)據(jù)獲取請求截屏,電子投票發(fā)生在門限性質(zhì)(4,6)的節(jié)點組 P2,DHT 標(biāo)識符空間為 Z2128.“verifier selected”表示請求已被認(rèn)領(lǐng),聚合簽名構(gòu)造者同時被選擇;“aggregated signature”表示電子投票過程完成,聚合簽名被成功構(gòu)造,因此數(shù)據(jù)獲取業(yè)務(wù)能被正確執(zhí)行.

Fig.10 Log screenshot corresponding to data availability request圖10 數(shù)據(jù)獲取請求對應(yīng)的日志截屏

為測試鏈上與鏈下調(diào)度方案.實驗執(zhí)行了13 步操作:操作1 分別創(chuàng)建了基于round-robin 算法的鏈上兜底方法與鏈下調(diào)度方案的智能合約并初始化;操作2 與13 分別創(chuàng)建與銷毀了一個節(jié)點組;操作3~7向此節(jié)點組新增了5 個節(jié)點;操作8~12 依次將這些節(jié)點刪除.

圖11 是調(diào)度方案測試結(jié)果,縱軸是調(diào)用者的手續(xù)費(fèi)開銷之和.圖11 證明了鏈下調(diào)度是比鏈上調(diào)度更經(jīng)濟(jì)的調(diào)度方案,這是因為鏈下調(diào)度僅執(zhí)行調(diào)度任務(wù)廣播與調(diào)度結(jié)果提交,手續(xù)費(fèi)開銷與調(diào)度邏輯復(fù)雜度無關(guān).

Fig.11 Transaction fee of on-chain and off-chain scheduling圖11 鏈上、鏈下調(diào)度方案手續(xù)費(fèi)

此外,考慮鏈上調(diào)度的優(yōu)勢在于容災(zāi)能力強(qiáng),穩(wěn)定性依賴于區(qū)塊鏈正常運(yùn)行,但處理復(fù)雜的調(diào)度邏輯將帶來高昂成本,因此作為兜底是合適的.

綜上,本節(jié)驗證了第4 節(jié)所提方案的可行性,具體為:1)基于NFT 原生地實現(xiàn)節(jié)點身份管理是可行的;2)數(shù)據(jù)獲取請求能在鏈下部分如預(yù)期完成;3)鏈上與鏈下調(diào)度混合的方案是可行的,且鏈下調(diào)度有經(jīng)濟(jì)性優(yōu)勢.

5.5 同類工作對比與評估

從近5 年的相關(guān)研究看,區(qū)塊鏈預(yù)言機(jī)所解決的問題主要是:1)跨鏈場景下交易合法性驗證;2)資產(chǎn)交易場景下數(shù)據(jù)即時獲取.從趨勢上看,區(qū)塊鏈預(yù)言機(jī)相關(guān)研究與實踐越來越致力于構(gòu)建開放、去中心化的系統(tǒng),開放性是新節(jié)點可以在滿足某些條件的前提下加入?yún)^(qū)塊鏈預(yù)言機(jī);去中心化則描述了節(jié)點在功能、權(quán)限等方面彼此等同的程度.事實上,開放性與去中心化特征對應(yīng)了區(qū)塊鏈預(yù)言機(jī)在應(yīng)用時面臨的主要挑戰(zhàn).

早期的區(qū)塊鏈預(yù)言機(jī)項目[56]通常提供單一的數(shù)據(jù)可用性服務(wù),開放性較差,有且僅有被認(rèn)證的節(jié)點能加入系統(tǒng).隨著區(qū)塊鏈承載越來越多樣的服務(wù),數(shù)據(jù)獲取需求也越來越多樣,目前活躍的區(qū)塊鏈預(yù)言機(jī)項目[16-18]通常以公開項目文檔與開放API 的方法支持項目外部用戶自由注冊與加入,但通常也要求用戶抵押一些虛擬貨幣證明身份并保證做誠實的行為;相關(guān)研究[10, 19,57]也通?;诒WC金對節(jié)點授權(quán),并以獎勵誠實行為的形式返還保證金.從開放性的角度看,目前區(qū)塊鏈預(yù)言機(jī)相關(guān)研究與應(yīng)用支持節(jié)點自由加入與退出,且保持誠實的節(jié)點總能獲得虛擬貨幣收益作為獎勵.此方案的優(yōu)勢在于契合區(qū)塊鏈相關(guān)資本市場“信任源于抵押”的“游戲規(guī)則”,但在客觀上仍然存在經(jīng)濟(jì)門檻,還依賴于智能合約自動執(zhí)行抵押、激勵等流程,缺乏對節(jié)點身份與行為的跟蹤與相互監(jiān)督,因此將此方案應(yīng)用在國內(nèi)將受到合法與合規(guī)性挑戰(zhàn).

區(qū)塊鏈預(yù)言機(jī)本身難以實現(xiàn)完全去中心化[8],在實踐中,一種對區(qū)塊鏈預(yù)言機(jī)去中心化程度的描述為:區(qū)塊鏈預(yù)言機(jī)節(jié)點讀寫等操作權(quán)限的等同程度.區(qū)塊鏈預(yù)言機(jī)去中心化程度越高,通常意味著開放性越好,敵手作惡的成本越高,安全性獲得增強(qiáng);但挑戰(zhàn)在于模型更復(fù)雜,例如考慮匿名多點提交的公平性[57]與經(jīng)濟(jì)性[10].因此,也需要應(yīng)用博弈論方法討論激勵方案[19].

在與同類工作對比后,本文方案更適合被應(yīng)用于大規(guī)模區(qū)塊鏈預(yù)言機(jī),且通過引入基于NFT 的節(jié)點身份方案使節(jié)點無需抵押虛擬貨幣即可加入,且可跟蹤、可監(jiān)督.NFT 能被用來表示節(jié)點身份,且節(jié)點身份控制方案繼承了NFT 去中心化、適合表示海量同類事物的特性,適合被應(yīng)用于大規(guī)模區(qū)塊鏈預(yù)言機(jī),將節(jié)點身份去中心化、通證化.

當(dāng)區(qū)塊鏈預(yù)言機(jī)節(jié)點規(guī)模變大時,節(jié)點運(yùn)行密鑰生成、簽名方案的時間開銷將顯著變高;且在此情況下,當(dāng)節(jié)點加入與退出時,節(jié)點將與更多其他節(jié)點通信,節(jié)點因為資源有限,所以數(shù)據(jù)獲取業(yè)務(wù)可用性將下降,因此基于DHT 設(shè)計區(qū)塊鏈預(yù)言機(jī)鏈下部分是增強(qiáng)系統(tǒng)可用性的有效手段.

無論是在數(shù)據(jù)獲取業(yè)務(wù)中,智能合約僅需單次驗證聚合簽名,還是在節(jié)點調(diào)度業(yè)務(wù)中,智能合約可以無需實現(xiàn)復(fù)雜的調(diào)度邏輯,與鏈下調(diào)度器交互完成節(jié)點調(diào)度,智能合約的運(yùn)行開銷都與區(qū)塊鏈預(yù)言機(jī)節(jié)點規(guī)模無關(guān),因此此節(jié)的方案不僅更適合被應(yīng)用于大規(guī)模區(qū)塊鏈預(yù)言機(jī),而且增強(qiáng)了鏈上部分關(guān)于鏈下部分的透明性,降低了業(yè)務(wù)耦合度以及開發(fā)和維護(hù)成本.此外,用戶僅跟智能合約直接交互,因此發(fā)生在鏈下的、實際數(shù)據(jù)獲取業(yè)務(wù)關(guān)于用戶是透明的,此設(shè)計更貼近分布式系統(tǒng)范型.

6 總結(jié)

本文設(shè)計與實現(xiàn)了一種基于BLS 簽名、滿足門限性質(zhì)的區(qū)塊鏈預(yù)言機(jī),節(jié)省了智能合約在數(shù)據(jù)獲取業(yè)務(wù)的開銷;從分布式系統(tǒng)范型出發(fā),設(shè)計了區(qū)塊鏈預(yù)言機(jī)鏈下部分的網(wǎng)絡(luò)拓?fù)洌鰪?qiáng)了可用性與伸縮性,探索了將分布式調(diào)度應(yīng)用于區(qū)塊鏈預(yù)言機(jī)的方案.

本文的創(chuàng)新性工作在于將NFT 應(yīng)用為節(jié)點DID,并基于節(jié)點身份標(biāo)識構(gòu)造了DHT,設(shè)計了區(qū)塊鏈預(yù)言機(jī)鏈下部分,從分布式系統(tǒng)原理與范性的角度討論了區(qū)塊鏈預(yù)言機(jī)的設(shè)計與實現(xiàn).此外,節(jié)點身份在整個生命周期公開,不再要求新節(jié)點通過抵押數(shù)字資產(chǎn)授信,增強(qiáng)了方案通用性與新穎性.

本文針對強(qiáng)投票協(xié)議的工作可被推廣到可信查詢多種鏈下數(shù)據(jù)庫,例如存儲監(jiān)控指標(biāo)、日志、市場數(shù)據(jù)等的時間序列數(shù)據(jù)庫通常是關(guān)于時間線性編排的數(shù)據(jù)存儲,且?guī)缀醪桓職v史數(shù)據(jù),因此針對這些數(shù)據(jù)發(fā)起的查詢是確定性的.本文認(rèn)為,基于強(qiáng)投票協(xié)議的區(qū)塊鏈預(yù)言機(jī)很適合被應(yīng)用于查詢時間序列數(shù)據(jù)庫,并支持多種算子以及算子組合.

此外,本文工作局限于強(qiáng)投票協(xié)議區(qū)塊鏈預(yù)言機(jī),未來工作可討論弱投票協(xié)議的聚合邏輯如何實現(xiàn)在智能合約,并討論如何實現(xiàn)低成本、高可用.

作者貢獻(xiàn)聲明:張展鵬提出了設(shè)計思路并完成源代碼實現(xiàn),撰寫論文;李可欣調(diào)研了相關(guān)工作并共同撰寫了論文;闞海斌提出指導(dǎo)意見.

猜你喜歡
參與方公鑰合約
基于秘密分享的高效隱私保護(hù)四方機(jī)器學(xué)習(xí)方案
一種基于混沌的公鑰加密方案
綠色農(nóng)房建設(shè)伙伴關(guān)系模式初探
HES:一種更小公鑰的同態(tài)加密算法
涉及多參與方的系統(tǒng)及方法權(quán)利要求的撰寫
基于IPD模式的項目參與方利益分配研究
SM2橢圓曲線公鑰密碼算法綜述
基于格的公鑰加密與證書基加密
合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望