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