資料處理方法、裝置、區塊鏈客戶端和區塊鏈節點
本說明書實施例係關於電腦技術領域,特別關於一種資料處理方法、裝置、區塊鏈客戶端和區塊鏈節點。
區塊鏈技術是一種分散式資料庫技術,利用密碼學和共識機制保證了資料的不可篡改和不可偽造。隨著電腦和互聯網技術的發展,區塊鏈技術以其去中心化、公開透明、不可篡改、可信任等優點,備受青睞,在智慧合約、證券交易、電子商務、物聯網、社交通訊、檔案儲存、存在性證明、身份驗證、股權眾籌等眾多領域得到廣泛應用。
在相關技術中,多個機構之間可以基於區塊鏈技術建立區塊鏈。每個機構可以包括區塊鏈網路中的一個或多個區塊鏈節點。每個機構還可以包括多個區塊鏈客戶端,所述多個區塊鏈客戶端可以共用該機構在所述區塊鏈中的機構帳戶。每個機構的每個區塊鏈客戶端可以與該機構的一個或多個區塊鏈節點進行通信。
上述相關技術中,同一機構的多個區塊鏈客戶端是分別獨立向該機構的區塊鏈節點發送交易資料的。鑒於區塊鏈是連續處理交易資料的,因此在同一機構的多個區塊鏈客戶端併發向區塊鏈節點發送交易資料時(例如,同一機構的多個區塊鏈客戶端併發向該機構的同一區塊鏈節點發送交易資料,或者,同一機構的多個區塊鏈客戶端併發向該機構的多個區塊鏈節點發送交易資料),有可能會造成交易衝突。
本說明書實施例的目的是提供一種資料處理方法、裝置、區塊鏈客戶端和區塊鏈節點,以避免交易衝突的問題。
為實現上述目的,本說明書中一個或多個實施例提供的技術方案如下。
根據本說明書一個或多個實施例的第一態樣,提供了一種基於區塊鏈的資料處理方法,應用於區塊鏈客戶端,包括:向區塊鏈節點發送權杖獲取請求;接收區塊鏈節點回饋的提交權杖,所述提交權杖用於表示所述區塊鏈客戶端具有向特定資料區塊提交交易資料的權限;向區塊鏈節點發送交易資料。
根據本說明書一個或多個實施例的第二態樣,提供了一種基於區塊鏈的資料處理裝置,應用於區塊鏈客戶端,包括:發送單元,用於向區塊鏈節點發送權杖獲取請求;接收單元,用於接收區塊鏈節點回饋的提交權杖,所述提交權杖用於表示所述區塊鏈客戶端具有向特定資料區塊提交交易資料的權限;發送單元,用於向區塊鏈節點發送交易資料。
根據本說明書一個或多個實施例的第三態樣,提供了一種區塊鏈客戶端,包括:記憶體,用於儲存電腦指令;處理器,用於執行所述電腦指令以實現如第一態樣所述的方法步驟。
根據本說明書一個或多個實施例的第四態樣,提供了一種基於區塊鏈的資料處理方法,應用於區塊鏈節點,包括:接收區塊鏈客戶端發來的權杖獲取請求;調用部署在區塊鏈中的權杖分配合約,生成提交權杖,所述提交權杖用於表示所述區塊鏈客戶端具有向特定資料區塊提交交易資料的權限,所述權杖分配合約用於協調提交權杖在同一機構的多個區塊鏈客戶端中的分配;向區塊鏈客戶端回饋所述提交權杖。
根據本說明書一個或多個實施例的第五態樣,提供了一種基於區塊鏈的資料處理裝置,應用於區塊鏈節點,包括:接收單元,用於接收區塊鏈客戶端發來的權杖獲取請求;調用單元,用於調用部署在區塊鏈中的權杖分配合約,生成提交權杖,所述提交權杖用於表示所述區塊鏈客戶端具有向特定資料區塊提交交易資料的權限,所述權杖分配合約用於協調提交權杖在同一機構的多個區塊鏈客戶端中的分配;回饋單元,用於向區塊鏈客戶端回饋所述提交權杖。
根據本說明書一個或多個實施例的第六態樣,提供了一種區塊鏈節點,包括:記憶體,用於儲存電腦指令;處理器,用於執行所述電腦指令以實現如第四態樣所述的方法步驟。
由以上本說明書實施例提供的技術方案可見,本說明書實施例中,透過部署在區塊鏈中的權杖分配合約來協調同一機構的多個區塊鏈客戶端的提交權限,可以避免同一機構的多個區塊鏈客戶端併發向區塊鏈節點發送交易資料,從而能夠避免交易衝突的問題。
下面將結合本說明書實施例中的附圖,對本說明書實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本說明書一部分實施例,而不是全部的實施例。基於本說明書中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本說明書保護的範圍。
上述相關技術中的一個交易衝突場景示例可以如下。
交易資料中通常包含機構帳戶的Nonce值。Nonce值可以為用於防止區塊鏈發生重複攻擊的隨機數或偽隨機數。一個Nonce值僅能夠被一個交易資料所使用。不同交易資料中包含的Nonce值是不同的。例如,Nonce值在不同的交易資料中可以是單調遞增的。
機構A可以包括區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4;可以包括區塊鏈節點BCnode-A1和BCnode-A2。機構A在區塊鏈中的機構帳戶可以為AccountA。機構帳戶AccountA當前的Nonce值可以為100。
區塊鏈客戶端BCclient-X1可以按照區塊鏈中交易資料的格式,構建Nonce值為101的交易資料TX1。區塊鏈客戶端BCclient-X1可以向區塊鏈節點BCnode-A1發送交易資料TX1。同一機構的多個區塊鏈客戶端是分別獨立向該機構的區塊鏈節點發送交易資料的,因此在區塊鏈客戶端構建交易資料TX1的同時,區塊鏈客戶端BCclient-X2有可能按照區塊鏈中交易資料的格式,構建Nonce值為101的交易資料TX2。區塊鏈客戶端BCclient-X2可以向區塊鏈節點BCnode-A2發送交易資料TX2。由於交易資料TX1和交易資料TX2中包含的Nonce值相同,會在後續過程中導致區塊鏈對Nonce值的校驗失敗,從而造成交易衝突。具體地,例如,當區塊鏈先處理交易資料TX1,後處理交易資料TX2時,會導致交易資料TX2處理失敗。或者,當區塊鏈先處理交易資料TX2,後處理交易資料TX1時,會導致交易資料TX1處理失敗。
請參閱圖1。本說明書實施例提供一種資料處理系統。
在一些實施例中,所述資料處理系統可以包括區塊鏈網路。所述區塊鏈網路例如可以為P2P網路(peer-to-peer network)等。基於所述區塊鏈網路可以建立區塊鏈。所述區塊鏈可以是一種按照時間先後順序,將多個資料區塊以鏈式結構進行組織,並以密碼學演算法保證安全、可追溯、且不可篡改的分散式帳本。所述區塊鏈例如可以為公有區塊鏈、聯合區塊鏈(也稱為聯盟區塊鏈)或私有區塊鏈等。
所述區塊鏈網路可以包括多個區塊鏈節點。所述多個區塊鏈節點共同維護了所述分散式帳本。所述多個區塊鏈節點可以隸屬於多個機構。每個機構可以包括所述區塊鏈網路中的一個或多個區塊鏈節點。例如,機構A可以包括所述區塊鏈網路中的區塊鏈節點BCnode-A1和BCnode-A2,機構B可以包括所述區塊鏈網路中的區塊鏈節點BCnode-B1和BCnode-B2。
在一些實施例中,所述資料處理系統還可以包括所述多個機構的區塊鏈客戶端。具體地,每個機構可以包括一個或多個區塊鏈客戶端,所述一個或多個區塊鏈客戶端可以共用該機構在所述區塊鏈中的機構帳戶。每個機構的每個區塊鏈客戶端可以與該機構的一個或多個區塊鏈節點進行通信。延續前例,機構A可以包括區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4。區塊鏈客戶端BCclient-X1可以同時與區塊鏈節點BCnode-A1和區塊鏈節點BCnode-A2進行通信。區塊鏈客戶端BCclient-X2和BCclient-X3可以分別與區塊鏈節點BCnode-A2進行通信。區塊鏈客戶端BCclient-X4可以同時與區塊鏈節點BCnode-A1和區塊鏈節點BCnode-A2進行通信。這裡的區塊鏈客戶端例如可以為業務伺服器、手機、平板電腦、或個人電腦等設備;或者也可以是由多台設備組成的系統,例如由多個業務伺服器組成的伺服器集群。
在一個場景示例中,出於災害復原等因素的考慮,每個機構可以部署一個或多個機房,每個機房可以包括該機構的一個或多個區塊鏈客戶端。延續前例,機構A可以部署有北京機房和上海機房,北京機房可以包括區塊鏈客戶端BCclient-X1和BCclient-X2,上海機房可以包括區塊鏈客戶端BCclient-X3和BCclient-X4。
基於所述資料處理系統,下面介紹本說明書資料處理方法的一個實施例。請參閱圖2,該實施例可以包括以下步驟。
步驟S11:區塊鏈客戶端向區塊鏈節點發送權杖獲取請求。
在一些實施例中,所述區塊鏈客戶端和所述區塊鏈節點可以隸屬於同一機構。所述區塊鏈客戶端在提交交易資料之前,可以向所述區塊鏈節點發送權杖獲取請求。所述權杖獲取請求中可以包括機構標識、客戶端標識和區塊高度(為了便於描述,以下稱為第一區塊高度)中的至少一個。所述機構標識可以用於標識所述區塊鏈客戶端隸屬的機構。所述客戶端標識可以用於標識所述區塊鏈客戶端。所述第一區塊高度可以用於表示所述區塊鏈客戶端申請的資料區塊在區塊鏈中的位置。
所述區塊鏈客戶端可以獲取區塊鏈的區塊高度(為了便於描述,以下稱為第二區塊高度);可以根據所述第二區塊高度確定所述第一區塊高度。在一個場景示例中,所述區塊鏈客戶端可以查詢所述第一區塊高度。例如,所述區塊鏈客戶端可以向所述區塊鏈節點發送區塊高度查詢請求。所述區塊鏈節點可以接收所述區塊高度查詢請求;可以獲取所述第一區塊高度;可以向所述區塊鏈客戶端回饋所述第一區塊高度。在另一個場景示例中,所述區塊鏈節點可以向所述區塊鏈客戶端主動推送所述第一區塊高度。例如,所述區塊鏈節點可以預先設置區塊高度推送事件。在區塊鏈有新的資料區塊上鏈時,便可以觸發所述區塊高度推送事件。所述區塊鏈節點在監測到所述區塊高度推送事件被觸發時;可以獲取所述第一區塊高度;可以向所述區塊鏈客戶端推送所述第一區塊高度。值得注意的是,鑒於上鏈時刻較晚的資料區塊,其區塊高度較大;上鏈時刻較早的資料區塊,其區塊高度較小。因而所述第二區塊通常小於所述第一區塊高度。所述區塊鏈客戶端具體可以採用任意方式來確定所述第一區塊高度。例如,所述區塊鏈客戶端可以計算所述第二區塊高度與N的和,作為所述第一區塊高度。N為大於0的自然數,例如可以為1、或2等。
在一些實施例中,所述區塊鏈客戶端可以與一個區塊鏈節點進行通信。如此所述區塊鏈客戶端可以直接向該區塊鏈節點發送權杖獲取請求。或者,所述區塊鏈客戶端可以與多個區塊鏈節點進行通信。如此所述區塊鏈客戶端可以從所述多個區塊鏈節點中選取區塊鏈節點;可以向選取的區塊鏈節點發送權杖獲取請求。所述區塊鏈客戶端具體可以採用任意方式來選取區塊鏈節點。例如,所述區塊鏈客戶端可以隨機選取一個區塊鏈節點。
步驟S13:區塊鏈節點接收所述權杖獲取請求,調用部署在區塊鏈中的權杖分配合約,生成提交權杖。
在一些實施例中,所述區塊鏈中可以部署有權杖分配合約。所述權杖分配合約可以是原生的智慧合約;或者,還可以是自訂的智慧合約。自訂的智慧合約可以是業務人員透過代碼構建的智慧合約。例如,機構的業務人員可以使用電腦高階語言編寫權杖分配合約。該機構的區塊鏈節點可以對所述權杖分配合約進行編譯得到位元組碼;可以根據所述位元組碼生成構建權杖分配合約的交易;可以向區塊鏈提交所述構建權杖分配合約的交易,從而實現將所述權杖分配合約部署到區塊鏈上。
所述權杖分配合約可以為一段可執行的程式碼,用於協調提交權杖在同一機構的多個區塊鏈客戶端中的分配。在一個場景示例中,所述權杖分配合約中提交權杖的分配方式可以為輪轉方式。例如,機構A可以包括區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4。基於所述權杖分配合約可以實現:將提交權杖在區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4中依次輪轉分配。在另一個場景示例中,所述權杖分配合約中提交權杖的分配方式可以為隨機方式。例如,機構A可以包括區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4。基於所述權杖分配合約可以實現:從區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4中隨機選取區塊鏈客戶端,將提交權杖分配給選取的區塊鏈客戶端。當然,以上的分配方式僅為舉例,在實際中任意能夠實現提交權杖分配的方式均可以作為所述權杖分配合約中提交權杖的分配方式。值得注意的是,所述權杖分配合約是以機構為維度實現提交權杖的分配的。接入區塊鏈的每個機構均可以透過所述權杖分配合約,實現提交權杖在該機構的區塊鏈客戶端中的分配。
所述權杖分配合約的輸入可以包括機構標識、客戶端標識和第一區塊高度中的至少一個。在一個場景示例中,所述權杖分配合約的輸入可以包括機構標識、客戶端標識和第一區塊高度。所述權杖分配合約可以表示為Allocate (InstitutionID,ClientID,BlockHeight),InstitutionID表示機構標識,ClientID表示客戶端標識,BlockHeight表示第一區塊高度。在另一個場景示例中,所述權杖分配合約的輸入可以包括機構標識和客戶端標識。所述權杖分配合約可以表示為Allocate(InstitutionID,ClientID)。在另一個場景示例中,所述權杖分配合約的輸入可以包括機構標識。所述權杖分配合約可以表示為Allocate(InstitutionID)。
所述權杖分配合約的輸出可以包括提交權杖。獲得所述提交權杖的區塊鏈客戶端可以具有向區塊鏈節點發送交易資料的權限,從而具有了向區塊鏈的特定資料區塊提交交易資料的權限。所述特定資料區塊例如可以為所述第一區塊高度對應的資料區塊。值的注意的是,這裡區塊鏈客戶端向資料區塊提交交易資料,可以理解為:區塊鏈客戶端向區塊鏈節點發送交易資料,區塊鏈節點向區塊鏈提交交易資料,從而實現區塊鏈客戶端向區塊鏈的資料區塊提交交易資料。透過所述權杖分配合約,可以避免同一機構的多個區塊鏈客戶端同時獲得提交權杖,從而能夠避免同一機構的多個區塊鏈客戶端併發向區塊鏈節點發送交易資料,避免了交易衝突的問題。
進一步地,所述提交權杖中還可以包含所述第一區塊高度。
在一些實施例中,如前所述,所述權杖分配合約的輸入可以包括機構標識、客戶端標識和第一區塊高度中的至少一個。如此所述區塊鏈節點可以將所述機構標識、所述客戶端標識和所述第一區塊高度中的至少一個作為輸入參數,調用所述權杖分配合約,生成提交權杖。
所述區塊鏈節點可以基於所述權杖分配合約的位址,調用所述權杖分配合約。具體地,所述區塊鏈節點可以基於所述權杖分配合約的位址,獲得所述權杖分配合約;可以在本地執行所述權杖分配合約,從而實現對所述權杖分配合約的調用。所述權杖分配合約可以是原生的智慧合約。如此所述區塊鏈節點在接入所述區塊鏈網路時,便可以獲得所述權杖分配合約的位址。或者,所述權杖分配合約還可以是自訂的智慧合約。這裡為了便於描述,可以將調用所述權杖分配合約的區塊鏈節點稱為第一區塊鏈節點;可以將部署所述權杖分配合約的區塊鏈節點稱為第二區塊鏈節點。如此所述第二區塊鏈節點可以採用任意方式向所述第一區塊鏈節點發送所述權杖分配合約的地址。例如,所述第二區塊鏈節點和所述第一區塊鏈節點之間可以建立鏈下通道。基於建立的鏈下通道,所述第二區塊鏈節點可以向所述第一區塊鏈節點發送所述權杖分配合約的地址。
在一些實施例中,區塊鏈節點調用部署在區塊鏈中的權杖分配合約,還可以獲得提交權杖生成失敗的資訊;可以向所述區塊鏈客戶端回饋提交權杖生成失敗的資訊。所述區塊鏈客戶端可以接收提交權杖生成失敗的資訊;可以放棄向區塊鏈節點發送交易資料。
步驟S15:區塊鏈節點向區塊鏈客戶端發送所述提交權杖。
在一些實施例中,透過步驟S13,所述區塊鏈節點可以獲得提交權杖。如此所述區塊鏈節點可以向所述區塊鏈客戶端發送所述提交權杖。
步驟S17:區塊鏈客戶端接收所述提交權杖,向區塊鏈節點發送交易資料。
在一些實施例中,所述區塊鏈客戶端可以接收所述提交權杖;可以按照區塊鏈中交易資料的格式,構建一個或多個交易資料;可以向區塊鏈節點發送所述一個或多個交易資料。所述交易資料可以包括狹義的交易資料和廣義的交易資料。狹義的交易資料包括能夠實現價值轉移的交易資料,例如轉帳交易的交易資料。廣義的交易資料包括能夠實現業務意圖的業務資料,例如租房、存證、車輛調度、保險理賠等業務的業務資料。在一個場景示例中,所述區塊鏈客戶端可以根據上游設備發來的交易相關資訊,按照區塊鏈中交易資料的格式,構建一個或多個交易資料。例如,所述區塊鏈客戶端可以為機構的業務伺服器,所述業務伺服器的上游設備可以包括用戶終端。那麼,所述業務伺服器可以根據用戶終端發來的交易相關資訊,按照區塊鏈中交易資料的格式,構建一個或多個交易資料。
進一步地,所述區塊鏈客戶端還可以基於所述提交權杖,構建一個或多個交易資料。構建的交易資料中可以包含所述提交權杖。這樣在後續過程中便於共識區塊鏈節點對所述一個或多個交易資料中權杖的合法性進行驗證。例如,所述提交權杖中可以包含所述第一區塊高度。如此針對每個交易資料,所述共識區塊鏈節點可以獲取該交易資料的提交權杖中所包含的第一區塊高度;可以從區塊鏈的狀態資料中獲得所述區塊鏈客戶端申請的第一區塊高度;可以將二者進行比對,從而實現對該交易資料中提交權杖的合法性進行驗證。
進一步地,所述區塊鏈客戶端還可以基於機構帳戶當前的Nonce值,構建一個或多個交易資料。所述機構帳戶可以為所述區塊鏈客戶端隸屬的機構在所述區塊鏈中的帳戶。Nonce值可以為用於防止區塊鏈發生重複攻擊的隨機數或偽隨機數。一個Nonce值僅能夠被一個交易資料所使用。不同交易資料中包含的Nonce值是不同的。例如,Nonce值在不同的交易資料中可以是單調遞增的。具體地,所述區塊鏈客戶端可以獲取所述機構帳戶當前的Nonce值;可以根據獲取的Nonce值,構建一個或多個交易資料。例如,機構帳戶當前的Nonce值可以為100。所述區塊鏈客戶端可以分別構建Nonce值為101的交易資料、Nonce值為102的交易資料、Nonce值為103的交易資料等3個交易資料。在一個場景示例中,所述區塊鏈客戶端可以查詢所述機構帳戶當前的Nonce值。例如,所述區塊鏈客戶端可以向所述區塊鏈節點發送Nonce值查詢請求。所述區塊鏈節點可以接收所述Nonce值查詢請求;可以獲取所述機構帳戶當前的Nonce值;可以向所述區塊鏈客戶端回饋獲取的Nonce值。在另一個場景示例中,所述區塊鏈節點可以向所述區塊鏈客戶端主動推送所述機構帳戶當前的Nonce值。例如,所述區塊鏈節點可以每間隔預設時間間隔,獲取所述機構帳戶當前的Nonce值;可以向所述區塊鏈客戶端推送獲取的Nonce值。
當然,所述區塊鏈客戶端還可以基於其它資訊,構建一個或多個交易資料,在此不再依次列舉。所述其它資訊例如可以包括所述機構帳戶的位址等。
在一些實施例中,所述區塊鏈客戶端可以直接向所述區塊鏈節點發送一個或多個交易資料。或者,所述區塊鏈客戶端還可以將一個或多個交易資料按照特定順序進行打包,得到資料包;可以向所述區塊鏈節點發送所述資料包。所述特定順序例如可以包括交易發生時刻由早到晚的順序。
步驟S19:區塊鏈節點接收所述交易資料,向區塊鏈提交所述交易資料。
在一些實施例中,所述區塊鏈節點可以接收所述交易資料;可以向區塊鏈提交所述交易資料,以便所述共識區塊鏈節點對所述交易資料進行處理。所述共識區塊鏈節點在處理完成所述交易資料以後,可以構建包含所述交易資料的資料區塊;可以按照鏈式資料結構,將所述資料區塊儲存至所述區塊鏈中。其中,所述共識區塊鏈節點構建的資料區塊的區塊高度可以等於所述第一區塊高度。這樣便實現了區塊鏈客戶端向所述第一區塊高度對應的資料區塊提交交易資料。
在一些實施方式中,所述區塊鏈節點可以接收區塊鏈客戶端發來的交易資料;可以向區塊鏈提交接收的交易資料。或者,所述區塊鏈節點還可以接收區塊鏈客戶端發來的資料包;可以向區塊鏈提交所述資料包。這樣可以使得所述共識區塊鏈節點按照資料包中交易資料的排列順序,處理所述資料包中的交易資料。
本說明書實施例的資料處理方法,區塊鏈客戶端可以向區塊鏈節點發送權杖獲取請求;區塊鏈節點可以接收所述權杖獲取請求,可以調用部署在區塊鏈中的權杖分配合約,生成提交權杖,可以向區塊鏈客戶端發送所述提交權杖;區塊鏈客戶端可以接收所述提交權杖,可以向區塊鏈節點發送交易資料;區塊鏈節點可以接收所述交易資料,可以向區塊鏈提交所述交易資料。這樣透過部署在區塊鏈中的權杖分配合約來協調同一機構的多個區塊鏈客戶端的提交權限,可以避免同一機構的多個區塊鏈客戶端併發向區塊鏈節點發送交易資料,從而能夠避免交易衝突的問題。
請參閱圖3。下面介紹本說明書實施例的一個場景示例。
本場景示例的系統構架可以如圖1所示。在本場景示例中,所述區塊鏈的區塊高度可以為10。所述區塊鏈中可以部署有權杖分配合約。所述權杖分配合約的輸入可以包括機構標識、客戶端標識和區塊高度;輸出可以包括提交權杖。所述權杖分配合約具體可以表示為Allocate(InstitutionID,ClientID,BlockHeight)。
機構A可以包括區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4;可以包括區塊鏈節點BCnode-A1和BCnode-A2。機構A在區塊鏈中的機構帳戶可以為AccountA。機構帳戶AccountA當前的Nonce值可以為100。區塊鏈客戶端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4的客戶端標識可以分別為X1、X2、X3和X4。
區塊鏈客戶端BCclient-X1可以向區塊鏈節點BCnode-A1發送權杖獲取請求。所述權杖獲取請求中可以包括機構標識A、客戶端標識X1和區塊高度11。區塊鏈節點BCnode-A1可以接收所述權杖獲取請求;可以將機構標識A、客戶端標識X1和區塊高度11作為輸入參數,調用權杖分配合約Allocate(A,X1,11),生成提交權杖;可以向區塊鏈客戶端BCclient-X1發送所述提交權杖。所述提交權杖中可以包含區塊高度11。
區塊鏈客戶端BCclient-X1可以接收所述提交權杖;可以按照區塊鏈中交易資料的格式,構建交易資料TX1、TX2和TX3。交易資料TX1中可以包含所述提交權杖和機構帳戶AccountA的Nonce值101;交易資料TX2中可以包含所述提交權杖和機構帳戶AccountA的Nonce值102;交易資料TX3中可以包含所述提交權杖和機構帳戶AccountA的Nonce值103。
區塊鏈客戶端BCclient-X1可以將交易資料TX1、TX2和TX3進行打包,得到資料包;可以向區塊鏈節點BCnode-A1發送所述資料包。區塊鏈節點BCnode-A1可以接收所述資料包;可以向區塊鏈提交所述資料包。
下面介紹本說明書資料處理方法的另一個實施例。請參閱圖4,該實施例以區塊鏈客戶端為執行主體,可以包括以下步驟。
步驟S21:向區塊鏈節點發送權杖獲取請求。
所述區塊鏈客戶端在需要提交交易資料時,可以向所述區塊鏈節點發送權杖獲取請求。所述權杖獲取請求中可以包括機構標識、客戶端標識和區塊高度中的至少一個。所述機構標識可以用於標識所述區塊鏈客戶端隸屬的機構。所述客戶端標識可以用於標識所述區塊鏈客戶端。所述區塊高度可以用於表示所述區塊鏈客戶端申請的資料區塊在區塊鏈中的位置。
步驟S23:接收區塊鏈節點回饋的提交權杖。
所述區塊鏈節點可以接收所述權杖獲取請求;可以調用部署在區塊鏈中的權杖分配合約,生成提交權杖;可以向所述區塊鏈客戶端回饋所述提交權杖。所述區塊鏈客戶端可以接收所述提交權杖。所述提交權杖可以用於表示所述區塊鏈客戶端具有向所述區塊鏈的特定資料區塊提交交易資料的權限。所述特定資料區塊例如可以為所述區塊高度對應的資料區塊。
步驟S25:向區塊鏈節點發送交易資料。
所述區塊鏈客戶端可以接收所述提交權杖;可以按照區塊鏈中交易資料的格式,構建一個或多個交易資料;可以向區塊鏈節點發送所述一個或多個交易資料。構建的交易資料中可以包含所述提交權杖。所述提交權杖中可以包含所述區塊高度。
所述區塊鏈客戶端可以向所述區塊鏈節點發送一個交易資料;或者,也可以向所述區塊鏈節點發送多個交易資料。在向所述區塊鏈節點發送多個交易資料時,所述區塊鏈客戶端可以向所述區塊鏈節點逐個發送交易資料;或者,還可以將所述多個交易資料按照特定順序進行打包,得到資料包;可以向所述區塊鏈節點發送所述資料包。所述特定順序例如可以包括交易發生時刻由早到晚的順序。
本說明書實施例的資料處理方法,區塊鏈客戶端可以向區塊鏈節點發送權杖獲取請求;可以接收區塊鏈節點回饋的提交權杖;可以向區塊鏈節點發送交易資料。這樣可以實現區塊鏈客戶端在獲得提交權杖後,才向區塊鏈節點發送交易資料。
下面介紹本說明書資料處理方法的另一個實施例。請參閱圖5,該實施例以區塊鏈節點為執行主體,可以包括以下步驟。
步驟S31:接收區塊鏈客戶端發來的權杖獲取請求。
所述權杖獲取請求中可以包括機構標識、客戶端標識和區塊高度中的至少一個。所述機構標識可以用於標識所述區塊鏈客戶端隸屬的機構。所述客戶端標識可以用於標識所述區塊鏈客戶端。所述區塊高度可以用於表示所述區塊鏈客戶端申請的資料區塊在區塊鏈中的位置。
步驟S33:調用部署在區塊鏈中的權杖分配合約,生成提交權杖。
所述提交權杖可以用於表示所述區塊鏈客戶端具有向所述區塊鏈的特定資料區塊提交交易資料的權限。所述權杖分配合約可以用於協調提交權杖在同一機構的多個區塊鏈客戶端中的分配。如前所述,所述權杖分配合約的輸入可以包括機構標識、客戶端標識和第一區塊高度中的至少一個。如此所述區塊鏈節點可以將所述機構標識、所述客戶端標識和所述第一區塊高度中的至少一個作為輸入參數,調用所述權杖分配合約,生成提交權杖。
步驟S35:向區塊鏈客戶端回饋所述提交權杖。
所述區塊鏈客戶端可以接收所述提交權杖;可以按照區塊鏈中交易資料的格式,構建一個或多個交易資料;可以向區塊鏈節點發送所述一個或多個交易資料。所述區塊鏈節點接收所述交易資料,向區塊鏈提交所述交易資料。所述交易資料中可以包含所述提交權杖。所述提交權杖中可以包含所述區塊高度。
本說明書實施例的資料處理方法,區塊鏈節點可以接收區塊鏈客戶端發來的權杖獲取請求;可以調用部署在區塊鏈中的權杖分配合約,生成提交權杖;可以向區塊鏈客戶端回饋所述提交權杖。這樣透過部署在區塊鏈中的權杖分配合約來協調同一機構的多個區塊鏈客戶端的提交權限,可以避免同一機構的多個區塊鏈客戶端併發向區塊鏈節點發送交易資料,從而能夠避免交易衝突的問題。
下面介紹本說明書資料處理裝置的一個實施例。請參閱圖6。該實施例可以應用於區塊鏈客戶端,具體可以包括以下單元。
發送單元41,用於向區塊鏈節點發送權杖獲取請求;
接收單元43,用於接收區塊鏈節點回饋的提交權杖,所述提交權杖用於表示所述區塊鏈客戶端具有向所述區塊鏈的特定資料區塊提交交易資料的權限;
發送單元45,用於向區塊鏈節點發送交易資料。
下面介紹本說明書區塊鏈客戶端的一個實施例。圖7是該實施例中一種區塊鏈客戶端的硬體結構示意圖。如圖7所示,所述區塊鏈客戶端可以包括一個或多個(圖中僅示出一個)處理器、記憶體和傳輸模組。當然,本領域普通技術人員可以理解,圖7所示的硬體結構僅為示意,其並不對上述區塊鏈客戶端的硬體結構造成限定。在實際中所述區塊鏈客戶端還可以包括比圖7所示更多或者更少的元件單元;或者,具有與圖7所示不同的配置。
所述記憶體可以包括高速隨機記憶體;或者,還可以包括非易失性記憶體,例如一個或者多個磁性儲存裝置、快閃記憶體、或者其他非易失性固態記憶體。當然,所述記憶體還可以包括遠端設置的網路記憶體。所述遠端設置的網路記憶體可以透過諸如互聯網、企業內部網、局域網、移動通信網等網路連接至所述區塊鏈客戶端。所述記憶體可以用於儲存應用軟體的程式指令或模組,例如本說明書實施例中資料處理方法對應的程式指令或模組。
所述處理器可以按任何適當的方式實現。例如,所述處理器可以採取例如微處理器或處理器以及儲存可由該(微)處理器執行的電腦可讀程式碼(例如軟體或韌體)的電腦可讀媒體、邏輯閘、開關、專用積體電路(Application Specific Integrated Circuit,ASIC)、可編程邏輯控制器和嵌入微控制器的形式等等。所述處理器可以讀取並執行所述記憶體中的程式指令或模組。
所述傳輸模組可以用於經由網路進行資料傳輸,例如經由諸如互聯網、企業內部網、局域網、移動通信網等網路進行資料傳輸。
下面介紹本說明書資料處理裝置的一個實施例。請參閱圖8。該實施例可以應用於區塊鏈節點,具體可以包括以下單元。
接收單元51,用於接收區塊鏈客戶端發來的權杖獲取請求;
調用單元53,用於調用部署在區塊鏈中的權杖分配合約,生成提交權杖,所述提交權杖用於表示所述區塊鏈客戶端具有向所述區塊鏈的特定資料區塊提交交易資料的權限,所述權杖分配合約用於協調提交權杖在同一機構的多個區塊鏈客戶端中的分配;
回饋單元55,用於向區塊鏈客戶端回饋所述提交權杖。
下面介紹本說明書區塊鏈節點的一個實施例。圖9是該實施例中一種區塊鏈節點的硬體結構示意圖。如圖9所示,所述區塊鏈節點可以包括一個或多個(圖中僅示出一個)處理器、記憶體和傳輸模組。當然,本領域普通技術人員可以理解,圖9所示的硬體結構僅為示意,其並不對上述區塊鏈節點的硬體結構造成限定。在實際中所述區塊鏈節點還可以包括比圖9所示更多或者更少的元件單元;或者,具有與圖9所示不同的配置。
所述記憶體可以包括高速隨機記憶體;或者,還可以包括非易失性記憶體,例如一個或者多個磁性儲存裝置、快閃記憶體、或者其他非易失性固態記憶體。當然,所述記憶體還可以包括遠端設置的網路記憶體。所述遠端設置的網路記憶體可以透過諸如互聯網、企業內部網、局域網、移動通信網等網路連接至所述區塊鏈節點。所述記憶體可以用於儲存應用軟體的程式指令或模組,例如本說明書實施例中資料處理方法對應的程式指令或模組。
所述處理器可以按任何適當的方式實現。例如,所述處理器可以採取例如微處理器或處理器以及儲存可由該(微)處理器執行的電腦可讀程式碼(例如軟體或韌體)的電腦可讀媒體、邏輯閘、開關、專用積體電路(Application Specific Integrated Circuit,ASIC)、可編程邏輯控制器和嵌入微控制器的形式等等。所述處理器可以讀取並執行所述記憶體中的程式指令或模組。
所述傳輸模組可以用於經由網路進行資料傳輸,例如經由諸如互聯網、企業內部網、局域網、移動通信網等網路進行資料傳輸。
需要說明的是,本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同或相似的部分互相參見即可,每個實施例重點說明的都是與其它實施例的不同之處。尤其,對於裝置實施例、區塊鏈客戶端實施例和區塊鏈節點實施例而言,由於其基本相似於資料處理方法實施例,所以描述的比較簡單,相關之處參見資料處理方法實施例的部分說明即可。
另外,可以理解的是,本領域技術人員在閱讀本說明書文件之後,可以無需創造性勞動想到將本說明書列舉的部分或全部實施例進行任意組合,這些組合也在本說明書公開和保護的範圍內。
在20世紀90年代,對於一個技術的改進可以很明顯地區分是硬體上的改進(例如,對二極體、電晶體、開關等電路結構的改進)還是軟體上的改進(對於方法流程的改進)。然而,隨著技術的發展,當今的很多方法流程的改進已經可以視為硬體電路結構的直接改進。設計人員幾乎都透過將改進的方法流程編程到硬體電路中來得到相應的硬體電路結構。因此,不能說一個方法流程的改進就不能用硬體實體模組來實現。例如,可編程邏輯器件(Programmable Logic Device, PLD)(例如現場可編程閘陣列(Field Programmable Gate Array,FPGA))就是這樣一種積體電路,其邏輯功能由用戶對器件編程來確定。由設計人員自行編程來把一個數位系統“集成”在一片PLD上,而不需要請晶片製造廠商來設計和製作專用的積體電路晶片2。而且,如今,取代手工地製作積體電路晶片,這種編程也多半改用“邏輯編譯器(logic compiler)”軟體來實現,它與程式開發撰寫時所用的軟體編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬體描述語言(Hardware Description Language,HDL),而HDL 也並非僅有一種,而是有許多種,如ABEL (Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog2。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬體描述語言稍作邏輯編程並編程到積體電路中,就可以很容易得到實現該邏輯方法流程的硬體電路。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦。具體的,電腦例如可以為個人電腦、膝上型電腦、行動電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任何設備的組合。
透過以上的實施方式的描述可知,本領域的技術人員可以清楚地瞭解到本說明書可借助軟體加必需的通用硬體平台的方式來實現。基於這樣的理解,本說明書的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該電腦軟體產品可以儲存在儲存媒體中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)執行本說明書各個實施例或者實施例的某些部分所述的方法。
本說明書可用於眾多通用或專用的電腦系統環境或配置中。例如:個人電腦、伺服器電腦、手持設備或可擕式設備、平板型設備、多處理器系統、基於微處理器的系統、機頂盒、可編程的消費電子設備、網路PC、小型電腦、大型電腦、包括以上任何系統或設備的分散式運算環境等等。
本說明書可以在由電腦執行的電腦可執行指令的一般上下文中描述,例如程式模組。一般地,程式模組包括執行特定任務或實現特定抽象資料類型的常式、程式、物件、元件、資料結構等等。也可以在分散式運算環境中實踐本說明書,在這些分散式運算環境中,由透過通信網路而被連接的遠端處理設備來執行任務。在分散式運算環境中,程式模組可以位於包括存放裝置在內的本地和遠端電腦儲存媒體中。
雖然透過實施例描繪了本說明書,本領域普通技術人員知道,本說明書有許多變形和變化而不脫離本說明書的精神,希望所附的申請專利範圍包括這些變形和變化而不脫離本說明書的精神。
S21~S25:方法步驟
S31~S35:方法步驟
41:發送單元
43:接收單元
45:發送單元
51:接收單元
53:調用單元
55:回饋單元
為了更清楚地說明本說明書實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本說明書中記載的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[圖1]為本說明書實施例一種資料處理系統的功能結構示意圖;
[圖2]為本說明書實施例一種資料處理方法的流程圖;
[圖3]為本說明書實施例一種資料處理方法的流程圖;
[圖4]為本說明書實施例一種資料處理方法的流程圖;
[圖5]為本說明書實施例一種資料處理方法的流程圖;
[圖6]為本說明書實施例一種資料處理裝置的功能結構示意圖;
[圖7]為本說明書實施例一種區塊鏈客戶端的功能結構示意圖;
[圖8]為本說明書實施例一種資料處理裝置的功能結構示意圖;
[圖9]為本說明書實施例一種區塊鏈節點的功能結構示意圖。