本發(fā)明屬于數(shù)字貨幣技術(shù)領(lǐng)域,具體涉及一種多鏈場(chǎng)景下的區(qū)塊鏈鏈間資產(chǎn)轉(zhuǎn)移方法。
背景技術(shù):
比特幣的出現(xiàn)改變了數(shù)字貨幣或數(shù)字資產(chǎn)原有的中心化管理及交易模式,創(chuàng)造性地提出了通過(guò)系統(tǒng)中各節(jié)點(diǎn)工作量證明來(lái)分配節(jié)點(diǎn)權(quán)益從而變相地完成動(dòng)態(tài)多方簽名過(guò)程這一策略,能有效抵御西比爾攻擊和拜占庭將軍問題,大幅提升系統(tǒng)的安全性。但是,以比特幣為代表的基于區(qū)塊鏈技術(shù)的分布式加密數(shù)字貨幣(資產(chǎn))系統(tǒng)目前也面臨一些問題:首先是系統(tǒng)可擴(kuò)展性和疏散程度間的沖突,一個(gè)大容量的區(qū)塊能夠支持高的交易率,但是毫無(wú)疑問將在安全驗(yàn)證環(huán)節(jié)上耗費(fèi)大量的工作量從而引發(fā)高集中性危險(xiǎn);其次是交易簡(jiǎn)明性和可審計(jì)性之間的沖突,比特幣系統(tǒng)能高效地促成簡(jiǎn)明有效的交易,但是不利于交易的審計(jì)。
上述問題可以引入替代鏈通過(guò)共享比特幣代碼庫(kù)得到解決,但是構(gòu)建一個(gè)本質(zhì)上相似的獨(dú)立系統(tǒng)在技術(shù)實(shí)現(xiàn)上充滿困難。一是存在安全問題,由于每個(gè)替代鏈?zhǔn)褂玫氖亲约旱募夹g(shù)堆棧,其工作記錄被頻繁地復(fù)制或發(fā)生丟失;二是替代鏈通常存在價(jià)值浮動(dòng)的本地加密貨幣,為了使用替代鏈,用戶必須通過(guò)一個(gè)交易市場(chǎng)來(lái)獲取替代鏈本地貨幣,不僅需要建立一個(gè)這樣的市場(chǎng)還需要解決潛在的市場(chǎng)擁擠風(fēng)險(xiǎn)。
解決上述問題的另一思路是實(shí)現(xiàn)多條區(qū)塊鏈鏈間貨幣(資產(chǎn))的傳遞或轉(zhuǎn)移,但實(shí)現(xiàn)數(shù)字加密貨幣或資產(chǎn)的物理轉(zhuǎn)移比較困難,需要設(shè)計(jì)一套機(jī)制實(shí)現(xiàn)母鏈與側(cè)鏈之間的等效資產(chǎn)轉(zhuǎn)移并防止發(fā)生雙重支付問題。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述,本發(fā)明提供了一種多鏈場(chǎng)景下的區(qū)塊鏈鏈間資產(chǎn)轉(zhuǎn)移方法,實(shí)現(xiàn)了母鏈與側(cè)鏈間的掛鉤鎖定機(jī)制設(shè)計(jì),在不改變數(shù)字貨幣(資產(chǎn))物理位置的情況下實(shí)現(xiàn)其在鏈間的等效轉(zhuǎn)移,并能規(guī)避雙重支付問題。
一種多鏈場(chǎng)景下的區(qū)塊鏈鏈間資產(chǎn)轉(zhuǎn)移方法,包括如下步驟:
(1)構(gòu)建母鏈和側(cè)鏈間的掛鉤鎖定機(jī)制,確保數(shù)字貨幣轉(zhuǎn)移的有向性;
(2)在母鏈將需要轉(zhuǎn)移的數(shù)字貨幣進(jìn)行鎖定,在側(cè)鏈生成等額度的數(shù)字貨幣,從而實(shí)現(xiàn)數(shù)字貨幣在鏈間的等效轉(zhuǎn)移;
(3)確保母鏈數(shù)字貨幣鎖定過(guò)程、側(cè)鏈等額度數(shù)字貨幣生成過(guò)程以及交易過(guò)程依次進(jìn)行的先后時(shí)序關(guān)系,規(guī)避雙重支付問題。
所述步驟(1)中構(gòu)建母鏈和側(cè)鏈間的掛鉤鎖定機(jī)制,需先對(duì)相關(guān)對(duì)象進(jìn)行具體定義,然后采用簡(jiǎn)化支付驗(yàn)證證明來(lái)實(shí)現(xiàn)掛鉤鎖定機(jī)制。
所述掛鉤鎖定機(jī)制中對(duì)于相關(guān)對(duì)象的具體定義如下:
a.數(shù)字貨幣或財(cái)產(chǎn)是一種可以對(duì)其控制者進(jìn)行確定性加密的數(shù)字資產(chǎn);
b.區(qū)塊是用于描述關(guān)于財(cái)產(chǎn)控制權(quán)變化的財(cái)產(chǎn)交易情況集合;
c.區(qū)塊鏈?zhǔn)蔷哂辛己门帕兄刃虻谋姸鄥^(qū)塊的組合,在區(qū)塊鏈上的每一個(gè)用戶最終必須達(dá)成共識(shí),區(qū)塊鏈能夠給出數(shù)字資產(chǎn)控制權(quán)變更的歷史記錄并且提供一個(gè)不可偽造的交易時(shí)序;
e.重組行為只在用戶側(cè)發(fā)生,且僅在早先認(rèn)可的區(qū)塊鏈被擁有更多工作量證明的區(qū)塊鏈超過(guò)時(shí)發(fā)生;
d.母鏈為待轉(zhuǎn)移數(shù)字貨幣所在的區(qū)塊鏈,側(cè)鏈為用于驗(yàn)證母鏈數(shù)據(jù)的區(qū)塊鏈;
f.數(shù)字貨幣在鏈間的轉(zhuǎn)移過(guò)程也是區(qū)塊鏈數(shù)據(jù)的重組行為過(guò)程。
所述簡(jiǎn)化支付驗(yàn)證證明是一種動(dòng)態(tài)成員多方簽名行為,其作用類似于發(fā)生在比特幣系統(tǒng)中區(qū)塊鏈的工作量證明,簡(jiǎn)化支付驗(yàn)證證明由以下兩部分組成:①反應(yīng)工作量證明的區(qū)塊頭列表;②一個(gè)關(guān)于區(qū)塊頭列表中某一區(qū)塊創(chuàng)建數(shù)字貨幣輸出的加密證明;當(dāng)存在以下情況下簡(jiǎn)化支付驗(yàn)證證明是無(wú)效的:有另一個(gè)證明表明存在一個(gè)工作量更多的區(qū)塊鏈且該區(qū)塊鏈中不包含先前創(chuàng)建數(shù)字貨幣輸出的區(qū)塊。
所述步驟(2)中通過(guò)使母鏈與側(cè)鏈雙向掛鉤實(shí)現(xiàn)數(shù)字貨幣在鏈間的等效轉(zhuǎn)移,所述雙向掛鉤是指數(shù)字貨幣以固定匯率在側(cè)鏈之間進(jìn)行來(lái)回轉(zhuǎn)移的機(jī)制,該轉(zhuǎn)移機(jī)制并非是指數(shù)字貨幣從母鏈消失然后在其它側(cè)鏈上產(chǎn)生,實(shí)際上數(shù)字貨幣根本沒有離開母鏈,即數(shù)字貨幣的物理地址沒有發(fā)生任何變化,只是在母鏈上被暫時(shí)鎖定,同時(shí)在側(cè)鏈上有等價(jià)的數(shù)字貨幣被解鎖;當(dāng)側(cè)鏈上有等量等價(jià)的數(shù)字貨幣被再次鎖定時(shí),母鏈上原來(lái)的數(shù)字貨幣就會(huì)被解鎖;
此外,掛鉤側(cè)鏈上的數(shù)字資產(chǎn)能夠從其他側(cè)鏈導(dǎo)入和返還,支持?jǐn)?shù)字資產(chǎn)的雙向掛鉤;即當(dāng)數(shù)字貨幣在母鏈上被鎖定之后,該數(shù)字貨幣可在側(cè)鏈之間進(jìn)行任意轉(zhuǎn)移而不再與母鏈產(chǎn)生相互作用,但是其保留有母鏈的貨幣身份,且僅能被轉(zhuǎn)移回原來(lái)的母鏈。
所述步驟(3)中確保母鏈數(shù)字貨幣鎖定過(guò)程、側(cè)鏈等額度數(shù)字貨幣生成過(guò)程以及交易過(guò)程依次進(jìn)行的先后時(shí)序關(guān)系,需在確認(rèn)數(shù)字貨幣轉(zhuǎn)移成功之前設(shè)立以下兩個(gè)等待時(shí)間:
確認(rèn)等待時(shí)間,即數(shù)字貨幣在轉(zhuǎn)移至側(cè)鏈之前必須確保其已經(jīng)在母鏈上鎖定所需的時(shí)間;
競(jìng)爭(zhēng)等待時(shí)間,即限制新轉(zhuǎn)移到側(cè)鏈上的數(shù)字貨幣進(jìn)行交易的時(shí)間。
設(shè)立確認(rèn)等待時(shí)間的目的是確保眾多節(jié)點(diǎn)累積足夠的工作量使得系統(tǒng)在下一個(gè)等待時(shí)間中很難以被“拒絕服務(wù)”攻擊;在母鏈上創(chuàng)建特殊的輸出標(biāo)記后,用戶度過(guò)確認(rèn)等待時(shí)間便可以在側(cè)鏈上創(chuàng)建一筆交易,繼而提供一個(gè)交易創(chuàng)建的簡(jiǎn)化支付驗(yàn)證證明并在母鏈中埋入足夠的工作量。
設(shè)立競(jìng)爭(zhēng)等待時(shí)間的目的是在資產(chǎn)轉(zhuǎn)移過(guò)程(也是數(shù)據(jù)重組過(guò)程)最后階段確定先前鎖定的數(shù)字貨幣(資產(chǎn))確實(shí)為要轉(zhuǎn)移的數(shù)字貨幣(資產(chǎn)),以此來(lái)防止雙重支付問題;如果在競(jìng)爭(zhēng)等待時(shí)間段內(nèi)某一時(shí)刻,系統(tǒng)發(fā)現(xiàn)了一個(gè)新的證明,該證明中包含了一個(gè)擁有更多工作量證明的鏈而該鏈中不包含創(chuàng)建先前已鎖定數(shù)字貨幣(資產(chǎn))的區(qū)塊,則上一次已進(jìn)行的處于競(jìng)爭(zhēng)時(shí)間內(nèi)的貨幣轉(zhuǎn)移過(guò)程將被追溯為非法,重新發(fā)起數(shù)字貨幣(資產(chǎn))轉(zhuǎn)移過(guò)程,鎖定有更多工作量證明的鏈上的數(shù)字貨幣(資產(chǎn)),這一過(guò)程可以稱之為數(shù)據(jù)的重組證明。
本發(fā)明方法能夠?qū)崿F(xiàn)區(qū)塊鏈系統(tǒng)多鏈場(chǎng)景下鏈間數(shù)字貨幣(資產(chǎn))有序定向的等效轉(zhuǎn)移,并能夠規(guī)避等效轉(zhuǎn)移過(guò)程中可能造成的雙重支付問題,有助于調(diào)和基于區(qū)塊鏈技術(shù)的數(shù)字貨幣或資產(chǎn)管理系統(tǒng)固然存在的可擴(kuò)展性和疏散程度間的沖突,并且數(shù)字貨幣或資產(chǎn)的等效轉(zhuǎn)移能夠使所有的交易過(guò)程更加明晰,可以提升相關(guān)系統(tǒng)交易數(shù)據(jù)的可審計(jì)性。
附圖說(shuō)明
圖1(a)為母鏈上數(shù)字貨幣(資產(chǎn))轉(zhuǎn)移前時(shí)的區(qū)塊鏈?zhǔn)疽鈭D。
圖1(b)為母鏈上數(shù)字貨幣(資產(chǎn))被鎖定時(shí)的區(qū)塊鏈?zhǔn)疽鈭D。
圖1(c)為數(shù)字貨幣(資產(chǎn))等效轉(zhuǎn)移至側(cè)鏈時(shí)的區(qū)塊鏈?zhǔn)疽鈭D。
圖1(d)為數(shù)字貨幣(資產(chǎn))轉(zhuǎn)移回母鏈時(shí)的區(qū)塊鏈?zhǔn)疽鈭D。
圖2為數(shù)字貨幣(資產(chǎn))鏈間轉(zhuǎn)移過(guò)程的時(shí)序圖。
圖3為數(shù)字貨幣(資產(chǎn))鏈間轉(zhuǎn)移的流程示意圖。
具體實(shí)施方式
為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實(shí)施方式對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
本發(fā)明多鏈場(chǎng)景下的區(qū)塊鏈鏈間資產(chǎn)轉(zhuǎn)移方法,包括如下步驟:
(1)構(gòu)建母鏈和側(cè)鏈間的掛鉤鎖定機(jī)制,確保數(shù)字貨幣(資產(chǎn))轉(zhuǎn)移的有向性。首先對(duì)相關(guān)對(duì)象進(jìn)行具體定義如下:
a.數(shù)字貨幣或財(cái)產(chǎn)是一種可以對(duì)其控制者進(jìn)行確定性加密的數(shù)字資產(chǎn)。
b.區(qū)塊是用于描述財(cái)產(chǎn)控制權(quán)變化的財(cái)產(chǎn)交易情況的集合。
c.區(qū)塊鏈?zhǔn)蔷哂辛己门帕兄刃虻谋姸鄥^(qū)塊的組合,在區(qū)塊鏈上的每一個(gè)用戶最終必須達(dá)成共識(shí),區(qū)塊鏈能夠給出數(shù)字資產(chǎn)控制權(quán)變更的歷史記錄并能提供一個(gè)不可偽造的交易時(shí)序。
d.重組行為只在用戶側(cè)發(fā)生,且僅在早先認(rèn)可的鏈被擁有更多工作量證明的競(jìng)爭(zhēng)鏈超過(guò)時(shí)發(fā)生。
e.母鏈?zhǔn)侵复D(zhuǎn)移數(shù)字貨幣(資產(chǎn))所在的區(qū)塊鏈;側(cè)鏈?zhǔn)且环N用于驗(yàn)證母鏈數(shù)據(jù)的區(qū)塊鏈。
f.數(shù)字貨幣(資產(chǎn))在鏈間的轉(zhuǎn)移過(guò)程也是區(qū)塊鏈數(shù)據(jù)的重組過(guò)程。
然后采用簡(jiǎn)化支付驗(yàn)證證明來(lái)實(shí)現(xiàn)掛鉤鎖定機(jī)制,簡(jiǎn)化支付驗(yàn)證證明是一種動(dòng)態(tài)成員多方簽名行為,其作用類似于發(fā)生在比特幣系統(tǒng)中區(qū)塊鏈的工作量證明。簡(jiǎn)化支付證明由以下兩部分組成:①反應(yīng)工作量證明的區(qū)塊頭列表;②一個(gè)關(guān)于列表中某一區(qū)塊建立貨幣(資產(chǎn))輸出的加密證明。簡(jiǎn)化支付驗(yàn)證證明在以下條件下將是無(wú)效的:有一個(gè)另外的證明表明存在一個(gè)工作量更多的鏈且鏈中不包含創(chuàng)建了先前輸出貨幣(資產(chǎn))的區(qū)塊。
(2)在母鏈將需要轉(zhuǎn)移的數(shù)字貨幣(資產(chǎn))鎖定,在側(cè)鏈生成等額度的數(shù)字貨幣(資產(chǎn)),通過(guò)母鏈與側(cè)鏈雙向掛鉤實(shí)現(xiàn)數(shù)字貨幣(資產(chǎn))在鏈間的等效轉(zhuǎn)移。
雙向掛鉤是指數(shù)字貨幣以固定或某一確定匯率在側(cè)鏈間進(jìn)行來(lái)回轉(zhuǎn)移的機(jī)制。這個(gè)“轉(zhuǎn)移”并非真的指數(shù)字貨幣(資產(chǎn))從區(qū)塊鏈母鏈消失然后在其它輔助區(qū)塊鏈(側(cè)鏈)上產(chǎn)生。實(shí)際上,數(shù)字貨幣(資產(chǎn))根本沒有離開母鏈,即數(shù)字貨幣(資產(chǎn))的物理地址沒有發(fā)生任何變化,只是在母鏈上被暫時(shí)鎖定,同時(shí),在側(cè)鏈上有等價(jià)的數(shù)字貨幣(資產(chǎn))被解鎖。當(dāng)側(cè)鏈上有等量等價(jià)的數(shù)字貨幣被再次鎖定時(shí),母鏈上原來(lái)的貨幣(資產(chǎn))就會(huì)被解鎖??偟目磥?lái),數(shù)字貨幣(資產(chǎn))就像在兩者之間轉(zhuǎn)移,實(shí)現(xiàn)了多鏈條間的雙向掛鉤。
另外,掛鉤側(cè)鏈的數(shù)字資產(chǎn)能夠從其他鏈導(dǎo)入和返還,支持?jǐn)?shù)字資產(chǎn)的雙向掛鉤。當(dāng)數(shù)字貨幣在母鏈被鎖定之后,該數(shù)字貨幣可在側(cè)鏈內(nèi)進(jìn)行任意轉(zhuǎn)移而不再與母鏈產(chǎn)生其它相互作用,但是其保留有母鏈幣的身份,能且僅能被轉(zhuǎn)移回原來(lái)的母鏈。數(shù)字貨幣(資產(chǎn))轉(zhuǎn)移的過(guò)程如圖1所示。
(3)確保母鏈數(shù)字貨幣(資產(chǎn))鎖定過(guò)程、側(cè)鏈生成等額度數(shù)字貨幣(資產(chǎn))過(guò)程以及交易過(guò)程三者依次進(jìn)行的先后時(shí)序關(guān)系,規(guī)避雙重支付問題。本發(fā)明在確認(rèn)貨幣(資產(chǎn))轉(zhuǎn)移成功之前添加了兩個(gè)等待時(shí)間:
確認(rèn)時(shí)間:是指貨幣在轉(zhuǎn)移至側(cè)鏈之前必須確保其已經(jīng)在母鏈上鎖定所需的時(shí)間。設(shè)立確認(rèn)時(shí)間的目的是確保眾多節(jié)點(diǎn)累積足夠的工作量使得系統(tǒng)在下一個(gè)等待時(shí)間中很難難以被“拒絕服務(wù)”攻擊。在母鏈上創(chuàng)建特殊的輸出標(biāo)記后,用戶度過(guò)確認(rèn)時(shí)間便可以在側(cè)鏈上創(chuàng)建一筆交易,繼而提供一個(gè)交易創(chuàng)建的簡(jiǎn)化支付驗(yàn)證證明并在母鏈中埋入足夠的工作量。
競(jìng)爭(zhēng)時(shí)間:限制新轉(zhuǎn)移到側(cè)鏈上的數(shù)字貨幣進(jìn)行交易的時(shí)間。設(shè)置這一時(shí)間的目的是在資產(chǎn)轉(zhuǎn)移過(guò)程(也是數(shù)據(jù)重組過(guò)程)最后階段確定先前鎖定的數(shù)字貨幣(資產(chǎn))確實(shí)為要轉(zhuǎn)移的數(shù)字貨幣(資產(chǎn)),以此來(lái)防止雙重支付問題。如果在競(jìng)爭(zhēng)時(shí)間段內(nèi)某一時(shí)刻,系統(tǒng)發(fā)現(xiàn)了一個(gè)新的證明,該證明中包含了一個(gè)擁有更多工作量證明的鏈而該鏈中不包含創(chuàng)建先前已鎖定數(shù)字貨幣(資產(chǎn))的區(qū)塊,則上一次已進(jìn)行的處于競(jìng)爭(zhēng)時(shí)間內(nèi)的貨幣轉(zhuǎn)移過(guò)程將被追溯為非法,重新發(fā)起數(shù)字貨幣(資產(chǎn))轉(zhuǎn)移過(guò)程,鎖定有更多工作量證明的鏈上的數(shù)字貨幣(資產(chǎn))。這一過(guò)程可以稱之為數(shù)據(jù)的重組證明。
圖2給出了數(shù)字貨幣(資產(chǎn))一次轉(zhuǎn)移過(guò)程的時(shí)序。以下我們假設(shè)一條側(cè)鏈利用五分之三(超過(guò)半數(shù),足夠的工作量證明)節(jié)點(diǎn)工作聯(lián)盟來(lái)實(shí)現(xiàn)一個(gè)虛擬數(shù)字貨幣的雙向掛鉤。本實(shí)例中計(jì)算數(shù)字貨幣等效轉(zhuǎn)移地址的算法如下:
n=random_128bit()
for i∈[1,n]do
t=HMAC-SHA256(key=Pi,n)
if t≥sec p256k1_order then
Go back to start.(重新開始)
end if
m=Pi+t
end for
address=P2SH_Multisig(template,m)
其中:random_128bit()為生成128位隨機(jī)數(shù)的函數(shù),HMAC-SHA256()為哈希函數(shù),secp256k1_order為橢圓加密算法(非對(duì)稱加密算法)所得密值,P2SH_Multisig()為跨鏈地址計(jì)算函數(shù),Pi為系統(tǒng)所有節(jié)點(diǎn)共享的第i個(gè)公鑰,m為轉(zhuǎn)移目標(biāo)鏈所持有的私鑰,template為貨幣贖回腳本。
當(dāng)公鑰Pi無(wú)法解密(無(wú)法得到大于橢圓加密算法密值的值),則更換公鑰重試,直至滿足條件m=Pi+t時(shí)停止,繼而根據(jù)目標(biāo)鏈所持私鑰和貨幣贖回腳本得到貨幣轉(zhuǎn)移的目標(biāo)區(qū)塊地址。
進(jìn)而,按照如圖3所示的流程可順利完成鏈間貨幣的轉(zhuǎn)移。
上述對(duì)實(shí)施例的描述是為便于本技術(shù)領(lǐng)域的普通技術(shù)人員能理解和應(yīng)用本發(fā)明。熟悉本領(lǐng)域技術(shù)的人員顯然可以容易地對(duì)上述實(shí)施例做出各種修改,并把在此說(shuō)明的一般原理應(yīng)用到其他實(shí)施例中而不必經(jīng)過(guò)創(chuàng)造性的勞動(dòng)。因此,本發(fā)明不限于上述實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的揭示,對(duì)于本發(fā)明做出的改進(jìn)和修改都應(yīng)該在本發(fā)明的保護(hù)范圍之內(nèi)。