本發(fā)明涉及數(shù)據(jù)庫
技術(shù)領(lǐng)域:
,特別是涉及一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫及工作方法。
背景技術(shù):
:自中本聰2008年發(fā)明比特幣(bitcoin),一種點(diǎn)對點(diǎn)的電子現(xiàn)金系統(tǒng),區(qū)塊鏈(blockchain)技術(shù)逐漸走進(jìn)人們的視野。除了比特幣系統(tǒng)外,還有以太坊(ethereum)、公證鏈(factom)是最廣為人知的三大使用區(qū)塊鏈技術(shù)的系統(tǒng)。然而,這三個(gè)系統(tǒng)各有利弊:比特幣和以太坊都是單鏈系統(tǒng);公證鏈雖然已有多鏈的雛形,但只有包含關(guān)系——二級數(shù)據(jù)(副鏈)被包含在一級數(shù)據(jù)(主鏈)中;三者中只有以太坊使用智能合約,能自動(dòng)執(zhí)行復(fù)雜的邏輯。單鏈系統(tǒng)的弊處在于所有數(shù)據(jù)存儲在一個(gè)賬本中,當(dāng)數(shù)據(jù)越來越多時(shí),網(wǎng)絡(luò)中一些存儲空間小的節(jié)點(diǎn)就被迫退出,不利于去中心化系統(tǒng)的穩(wěn)定性。鏈條若沒有智能合約,則只能執(zhí)行簡單且固定的邏輯,系統(tǒng)應(yīng)用層面的擴(kuò)展性非常弱;像比特幣和公證鏈只能記錄特定的項(xiàng)目,不能執(zhí)行更為復(fù)雜的邏輯。此外,區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu)雖具有不可篡改的性質(zhì),但不能保證數(shù)據(jù)的真實(shí)性;例如公證鏈,記錄的事項(xiàng)在發(fā)生之后,所以當(dāng)寫入的數(shù)據(jù)是錯(cuò)誤的時(shí)候,不可篡改的性質(zhì)反倒是個(gè)劣勢。只有像比特幣這樣的系統(tǒng),是“記錄即發(fā)生,不記錄不發(fā)生”的情況下,區(qū)塊鏈的數(shù)據(jù)才能保證絕對的真實(shí)性。最后,三個(gè)系統(tǒng)都非通用系統(tǒng),都是為了特定目的而搭建的區(qū)塊鏈具體應(yīng)用系統(tǒng);所以二次開發(fā)需要做大幅度修改。有鑒于此,特提出本發(fā)明,以改正上述現(xiàn)有技術(shù)的不足之處。技術(shù)實(shí)現(xiàn)要素:針對上述現(xiàn)有技術(shù),本發(fā)明所要解決的技術(shù)問題是提供一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫,該包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫提供了區(qū)塊鏈系統(tǒng)的通用核心庫,能加快區(qū)塊鏈應(yīng)用的開發(fā)速度;能實(shí)現(xiàn)多鏈交互,不僅可以避免單鏈模式賬本過大導(dǎo)致部分節(jié)點(diǎn)無法參與網(wǎng)絡(luò)的情況,還可以通過鏈條間的業(yè)務(wù)邏輯依賴關(guān)系保證數(shù)據(jù)真實(shí)性。本發(fā)明還提供了一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫的工作方法。為了解決上述技術(shù)問題,本發(fā)明提供了一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫,其包括智能合約模塊、數(shù)據(jù)打包模塊、區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊,所述智能合約模塊與數(shù)據(jù)打包模塊連接,所述數(shù)據(jù)打包模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接,所述智能合約模塊還與外部非鏈?zhǔn)綉?yīng)用模塊連接;所述智能合約模塊是用戶自定義模塊,用戶可對數(shù)據(jù)進(jìn)行自定義的約束,該模塊將按用戶的自定義的約束驗(yàn)證及處理數(shù)據(jù);所述數(shù)據(jù)打包模塊按照樹鏈的方式組織數(shù)據(jù);所述庫內(nèi)通訊模塊將采用pbft的算法來保證同鏈條主節(jié)點(diǎn)及備份節(jié)點(diǎn)的一致性。本發(fā)明的進(jìn)一步改進(jìn)為,所述區(qū)塊頭計(jì)算模塊包括樹根計(jì)算模塊和挖礦模塊,所述樹根計(jì)算模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接,所述挖礦模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接;所述樹根計(jì)算模塊將計(jì)算樹根的哈希值并保存在區(qū)塊頭中;所述挖礦模塊采用hashcash算法,通過遍歷區(qū)塊頭中的隨機(jī)數(shù)域來計(jì)算出符合一定工作量的區(qū)塊頭哈希值,該區(qū)塊頭的哈希值將存儲在下一個(gè)區(qū)塊頭中。本發(fā)明還提供了一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫的工作方法,其包括以下步驟:步驟一:非鏈?zhǔn)綉?yīng)用模塊發(fā)送數(shù)據(jù)到包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫;步驟二:接收到數(shù)據(jù)的節(jié)點(diǎn)檢查鏈id是否匹配,若不匹配,則發(fā)送到對應(yīng)鏈id的節(jié)點(diǎn),否則進(jìn)入步驟三;步驟三:進(jìn)入智能合約模塊,驗(yàn)證數(shù)據(jù)是否符合約束,若不符合約束,則向非鏈?zhǔn)綉?yīng)用模塊返回報(bào)錯(cuò)信息,否則進(jìn)入步驟四;步驟四:節(jié)點(diǎn)將收集到的數(shù)據(jù)打包,并計(jì)算出樹根的哈希值;步驟五:變更隨機(jī)數(shù)構(gòu)成區(qū)塊頭形成備選區(qū)塊;步驟六:驗(yàn)證備選區(qū)塊頭的哈希值是否符合約束,若不符合約束,則返回步驟五;否則新區(qū)塊形成,并更新到其他節(jié)點(diǎn)。與現(xiàn)有技術(shù)相比,本發(fā)明包括智能合約模塊、數(shù)據(jù)打包模塊、區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊,所述智能合約模塊與數(shù)據(jù)打包模塊連接,所述數(shù)據(jù)打包模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接,所述智能合約模塊還與外部非鏈?zhǔn)綉?yīng)用模塊連接。本發(fā)明還提供了一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫的工作方法。本發(fā)明提供了區(qū)塊鏈系統(tǒng)的通用核心庫,能加快區(qū)塊鏈應(yīng)用的開發(fā)速度;能實(shí)現(xiàn)多鏈交互,不僅可以避免單鏈模式賬本過大導(dǎo)致部分節(jié)點(diǎn)無法參與網(wǎng)絡(luò)的情況,還可以通過鏈條間的業(yè)務(wù)邏輯依賴關(guān)系保證數(shù)據(jù)真實(shí)性。附圖說明圖1是本發(fā)明的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫結(jié)構(gòu)框圖;圖2是發(fā)明的工作流程圖;圖3是發(fā)明的新生兒默克爾樹圖。具體實(shí)施方式下面結(jié)合附圖說明及具體實(shí)施方式對本發(fā)明進(jìn)一步說明。如圖1所示,一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫,其包括智能合約模塊、數(shù)據(jù)打包模塊、區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊,所述智能合約模塊與數(shù)據(jù)打包模塊連接,所述數(shù)據(jù)打包模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接,所述智能合約模塊還與外部非鏈?zhǔn)綉?yīng)用模塊連接;所述智能合約模塊是用戶自定義模塊,用戶可對數(shù)據(jù)進(jìn)行自定義的約束,該模塊將按用戶的自定義的約束驗(yàn)證及處理數(shù)據(jù);所述數(shù)據(jù)打包模塊按照樹鏈(一般是merkletree或merklepatriciatree)的方式組織數(shù)據(jù);所述庫內(nèi)通訊模塊將采用pbft(practicalbyzantinefaulttolerance)的算法來保證同鏈條主節(jié)點(diǎn)及備份節(jié)點(diǎn)的一致性。具體地,如圖1所示,所述區(qū)塊頭計(jì)算模塊包括樹根計(jì)算模塊和挖礦模塊,所述樹根計(jì)算模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接,所述挖礦模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接;所述樹根計(jì)算模塊將計(jì)算樹根的哈希值(如果是merkletree則可省去該模塊)并保存在區(qū)塊頭中;該模塊是為了保證區(qū)塊內(nèi)的數(shù)據(jù)不被篡改。所述挖礦模塊采用hashcash算法,通過遍歷區(qū)塊頭中的隨機(jī)數(shù)域來計(jì)算出符合一定工作量的區(qū)塊頭哈希值,該區(qū)塊頭的哈希值將存儲在下一個(gè)區(qū)塊頭中。挖礦模塊是構(gòu)成鏈條的核心,一方面通過將上一個(gè)區(qū)塊頭的哈希值存入下一個(gè)區(qū)塊頭中的方法來保證區(qū)塊數(shù)據(jù)不被篡改,一方面通過挖礦方式來證明工作量的方法來增加偽造鏈條的成本。如圖2所示,本發(fā)明還提供了一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫的工作方法,其包括以下步驟:步驟一:非鏈?zhǔn)綉?yīng)用模塊發(fā)送數(shù)據(jù)到包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫;步驟二:接收到數(shù)據(jù)的節(jié)點(diǎn)檢查鏈id是否匹配,若不匹配,則發(fā)送到對應(yīng)鏈id的節(jié)點(diǎn),否則進(jìn)入步驟三;步驟三:進(jìn)入智能合約模塊,驗(yàn)證數(shù)據(jù)是否符合約束,若不符合約束,則向非鏈?zhǔn)綉?yīng)用模塊返回報(bào)錯(cuò)信息,否則進(jìn)入步驟四;步驟四:節(jié)點(diǎn)將收集到的數(shù)據(jù)打包,并計(jì)算出樹根(一般是默克爾樹,merkletree)的哈希值;步驟五:變更隨機(jī)數(shù)構(gòu)成區(qū)塊頭形成備選區(qū)塊;步驟六:驗(yàn)證備選區(qū)塊頭的哈希值是否符合約束,若不符合約束,則返回步驟五;否則新區(qū)塊形成,并更新到其他節(jié)點(diǎn)。如圖3所示,下面以自然人一生周期為案例來詳細(xì)說明:區(qū)塊區(qū)塊包括區(qū)塊頭,新生兒信息列表,新增業(yè)務(wù)信息列表和事項(xiàng)申請列表四個(gè)域,如下表:域描述區(qū)塊頭前區(qū)塊頭哈希值,新生兒信息默克爾樹根(merkletreeroot),新業(yè)務(wù)信息默克爾樹根(一般為空),事項(xiàng)申請消息默克爾樹根,自然人mpt根(merkle-patricia-treeroot,這里的前綴可以是身份證號),業(yè)務(wù)mpt根(merkle-patricia-treeroot),時(shí)間戳。[1]每個(gè)自然人都擁有一個(gè)賬戶,mpt是以太坊為融入賬戶層加入?yún)^(qū)塊鏈對默克爾樹做的改進(jìn)。新生兒信息列表一生不變的身份信息,例如身份證號,基因信息,指紋等等。新增業(yè)務(wù)信息列表新增業(yè)務(wù)的代碼,也即是常說的智能合約。當(dāng)有新業(yè)務(wù)產(chǎn)生或舊業(yè)務(wù)具體流程發(fā)生變更時(shí),就會有新增業(yè)務(wù)信息產(chǎn)生。這所說的業(yè)務(wù)即是戶籍登記、結(jié)婚登記、離婚登記等具體業(yè)務(wù)。事項(xiàng)申請列表觸發(fā)智能合約的消息,例如戶籍申請,結(jié)婚申請,離婚申請等等。賬戶在自然人鏈中,每個(gè)登記在案的自然人都有一個(gè)賬戶,屬于外部持有賬戶類型(外部持有賬戶由私鑰控制,持有私鑰的的用戶可以從賬戶中發(fā)送消息;在自然人鏈中,做身份驗(yàn)證的可以是指紋或者其他能驗(yàn)證身份的電子數(shù)據(jù)。),這類賬戶由用戶控制。每種業(yè)務(wù)也有一個(gè)賬戶,屬于合約賬戶類型,也即是常說的智能合約;這類賬戶由代碼控制,消息可以觸發(fā)其內(nèi)含代碼。賬戶都存儲在mpt樹的葉子節(jié)點(diǎn)中:自然人賬戶存儲在自然人mpt樹的葉節(jié)點(diǎn)中,業(yè)務(wù)賬戶存儲在業(yè)務(wù)mpt樹的葉節(jié)點(diǎn)中。新生兒基礎(chǔ)信息錄入:步驟一:新生兒基礎(chǔ)信息(例如dna信息,身份證號等)錄入系統(tǒng)(非鏈?zhǔn)綉?yīng)用模塊)發(fā)送到數(shù)據(jù)到本發(fā)明的包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫;步驟二:接收到數(shù)據(jù)的自然人鏈節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn)(譬如接收到數(shù)據(jù)的是學(xué)位鏈節(jié)點(diǎn),數(shù)據(jù)的鏈id必不匹配,它將把數(shù)據(jù)發(fā)往自然人鏈節(jié)點(diǎn));步驟三:進(jìn)入智能合約模塊,該例中的智能合約主要驗(yàn)證錄入數(shù)據(jù)是否有效,譬如新生兒信息是否重復(fù)錄入,身份證號是否唯一等,若驗(yàn)證通過,則可進(jìn)入步驟四,否則向新生兒基礎(chǔ)信息錄入系統(tǒng)返回報(bào)錯(cuò)信息;步驟四:節(jié)點(diǎn)將一天(自然人鏈每天出一個(gè)區(qū)塊)的有效新生兒信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算出其默克爾樹根;自然人狀態(tài)mpt樹也產(chǎn)生新的葉節(jié)點(diǎn),從樹根到葉的前綴為新生兒的身份證號;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。新生兒上戶籍:步驟一:父母一方在公民賬戶(非鏈?zhǔn)綉?yīng)用模塊)發(fā)起戶籍登記申請,戶籍登記申請信息發(fā)送到本發(fā)明的包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫;步驟二:接收到數(shù)據(jù)的自然人鏈節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊,該例中的智能合約除了驗(yàn)證數(shù)據(jù)外還會對數(shù)據(jù)進(jìn)行計(jì)算處理;1.身份驗(yàn)證申請,驗(yàn)證戶籍登記申請發(fā)起人的身份信息;例如申請信息中發(fā)起人的指紋信息是否與自然人鏈中的指紋信息匹配;2.血緣驗(yàn)證申請,驗(yàn)證新生兒信息與父母dna的匹配;3.更新新生兒賬戶,錄入戶籍信息;4.向公民賬戶返回回執(zhí)信息;步驟四:節(jié)點(diǎn)將一天的事項(xiàng)申請(包括戶籍申請,結(jié)婚申請,銷戶申請等)經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算其默克爾樹根;更新自然人狀態(tài)的mpt樹根值;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。學(xué)位獲取,以本科學(xué)位為例:步驟一:大學(xué)招生系統(tǒng)(非鏈?zhǔn)綉?yīng)用模塊)發(fā)送錄取信息到本科學(xué)位鏈的主鏈;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊,向自然人鏈發(fā)送身份核實(shí)申請;自然人鏈:步驟一:本科學(xué)位核心鏈發(fā)送身份核實(shí)申請到自然人鏈;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊;1.從自然人鏈中核實(shí)該自然人的存在;2.更新自然人狀態(tài)(學(xué)歷狀態(tài):本科錄取);3.返回核實(shí)結(jié)果信息給本科學(xué)位鏈主鏈;步驟四:節(jié)點(diǎn)將一天的事項(xiàng)申請(包括戶籍申請,結(jié)婚申請,銷戶申請等)信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算其默克爾樹根;更新自然人狀態(tài)的mpt樹根值;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五;步驟四:節(jié)點(diǎn)將半年(錄取一年兩次)的有效錄取信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算出其默克爾樹根;學(xué)生狀態(tài)mpt樹也產(chǎn)生新的葉節(jié)點(diǎn),從樹根到葉的前綴為新學(xué)生的身份證號;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。學(xué)生注冊課程:步驟一:選課系統(tǒng)(非鏈?zhǔn)綉?yīng)用模塊)發(fā)送選課信息到成績鏈(本科學(xué)歷鏈的條件附屬鏈);步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊,向主鏈確認(rèn)學(xué)生信息核實(shí)申請;主鏈:步驟一:成績鏈發(fā)送學(xué)生信息核實(shí)申請到主鏈;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊;1.從主鏈中核實(shí)該學(xué)生的存在;2.更新學(xué)生狀態(tài)(選課狀態(tài));3.返回核實(shí)結(jié)果信息給成績鏈;步驟四:節(jié)點(diǎn)將半年的事項(xiàng)申請信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算默克爾樹根;更新學(xué)生狀態(tài)的mpt樹根值;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五;步驟四:節(jié)點(diǎn)將選課信息打包入塊并計(jì)算默克爾樹根;學(xué)生成績狀態(tài)的mpt產(chǎn)生新節(jié)點(diǎn),并更新mpt樹根;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。學(xué)生成績錄入:步驟一:教務(wù)系統(tǒng)向成績鏈發(fā)送成績錄入信息步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊;1.自動(dòng)批改學(xué)生試卷或作業(yè)(比如答題卡),得出學(xué)生成績;2.更新學(xué)生狀態(tài)(成績狀態(tài));3.返回成績信息到教務(wù)系統(tǒng);步驟四:節(jié)點(diǎn)將成績錄入信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算默克爾樹根;更新學(xué)生狀態(tài)mpt的樹根;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。學(xué)生學(xué)分修成:成績鏈:步驟一:教務(wù)系統(tǒng)向成績鏈發(fā)送學(xué)分修成申請;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊;1.驗(yàn)證學(xué)生該門課成績是否達(dá)到約束;2.返回結(jié)果信息到教務(wù)系統(tǒng);3.若達(dá)到約束,則向主鏈發(fā)送學(xué)分修成信息;步驟四:節(jié)點(diǎn)將學(xué)分申請信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算默克爾樹根;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。主鏈:步驟一:成績鏈發(fā)送學(xué)分修成信息到主鏈;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊,主要驗(yàn)證信息是否有效,譬如信息格式,日期等;并更新學(xué)生狀態(tài);步驟四:節(jié)點(diǎn)將學(xué)分修成信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算默克爾樹根;更新學(xué)生狀態(tài)mpt樹根;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。學(xué)生本科學(xué)歷獲得:本科鏈主鏈:步驟一:教務(wù)系統(tǒng)向主鏈發(fā)送本科學(xué)歷獲得申請;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊;1.驗(yàn)證學(xué)生學(xué)分是否達(dá)到約束;2.返回結(jié)果信息到教務(wù)系統(tǒng);3.若達(dá)到約束,更新學(xué)生狀態(tài)并向自然人鏈發(fā)送本科學(xué)歷獲得信息;步驟四:節(jié)點(diǎn)將學(xué)歷獲得申請信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算默克爾樹根;并更新學(xué)生狀態(tài)mpt樹根;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。自然人鏈:步驟一:本科鏈主鏈發(fā)送學(xué)歷獲得信息到自然人鏈;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊,主要驗(yàn)證信息是否有效,譬如信息格式,日期等;并更新自然人狀態(tài);步驟四:節(jié)點(diǎn)將學(xué)歷獲得信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算默克爾樹根;并更新自然人狀態(tài)mpt樹根;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。自然人死亡銷戶:步驟一:銷戶申請向自然人鏈發(fā)出;步驟二:接收到數(shù)據(jù)的鏈條節(jié)點(diǎn)檢查鏈id是否與自己匹配,若匹配,則進(jìn)入步驟三,否則發(fā)往對應(yīng)鏈id號的節(jié)點(diǎn);步驟三:進(jìn)入智能合約模塊,驗(yàn)證申請是否符合約束;若符合約束,更新自然人狀態(tài);步驟四:節(jié)點(diǎn)將銷戶申請信息經(jīng)數(shù)據(jù)打包模塊打包入塊,并計(jì)算默克爾樹根;更新自然人狀態(tài)mpt樹根;步驟五:變更區(qū)塊頭區(qū)域的隨機(jī)數(shù)域形成備選區(qū)塊;步驟六:驗(yàn)證區(qū)塊頭的哈希值是否小于門閥值,若小于門閥值,則廣播新區(qū)塊到數(shù)據(jù)庫全網(wǎng),更新備份節(jié)點(diǎn)的鏈條,否則回到步驟五。本發(fā)明的優(yōu)點(diǎn)在于,本發(fā)明包括智能合約模塊、數(shù)據(jù)打包模塊、區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊,所述智能合約模塊與數(shù)據(jù)打包模塊連接,所述數(shù)據(jù)打包模塊分別與區(qū)塊頭計(jì)算模塊、庫內(nèi)通信模塊連接,所述智能合約模塊還與外部非鏈?zhǔn)綉?yīng)用模塊連接。本發(fā)明還提供了一種包含智能合約的區(qū)塊鏈網(wǎng)式數(shù)據(jù)庫的工作方法。本發(fā)明提供了區(qū)塊鏈系統(tǒng)的通用核心庫,能加快區(qū)塊鏈應(yīng)用的開發(fā)速度;能實(shí)現(xiàn)多鏈交互,不僅可以避免單鏈模式賬本過大導(dǎo)致部分節(jié)點(diǎn)無法參與網(wǎng)絡(luò)的情況,還可以通過鏈條間的業(yè)務(wù)邏輯依賴關(guān)系保證數(shù)據(jù)真實(shí)性。以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12