本發(fā)明實(shí)施例屬于區(qū)塊鏈技術(shù)領(lǐng)域,尤其涉及一種在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)的不斷發(fā)展,區(qū)塊鏈技術(shù)應(yīng)運(yùn)而生,它是一種互聯(lián)網(wǎng)數(shù)據(jù)庫技術(shù),具有去中心化、公開透明的特點(diǎn)。具體地,區(qū)塊鏈技術(shù)的本質(zhì)是去中心化且寓于分布式結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)、傳輸和證明的方法,用數(shù)據(jù)區(qū)塊取代目前互聯(lián)網(wǎng)對(duì)中心服務(wù)器的依賴,使得所有數(shù)據(jù)的變更或者交易項(xiàng)目都被記錄在一個(gè)云系統(tǒng)之上。由于沒有中央控制點(diǎn)的分布式對(duì)等網(wǎng)絡(luò),并且使用分布式集體運(yùn)作的方法,可以說,區(qū)塊鏈?zhǔn)蔷W(wǎng)絡(luò)上的“公開大賬本”。它存在許多節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都可以觀察到整個(gè)賬本,并且共同參與維護(hù),其收益則是獲得記賬的權(quán)利,并且可以復(fù)制一份完整的數(shù)據(jù)庫,單個(gè)節(jié)點(diǎn)無法修改數(shù)據(jù)庫,從而保證了賬本數(shù)據(jù)的安全可靠。
當(dāng)下,采用區(qū)塊鏈技術(shù)進(jìn)行數(shù)據(jù)的組織和管理已經(jīng)被廣泛的應(yīng)用到了各種商業(yè)領(lǐng)域。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)存在如下缺陷:
現(xiàn)有的區(qū)塊鏈只是單純沿著區(qū)塊鏈的延展方向,依次生成新的區(qū)塊,鏈條的生成方式單一,且不能體現(xiàn)出截至到某一歷史時(shí)刻下,區(qū)塊鏈的整體形態(tài),特別是需要對(duì)區(qū)塊鏈中某區(qū)塊進(jìn)行修改甚至刪除時(shí),用戶更是無法獲知修改操作之前整個(gè)區(qū)塊鏈的形態(tài)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法及系統(tǒng),旨在現(xiàn)有區(qū)塊鏈的延展過程的基礎(chǔ)上,結(jié)合數(shù)據(jù)快照技術(shù),在整體上以區(qū)塊鏈的形式保存區(qū)塊鏈在各個(gè)階段的歷史形態(tài),特別是保留對(duì)區(qū)塊鏈中區(qū)塊進(jìn)行修改操作之前,區(qū)塊鏈的歷史形態(tài)。
為達(dá)到上述目的,本發(fā)明實(shí)施例提供了一種在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法,所述區(qū)塊鏈由一個(gè)延展區(qū)塊鏈構(gòu)成,或者由一個(gè)延展區(qū)塊鏈和一個(gè)或多個(gè)非延展區(qū)塊鏈構(gòu)成,在區(qū)塊鏈的延展過程中,當(dāng)為新產(chǎn)生的數(shù)據(jù)生成新區(qū)塊時(shí),該新區(qū)塊鏈接在所述延展區(qū)塊鏈上;所述生成方法包括:對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成所述延展區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原所述延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,所述快照結(jié)果區(qū)塊鏈與所述快照對(duì)象區(qū)塊鏈中各區(qū)塊間的第一鏈接關(guān)系,以及區(qū)塊中區(qū)塊體數(shù)據(jù)的內(nèi)容對(duì)應(yīng)相同;對(duì)所述快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;以所述快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的所述快照結(jié)果區(qū)塊鏈中與各所述父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將所述快照對(duì)象區(qū)塊鏈與修改后的所述快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;按照所述第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的所述快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將所述拓展后的區(qū)塊鏈中所述快照結(jié)果區(qū)塊鏈記為所述延展區(qū)塊鏈,將所述快照對(duì)象區(qū)塊鏈記為非延展區(qū)塊鏈。
本發(fā)明實(shí)施例提供了一種在拓展中進(jìn)行修改的區(qū)塊鏈的生成系統(tǒng),所述區(qū)塊鏈由一個(gè)延展區(qū)塊鏈構(gòu)成,或者由一個(gè)延展區(qū)塊鏈和一個(gè)或多個(gè)非延展區(qū)塊鏈構(gòu)成,在區(qū)塊鏈的延展過程中,當(dāng)為新產(chǎn)生的數(shù)據(jù)生成新區(qū)塊時(shí),該新區(qū)塊鏈接在所述延展區(qū)塊鏈上;所述生成系統(tǒng)包括:數(shù)據(jù)快照模塊,用于對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成所述延展區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原所述延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,所述快照結(jié)果區(qū)塊鏈與所述快照對(duì)象區(qū)塊鏈中各區(qū)塊間的第一鏈接關(guān)系,以及區(qū)塊中區(qū)塊體數(shù)據(jù)的內(nèi)容對(duì)應(yīng)相同;數(shù)據(jù)修改模塊,用于對(duì)所述快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;組合鏈接模塊,用于以所述快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的所述快照結(jié)果區(qū)塊鏈中與各所述父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將所述快照對(duì)象區(qū)塊鏈與修改后的所述快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;區(qū)塊鏈生成模塊,用于按照所述第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的所述快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將所述拓展后的區(qū)塊鏈中所述快照結(jié)果區(qū)塊鏈記為所述延展區(qū)塊鏈,將所述快照對(duì)象區(qū)塊鏈記為非延展區(qū)塊鏈。
本發(fā)明實(shí)施例的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法及系統(tǒng),對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,然后,對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;接著,以快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的快照結(jié)果區(qū)塊鏈中與各父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;按照第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈記為延展區(qū)塊鏈,將快照對(duì)象區(qū)塊鏈記為非延展區(qū)塊鏈。該拓展后的區(qū)塊鏈可以清楚的保留區(qū)塊鏈在拓展過程中所進(jìn)行的修改操作的痕跡。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
圖1為本發(fā)明實(shí)施例提供的區(qū)塊鏈的形態(tài)圖一;
圖2為本發(fā)明實(shí)施例提供的區(qū)塊鏈的形態(tài)圖二;
圖3為本發(fā)明實(shí)施例提供的區(qū)塊鏈的形態(tài)圖三;
圖4為本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法流程圖一;
圖5為本發(fā)明實(shí)施例提供的區(qū)塊鏈的形態(tài)圖四;
圖6為本發(fā)明實(shí)施例提供的修改區(qū)塊體數(shù)據(jù)的方法示意圖;
圖7為本發(fā)明實(shí)施例提供的修改區(qū)塊間鏈接關(guān)系的方法示意圖一;
圖8為本發(fā)明實(shí)施例提供的修改區(qū)塊間鏈接關(guān)系的方法示意圖二;
圖9為本發(fā)明實(shí)施例提供的區(qū)塊鏈的形態(tài)圖五;
圖10為本發(fā)明實(shí)施例提供的區(qū)塊鏈的形態(tài)圖六;
圖11為本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法流程圖二;
圖12為本發(fā)明實(shí)施例提供的數(shù)據(jù)快照方法流程圖;
圖13為本發(fā)明實(shí)施例提供的區(qū)塊鏈的形態(tài)圖七;
圖14為本發(fā)明實(shí)施例提供的延展區(qū)塊鏈的數(shù)據(jù)快照和區(qū)塊延展的綜合形態(tài)圖;
圖15為本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成系統(tǒng)示意圖一;
圖16為本發(fā)明實(shí)施例提供的數(shù)據(jù)快照模塊示意圖;
圖17為本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成系統(tǒng)示意圖二。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
在介紹本發(fā)明實(shí)施例的內(nèi)容之前,先對(duì)以下名詞進(jìn)行解釋:
數(shù)據(jù)快照:與數(shù)據(jù)復(fù)制不完全相同,數(shù)據(jù)快照后的結(jié)果與被執(zhí)行快照的原數(shù)據(jù)之間存在部分?jǐn)?shù)據(jù)相同,具體可以是:①快照后的數(shù)據(jù)與原數(shù)據(jù)完全相同,②快照后的全部數(shù)據(jù)與原數(shù)據(jù)的部分?jǐn)?shù)據(jù)相同,③快照后的數(shù)據(jù)中的部分?jǐn)?shù)據(jù)與原數(shù)據(jù)中的全部或部分?jǐn)?shù)據(jù)相同;
延展區(qū)塊鏈:當(dāng)為新產(chǎn)生的數(shù)據(jù)生成新區(qū)塊時(shí),該新區(qū)塊在整個(gè)區(qū)塊鏈中所鏈接的部分區(qū)塊鏈稱之為延展區(qū)塊鏈;一個(gè)完整的區(qū)塊鏈,可由一個(gè)延展區(qū)塊鏈構(gòu)成或者由一個(gè)延展區(qū)塊鏈和一個(gè)或多個(gè)非延展區(qū)塊鏈構(gòu)成,延展區(qū)塊鏈在整個(gè)區(qū)塊鏈中的定義范圍,會(huì)在對(duì)區(qū)塊鏈進(jìn)行如數(shù)據(jù)快照、區(qū)塊修改等類似操作后從新指定;初始狀態(tài)下,區(qū)塊鏈僅包括一個(gè)創(chuàng)世區(qū)塊時(shí),該創(chuàng)世區(qū)塊構(gòu)成最初形態(tài)下的延展區(qū)塊鏈。這里說明,所述新產(chǎn)生的數(shù)據(jù)生成的新區(qū)塊,不包括上述對(duì)區(qū)塊鏈進(jìn)行如數(shù)據(jù)快照、區(qū)塊修改等類似操作所產(chǎn)生的新區(qū)塊。
快照對(duì)象區(qū)塊鏈:被執(zhí)行數(shù)據(jù)快照操作的區(qū)塊鏈,被記為當(dāng)次快照對(duì)應(yīng)的快照對(duì)象區(qū)塊鏈;
快照結(jié)果區(qū)塊鏈:對(duì)區(qū)塊鏈進(jìn)行快照操作后,產(chǎn)生的相對(duì)于快照對(duì)象區(qū)塊鏈的結(jié)果區(qū)塊鏈。
首先需要說明的是,本發(fā)明實(shí)施例將提供一種在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法,以在拓展后的區(qū)塊鏈中保留修改之前的區(qū)塊鏈的形態(tài)。具體通過在每次對(duì)區(qū)塊鏈進(jìn)行修改之前,先對(duì)當(dāng)前已形成的區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成快照結(jié)果區(qū)塊鏈,原區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,所述快照結(jié)果區(qū)塊鏈與快照對(duì)象區(qū)塊鏈中各區(qū)塊間的第一鏈接關(guān)系,以及區(qū)塊中區(qū)塊體數(shù)據(jù)的內(nèi)容對(duì)應(yīng)相同;在快照結(jié)果區(qū)塊鏈上進(jìn)行修改,并將修改后的快照結(jié)果區(qū)塊鏈與快照對(duì)象區(qū)塊鏈組合鏈接形成拓展后的區(qū)塊鏈,形成第二鏈接關(guān)系;按照第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈。該拓展后的區(qū)塊鏈保留了修改前區(qū)塊鏈的形態(tài)。這里所述的區(qū)塊體數(shù)據(jù)可理解為作為實(shí)際交易數(shù)據(jù)的信息,區(qū)塊頭數(shù)據(jù)中包含由當(dāng)前區(qū)塊的父區(qū)塊的所有數(shù)據(jù)經(jīng)不可逆算法生成的固定長度的字符串即散列值,以及與當(dāng)前區(qū)塊相關(guān)的控制信息,區(qū)塊體數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)構(gòu)成一個(gè)區(qū)塊的完整數(shù)據(jù)。
其次需要說明的是,本發(fā)明實(shí)施例中的區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)記載的交易信息不局限于商業(yè)中的“賬本”或“金融交易”的信息,也可以廣義的理解為是需要通過區(qū)塊鏈這種數(shù)據(jù)組織形式管理的多樣化的對(duì)象數(shù)據(jù),如針對(duì)企業(yè)進(jìn)行管理的企業(yè)管理數(shù)據(jù),針對(duì)項(xiàng)目進(jìn)行進(jìn)展跟蹤的項(xiàng)目進(jìn)程管理數(shù)據(jù)等。本發(fā)明實(shí)施例中,對(duì)區(qū)塊鏈本身的形態(tài)及延展方向不做限定,只是在區(qū)塊鏈正常延展的過程中,通過數(shù)據(jù)快照實(shí)現(xiàn)對(duì)當(dāng)前區(qū)塊鏈進(jìn)行整體維度的拓展,并在拓展過程中實(shí)現(xiàn)對(duì)區(qū)塊數(shù)據(jù)的修改。例如,區(qū)塊鏈的延展形態(tài)可以為如圖1所示的傳統(tǒng)的單鏈條的區(qū)塊鏈,也可以是如圖2所示的整體上呈樹形結(jié)構(gòu)的區(qū)塊鏈(該區(qū)塊鏈中每個(gè)區(qū)塊只有一個(gè)父區(qū)塊,并有一個(gè)或多個(gè)子區(qū)塊),還可以是如圖3所示的具有有向無環(huán)圖型結(jié)構(gòu)的區(qū)塊鏈(該區(qū)塊鏈中存在至少一個(gè)區(qū)塊具有一個(gè)或多個(gè)父區(qū)塊)。
以下將對(duì)本發(fā)明實(shí)施例的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法進(jìn)行詳細(xì)闡述。
實(shí)施例一
圖4為本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法流程圖一,其中,所述區(qū)塊鏈由一個(gè)延展區(qū)塊鏈構(gòu)成,或者由一個(gè)延展區(qū)塊鏈和一個(gè)或多個(gè)非延展區(qū)塊鏈構(gòu)成,在區(qū)塊鏈的延展過程中,當(dāng)為新產(chǎn)生的數(shù)據(jù)生成新區(qū)塊時(shí),該新區(qū)塊鏈接在延展區(qū)塊鏈上。如圖4所示,該區(qū)塊鏈的生成方法包括如下步驟:
S410,對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成延展區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,快照結(jié)果區(qū)塊鏈與快照對(duì)象區(qū)塊鏈中各區(qū)塊間的第一鏈接關(guān)系,以及區(qū)塊中區(qū)塊體數(shù)據(jù)的內(nèi)容對(duì)應(yīng)相同;
其中,所述的當(dāng)前已形成的延展區(qū)塊鏈?zhǔn)侵附刂廉?dāng)前時(shí)刻,所形成的延展區(qū)塊鏈在整體上所呈現(xiàn)的區(qū)塊鏈形態(tài)。
具體地,當(dāng)需要對(duì)當(dāng)前形成的延展區(qū)塊鏈進(jìn)行修改時(shí),可先對(duì)當(dāng)前形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成當(dāng)前延展區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈。
這里需要說明的是,本實(shí)施例中的數(shù)據(jù)快照的過程是對(duì)快照對(duì)象的內(nèi)容進(jìn)行部分復(fù)制和/或,整體復(fù)制和/或修改的操作。該操作僅用于,使數(shù)據(jù)快照后生成的快照結(jié)果區(qū)塊鏈與快照對(duì)象區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)對(duì)應(yīng)相同,并且各區(qū)塊間的鏈接關(guān)系對(duì)應(yīng)相同。這里將快照對(duì)象區(qū)塊鏈中各區(qū)塊間的鏈接關(guān)系整體定義為第一鏈接關(guān)系,由于數(shù)據(jù)快照后,生成的快照結(jié)果區(qū)塊鏈與對(duì)應(yīng)的快照對(duì)象區(qū)塊鏈中各區(qū)塊間的鏈接關(guān)系相同,因此快照結(jié)果區(qū)塊鏈中各區(qū)塊間的鏈接關(guān)系也可整體定義為第一鏈接關(guān)系。所述區(qū)塊間的鏈接關(guān)系,是指各區(qū)塊之間存在的父子關(guān)系,該父子關(guān)系不要求必須通過區(qū)塊中區(qū)塊頭數(shù)據(jù)中的散列值進(jìn)行一致性驗(yàn)證。換言之,本實(shí)施例中的鏈接關(guān)系只是表達(dá)區(qū)塊之間鏈接框架,而不作為規(guī)定區(qū)塊之間一致性驗(yàn)證的定義范疇。
在具體應(yīng)用中,上述數(shù)據(jù)快照的目的,就是使快照結(jié)果區(qū)塊鏈與快照對(duì)象區(qū)塊鏈在區(qū)塊鏈的整體架構(gòu)上是相同的,并且各區(qū)塊中的區(qū)塊體數(shù)據(jù)也是對(duì)應(yīng)相同的,而區(qū)塊頭中的數(shù)據(jù)可能相同,也可能不同,甚至在快照結(jié)果區(qū)塊鏈中,各區(qū)塊的區(qū)塊頭中沒有實(shí)質(zhì)數(shù)據(jù),這需要根據(jù)具體需求來確定。
由于后續(xù)步驟中,還要對(duì)快照結(jié)果區(qū)塊鏈進(jìn)行修改,為了降低后續(xù)計(jì)算各區(qū)塊散列值的復(fù)雜度,默認(rèn)在通過數(shù)據(jù)快照得到的快照結(jié)果區(qū)塊鏈中各區(qū)塊的區(qū)塊頭數(shù)據(jù)為空。由此可以認(rèn)為,數(shù)據(jù)快照后得到的快照結(jié)果區(qū)塊鏈?zhǔn)且粋€(gè)“不完整”的區(qū)塊鏈,該區(qū)塊鏈中各區(qū)塊的區(qū)塊頭中,不包含能夠驗(yàn)證區(qū)塊鏈一致性的散列值。只有在快照結(jié)果區(qū)塊鏈的各區(qū)塊的區(qū)塊頭中增加了散列值,且這些散列值滿足區(qū)塊鏈的一致性驗(yàn)證要求,才認(rèn)為是一個(gè)“完整”的區(qū)塊鏈。
例如,圖5示出了數(shù)據(jù)快照后,對(duì)應(yīng)的快照對(duì)象區(qū)塊鏈和快照結(jié)果區(qū)塊鏈的形態(tài)圖樣例。從圖中可以看出,快照對(duì)象區(qū)塊鏈和快照結(jié)果區(qū)塊鏈在整體形態(tài)架構(gòu)上相同,兩個(gè)區(qū)塊鏈中的各區(qū)塊間的鏈接關(guān)系(第一鏈接關(guān)系)對(duì)應(yīng)相同,且區(qū)塊中區(qū)塊體數(shù)據(jù)對(duì)應(yīng)相同,區(qū)塊頭數(shù)據(jù)不一定相同,甚至快照結(jié)果區(qū)塊鏈中各區(qū)塊的區(qū)頭數(shù)據(jù)可以為空。
S420,對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;
為了適應(yīng)實(shí)際應(yīng)用中,針對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)的修改需求,以及區(qū)塊鏈中各區(qū)塊的鏈接組織形式調(diào)整的需求,可在數(shù)據(jù)快照后,對(duì)生成的快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊之間的鏈接關(guān)系進(jìn)行修改。
具體地,對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)進(jìn)行修改包括:對(duì)區(qū)塊體數(shù)據(jù)的內(nèi)容進(jìn)行增加、刪減和替換中的至少一種操作。
例如,圖6示出了對(duì)區(qū)塊體數(shù)據(jù)進(jìn)行修改的操作示意圖,如將區(qū)塊體數(shù)據(jù)中的數(shù)據(jù)1進(jìn)行刪除操作,將數(shù)據(jù)3添加到區(qū)塊體數(shù)據(jù)中的增加操作,以及將數(shù)據(jù)2替換為數(shù)據(jù)2’的替換操作。
具體地,對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊之間的鏈接關(guān)系進(jìn)行修改包括:
對(duì)區(qū)塊之間的鏈接關(guān)系進(jìn)行調(diào)換,
和/或,
刪除和/或增加一個(gè)或多個(gè)區(qū)塊之后,從新形成各區(qū)塊之間的鏈接關(guān)系。
其中,對(duì)區(qū)塊之間的鏈接關(guān)系進(jìn)行調(diào)換,是指在不增加或刪除區(qū)塊鏈中區(qū)塊的情況下,對(duì)現(xiàn)有區(qū)塊間的鏈接關(guān)系進(jìn)行調(diào)整。例如,圖7中所示的,將以區(qū)塊A作為父區(qū)塊、區(qū)塊B和區(qū)塊C作為子區(qū)塊構(gòu)成的樹形鏈接關(guān)系,調(diào)整為以區(qū)塊A作為區(qū)塊B的父區(qū)塊、區(qū)塊B作為區(qū)塊C的父區(qū)塊構(gòu)成的單鏈條鏈接關(guān)系。
其中,刪除和/或增加一個(gè)或多個(gè)區(qū)塊之后,從新形成各區(qū)塊之間的鏈接關(guān)系,是指在當(dāng)前形成的快照結(jié)果區(qū)塊鏈中,先刪除和/或增加一個(gè)或多個(gè)區(qū)塊,然后根據(jù)需要從新形成這些區(qū)塊之間的鏈接關(guān)系。例如,圖8中所示的,將以區(qū)塊A作為父區(qū)塊、區(qū)塊B和區(qū)塊C作為子區(qū)塊構(gòu)成的樹形鏈接關(guān)系的區(qū)塊鏈中,先增加一個(gè)區(qū)塊D,刪除區(qū)塊B,然后,根據(jù)需求,將區(qū)塊D鏈接在區(qū)塊A之后,從而形成新的樹形鏈接關(guān)系的區(qū)塊鏈。
具體地,當(dāng)對(duì)數(shù)據(jù)快照形成的快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊之間的鏈接關(guān)系進(jìn)行修改操作后,針對(duì)快照結(jié)果區(qū)塊鏈中各區(qū)塊有如下定義:
對(duì)區(qū)塊的區(qū)塊體數(shù)據(jù)進(jìn)行修改后的區(qū)塊仍與快照對(duì)象區(qū)塊鏈中原對(duì)應(yīng)的區(qū)塊保持對(duì)應(yīng)關(guān)系;
區(qū)塊之間的鏈接關(guān)系發(fā)生調(diào)換后對(duì)應(yīng)的區(qū)塊仍與快照對(duì)象區(qū)塊鏈中原對(duì)應(yīng)的區(qū)塊保持對(duì)應(yīng)關(guān)系;
增加的區(qū)塊在快照對(duì)象區(qū)塊鏈中不存在對(duì)應(yīng)的區(qū)塊。
S430,以快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的快照結(jié)果區(qū)塊鏈中與各父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;
例如,以圖5中,快照對(duì)象區(qū)塊鏈中的區(qū)塊A、區(qū)塊B作為父區(qū)塊,以快照結(jié)果區(qū)塊鏈中,與父區(qū)塊A對(duì)應(yīng)的區(qū)塊A1(A1的區(qū)塊體數(shù)據(jù)已修改)作為區(qū)塊A的子區(qū)塊;與父區(qū)塊B對(duì)應(yīng)的區(qū)塊B1(A1的區(qū)塊體數(shù)據(jù)已修改)作為區(qū)塊B的子區(qū)塊,從而將快照對(duì)象區(qū)塊鏈與快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,并形成第二鏈接關(guān)系。所謂第二鏈接關(guān)系即快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈之間的所有鏈接關(guān)系的總稱。如圖9所示的區(qū)塊鏈形態(tài)圖,為將快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接后的區(qū)塊鏈形態(tài)圖。需要說明的是,所謂將快照對(duì)象區(qū)塊鏈與快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,仍只是確定兩個(gè)區(qū)塊鏈之間的鏈接關(guān)系,而不涉及區(qū)塊鏈鏈接后的一致性驗(yàn)證,因此,組合鏈接后形成的區(qū)塊鏈中,快照結(jié)果區(qū)塊鏈中各區(qū)塊的區(qū)塊頭數(shù)據(jù)仍是不限定的。
在圖5和圖9所示的區(qū)塊鏈的形態(tài)圖中,快照結(jié)果區(qū)塊鏈中各區(qū)塊的區(qū)塊頭數(shù)據(jù)不限定,因此圖中以“區(qū)塊頭數(shù)據(jù)?”示出。
S440,按照第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈記為延展區(qū)塊鏈,將快照對(duì)象區(qū)塊鏈記為非延展區(qū)塊鏈。
例如,以圖9中示出的區(qū)塊鏈形態(tài)為例,按快照結(jié)果區(qū)塊鏈中各區(qū)塊的第一鏈接關(guān)系,以及修改后的快照結(jié)果區(qū)塊鏈與快照對(duì)象區(qū)塊鏈之間的第二鏈接關(guān)系,確定相應(yīng)各區(qū)塊之間的父子關(guān)系,然后根據(jù)父子關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成形態(tài)如圖10所示的拓展后的區(qū)塊鏈。
結(jié)合圖10所示,這里所謂的“依次生成”是指先生成區(qū)塊A1的散列值,該散列值為區(qū)塊A1的父區(qū)塊A中的所有數(shù)據(jù)經(jīng)不可逆算法生成的固定長度的字符串,該散列值為明文進(jìn)入?yún)^(qū)塊鏈的存證和不可篡改提供了保證。在得到區(qū)塊A1的散列值后,將其添加到區(qū)塊A1的區(qū)塊頭中,構(gòu)成區(qū)塊A1的區(qū)塊頭數(shù)據(jù)a3,修改后的區(qū)塊體數(shù)據(jù)a2和區(qū)塊頭數(shù)據(jù)a3共同構(gòu)成了區(qū)塊A1的完整數(shù)據(jù);然后按區(qū)塊之間的父子關(guān)系(由第一鏈接關(guān)系和第二鏈接關(guān)系確定),計(jì)算區(qū)塊B1的散列值,該散列值包括兩個(gè),分別為區(qū)塊B1的父區(qū)塊A1中的所有數(shù)據(jù)經(jīng)不可逆算法生成的固定長度的字符串,以及區(qū)塊B1的父區(qū)塊B中的所有數(shù)據(jù)經(jīng)不可逆算法生成的固定長度的字符串,將這兩個(gè)散列值分別添加到區(qū)塊B1的區(qū)塊頭中,構(gòu)成區(qū)塊B1的區(qū)塊頭數(shù)據(jù)b3,修改后的區(qū)塊體數(shù)據(jù)b2和區(qū)塊頭數(shù)據(jù)b3共同構(gòu)成了區(qū)塊B1的完整數(shù)據(jù)。在根據(jù)上述方法,依次計(jì)算完成所有修改后的快照結(jié)果區(qū)塊鏈中各區(qū)塊的區(qū)塊頭數(shù)據(jù)后,所形成的整體區(qū)塊鏈記為拓展后的區(qū)塊鏈。該拓展后的區(qū)塊鏈中,將修改后的快照結(jié)果區(qū)塊鏈作為后續(xù)的延展區(qū)塊鏈,將快照對(duì)象區(qū)塊鏈作為非延展區(qū)塊鏈。
其中,上述的不可逆算法可以為定長計(jì)算(哈希(Hash))算法,相應(yīng)的,經(jīng)不可逆算法得到的字符串可以為哈希值。
其中,在上述形成快照結(jié)果區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)時(shí),忽略了區(qū)塊頭數(shù)據(jù)中可能存在的其他控制數(shù)據(jù),如果區(qū)塊的區(qū)塊頭中存在該控制數(shù)據(jù),可將其與計(jì)算的散列值一起作為當(dāng)前區(qū)塊的區(qū)塊頭數(shù)據(jù)。
本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法,對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,然后,對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;接著,以快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的快照結(jié)果區(qū)塊鏈中與各父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;按照第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈記為延展區(qū)塊鏈,將快照對(duì)象區(qū)塊鏈作為非延展區(qū)塊鏈。該拓展后的區(qū)塊鏈可以清楚的保留區(qū)塊鏈在拓展過程中所進(jìn)行的修改操作的痕跡。
實(shí)施例二
圖11為本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法流程圖二,該方法實(shí)施例可視為圖4所示方法實(shí)施例的細(xì)化方法。如圖11所示,該區(qū)塊鏈的生成方法包括如下步驟:
S111,對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成延展區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,快照結(jié)果區(qū)塊鏈與快照對(duì)象區(qū)塊鏈中各區(qū)塊間的第一鏈接關(guān)系,以及區(qū)塊中區(qū)塊體數(shù)據(jù)的內(nèi)容對(duì)應(yīng)相同;步驟S111與步驟S410的內(nèi)容相似。
具體地,圖12示出了關(guān)于數(shù)據(jù)快照的一種具體方法,在根據(jù)該方法生成的快照結(jié)果區(qū)塊鏈的各區(qū)塊的區(qū)塊頭數(shù)據(jù)為空。如圖12所示,上述數(shù)據(jù)快照的方法包括如下步驟:
S121對(duì)快照對(duì)象區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)以及各區(qū)塊之間的第一鏈接關(guān)系進(jìn)行復(fù)制,并根據(jù)復(fù)制內(nèi)容搭建區(qū)塊鏈架構(gòu);
例如,以圖5中所示的快照對(duì)象區(qū)塊鏈為例,對(duì)區(qū)塊A和區(qū)塊B中的區(qū)塊體數(shù)據(jù)以及第一鏈接關(guān)系進(jìn)行復(fù)制,并以復(fù)制的區(qū)塊體數(shù)據(jù)構(gòu)件不包含區(qū)塊頭數(shù)據(jù)的區(qū)塊,然后將這些區(qū)塊按照第一鏈接關(guān)系搭建區(qū)塊鏈架構(gòu)。
S122,向搭建好的區(qū)塊鏈架構(gòu)中各區(qū)塊的區(qū)塊頭中添加針對(duì)本次數(shù)據(jù)快照的標(biāo)簽信息,以形成快照結(jié)果區(qū)塊鏈。
其中,上述標(biāo)簽信息中可以包括針對(duì)本次數(shù)據(jù)快照的時(shí)間信息、區(qū)塊的存儲(chǔ)位置信息等。
如圖13中,示出了根據(jù)上述步驟搭建的區(qū)塊鏈架構(gòu),其中,區(qū)塊鏈架構(gòu)中各區(qū)塊的區(qū)塊體數(shù)據(jù)與快照對(duì)象區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)對(duì)應(yīng)相同,且在區(qū)塊頭數(shù)據(jù)中添加了針對(duì)本次數(shù)據(jù)快照的標(biāo)簽信息,各區(qū)塊的區(qū)塊頭中的標(biāo)簽信息可以相同,也可以不同。
S112,對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;
S113,以快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的快照結(jié)果區(qū)塊鏈中與各父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;
S114,按照所述第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈記為延展區(qū)塊鏈,將快照對(duì)象區(qū)塊鏈作為非延展區(qū)塊鏈。
步驟S112~S114的內(nèi)容與步驟S420~S440的內(nèi)容對(duì)應(yīng)相同。
在步驟S114之后,還可繼續(xù)執(zhí)行步驟S115,以拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈作為延展區(qū)塊鏈進(jìn)行區(qū)塊鏈延展。
需要說明的是,本實(shí)施例中進(jìn)行數(shù)據(jù)快照操作和進(jìn)行區(qū)塊延展的操作均是以延展區(qū)塊鏈作為操作對(duì)象。
例如,圖14所示,為對(duì)延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照和區(qū)塊延展的綜合變化形態(tài)圖。如圖中所示,展示了4個(gè)狀態(tài)下的區(qū)塊鏈的形態(tài)圖:
T1時(shí)刻狀態(tài):該狀態(tài)為區(qū)塊鏈的初始狀態(tài),圖中僅包括由一個(gè)區(qū)塊A構(gòu)成的延展區(qū)塊鏈;
T2時(shí)刻狀態(tài):該狀態(tài)下,原延展區(qū)塊鏈已完成了第一次數(shù)據(jù)快照,生成了由區(qū)塊A1構(gòu)成的快照結(jié)果區(qū)塊鏈,該快照結(jié)果區(qū)塊鏈與對(duì)應(yīng)的快照對(duì)象區(qū)塊鏈鏈接組合,形成了拓展后的區(qū)塊鏈,且在拓展后的區(qū)塊鏈中,以快照結(jié)果區(qū)塊鏈作為延展區(qū)塊鏈,延展生成了區(qū)塊B;
T3時(shí)刻狀態(tài):該狀態(tài)下,延展區(qū)塊鏈完成了第二次數(shù)據(jù)快照,生成了由區(qū)塊A2和區(qū)塊B1構(gòu)成的快照結(jié)果區(qū)塊鏈,該快照結(jié)果區(qū)塊鏈與對(duì)應(yīng)的快照對(duì)象區(qū)塊鏈鏈接組合,形成了拓展后的區(qū)塊鏈,且在拓展后的區(qū)塊鏈中,以快照結(jié)果區(qū)塊鏈作為延展區(qū)塊鏈,延展生成了區(qū)塊C和區(qū)塊D;
T4時(shí)刻狀態(tài):該狀態(tài)下,延展區(qū)塊鏈完成了第三次數(shù)據(jù)快照,生成了由區(qū)塊A3、區(qū)塊B2、區(qū)塊C1和區(qū)塊D1構(gòu)成的快照結(jié)果區(qū)塊鏈,并且對(duì)該快照結(jié)果區(qū)塊鏈進(jìn)行了修改,刪除了區(qū)塊D1(在實(shí)際數(shù)據(jù)快照時(shí),也可不對(duì)區(qū)塊D執(zhí)行數(shù)據(jù)快照操作),然后將修改后的快照結(jié)果區(qū)塊鏈與對(duì)應(yīng)的快照對(duì)象區(qū)塊鏈鏈接組合,形成了拓展后的區(qū)塊鏈,且在拓展后的區(qū)塊鏈中,以快照結(jié)果區(qū)塊鏈作為延展區(qū)塊鏈,延展生成了區(qū)塊E。
其中,在第一次和第二次數(shù)據(jù)快照后,還可對(duì)生成的快照結(jié)果區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)進(jìn)行修改,并將修改后的快照結(jié)果區(qū)塊鏈與對(duì)應(yīng)的快照對(duì)象區(qū)塊鏈進(jìn)行組合鏈接。
本發(fā)明實(shí)施例中的在拓展中進(jìn)行修改的區(qū)塊鏈的生成方法,在實(shí)施例一的基礎(chǔ)上,對(duì)延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照的過程,進(jìn)行了詳細(xì)說明;在數(shù)據(jù)快照完成后,對(duì)得到的快照結(jié)果區(qū)塊鏈的區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改,并以各拓展后的區(qū)塊鏈中的數(shù)據(jù)快照區(qū)塊鏈作為延展區(qū)塊鏈進(jìn)行區(qū)塊延展,保持了真實(shí)區(qū)塊鏈的延展形態(tài)。
實(shí)施例三
圖15為本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成系統(tǒng)示意圖一,其中,所述區(qū)塊鏈由一個(gè)延展區(qū)塊鏈構(gòu)成,或者由一個(gè)延展區(qū)塊鏈和一個(gè)或多個(gè)非延展區(qū)塊鏈構(gòu)成,在區(qū)塊鏈的延展過程中,當(dāng)為新產(chǎn)生的數(shù)據(jù)生成新區(qū)塊時(shí),該新區(qū)塊鏈接在所述延展區(qū)塊鏈上。所述生成系統(tǒng)可以用于執(zhí)行如圖4所示的方法步驟。如圖15所示,該區(qū)塊鏈的生成系統(tǒng)包括:數(shù)據(jù)快照模塊151、數(shù)據(jù)修改模塊152、組合鏈接模塊153和區(qū)塊鏈生成模塊154,其中:
數(shù)據(jù)快照模塊151,用于對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成所述延展區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原所述延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,所述快照結(jié)果區(qū)塊鏈與所述快照對(duì)象區(qū)塊鏈中各區(qū)塊間的第一鏈接關(guān)系,以及區(qū)塊中區(qū)塊體數(shù)據(jù)的內(nèi)容對(duì)應(yīng)相同;數(shù)據(jù)修改模塊152,用于對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;組合鏈接模塊153,用于以快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的快照結(jié)果區(qū)塊鏈中與各父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;區(qū)塊鏈生成模塊154,用于按照第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈記為延展區(qū)塊鏈,將快照對(duì)象區(qū)塊鏈記為非延展區(qū)塊鏈。
本發(fā)明實(shí)施例提供的在拓展中進(jìn)行修改的區(qū)塊鏈的生成系統(tǒng),對(duì)當(dāng)前已形成的延展區(qū)塊鏈進(jìn)行數(shù)據(jù)快照,生成區(qū)塊鏈對(duì)應(yīng)的快照結(jié)果區(qū)塊鏈,原延展區(qū)塊鏈記為快照對(duì)象區(qū)塊鏈,然后,對(duì)快照結(jié)果區(qū)塊鏈中區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改;接著,以快照對(duì)象區(qū)塊鏈中的各區(qū)塊作為父區(qū)塊,以修改后的快照結(jié)果區(qū)塊鏈中與各父區(qū)塊對(duì)應(yīng)的各區(qū)塊作為子區(qū)塊,將快照對(duì)象區(qū)塊鏈與修改后的快照結(jié)果區(qū)塊鏈進(jìn)行組合鏈接,形成第二鏈接關(guān)系;按照第一鏈接關(guān)系和第二鏈接關(guān)系,依次生成修改后的快照結(jié)果區(qū)塊鏈中的各個(gè)區(qū)塊的散列值,并寫入到對(duì)應(yīng)的各個(gè)區(qū)塊的區(qū)塊頭中,以形成拓展后的區(qū)塊鏈,并將拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈記為延展區(qū)塊鏈,將快照對(duì)象區(qū)塊鏈記為非延展區(qū)塊鏈。該拓展后的區(qū)塊鏈可以清楚的保留區(qū)塊鏈在拓展過程中所進(jìn)行的修改操作的痕跡。
實(shí)施例四
本發(fā)明實(shí)施例對(duì)圖15所示系統(tǒng)實(shí)施例進(jìn)行了結(jié)構(gòu)和功能的細(xì)化,細(xì)化后的結(jié)構(gòu)可用于執(zhí)行如圖11所示的方法步驟。具體地,在圖15所示結(jié)構(gòu)的基礎(chǔ)上:
如圖16所示,上述數(shù)據(jù)快照模塊151具體可包括:
架構(gòu)搭建單元161,用于對(duì)快照對(duì)象區(qū)塊鏈中各區(qū)塊的區(qū)塊體數(shù)據(jù)以及各區(qū)塊之間的所述第一鏈接關(guān)系進(jìn)行復(fù)制,并根據(jù)復(fù)制內(nèi)容搭建區(qū)塊鏈架構(gòu);信息添加單元162,用于向搭建好的區(qū)塊鏈架構(gòu)中各區(qū)塊的區(qū)塊頭中添加針對(duì)本次數(shù)據(jù)快照的標(biāo)簽信息,以形成快照結(jié)果區(qū)塊鏈。
上述數(shù)據(jù)快照模塊151可具體用于執(zhí)行圖12所示的方法步驟。
進(jìn)一步地,上述數(shù)據(jù)修改模塊152具體可包括,數(shù)據(jù)修改單元,用于對(duì)區(qū)塊體數(shù)據(jù)的內(nèi)容進(jìn)行增加、刪減和替換中的至少一種操作。
進(jìn)一步地,上述數(shù)據(jù)修改模塊154具體還可包括,鏈接關(guān)系修改單元,用于對(duì)區(qū)塊之間的鏈接關(guān)系進(jìn)行調(diào)換,
和/或,
刪除和/或增加一個(gè)或多個(gè)區(qū)塊之后,從新形成各區(qū)塊之間的鏈接關(guān)系。
進(jìn)一步地,如圖17所示,在圖15所示的系統(tǒng)的基礎(chǔ)上還可包括:區(qū)塊延展模塊155,用于以拓展后的區(qū)塊鏈中快照結(jié)果區(qū)塊鏈作為延展區(qū)塊鏈進(jìn)行區(qū)塊鏈延展。
本發(fā)明實(shí)施例的在拓展中進(jìn)行修改的區(qū)塊鏈的生成系統(tǒng),在實(shí)施例三所示系統(tǒng)的基礎(chǔ)上,對(duì)數(shù)據(jù)快照模塊執(zhí)行延展區(qū)塊鏈的數(shù)據(jù)快照過程,進(jìn)行了詳細(xì)說明;在數(shù)據(jù)快照完成后,對(duì)得到的快照結(jié)果區(qū)塊鏈的區(qū)塊的區(qū)塊體數(shù)據(jù)和/或區(qū)塊間的鏈接關(guān)系進(jìn)行修改,并以各拓展后的區(qū)塊鏈中的數(shù)據(jù)快照區(qū)塊鏈作為延展區(qū)塊鏈進(jìn)行區(qū)塊延展,保持了真實(shí)區(qū)塊鏈的延展形態(tài)。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。