基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法
1.本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,尤其涉及基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法。
背景技術(shù):
2.近年來,區(qū)塊鏈技術(shù)迅猛發(fā)展,特別在區(qū)塊鏈智能合約問世過后,迅速成為區(qū)塊鏈解決方案的重要組成部分。但是一些實現(xiàn)復(fù)雜功能的智能合約是需要外界數(shù)據(jù)支持的,而區(qū)塊鏈的執(zhí)行環(huán)境與外界相對獨立,所以一種安全高效的鏈下數(shù)據(jù)上鏈技術(shù)就顯得尤為重要。
3.現(xiàn)階段,區(qū)塊鏈鏈上鏈下數(shù)據(jù)安全傳輸技術(shù)比較流行的技術(shù)就是預(yù)言機技術(shù),預(yù)言機的功能是將外界信息寫入到區(qū)塊鏈內(nèi),完成區(qū)塊鏈與現(xiàn)實世界的數(shù)據(jù)互通。但是預(yù)言機也存在許多安全問題,比如數(shù)據(jù)質(zhì)量問題,由于鏈上節(jié)點可能訪問不同的鏈下數(shù)據(jù)源,因此如何保障數(shù)據(jù)質(zhì)量是一個問題;擴展性問題,每當(dāng)網(wǎng)絡(luò)中加入一個新的數(shù)據(jù)源,或現(xiàn)有數(shù)據(jù)聚合方式要進行調(diào)整,都需要大量的網(wǎng)絡(luò)治理和協(xié)調(diào)工作讓網(wǎng)絡(luò)中所有節(jié)點都達成共識,這增加了共識所需的時間,嚴重時可能導(dǎo)致整個區(qū)塊鏈無法運行。除了預(yù)言機技術(shù)以外,另一種是哈希鎖定技術(shù),對數(shù)據(jù)進行哈希上鎖后,將哈希值進行上鏈,通過哈希算法的不可逆性保證數(shù)據(jù)在傳輸過程中的安全性。但是這種方法只能知道數(shù)據(jù)是否被篡改,沒有保障數(shù)據(jù)傳輸?shù)脑有裕彝ǔJ菍φ麄€數(shù)據(jù)進行操作。但在實際應(yīng)用場景中,我們對數(shù)據(jù)有各種各樣的定制化需求,例如只要特定位置或者組織的數(shù)據(jù)上鏈,而要實現(xiàn)這些定制化需求就需要具體考慮需求背后的各個要素,例如位置,組織等等要素。因此,我們的主要目標(biāo)是構(gòu)建一種安全且可定制化的鏈下數(shù)據(jù)上鏈機制,以此實現(xiàn)鏈下數(shù)據(jù)完整性驗證,保障數(shù)據(jù)的原子性和一致性,滿足特定場景下的數(shù)據(jù)安全和處理性能要求。
4.現(xiàn)有技術(shù)一
5.中國發(fā)明專利,名稱:一種基于狀態(tài)通道的鏈上-鏈下協(xié)同的資源交易方法,申請?zhí)朿n202110688709.5,公開號cn113411338b中提出了一種基于狀態(tài)通道的鏈上-鏈下協(xié)同的資源交易方法,資源交易雙方在鏈上開啟狀態(tài)通道后,可以在鏈下進行多次的資源交易活動,只有當(dāng)開啟、關(guān)閉通道或發(fā)生爭議事件時才需要與區(qū)塊鏈系統(tǒng)通信,這種方式可以減少區(qū)塊鏈系統(tǒng)需要處理的交易數(shù)量與交易雙方與區(qū)塊鏈系統(tǒng)的通信次數(shù),從而減輕區(qū)塊鏈系統(tǒng)的吞吐壓力和資源交易流程所需的完成時間。此外,在該方法中還引入了爭議處理方法,當(dāng)資源交易雙方不按照系統(tǒng)規(guī)定流程進行時,資源交易雙方都可以通過創(chuàng)建爭議來強制對方遵守資源交易協(xié)議,從而保證資源交易的安全與公平。
6.現(xiàn)有技術(shù)一的缺點
7.此方法通過在鏈下開啟狀態(tài)通道進行資源交易,可以在鏈下進行多次的資源交易活動,只有當(dāng)開啟、關(guān)閉通道或發(fā)生爭議事件時才需要與區(qū)塊鏈系統(tǒng)通信,但是資源交易的參與方只有兩方,無法完成多個參與方的資源交易需求,且狀態(tài)通道的開啟需求消耗一定的資源,每兩個資源交易方就要新開一個狀態(tài)通道,導(dǎo)致資源消耗較大,利用率較低。
8.現(xiàn)有技術(shù)二的技術(shù)方案
9.中國發(fā)明專利,名稱:多人鏈下狀態(tài)通道中信息安全保護實現(xiàn)方法及系統(tǒng),申請?zhí)朿n202210288131.9,公開號cn114826603a中提出了一種多人鏈下狀態(tài)通道中信息安全保護實現(xiàn)方法,通過執(zhí)行者建立多人鏈下狀態(tài)通道并生成系統(tǒng)公共參數(shù)后,發(fā)起方與接收方加入多人鏈下狀態(tài)通道并進行鏈下狀態(tài)更新,經(jīng)執(zhí)行者驗證后更新多人鏈下狀態(tài)通道的狀態(tài),實現(xiàn)對通道內(nèi)用戶的保護。
10.現(xiàn)有技術(shù)二的缺點
11.此方法采用零知識證明的密碼學(xué)來保證鏈下狀態(tài)通道中的數(shù)據(jù)安全,并且需要多個參與方進行驗證確認。通常數(shù)據(jù)傳輸對性能的要求是比較高的,零知識證明的時間開銷和計算開銷都較大,會極大的影響數(shù)據(jù)的傳輸。并且等待多個參與方驗證確認是需要時間的,如果某一方延遲給出確認信息,那么數(shù)據(jù)傳輸?shù)男阅軐蟠蠼档汀?br/>12.發(fā)明所要解決的技術(shù)問題
13.區(qū)塊鏈的執(zhí)行環(huán)境與外界相對獨立,所以區(qū)塊鏈難以獲取到安全可信的鏈下數(shù)據(jù),雖然已經(jīng)有預(yù)言機技術(shù)為區(qū)塊鏈提供相對安全可信的數(shù)據(jù),但是在處理海量鏈下交易數(shù)據(jù)時,存在鏈上鏈下數(shù)據(jù)不一致、并發(fā)性能低下等問題,因此本發(fā)明提出構(gòu)建鏈下傳輸通道網(wǎng)絡(luò)作為傳輸媒介,它由一對用戶之間的一組傳輸通道構(gòu)成,用于在沒有直接建立傳輸通道的兩方之間進行鏈下傳輸。并提出基于哈希鎖、時間鎖、位置鎖、組織鎖等多要素哈希鎖定的鏈下數(shù)據(jù)上鏈機制,根據(jù)應(yīng)用場景,設(shè)置并選取不同種類的鎖,通過哈希鎖定,保證數(shù)據(jù)的完整性、原子性和一致性,實現(xiàn)鏈下交易數(shù)據(jù)或鏈下資產(chǎn)的完整性驗證,滿足特定場景下的數(shù)據(jù)安全和處理性能要求。
技術(shù)實現(xiàn)要素:
14.為解決上述技術(shù)問題,本發(fā)明提供了基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法。
15.本發(fā)明的技術(shù)方案如下:
16.基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,包括以下階段:
17.第一階段:預(yù)處理階段;
18.第二階段:提交和鎖定階段;
19.第三階段:釋放階段。
20.優(yōu)選地,第一階段包括以下步驟:
21.s11:多要素哈希鎖選取和生成機制;
22.s12:構(gòu)建鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)。
23.優(yōu)選地,s11包括以下子步驟:
24.s111:選擇要素鎖;
25.s112:形成要素標(biāo)識;
26.s113:生成多要素哈希鎖。
27.優(yōu)選地,s12包括以下子步驟:
28.s121:開通道;
29.s122:數(shù)據(jù)傳輸;
30.s123:關(guān)通道。
31.優(yōu)選地,第二階段包括3個方面:
32.第1方面發(fā)送者:發(fā)送者u0創(chuàng)建mehtlc多要素哈希時間鎖合約,即mehtlc(u0,u1,v1,s,t1,d)到其下一鄰居u1;
33.第2方面中間用戶:在提交和鎖定階段,每個中間用戶{ui}
i∈[1,n]
從其先前的鄰居u
i-1
接受mehtlc。每個中間用戶ui驗證mehtlc合約的正確性:a.檢查鎖定時間t
i-1
(t
i+1
>ti)的有效性;
[0034]
b.檢查用戶u
i-1
是否有足夠的手續(xù)費γ
<i,i+1>
(γ
<i,i+1>
≥v
i+1
),其中v
i+1
是從vi中減去后的手續(xù)費再跟右鄰居u
i+1
創(chuàng)建新的mehtlc合約;
[0035]
第3方面接受者:接受者u
n+1
從他的左鄰居un接收mehtlc(un,u
n+1
,v
n+1
,s,t
n+1
,d),然后檢查合約是否滿足t
n+1
>t
now
+δ,如果滿足,向左鄰居發(fā)送要素標(biāo)識的哈希s的原像r,如果不滿足t
n+1
>t
now
+δ或者給出的原像r算出的哈希與要素標(biāo)識的哈希s不匹配,那么傳輸將中止,將數(shù)據(jù)和手續(xù)費退回;
[0036]
其中δ為一個小的正值,u0為發(fā)送者,u
n+1
為接受者,{ui}
i∈[1,n]
為中間用戶,fee(ui)為用戶ui的手續(xù)費,γ
<i,j>
為用戶ui和uj的投入通道押金。
[0037]
優(yōu)選地,第3階段包括2個方面:
[0038]
第1方面發(fā)送者:如果用戶u1在時間t1內(nèi)提供了一個哈希s的原像r,然后u0將鎖定的v1手續(xù)費和數(shù)據(jù)d釋放到其下一個鄰居u1。
[0039]
第2方面中間用戶:每個用戶ui在時間ti內(nèi)提供了一個哈希s的原像r,那么就將鎖定的手續(xù)費和數(shù)據(jù)d釋放到其下一個鄰居u
i-1
。
[0040]
其中u0為發(fā)送者,u
n+1
為接受者,{ui}
i∈[1,n]
為中間用戶,fee(ui)為用戶ui的手續(xù)費。
[0041]
本發(fā)明基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法的有益效果如下:
[0042]
1.本發(fā)明提出基于哈希鎖、時間鎖、位置鎖、組織鎖等多要素哈希鎖的定義,根據(jù)應(yīng)用場景,設(shè)置并選取不同種類的鎖,通過哈希鎖定,保證數(shù)據(jù)的完整性、原子性和一致性,實現(xiàn)鏈下交易數(shù)據(jù)或鏈下資產(chǎn)的完整性驗證,滿足特定場景下的數(shù)據(jù)安全和處理性能要求。
[0043]
2.本發(fā)明設(shè)計了鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)的總體流程,該流程對構(gòu)建鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)的主要步驟進行了描述,設(shè)計了網(wǎng)絡(luò)中各個通道可以進行的操作包括操作的參數(shù)定義,方法流程。
[0044]
3.本發(fā)明的鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)實現(xiàn)了在沒有直接建立傳輸通道的兩方之間進行鏈下傳輸,提高了通道的重復(fù)利用率。
[0045]
4.本發(fā)明設(shè)計了多要素哈希時間鎖定合約mehtlc(multi element hashed timelock contract),提高了數(shù)據(jù)在鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)的流動性和安全性。
[0046]
5.本發(fā)明設(shè)計了基于多要素哈希鎖和鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)的鏈上鏈下數(shù)據(jù)傳輸機制總體流程,該流程對鏈下數(shù)據(jù)上鏈的階段流程進行了描述。
[0047]
6.本發(fā)明提高了數(shù)據(jù)傳輸?shù)陌踩郧冶WC數(shù)據(jù)的完整性、原子性和一致性。
附圖說明
[0048]
圖1為本發(fā)明方法的示意圖。
[0049]
圖2為本發(fā)明數(shù)據(jù)傳輸?shù)目傮w流程圖。
[0050]
圖3為本發(fā)明多要素哈希鎖生成流程圖。
[0051]
圖4為本發(fā)明鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)圖。
[0052]
圖5為本發(fā)明數(shù)據(jù)傳輸上鏈圖。
具體實施方式
[0053]
下面對本發(fā)明的具體實施方式進行描述,以便于本技術(shù)領(lǐng)域的技術(shù)人員理解本發(fā)明,但應(yīng)該清楚,本發(fā)明不限于具體實施方式的范圍,對本技術(shù)領(lǐng)域的普通技術(shù)人員來講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護之列。
[0054]
1.方法模型
[0055]
基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸模型,如圖1所示,系統(tǒng)的角和功能的具體說明如下:
[0056]
鏈下數(shù)據(jù)源:鏈下數(shù)據(jù)源為當(dāng)前時刻需要將自身的數(shù)據(jù)上傳到區(qū)塊鏈上的設(shè)備。資源需求設(shè)備通常為資源有限的物聯(lián)網(wǎng)的設(shè)備,如工業(yè)物聯(lián)網(wǎng)傳感器、智慧車輛和虛擬現(xiàn)實設(shè)備等。
[0057]
鏈下數(shù)據(jù)傳輸網(wǎng)絡(luò):鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)為不同設(shè)備之間的數(shù)據(jù)傳輸通道組成的網(wǎng)絡(luò),它用于在沒有直接建立傳輸通道的兩方之間進行鏈下傳輸。
[0058]
多要素哈希鎖:多要素哈希鎖是對數(shù)據(jù)從多個維度進行鎖定,保證數(shù)據(jù)在傳輸過程中安全性、原子性和一致性。多要素是根據(jù)具體應(yīng)用場景的需求提取出相應(yīng)需要考慮的要素,例如只需要特定位置的數(shù)據(jù)上鏈,需要考慮位置要素;只需要的特定的組織或者企業(yè)數(shù)據(jù)上鏈,就需要考慮組織要素等等要素。將數(shù)據(jù)映射成多要素標(biāo)識,用哈希鎖對標(biāo)識進行鎖定。
[0059]
區(qū)塊鏈節(jié)點:區(qū)塊鏈節(jié)點負責(zé)處理并記錄來自傳輸通道網(wǎng)絡(luò)中的數(shù)據(jù),生成多要素哈希鎖所需的隨機數(shù)。
[0060]
2.總體流程
[0061]
數(shù)據(jù)傳輸?shù)目傮w流程如圖2所示,大體來說可以分為3個階段,6個主要的步驟,分別為:
[0062]
(1)多要素哈希鎖的生成:鏈下數(shù)據(jù)源根據(jù)自己的需求確定多要素,生成要素標(biāo)識,最后組成多要素哈希鎖。
[0063]
(2)鏈下傳輸通道網(wǎng)絡(luò)構(gòu)建:鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)由每兩個鏈下數(shù)據(jù)源用戶之間的一組傳輸通道構(gòu)成,它用于在沒有直接建立傳輸通道的兩方之間進行鏈下傳輸。一個傳輸通道有三個操作:分別是offchainopenchannel、offchaintransmission和offchainclosechannel。
[0064]
(3)數(shù)據(jù)傳輸:在多要素哈希鎖和鏈下傳輸通道網(wǎng)絡(luò)的基礎(chǔ)上,利用多要素哈希時間鎖定合約mehtlc(multi element hashed timelock contract)的智能合約接口實現(xiàn)鏈下數(shù)據(jù)上鏈的機制,數(shù)據(jù)通過在鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)流動,最終上鏈。
[0065]
(4)數(shù)據(jù)傳輸條件驗證是否成功:比較驗證mehtlc中的條件是否滿足。
[0066]
(5)數(shù)據(jù)傳輸條件驗證是否超時:比較驗證mehtlc的條件時是否超時。
[0067]
(6)是否關(guān)閉通道:鏈下數(shù)據(jù)源完成數(shù)據(jù)傳輸后,可以執(zhí)行offchainclosechannel關(guān)閉通道同時將最新的余額廣播到鏈上。第1,2步為預(yù)處理階段,第3,4,5步為提交和鎖定階段,第6步為釋放階段。
[0068]
各階段具體流程在以下部分詳細介紹。
[0069]
3.多要素哈希鎖的生成
[0070]
如圖3,多要素哈希鎖生成流程主要包括三個階段,分別如下:
[0071]
(1)要素鎖的選擇:根據(jù)具體應(yīng)用場景的需求提取出相應(yīng)需要考慮的要素,例如只需要特定位置的數(shù)據(jù)上鏈,需要考慮位置要素;只需要的特定的組織或者企業(yè)數(shù)據(jù)上鏈,就需要考慮組織要素等等要素。多要素(multi element)即根據(jù)具體應(yīng)用場景的需求提取出相應(yīng)的要素值,式子如下:
[0072][0073]
其中,e1、e2、e3、e4分別為用戶輸入的位置要素,組織要素,時間要素和其他要素,α(x)、β(x)、η(x)、ξ(x)分別為該要素的要素映射函數(shù),α(x)將用戶輸入的具體位置信息映射成該位置的經(jīng)緯度坐標(biāo),β(x)將用戶輸入的某個具體組織映射成唯一的組織編號,η(x)將用戶輸入的時間映射為塊時間,ξ(x)為用戶自定義映射函數(shù)。整個式子表示在用戶輸入相應(yīng)的要素后,進入相應(yīng)的要素映射函數(shù),對輸入的要素進行一個映射,最終輸出一個具體的要素值。
[0074]
(2)要素標(biāo)識的形成:多要素標(biāo)識r是一個由多要素和隨機數(shù)r組成的一個字符串,隨機數(shù)r=random(i)
i∈[0,n+1]
,多要素標(biāo)識r=(multi element)+r,其中multi element是經(jīng)過多要素映射函數(shù)映射的多要素值,例如位置的經(jīng)緯度,某個企業(yè)組織唯一標(biāo)識符等等,r是區(qū)塊鏈生成相應(yīng)的隨機數(shù)。
[0075]
(3)生成多要素哈希鎖:對生成的這個多要素標(biāo)識求哈希即是多要素哈希鎖s=hash(r)
[0076]
4.鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)構(gòu)建:
[0077]
鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)由每兩個鏈下數(shù)據(jù)源用戶之間的一組傳輸通道構(gòu)成,它用于在沒有直接建立傳輸通道的兩方之間進行鏈下傳輸。一個傳輸通道有三個操作:分別是offchainopenchannel、offchaintransmission和offchainclosechannel。任何兩個用戶都可以通過雙方同意并存入保證金在鏈上執(zhí)行offchainopenchannel操作來打開傳輸通道。此后,兩個用戶都可以通過執(zhí)行offchaintransmission操作來完成數(shù)據(jù)傳輸,而無需在區(qū)塊鏈上廣播它。最后,任何一方都可以通過執(zhí)行offchainclosechannel操作來關(guān)閉通道,并在區(qū)塊鏈上廣播最新的相互接受狀態(tài)。
[0078]
下面分別詳細描述這三個操作:
[0079]
(1)開通道:offchainopenchannel(ui,uj,γ
ij
,γ
ji
,fee,t)
→
{1,0},ui,uj是用戶
對,信道容量γ=γ
ij
+γ
ji
;γ
ij
(≤β[ui])和γ
ji
(≤β[uj])是對應(yīng)用戶的鏈上余額;fee和t分別表示手續(xù)費和通道時間。這個操作是打開一個通道標(biāo)識符的新通道。如果此操作成功,則區(qū)塊鏈β更新余額(β[ui]=β[ui]
–
γ
ij
和β[uj]=β[uj]-γ
ji
),并返回1,否則返回0。
[0080]
(2)數(shù)據(jù)傳輸:給定一組通道將數(shù)據(jù)d從發(fā)送者u0傳輸?shù)浇邮苷遳
n+1
,并將依次從ν里扣除手續(xù)費。此操作檢索通道信息來自區(qū)塊鏈。它檢查每個中間用戶的條件(γ'
ij
≥νi)。如果滿足,則通道余額更新為返回1。否則,通道不更新,返回0。
[0081]
(3)關(guān)通道:給定一個信道標(biāo)識符此操作檢索信道信息其中γ
ij
和γ
ji
是雙方最后商定的的押金,而γ'
ij
和γ'
ji
是當(dāng)前的押金。如果超時或者用戶發(fā)起申請,則區(qū)塊鏈b更新余額(β[ui]=β-γ
ij
和β[uj]=β
–
γ
ji
,或者β[ui]=β-γ'
ij
和β[uj]=β
–
γ'
ji
),然后從網(wǎng)絡(luò)中消除了通道并分別返回1(0)以進行成功(失敗)操作。
[0082]
ui表示鏈下數(shù)據(jù)源用戶,β表示區(qū)塊鏈,表示數(shù)據(jù)源ui和uj之間的信道標(biāo)識符,fee(ui)表示用戶ui需支付的手續(xù)費,當(dāng)多方已經(jīng)開辟多個鏈下傳輸通道,將通道整合成一個鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò),具體流程如下:
[0083]
如圖4,u0、u1、u2、u3都為鏈下的不同的數(shù)據(jù)源,假設(shè)數(shù)據(jù)源u0想將數(shù)據(jù)傳輸?shù)絽^(qū)塊鏈上,希望沿路徑p=u0→
u1→
u2→
blockchain傳輸數(shù)據(jù)d。在步驟1中,區(qū)塊鏈隨機生成一個隨機數(shù)r,將r的哈希值s通過安全私密的方式發(fā)給u0,其中s=h(r),h是哈希函數(shù)。從步驟2到步驟9是數(shù)據(jù)d的傳輸過程。在步驟2中,發(fā)送方u0向其發(fā)送傳輸請求offchaintransmission(u0,u1,v1,s,t1,d)到下一個右鄰u1,v是傳輸數(shù)據(jù)過程中的手續(xù)費(不包括發(fā)送方和接收方的費用),每經(jīng)過一跳手續(xù)費會相應(yīng)的增加,其中然后,它鎖定資金和需要發(fā)送的數(shù)據(jù)并詢問用戶u1在時間t1內(nèi)給出r。否則,傳輸將中止并退回給u0。在接收到傳輸請求offchaintransmission之后,在步驟3中,將其從v1中減去其手續(xù)費,并給下一個鄰居u2發(fā)送傳輸請求offchaintransmission(u1,u2,v2,s,t2,d),在每個中間節(jié)點處執(zhí)行相同的過程。最后,當(dāng)區(qū)塊鏈接收到傳輸請求offchaintransmission(u3,blockchain,v4,s,t4,d)時,它驗證了offchaintransmission條件并將隨機數(shù)r發(fā)送到之前的數(shù)據(jù)源u2。隨后,在接收到r之后,每個中間數(shù)據(jù)源u將鎖定的vi手續(xù)費和數(shù)據(jù)d發(fā)送給下一個鄰居數(shù)據(jù)源,并沿路徑向相反的方向發(fā)送r到先前鄰居數(shù)據(jù)源。最后,發(fā)送數(shù)據(jù)的數(shù)據(jù)源u0接收r,將鎖定的數(shù)據(jù)和手續(xù)費發(fā)送給用戶u1完成傳輸,再通過執(zhí)行offchainclosechannel操作來關(guān)閉通道。
[0084]
5.數(shù)據(jù)傳輸上鏈
[0085]
在多要素哈希鎖和鏈下傳輸通道網(wǎng)絡(luò)的基礎(chǔ)上,利用多要素哈希時間鎖定合約mehtlc(multi element hashed timelock contract)的智能合約接口實現(xiàn)鏈下數(shù)據(jù)上鏈的機制,數(shù)據(jù)通過在鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)流動,最終上鏈,具體流程如下:
[0086]
如圖5所示,圖中u0、u1、u2、u3都為鏈下的不同的數(shù)據(jù)源,假設(shè)數(shù)據(jù)源u0想將指定位置的數(shù)據(jù)d傳輸?shù)絽^(qū)塊鏈上,希望沿路徑p=u0→
u1→
u2→
blockchain傳輸數(shù)據(jù)d。在步驟1中,用戶輸入該位置的信息并通過多要素映射函數(shù)將其映射為該位置的經(jīng)緯度,將經(jīng)緯度通過匿名的洋蔥網(wǎng)絡(luò)發(fā)送到區(qū)塊鏈上,區(qū)塊鏈將經(jīng)緯度和生成的隨機數(shù)組合起來,生成了一個多要素標(biāo)識r,將r的哈希值s通過安全私密的方式發(fā)給u0,其中s=h(r),h是哈希函數(shù)。從步驟2到步驟9是數(shù)據(jù)d的傳輸過程,在步驟2中,發(fā)送方u0與下一個右鄰u1創(chuàng)建mehtlc(u0,u1,v1,s,t1,d),v是傳輸數(shù)據(jù)過程中的手續(xù)費(不包括發(fā)送方和接收方的費用),每經(jīng)過一跳手續(xù)費會相應(yīng)的增加,其中然后,它鎖定資金和需要發(fā)送的數(shù)據(jù)并詢問用戶u1在時間t1內(nèi)給出r。否則,傳輸將中止手續(xù)費和數(shù)據(jù)將退回給u0。在接收到mehtlc合約之后,在步驟3中,將其從v1中減去其手續(xù)費,并給下一個鄰居u2創(chuàng)建mehtlc(u1,u2,v2,s,t2,d),在每個中間節(jié)點處執(zhí)行相同的過程。最后,當(dāng)區(qū)塊鏈接收到mehtlc(u3,blockchain,v4,s,t4,d)時,它驗證了mehtlc條件并將多要素標(biāo)識r發(fā)送到之前的數(shù)據(jù)源u3。隨后,在接收到r之后,每個中間數(shù)據(jù)源u將鎖定的vi手續(xù)費和數(shù)據(jù)d發(fā)送給下一個鄰居數(shù)據(jù)源,并沿路徑向相反的方向發(fā)送r到先前鄰居數(shù)據(jù)源。最后,發(fā)送數(shù)據(jù)的數(shù)據(jù)源u0接收r,將鎖定的數(shù)據(jù)和手續(xù)費發(fā)送給用戶u1完成傳輸,再通過執(zhí)行offchainclosechannel。
[0087]
6.智能合約數(shù)據(jù)傳輸條件驗證是否成功
[0088]
mehtlc包括多要素哈希鎖和時間鎖,需要驗證傳輸網(wǎng)絡(luò)中鄰居傳過來的多要素哈希鎖原像r是否與已有的多要素哈希鎖s相同,驗證通過還需驗證是否超時。
[0089]
7.智能合約數(shù)據(jù)傳輸條件驗證是否超時
[0090]
mehtlc包括多要素哈希鎖和時間鎖,驗證傳輸網(wǎng)絡(luò)中鄰居傳過來的多要素哈希鎖原像r是否與已有的多要素哈希鎖s相同后,還需要驗證時間鎖,即能不能在規(guī)定時間內(nèi)完成多要素哈希鎖的驗證,通過驗證數(shù)據(jù)可以進入下一跳傳輸,否則將退回數(shù)據(jù)和手續(xù)費。
[0091]
8.關(guān)閉通道
[0092]
數(shù)據(jù)傳輸完成、通道開啟時間超時或者傳輸過程中驗證超時,將執(zhí)行offchainclosechannel關(guān)閉通道,同時將余額更新并廣播到鏈上。關(guān)通道具體流程如下:
[0093]
給定一個信道標(biāo)識符此操作檢索信道信息其中γ
ij
和γ
ji
是雙方最后商定的的押金,而γ'
ij
和γ'
ji
是當(dāng)前的押金。如果超時或者用戶發(fā)起申請,則區(qū)塊鏈b更新余額(β[ui]=β-γ
ij
和β[uj]=β
–
γ
ji
,或者β[ui]=β-γ'
ij
和β[uj]=β
–
γ'
ji
),然后從網(wǎng)絡(luò)中消除了通道并分別返回1(0)以進行成功(失敗)操作。
技術(shù)特征:
1.基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,其特征在于,包括以下階段:第一階段:預(yù)處理階段;第二階段:提交和鎖定階段;第三階段:釋放階段。2.根據(jù)權(quán)利要求1所述的基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,其特征在于,所述第一階段包括以下步驟:s11:多要素哈希鎖選取和生成機制;s12:構(gòu)建鏈下數(shù)據(jù)傳輸通道網(wǎng)絡(luò)。3.根據(jù)權(quán)利要求1所述的基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,其特征在于,所述s11包括以下子步驟:s111:選擇要素鎖;s112:形成要素標(biāo)識;s113:生成多要素哈希鎖。4.根據(jù)權(quán)利要求1所述的基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,其特征在于,所述s12包括以下子步驟:s121:開通道;s122:數(shù)據(jù)傳輸;s123:關(guān)通道。5.根據(jù)權(quán)利要求1所述的基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,其特征在于,所述第二階段包括3個方面:第1方面發(fā)送者:發(fā)送者u0創(chuàng)建mehtlc多要素哈希時間鎖合約,即mehtlc(u0,u1,v1,s,t1,d)到其下一鄰居u1;第2方面中間用戶:在提交和鎖定階段,每個中間用戶{u
i
}
i∈[1,n]
從其先前的鄰居u
i-1
接受mehtlc。每個中間用戶u
i
驗證mehtlc合約的正確性:a.檢查鎖定時間t
i-1
(t
i+1
>t
i
)的有效性;b.檢查用戶u
i-1
是否有足夠的手續(xù)費γ
<i,i+1>
(γ
<i,i+1>
≥v
i+1
),其中v
i+1
是從v
i
中減去后的手續(xù)費再跟右鄰居u
i+1
創(chuàng)建新的mehtlc合約;第3方面接受者:接受者u
n+1
從他的左鄰居u
n
接收mehtlc(u
n
,u
n+1
,v
n+1
,s,t
n+1
,d),然后檢查合約是否滿足t
n+1
>t
now
+δ,如果滿足,向左鄰居發(fā)送要素標(biāo)識的哈希s的原像r,如果不滿足t
n+1
>t
now
+δ或者給出的原像r算出的哈希與要素標(biāo)識的哈希s不匹配,那么傳輸將中止,將數(shù)據(jù)和手續(xù)費退回;其中δ為一個小的正值,u0為發(fā)送者,u
n+1
為接受者,{u
i
}
i∈[1,n]
為中間用戶,fee(u
i
)為用戶u
i
的手續(xù)費,γ
<i,j>
為用戶u
i
和u
j
的投入通道押金。6.根據(jù)權(quán)利要求1所述的基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,其特征在于,所述第3階段包括2個方面:第1方面發(fā)送者:如果用戶u1在時間t1內(nèi)提供了一個哈希s的原像r,然后u0將鎖定的v1手續(xù)費和數(shù)據(jù)d釋放到其下一個鄰居u1。
第2方面中間用戶:每個用戶u
i
在時間t
i
內(nèi)提供了一個哈希s的原像r,那么就將鎖定的手續(xù)費和數(shù)據(jù)d釋放到其下一個鄰居u
i-1
。其中u0為發(fā)送者,u
n+1
為接受者,{u
i
}
i∈[1,n]
為中間用戶,fee(u
i
)為用戶u
i
的手續(xù)費。
技術(shù)總結(jié)
本發(fā)明公開了基于多要素哈希鎖的鏈上鏈下數(shù)據(jù)傳輸方法,包括以下階段:第一階段:預(yù)處理階段;第二階段:提交和鎖定階段;第三階段:釋放階段;發(fā)明提出構(gòu)建鏈下傳輸通道網(wǎng)絡(luò)作為傳輸媒介,它由一對用戶之間的一組傳輸通道構(gòu)成,用于在沒有直接建立傳輸通道的兩方之間進行鏈下傳輸,并提出基于哈希鎖、時間鎖、位置鎖、組織鎖等多要素哈希鎖定的鏈下數(shù)據(jù)上鏈機制,根據(jù)應(yīng)用場景,設(shè)置并選取不同種類的鎖,通過哈希鎖定,保證數(shù)據(jù)的完整性、原子性和一致性,實現(xiàn)鏈下交易數(shù)據(jù)或鏈下資產(chǎn)的完整性驗證,滿足特定場景下的數(shù)據(jù)安全和處理性能要求。求。求。
