本發(fā)明實施例屬于區(qū)塊鏈技術(shù)領(lǐng)域,尤其涉及一種有向無環(huán)圖型區(qū)塊鏈的生成方法及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)的不斷發(fā)展,區(qū)塊鏈技術(shù)應運而生,它是一種互聯(lián)網(wǎng)數(shù)據(jù)庫技術(shù),具有去中心化、公開透明的特點。具體地,區(qū)塊鏈技術(shù)的本質(zhì)是去中心化且寓于分布式結(jié)構(gòu)的數(shù)據(jù)存儲、傳輸和證明的方法,用數(shù)據(jù)區(qū)塊取代目前互聯(lián)網(wǎng)對中心服務器的依賴,使得所有數(shù)據(jù)的變更或者交易項目都被記錄在一個云系統(tǒng)之上。由于沒有中央控制點的分布式對等網(wǎng)絡(luò),并且使用分布式集體運作的方法,可以說,區(qū)塊鏈是網(wǎng)絡(luò)上的“公開大賬本”。它存在許多節(jié)點,每個節(jié)點都可以觀察到整個賬本,并且共同參與維護,其收益則是獲得記賬的權(quán)利,并且可以復制一份完整的數(shù)據(jù)庫,單個節(jié)點無法修改數(shù)據(jù)庫,從而保證了賬本數(shù)據(jù)的安全可靠。
當下,采用區(qū)塊鏈技術(shù)進行數(shù)據(jù)的組織和管理已經(jīng)被廣泛的應用到了各種商業(yè)領(lǐng)域。
發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)存在如下缺陷:
由于各商業(yè)領(lǐng)域所要組織和管理的數(shù)據(jù)的多樣性,例如數(shù)據(jù)內(nèi)容龐大,數(shù)據(jù)分類復雜,數(shù)據(jù)之間邏輯關(guān)系復雜等,而傳統(tǒng)的區(qū)塊鏈技術(shù)是以鏈式的方式來組織數(shù)據(jù)的,這種方式的區(qū)塊鏈的容量過小、區(qū)塊鏈的增量數(shù)據(jù)容量過小、數(shù)據(jù)之間的邏輯表達過于簡單,因此現(xiàn)有區(qū)塊鏈不能滿足對上述多樣性的數(shù)據(jù)進行組織和管理的需求。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種有向無環(huán)圖型區(qū)塊鏈的生成方法及系統(tǒng),旨在現(xiàn)有區(qū)塊鏈的基礎(chǔ)上,在任意至少兩個區(qū)塊的后端衍生出一個公共的子區(qū)塊,以滿足數(shù)據(jù)的復雜組織需求。
為達到上述目的,本發(fā)明實施例提供了一種有向無環(huán)圖型區(qū)塊鏈的生成方法,包括:收集來自信息源的信息并打包形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù);在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為所述新區(qū)塊的父區(qū)塊;將已確定的所述父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到所述新區(qū)塊的區(qū)塊頭中;循環(huán)執(zhí)行以上操作以形成如下形態(tài)的區(qū)塊鏈:所述區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊。
本發(fā)明實施例提供了一種有向無環(huán)圖型區(qū)塊鏈的生成系統(tǒng),包括:第一數(shù)據(jù)生成模塊,用于收集來自信息源的信息并打包形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù);區(qū)塊選取模塊,用于在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為所述新區(qū)塊的父區(qū)塊;第二數(shù)據(jù)生成模塊,用于將已確定的所述父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到所述新區(qū)塊的區(qū)塊頭中;所述生成系統(tǒng)循環(huán)執(zhí)行以上操作以形成如下形態(tài)的區(qū)塊鏈:所述區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊。
本發(fā)明實施例的有向無環(huán)圖型區(qū)塊鏈的生成方法及系統(tǒng),在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊,生成具有如下形態(tài)的區(qū)塊鏈:區(qū)塊鏈整體上呈有向無環(huán)圖型圖結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊,從而形成“一子多父”的區(qū)塊鏈結(jié)構(gòu),以滿足需要通過有向無環(huán)圖型結(jié)構(gòu)的形式組織數(shù)據(jù)的需求。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
圖1a為本發(fā)明實施例提供的區(qū)塊單元的形態(tài)圖一;
圖1b為本發(fā)明實施例提供的區(qū)塊單元的形態(tài)圖二;
圖2a為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖一;
圖2b為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖二;
圖2c為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖三;
圖2d為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖四;
圖2e為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖五;
圖3為本發(fā)明實施例提供的有向無環(huán)圖型區(qū)塊鏈的生成方法流程圖一;
圖4為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖六;
圖5為本發(fā)明實施例提供的有向無環(huán)圖型區(qū)塊鏈的生成方法流程圖二;
圖6為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖七;
圖7為本發(fā)明實施例提供的區(qū)塊鏈的形態(tài)圖八;
圖8為本發(fā)明實施例提供的有向無環(huán)圖型區(qū)塊鏈的生成系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
實施例一
在介紹本發(fā)明實施例的內(nèi)容之前,先對以下名詞進行解釋:
子創(chuàng)世區(qū)塊:在具有如下形態(tài)的區(qū)塊單元中,將區(qū)塊單元中的子區(qū)塊記為一個子創(chuàng)世區(qū)塊;
區(qū)塊單元由至少兩個子區(qū)塊和一個父區(qū)塊構(gòu)成;
區(qū)塊單元由一個子區(qū)塊和兩個以上父區(qū)塊構(gòu)成。
舉例說明,如圖1a所示,上述區(qū)塊單元可包括兩個子區(qū)塊:區(qū)塊B和區(qū)塊C,以及一個父區(qū)塊:區(qū)塊A,則在該區(qū)塊單元中,將區(qū)塊B和區(qū)塊C分別記為一個子創(chuàng)世區(qū)塊。又例如圖1b所示,上述區(qū)塊單元可包括一個子區(qū)塊:區(qū)塊C,以及兩個父區(qū)塊:區(qū)塊A和區(qū)塊B,則在該區(qū)塊單元中,將區(qū)塊C記為一個子創(chuàng)世區(qū)塊。
子區(qū)塊鏈:包括兩類,一類是基本子區(qū)塊鏈,一類是嵌套子區(qū)塊鏈,其中:
基本子區(qū)塊鏈,為僅包括一個子創(chuàng)世區(qū)塊,并且起始于該子創(chuàng)世區(qū)塊,并結(jié)束于一個末端區(qū)塊(該末端區(qū)塊可以為起始的子創(chuàng)世區(qū)塊本身,如果末端區(qū)塊為另一個子創(chuàng)世區(qū)塊,則結(jié)束于該末端區(qū)塊的前一個非子創(chuàng)世區(qū)塊)的區(qū)塊鏈;
舉例說明,如圖2a所示,子區(qū)塊鏈1為以區(qū)塊B1作為子創(chuàng)世區(qū)塊的子區(qū)塊鏈,子區(qū)塊鏈2為以區(qū)塊B2作為子創(chuàng)世區(qū)塊的子區(qū)塊鏈;
又例如圖2b、2c、2d中各子區(qū)塊鏈均對應相同,即子區(qū)塊鏈1為以區(qū)塊B1作為子創(chuàng)世區(qū)塊的子區(qū)塊鏈;子區(qū)塊鏈2為以區(qū)塊B2作為子創(chuàng)世區(qū)塊的子區(qū)塊鏈;子區(qū)塊鏈3為以區(qū)塊C作為子創(chuàng)世區(qū)塊的子區(qū)塊鏈;而不同之處僅是區(qū)塊C的兩個父區(qū)塊對應不同。
又例如圖2e所示,子區(qū)塊鏈1為以區(qū)塊B1作為子創(chuàng)世區(qū)塊的子區(qū)塊鏈;子區(qū)塊鏈2為以區(qū)塊B2作為子創(chuàng)世區(qū)塊的子區(qū)塊鏈;
嵌套子區(qū)塊鏈,為在上述任一種基本子區(qū)塊鏈中再嵌套包含至少一種基本子區(qū)塊鏈而組成的子區(qū)塊鏈,也可以是以該方式經(jīng)多層嵌套包含后產(chǎn)生的子區(qū)塊鏈。
舉例說明,如圖2a至2e中,當區(qū)塊A為一個區(qū)塊鏈中的子創(chuàng)世區(qū)塊時,圖2a至圖2e,從整體上也可分別視為一個子區(qū)塊鏈。
以下各實施例中如沒有特殊說明,則默認提及的子區(qū)塊鏈,均為基本子區(qū)塊鏈。
首先需要說明的是,本發(fā)明實施例將提供一種有向無環(huán)圖型區(qū)塊鏈的生成方法,以生成具有“一子多父”的有向無環(huán)圖型的區(qū)塊鏈結(jié)構(gòu)。通過在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊,將已確定的父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到新區(qū)塊的區(qū)塊頭中,完成一次新區(qū)塊的生成過程。循環(huán)執(zhí)行該操作過程,以得到整體上呈有向無環(huán)圖型的區(qū)塊鏈結(jié)構(gòu)。這里所述的區(qū)塊體數(shù)據(jù)可理解為作為實際交易數(shù)據(jù)的信息,區(qū)塊頭數(shù)據(jù)中包含由當前區(qū)塊的父區(qū)塊的所有數(shù)據(jù)經(jīng)不可逆算法生成的固定長度的字符串,以及與當前區(qū)塊相關(guān)的控制信息,區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)構(gòu)成一個區(qū)塊的完整數(shù)據(jù)。
其次需要說明的是,本發(fā)明實施例中的區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)記載的交易數(shù)據(jù)的信息不局限于商業(yè)中的“賬本”或“金融交易”的信息,也可以廣義的理解為是需要通過區(qū)塊鏈這種數(shù)據(jù)組織形式管理的多樣化的對象數(shù)據(jù),如針對企業(yè)進行管理的企業(yè)管理數(shù)據(jù),針對項目進行進展跟蹤的項目進程管理數(shù)據(jù)等。在對這些數(shù)據(jù)進行組織和管理的過程中,可能會出現(xiàn)在至少兩個區(qū)塊之后,出現(xiàn)一個公共的子區(qū)塊,并且以該子區(qū)塊作為子創(chuàng)世區(qū)塊延展出多個子區(qū)塊鏈,例如,當新生成的區(qū)塊的區(qū)塊體數(shù)據(jù)與當前已形成的區(qū)塊鏈中至少兩個區(qū)塊中的區(qū)塊體數(shù)據(jù)存在業(yè)務關(guān)聯(lián)性時,可以這兩個區(qū)塊作為父區(qū)塊向后延展出一個公共子區(qū)塊,該子區(qū)塊還可進一步作為一個創(chuàng)世子區(qū)塊繼續(xù)延展形成一個子區(qū)塊鏈,該子區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù),均與位于該子區(qū)塊鏈中最前面的創(chuàng)世子區(qū)塊的兩個父區(qū)塊中的區(qū)塊體數(shù)據(jù)存在業(yè)務關(guān)聯(lián)性。
以下將對本發(fā)明實施例的區(qū)塊鏈的生成方法進行詳細闡述。
圖3為本發(fā)明實施例提供的有向無環(huán)圖型區(qū)塊鏈的生成方法流程圖一。如圖3所示,該區(qū)塊鏈的生成方法包括如下步驟:
S310,收集來自信息源的信息并打包形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù)。
其中,所述的第一區(qū)塊體數(shù)據(jù)為每次生成的新區(qū)塊中的區(qū)塊體數(shù)據(jù)。
具體地,從存儲區(qū)塊鏈備用數(shù)據(jù)的信息源處,收集相關(guān)信息并匯總,其中,所述信息可以是針對企業(yè)進行管理的企業(yè)管理數(shù)據(jù),針對項目進行進展跟蹤的項目進程管理數(shù)據(jù)等;將匯總的信息按區(qū)塊體數(shù)據(jù)的數(shù)據(jù)格式進行處理打包,以形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù)。其中,數(shù)據(jù)格式可以包括內(nèi)容格式,例如每條數(shù)據(jù)可以按照:“時間+數(shù)據(jù)id+數(shù)據(jù)內(nèi)容”的格式進行打包,也可以包括類型格式,即數(shù)據(jù)內(nèi)容為同一類型的打包在一起形成一個區(qū)塊體數(shù)據(jù)。
S320,在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊。
傳統(tǒng)的區(qū)塊鏈結(jié)構(gòu)只包含一個鏈,每次新生成的區(qū)塊只能以當前已形成的區(qū)塊鏈中的最末端的區(qū)塊作為父區(qū)塊,完成區(qū)塊鏈的延展。本方案中與現(xiàn)有技術(shù)的不同之處,是在當前已形成的區(qū)塊鏈上,任意選取至少一個區(qū)塊(不只局限于當前已形成的區(qū)塊鏈中的末端區(qū)塊)作為新區(qū)塊的父區(qū)塊,使得在任意至少兩個區(qū)塊的后面均有可能產(chǎn)生新的子區(qū)塊鏈。
在當前已形成的區(qū)塊鏈上選取新區(qū)塊的父區(qū)塊時,可以參考新區(qū)塊中第一區(qū)塊體數(shù)據(jù)的內(nèi)容以及區(qū)塊鏈上,各區(qū)塊的區(qū)塊體數(shù)據(jù)的內(nèi)容的相關(guān)度,或者根據(jù)數(shù)據(jù)組織的需要來選取父區(qū)塊。
S330,將已確定的父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到新區(qū)塊的區(qū)塊頭中。
具體地,根據(jù)區(qū)塊鏈的區(qū)塊驗證原則,對選取出的父區(qū)塊中的全部數(shù)據(jù),包括區(qū)塊頭數(shù)據(jù)和區(qū)塊體數(shù)據(jù)進行不可逆算法的計算,得到具有固定長度的字符串結(jié)果。采用不可逆算法為明文進入?yún)^(qū)塊鏈的存證和不可篡改提供了保證,該不可逆算法可以為定長計算(哈希(Hash))算法,相應的,經(jīng)不可逆算法得到的字符串可以為哈希值,且將上述具有固定長度的字符串結(jié)果添加到新區(qū)塊的區(qū)塊頭中。
在具體應用場景中,當被確定為新區(qū)塊的父區(qū)塊的個數(shù)大于一個時,可以以區(qū)塊為單位,對各父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,并分別添加到新區(qū)塊的區(qū)塊頭中。因此,當采用哈希算法計算新區(qū)塊的父區(qū)塊中所有數(shù)據(jù)對應的哈希值時,新區(qū)塊的區(qū)塊頭中自然也會包含多個哈希值。
S340,循環(huán)執(zhí)行以上操作以形成如下形態(tài)的區(qū)塊鏈:區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊。
上述步驟S310~S330為單次生成新區(qū)塊過程,該過程為形成圖1b所述的區(qū)塊單元提供了可能性和實現(xiàn)基礎(chǔ)。在循環(huán)執(zhí)行步驟S310~S330的操作,即連續(xù)多次生成新區(qū)塊之后,可以形成如圖4所示形態(tài)的區(qū)塊鏈:區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊。每個區(qū)塊也可以有至少一個子區(qū)塊。
圖4中,各區(qū)塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)包括兩部分:區(qū)塊頭中的數(shù)據(jù)(區(qū)塊頭數(shù)據(jù))和區(qū)塊體中的數(shù)據(jù)(區(qū)塊體數(shù)據(jù)),其中,區(qū)塊頭數(shù)據(jù)包括上一個或多個區(qū)塊的散列值(如上一個或多個區(qū)塊各自的全部數(shù)據(jù)經(jīng)不可逆算法計算得到的具有固定長度的字符串,如哈希值)和其他控制信息(可自定義),其中只有創(chuàng)世區(qū)塊較為特殊,由于其沒有父區(qū)塊,其區(qū)塊頭中沒有上一個或多個區(qū)塊的散列值;區(qū)塊體數(shù)據(jù)可以為以Merkle Tree方式組織起來的交易數(shù)據(jù)的信息,該交易數(shù)據(jù)的信息從廣義上講可以為上述針對企業(yè)進行管理的企業(yè)管理數(shù)據(jù),或針對項目進行進展跟蹤的項目進程管理數(shù)據(jù)等。
本發(fā)明實施例的有向無環(huán)圖型區(qū)塊鏈的生成方法,通過收集來自信息源的信息并打包形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù);在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊;將已確定的父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到新區(qū)塊的區(qū)塊頭中,完成單次的新區(qū)塊的生成過程;循環(huán)執(zhí)行以上操作以形成如下形態(tài)的區(qū)塊鏈:區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊,從而形成具有“一子多父”的有向無環(huán)圖型的區(qū)塊鏈結(jié)構(gòu)。該有向無環(huán)圖型的區(qū)塊鏈為需要通過子區(qū)塊鏈方式組織數(shù)據(jù)提供了可行的實現(xiàn)方案,并且這種有向無環(huán)圖型區(qū)塊鏈,可以組織和管理內(nèi)容龐大,分類復雜,數(shù)據(jù)之間邏輯關(guān)系復雜的數(shù)據(jù),彌補了現(xiàn)有區(qū)塊鏈不能滿足對多樣性的數(shù)據(jù)進行組織和管理的需求。
實施例二
在當前已形成的區(qū)塊鏈中,或者通過反復執(zhí)行圖3所示的方法步驟而形成的有向無環(huán)圖型區(qū)塊鏈中,可以具有如下形態(tài)的區(qū)塊單元中的任意一種或者兩種:
區(qū)塊單元由至少兩個子區(qū)塊和一個父區(qū)塊構(gòu)成,即對應如圖1a所示的區(qū)塊單元;
區(qū)塊單元由一個子區(qū)塊和兩個以上父區(qū)塊構(gòu)成,即對應如圖1b所示的區(qū)塊單元;
其中,在上述區(qū)塊單元中的每個子區(qū)塊記為一個子創(chuàng)世區(qū)塊,該子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)與該子創(chuàng)世區(qū)塊所在的子區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)具有相同的類別。
其中,所述的第三區(qū)塊體數(shù)據(jù),定義為在當前已形成的區(qū)塊鏈中,任一子創(chuàng)世區(qū)塊中的區(qū)塊體數(shù)據(jù);子創(chuàng)世區(qū)塊所在的子區(qū)塊鏈可理解為,以該子創(chuàng)世區(qū)塊作為起始區(qū)塊而形成的子區(qū)塊鏈。
基于子創(chuàng)世區(qū)塊,以及子區(qū)塊鏈的概念,如圖5所示,為本發(fā)明實施例提供的有向無環(huán)圖型區(qū)塊鏈的生成方法流程圖二,該方法可視為圖3所示方法實施例的具體實現(xiàn)方式。如圖5所示,上述區(qū)塊鏈的生成方法包括如下步驟:
S510,收集來自信息源的信息并打包形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù)。步驟S510與步驟S310的內(nèi)容相同。
S520,將第一區(qū)塊體數(shù)據(jù)與當前已形成的區(qū)塊鏈中各子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)進行比對,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊。步驟S520可視為步驟S320的細化步驟。
在具體闡述本步驟的執(zhí)行過程之前,先對區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)之間的關(guān)聯(lián)性類型進行說明。
在已形成的有向無環(huán)圖型區(qū)塊鏈中,兩個相鄰的父區(qū)塊和子區(qū)塊中的區(qū)塊體數(shù)據(jù)其內(nèi)容是關(guān)聯(lián)的,子區(qū)塊中記載的區(qū)塊體數(shù)據(jù)內(nèi)容可以為父區(qū)塊中區(qū)塊體數(shù)據(jù)的細化數(shù)據(jù),或是父區(qū)塊中區(qū)塊體數(shù)據(jù)的延展數(shù)據(jù)(如對應區(qū)塊中的區(qū)塊體數(shù)據(jù)可依據(jù)時間進行區(qū)塊的延展),又或是與父區(qū)塊中區(qū)塊體數(shù)據(jù)在業(yè)務上有關(guān)聯(lián)性的數(shù)據(jù)。
以圖6為例,對兩個相鄰的父區(qū)塊和子區(qū)塊中的區(qū)塊體數(shù)據(jù)的內(nèi)容關(guān)聯(lián)性進行解釋如下:
某一企業(yè)采用本實施例中呈有向無環(huán)圖型結(jié)構(gòu)的區(qū)塊鏈對其分公司的業(yè)務進行數(shù)據(jù)組織管理,該企業(yè)以區(qū)塊a0“集團”作為創(chuàng)世區(qū)塊,“集團”下設(shè)立了區(qū)塊b0“娛樂”、區(qū)塊b1“餐飲”、區(qū)塊b2“房地產(chǎn)”三個并列的行業(yè)子區(qū)塊,在“娛樂”行業(yè)下進一步包括區(qū)塊c0“游藝廳”和區(qū)塊c1“網(wǎng)吧”兩個具體經(jīng)營項目。在該企業(yè)的數(shù)據(jù)管理中,“娛樂”可視為“游藝廳”和“網(wǎng)吧”的上位數(shù)據(jù),“集團”可視為“娛樂”、“餐飲”、“房地產(chǎn)”的上位數(shù)據(jù);而區(qū)塊c4“項目競標”、區(qū)塊c5“項目融資”、區(qū)塊c6“項目施工”可視為“房地產(chǎn)”類別下具有延展性的數(shù)據(jù)并存形式,可視為同類別數(shù)據(jù)。當然,如果針對某一上位數(shù)據(jù)的多個下位數(shù)據(jù)之間不存在細化分類的必要,那么也可將這幾個下位數(shù)據(jù)對應的區(qū)塊按數(shù)據(jù)間的延展關(guān)系形成單鏈條的區(qū)塊鏈結(jié)構(gòu),此時,也可稱這幾個區(qū)塊對應的區(qū)塊體數(shù)據(jù)為同類別數(shù)據(jù)。
在圖6所示的區(qū)塊鏈中,還存在一種不能用類別劃分各區(qū)塊中區(qū)塊體數(shù)據(jù)之間關(guān)聯(lián)性的情況,即由區(qū)塊c1“網(wǎng)吧”、區(qū)塊c3“餐廳”、區(qū)塊d1“超市”形式的區(qū)塊單元中,“網(wǎng)吧”和“餐廳”既不是“超市”的同類型數(shù)據(jù),也不是“超市”的上位數(shù)據(jù),但“超市”與“網(wǎng)吧”和“餐廳”之間都存在業(yè)務上的往來,如向“網(wǎng)吧”和“餐廳”提供如飲料、小吃等商品,這種關(guān)聯(lián)性就需要業(yè)務關(guān)聯(lián)性來進行劃分。
本實施例中所謂的業(yè)務關(guān)聯(lián)性是指,兩個對象數(shù)據(jù)之間,首先就內(nèi)容類別上不為同類型的數(shù)據(jù),其次,兩個對象數(shù)據(jù)之間不具有彼此為上、下位數(shù)據(jù)的關(guān)系,最后,兩個對象數(shù)據(jù)之間有著業(yè)務上的關(guān)聯(lián)。
如圖6中所示,在有向無環(huán)圖型結(jié)構(gòu)的區(qū)塊鏈中,包含了多個線條狀的子區(qū)塊鏈,而“房地產(chǎn)”、“游戲廳”、“網(wǎng)吧”、“超市”這些區(qū)塊就是這些子區(qū)塊鏈的創(chuàng)世區(qū)塊,為了區(qū)別最原始的創(chuàng)世區(qū)塊,可以將其稱作為子創(chuàng)世區(qū)塊。
例如,區(qū)塊c4至區(qū)塊c6的區(qū)塊體中包含了“房地產(chǎn)”對應的區(qū)塊所在的子區(qū)塊鏈的各種數(shù)據(jù),在實際應用中,子創(chuàng)世區(qū)塊中可以存儲一些特殊數(shù)據(jù),例如,針對“房地產(chǎn)”作為子創(chuàng)世區(qū)塊所在的子區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)的整體說明等,當然,也可以將該子創(chuàng)世區(qū)塊作為該子區(qū)塊鏈中的一個普通區(qū)塊來存儲需要存儲的數(shù)據(jù)?!坝螒驈d”和“網(wǎng)吧”對應的區(qū)塊所在的子區(qū)塊鏈中的區(qū)塊用省略號進行示出。
整個有向無環(huán)圖型結(jié)構(gòu)的區(qū)塊鏈會隨著實際的應用不斷延展,延展存在兩種情況,一種是繼某一個子區(qū)塊鏈進行延展,另一種是產(chǎn)生新的子創(chuàng)世區(qū)塊,從而會形成新的子區(qū)塊鏈。
以上內(nèi)容分別對各區(qū)塊的區(qū)塊體數(shù)據(jù)之為同類別關(guān)聯(lián)、上下位數(shù)據(jù)關(guān)聯(lián)以及業(yè)務關(guān)聯(lián)分別進行了說明,同時,還重申了子區(qū)塊鏈在實際應用中的概念。
在此基礎(chǔ)上,將第一區(qū)塊體數(shù)據(jù)與當前已形成的區(qū)塊鏈中各子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)進行比對后,可將如下區(qū)塊確定為新區(qū)塊的父區(qū)塊:
與第一區(qū)塊體數(shù)據(jù)具有業(yè)務關(guān)聯(lián)性的第三區(qū)塊體數(shù)據(jù)所對應的子創(chuàng)世區(qū)塊,或者該子創(chuàng)世區(qū)塊所在子區(qū)塊鏈的末端的區(qū)塊。
例如,以圖6中,不包括區(qū)塊d1“超市”在內(nèi)的剩余區(qū)塊所構(gòu)成的區(qū)塊鏈為當前已形成的區(qū)塊鏈,當?shù)谝粎^(qū)塊體數(shù)據(jù)為關(guān)于“超市”的相關(guān)數(shù)據(jù)時,可將與區(qū)塊d1“超市”具有業(yè)務關(guān)聯(lián)性的子創(chuàng)世區(qū)塊c1“網(wǎng)吧”確定為區(qū)塊d1“超市”的父區(qū)塊,或者將子創(chuàng)世區(qū)塊b1“餐飲”所在子區(qū)塊鏈的末端的區(qū)塊c3“餐廳”確定為區(qū)塊d1“超市”的父區(qū)塊;
和/或,
能夠作為該第一區(qū)塊體數(shù)據(jù)的上位數(shù)據(jù)的第三區(qū)塊體數(shù)據(jù)所對應的子創(chuàng)世區(qū)塊,或者該子創(chuàng)世區(qū)塊所在子區(qū)塊鏈的末端的區(qū)塊。
例如,以圖6中,不包括區(qū)塊d1“超市”在內(nèi)的剩余區(qū)塊所構(gòu)成的區(qū)塊鏈為當前已形成的區(qū)塊鏈,當?shù)谝粎^(qū)塊體數(shù)據(jù)為關(guān)于“咖啡廳”的相關(guān)數(shù)據(jù)時,可將為“咖啡廳”的上位數(shù)據(jù)的“餐飲”所對應的子創(chuàng)世區(qū)塊b1“餐飲”確定為區(qū)塊c8“咖啡廳”的父區(qū)塊,或者將子創(chuàng)世區(qū)塊b1“餐飲”所在子區(qū)塊鏈的末端的區(qū)塊c3“餐廳”確定為區(qū)塊c8“咖啡廳”的父區(qū)塊。圖7為將子創(chuàng)世區(qū)塊b1“餐飲”和區(qū)塊c3“餐廳”共同作為區(qū)塊c8“咖啡廳”的父區(qū)塊形成的區(qū)塊鏈形態(tài)圖。
另外,為了方便第一區(qū)塊體數(shù)據(jù)與第三區(qū)塊體數(shù)據(jù)的相關(guān)度對比,可預先在形成每個區(qū)塊的區(qū)塊體數(shù)據(jù)后,將根據(jù)區(qū)塊的區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息作為控制信息存儲在當前區(qū)塊的區(qū)塊頭中。當將第一區(qū)塊體數(shù)據(jù)與當前已形成的區(qū)塊鏈中各子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)的內(nèi)容進行比對時,可直接將根據(jù)第一區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息,與根據(jù)第三區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息進行比對,從而確定與第一區(qū)塊體數(shù)據(jù)為同類別或為其上位數(shù)據(jù)或與其存在業(yè)務關(guān)聯(lián)性的第三區(qū)塊體數(shù)據(jù)。然后按照上述方法選取出新區(qū)塊的父區(qū)塊。
又或者,為了方便第一區(qū)塊體數(shù)據(jù)與第三區(qū)塊體數(shù)據(jù)的相關(guān)度對比,可預先在形成每個區(qū)塊的區(qū)塊體數(shù)據(jù)后,將根據(jù)區(qū)塊的區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息存儲在當前區(qū)塊的區(qū)塊體中。當將第一區(qū)塊體數(shù)據(jù)與當前已形成的區(qū)塊鏈中各子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)的內(nèi)容進行比對時,可直接將第一區(qū)塊體數(shù)據(jù),與將根據(jù)第三區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息進行比對,從而確定與第一區(qū)塊體數(shù)據(jù)為同類別或為其上位數(shù)據(jù)或與其存在業(yè)務關(guān)聯(lián)性的第三區(qū)塊體數(shù)據(jù)。然后按照上述方法選取出新區(qū)塊的父區(qū)塊。
S530,將已確定的父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到新區(qū)塊的區(qū)塊頭中。
S540,循環(huán)執(zhí)行以上操作以形成如下形態(tài)的區(qū)塊鏈:區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊。
步驟S530~S540與步驟S330~S340的內(nèi)容對應相同。
本發(fā)明實施例的有向無環(huán)圖型區(qū)塊鏈的生成方法,在圖3所示實施例的基礎(chǔ)上,對如何在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊進行了步驟細化,具體通過新區(qū)塊的第一區(qū)塊體數(shù)據(jù)以及當前已形成的區(qū)塊鏈中各子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)的內(nèi)容的上下位關(guān)系,以及業(yè)務關(guān)聯(lián)性進行父區(qū)塊的選取,使得區(qū)塊之間的邏輯關(guān)系更加合理和多樣化。
實施例三
圖8為本發(fā)明實施例提供的有向無環(huán)圖型區(qū)塊鏈的生成系統(tǒng)示意圖一,可以用于執(zhí)行如圖3所示的方法步驟。如圖8所示,該區(qū)塊鏈的生成系統(tǒng)包括:第一數(shù)據(jù)生成模塊810、區(qū)塊選取模塊820和第二數(shù)據(jù)生成模塊830,其中:
第一數(shù)據(jù)生成模塊810,用于收集來自信息源的信息并打包形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù);區(qū)塊選取模塊820,用于在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊;第二數(shù)據(jù)生成模塊830,用于將已確定的父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到新區(qū)塊的區(qū)塊頭中;上述生成系統(tǒng)循環(huán)執(zhí)行以上操作以形成如下形態(tài)的區(qū)塊鏈:區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊。
本發(fā)明實施例的區(qū)塊鏈的生成系統(tǒng),通過收集來自信息源的信息并打包形成新區(qū)塊的第一區(qū)塊體數(shù)據(jù);在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊;將已確定的父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,添加到新區(qū)塊的區(qū)塊頭中,完成單次的新區(qū)塊的生成過程;循環(huán)執(zhí)行以上操作以形成如下形態(tài)的區(qū)塊鏈:區(qū)塊鏈整體上呈有向無環(huán)圖型結(jié)構(gòu),且至少一個區(qū)塊具有兩個以上的父區(qū)塊,從而形成具有“一子多父”的有向無環(huán)圖型的區(qū)塊鏈結(jié)構(gòu)。該有向無環(huán)圖型的區(qū)塊鏈為需要通過子區(qū)塊鏈方式組織數(shù)據(jù)提供了可行的實現(xiàn)方案,并且這種有向無環(huán)圖型區(qū)塊鏈,可以組織和管理內(nèi)容龐大,分類復雜,數(shù)據(jù)之間邏輯關(guān)系復雜的數(shù)據(jù),彌補了現(xiàn)有區(qū)塊鏈不能滿足對多樣性的數(shù)據(jù)進行組織和管理的需求。
實施例四
本實施例中主要是對圖8所示的有向無環(huán)圖型區(qū)塊鏈的生成系統(tǒng)進行功能細化,以執(zhí)行如圖5所示的方法步驟。
基于圖8所示的區(qū)塊鏈的生成系統(tǒng)的功能及結(jié)構(gòu),在當前已形成的區(qū)塊鏈中具有如下形態(tài)的區(qū)塊單元中的任意一種或者兩種:
區(qū)塊單元由至少兩個子區(qū)塊和一個父區(qū)塊構(gòu)成;
區(qū)塊單元由一個子區(qū)塊和兩個以上父區(qū)塊構(gòu)成;
其中,在上述區(qū)塊單元中的每個子區(qū)塊記為一個子創(chuàng)世區(qū)塊,
所述子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)與該子創(chuàng)世區(qū)塊所在的子區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)具有相同的類別。
在此基礎(chǔ)上,上述區(qū)塊選取模塊820具體用于:將第一區(qū)塊體數(shù)據(jù)與當前已形成的區(qū)塊鏈中各子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)進行比對,將如下區(qū)塊確定為新區(qū)塊的父區(qū)塊:
與第一區(qū)塊體數(shù)據(jù)具有業(yè)務關(guān)聯(lián)性的第三區(qū)塊體數(shù)據(jù)所對應的子創(chuàng)世區(qū)塊,或者該子創(chuàng)世區(qū)塊所在子區(qū)塊鏈的末端的區(qū)塊;
和/或,
能夠作為該第一區(qū)塊體數(shù)據(jù)的上位數(shù)據(jù)的第三區(qū)塊體數(shù)據(jù)所對應的子創(chuàng)世區(qū)塊,或者該子創(chuàng)世區(qū)塊所在子區(qū)塊鏈的末端的區(qū)塊。
進一步地,在上述各區(qū)塊的區(qū)塊頭數(shù)據(jù)中還包括:根據(jù)當前區(qū)塊的區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息;
在此基礎(chǔ)上,區(qū)塊選取模塊820具體還用于,將根據(jù)第一區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息,與將根據(jù)第三區(qū)塊體數(shù)據(jù)的內(nèi)容所形成的類別信息進行比對。
進一步地,上述第三區(qū)塊體數(shù)據(jù)包括針對該子創(chuàng)世區(qū)塊所在的子區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)的內(nèi)容類別信息;
在此基礎(chǔ)上,區(qū)塊選取模塊820具體還用于,將第一區(qū)塊體數(shù)據(jù)與第三區(qū)塊體數(shù)據(jù)中的內(nèi)容類別信息進行比對。
進一步地,上述第二數(shù)據(jù)生成模塊830還用于,以區(qū)塊為單位,對各父區(qū)塊中的區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)經(jīng)不可逆算法生成固定長度的字符串,并分別添加到新區(qū)塊的區(qū)塊頭中。
進一步地,不可逆算法為哈希算法。
進一步地,固定長度的字符串為哈希值。
本發(fā)明實施例的有向無環(huán)圖型區(qū)塊鏈的生成系統(tǒng),在圖8所示實施例的基礎(chǔ)上,對區(qū)塊選取模塊如何在當前已形成的區(qū)塊鏈上,選取至少一個區(qū)塊作為新區(qū)塊的父區(qū)塊進行了功能細化,具體通過新區(qū)塊的第一區(qū)塊體數(shù)據(jù)以及當前已形成的區(qū)塊鏈中各子創(chuàng)世區(qū)塊的第三區(qū)塊體數(shù)據(jù)的內(nèi)容的上下位關(guān)系,以及業(yè)務關(guān)聯(lián)性進行父區(qū)塊的選取,使得區(qū)塊之間的邏輯關(guān)系更加合理和多樣化。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。