本發(fā)明涉及針對金融體系的區(qū)塊鏈互聯(lián)網(wǎng)技術(shù)領域,特別是采用分布式的區(qū)塊鏈互聯(lián)網(wǎng)結(jié)構(gòu)。
背景技術(shù):
區(qū)塊鏈((blockchain,bc)是分布式數(shù)據(jù)庫系統(tǒng),也可理解為由多個節(jié)點共同維護的分布式賬簿技術(shù)(distributedledgertechnology,dlt),其特點是不易篡改、很難偽造、可追溯。區(qū)塊鏈互聯(lián)網(wǎng)(internetofblockchians)是一種基于區(qū)塊鏈搭建的價值網(wǎng)絡,須具有高性能,安全性,隱私性,可擴展性,互通性,可更改性,容錯性,可管理性及完備性。
現(xiàn)有的區(qū)塊鏈互聯(lián)網(wǎng),如宇宙網(wǎng)(cosmos),多為中心化的結(jié)構(gòu),其中間鏈是一個中心機構(gòu),于是中間鏈的計算及通訊鏈易成為區(qū)塊鏈互聯(lián)網(wǎng)的瓶頸。另外,其每一條鏈都需要維持自己的一致性,而中間鏈也需要動態(tài)維持與每一條參與鏈之間的一致性,進而一條跨鏈交易需要多條參與鏈與中間鏈共同維持,使得區(qū)塊鏈的運行速度減慢。
技術(shù)實現(xiàn)要素:
為了克服上述現(xiàn)有的應用于金融系統(tǒng)的鏈網(wǎng)(如cosmos等)效率較慢的問題,本發(fā)明提供了一種跨鏈交易的區(qū)塊鏈互聯(lián)網(wǎng)模型的核心算法,可以實現(xiàn)并行運算,提高系統(tǒng)的運行效率與交易速度,同時保證系統(tǒng)一致性。
本發(fā)明所采用的技術(shù)方案是一種跨鏈交易的區(qū)塊鏈互聯(lián)網(wǎng)模型的核心算法,其特征在于該模型如圖1所示,包含以下組成部分:
(1)參與鏈(participantblockchain,ppc),代表一個或多個金融機構(gòu)或金融單位,可包含由一至多個節(jié)點;
(2)中間鏈(inter-chainblockchain,icc),代表一個中間機構(gòu),其本身也是一個金融機構(gòu),也可以起到ccp(centralcounterparty,中央對手方)的作用,中間鏈與參與鏈有兩個至多個公共節(jié)點,中間鏈利用公共節(jié)點與參與鏈進行交易;
(3)每兩條參與鏈之間可連有一條或多條中間鏈,每條中間鏈可連接兩條至多條參與鏈,并由中間鏈完成兩條或多條參與鏈之間的交易,其包含兩種交易模式,以適用于不同的需求(即時完成交易,或非實時但高效交易):
(3a)實時交易(real-timetransaction):兩條至多條參與鏈可通過一條中間鏈進行實時交易,中間鏈即時的執(zhí)行每一條交易;
(3b)多邊凈額結(jié)算(multilateralnetting):每條中間鏈在每個結(jié)算周期結(jié)束時進行多邊凈額結(jié)算,一起處理多筆待定交易(tentativetransaction),起到ccp的作用,減少交易次數(shù),提高交易效率;
(4)若干多個金融機構(gòu)以參與鏈與中間鏈的形式構(gòu)成了一個分布式網(wǎng)絡,每條鏈維護自己的一致性,鏈與鏈之間的一致性不需要中央組織來管理,得以并行運行,提高交易效率與網(wǎng)絡運行速度;新的金融單位可隨時容易的加入或離開網(wǎng)絡,具有可擴展性,支持大規(guī)模網(wǎng)絡與高交易量。
優(yōu)選的,對于組成部分(1),該鏈網(wǎng)包含若干多參與鏈,每一條參與鏈代表一個或多個金融單位,可包含若干多節(jié)點,每一個節(jié)點儲存了該金融單位的全部信息;參與鏈的全部或部分節(jié)點具有投票權(quán)(全部節(jié)點及部分節(jié)點可參與投票這兩種情況均適用于本專利),各個節(jié)點之間采用并發(fā)拜占庭容錯協(xié)議(cbft,concurrentbyzantinefaulttolerance)、或?qū)嵱冒菡纪ト蒎e協(xié)議(pbft,practicalbyzantinefaulttolerance)、或其它拜占庭(byzantine)共識協(xié)議、或數(shù)據(jù)庫事物性一致性的算法(如使用數(shù)據(jù)庫事物性一致性的算法,則不能查證說謊的節(jié)點,以至于是一個弱化的一致性算法),來保證各個節(jié)點之間信息的一致性與難竄改性,保證了每條參與鏈自身的一致性。
優(yōu)選的,對于組成部分(2),該鏈網(wǎng)包含若干多中間鏈,每一條中間鏈代表一個中間機構(gòu),其本身也是一個金融機構(gòu),也可以起到ccp(centralcounterparty,中央對手方)的作用,中間鏈與參與鏈有兩個至多個公共節(jié)點,其示意圖見圖2與圖3。中間鏈包含多個節(jié)點,其全部或部分節(jié)點具有投票權(quán)(全部節(jié)點及部分節(jié)點可參與投票這兩種情況均適用于本專利)。各個節(jié)點之間采用拜占庭容錯協(xié)議(或弱化的數(shù)據(jù)庫事物協(xié)議)來保證各個節(jié)點之間信息的一致性與難竄改性。
優(yōu)選的,中間鏈利用公共節(jié)點與參與鏈進行交易。如果該中間鏈上的某一個節(jié)點為n條鏈的公共節(jié)點,如圖5及圖7所示,則該節(jié)點的存儲空間分為n+1個部分,分別為a1,a2,…,an,負責存儲第n條鏈的信息,以及一個c(connection,連接)部分,負責將信息從ai部分傳遞給aj部分(i,j=1,2,…,n),如圖4、圖6及圖8所示。下面均以兩條鏈的公共節(jié)點為例闡述該模型的核心算法,如圖4所示,每個公共節(jié)點的存儲空間分為l(left,左),r(right,右),c(connection,連接)三部分。l部分存儲該公共節(jié)點左側(cè)鏈的信息,r部分存儲該公共節(jié)點節(jié)點右側(cè)鏈的信息。l部分與r部分的內(nèi)容不可以直接進行溝通,需要通過c部分進行信息從l部分傳送到r部分,或者從r部分傳送至l部分的信息傳遞。
優(yōu)選的,對于組成部分(3),在該鏈網(wǎng)中,每兩條參與鏈之間可連有一條至多條中間鏈,每條中間鏈間可連接兩條至多條參與鏈,并由中間鏈完成兩條或多條參與鏈之間的交易,該鏈網(wǎng)可以實現(xiàn)兩種不同的交易模式,以滿足即時完成交易,及非實時但高效交易這兩種不同的需求:
(1)實時交易:兩條至多條參與鏈可通過一條中間鏈進行實時交易,中間鏈即時的執(zhí)行每一條交易,實現(xiàn)實時清結(jié)算;
(2)多邊凈額結(jié)算:每條中間鏈在每個結(jié)算周期(一小時或一天等)結(jié)束時進行多邊凈額結(jié)算,一起處理多筆待定交易(tentativetransaction),減少清結(jié)算的次數(shù),提高交易效率,因為一次清結(jié)算可以解決大批的交易,但是這種方法無法實現(xiàn)實時清結(jié)算。
優(yōu)選的,對于(1)實時交易,此種交易模式的核心過程如圖9與圖13所示。該交易模式包含以下過程(以下為步驟的高階層描述,詳細描述見《說明書》中《具體實施方式》中的算法描述與偽代碼),其流程如圖10與圖14所示。
(1)參與鏈1(ppc1)向中間鏈1(icc1)發(fā)起交易;
下面的過程(2)分為兩種模式:
模式(i),見圖9:
(2)中間鏈1(icc1)向參與鏈2(ppc2)發(fā)送交易請求;
若過程(1)的交易發(fā)起成功,過程(2)執(zhí)行完畢后,將該交易狀態(tài)標記為待定(tentative);
模式(ii),見圖13:
下面過程(2a)與過程(2b)同時執(zhí)行;
(2a)中間鏈1(icc1)向參與鏈1(ppc1)返回該交易請求成功與否的信息;
(2b)中間鏈1(icc1)向參與鏈2(ppc2)發(fā)送交易請求;
若過程(1)的交易發(fā)起成功,過程(2a)與過程(2b)執(zhí)行完畢后,將該交易狀態(tài)標記為待定(tentative);
上述模式(ii)中執(zhí)行完畢(2a)后,參與鏈1(ppc1)即可進行其它操作,實現(xiàn)無阻塞的運行。
(3)參與鏈2(ppc2)向中間鏈1(icc1)發(fā)送該交易請求是否成功被參與鏈2(ppc2)接受的消息,如果是,向中間鏈1(icc1)發(fā)送該參與鏈2(ppc2)能夠接受該交易的證明;
下面過程(4a)與過程(4b)同時執(zhí)行;
(4a)中間鏈1(icc1)向參與鏈1(ppc1)告知該交易滿足執(zhí)行條件,可以執(zhí)行;
(4b)中間鏈1(icc1)向參與鏈2(ppc2)告知該交易滿足執(zhí)行條件,可以執(zhí)行;
兩條參與鏈收到中間鏈1(icc1)的消息后,立即執(zhí)行該中間鏈1(icc1)與參與鏈1(ppc1)及該中間鏈1(icc1)與參與鏈2(ppc2)的待定交易,直至全部執(zhí)行成功為止,即完成交易(commit)。
優(yōu)選的,對于第(2)種交易模式,多邊凈額結(jié)算,此種交易模式的核心過程如圖11與圖15所示。該交易模式包含以下過程(以下為步驟的高階層描述,詳細描述見《說明書》中《具體實施方式》中的算法描述與偽代碼),其流程如圖12與圖16所示。
(1)參與鏈1(ppc1)向中間鏈1(icc1)發(fā)起交易;
下面的過程(2)分為兩種模式:
模式(i),見圖11:
(2)中間鏈1(icc1)向參與鏈2(ppc2)發(fā)送交易請求;
若過程(1)的交易發(fā)起成功,過程(2)執(zhí)行完畢后,將該交易狀態(tài)標記為預待定(pre-tentative);
模式(ii),見圖15:
下面過程(2a)與過程(2b)同時執(zhí)行;
(2a)中間鏈1(icc1)向參與鏈1(ppc1)返回該交易請求成功與否的信息;
(2b)中間鏈1(icc1)向參與鏈2(ppc2)發(fā)送交易請求;
若過程(1)的交易發(fā)起成功,過程(2a)與過程(2b)執(zhí)行完畢后,將該交易狀態(tài)標記為預待定(pre-tentative);
上述模式(ii)中執(zhí)行完畢(2a)后,參與鏈1(ppc1)即可進行其它操作,實現(xiàn)無阻塞的運行。
(3)參與鏈2(ppc2)向中間鏈1(icc1)發(fā)送該交易請求是否成功被參與鏈2(ppc2)接受的消息,如果是,向中間鏈1(icc1)發(fā)送該參與鏈2(ppc2)能夠接受該交易的證明;
若該請求被成功接受,將該交易狀態(tài)標記為待定(tentative);
下面過程(4a)與過程(4b)同時執(zhí)行;
(4a)中間鏈1(icc1)向參與鏈1(ppc1)告知該交易滿足執(zhí)行條件,可以執(zhí)行;
(4b)中間鏈1(icc1)向參與鏈2(ppc2)告知該交易滿足執(zhí)行條件,可以執(zhí)行;
該交易等待該結(jié)算周期結(jié)束時,執(zhí)行過程(5);
(5)此時該結(jié)算周期結(jié)束,停止所有的即將開始或正在初始化的交易及待定交易,完成正在執(zhí)行的交易,并由中間鏈1(icc1)對所有該結(jié)算周期之內(nèi)的被標記為待定(tentative)的交易進行多邊凈額結(jié)算,進入完成交易(commit)階段。
優(yōu)選的,當一條鏈向另一條鏈傳遞信息時,其傳遞模式為散裝傳遞,如圖17及圖18所示,一條鏈的每一個節(jié)點分別向另一條鏈的每一個節(jié)點傳遞信息,以防止某個或某幾個節(jié)點作弊而影響整個傳輸過程的正確性。當參與鏈1(ppc1)向中間鏈1(icc1)發(fā)送請求時,若參與鏈1(ppc1)共有m個節(jié)點,分別為p1,p2,…,pm,tbc1共有n個節(jié)點,分別為t1,t2,…,tn,則由pi(i=1,2,…,n)分別向t1,t2,…,tn發(fā)送請求,所有節(jié)點總共發(fā)送m*n次請求。例如,如圖17所示,當參與鏈1(ppc1)向中間鏈1(icc1)發(fā)送請求時,節(jié)點1與節(jié)點2分別向中間鏈1(icc1)的每一個節(jié)點發(fā)送請求信息;又例如,當參與鏈2(ppc2)向中間鏈1(icc1)發(fā)送請求時,節(jié)點3與節(jié)點4分別向中間鏈1(icc1)的每一個節(jié)點發(fā)送請求信息。
優(yōu)選的,以下為對兩條參與鏈,參與鏈1(ppc1)與參與鏈2(ppc2)通過中間鏈進行交易,對于過程(1)至(4)的每一個步驟的簡要描述,詳細描述見《說明書》中《具體實施方式》中的算法描述與偽代碼。
(1)參與鏈1(ppc1)向中間鏈1(icc1)發(fā)起交易:
(1.1)參與鏈1(ppc1)(金融機構(gòu))發(fā)起交易:參與鏈經(jīng)過內(nèi)部的投票(cbft或pbft等拜占庭容錯共識協(xié)議或數(shù)據(jù)庫事物協(xié)議)決定是否發(fā)起交易,若是,參與鏈1(ppc1)對該交易信息進行加密認證(使用數(shù)字簽名等),參與鏈1(ppc1)通過共識,其與中間鏈1(icc1)的公共節(jié)點(在例圖9中為節(jié)點1與節(jié)點2)的l部分獲得了該參與鏈1(ppc1)的全部信息。隨后,l部分通過c部分將與本次交易有關(guān)的內(nèi)容以及參與鏈1(ppc1)的所有節(jié)點的數(shù)字簽名等供驗證的信息傳給r部分。r部分再將這些進行了加密認證的交易信息廣播(broadcast)給中間鏈1(icc1)的每一個節(jié)點,如圖17所示;若否,向參與鏈1(ppc1)返回錯誤信息,并將該過程標記為失敗(failure);
(1.2)中間鏈1(icc1)驗證信息:中間鏈(icc1)收到這些交易信息后,對交易信息進行驗證(使用數(shù)字簽名等),若驗證成功,則各個節(jié)點對該交易進行投票與建塊,并將該交易為待定(pending)狀態(tài);若驗證失敗,則返回錯誤信息,并將前面步驟均標記為失敗(failure)。
下面的過程(2)分為兩種模式:
模式(i):
(2)中間鏈1(icc1)向參與鏈2(ppc2)發(fā)送交易請求:
(2.1)中間鏈(icc1)傳遞交易:中間鏈(icc1)經(jīng)過內(nèi)部的投票(cbft或pbft等拜占庭容錯共識協(xié)議或數(shù)據(jù)庫事物協(xié)議)決定是否向參與鏈2(ppc2)傳遞交易,若是,則中間鏈(icc1)對該交易進行加密認證(使用數(shù)字簽名等),中間鏈1(icc1)通過共識,其與參與鏈2(ppc2)的公共節(jié)點(在例圖9中為節(jié)點3與節(jié)點4)的l部分獲得了該中間鏈1(icc1)的全部信息。隨后,l部分通過c部分將與本次交易有關(guān)的內(nèi)容以及中間鏈1(icc1)的所有節(jié)點的數(shù)字簽名等供驗證的信息傳給r部分。r部分再將這些進行了加密認證的交易信息廣播(broadcast)參與鏈2(icc2)的每一個節(jié)點,如圖18所示;若否,則返回錯誤信息,并將前面步驟均標記為失敗(failure);
(2.2)參與鏈2(ppc2)驗證信息:參與鏈2(ppc2)對收到的該請求的交易進行驗證(使用數(shù)字簽名等),若驗證通過,則參與鏈2(ppc2)則進行內(nèi)部投票決定是否接受該交易;若驗證失敗,則返回失敗信息,并將前面步驟均標記為失敗(failure)。
模式(ii):
(2a)中間鏈1(icc1)向參與鏈1(ppc1)返回待定交易成功與否的信息:
當該參與鏈1(ppc1)收到了該中間鏈1(icc1)的驗證成功及該交易被標記為待定(pending)的信息,該參與鏈無需繼續(xù)等待,可去進行其他交易。
(2b)該過程同模式(i)的過程(2)。
(3)參與鏈2(ppc2)向中間鏈1(icc1)發(fā)送該交易請求是否成功被參與鏈2(ppc2)接受的消息,如果是,向中間鏈1(icc1)發(fā)送該參與鏈2(ppc2)能夠接受該交易的證明:
(3.1)若參與鏈2(ppc2)投票成功,同意接受該交易,則向中間鏈1(icc1)返回成功信息,并進行(3.2);否則,則向中間鏈1(icc1)返回失敗信息,并將前面步驟均標記為失敗(failure);
(3.2)參與鏈2(ppc2)向中間鏈1(icc1)發(fā)送該參與鏈2(ppc2)能夠接受該交易的證明,例如參與鏈2(ppc2)有足量相關(guān)資源以完成此交易,并中間鏈1(icc1)與參與鏈2(ppc2)的交易設為待定(pending)狀態(tài)。
(4)中間鏈驗證參與鏈2(ppc2)返回的信息,并決定該交易是否滿足執(zhí)行條件,若是,則進行(4a)與(4b);若否,則進行投票決定是否取消待定交易,并將前面步驟均標記為失敗(failure)。
(4a)中間鏈1(icc1)向參與鏈1(ppc1)告知該交易滿足執(zhí)行條件,可以執(zhí)行;
(4b)中間鏈1(icc1)向參與鏈2(ppc2)告知該交易滿足執(zhí)行條件,可以執(zhí)行。
為了改進現(xiàn)有的針對金融系統(tǒng)設計的鏈網(wǎng)結(jié)果無法并行操作、效率慢的問題,目前設計的分布式的新型鏈網(wǎng)結(jié)構(gòu)模型,具有如下優(yōu)點:
(1)支持并行操作:該模型由于是一個完全分布式的架構(gòu),所有的鏈在這個模型上都可以并行運行,提高整個金融系統(tǒng)的運行速度:由于不同的參與鏈可以與不同的中間鏈進行交易,而由不同的參與鏈處理的交易可以同時進行,無需每筆交易都通過一個總的中央機構(gòu),各個中間機構(gòu)的交易量和負載量都大大減輕,并可以進行并行操作,進而提高了交易的效率,增快了交易的速度。
(2)多邊凈額結(jié)算:兩個或多條參與鏈通過一條中間鏈進行交易時,中間鏈對多個交易進行相互沖抵軋差,減少了結(jié)算的處理量,也減輕了大型交易的難度,提高了交易的速度,提升了市場效率。
(3)可擴展性:任意數(shù)量的金融機構(gòu)與中間機構(gòu)可以隨時容易的加入該鏈網(wǎng)結(jié)構(gòu),并通過tbc將即將加入的新的金融單位與已有的中間機構(gòu)連接起來,這使得該鏈網(wǎng)可以擴張并適應大型網(wǎng)絡及高交易量。
(4)支持監(jiān)管:難以篡改的賬本記錄,記錄了真實的交易過程,方便政府部門監(jiān)管查賬。
(5)保證了鏈網(wǎng)的基本原則,包括:(a)高性能,完全分布式結(jié)構(gòu)支持每個中間機構(gòu)并行運行,提高網(wǎng)絡的交易效率;(b)數(shù)據(jù)可靠性(難以篡改性、安全性),各個節(jié)點采用拜占庭容錯協(xié)議來保證各個節(jié)點的一致性和難以篡改性;(c)保護隱私,各個鏈內(nèi)部的信息無法被外部獲?。?f)可擴展性,任何金融機構(gòu)可以隨時容易的加入該鏈網(wǎng),并由于并行運算,增加新的金融機構(gòu)不會造成通訊阻塞;(e)完備性,每條鏈都可以追蹤其完備性,一旦一個節(jié)點作弊,其完備性將降低,并可以被追蹤和查看。
根據(jù)下文結(jié)合附圖對本發(fā)明的具體實施方案的詳細描述,本領域技術(shù)人員將會更加明了本發(fā)明的上述以及其它目的、優(yōu)化和特征。
附圖說明
后文將參照附圖以示例性而非限制性的方式詳細描述本發(fā)明的一些具體實施例。附圖中相同的附圖標記標示了相同或類似的部件或部分。本領域技術(shù)人員應該理解,這些附圖未必是按比例繪制的。本發(fā)明的目標及特征考慮到如下結(jié)合附圖的描述將更加明顯。附圖中:
圖1是根據(jù)本發(fā)明優(yōu)先實施例的一種跨鏈交易的區(qū)塊鏈互聯(lián)網(wǎng)模型(金絲猴模型)的整體示意圖;
圖2是根據(jù)本發(fā)明優(yōu)先實施例的中間鏈(icc)與參與鏈(ppc)可能有兩個公共節(jié)點的示意圖;
圖3是根據(jù)本發(fā)明優(yōu)先實施例的中間鏈(icc)與參與鏈(ppc)可能有三個公共節(jié)點的示意圖;
圖4是根據(jù)本發(fā)明優(yōu)先實施例的鏈接兩個鏈的公共節(jié)點的結(jié)構(gòu)示意圖;
圖5是根據(jù)本發(fā)明優(yōu)先實施例的一個中間鏈(icc)通過公共節(jié)點鏈接三個參與鏈(ppc)的示意圖;
圖6是根據(jù)本發(fā)明優(yōu)先實施例的鏈接三個鏈的公共節(jié)點的結(jié)構(gòu)示意圖;
圖7是根據(jù)本發(fā)明優(yōu)先實施例的一個中間鏈(icc)通過公共節(jié)點鏈接四個參與鏈(ppc)的示意圖;
圖8是根據(jù)本發(fā)明優(yōu)先實施例的鏈接四個鏈的公共節(jié)點的結(jié)構(gòu)示意圖;
圖9是根據(jù)本發(fā)明優(yōu)先實施例的模式(i)的實時交易過程的示意圖(ppc為參與鏈,icc為中間鏈);
圖10是根據(jù)本發(fā)明優(yōu)先實施例的模式(i)實時交易各個過程的流程圖;
圖11是根據(jù)本發(fā)明優(yōu)先實施例的模式(i)的采用多方凈額結(jié)算的交易過程的示意圖(ppc為參與鏈,icc為中間鏈);
圖12是根據(jù)本發(fā)明優(yōu)先實施例的模式(i)的采用多方凈額結(jié)算的交易過程的流程圖;
圖13是根據(jù)本發(fā)明優(yōu)先實施例的模式(ii)的實時交易過程的示意圖(ppc為參與鏈,icc為中間鏈);
圖14是根據(jù)本發(fā)明優(yōu)先實施例的模式(ii)實時交易各個過程的流程圖;
圖15是根據(jù)本發(fā)明優(yōu)先實施例的模式(ii)的采用多方凈額結(jié)算的交易過程的示意圖(ppc為參與鏈,icc為中間鏈);
圖16是根據(jù)本發(fā)明優(yōu)先實施例的模式(ii)的采用多方凈額結(jié)算的交易過程的流程圖;
圖17是根據(jù)本發(fā)明優(yōu)先實施例的過程1中公共節(jié)點向中間鏈(icc)發(fā)送信息的示意圖(ppc為參與鏈);
圖18是根據(jù)本發(fā)明優(yōu)先實施例的模式(i)的過程2(或模式(ii)的過程2b)中公共節(jié)點向發(fā)送參與鏈2(ppc2)發(fā)送信息的示意圖(ppc為參與鏈,icc為中間鏈)。
具體實施方式
為了更好的理解本發(fā)明實施例提供的技術(shù)方案,也更好的與本發(fā)明實施例的技術(shù)方案進行對比,下面首先通過算法和偽代碼結(jié)合附圖對本發(fā)明進一步說明。
該種無需等待的跨鏈交易的區(qū)塊鏈互聯(lián)網(wǎng)模型(金絲猴模型)的具體實施方式主要包括以下三部分:
(1)整個網(wǎng)絡從零開始搭建;
(2)交易:一條參與鏈通過一條中間鏈與另一條參與鏈進行交易;
(3)新鏈加入網(wǎng)絡。
對于(1)整個網(wǎng)絡從零開始搭建,其輸入包括若干多條中間鏈(inter-chainblockchain,偽代碼中由icc表示),若干多條參與鏈(participantblockchain,偽代碼中由ppc表示),以及各條參與鏈與中間鏈之間是否應相連的關(guān)系,具體過程如下。
(1)對于所以將要加入該網(wǎng)絡的鏈,將所有的參與鏈放入一條參與鏈集合,將所有的中間鏈放入一條中間鏈集合;
(2)對于中間鏈集合中的每一條中間鏈,以及參與鏈集合中的每兩條參與鏈,利用已知的該網(wǎng)絡的即將達成的鏈與鏈間的關(guān)系,判斷:如果該中間鏈將要與此兩條參與鏈連接,則該中間鏈與此兩條參與鏈分別建立連接;否則,繼續(xù)考慮其它鏈。
該過程的主要算法以偽代碼的形式展示如下,記為算法0,建立網(wǎng)絡。
以下偽代碼中的“consensusprotocol”(共識協(xié)議)表示“cbftorpbftorotherbyzantineconsensusprotocolordatabaseconsistency”。
對于(2)交易:一條參與鏈通過一條中間鏈與另一條參與鏈進行交易,示意圖可見圖2。其輸入包括中間鏈1(icc1)、參與鏈1(ppc1)與參與鏈2(ppc2)。參與鏈1(ppc1)負責發(fā)起交易,并由中間鏈1進行交易,由參與鏈2(ppc2)負責接收該交易。例如,參與鏈1(ppc1)向參與鏈2(ppc2)進行美元兌換黃金的交易,參與鏈1(ppc1)發(fā)起提供美元并換取黃金的交易,提供特定數(shù)目的金額,由中間鏈1執(zhí)行交易過程,由參與鏈2(ppc2)負責接收這筆美元并提供黃金。
對于每一次交易,包含了實時交易與多邊凈額結(jié)算兩種情況,其具體交易過程如下。
(1)參與鏈1(ppc1)通過對其內(nèi)部的各個節(jié)點進行投票(使用cbft、或pbft、或其它的拜占庭共識協(xié)議、或數(shù)據(jù)庫事物協(xié)議)來決定是否發(fā)起此交易,如果投票成功,則進入第(2)步;如果投票失敗,則返回錯誤信息;
(2)調(diào)用算法2,參與鏈1(ppc1)向中間鏈1(icc1)發(fā)送交易請求(利用參與鏈1(ppc1)與中間鏈1(icc1)的公共節(jié)點),即為過程(1);
(3)調(diào)用算法3,由中間鏈1(icc1)對該交易請求進行驗證(利用電子簽名等),如果驗證成功,則進入第(4)部;如果驗證失敗,則向參與鏈1(ppc1)返回錯誤信息;
(4)中間鏈1對其內(nèi)部各個節(jié)點進行投票(使用cbft、或pbft、或其它的拜占庭共識協(xié)議、或數(shù)據(jù)庫事物協(xié)議)來決定是否可以執(zhí)行該交易,如果投票成功,則進入第(5)步;如果投票失敗,則向參與鏈1(ppc1)返回投票失敗的信息,并將之前所有的步驟標記為“失敗”;
(5)將參與鏈1(ppc1)與中間鏈1(icc1)之間的交易狀態(tài)設為“待定”(pending);
(6)如果需要實時交易,則將該交易狀態(tài)標記為“待定”(tentative);如果需要多邊凈額結(jié)算,則將該交易狀態(tài)標記為“預待定”(pre-tentative);
(7)若為模式(i),則調(diào)用算法4,中心鏈1(icc1)開始準備發(fā)起向參與鏈2(ppc2)的交易請求,即為過程(2);如果過程(2)返回中心鏈1(icc1)對參與鏈2(ppc2)的交易請求成功,則進入第(8)步,否則,將之前所有的步驟標記為“失敗”,并調(diào)用算法7,由中間鏈1(icc1)與參與鏈1(ppc1)及參與鏈2(ppc2)進行共識,決定是否取消中間鏈1(icc1)與參與鏈1(ppc1)的待定交易,并返回錯誤信息;若為模式(ii),則調(diào)用算法2,中間鏈1(icc1)告知參與鏈1(ppc1)目前的交易狀態(tài),即為過程(2a),并同時進行模式(i)中的過程2;
(8)調(diào)用算法2,參與鏈2(ppc2)向中間鏈1(icc1)告知當前參與鏈2(ppc2)是否同意該交易,如果同意則向中間鏈1(icc1)發(fā)送參與鏈2(ppc2)證明能夠進行該交易的信息,以供中間鏈1(icc1)驗證,即為過程(3);
(9)中間鏈1(icc1)對該信息進行驗證,如果驗證通過,則進入第(10)步,否則將之前所有步驟標記為“失敗”,并調(diào)用算法7,由中間鏈1(icc1)與參與鏈1(ppc1)及參與鏈2(ppc2)進行共識,決定是否取消中間鏈1(icc1)與參與鏈1(ppc1)的待定交易,并返回錯誤信息;
(10)將中間鏈1(icc1)與參與鏈2(ppc2)之間的交易狀態(tài)標記為待定(pending),并調(diào)用算法2,由中間鏈1(icc1)向參與鏈1(ppc1)即參與鏈2(ppc2)告知該交易滿足交易條件,可以執(zhí)行,即為過程(4a)和過程(4b);
(11)若在一定時間(time1)內(nèi),參與鏈1(ppc1)未能收到交易可以執(zhí)行的通知,則中間鏈(icc1)與參與鏈1(ppc1)及參與鏈2(ppc2)進行共識,決定是否取消該交易,如果是,則進入第(12)步,否則進入第(13)步;
(12)將之前所有的步驟標記為“失敗”,并取消中間鏈(icc1)與參與鏈1(ppc1)的待定交易,及取消中間鏈(icc1)與參與鏈2(ppc2)的待定交易,隨后中間鏈1(icc1)再次與參與鏈1(ppc1)及參與鏈2(ppc2)進行共識,并返回失敗信息;
(13)如果需要實時交易,則調(diào)用算法5來執(zhí)行實時交易;如果需要多邊凈額結(jié)算,則將該交易狀態(tài)標記為“待定”(tentative),并調(diào)用算法6來進行多邊凈額結(jié)算(在算法6中,需首先等待至該結(jié)算周期結(jié)束)。
對于算法1中所調(diào)用的算法2,從一條鏈傳遞信息至另一條鏈,其輸入包括一條發(fā)送信息的鏈與一條接受信息的鏈。其具體過程如下。
(1)將此兩條鏈的公共節(jié)點放入一個集合中;
(2)對于該集合中的每一個節(jié)點,該節(jié)點向接受信息的鏈發(fā)送所需要信息。
該過程的主要算法以偽代碼的形式展示如下,記為算法2,從一條鏈傳遞信息至另一條鏈。
對于算法1中所調(diào)用的算法3,用數(shù)字簽名驗證交易信息,其輸入包括請求者、驗證者與請求的交易。其具體過程如下。
(1)驗證者使用數(shù)字簽名對請求者進行驗證,如果驗證成功,則進入第(2)步;如果驗證失敗,則返回向請求者返回驗證失敗的信息;
(2)驗證者檢查請求者是否具有相關(guān)的資源以進行其請求的交易,如果有,則進入第(3)步;否則,向請求者返回沒有相關(guān)資源的失敗信息;
(3)驗證者檢查請求者是否有足夠量的資源或余額已完成該請求的交易,如果有,則返回驗證成功的信息;否則,向請求者返回資源不足的失敗信息。
該過程的主要算法以偽代碼的形式展示如下,記為算法3,用數(shù)字簽名驗證交易信息。
對于算法1中所調(diào)用的算法4:中心鏈1(icc1)開始準備向參與鏈2(ppc2)發(fā)起交易請求,其輸入包括中間鏈1(icc1)和參與鏈2(ppc2)。其具體過程如下。
(1)中間鏈1對其各個節(jié)點進行投票(使用cbft、或pbft、或其它的拜占庭共識協(xié)議、或數(shù)據(jù)庫事物協(xié)議),來決定是否執(zhí)行其與參與鏈2(ppc2)的交易,如果投票成功,則進入第(2)步;如果投票失敗,則返回失敗信息;
(2)調(diào)用算法2,中間鏈1(icc1)向參與鏈2(ppc2)發(fā)送交易請求,即為過程(2b);
(3)調(diào)用算法3,由參與鏈2(ppc2)對該交易請求進行驗證(利用電子簽名等),如果驗證成功,則進入第(4)步;如果驗證失敗,則返回錯誤信息,并將之前所有的步驟標記為“失敗”;
(4)參與鏈2(ppc2)對其內(nèi)部各個節(jié)點進行投票(使用cbft、或pbft、或其它的拜占庭共識協(xié)議、或數(shù)據(jù)庫事物協(xié)議)來決定是否接受該交易,如果投票成功,則返回成功信息;如果投票失敗,則返回投票失敗的信息,并將之前所有的步驟標記為“失敗”。
該過程的主要算法以偽代碼的形式展示如下,記為算法4,中心鏈1開始向參與鏈2發(fā)起的交易請求。
對于算法1中所調(diào)用的算法5,中間鏈執(zhí)行實時交易,當參與鏈1(ppc1)與參與鏈2(ppc2)收到中間鏈發(fā)送的確認該交易可以發(fā)生的信息后,即完成過程(4a)與(4b)后,中間鏈與參與鏈1(ppc1)以及中間鏈與參與鏈2(ppc2)的被標記為待定(pending)的交易在該過程中立即執(zhí)行,達到完成交易(commit)。其具體過程如下。
(1)執(zhí)行中間鏈與參與鏈1(ppc1)以及中間鏈與參與鏈2(ppc2)的被標記為待定(pending)的交易,直到該參與鏈1(ppc1)對參與鏈2(ppc2)的交易成功完成。
(2)調(diào)用算法2,中間鏈告知參與鏈1(ppc1)與參與鏈2(ppc2)交易完成。
該過程的主要算法以偽代碼的形式展示如下,記為算法5,中間鏈執(zhí)行實時交易。
對于算法1中所調(diào)用的算法6,中間鏈進行多邊凈額結(jié)算,當中間鏈完成一定時間量(一個結(jié)算周期:一小時、一天、或一周等)的交易記賬(各條參與鏈在該時間量內(nèi)的的交易記于該中間鏈中),中間鏈進行多邊凈額結(jié)算。其具體過程如下。
當一個結(jié)算周期結(jié)束,則中間鏈進行下面的操作;
(1)停止初始化或開始任何新的交易,并完成所有正在進行的交易或待定(tentative)交易;
(2)中間鏈找出所有在前一個結(jié)算周期中與該中間鏈進行試圖交易的參與鏈,并將這些參與鏈放入一個集合中;
(3)中間鏈找出所有在前一個結(jié)算周期中的交易記錄;
(4)對于每一條參與鏈,中間鏈對其在上一個結(jié)算周期中的所有交易的應付與應收資金或資源進行沖抵軋差,并根據(jù)軋差所得的凈值向該參與鏈進行交收。
(5)核實該多方凈值結(jié)算結(jié)果是否正確:判斷在進行沖抵軋差之后,該結(jié)算周期內(nèi)通過該中間鏈進行交易的所有的參與鏈的交易進出的總和是否為0,如為0,則認為正確,如果不為0,則錯誤;
(6)如果正確,則中間鏈根據(jù)結(jié)算結(jié)果向各條參與鏈執(zhí)行最終交易;若不正確,則重新進行多方凈值結(jié)算或進行人工核查。
該過程的主要算法以偽代碼的形式展示如下,記為算法6,中間鏈進行多邊凈額結(jié)算。
對于算法1中所調(diào)用的算法7,取消中間鏈(icc)與參與鏈1(ppc1)之間的待定交易,每次進行取消操作之前都需要由中間鏈與所有參與到本次交易的參與鏈進行共識,來決定是否取消該待定交易。如果取消了該待定交易,中間鏈需要再一次進行共識來告知所有參與到本次交易的參與鏈。其具體過程如下。
(1)中間鏈(icc)與參與鏈1(ppc1)及參與鏈2(ppc2)進行共識,以決定是否取消參與鏈1(ppc1)與中間鏈(icc)之間的待定(pending)交易;
(2)如果是,則將該待定交易取消,并且中間鏈(icc)與參與鏈1(ppc1)及參與鏈2(ppc2)進行共識,以告知該待定交易已被取消。
該過程的主要算法以偽代碼的形式展示如下,記為算法7,取消中間鏈與參與鏈1(ppc1)之間的待定交易。
對于(3)新鏈加入網(wǎng)絡,分為兩種情況:(a)新的參與鏈加入網(wǎng)絡;(b)新的中間鏈加入網(wǎng)絡。下面對兩種情況分別進行討論。
對于情況(a),新的參與鏈加入網(wǎng)絡,其輸入為將要加入該網(wǎng)絡的新的參與鏈,以及該網(wǎng)絡(包括該網(wǎng)絡中的其它參與鏈與中間鏈)。當一個新的參與鏈將要加入網(wǎng)絡,該參與鏈自己可能產(chǎn)生一個或多條中間鏈,并且這些新產(chǎn)生的中間鏈與在該網(wǎng)絡中已經(jīng)存在的其它參與鏈項鏈,同時,該參與鏈也可能與其它在該網(wǎng)絡中已經(jīng)存在的中間鏈相連;該參與鏈也可能并不自己產(chǎn)生中間鏈,那么該參與鏈必須鏈接一個或多個已經(jīng)存在的中間鏈。其具體的過程如下。
(1)在該參與鏈需要自己產(chǎn)生新的中間鏈的情況下,執(zhí)行以下過程,直到該參與鏈不再需要自己產(chǎn)生新的中間鏈為止:
(a)該參與鏈產(chǎn)生一個新的中間鏈;
(b)通過調(diào)用算法10,此中間鏈與該參與鏈相連;
(c)找出所有其他的需要與此中間鏈相連的已經(jīng)存在的參加鏈(每一條中間鏈需要連接兩個及以上參與鏈),并放入一個其它參與鏈集合中;
(d)對于所得的其它參與鏈集合中的每一條參與鏈,通過調(diào)用算法10,將這條參與鏈與此中間鏈相連;
隨后,執(zhí)行:
(2)判斷該參與鏈是否需要與該網(wǎng)絡中已經(jīng)存在的中間鏈相連,如果是,則進入第(3)步;
(3)找出所有需要該參與鏈需要與之進行交易的其他參與鏈,并找出所有與這些參與鏈相連的中間鏈;
(4)在保證所有在上一步中被找出的參與鏈都被包括的情況下,從上一部找出的所有中間鏈中找出一條中間鏈子集,這是由于每一條參與鏈可以與多條中間鏈相連,所以可以找出一條中間鏈自己來保證所有的需要的參與鏈都與這些中間鏈相連;
(5)對于中間鏈子集中的每一條中間鏈,通過調(diào)用算法10來將該參與鏈與這條中間鏈相連。
該過程的主要算法以偽代碼的形式展示如下,記為算法8,新的參與鏈加入網(wǎng)絡。
對于情況(b),新的中間鏈加入網(wǎng)絡,其輸入為將要加入該網(wǎng)絡的新的中間鏈,以及該網(wǎng)絡(包括該網(wǎng)絡中的其它參與鏈與中間鏈)。其具體的過程如下。
(1)找到需要與該即將加入的新中間鏈相連的所有的網(wǎng)絡中已經(jīng)存在的參與鏈;
(2)如果沒有或只有一條參與鏈將要與該中間鏈相連,則向該中間鏈返回錯誤信息,這是因為每條中間鏈需要與兩條及以上條參與鏈相連;如果有兩條或以上條參與鏈將要與該中間鏈相連,則進入第(3)步;
(3)將這些將要與該中間鏈相連的參與鏈放入一個集合中,通過調(diào)用算法10,將該集合中的每一條參與鏈與該中間鏈相連。
該過程的主要算法以偽代碼的形式展示如下,記為算法9,新的中間鏈加入網(wǎng)絡。
對于算法8與算法9中所調(diào)用的算法10:一條參與鏈與一條中間鏈相連接,其輸入包括一條參與鏈和一條中間鏈。其具體過程如下。
(1)該參與鏈通過對其內(nèi)部的各個節(jié)點進行投票(使用cbft、或pbft、或其它的拜占庭共識協(xié)議、或數(shù)據(jù)庫事物協(xié)議)來決定是否與該中間鏈相連,如果投票成功,則進入第(2)步;如果投票失敗,則返回錯誤信息;
(2)該參與鏈向該中間鏈發(fā)送驗證信息(如數(shù)字簽名等);
(3)該中間鏈驗證收到的該驗證信息(利用數(shù)字簽名等),如果驗證成功,則進入第(4)步,否則,返回錯誤信息;
(4)該中間鏈通過對其內(nèi)部的各個節(jié)點進行投票(使用cbft、或pbft、或其它的拜占庭共識協(xié)議、或數(shù)據(jù)庫事物協(xié)議)來決定是否與該參與鏈相連,如果同意,則進入第(5)步,否則,返回錯誤信息;
(5)決定所需要的公共節(jié)點的數(shù)量,并從該參與鏈與該中間鏈的所有節(jié)點中選出這些數(shù)量的公共節(jié)點;
(6)在選出的這些節(jié)點中,將屬于中間鏈的放入一個中間鏈公共節(jié)點集合中,將屬于參與鏈的放入另一個參與鏈公共節(jié)點集合中;
(7)對于中間鏈公共節(jié)點集合中的每一個節(jié)點,將該節(jié)點與參與鏈的每一個節(jié)點相連;對于參與鏈公共節(jié)點集合中的每一個節(jié)點,將該節(jié)點與中間鏈的每一個節(jié)點相連。
該過程的主要算法以偽代碼的形式展示如下,記為算法10,一條參與鏈與一條中間鏈相連接。
雖然本發(fā)明已經(jīng)參考特定的說明性實施例進行了描述,但是不會受到這些實施例的限定而僅僅受到附加權(quán)利要求的限定。本領域技術(shù)人員應當理解可以在不偏離本發(fā)明的保護范圍和精神的情況下對本發(fā)明的實施例能夠進行改動和修改。