本公開(kāi)的實(shí)施例總體上涉及區(qū)塊鏈技術(shù),并且更具體地,涉及用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法、設(shè)備以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
區(qū)塊鏈作為一種新型的去中心化的記錄技術(shù)而受到廣泛關(guān)注。由于區(qū)塊鏈本身不支持?jǐn)?shù)據(jù)保護(hù),因此,數(shù)據(jù)保護(hù)成為區(qū)塊鏈應(yīng)用(例如商用)的重點(diǎn)技術(shù)之一。
目前已有的解決方案包括:1)多鏈+明文數(shù)據(jù),即每個(gè)區(qū)塊鏈節(jié)點(diǎn)需要維護(hù)多條區(qū)塊鏈;2)同態(tài)算法或零知識(shí)證明。這兩種解決方案中,第一種解決方案存在因單一區(qū)塊鏈上節(jié)點(diǎn)數(shù)有限而產(chǎn)生的備份風(fēng)險(xiǎn)及共識(shí)風(fēng)險(xiǎn);而第二種解決方案存在算法復(fù)雜度高,執(zhí)行效率低的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本公開(kāi)的各實(shí)施例提供了用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法、設(shè)備以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以至少部分地解決現(xiàn)有技術(shù)的上述以及其它潛在問(wèn)題。
在本公開(kāi)的第一方面,提供了一種用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法。該方法包括:在區(qū)塊鏈的第一節(jié)點(diǎn)處創(chuàng)建智能合約,智能合約被設(shè)定有權(quán)限管理字段,權(quán)限管理字段包括可訪問(wèn)地址列表;在第一節(jié)點(diǎn)處使用密鑰對(duì)智能合約進(jìn)行加密,并將經(jīng)加密的智能合約包括在第一節(jié)點(diǎn)處的區(qū)塊數(shù)據(jù)中;在第一節(jié)點(diǎn)處根據(jù)可訪問(wèn)地址列表向區(qū)塊鏈的第二節(jié)點(diǎn)分發(fā)密鑰;以及在第一節(jié)點(diǎn)處將區(qū)塊數(shù)據(jù)發(fā)送到第二節(jié)點(diǎn),
在本公開(kāi)的第二方面,提供了一種用于保護(hù)區(qū)塊鏈數(shù)據(jù)的設(shè)備。該設(shè)備包括:處理器;存儲(chǔ)器,耦合至處理器并且存儲(chǔ)有指令,該指令在由處理器執(zhí)行時(shí)使得設(shè)備執(zhí)行以下動(dòng)作:在區(qū)塊鏈的第一節(jié)點(diǎn)處創(chuàng)建智能合約,智能合約被設(shè)定有權(quán)限管理字段,權(quán)限管理字段包括可訪問(wèn)地址列表;在第一節(jié)點(diǎn)處使用密鑰對(duì)智能合約進(jìn)行加密,并將經(jīng)加密的智能合約包括在第一節(jié)點(diǎn)處的區(qū)塊數(shù)據(jù)中;在第一節(jié)點(diǎn)處根據(jù)可訪問(wèn)地址列表向區(qū)塊鏈的第二節(jié)點(diǎn)分發(fā)密鑰;以及在第一節(jié)點(diǎn)處將區(qū)塊數(shù)據(jù)發(fā)送到第二節(jié)點(diǎn)。
在本公開(kāi)的第三方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有存儲(chǔ)在其上的計(jì)算機(jī)可讀程序指令,該計(jì)算機(jī)可讀程序指令用于執(zhí)行根據(jù)以上在本公開(kāi)的第一方面中所描述的方法。
附圖說(shuō)明
現(xiàn)將僅通過(guò)示例的方式,參考所附附圖對(duì)本公開(kāi)的實(shí)施例進(jìn)行描述,在附圖中,相同或相似的附圖標(biāo)注表示相同或相似的元素,其中:
圖1示出了區(qū)塊鏈技術(shù)的示意圖;
圖2示出了根據(jù)本公開(kāi)的實(shí)施例的用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法的流程示意圖;
圖3示出了根據(jù)本公開(kāi)的實(shí)施例的用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法的示例實(shí)現(xiàn)方式;以及
圖4示出了根據(jù)本公開(kāi)的實(shí)施例的用于保護(hù)區(qū)塊鏈數(shù)據(jù)的設(shè)備的示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的實(shí)施例。雖然附圖中顯示了本公開(kāi)的某些實(shí)施例,然而應(yīng)當(dāng)理解的是,本公開(kāi)可以通過(guò)各種形式來(lái)實(shí)現(xiàn),而且不應(yīng)該被解釋為限于這里闡述的實(shí)施例,相反提供這些實(shí)施例是為了更加透徹和完整地理解本公開(kāi)。應(yīng)當(dāng)理解的是,本公開(kāi)的附圖及實(shí)施例僅用于示例性作用,并非用于限制本公開(kāi)的保護(hù)范圍。
本文使用的術(shù)語(yǔ)“包括”及其變形是開(kāi)放性包括,即“包括但不限于”。術(shù)語(yǔ)“基于”是“至少部分地基于”。術(shù)語(yǔ)“一個(gè)實(shí)施例”表示“至少一個(gè)實(shí)施例”;術(shù)語(yǔ)“另一實(shí)施例”表示“至少一個(gè)另外的實(shí)施例”。其他術(shù)語(yǔ)的相關(guān)定義將在下文描述中給出。
圖1示出了區(qū)塊鏈技術(shù)的示意圖,本公開(kāi)的示例實(shí)施例中的方法、設(shè)備以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以實(shí)現(xiàn)于這樣的場(chǎng)景(例如區(qū)塊鏈網(wǎng)絡(luò))中。應(yīng)當(dāng)理解的是,區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式。其中,所謂共識(shí)機(jī)制是區(qū)塊鏈系統(tǒng)中實(shí)現(xiàn)不同節(jié)點(diǎn)之間建立信任、獲取權(quán)益的數(shù)學(xué)算法。由于區(qū)塊鏈?zhǔn)且环N新型的去中心化的記錄技術(shù),因此受到了廣泛的關(guān)注,其應(yīng)用領(lǐng)域也日益廣泛。
關(guān)于智能合約的理念,密碼學(xué)家尼克·薩博(nickszabo)給出的定義是“一個(gè)智能合約是一套以數(shù)字形式定義的承諾(promises),包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”。從本質(zhì)上講,這些自動(dòng)合約的工作原理類似于其它計(jì)算機(jī)程序的if-then語(yǔ)句。智能合約只是以這種方式與真實(shí)世界的資產(chǎn)進(jìn)行交互。當(dāng)一個(gè)預(yù)先編好的條件被觸發(fā)時(shí),智能合約執(zhí)行相應(yīng)的合同條款。
傳統(tǒng)地,由于區(qū)塊鏈本身不支持?jǐn)?shù)據(jù)保護(hù),因此,數(shù)據(jù)保護(hù)成為區(qū)塊鏈商用的重點(diǎn)技術(shù)之一。以區(qū)塊鏈的典型應(yīng)用場(chǎng)景——供應(yīng)鏈管理為例,供應(yīng)鏈的上下游企業(yè)形成了區(qū)塊鏈上的各個(gè)節(jié)點(diǎn)。這一場(chǎng)景并不適合采用傳統(tǒng)的多鏈形式進(jìn)行數(shù)據(jù)交易。而且,對(duì)鏈上的任一企業(yè)而言,由于交易僅限于鏈上的部分企業(yè),因此,不必要的交易信息共享將會(huì)導(dǎo)致商業(yè)機(jī)密的泄露。
為了解決上述以及其他潛在的缺陷和問(wèn)題,本公開(kāi)的實(shí)施例提供了用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法、設(shè)備以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。下面將參考附圖描述本公開(kāi)的若干示例實(shí)施例。
圖2示出了根據(jù)本公開(kāi)的實(shí)施例的用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法200的流程示意圖。其中,該方法200能夠應(yīng)用于圖1所示的區(qū)塊鏈網(wǎng)絡(luò)中。
在202處,在區(qū)塊鏈的第一節(jié)點(diǎn)處創(chuàng)建智能合約,智能合約可以被設(shè)定有權(quán)限管理字段,權(quán)限管理字段包括可訪問(wèn)地址列表。
在一些示例實(shí)現(xiàn)中,權(quán)限管理字段還可以包括第二節(jié)點(diǎn)對(duì)智能合約的訪問(wèn)權(quán)限,訪問(wèn)權(quán)限可以包括設(shè)定讀寫權(quán)限的讀寫訪問(wèn)權(quán)限。
以三個(gè)區(qū)塊鏈節(jié)點(diǎn)為例,如圖3所示,其中示出了用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法的示例實(shí)現(xiàn)方式。該區(qū)塊鏈網(wǎng)絡(luò)中包括例如三個(gè)區(qū)塊鏈節(jié)點(diǎn),分別為區(qū)塊鏈節(jié)點(diǎn)1(稱為“第一節(jié)點(diǎn)”)、區(qū)塊鏈節(jié)點(diǎn)2(稱為“第二節(jié)點(diǎn)”)和區(qū)塊鏈節(jié)點(diǎn)3(稱為“第三節(jié)點(diǎn)”)。其中,在區(qū)塊鏈節(jié)點(diǎn)1處創(chuàng)建智能合約,在提交時(shí),可以增加額外的權(quán)限管理字段,該權(quán)限管理字段可包含可訪問(wèn)地址列表(例如可訪問(wèn)地址哈希值列表)。以此方式,私密數(shù)據(jù)可以通過(guò)智能合約進(jìn)行管理,配置相應(yīng)的訪問(wèn)權(quán)限。
附加地,在區(qū)塊鏈節(jié)點(diǎn)1處創(chuàng)建智能合約時(shí),權(quán)限管理字段除了可包含可訪問(wèn)地址列表之外,還可以包含區(qū)塊鏈節(jié)點(diǎn)2對(duì)智能合約的訪問(wèn)權(quán)限。此外,權(quán)限管理字段還可以包含區(qū)塊鏈節(jié)點(diǎn)3對(duì)智能合約的訪問(wèn)權(quán)限。該訪問(wèn)權(quán)限例如可以包括設(shè)定具體讀寫或特定數(shù)據(jù)接口訪問(wèn)的讀寫訪問(wèn)權(quán)限。應(yīng)當(dāng)理解的是,這里對(duì)“訪問(wèn)權(quán)限”的限定僅僅是示例性的,無(wú)意以任何方式限制本公開(kāi)的范圍。
例如,如圖3所示,可以在區(qū)塊鏈的區(qū)塊鏈節(jié)點(diǎn)1處創(chuàng)建智能合約x,并設(shè)定權(quán)限管理字段,權(quán)限管理字段的內(nèi)容為區(qū)塊鏈節(jié)點(diǎn)2和3的地址的哈希值(即"3c344bqypsl5fxabv67kgksnlr1urufne"和"3gfhwazfdtpubds396pird5jzhrdv9ni1n"),以及區(qū)塊鏈節(jié)點(diǎn)2和3對(duì)智能合約x的訪問(wèn)權(quán)限。
作為示例,具體實(shí)現(xiàn)的權(quán)限管理字段的內(nèi)容如下所示。
通過(guò)以上的示例,可以設(shè)置針對(duì)智能合約x的權(quán)限管理字段。而且,根據(jù)以上權(quán)限管理字段中的可訪問(wèn)地址列表,區(qū)塊鏈上的區(qū)塊鏈節(jié)點(diǎn)2和區(qū)塊鏈節(jié)點(diǎn)3可以訪問(wèn)在區(qū)塊鏈節(jié)點(diǎn)1處創(chuàng)建的智能合約x。附加地,由于權(quán)限管理字段中還可以設(shè)置有區(qū)塊鏈節(jié)點(diǎn)2和區(qū)塊鏈節(jié)點(diǎn)3對(duì)智能合約的訪問(wèn)權(quán)限,因此,根據(jù)這樣的訪問(wèn)權(quán)限,區(qū)塊鏈節(jié)點(diǎn)2和區(qū)塊鏈節(jié)點(diǎn)3對(duì)于智能合約x可以分別具有不同的訪問(wèn)權(quán)限。
在一些示例實(shí)現(xiàn)中,如果智能合約未設(shè)定有權(quán)限管理字段,則該智能合約將以公開(kāi)智能合約(如圖3所示的公開(kāi)智能合約)處理,即智能合約的創(chuàng)建和交易信息將以明文形式存在。
在204處,在第一節(jié)點(diǎn)處使用密鑰對(duì)智能合約進(jìn)行加密,并將經(jīng)加密的智能合約包括在第一節(jié)點(diǎn)處的區(qū)塊數(shù)據(jù)中。
例如,區(qū)塊數(shù)據(jù)為區(qū)塊鏈間通信使用,其中在第一節(jié)點(diǎn)處經(jīng)加密的智能合約可以包括在區(qū)塊數(shù)據(jù)中,而該區(qū)塊數(shù)據(jù)隨后可以被發(fā)送到區(qū)塊鏈上的其它節(jié)點(diǎn)(例如圖3中的區(qū)塊鏈節(jié)點(diǎn)2和區(qū)塊鏈節(jié)點(diǎn)3)。比如,智能合約的所有交易數(shù)據(jù)可以以密文形式添加到區(qū)塊數(shù)據(jù)中,隨后可以發(fā)送給區(qū)塊鏈上的其它節(jié)點(diǎn)。
以此方式,可以保證私密數(shù)據(jù)(例如第一節(jié)點(diǎn)處的智能合約y)以密文形式保存在區(qū)塊鏈上,所有節(jié)點(diǎn)均可備份,不存在因節(jié)點(diǎn)數(shù)的限制(例如傳統(tǒng)的多鏈+明文數(shù)據(jù)技術(shù)中存在的節(jié)點(diǎn)數(shù)的限制)帶來(lái)的備份風(fēng)險(xiǎn)。而且,由于具體實(shí)現(xiàn)時(shí)僅依賴于常用的加密算法,不存在高時(shí)延(例如傳統(tǒng)的同態(tài)算法技術(shù)中存在算法復(fù)雜度高帶來(lái)的高時(shí)延)而帶來(lái)的效率問(wèn)題。
在一些示例實(shí)現(xiàn)中,區(qū)塊數(shù)據(jù)還包括區(qū)塊號(hào)、交易數(shù)據(jù)、簽名、以及隨機(jī)數(shù)(nonce)。
例如,區(qū)塊數(shù)據(jù)是鏈上數(shù)據(jù)的一部分,且用于區(qū)塊鏈節(jié)點(diǎn)之間的數(shù)據(jù)通信,而智能合約數(shù)據(jù)可以包含在區(qū)塊數(shù)據(jù)中。在保存數(shù)據(jù)時(shí),區(qū)塊原始數(shù)據(jù)可以單獨(dú)保存,與智能合約的執(zhí)行狀態(tài)數(shù)據(jù)可以是分離的。由于區(qū)塊數(shù)據(jù)可被全網(wǎng)共享,因此,可以從根本上保證區(qū)塊鏈上的數(shù)據(jù)的一致性。
在206處,在第一節(jié)點(diǎn)處根據(jù)可訪問(wèn)地址列表向區(qū)塊鏈的第二節(jié)點(diǎn)分發(fā)密鑰。
在一些示例實(shí)現(xiàn)中,在第一節(jié)點(diǎn)處根據(jù)可訪問(wèn)地址列表向第二節(jié)點(diǎn)分發(fā)密鑰包括:以點(diǎn)對(duì)點(diǎn)通信進(jìn)行密鑰分發(fā),密鑰包括對(duì)稱密鑰。
如圖3所示,區(qū)塊鏈節(jié)點(diǎn)1創(chuàng)建了智能合約y,并在可訪問(wèn)地址列表中指定僅區(qū)塊鏈節(jié)點(diǎn)2可訪問(wèn)(例如圖3中s1——?jiǎng)?chuàng)建智能合約y,設(shè)置區(qū)塊鏈節(jié)點(diǎn)2可訪問(wèn))。相應(yīng)地,區(qū)塊鏈節(jié)點(diǎn)1可以以點(diǎn)對(duì)點(diǎn)通信僅向區(qū)塊鏈節(jié)點(diǎn)2分發(fā)密鑰(例如圖3中s2——發(fā)送智能合約y密鑰給區(qū)塊鏈節(jié)點(diǎn)2)。
在208處,在第一節(jié)點(diǎn)處將區(qū)塊數(shù)據(jù)發(fā)送到第二節(jié)點(diǎn)。
在一些示例實(shí)現(xiàn)中,圖2所示的方法200還可以包括:在第一節(jié)點(diǎn)處將區(qū)塊數(shù)據(jù)發(fā)送到區(qū)塊鏈的第三節(jié)點(diǎn),而不向第三節(jié)點(diǎn)分發(fā)密鑰。
在一些示例實(shí)現(xiàn)中,在第二節(jié)點(diǎn)處接收密鑰和區(qū)塊數(shù)據(jù),并使用密鑰從區(qū)塊數(shù)據(jù)中解密經(jīng)加密的智能合約,以創(chuàng)建經(jīng)解密的智能合約。附加地,在第二節(jié)點(diǎn)處還可以根據(jù)經(jīng)解密的智能合約來(lái)執(zhí)行交易。
如圖3所示,區(qū)塊鏈節(jié)點(diǎn)1在將經(jīng)加密的智能合約y包括在第一節(jié)點(diǎn)(即區(qū)塊鏈節(jié)點(diǎn)1)處的區(qū)塊數(shù)據(jù)中之后,可以以廣播的方式將區(qū)塊數(shù)據(jù)發(fā)送到包括第二節(jié)點(diǎn)(即區(qū)塊鏈節(jié)點(diǎn)2)和第三節(jié)點(diǎn)(即區(qū)塊鏈節(jié)點(diǎn)3)的所有區(qū)塊鏈節(jié)點(diǎn)上(例如,圖3中s3——加密智能合約y,以及圖3中s4——發(fā)送經(jīng)加密的智能合約y(其被包含在區(qū)塊數(shù)據(jù)中))。
此時(shí),由于區(qū)塊鏈節(jié)點(diǎn)2接收到從第一節(jié)點(diǎn)發(fā)送的智能合約y的密鑰,而區(qū)塊鏈節(jié)點(diǎn)3沒(méi)有接收到這樣的密鑰,因此,區(qū)塊鏈節(jié)點(diǎn)2可以在接收到區(qū)塊數(shù)據(jù)后采用這樣的密鑰進(jìn)行解密(例如圖3中s5——解密智能合約y),以便在區(qū)塊鏈節(jié)點(diǎn)2處創(chuàng)建經(jīng)解密的智能合約y(例如圖3中s6——建立智能合約y的邏輯數(shù)據(jù)分片),而區(qū)塊鏈節(jié)點(diǎn)3由于沒(méi)有接收到這樣的密鑰,因此將無(wú)法在區(qū)塊鏈節(jié)點(diǎn)3處創(chuàng)建經(jīng)解密的智能合約y(例如圖3中s5——解密智能合約y失敗)。
以此方式,在第一節(jié)點(diǎn)處創(chuàng)建智能合約并將經(jīng)加密的智能合約包括在第一節(jié)點(diǎn)處的區(qū)塊數(shù)據(jù)中之后,區(qū)塊鏈上的其它節(jié)點(diǎn)都可接收區(qū)塊數(shù)據(jù)(即實(shí)現(xiàn)所有節(jié)點(diǎn)均可備份),但只有擁有該智能合約的密鑰的節(jié)點(diǎn)才能進(jìn)行解密,執(zhí)行相應(yīng)的交易,從而實(shí)現(xiàn)對(duì)區(qū)塊鏈上數(shù)據(jù)的保護(hù)功能(例如,在交易僅限于供應(yīng)鏈上的部分企業(yè)時(shí),避免不必要的交易信息共享所導(dǎo)致的商業(yè)機(jī)密泄露的問(wèn)題)。
根據(jù)本公開(kāi)的實(shí)施例,方法200還可以包括附加的數(shù)據(jù)共識(shí)過(guò)程。例如,在208之后,第一節(jié)點(diǎn)與第二節(jié)點(diǎn)之間可以通過(guò)點(diǎn)對(duì)點(diǎn)通信來(lái)進(jìn)行數(shù)據(jù)共識(shí)。
這里的數(shù)據(jù)共識(shí)例如是指采用已有共識(shí)算法(例如raft/pbft)來(lái)確認(rèn)區(qū)塊鏈上多個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)一致性。以此方式,本公開(kāi)能夠在保證數(shù)據(jù)私密性的同時(shí)可達(dá)成數(shù)據(jù)共識(shí)。
在一些示例實(shí)現(xiàn)中,數(shù)據(jù)共識(shí)可以根據(jù)區(qū)塊號(hào)、智能合約的智能合約號(hào)、以及智能合約的歷史交易數(shù)據(jù)形成的交易數(shù)據(jù)摘要來(lái)進(jìn)行。
這里,數(shù)據(jù)共識(shí)(例如私密數(shù)據(jù)(如智能合約y)的共識(shí))可以具有唯一標(biāo)識(shí),即區(qū)塊號(hào)及智能合約號(hào)(例如可以是智能合約地址或唯一指定的id)。并且,可以采用現(xiàn)有共識(shí)算法來(lái)達(dá)成局部共識(shí)。
為獲得區(qū)塊號(hào)及智能合約號(hào),每個(gè)智能合約的歷史交易數(shù)據(jù)及當(dāng)前狀態(tài)在存儲(chǔ)時(shí)可以邏輯隔離。例如,底層可采用相同的物理數(shù)據(jù)庫(kù),也可采用不同的物理數(shù)據(jù)庫(kù)。在存儲(chǔ)時(shí),執(zhí)行完任一交易后,可以在智能合約的邏輯數(shù)據(jù)庫(kù)中插入一條以區(qū)塊號(hào)及智能合約號(hào)作為鍵值的記錄,以便用于后續(xù)完成數(shù)據(jù)共識(shí)。
相應(yīng)地,在一些示例實(shí)現(xiàn)中,智能合約的歷史交易數(shù)據(jù)和當(dāng)前狀態(tài)可以被邏輯隔離地存儲(chǔ)在數(shù)據(jù)庫(kù)中,智能合約的當(dāng)前狀態(tài)根據(jù)數(shù)據(jù)庫(kù)中存儲(chǔ)的區(qū)塊號(hào)和智能合約的智能合約號(hào)進(jìn)行查詢。
進(jìn)一步地,數(shù)據(jù)共識(shí)可以通過(guò)點(diǎn)對(duì)點(diǎn)通信完成,部署同一智能合約的節(jié)點(diǎn)(例如圖3中部署有同一智能合約y的區(qū)塊鏈節(jié)點(diǎn)1和區(qū)塊鏈節(jié)點(diǎn)2)可參與共識(shí)(例如圖3中s7——完成智能合約y的交易的區(qū)塊的共識(shí))。而且,數(shù)據(jù)共識(shí)可由提交智能合約的節(jié)點(diǎn)(例如圖3中創(chuàng)建智能合約的區(qū)塊鏈節(jié)點(diǎn)1)發(fā)起,通過(guò)點(diǎn)對(duì)點(diǎn)通信,發(fā)送等待共識(shí)的數(shù)據(jù),例如:
其中,以上等待共識(shí)的數(shù)據(jù)包括區(qū)塊號(hào)(blockhash),智能合約號(hào)(contract)以及根據(jù)所有該智能合約歷史數(shù)據(jù)形成的交易數(shù)據(jù)摘要(如上面提到的merkleroot值)。具體來(lái)說(shuō),merkleroot可以基于該智能合約的歷史交易數(shù)據(jù)來(lái)生成,對(duì)每次交易生成一個(gè)摘要(這里是哈希值),插入作為merkle數(shù)的底層節(jié)點(diǎn),同時(shí)更新根節(jié)點(diǎn)值。這里的等待共識(shí)的數(shù)據(jù)僅僅是示例性的,無(wú)意以任何方式限制本公開(kāi)的范圍。
由此可見(jiàn),由于私密數(shù)據(jù)(例如智能合約y)以密文形式保存在區(qū)塊數(shù)據(jù)中,區(qū)塊鏈上所有節(jié)點(diǎn)均可備份,而且還可以對(duì)區(qū)塊數(shù)據(jù)達(dá)成數(shù)據(jù)共識(shí),因此不存在因節(jié)點(diǎn)數(shù)的限制(例如傳統(tǒng)的多鏈+明文數(shù)據(jù)技術(shù)中存在節(jié)點(diǎn)數(shù)的限制)帶來(lái)的備份風(fēng)險(xiǎn)和共識(shí)風(fēng)險(xiǎn)。
圖4示出了根據(jù)本公開(kāi)的實(shí)施例的用于保護(hù)區(qū)塊鏈數(shù)據(jù)的設(shè)備400。該設(shè)備400包括處理器402和存儲(chǔ)器404。該存儲(chǔ)器404耦合至處理器402并且存儲(chǔ)有指令,該指令在由處理器執(zhí)行時(shí)使得設(shè)備執(zhí)行以下動(dòng)作:在區(qū)塊鏈的第一節(jié)點(diǎn)處創(chuàng)建智能合約,智能合約被設(shè)定有權(quán)限管理字段,權(quán)限管理字段包括可訪問(wèn)地址列表;在第一節(jié)點(diǎn)處使用密鑰對(duì)智能合約進(jìn)行加密,并將經(jīng)加密的智能合約包括在第一節(jié)點(diǎn)處的區(qū)塊數(shù)據(jù)中;在第一節(jié)點(diǎn)處根據(jù)可訪問(wèn)地址列表向區(qū)塊鏈的第二節(jié)點(diǎn)分發(fā)密鑰;以及在第一節(jié)點(diǎn)處將區(qū)塊數(shù)據(jù)發(fā)送到第二節(jié)點(diǎn)。
在一些示例實(shí)現(xiàn)中,用于保護(hù)區(qū)塊鏈數(shù)據(jù)的設(shè)備400可以對(duì)應(yīng)于區(qū)塊鏈上的任意節(jié)點(diǎn)。作為示例,每個(gè)區(qū)塊鏈節(jié)點(diǎn)可以包含相應(yīng)的處理器402和存儲(chǔ)器404,其中處理器402可以包括數(shù)據(jù)管理模塊406和密鑰管理模塊408。
數(shù)據(jù)管理模塊406例如可以負(fù)責(zé)管理區(qū)塊數(shù)據(jù)和智能合約數(shù)據(jù)。其中,區(qū)塊數(shù)據(jù)是鏈上數(shù)據(jù)的一部分,且用于節(jié)點(diǎn)間數(shù)據(jù)通信,而智能合約數(shù)據(jù)是包含在區(qū)塊數(shù)據(jù)中。在保存數(shù)據(jù)時(shí),區(qū)塊原始數(shù)據(jù)單獨(dú)保存,與智能合約的執(zhí)行狀態(tài)數(shù)據(jù)是分離的。區(qū)塊數(shù)據(jù)為全網(wǎng)共享,從根本上保證了鏈上數(shù)據(jù)的一致性。這里,管理私密數(shù)據(jù)的智能合約可以保存在獨(dú)立的邏輯數(shù)據(jù)分片中(例如管理私密數(shù)據(jù)的智能合約,其原始合約和交易數(shù)據(jù)均加密后保存在唯一的區(qū)塊鏈上,每個(gè)智能合約對(duì)應(yīng)一個(gè)獨(dú)立的數(shù)據(jù)分片),按區(qū)塊號(hào)及智能合約號(hào)(例如智能合約地址或唯一指定的id)查詢當(dāng)前狀態(tài)。
密鑰管理模塊408例如可以負(fù)責(zé)維護(hù)智能合約的密鑰的生成、分發(fā)、使用、存儲(chǔ)和備份等。密鑰管理模塊408還可以引入密鑰維護(hù)算法,如前向安全性或密鑰旋轉(zhuǎn)以提升安全性。此外,密鑰管理模塊408還可以根據(jù)數(shù)據(jù)管理模塊406給出的權(quán)限管理字段(例如權(quán)限列表)來(lái)分發(fā)密鑰,同時(shí)向數(shù)據(jù)管理模塊406提供數(shù)據(jù)的加密和解密的接口。
本公開(kāi)可以被實(shí)現(xiàn)為一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),具有存儲(chǔ)在其上的計(jì)算機(jī)可讀程序指令,計(jì)算機(jī)可讀程序指令可以用于執(zhí)行根據(jù)圖1中的示例實(shí)施例所描述的用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法。
取決于具體的需求和應(yīng)用場(chǎng)景,本公開(kāi)可以被具體實(shí)現(xiàn)為一種系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于執(zhí)行本公開(kāi)的各個(gè)方面的計(jì)算機(jī)可讀程序指令。
本公開(kāi)中所描述的方法和功能可以至少部分地由一個(gè)或多個(gè)硬件邏輯組件來(lái)執(zhí)行。例如但不限于,可以使用的硬件邏輯組件的示意性類型包括現(xiàn)場(chǎng)可編程門陣列(fpga)、專用集成電路(asic)、專用標(biāo)準(zhǔn)產(chǎn)品(assp)、片上系統(tǒng)(soc)、復(fù)雜可編程邏輯器件(cpld)等。
計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是――但不限于――電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、可擦式可編程只讀存儲(chǔ)器(eprom或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、便攜式壓縮盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能盤(dvd)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無(wú)線電波或者其它自由傳播的電磁波、通過(guò)波導(dǎo)或其它傳輸媒介傳播的電磁波(例如,通過(guò)光纖電纜的光脈沖)、或者通過(guò)電線傳輸?shù)碾娦盘?hào)。
這里所描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過(guò)網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無(wú)線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無(wú)線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
用于執(zhí)行本公開(kāi)操作的計(jì)算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(isa)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語(yǔ)言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語(yǔ)言包括面向?qū)ο蟮木幊陶Z(yǔ)言—諸如smalltalk、c++等,以及常規(guī)的過(guò)程式編程語(yǔ)言—諸如“c”語(yǔ)言或類似的編程語(yǔ)言。計(jì)算機(jī)可讀程序指令可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)—包括局域網(wǎng)(lan)或廣域網(wǎng)(wan)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。在一些實(shí)施例中,通過(guò)利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來(lái)個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場(chǎng)可編程門陣列(fpga)或可編程邏輯陣列(pla),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本公開(kāi)的各個(gè)方面。
這里參照根據(jù)本公開(kāi)實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本公開(kāi)的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。
這些計(jì)算機(jī)可讀程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其它設(shè)備以特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。
也可以把計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。
附圖中的流程圖和框圖顯示了根據(jù)本公開(kāi)的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
此外,雖然采用特定次序描繪了各操作,但是這應(yīng)當(dāng)理解為要求這樣操作以所示出的特定次序或以順序次序執(zhí)行,或者要求所有圖示的操作應(yīng)被執(zhí)行以取得期望的結(jié)果。在一定環(huán)境下,多任務(wù)和并行處理可能是有利的。同樣地,雖然在上面論述中包含了若干具體實(shí)現(xiàn)細(xì)節(jié),但是這些不應(yīng)當(dāng)被解釋為對(duì)本公開(kāi)的范圍的限制。在單獨(dú)的實(shí)現(xiàn)的上下文中描述的某些特征還可以組合地實(shí)現(xiàn)在單個(gè)實(shí)現(xiàn)中。相反地,在單個(gè)實(shí)現(xiàn)的上下文中描述的各種特征也可以單獨(dú)地或以任何合適的子組合的方式實(shí)現(xiàn)在多個(gè)實(shí)現(xiàn)中。
以下列出了本公開(kāi)的一些示例實(shí)現(xiàn)方式。
本公開(kāi)可以被實(shí)現(xiàn)為一種用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法,包括:在所述區(qū)塊鏈的第一節(jié)點(diǎn)處創(chuàng)建智能合約,所述智能合約被設(shè)定有權(quán)限管理字段,所述權(quán)限管理字段包括可訪問(wèn)地址列表;在所述第一節(jié)點(diǎn)處使用密鑰對(duì)所述智能合約進(jìn)行加密,并將經(jīng)加密的所述智能合約包括在所述第一節(jié)點(diǎn)處的區(qū)塊數(shù)據(jù)中;在所述第一節(jié)點(diǎn)處根據(jù)所述可訪問(wèn)地址列表向所述區(qū)塊鏈的第二節(jié)點(diǎn)分發(fā)所述密鑰;以及在所述第一節(jié)點(diǎn)處將所述區(qū)塊數(shù)據(jù)發(fā)送到所述第二節(jié)點(diǎn)。
在一些實(shí)施例中,所述權(quán)限管理字段還包括所述第二節(jié)點(diǎn)對(duì)所述智能合約的訪問(wèn)權(quán)限,所述訪問(wèn)權(quán)限包括設(shè)定讀寫權(quán)限的讀寫訪問(wèn)權(quán)限。
在一些實(shí)施例中,所述在所述第一節(jié)點(diǎn)處根據(jù)所述可訪問(wèn)地址列表向所述第二節(jié)點(diǎn)分發(fā)所述密鑰包括:以點(diǎn)對(duì)點(diǎn)通信進(jìn)行密鑰分發(fā),所述密鑰包括對(duì)稱密鑰。
在一些實(shí)施例中,在所述第二節(jié)點(diǎn)處接收所述密鑰和所述區(qū)塊數(shù)據(jù),并使用所述密鑰從所述區(qū)塊數(shù)據(jù)中解密經(jīng)加密的所述智能合約,以創(chuàng)建經(jīng)解密的所述智能合約。
在一些實(shí)施例中,在所述第二節(jié)點(diǎn)處根據(jù)經(jīng)解密的所述智能合約來(lái)執(zhí)行交易。
在一些實(shí)施例中,所述區(qū)塊數(shù)據(jù)還包括區(qū)塊號(hào)、交易數(shù)據(jù)、簽名、以及隨機(jī)數(shù)。
在一些實(shí)施例中,所述智能合約的歷史交易數(shù)據(jù)和當(dāng)前狀態(tài)被邏輯隔離地存儲(chǔ)在數(shù)據(jù)庫(kù)中,所述智能合約的當(dāng)前狀態(tài)根據(jù)所述數(shù)據(jù)庫(kù)中存儲(chǔ)的所述區(qū)塊號(hào)和所述智能合約的智能合約號(hào)進(jìn)行查詢。
在一些實(shí)施例中,所述第一節(jié)點(diǎn)與所述第二節(jié)點(diǎn)之間通過(guò)點(diǎn)對(duì)點(diǎn)通信來(lái)進(jìn)行數(shù)據(jù)共識(shí)。
在一些實(shí)施例中,所述數(shù)據(jù)共識(shí)根據(jù)所述區(qū)塊號(hào)、所述智能合約的智能合約號(hào)、以及所述智能合約的歷史交易數(shù)據(jù)形成的交易數(shù)據(jù)摘要來(lái)進(jìn)行。
在一些實(shí)施例中,所述方法還包括:在所述第一節(jié)點(diǎn)處將所述區(qū)塊數(shù)據(jù)發(fā)送到所述區(qū)塊鏈的第三節(jié)點(diǎn),而不向所述第三節(jié)點(diǎn)分發(fā)所述密鑰。
本公開(kāi)可以被實(shí)現(xiàn)為一種用于保護(hù)區(qū)塊鏈數(shù)據(jù)的設(shè)備,包括:處理器;存儲(chǔ)器,耦合至所述處理器并且存儲(chǔ)有指令,所述指令在由所述處理器執(zhí)行時(shí)使得所述設(shè)備執(zhí)行以下動(dòng)作:在所述區(qū)塊鏈的第一節(jié)點(diǎn)處創(chuàng)建智能合約,所述智能合約被設(shè)定有權(quán)限管理字段,所述權(quán)限管理字段包括可訪問(wèn)地址列表;在所述第一節(jié)點(diǎn)處使用密鑰對(duì)所述智能合約進(jìn)行加密,并將經(jīng)加密的所述智能合約包括在所述第一節(jié)點(diǎn)處的區(qū)塊數(shù)據(jù)中;在所述第一節(jié)點(diǎn)處根據(jù)所述可訪問(wèn)地址列表向所述區(qū)塊鏈的第二節(jié)點(diǎn)分發(fā)所述密鑰;以及在所述第一節(jié)點(diǎn)處將所述區(qū)塊數(shù)據(jù)發(fā)送到所述第二節(jié)點(diǎn)。
在一些實(shí)施例中,所述權(quán)限管理字段還包括所述第二節(jié)點(diǎn)對(duì)所述智能合約的訪問(wèn)權(quán)限,所述訪問(wèn)權(quán)限包括設(shè)定讀寫權(quán)限的讀寫訪問(wèn)權(quán)限。
在一些實(shí)施例中,所述在所述第一節(jié)點(diǎn)處根據(jù)所述可訪問(wèn)地址列表向所述第二節(jié)點(diǎn)分發(fā)所述密鑰包括:以點(diǎn)對(duì)點(diǎn)通信進(jìn)行密鑰分發(fā),所述密鑰包括對(duì)稱密鑰。
在一些實(shí)施例中,在所述第二節(jié)點(diǎn)處接收所述密鑰和所述區(qū)塊數(shù)據(jù),并使用所述密鑰從所述區(qū)塊數(shù)據(jù)中解密經(jīng)加密的所述智能合約,以創(chuàng)建經(jīng)解密的所述智能合約。
在一些實(shí)施例中,在所述第二節(jié)點(diǎn)處根據(jù)經(jīng)解密的所述智能合約來(lái)執(zhí)行交易。
在一些實(shí)施例中,所述區(qū)塊數(shù)據(jù)還包括區(qū)塊號(hào)、交易數(shù)據(jù)、簽名、以及隨機(jī)數(shù)。
在一些實(shí)施例中,所述智能合約的歷史交易數(shù)據(jù)和當(dāng)前狀態(tài)被邏輯隔離地存儲(chǔ)在數(shù)據(jù)庫(kù)中,所述智能合約的當(dāng)前狀態(tài)根據(jù)所述數(shù)據(jù)庫(kù)中存儲(chǔ)的所述區(qū)塊號(hào)和所述智能合約的智能合約號(hào)進(jìn)行查詢。
在一些實(shí)施例中,所述第一節(jié)點(diǎn)與所述第二節(jié)點(diǎn)之間通過(guò)點(diǎn)對(duì)點(diǎn)通信來(lái)進(jìn)行數(shù)據(jù)共識(shí)。
在一些實(shí)施例中,所述數(shù)據(jù)共識(shí)根據(jù)所述區(qū)塊號(hào)、所述智能合約的智能合約號(hào)、以及所述智能合約的歷史交易數(shù)據(jù)形成的交易數(shù)據(jù)摘要來(lái)進(jìn)行。
在一些實(shí)施例中,所述指令在由所述處理器執(zhí)行時(shí)使得所述設(shè)備還執(zhí)行以下動(dòng)作:在所述第一節(jié)點(diǎn)處將所述區(qū)塊數(shù)據(jù)發(fā)送到所述區(qū)塊鏈的第三節(jié)點(diǎn),而不向所述第三節(jié)點(diǎn)分發(fā)所述密鑰。
本公開(kāi)可以被實(shí)現(xiàn)為一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),具有存儲(chǔ)在其上的計(jì)算機(jī)可讀程序指令,所述計(jì)算機(jī)可讀程序指令用于執(zhí)行根據(jù)以上所描述的用于保護(hù)區(qū)塊鏈數(shù)據(jù)的方法。
通過(guò)以上描述和相關(guān)附圖中所給出的教導(dǎo),這里所給出的本公開(kāi)的許多修改形式和其它實(shí)施方式將被本公開(kāi)相關(guān)領(lǐng)域的技術(shù)人員所意識(shí)到。因此,所要理解的是,本公開(kāi)的實(shí)施方式并不局限于所公開(kāi)的具體實(shí)施方式,并且修改形式和其它實(shí)施方式意在包括在本公開(kāi)的范圍之內(nèi)。此外,雖然以上描述和相關(guān)附圖在部件和/或功能的某些示例組合形式的背景下對(duì)示例實(shí)施方式進(jìn)行了描述,但是應(yīng)當(dāng)意識(shí)到的是,可以由備選實(shí)施方式提供部件和/或功能的不同組合形式而并不背離本公開(kāi)的范圍。就這點(diǎn)而言,例如,與以上明確描述的有所不同的部件和/或功能的其它組合形式也被預(yù)期處于本公開(kāi)的范圍之內(nèi)。雖然這里采用了具體術(shù)語(yǔ),但是它們僅以一般且描述性的含義所使用而并非意在進(jìn)行限制。