本公開涉及信息技術(shù)領(lǐng)域,尤其涉及一種區(qū)塊鏈的權(quán)限控制方法、裝置、系統(tǒng)及節(jié)點設(shè)備。
背景技術(shù):
區(qū)塊鏈?zhǔn)怯蓞^(qū)塊鏈網(wǎng)絡(luò)中所有節(jié)點共同參與維護的去中心化分布式數(shù)據(jù)庫系統(tǒng),它是由一系列基于密碼學(xué)方法產(chǎn)生的數(shù)據(jù)塊組成,每個數(shù)據(jù)塊即為區(qū)塊鏈中的一個區(qū)塊。根據(jù)產(chǎn)生時間的先后順序,區(qū)塊被有序地鏈接在一起,形成一個數(shù)據(jù)鏈條,被形象地稱為區(qū)塊鏈。區(qū)塊鏈有其特有的區(qū)塊產(chǎn)生、交易產(chǎn)生和驗證協(xié)議,具有不可更改、不可偽造和完全可追溯等安全特性。
相關(guān)技術(shù)中的區(qū)塊鏈各節(jié)點間通過P2P對等網(wǎng)絡(luò)建立連接,每一個新加入的節(jié)點將會同步當(dāng)前鏈上所有的數(shù)據(jù)。區(qū)塊鏈數(shù)據(jù)對每個節(jié)點是完全公開的,節(jié)點可以隨意查看任何一個區(qū)塊任意一筆交易的信息。
由上,相關(guān)技術(shù)中的區(qū)塊鏈,由于節(jié)點加入鏈不受限制,鏈上的數(shù)據(jù)完全開放,適合于一些公眾化的、不涉及隱私的信息存儲,但是并不適合于區(qū)塊鏈上的數(shù)據(jù)具有隱私性的信息存儲。
技術(shù)實現(xiàn)要素:
本公開提供一種區(qū)塊鏈的權(quán)限控制方法、裝置、系統(tǒng)及節(jié)點設(shè)備,主要用于克服相關(guān)技術(shù)中存在的問題。
本公開的第一方面,提供一種區(qū)塊鏈的權(quán)限控制方法,包括:
將預(yù)置的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的一區(qū)塊中;
確定要加入到區(qū)塊鏈中的用戶節(jié)點所配置的目標(biāo)賬號的角色;
根據(jù)所述對應(yīng)關(guān)系和所述目標(biāo)賬號的角色,對配置了所述目標(biāo)賬號的所述用戶節(jié)點的權(quán)限進行控制。
第二方面,提供一種區(qū)塊鏈的權(quán)限控制裝置,包括:
對應(yīng)關(guān)系寫入模塊,被配置為將預(yù)置的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的一區(qū)塊中;
節(jié)點角色確定模塊,被配置為確定要加入到區(qū)塊鏈中的目標(biāo)賬號的角色;
權(quán)限控制模塊,被配置為根據(jù)所述對應(yīng)關(guān)系和所述目標(biāo)賬號的角色,對配置了所述目標(biāo)賬號的所述用戶節(jié)點的權(quán)限進行控制。
第三方面,提供一種區(qū)塊鏈節(jié)點的權(quán)限控制系統(tǒng),括:
管理員節(jié)點和用戶節(jié)點,其中,所述管理員節(jié)點為區(qū)塊鏈網(wǎng)絡(luò)中配置了管理員賬號的節(jié)點;
所述管理員節(jié)點,被配置為將預(yù)置的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的一區(qū)塊中;確定要加入到區(qū)塊鏈中的所述用戶節(jié)點所配置的目標(biāo)賬號的角色;以及根據(jù)所述對應(yīng)關(guān)系和所述目標(biāo)賬號的角色,對配置了所述目標(biāo)賬號的所述用戶節(jié)點的權(quán)限進行控制。
第四方面,提供一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含能夠由可編程的裝置執(zhí)行的計算機程序,所述計算機程序具有當(dāng)由所述可編程的裝置執(zhí)行時用于執(zhí)行上述區(qū)塊鏈節(jié)點的權(quán)限控制方法的代碼部分。
第五方面,提供一種非臨時性計算機可讀存儲介質(zhì)所述非臨時性計算機可讀存儲介質(zhì)中包括一個或多個程序,所述一個或多個程序用于執(zhí)行上述區(qū)塊鏈節(jié)點的權(quán)限控制方法。
第六方面,提供一種節(jié)點設(shè)備,包括:
上述的非臨時性計算機可讀存儲介質(zhì);以及
一個或者多個處理器,用于執(zhí)行所述非臨時性計算機可讀存儲介質(zhì)中的程序。
本公開實施例通過設(shè)置區(qū)塊鏈賬號的角色和權(quán)限,各個配置了不同賬號的用戶節(jié)點按照自己的角色和權(quán)限進行相應(yīng)的操作,使得只有相應(yīng)權(quán)限的賬號才能接入?yún)^(qū)塊鏈網(wǎng)絡(luò),同步區(qū)塊鏈上的數(shù)據(jù)和獲取權(quán)限范圍內(nèi)的數(shù)據(jù);實現(xiàn)對區(qū)塊鏈數(shù)據(jù)的保護,保證區(qū)塊鏈數(shù)據(jù)的安全性和隱私性。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
本公開的其他特征和優(yōu)點將在隨后的具體實施方式部分予以詳細(xì)說明。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。
圖1為相關(guān)技術(shù)中的區(qū)塊鏈網(wǎng)絡(luò)的示意圖;
圖2為本公開一實施例的區(qū)塊鏈網(wǎng)絡(luò)的示意圖;
圖3為本公開一實施例的區(qū)塊鏈的權(quán)限控制方法的流程示意圖;
圖4為本公開一實施例的區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu)示意圖;
圖5為本公開一實施例中角色和權(quán)限對應(yīng)關(guān)系變更示意圖;
圖6為本公開一實施例的為賬號分配角色的流程示意圖;
圖7為本公開一實施例的用戶節(jié)點間建立P2P連接的流程示意圖;
圖8為本公開一實施例的區(qū)塊鏈同步的流程示意圖;
圖9為本公開一實施例的新區(qū)塊或交易處理示意圖;
圖10為本公開一實施例的新區(qū)塊或交易的轉(zhuǎn)發(fā)示意圖;
圖11為本公開一實施例的區(qū)塊鏈的權(quán)限控制裝置的框圖;
圖12為根據(jù)一示例性實施例示出的一種用于區(qū)塊鏈的權(quán)限控制方法的裝置的框圖;
圖13為本公開一實施例的操作系統(tǒng)的分層示意圖。
具體實施方式
以下結(jié)合附圖對本公開的具體實施方式進行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實施方式僅用于說明和解釋本公開,并不用于限制本公開。
參見圖1為相關(guān)技術(shù)中的區(qū)塊鏈網(wǎng)絡(luò)的示意圖。區(qū)塊鏈網(wǎng)絡(luò)中的各個節(jié)點,通過P2P對等網(wǎng)絡(luò)建立連接,每個加入到區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點,都可以同步當(dāng)前區(qū)塊鏈上的所有數(shù)據(jù),使得區(qū)塊鏈數(shù)據(jù)的若干副本數(shù)據(jù)被保存到區(qū)塊鏈上的多個節(jié)點。
本公開實施例中,為了對區(qū)塊鏈中的數(shù)據(jù)進行保護,對配置了不同賬號的不同用戶節(jié)點進行角色區(qū)分和權(quán)限設(shè)置,使得配置了不同賬號的用戶節(jié)點在接入?yún)^(qū)塊鏈、同步區(qū)塊鏈上的數(shù)據(jù)、訪問區(qū)塊鏈中的數(shù)據(jù)等方面的權(quán)限是不相同的。
參見圖2,為本公開一實施例的區(qū)塊鏈網(wǎng)絡(luò)的示意圖。區(qū)塊鏈網(wǎng)絡(luò)中的每個用戶節(jié)點配置有一賬號,不同的賬號具有不同的角色和權(quán)限,由此,使得區(qū)塊鏈網(wǎng)絡(luò)的用戶節(jié)點具有與賬號相對應(yīng)的角色和權(quán)限。
區(qū)塊鏈數(shù)據(jù)寫入:由區(qū)塊鏈節(jié)點通過向區(qū)塊鏈網(wǎng)絡(luò)發(fā)布交易(Transaction)實現(xiàn)向區(qū)塊鏈寫入數(shù)據(jù)。該交易包括:區(qū)塊鏈節(jié)點按照預(yù)設(shè)的交易數(shù)據(jù)格式對生成的交易數(shù)據(jù)包,以及利用該區(qū)塊鏈節(jié)點自己的私鑰對該交易數(shù)據(jù)包進行的數(shù)字簽名,該數(shù)字簽名用于證明該區(qū)塊鏈節(jié)點的用戶的身份;而后,該交易被發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)后,被區(qū)塊鏈網(wǎng)絡(luò)中的“礦工”(即執(zhí)行PoW(Proof Of Work,工作證明)共識競爭機制的區(qū)塊鏈節(jié)點)記錄入?yún)^(qū)塊鏈中產(chǎn)生的新區(qū)塊,并將該新區(qū)塊發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)中,在該新區(qū)塊以及該新區(qū)塊所記錄的交易其他區(qū)塊鏈節(jié)點驗證通過和接受后,該新區(qū)塊所記錄的交易即被寫入?yún)^(qū)塊鏈。其中,區(qū)塊鏈中的新區(qū)塊是由上述的“礦工”通過執(zhí)行PoW或PoS等共識競爭機制而定期產(chǎn)生的,因此產(chǎn)生新區(qū)塊的時間間隔通常和上述的預(yù)設(shè)技術(shù)要求相關(guān),通過設(shè)置不同的預(yù)設(shè)技術(shù)要求可以改變區(qū)塊鏈產(chǎn)生新區(qū)塊的時間間隔。
在本公開的一實施例中,可將配置了相同角色和權(quán)限的賬號的用戶節(jié)點劃分為一個群組,例如,圖2中所示的群組1、群組2、群組3……。每個群組中的用戶節(jié)點數(shù)可為一個或多個。
在本公開的一實施例中,賬號角色與其對應(yīng)的權(quán)限信息如表1所示。
表1
在本公開的實施例中,管理員節(jié)點為區(qū)塊鏈網(wǎng)絡(luò)中配置有管理員賬號的用戶節(jié)點,其至少可執(zhí)行以下操作中的一者或多者:確定賬號的角色,對各賬號的權(quán)限信息進行更改,進行區(qū)塊的創(chuàng)建等。參見表1,管理員的權(quán)限包括:接入?yún)^(qū)塊鏈網(wǎng)絡(luò)、同步區(qū)塊鏈數(shù)據(jù)、訪問全部數(shù)據(jù)、訪問本群組數(shù)據(jù)和訪問本賬號相關(guān)數(shù)據(jù)。
群組1、群組2……中分別包括一個或多個配置相應(yīng)用戶賬號的用戶節(jié)點,這些用戶節(jié)點可參與區(qū)塊的創(chuàng)建等同一群組中的用戶節(jié)點具有相同的權(quán)限,這些權(quán)限包括以下權(quán)限中的一者或多者:接入?yún)^(qū)塊鏈網(wǎng)絡(luò)、同步區(qū)塊鏈數(shù)據(jù)、訪問全部數(shù)據(jù)、訪問本群組數(shù)據(jù)和訪問本賬號相關(guān)數(shù)據(jù)。
表1中的接入?yún)^(qū)塊鏈網(wǎng)絡(luò),是指配置了相應(yīng)賬號的用戶節(jié)點可被允許接入到區(qū)塊鏈網(wǎng)絡(luò)中。同步區(qū)塊鏈數(shù)據(jù),是指配置了相應(yīng)賬號的用戶節(jié)點可對區(qū)塊鏈進行同步,以將區(qū)塊鏈的數(shù)據(jù)副本保存到本地。訪問全部數(shù)據(jù),是指配置了相應(yīng)賬號的用戶節(jié)點可訪問(讀取)區(qū)塊鏈的區(qū)塊中的全部數(shù)據(jù)。訪問本群組數(shù)據(jù),是指配置了相應(yīng)賬號的用戶節(jié)點可訪問本群組內(nèi)其它用戶節(jié)點的相關(guān)數(shù)據(jù)。訪問本賬號相關(guān)數(shù)據(jù),是指配置了相應(yīng)賬號的用戶節(jié)點可訪問與自己賬號相關(guān)的數(shù)據(jù)。
在本公開的實施例中,賬號對應(yīng)的角色和權(quán)限可根據(jù)實際進行設(shè)置和變更。
參見圖3,為本公開一實施例的區(qū)塊鏈節(jié)點的權(quán)限控制方法的流程示意圖。該方法包括以下步驟:
在步驟301中,將預(yù)置的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的一區(qū)塊中。
在步驟302中,確定要加入到區(qū)塊鏈中的用戶節(jié)點所配置的目標(biāo)賬號的角色。
在步驟303中,根據(jù)對應(yīng)關(guān)系和所述目標(biāo)賬號的角色,對配置了目標(biāo)賬號的所述用戶節(jié)點的權(quán)限進行控制。
在本公開的實施例中,每個賬號都由一對鑰匙定義,一個私鑰和一個公鑰。賬號以地址為索引,地址由公鑰衍生而來,對公鑰用單向加密算法計算出20個字節(jié)的地址作為賬號地址。其中私鑰由用戶掌握而不發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)中,公鑰和賬號地址可以隨意發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)中。應(yīng)理解,賬號和區(qū)塊鏈中的用戶節(jié)點不存在一一對應(yīng)關(guān)系,一個賬號所對應(yīng)的私鑰,可以在任意一個區(qū)塊鏈的用戶節(jié)點上被使用。例如,對于管理員賬號,任何一個用戶節(jié)點只要配置了管理員賬號的私鑰,其即是管理員節(jié)點,而管理員賬號的公鑰或賬號地址已發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)中。
在本公開的實施例中,每個賬號的賬號屬性(狀態(tài))包括以下屬性字段:權(quán)限信息、賬號余額、計數(shù)器、賬號的合約代碼(如果有的話)、賬號的存儲(默認(rèn)為空)。其中,權(quán)限信息字段用于標(biāo)識賬號的角色和/或?qū)?yīng)的權(quán)限。計數(shù)器,用于確定每筆交易只能被處理一次。賬號余額為區(qū)塊鏈作為數(shù)字貨幣存儲賬號的余額。若賬號為合約賬號,則賬號的屬性包括賬號的合約代碼,每當(dāng)合約賬號收到一條消息,合約內(nèi)部的代碼就會被激活,允許它對內(nèi)部存儲進行讀取和寫入,和發(fā)送其它消息或創(chuàng)建合約。
參見圖4,本公開的實施例中,將賬號的賬號屬性通過默克爾樹進行保存。默克爾樹的樹根保存于區(qū)塊頭中。區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu)至少包括:上一區(qū)塊頭的哈希值、默克爾樹根、時間戳和區(qū)塊號等。默克爾樹根下面,每一個標(biāo)號為M開頭的葉節(jié)點都代表一個賬號。
在本公開的一實施例中,將上述表1中的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的一區(qū)塊的賬號屬性的權(quán)限信息中,以及將每個賬號的角色寫入到一區(qū)塊(例如,與寫賬號角色和權(quán)限的對應(yīng)關(guān)系不同的一區(qū)塊)的賬號屬性的權(quán)限信息中。應(yīng)理解,也可將每個賬號的角色和權(quán)限一起寫入到區(qū)塊中,則根據(jù)該存儲賬號的角色和權(quán)限的區(qū)塊即可得到賬號的權(quán)限。本公開一實施例中,為了節(jié)省存儲空間以及便于對賬戶的權(quán)限進行管理,將賬號的角色寫入到區(qū)塊中,而由于賬號角色和權(quán)限的對應(yīng)關(guān)系已存儲到區(qū)塊中,因此,根據(jù)區(qū)塊中的賬號角色和對應(yīng)關(guān)系,即可得到賬號的權(quán)限。
在一個實施例中,步驟301中,將表1中的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的區(qū)塊至少可通過以下三種方式:
方式1,角色為管理員的用戶節(jié)點將表1中的信息直接寫入到創(chuàng)始區(qū)塊(即第一個區(qū)塊)中,而無需通過挖礦的過程。
在一個實施例中,角色為管理員的用戶節(jié)點即該用戶節(jié)點配置有管理員賬號。管理員賬號可為預(yù)置的,即按照預(yù)設(shè)規(guī)則,產(chǎn)生一公鑰或賬號地址,作為管理員賬號。
方式2,在其它實施例中,將表1中的賬號角色和權(quán)限的對應(yīng)關(guān)系作為系統(tǒng)的固定配置信息,即已經(jīng)預(yù)先寫入到用戶節(jié)點所運行的客戶端系統(tǒng)中,當(dāng)用戶節(jié)點啟動系統(tǒng)時,即可獲取到包括表1所示信息的創(chuàng)始區(qū)塊。
方式3,區(qū)塊鏈網(wǎng)絡(luò)中的任一用戶節(jié)點或指定用戶節(jié)點,發(fā)布“交易”,該交易中包括表1所示的信息;區(qū)塊鏈網(wǎng)絡(luò)中的用戶節(jié)點競爭區(qū)塊創(chuàng)建權(quán)后,將表1所示的信息寫入到區(qū)塊的區(qū)塊頭的權(quán)限信息字段中。
當(dāng)采用上述方式1和方式2時,上述表1的信息作為一個特殊賬號的賬號屬性寫入?yún)^(qū)塊。該特殊賬號的賬號地址可為全0,例如,全0的20字節(jié)的地址。由此,創(chuàng)始區(qū)塊的區(qū)塊頭中,包括一特殊賬號,該賬號的賬號屬性中的權(quán)限信息中包括上述表1所示的信息。
在本公開的一實施例中,表1中的信息寫入到區(qū)塊中后,可作為接入到區(qū)塊鏈中的用戶節(jié)點的默認(rèn)權(quán)限。管理員節(jié)點可對該默認(rèn)權(quán)限進行變更,變更過程將在后續(xù)詳細(xì)介紹。
在本公開的實施例中,由于不同的賬號的角色和權(quán)限不相同,在配置了相應(yīng)賬號的用戶節(jié)點接入?yún)^(qū)塊鏈,配置了相應(yīng)賬號的用戶節(jié)點同步數(shù)據(jù),以及配置了相應(yīng)賬號的用戶節(jié)點訪問數(shù)據(jù)等過程中,將對用戶節(jié)點所配置的賬號的權(quán)限進行確認(rèn),使用戶節(jié)點被受控接入、讀取等,對區(qū)塊鏈中的數(shù)據(jù)進行保護。
本公開實施例通過改變區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu),在區(qū)塊頭的賬號屬性中增加對不同賬號的角色和權(quán)限進行區(qū)分的字段,易于實現(xiàn),使得區(qū)塊鏈節(jié)點對賬號權(quán)限的識別過程更加高效,實現(xiàn)對區(qū)塊鏈數(shù)據(jù)的保護,保證區(qū)塊鏈數(shù)據(jù)的安全性和隱私性。
賬號對應(yīng)的角色和權(quán)限的變更
參見圖5,管理員節(jié)點可對表1中的角色和權(quán)限的對應(yīng)關(guān)系進行變更,以及對每個賬號的角色進行變更。管理員節(jié)點進行變更時,發(fā)布“交易”到區(qū)塊鏈網(wǎng)絡(luò)中,該“交易”中包括變更后的信息,例如,變更后的角色和權(quán)限的對應(yīng)關(guān)系,變更后的賬號的角色等。區(qū)塊鏈網(wǎng)絡(luò)中的礦工節(jié)點進行挖礦,以將變更后的信息存儲到區(qū)塊鏈的一新建的目標(biāo)區(qū)塊中。若表1中的對應(yīng)關(guān)系,經(jīng)變更后被存儲到目標(biāo)區(qū)塊中,則后續(xù)過程中,需要查詢權(quán)限與角色的對應(yīng)關(guān)系時,通過特殊賬號到該目標(biāo)區(qū)塊進行查詢。
賬號的角色分配及配置了相應(yīng)賬號的用戶節(jié)點接入?yún)^(qū)塊鏈
基于上述的區(qū)塊頭數(shù)據(jù)結(jié)構(gòu),參見圖6,本公開實施例中,加入到區(qū)塊鏈中的用戶節(jié)點,需要配置了已被分配角色的賬號,且將其角色按照上述的區(qū)塊頭數(shù)據(jù)結(jié)構(gòu)存儲到區(qū)塊中。
初始時,區(qū)塊鏈網(wǎng)絡(luò)中可預(yù)置預(yù)設(shè)個數(shù)的管理員節(jié)點。這里的預(yù)置,是指為用戶節(jié)點分配管理員賬號,使其成為管理員節(jié)點。該預(yù)設(shè)個數(shù)的管理員節(jié)點之間建立P2P連接,組成初始的區(qū)塊鏈網(wǎng)絡(luò)。按照上述實施例所述,該預(yù)設(shè)個數(shù)的管理員節(jié)點至少存儲有一區(qū)塊,該區(qū)塊中包括了上述表1所示的信息。應(yīng)理解,預(yù)設(shè)個數(shù)的管理員節(jié)點可為一個或多個。
在步驟601中,當(dāng)一用戶節(jié)點需要加入到區(qū)塊鏈網(wǎng)絡(luò)時,向任一管理員節(jié)點發(fā)送請求信息。請求信息中至少包括用戶節(jié)點所配置賬號的賬號地址和用戶標(biāo)識信息。在一個實施例中,該賬號地址由用戶節(jié)點生成。用戶標(biāo)識信息可為以下信息中的一者或多者:用戶名稱、用戶編號和用戶代碼等。
在步驟602中,接收到請求信息的管理員節(jié)點,根據(jù)請求信息中的用戶標(biāo)識信息,確定用戶節(jié)點所配置的賬號的角色。在一個實施例中,管理員節(jié)點根據(jù)賬號和/或用戶標(biāo)識信息,確定用戶節(jié)點的合法性,并在確定用戶合法后確定用戶節(jié)點所配置的賬號的角色。管理員節(jié)點在確定用戶節(jié)點所配置的賬號的角色時,可根據(jù)預(yù)設(shè)規(guī)則進行確定,例如,該預(yù)設(shè)規(guī)則可為,用戶標(biāo)識信息與角色的對應(yīng)關(guān)系。
在步驟603中,管理員節(jié)點確定了用戶節(jié)點所配置的賬號的角色后,向區(qū)塊鏈網(wǎng)絡(luò)中發(fā)布“交易”,該交易中包括請求接入?yún)^(qū)塊鏈網(wǎng)絡(luò)的用用戶節(jié)點所配置的賬號的賬號地址和角色。
在步驟604中,區(qū)塊鏈網(wǎng)絡(luò)中競爭到新區(qū)塊創(chuàng)建權(quán)的用戶節(jié)點,將交易中的信息寫入到新區(qū)塊后,向區(qū)塊鏈網(wǎng)絡(luò)發(fā)布新區(qū)塊。其中,將角色寫入到區(qū)塊頭的權(quán)限信息字段。
在步驟605中,區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點接收到新區(qū)塊,并確認(rèn)區(qū)塊合法后,將其寫入到區(qū)塊鏈中。
本公開實施例,可實現(xiàn)在接入?yún)^(qū)塊鏈前,對用戶節(jié)點所配置的賬號的角色的分配,而由于角色與權(quán)限的對應(yīng)關(guān)系已存儲到一區(qū)塊中,因此,根據(jù)存儲角色與權(quán)限對應(yīng)關(guān)系的區(qū)塊以及存儲用戶節(jié)點所配置賬號的賬號角色的區(qū)塊,即可確定用戶節(jié)點所配置賬號的權(quán)限。
應(yīng)理解,管理員節(jié)點可為發(fā)送請求信息的用戶節(jié)點所配置的賬號分配角色,若接收到請求信息的節(jié)點不是管理員節(jié)點,則其不對請求信息進行處理,而將請求信息發(fā)送給與自己相連接的節(jié)點,使得請求信息最終被一管理員節(jié)點接收到。
由上述步驟601-步驟605,用戶節(jié)點所配置的賬號被分配了角色后,可向區(qū)塊鏈網(wǎng)絡(luò)中的用戶節(jié)點發(fā)起P2P連接建立請求。
參見圖7,為本公開一實施例的用戶節(jié)點建立P2P連接的流程示意圖。
在步驟701中,區(qū)塊鏈網(wǎng)絡(luò)中的用戶節(jié)點B接收到一經(jīng)管理員節(jié)點分配了角色的用戶節(jié)點A發(fā)送的連接建立請求時,識別出發(fā)起連接建立請求的用戶節(jié)點A所配置的賬號的賬號信息。應(yīng)理解,用戶節(jié)點B可為管理員節(jié)點或加入到區(qū)塊鏈網(wǎng)絡(luò)中的任一用戶節(jié)點。
在步驟702中,用戶節(jié)點B從區(qū)塊鏈中獲取該賬號對應(yīng)的區(qū)塊的區(qū)塊頭的權(quán)限信息字段,并獲取存儲賬號角色與權(quán)限的對應(yīng)關(guān)系的區(qū)塊的區(qū)塊頭的權(quán)限信息字段(權(quán)限信息字段中存儲了賬號的角色),以確定該發(fā)起連接建立請求的用戶節(jié)點A所配置的賬號是否有接入?yún)^(qū)塊鏈網(wǎng)絡(luò)的權(quán)限。
在一個實施例中,若未查詢到用戶節(jié)點A所配置的賬號的賬號信息,或用戶節(jié)點A所配置的賬號的權(quán)限不包括接入?yún)^(qū)塊鏈網(wǎng)絡(luò),則用戶節(jié)點B不與用戶節(jié)點A建立P2P連接。若該用戶節(jié)點所配置的賬號有接入?yún)^(qū)塊鏈網(wǎng)絡(luò)的權(quán)限則與其建立P2P連接。
當(dāng)用戶節(jié)點接入到區(qū)塊鏈網(wǎng)絡(luò)中后,可根據(jù)自己所配置的賬號的權(quán)限進行區(qū)塊鏈的同步、數(shù)據(jù)訪問等操作。
用戶節(jié)點對區(qū)塊鏈的同步
參見圖8,在本公開的實施例中,一個用戶節(jié)點與區(qū)塊鏈節(jié)點建立連接,即接入?yún)^(qū)塊鏈網(wǎng)絡(luò)后,需要進行區(qū)塊鏈的同步。同步區(qū)塊鏈的過程包括:
在步驟801中,對等節(jié)點查詢該用戶節(jié)點所配置的賬號是否具有同步區(qū)塊鏈數(shù)據(jù)的權(quán)限,若有同步區(qū)塊鏈的權(quán)限,則向其發(fā)送包含區(qū)塊鏈中區(qū)塊的哈希值的列表(inventor)消息。
在一個實施例中,根據(jù)用戶節(jié)點所配置賬號的賬號地址對應(yīng)的賬號屬性中的權(quán)限信息字段,以及賬號角色和權(quán)限的對應(yīng)關(guān)系,確定用戶節(jié)點所配置的賬號是否具有同步區(qū)塊鏈數(shù)據(jù)的權(quán)限。
在步驟802中,用戶節(jié)點接收到列表消息,則向與之相連的對等節(jié)點請求區(qū)塊,以對區(qū)塊鏈進行同步。
配置了具有同步區(qū)塊鏈數(shù)據(jù)權(quán)限的賬號的用戶節(jié)點可將區(qū)塊鏈同步到本地,但對同步到本地的區(qū)塊的訪問是受限的。
參見圖9,在本公開的一實施例中,為了進一步保證區(qū)塊建立的安全性,當(dāng)區(qū)塊鏈網(wǎng)絡(luò)中的用戶節(jié)點C接收到用戶節(jié)點D發(fā)送的新區(qū)塊或交易時,用戶節(jié)點C不僅要驗證新區(qū)塊和交易的合法性,還根據(jù)用戶節(jié)點D所配置的賬號的賬號信息,查詢其權(quán)限信息。應(yīng)理解,權(quán)限信息的查詢和上述實施例相同,即獲取賬號對應(yīng)的區(qū)塊的區(qū)塊頭的權(quán)限信息字段以及存儲賬號角色和權(quán)限對應(yīng)關(guān)系的區(qū)塊后,確定其對應(yīng)的權(quán)限信息。用戶節(jié)點C根據(jù)用戶節(jié)點D所配置的賬號的權(quán)限信息,確定是否對接收到的新區(qū)塊或交易進行處理。例如,若用戶節(jié)點D所配置的賬號不具有接入?yún)^(qū)塊鏈網(wǎng)絡(luò)的權(quán)限,或用戶節(jié)點D所配置的賬號已被管理員節(jié)點刪除等情況,則不對用戶節(jié)點D發(fā)送的新區(qū)塊或交易進行處理,避免用戶節(jié)點D為“無權(quán)限節(jié)點”的情況下,所帶來的安全隱患。應(yīng)理解,用戶節(jié)點C可為管理員節(jié)點或加入到區(qū)塊鏈網(wǎng)絡(luò)中的任一用戶節(jié)點。
參見圖10,在本公開的一實施例中,為了避免“無權(quán)限節(jié)點”帶來的安全隱患,當(dāng)用戶節(jié)點產(chǎn)生新區(qū)塊或收到交易時,檢查與本用戶節(jié)點相連接的所有其它節(jié)點所配置的賬號的權(quán)限信息,以確定是否向其發(fā)送新區(qū)塊或交易。由此,可避免向“無權(quán)限節(jié)點”發(fā)送新區(qū)塊或交易。且當(dāng)用戶節(jié)點所配置的賬號的權(quán)限發(fā)生變化,例如,管理員節(jié)點刪除用戶節(jié)點所配置的賬號、更新用戶節(jié)點所配置的賬號權(quán)限等時,對于一些被刪除的用戶節(jié)點,不再向其發(fā)送區(qū)塊和交易,保證區(qū)塊鏈數(shù)據(jù)的安全性。
用戶節(jié)點對區(qū)塊鏈數(shù)據(jù)的訪問
在一個實施例中,用戶節(jié)點對同步到本地的數(shù)據(jù)進行訪問時,需要通過相應(yīng)的訪問接口。該訪問接口用于根據(jù)用戶節(jié)點所配置的賬號的權(quán)限對數(shù)據(jù)進行過濾。訪問接口對數(shù)據(jù)的過濾規(guī)則可為預(yù)置的,以實現(xiàn)根據(jù)用戶節(jié)點所配置的賬號的角色和權(quán)限,為其提供相應(yīng)數(shù)據(jù)的訪問權(quán)限。訪問接口還可設(shè)置為根據(jù)區(qū)塊鏈中的權(quán)限信息,調(diào)整過濾規(guī)則,以為用戶節(jié)點提供相應(yīng)數(shù)據(jù)的訪問權(quán)限。
由此,當(dāng)一個用戶節(jié)點需要訪問區(qū)塊鏈的全部數(shù)據(jù)時,訪問接口可根據(jù)用戶節(jié)點所配置的賬號的權(quán)限信息判斷其是否具有相應(yīng)的權(quán)限。在該用戶節(jié)點所配置的賬號具有相應(yīng)的權(quán)限時,向用戶節(jié)點提供全部數(shù)據(jù)。
當(dāng)用戶節(jié)點需要訪問本群組數(shù)據(jù)時,訪問接口可根據(jù)用戶節(jié)點所配置的賬號的權(quán)限信息判斷其是否具有訪問本群組數(shù)據(jù)的權(quán)限。在該用戶節(jié)點所配置的賬號具有訪問本群組數(shù)據(jù)的權(quán)限時,向其提供本群組數(shù)據(jù)。
當(dāng)用戶節(jié)點需要訪問本賬號相關(guān)數(shù)據(jù)時,訪問接口可根據(jù)用戶節(jié)點所配置的賬號的權(quán)限信息判斷其是否具有訪問本賬號相關(guān)數(shù)據(jù)的權(quán)限。在該用戶節(jié)點所配置的賬號具有訪問本賬號相關(guān)數(shù)據(jù)的權(quán)限時,向其提供本賬號相關(guān)數(shù)據(jù)。
參見圖11,本公開實施例還提供一種區(qū)塊鏈的權(quán)限控制裝置。該裝置1100包括:
對應(yīng)關(guān)系寫入模塊1101,被配置為將預(yù)置的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的一區(qū)塊中;
節(jié)點角色確定模塊1102,被配置為確定要加入到區(qū)塊鏈中的用戶節(jié)點所配置的目標(biāo)賬號的角色;
權(quán)限控制模塊1103,被配置為根據(jù)所述對應(yīng)關(guān)系和所述目標(biāo)賬號的角色,對配置了所述目標(biāo)賬號所述用戶節(jié)點的權(quán)限進行控制。
在一個實施例中,所述對應(yīng)關(guān)系寫入模塊1101,被配置為將所述對應(yīng)關(guān)系作為一特殊賬號的賬號屬性寫入到創(chuàng)始區(qū)塊中,所述特殊賬號的賬號地址為預(yù)設(shè)地址,所述賬號屬性至少包括:包括所述對應(yīng)關(guān)系的權(quán)限信息字段。
在一個實施例中,裝置1100還包括:
變更模塊1104,被配置為對所述預(yù)置的賬號角色和權(quán)限的對應(yīng)關(guān)系進行變更;
變更對應(yīng)關(guān)系存儲模塊1105,被配置為將變更后的賬號角色和權(quán)限的對應(yīng)關(guān)系發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)中,以將變更后的角色和權(quán)限的對應(yīng)關(guān)系存儲到區(qū)塊鏈的一新建區(qū)塊中。
在一個實施例中,裝置1100還包括:
請求信息接收模塊,被配置為接收所述用戶節(jié)點發(fā)送的請求信息,所述請求信息中至少包括所述用戶節(jié)點所配置的目標(biāo)賬號的賬號地址和用戶標(biāo)識信息;
確定模塊,被配置為根據(jù)所述請求信息中的所述用戶標(biāo)識信息,確定所述目標(biāo)賬號的角色;
角色信息寫入模塊,被配置為向區(qū)塊鏈網(wǎng)絡(luò)中發(fā)布包括所述目標(biāo)賬號的賬號地址和角色的交易信息,所述包括所述目標(biāo)賬號的賬號地址和角色的信息用于將以將所述目標(biāo)賬號用戶節(jié)點的角色寫入到與所述目標(biāo)賬號用戶節(jié)點的賬號地址相對應(yīng)的賬號屬性中,所述賬號屬性至少包括:包括所述目標(biāo)賬號用戶節(jié)點的角色的權(quán)限信息字段。
在一個實施例中,權(quán)限控制模塊1103包括:
連接建立請求接收子模塊,被配置為接收到配置了所述目標(biāo)賬號的所述用戶節(jié)點發(fā)送的P2P連接建立請求時,獲取所述目標(biāo)賬號的賬號地址;
賬號屬性獲取子模塊,被配置為根據(jù)所述目標(biāo)賬號的賬號地址,從區(qū)塊鏈中獲取所述目標(biāo)賬號的賬號地址對應(yīng)的賬號屬性;
對應(yīng)關(guān)系獲取子模塊,被配置為從區(qū)塊鏈的區(qū)塊中,獲取預(yù)置的角色和權(quán)限信息的對應(yīng)關(guān)系;
第一權(quán)限確定子模塊,被配置為根據(jù)所述目標(biāo)賬號的賬號地址對應(yīng)的賬號屬性中的權(quán)限信息字段,以及所述對應(yīng)關(guān)系,確定所述目標(biāo)賬號的權(quán)限;
連接建立子模塊,被配置為在所述目標(biāo)賬號的權(quán)限包括接入?yún)^(qū)塊鏈網(wǎng)絡(luò)時,與所述用戶節(jié)點建立P2P連接。
在一個實施例中,權(quán)限控制模塊1103包括:
第二權(quán)限確定子模塊,被配置為在所述用戶節(jié)點接入到區(qū)塊鏈網(wǎng)絡(luò)中后,根據(jù)所述目標(biāo)賬號的賬號地址對應(yīng)的賬號屬性中的權(quán)限信息字段,以及所述對應(yīng)關(guān)系,確定所述目標(biāo)賬號是否具有同步區(qū)塊鏈數(shù)據(jù)的權(quán)限;
列表消息發(fā)送子模塊,被配置為在所述目標(biāo)賬號的權(quán)限包括同步區(qū)塊鏈數(shù)據(jù)時,則向所述用戶節(jié)點發(fā)送包含區(qū)塊鏈中區(qū)塊的哈希值的列表消息,所述列表消息指示所述用戶節(jié)點對區(qū)塊鏈數(shù)據(jù)進行同步。
在一個實施例中,權(quán)限控制模塊1103包括:
第三權(quán)限確定子模塊,被配置為當(dāng)需要向所述用戶節(jié)點發(fā)送新區(qū)塊或交易時,根據(jù)所述目標(biāo)賬號的權(quán)限,確定是否向所述用戶節(jié)點發(fā)送新區(qū)塊或交易。
在一個實施例中,權(quán)限控制模塊1103包括:
第四權(quán)限確定子模塊,被配置為當(dāng)接收到所述用戶節(jié)點發(fā)送的新區(qū)塊或交易時,根據(jù)所述目標(biāo)賬號的權(quán)限,確定是否對所述用戶節(jié)點發(fā)送的新區(qū)塊或交易進行處理。
在一個實施例中,權(quán)限控制模塊1103包括:
第五權(quán)限確定子模塊,被配置為根據(jù)所述對應(yīng)關(guān)系和所述目標(biāo)賬號的角色,確定所述目標(biāo)賬號對區(qū)塊鏈數(shù)據(jù)的訪問權(quán)限,所述訪問權(quán)限包括:訪問區(qū)塊鏈全部數(shù)據(jù)的權(quán)限、訪問本群組數(shù)據(jù)的權(quán)限以及訪問本賬號相關(guān)數(shù)據(jù)的權(quán)限。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
相應(yīng)的,在本公開的一實施例中,還提供一種區(qū)塊鏈節(jié)點的權(quán)限控制系統(tǒng),該系統(tǒng)中包括:管理員節(jié)點和用戶節(jié)點,其中,管理員節(jié)點為區(qū)塊鏈網(wǎng)絡(luò)中配置了管理員賬號的節(jié)點,用戶節(jié)點為配置有相應(yīng)賬號的節(jié)點。
管理員節(jié)點,被配置為將預(yù)置的賬號角色和權(quán)限的對應(yīng)關(guān)系寫入到區(qū)塊鏈的一區(qū)塊中;確定要加入到區(qū)塊鏈中的用戶節(jié)點所配置的目標(biāo)賬號的角色;以及根據(jù)對應(yīng)關(guān)系和目標(biāo)賬號的角色,對配置了目標(biāo)賬號的用戶節(jié)點的權(quán)限進行控制。
本公開實施例的系統(tǒng)可適用于區(qū)塊鏈數(shù)據(jù)需要受控讀取的各領(lǐng)域,例如,金融交易系統(tǒng)、醫(yī)院病歷系統(tǒng)等。通過對用戶節(jié)點的權(quán)限控制,提高區(qū)塊鏈數(shù)據(jù)的安全性和隱私性;且本公開實施例,既能利用區(qū)塊鏈無中心、防篡改的特性,又能夠解決目前區(qū)塊鏈信息完全開放的問題,提高區(qū)塊鏈數(shù)據(jù)的安全性。
圖12是根據(jù)一示例性實施例示出的一種用于區(qū)塊鏈的權(quán)限控制方法的裝置1200的框圖,該裝置1200可以是節(jié)點設(shè)備。如圖所示,該裝置1200可以包括:處理器1201,存儲器1202,多媒體組件1203,輸入/輸出(I/O)接口1204,以及通信組件1205。
其中,處理器1201用于控制該裝置1200的整體操作,以完成上述的區(qū)塊鏈的權(quán)限控制方法中的全部或部分步驟。存儲器1202用于存儲操作系統(tǒng),各種類型的數(shù)據(jù)以支持在該裝置1200的操作,這些數(shù)據(jù)的例如可以包括用于在該裝置1200上操作的任何應(yīng)用程序或方法的指令,以及應(yīng)用程序相關(guān)的數(shù)據(jù)。該存儲器1202可以由任何類型的易失性或非易失性存儲設(shè)備或者它們的組合實現(xiàn),例如靜態(tài)隨機存取存儲器(Static Random Access Memory,簡稱SRAM),電可擦除可編程只讀存儲器(Electrically Erasable Programmable Read-Only Memory,簡稱EEPROM),可擦除可編程只讀存儲器(Erasable Programmable Read-Only Memory,簡稱EPROM),可編程只讀存儲器(Programmable Read-Only Memory,簡稱PROM),只讀存儲器(Read-Only Memory,簡稱ROM),磁存儲器,快閃存儲器,磁盤或光盤。
在本公開的一實施例中,存儲器1202中存儲的操作系統(tǒng)可采用圖13所示的架構(gòu),即包括:存儲層、業(yè)務(wù)層和會話層。其中,存儲層采用加入了節(jié)點權(quán)限控制的區(qū)塊鏈架構(gòu),達(dá)到信息分等級和對用戶分權(quán)限開放的目的。
多媒體組件1203可以包括屏幕和音頻組件。其中屏幕例如可以是觸摸屏,音頻組件用于輸出和/或輸入音頻信號。例如,音頻組件可以包括一個麥克風(fēng),麥克風(fēng)用于接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器1202或通過通信組件1205發(fā)送。音頻組件還包括至少一個揚聲器,用于輸出音頻信號。I/O接口1204為處理器1201和其他接口模塊之間提供接口,上述其他接口模塊可以是鍵盤,鼠標(biāo),按鈕等。這些按鈕可以是虛擬按鈕或者實體按鈕。通信組件1205用于該裝置1200與其他設(shè)備之間進行有線或無線通信。無線通信,例如Wi-Fi,藍(lán)牙,近場通信(Near Field Communication,簡稱NFC),2G、3G或4G,或它們中的一種或幾種的組合,因此相應(yīng)的該通信組件1205可以包括:Wi-Fi模塊,藍(lán)牙模塊,NFC模塊。
在一示例性實施例中,裝置1200可以被一個或多個應(yīng)用專用集成電路(Application Specific Integrated Circuit,簡稱ASIC)、數(shù)字信號處理器(Digital Signal Processor,簡稱DSP)、數(shù)字信號處理設(shè)備(Digital Signal Processing Device,簡稱DSPD)、可編程邏輯器件(Programmable Logic Device,簡稱PLD)、現(xiàn)場可編程門陣列(Field Programmable Gate Array,簡稱FPGA)、控制器、微控制器、微處理器或其他電子元件實現(xiàn),用于執(zhí)行上述的區(qū)塊鏈的權(quán)限控制方法。
在另一示例性實施例中,還提供了一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含能夠由可編程的裝置執(zhí)行的計算機程序,所述計算機程序具有當(dāng)由所述可編程的裝置執(zhí)行時用于執(zhí)行上述的區(qū)塊鏈的權(quán)限控制方法的代碼部分。
在另一示例性實施例中,還提供了一種包括指令的非臨時性計算機可讀存儲介質(zhì),例如包括指令的存儲器1202,上述指令可由裝置1200的處理器1201執(zhí)行以完成上述的區(qū)塊鏈的權(quán)限控制方法。示例地,該非臨時性計算機可讀存儲介質(zhì)可以是ROM、隨機存取存儲器(Random Access Memory,簡稱RAM)、CD-ROM、磁帶、軟盤和光數(shù)據(jù)存儲設(shè)備等。
流程圖中或在本公開的實施例中以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本公開實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本公開的實施例所述技術(shù)領(lǐng)域的技術(shù)人員所理解。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐本公開后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。