區塊鏈系統及其運行方法、裝置及設備
本檔關於區塊鏈技術領域,尤其關於一種區塊鏈系統及其運行方法、裝置及設備。
區塊鏈是一種分散式記帳系統,共識機制確保了不同節點中帳本資料的一致性和正確性。當前,在公有鏈的共識驗證過程中,通常需要大量節點參與,而這不可避免的降低了共識效率;而在聯盟鏈的共識驗證過程中,通常是預先選定數個固定節點參與共識驗證,其他想要參與共識驗證的節點無法參與共識驗證。
本說明書實施例提供了一種區塊鏈系統。該區塊鏈系統包括至少一個創始節點和多個候選共識節點。所述創始節點,根據提交至所述區塊鏈的第一交易,基於預設的共識節點選取規則,從所述候選共識節點中選取對所述第一交易進行共識驗證的共識節點。所述候選共識節點,在被所述創始節點選取為共識節點後,作為所述第一交易的共識節點,對所述第一交易進行共識驗證處理。
本說明書一個或多個實施例提供了一種區塊鏈系統的運行方法。該方法包括創始節點根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點。被選取的所述候選共識節點,對所述第一交易進行共識驗證處理。
本說明書一個或多個實施例提供了一種區塊鏈運行裝置,應用於區塊鏈系統的創始節點。所述裝置包括選取模組,根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點,以通過被選取的所述候選共識節點,對所述第一交易進行共識驗證處理。
本說明書一個或多個實施例提供了一種區塊鏈運行設備,包括處理器。該設備還包括被安排成儲存電腦可執行指令的記憶體。所述電腦可執行指令在被執行時使所述處理器根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點,以通過被選取的所述候選共識節點,對所述第一交易進行共識驗證處理。
本說明書一個或多個實施例提供了一種儲存媒體,用於儲存電腦可執行指令。所述電腦可執行指令在被執行時根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點,以通過被選取的所述候選共識節點,對所述第一交易進行共識驗證處理。
為了使本技術領域的人員更好地理解本說明書一個或多個實施例中的技術方案,下面將結合本說明書一個或多個實施例中的附圖,對本說明書一個或多個實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本說明書的一部分實施例,而不是全部的實施例。基於本說明書一個或多個實施例,本領域普通技術人員在沒有作出進步性勞動前提下所獲得的所有其他實施例,都應當屬於本檔的保護範圍。
本說明書一個或多個實施例提供了一種區塊鏈系統及其運行方法、裝置及設備,該系統中的多個候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識。從而該系統中的創始節點能夠根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點;被創始節點選取的候選共識節點,作為第一交易的共識節點,對第一交易進行共識驗證處理。可見,該系統中,能夠動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
圖1為本說明書一個或多個實施例提供的區塊鏈系統的應用場景示意圖,如圖1所示,該場景包括:至少一個創始節點(圖1中僅示出一個)、多個候選共識節點、多個資料節點和使用者的終端設備;其中,使用者的終端設備接入前述節點中的任意一個節點,以通過接入的節點向區塊鏈中提交第一交易,本說明書中將終端設備接入的節點稱為提交節點;使用者的終端設備可以為手機、平板電腦、桌上型電腦、便攜筆記本式電腦等(圖1中僅示出手機)。
具體的,當使用者(使用者1及/或使用者2)操作其終端設備提交待處理資料,以通過接入的提交節點向區塊鏈中提交第一交易時,創始節點根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點;候選共識節點,在被創始節點選取為共識節點後,作為第一交易的共識節點,對第一交易進行共識驗證處理。由此,通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率和共識的平衡性。
基於上述應用場景架構,本說明書一個或多個實施例提供了一種區塊鏈系統;圖2為本說明書一個或多個實施例提供的一種區塊鏈系統的組成示意圖,如圖2所示,該系統包括:至少一個創始節點101和多個候選節點102;
創始節點101,根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點;
候選共識節點102,在被創始節點選取為共識節點後,作為第一交易的共識節點,對第一交易進行共識驗證處理。
本說明書一個或多個實施例中的區塊鏈系統,候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識。從而創始節點能夠動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
為了創建區塊鏈系統,首先選定創始使用者,基於預設的數位身份資訊分配規則,為創始使用者分配數位身份資訊,並基於創始使用者的數位身份資訊為創始使用者頒發第三可驗證聲明(英文全稱:Verifiable Credential,簡稱:VC),其中,數位身份資訊還可稱為分散式身份標識(英文全稱:Decentralized Identifiers,簡稱:DID),第三可驗證聲明用於證明創始使用者被授予創建創始節點的許可權。創始使用者基於第三可驗證聲明,創建至少一個創始節點101,並基於預設的數位身份資訊分配規則為創始節點101分配數位身份資訊,該創始節點101組建成最初的區塊鏈系統;創始節點101具有添加節點、刪除節點、從已添加的節點中選取候選共識節點、從候選共識節點中選取對提交至區塊鏈的第一交易進行共識驗證的共識節點、參與共識、以及為添加的節點配置初始GAS等許可權。其中,數位身份資訊分配規則可以在實際應用中根據需要自行設定,例如隨機產生由數位、字母、特殊符號等中的一種或多種類型的字元所組成的字串。
需要指出的是,上述的第一交易,可以為區塊鏈中的一個節點在接收到使用者的交易提交請求後,提交至區塊鏈的交易,可以為一個使用者的一筆或多筆交易,或者也可以為多個使用者的多筆交易。
在最初的區塊鏈系統組建成功後,使用者即可根據需要請求加入區塊鏈系統,以在區塊鏈系統中部署相應的節點,或者通過接入區塊鏈系統的已有節點存取區塊鏈。具體的,當使用者需要加入區塊鏈系統時,可以操作其終端設備,以向創始節點101發送系統加入請求,對應的:
創始節點101,接收使用者的終端設備發送的系統加入請求,向添加至區塊鏈系統的使用者的終端設備發送第二可驗證聲明;其中,第二可驗證聲明用於證明使用者被授予存取區塊鏈系統的許可權。
具體的,創始節點101接收使用者的終端設備發送的系統加入請求,為使用者分配數位身份資訊,並根據創始節點101的數位身份資訊、為使用者分配的數位身份資訊、待產生的可驗證聲明的有效時段、表徵可驗證聲明所處狀態的有效性欄位等資訊,產生第二可驗證聲明;向使用者的終端設備發送第二可驗證聲明,以證明該使用者被授予存取區塊鏈系統的存取權限,即已將該使用者添加至區塊鏈系統,使用者請求成功。
進一步的,創始節點101在將使用者添加至區塊鏈系統之後,還為添加至區塊鏈系統的使用者配置初始GAS,以使使用者在基於區塊鏈辦理業務或享有服務時可進行GAS費用支付等操作。
為了使區塊鏈系統中參與共識驗證的共識節點動態平衡,打破常規的由具有選擇權的節點選取大量共識節點或由固定的共識節點進行共識驗證的方式,本說明書一個或多個實施例中,賦予了使用者自主選擇的權利,當使用者請求加入區塊鏈系統成功後,若使用者想要參與共識驗證,則可以操作其終端設備基於第二可驗證聲明,向創始節點101發送第一創建請求,該第一創建請求用於請求創建候選共識節點,以在被創始節點選取為共識節點時參與共識驗證;對應的:
創始節點101,接收使用者的終端設備發送的第一創建請求,若確定第一創建請求包括的第二可驗證聲明合法、且當前候選共識節點的數量未到達預設的數量臨限值,則創建候選共識節點102;
創始節點101創建的候選共識節點102,同步區塊鏈上的區塊鏈資料。
具體而言,創始節點101接收使用者的終端設備發送的第一創建請求,從第一創建請求中獲取第二可驗證聲明;創始節點101根據第二可驗證聲明包括的有效時段確定第二可驗證聲明是否處於有效狀態,若第二可驗證聲明處於無效狀態,則確定第二可驗證聲明不合法,發送請求失敗結果給使用者的終端設備;若第二可驗證聲明處於有效狀態,則創始節點101採用自身的公開金鑰對第二可驗證聲明包括的簽名資料進行驗證,若驗證未通過,則確定第二可驗證聲明不合法,發送請求失敗結果給使用者的終端設備;若驗證通過,則確定第二可驗證聲明合法,根據保存的候選共識節點資訊表,確定當前候選共識節點的數量,並判斷當前候選共識節點的數量是否達預設的數量臨限值,若到達預設的數量臨限值,則確定請求失敗,發送請求失敗結果給使用者的終端設備;若未到達預設的數量臨限值,則創建候選共識節點,對創建的候選共識節點進行背書,以及更新候選共識節點資訊表。其中,創始節點101中存有候選共識節點資訊表,該候選共識節點資訊表中記錄有每個候選共識節點的資訊,如ip位址、埠號等;數量臨限值可以在實際應用中根據需要自行設定,例如為36。由此,創始節點能夠基於使用者請求,創建候選共識節點,以滿足使用者的參與共識驗證的需求。
當候選共識節點創建成功後,為了確保區塊鏈系統中的每個節點擁有完整的“帳本”,創建的候選共識節點需要同步當前區塊鏈中的區塊鏈資料;可選的,創建的候選共識節向區塊鏈系統已有的部分節點或全部節點發送同步請求,以從區塊鏈系統已有節點獲取區塊鏈資料;
進一步的,考慮到一些使用者基於業務需要,此前可能曾加入且退出過區塊鏈系統,因此為了確保區塊鏈資料的安全,接收到同步請求的節點,首先確定使用者持有的第二可驗證聲明的數量,包括處於有效狀態的第二可驗證聲明和處於無效狀態的第二可驗證聲明;若使用者持有一個第二可驗證聲明,則從該第二可驗證聲明中讀取有效時段,並以明文形式將有效時段內的區塊鏈資料、以密文形式將有效時段以外的區塊鏈資料發送給對應的候選共識節點,以使候選共識節點進行區塊鏈資料的同步;若使用者持有多個第二可驗證聲明,則依次確定每個第二可驗證聲明的有效時段,並以明文形式將有效時段內的區塊鏈資料、以密文形式將有效時段以外的區塊鏈資料發送給對應的候選共識節點,以使候選共識節點進行區塊鏈資料的同步;由此,創始節點101所創建的候選共識節點,以明文形式同步所述有效時段內的區塊鏈資料,以密文形式同步所述有效時段以外的區塊鏈資料,既確保了創始節點101創建的候選共識節點具有完整的“帳本”,同時確保了區塊鏈資料的隱私安全。
本說明書實施例中的區塊鏈系統除包括前述創始節點101和候選共識節點102外,還包括資料節點,該資料節點能夠向區塊鏈中保存資料或者從區塊鏈中讀取資料。當使用者請求加入區塊鏈系統成功後,若想要成為擁有區塊鏈資料的讀寫許可權的節點,則可以操作其終端設備基於第二可驗證聲明,向創始節點101發送第二創建請求,該第二創建請求用於請求創建資料節點;對應的:
創始節點101,接收使用者的終端設備發送的第二創建請求,若確定第二創建請求包括的第二可驗證聲明合法,則創建資料節點;
創始節點101創建的資料節點,同步區塊鏈上的區塊鏈資料。
其中,創始節點101確定第二創建請求包括的第二可驗證聲明合法的過程,可參見前述創始節點101確定第一創建請求包括的第二可驗證聲明合法的過程;創始節點101創建的資料節點同步區塊鏈上的區塊鏈資料的過程,可參見前述創始節點101創建的候選共識節點同步區塊鏈上的區塊鏈資料的過程;重複之處,這裡不再贅述。
需要指出的是,本說明書實施例中的資料節點有別於候選共識節點,資料節點僅具有讀寫區塊鏈資料的許可權,並不具有被選取為共識節點的許可權,即創始節點101在選取共識節點時,不會從資料節點中選取,資料節點也就沒機會參與共識。
但如果在區塊鏈系統的某些需求下,需要將某個資料節點升級為候選共識節點,則可以採用許可權提升的方式,將該資料節點升級為候選共識節點,則升級後的節點,就會記錄在創始節點101的候選共識節點資訊表中,之後進行交易共識時,該節點就有可能被選取為共識節點。
其中,將資料節點升級為候選共識節點的具體方式,可以為:創始節點101向資料節點頒發第四可驗證聲明,該第四可驗證聲明用於證明該資料節點升級為候選共識節點,具有被選取為共識節點的許可權。
隨著使用者的不斷加入,區塊鏈系統包括的節點數量不斷增加,為了實現參與共識驗證的共識節點的動態平衡,本說明書一個或多個實施例中,創始節點101,若確定當前的候選共識節點的數量未到達預設的數量臨限值,則基於預設的候選共識節點選取規則,從除創始節點外的節點中選取候選共識節點102,以確保優質的具有共識能力的節點能夠參與到共識驗證。
其中,候選共識節點的數量、候選共識節點選取規則,可以在實際應用中根據需要自行設定;候選共識節點選取規則,如根據節點所屬使用者的資質、信用、持有的GAS數量等選取候選共識節點。
進一步的,創始節點101在選取候選共識節點102時,可以是按照預設頻率選取,也就是定期更換候選共識節點,確保候選共識驗證節點的動態更新;也可是根據待共識的交易的狀態,如交易池中交易的數量,或者交易提交節點的運行情況,確定是否對當前待共識的交易更換候選共識節點。更換候選共識節點時,採用預設的候選共識節點選取規則重新選取候選共識節點。
在選取了候選共識節點之後,本說明書一個或多個實施例中,創始節點101也作為共識節點參與共識驗證;即在共識過程中,由至少一個創始節點101和被選取的候選共識節點共同進行共識。具體的:
創始節點101,根據預設的第一共識節點選取規則,從創始節點101和候選共識節點102中選取N個對第一交易進行共識驗證的共識節點;其中,N為大於1且不大於創始節點101和共識節點102的總數量的整數;選取的共識節點包括至少一個創始節點101和至少一個候選共識節點102;
創始節點101和候選共識節點102,在被選擇為共識節點後,作為第一交易的共識節點,共同對第一交易進行共識驗證處理。
進一步的,創始節點101,獲取每個創始節點101和每個候選共識節點102對預設指令的回應時間;根據獲取的回應時間,從創始節點101和候選共識節點102中,選取N個對第一交易進行共識驗證的共識節點;其中,預設指令由提交第一交易的提交節點發送,提交節點可以為區塊鏈系統中任意類型的節點。
本說明書實施例中,基於回應時間確定參與共識的創始節點和候選共識節點的數量,技術構思如下:第一種情況下,如果有大量的候選共識節點在回應時間上都優於創始節點,則可以選取較多數量的參與共識的候選共識節點,選取較少數量或者僅選取一個參與共識的創始節點;第二種情況下,如果回應時間上優於創始節點的候選共識節點數量很少或者沒有,則可以增加參與共識的創始節點的數量,而選取較少數量或者僅選取一個參與共識的候選共識節點;其他情況下,如果回應時間上優於創始節點的候選共識節點數量,介於上述第一種情況和第二種情況之間,則可以考慮均衡選取參與共識的創始節點和候選共識節點。
基於以上的技術構思,以下提供了一種確定參與共識的創始節點和候選共識節點的數量的方案;本領域技術人員能夠想到的是,基於上述技術構思,也可以設計其他類似的方案以確定參與共識的創始節點和候選共識節點的數量;在此不再贅述。
具體的,創始節點101,獲取每個創始節點101的回應時間以得到第一回應時間集合,從多個候選共識節點102的回應時間中按照從小到大的順序選取第一預設數量的回應時間,以得到第二回應時間集合;以及,
若第二回應時間集合中的回應時間,符合第一條件的回應時間為A個,則從第一回應時間集合中選取最小的1個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取N-1個第二目標回應時間;將第一目標回應時間所對應的創始節點101、第二目標回應時間所對應的候選共識節點102,確定為對第一交易進行共識驗證的共識節點;
若第二回應時間集合中的回應時間,符合第一條件的回應時間為B個,則從第一回應時間集合中選取最小的2個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取N-2個第二目標回應時間;將第一目標回應時間所對應的創始節點101、第二目標回應時間所對應的候選共識節點102,確定為對第一交易進行共識驗證的共識節點;
若第二回應時間集合中的回應時間,符合第一條件的回應時間為C個,則從第一回應時間集合中選取最小的3個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取N-3個第二目標回應時間;將第一目標回應時間所對應的創始節點、第二目標回應時間所對應的候選共識節點,確定為對第一交易進行共識驗證的共識節點;
其中,第一條件為:回應時間的數值不大於第一回應時間集合中的全部回應時間的數值;A>=N-1,N-1>B>=2,2>C>=0,且A、B、C均為整數。
例如,需要選取4個共識節點,即N=4,若第二回應時間集合中的回應時間,符合第一條件的回應時間為6個,即A=6,則從第一回應時間集合中選取最小的1個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取3個第二目標回應時間,即共識節點包括1個創始節點101和3個候選共識節點102。若第二回應時間集合中的回應時間,符合第一條件的回應時間為3個,即B=2,則從第一回應時間集合中選取最小的2個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取2個第二目標回應時間,即共識節點包括2個創始節點101和2個候選共識節點102。若第二回應時間集合中的回應時間,符合第一條件的回應時間為0個,即C=0,則從第一回應時間集合中選取最小的3個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取1個第二目標回應時間,即共識節點包括3個創始節點101和1個候選共識節點102。
進一步的,提交節點向區塊鏈系統中發送預設指令後,記錄每個創始節點和每個候選共識節點返回回應資料的回應時間,並將記錄的回應時間發送給創始節點101,以使創始節點101根據該回應時間從創始節點101和候選共識節點102中選取對第一交易進行共識驗證的共識節點;其中,預設指令例如為ping指令。
由此,基於每個創始節點101和每個候選共識節點102對預設指令的回應時間,確定對第一交易進行共識驗證的共識節點,能夠選取到距離提交節點相對較近的候選共識節點作為共識節點,而由於不同的第一交易的提交節點通常不同,因此每次選取的參與共識驗證的候選共識節點也有所不同,使得各個候選共識節點均有參與共識驗證的機會,滿足了各個候選共識節點的參與共識驗證的需求,實現了參與共識驗證的共識節點的動態平衡;並且,參與共識驗證的節點的數量大大減少,提升了共識驗證的效率。
為了能夠在後續的共識驗證過程中快速的從各候選共識節點中選取參與共識驗證的共識節點,本說明書一個或多個實施例中,創始節點101,針對被選取的參與共識驗證處理的候選驗證節點102,調整候選共識節點參與共識驗證的參與權重。
具體的,創始節點102記錄被選取的候選共識節點102對於預設指令的回應時間;根據記錄的候選共識節點的回應時間和候選共識節點參與共識驗證的次數,調整對應候選共識節點參與共識驗證的參與權重。其中,記錄的該候選共識節點的回應時間的個數即為候選共識節點參與共識驗證的次數。可選地,根據公式W=(1+回應時間)/H,調整候選共識節點參與共識驗證的參與權重,其中,W為參與權重,H為參與共識驗證的次數;例如,回應時間為5秒,參與共識驗證的次數為4次,計算可得參與權重W=(1+5)/4=1.5。
以上的計算參與權重W的公式為本說明書的一種實現方式,在具體實施時,可以根據區塊鏈系統的運行情況和需求,對該公式進行調整,如可以將回應時間和次數H乘以相應的係數,以使計算結果與系統運行能夠更相適應。
隨著區塊鏈系統的規模擴大,使用者和候選共識節點也會不斷的增加;而隨著區塊鏈系統的持續運轉,候選共識節點被選取為共識節點對交易進行共識驗證的次數也會不斷增加。當區塊鏈系統中的候選共識節點的數量達到一定規模,及/或,一定數量的候選共識節點參與共識的總次數達到一定數值,此時區塊鏈系統中的候選共識節點整體上具有了較強的穩定性和可信性;此時,創始節點101在後續的交易共識驗證過程中,可以不再參與共識驗證,其負責選取一定數量的候選共識節點作為交易的共識節點,對交易進行共識驗證。而為了快速的從各候選共識節點中選取參與共識驗證的共識節點,本說明書一個或多個實施例中,創始節點101,基於各個候選共識節點102的參與權重,根據預設的第二共識節點選取規則,從候選共識節點102中選取對第一交易進行共識驗證的共識節點。
具體的,創始節點101對各個候選共識節點102的參與權重進行排序,並從排序結果中按照從大到小的順序選取第二預設數量的目標參與權重,將目標參與權重所對應的候選共識節點確定為對第一交易進行共識驗證的共識節點。由前述參與權重的計算公式可知,當候選共識節點參與共識驗證的次數越少時,計算而得的參與權重的值越大,因此,被選取為共識節點的機率越大,由此,能夠使參與次數較少的候選共識節點被優先選取,從而實現了參與共識驗證的共識節點的動態平衡。
進一步的,在前述選取對第一交易進行共識驗證的共識節點的基礎上,優選的,還可以結合區塊鏈系統的運行狀態,以在區塊鏈系統滿足不同的運行條件時,採用不同的方式選取共識節點;具體的:
創始節點101確定區塊鏈系統包括的節點的數量;
當區塊鏈系統包括的節點的數量到達第一數量而未到達第二數量時,其中,第二數量大於第一數量,確定區塊鏈系統滿足第一運行條件;創始節點101首先根據預設的候選共識節點選取規則,從除創始節點外的節點中選取候選共識節點,並根據預設的第一共識節點選取規則,從創始節點101和候選共識節點102中選取N個對第一交易進行共識驗證的共識節點;
當區塊鏈系統包括的節點的數量到達第二數量,及/或,一定數量的候選共識節點參與共識的總次數達到一定數值時,確定區塊鏈系統滿足第二運行條件;創始節點101根據預設的第二共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點。
當區塊鏈系統包括的節點的數量未到達第一數量時,確定區塊鏈系統滿足第三運行條件,此時由創始節點作為對提交至區塊鏈中的第一交易進行共識驗證的共識節點。
其中,第一數量和第二數量均可在實際應用中根據需要自行設定。
如前所述,由於不同的第一交易,被創始節點101所選取的對第一交易進行共識驗證的候選共識節點102往往不同,而為了明確被選取的候選共識節點對第一交易具有進行共識驗證許可權,本說明書一個或多個實施例中,創始節點101,向被選取的候選共識節點102發送第一可驗證聲明,其中,第一可驗證聲明用於證明被選取的候選共識節點102被授予對第一交易進行共識驗證的許可權;
被選取的候選共識節點102,基於接收到的第一可驗證聲明,對第一交易進行共識驗證處理。
具體的,創始節點101根據自身的數位身份資訊、被選取的候選共識節點102的數位身份資訊、授予的許可權資訊、待產生的可驗證聲明的有效時段等資訊,產生第一可驗證聲明,並向被選取的候選共識節點102發送第一可驗證聲明;被選取的候選共識節點102接收到第一可驗證聲明時,確定自身被授予對第一交易進行共識的許可權,並對第一交易進行共識驗證。
進一步的,當被選取的候選共識節點102,基於接收到的第一可驗證聲明,對第一交易進行共識驗證處理結束後,創始節點101撤銷對應的第一可驗證聲明,即將對應的第一可驗證聲明的狀態設置為無效狀態,以避免當前被選取的候選共識節點102基於該第一可驗證聲明對其他交易進行共識驗證。
通過向被選取的候選共識節點102發送第一可驗證聲明,從而可以基於第一可驗證聲明靈活的控制對應候選共識節點的共識許可權。
本說明書一個或多個實施例中提供的區塊鏈系統,其中的多個候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識。從而該系統中的創始節點能夠根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點;被創始節點選取的候選共識節點,作為第一交易的共識節點,對第一交易進行共識驗證處理。由此,通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
對應上述描述的區塊鏈系統,基於相同的技術構思,本說明書一個或多個實施例還提供一種區塊鏈系統的運行方法;圖3為本說明書一個或多個實施例提供的一種區塊鏈系統的運行方法的流程示意圖,如圖3所示,該方法包括以下步驟:
步驟S202,創始節點根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點;
步驟S204,被選取的候選共識節點,對第一交易進行共識驗證處理。
其中,第一交易可以為區塊鏈中的一個節點在接收到使用者的交易提交請求後,提交至區塊鏈的交易,可以為一個使用者的一筆或多筆交易,或者也可以為多個使用者的多筆交易。
本說明書一個或多個實施例中,候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識。創始節點通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
參見前述描述,由創始節點組建成最初的區塊鏈系統,且創始節點具有添加節點、刪除節點、從已添加的節點中選取候選共識節點、從候選共識節點中選取對提交至區塊鏈的第一交易進行共識驗證的共識節點、參與共識、以及為添加的節點配置初始GAS等許可權。在最初的區塊鏈系統組建成功後,使用者可根據需要請求加入區塊鏈系統,以在區塊鏈系統中部署節點,或者通過接入區塊鏈系統的已有節點存取區塊鏈。具體的,當使用者需要加入區塊鏈系統時,可以操作其終端設備,以向創始節點發送系統加入請求,對應的,方法還包括:
步驟S300,創始節點接收使用者的終端設備發送的系統加入請求,向添加至區塊鏈系統的使用者的終端設備發送第二可驗證聲明;其中,第二可驗證聲明用於證明使用者被授予存取區塊鏈系統的許可權。
具體的,如圖4所示的添加使用者的流程示意圖,步驟S300包括:
步驟S300-2,創始節點接收使用者的終端設備發送的系統加入請求;
本說明書的一個或多個實施例中,系統加入請求包括待加入使用者的使用者資訊;步驟S300-2之後,還可以包括:根據使用者資訊,對待加入使用者的身份進行驗證,若驗證通過,則執行步驟S300-4,若驗證未通過,則發送請求失敗結果給對應的終端設備,以使終端設備展示請求失敗資訊。
步驟S300-4,創始節點為使用者分配數位身份資訊,根據分配的數位身份資訊產生第二可驗證聲明,其中,第二可驗證聲明用於證明使用者被授予存取區塊鏈系統的存取權限;
具體的,創始節點根據自身的數位身份資訊、為使用者分配的數位身份資訊、待產生的可驗證聲明的有效時段、表徵可驗證聲明所處狀態的有效性欄位等資訊,產生第二可驗證聲明。
步驟S300-6,創始節點向使用者的終端設備發送第二可驗證聲明,以使使用者基於第二可驗證聲明存取區塊鏈系統;
其中,創始節點向使用者的終端設備發送第二可驗證聲明,以證明該使用者被授予存取區塊鏈系統的存取權限,即已將該使用者添加至區塊鏈系統,使用者請求成功。
進一步的,創始節點在將使用者添加至區塊鏈系統之後,還包括:為添加至區塊鏈系統的使用者配置初始GAS,以使使用者在基於區塊鏈辦理業務或享有服務時可進行GAS費用支付等操作。
為了使區塊鏈系統中參與共識驗證的共識節點動態平衡,打破常規的由具有選擇權的節點選取大量共識節點或由固定的共識節點進行共識驗證的方式,本說明書一個或多個實施例中,賦予了使用者自主選擇的權利,當使用者請求加入區塊鏈系統成功後,若使用者想要參與共識驗證,則可以操作其終端設備基於第二可驗證聲明,向創始節點發送第一創建請求,以請求創建候選共識節點,並在該候選共識節點被創始節點選取為共識節點時參與共識驗證;對應的,如圖5所示,方法還包括:
步驟S402,創始節點接收使用者的終端設備發送的第一創建請求,其中,第一創建請求用於請求創建候選共識節點,第一創建請求包括第二可驗證聲明;
步驟S404,創始節點若確定第一創建請求包括的第二可驗證聲明合法、且當前候選共識節點的數量未到達預設的數量臨限值,則創建候選共識節點;
具體的,創始節點接收使用者的終端設備發送的第一創建請求,從第一創建請求中獲取第二可驗證聲明,根據第二可驗證聲明包括的有效時段確定第二可驗證聲明是否處於有效狀態,若第二可驗證聲明處於無效狀態,則確定第二可驗證聲明不合法,發送請求失敗結果給使用者的終端設備;若第二可驗證聲明處於有效狀態,則創始節點採用創始節點的公開金鑰對第二可驗證聲明包括的簽名資料進行驗證,若驗證未通過,則確定第二可驗證聲明不合法,發送請求失敗結果給使用者的終端設備;若驗證通過,則確定第二可驗證聲明合法,根據保存的候選共識節點資訊表,確定當前候選共識節點的數量,並判斷當前候選共識節點的數量是否達預設的數量臨限值,若到達預設的數量臨限值,則確定請求失敗,發送請求失敗結果給使用者的終端設備;若未到達預設的數量臨限值,則創建候選共識節點,對創建的候選共識節點進行背書,以及更新候選共識節點資訊表。其中,創始節點中存有候選共識節點資訊表,該候選共識節點資訊表中記錄有每個候選共識節點的資訊,如ip位址、埠號等;數量臨限值可以在實際應用中根據需要自行設定,例如為36。由此,創始節點能夠基於使用者請求,創建候選共識節點,以滿足使用者的參與共識驗證的需求。
步驟S406,創始節點創建的候選共識節點,同步區塊鏈上的區塊鏈資料。
可選的,創始節點創建的候選共識節向區塊鏈系統已有的部分節點或全部節點發出同步請求,從而從區塊鏈系統已有節點上獲取區塊鏈資料;
進一步的,考慮到一些使用者基於業務需要,此前可能曾加入且退出過區塊鏈系統,因此為了確保區塊鏈資料的安全,接收到同步請求的節點,首先確定使用者持有的第二可驗證聲明的數量,包括處於有效狀態的第二可驗證聲明和處於無效狀態的第二可驗證聲明;若使用者持有一個第二可驗證聲明,則從該第二可驗證聲明中讀取有效時段,並以明文形式將有效時段內的區塊鏈資料、以密文形式將有效時段以外的區塊鏈資料發送給對應的候選共識節點,以使候選共識節點進行區塊鏈資料的同步;若使用者持有多個第二可驗證聲明,則依次確定每個第二可驗證聲明的有效時段,並以明文形式將各有效時段內的區塊鏈資料、以密文形式將各有效時段以外的區塊鏈資料發送給對應的候選共識節點,以使候選共識節點進行區塊鏈資料的同步;由此,創始節點所創建的候選共識節點,以明文形式同步所述有效時段內的區塊鏈資料,以密文形式同步所述有效時段以外的區塊鏈資料,既確保了創始節點創建的候選共識節點具有完整的“帳本”,同時確保了區塊鏈資料的隱私安全。
本說明書實施例中的區塊鏈系統除包括前述創始節點和候選共識節點外,還包括資料節點,該資料節點能夠向區塊鏈中保存資料或者從區塊鏈中讀取資料。當使用者請求加入區塊鏈系統成功後,若想要成為擁有區塊鏈資料的讀寫許可權的節點,則可以操作其終端設備基於第二可驗證聲明,向創始節點發送第二創建請求,以請求創建資料節點;對應的,如圖6所示,方法還包括:
步驟S502,創始節點接收使用者的終端設備發送的第二創建請求,其中,第二創建請求用於請求創建所述資料節點,第二創建請求包括第二可驗證聲明;
步驟S504,創始節點若確定第二創建請求包括的第二可驗證聲明合法,則創建資料節點;
其中,創始節點若確定第二創建請求包括的所述第二可驗證聲明合法的過程可參見前述步驟S404中的相關描述,重複之處這裡不再贅述。
步驟S506,創始節點創建的資料節點,同步區塊鏈上的區塊鏈資料。
其中,創建的資料節點同步區塊鏈上的區塊鏈資料的過程,與前述創建的候選共識節點同步區塊鏈上的區塊鏈資料的過程相似,可參見前述相關描述,重複之處這裡不再贅述。
隨著使用者的不斷加入,區塊鏈系統包括的節點數量不斷增加,為了實現參與共識驗證的共識節點的動態平衡,本說明書一個或多個實施例中,步驟S202之前,還包括:創始節點若確定當前的候選共識節點的數量未到達預設的數量臨限值,則基於預設的候選共識節點選取規則,從除創始節點外的節點中選取候選共識節點,以確保候選共識驗證節點的動態更新,使得優質的具有共識能力的節點能夠參與共識驗證。
其中,候選共識節點的數量、預設頻率和候選共識節點選取規則,可以在實際應用中根據需要自行設定;候選共識節點選取規則,如根據節點所屬使用者的資質、信用、持有的GAS數量等選取候選共識節點。
進一步的,創始節點在選取候選共識節點時,可以是按照預設頻率選取,也就是定期更換共識節點;也可是根據待共識的交易的狀態,如交易池中交易的數量,或者交易提交節點的運行情況,確定是否對當前待共識的交易更換候選共識節點。更換候選共識節點時,採用預設的候選共識節點選取規則重新選取候選共識節點。
在選取了候選共識節點之後,本說明書一個或多個實施例中,創始節點也作為共識節點參與共識驗證;即在共識過程中,由至少一個創始節點和被選取的候選共識節點共同進行共識。具體的,步驟S202中基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點,包括:
步驟F,根據預設的第一共識節點選取規則,從創始節點和候選共識節點中選取N個對第一交易進行共識驗證的共識節點;其中,N為大於1且不大於創始節點和共識節點的總數量的整數;選取的共識節點包括至少一個創始節點和至少一個候選共識節點;
具體的,創始節點獲取每個創始節點和每個候選共識節點對預設指令的回應時間,根據獲取的回應時間,從創始節點和候選共識節點中,選取N個對第一交易進行共識驗證的共識節點;其中,預設指令由提交第一交易的提交節點發送,提交節點可以為區塊鏈系統中任意類型的節點。
本說明書實施例中,基於回應時間確定參與共識的創始節點和候選共識節點的數量,技術構思如下:第一種情況下,如果有大量的候選共識節點在回應時間上都優於創始節點,則可以選取較多數量的參與共識的候選共識節點,選取較少數量或者僅選取一個參與共識的創始節點;第二種情況下,如果回應時間上優於創始節點的候選共識節點數量很少或者沒有,則可以增加參與共識的創始節點的數量,而選取較少數量或者僅選取一個參與共識的候選共識節點;其他情況下,如果回應時間上優於創始節點的候選共識節點數量,介於上述第一種情況和第二種情況之間,則可以考慮均衡選取參與共識的創始節點和候選共識節點。
基於以上的技術構思,以下提供了一種確定參與共識的創始節點和候選共識節點的數量的方案;本領域技術人員能夠想到的是,基於上述技術構思,也可以設計其他類似的方案以確定參與共識的創始節點和候選共識節點的數量;在此不再贅述。
具體的,創始節點獲取每個創始節點和每個候選共識節點對預設指令的回應時間,根據獲取的回應時間,從創始節點和候選共識節點中,選取N個對第一交易進行共識驗證的共識節點,包括:
創始節點獲取每個創始節點的回應時間以得到第一回應時間集合,從多個候選共識節點的回應時間中按照從小到大的順序選取第一預設數量的回應時間,以得到第二回應時間集合;以及,
若第二回應時間集合中的回應時間,符合第一條件的回應時間為A個,則從第一回應時間集合中選取最小的1個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取N-1個第二目標回應時間;將第一目標回應時間所對應的創始節點、第二目標回應時間所對應的候選共識節點,確定為對第一交易進行共識驗證的共識節點;
若第二回應時間集合中的回應時間,符合第一條件的回應時間為B個,則從第一回應時間集合中選取最小的2個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取N-2個第二目標回應時間;將第一目標回應時間所對應的創始節點、第二目標回應時間所對應的候選共識節點,確定為對第一交易進行共識驗證的共識節點;
若第二回應時間集合中的回應時間,符合第一條件的回應時間為C個,則從第一回應時間集合中選取最小的3個第一目標回應時間,從第二候選回應時間結合中按照從小到大的順序選取N-3個第二目標回應時間;將第一目標回應時間所對應的創始節點、第二目標回應時間所對應的候選共識節點,確定為對第一交易進行共識驗證的共識節點;
其中,第一條件為:回應時間的數值不大於第一回應時間集合中的全部回應時間的數值;A>=N-1,N-1>B>=2,2>C>=0,且A、B、C均為整數。
進一步的,提交節點向區塊鏈系統中發送預設指令後,記錄每個創始節點和每個候選共識節點返回回應資料的回應時間,並將記錄的回應時間發送給創始節點,以使創始節點根據該回應時間從創始節點和候選共識節點中選取對第一交易進行共識驗證的共識節點;其中,預設指令例如為ping指令。
與步驟F對應的,步驟S204中被選取的候選共識節點,對第一交易進行共識驗證處理,包括:
被選取的創始節點和候選共識節點,共同對第一交易進行共識驗證處理。
由此,基於每個創始節點和每個候選共識節點對預設指令的回應時間,確定對第一交易進行共識驗證的共識節點,能夠選取到距離提交節點相對較近的候選共識節點作為共識節點,而由於不同的第一交易的提交節點通常不同,因此每次選取的參與共識驗證的候選共識節點也有所不同,使得各個候選共識節點均有參與共識驗證的機會,滿足了各個候選共識節點的參與共識驗證的需求,實現了參與共識驗證的共識節點的動態平衡;並且,參與共識驗證的節點的數量大大減少,提升了共識驗證的效率。
為了能夠在後續的共識驗證過程中快速的從各候選共識節點中選取參與共識驗證的共識節點,本說明書一個或多個實施例中,步驟F中選取N個對第一交易進行共識驗證的共識節點之後,還包括:
步驟Y,創始節點針對被選取的參與共識驗證處理的候選驗證節點,調整候選共識節點參與共識驗證的參與權重。
具體的,創始節點記錄被選取的候選共識節點對於預設指令的回應時間,根據記錄的候選共識節點的回應時間和候選共識節點參與共識驗證的次數,調整對應候選共識節點參與共識驗證的參與權重。其中,記錄的該候選共識節點的回應時間的個數即為候選共識節點參與共識驗證的次數。可選地,根據公式W=(1+回應時間)/H,調整候選共識節點參與共識驗證的參與權重,其中,W為參與權重,H為參與共識驗證的次數;例如,回應時間為5秒,參與共識驗證的次數為4次,計算可得參與權重W=(1+5)/4=1.5。
以上的計算參與權重W的公式為本說明書的一種實現方式,在具體實施時,可以根據區塊鏈系統的運行情況和需求,對該公式進行調整,如可以將回應時間和次數H乘以相應的係數,以使計算結果與系統運行能夠更相適應。
隨著區塊鏈系統的規模擴大,使用者和候選共識節點也會不斷的增加;而隨著區塊鏈的持續運轉,候選共識節點被選取為共識節點對交易進行共識驗證的次數也會不斷增加。當區塊鏈系統中的候選共識節點的數量達到一定規模,及/或,一定數量的候選共識節點參與共識的總次數達到一定數值,此時區塊鏈系統中的候選共識節點整體上具有了較強的穩定性和可信性;此時,創始節點在後續的交易共識驗證過程中,可以不再參與共識驗證,其負責選取一定數量的候選共識節點作為交易的共識節點,對交易進行共識驗證。而為了快速的從各候選共識節點中選取參與共識驗證的共識節點,本說明書一個或多個實施例中,步驟S202中基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點,包括:
基於多個候選共識節點的參與權重,根據預設的第二共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點。
具體的,創始節點對各個候選共識節點當前的參與權重進行排序,並從排序結果中按照從大到小的順序選取第二預設數量的目標參與權重,將目標參與權重所對應的候選共識節點確定為對第一交易進行共識驗證的共識節點。由前述參與權重的計算公式可知,當候選共識節點參與共識驗證的次數越少時,計算而得的參與權重的值越大,因此,被選取為共識節點的機率越大,由此,能夠使參與次數較少的候選共識節點被優先選取,從而實現了參與共識驗證的共識節點的動態平衡。
進一步的,在上述選取對第一交易進行共識驗證的公式節點的基礎上,優選的,還可以結合區塊鏈系統的運行狀態,以在區塊鏈系統滿足不同的運行條件時,採用不同的方式選取共識節點;具體的,方法還包括:
創始節點確定區塊鏈系統包括的節點數量;
當區塊鏈系統包括的節點的數量到達第一數量而未到達第二數量時,其中,第二數量大於第一數量,確定區塊鏈系統滿足第一運行條件;創始節點首先根據預設的候選共識節點選取規則,從除創始節點外的節點中選取候選共識節點,並根據預設的第一共識節點選取規則,從創始節點和候選共識節點中選取N個對第一交易進行共識驗證的共識節點;
當區塊鏈系統包括的節點的數量到達第二數量,及/或,一定數量的候選共識節點參與共識的總次數達到一定數值時,確定區塊鏈系統滿足第二運行條件;創始節點根據預設的第二共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點。
當區塊鏈系統包括的節點的數量未到達第一數量時,確定區塊鏈系統滿足第三運行條件,此時由創始節點作為對提交至區塊鏈中的第一交易進行共識驗證的共識節點。
其中,第一數量和第二數量均可在實際應用中根據需要自行設定。
如前所述,由於不同的第一交易,被創始節點所選取的對第一交易進行共識驗證的候選共識節點往往不同,而為了明確被選取的候選共識節點對第一交易具有進行共識驗證許可權,本說明書一個或多個實施例中,如圖7所示,步驟S202之後,還包括:
步驟S203,創始節點向被選取的候選共識節點發送第一可驗證聲明,其中,第一可驗證聲明用於證明被選取的候選共識節點被授予對第一交易進行共識驗證的許可權;
對應的,步驟S204包括:被選取的候選共識節點,基於接收到的第一可驗證聲明,對第一交易進行共識驗證處理。
具體而言,創始節點根據自身的數位身份資訊、被選取的候選共識節點的數位身份資訊、授予的許可權資訊、待產生的可驗證聲明的有效時段等資訊,產生可驗證聲明,並向被選取的候選共識節點發送第一可驗證聲明;被選取的候選共識節點接收到第一可驗證聲明時,確定自身被授予對第一交易進行共識的許可權,並對第一交易進行共識驗證。
進一步的,當被選取的候選共識節點基於接收到的第一可驗證聲明,對第一交易進行共識驗證處理結束後,創始節點撤銷對應的可驗證聲明,即將對應的第一可驗證聲明的狀態設置為無效狀態,以避免當前被選取的候選共識節點基於該第一可驗證聲明對其他交易進行共識驗證。
通過向被選取的候選共識節點發送第一可驗證聲明,從而可以基於第一可驗證聲明靈活的控制對應候選共識節點的共識許可權。
在一個具體的實施例中,隨著區塊鏈系統的不斷運行,創始節點按照前述方式基於使用者發送的系統加入請求將使用者添加至區塊鏈系統中,並基於已添加的使用者發送的創建請求創建相應的候選共識節點或資料節點;以及,創始節點根據區塊鏈系統的不同運行狀態採用不同的方式選取共識節點,並由創始節點所選取的共識節點對提交至區塊鏈系統的第一交易進行共識驗證處理。其中,創始節點選取共識節點進行共識驗證處理的過程如圖8所示,包括:
步驟S602,創始節點確定區塊鏈系統包括的節點的數量,若區塊鏈系統包括的節點的數量未到達第一數量,則執行步驟S604,若區塊鏈系統包括的節點的數量到達第一數量而未到達第二數量,則執行步驟S606,若區塊鏈系統包括的節點的數量到達第二數量,及/或,一定數量的候選共識節點參與共識的總次數達到一定數值,則執行步驟S616;
步驟S604,創始節點作為共識節點,對提交至區塊鏈中的第一交易進行共識驗證處理;
步驟S606,若創始節點確定當前的候選共識節點的數量未到達預設的數量臨限值,則根據預設的候選共識節點選取規則,從除創始節點外的節點中選取候選共識節點;
步驟S608,創始節點根據提交至區塊鏈的第一交易,基於預設的第一共識節點選取規則,從創始節點和候選共識節點中選取N個對第一交易進行共識驗證的共識節點;其中,N為大於1且不大於創始節點和共識節點的總數量的整數;選取的共識節點包括至少一個創始節點和至少一個候選共識節點;
步驟S610,創始節點向被選取的候選共識節點發送第一可驗證聲明,其中,第一可驗證聲明用於證明被選取的候選共識節點被授予對第一交易進行共識驗證的許可權;
步驟S612,創始節點針對被選取的參與共識驗證處理的候選驗證節點,調整候選共識節點參與共識驗證的參與權重;
步驟S614,被選取的創始節點和被選取的候選共識節點,作為對第一交易進行共識驗證的共識節點,共同對第一交易進行共識驗證處理;
步驟S616,創始節點根據提交至區塊鏈的第一交易,基於各個候選共識節點的參與權重,根據預設的第二共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點;
步驟S618,創始節點向被選取的候選共識節點發送第一可驗證聲明,其中,第一可驗證聲明用於證明被選取的候選共識節點被授予對第一交易進行共識驗證的許可權;
步驟S620,被選取的候選共識節點,作為對第一交易進行共識驗證的共識節點,對第一交易進行共識驗證處理。
上述步驟S602至步驟S620的具體實現方式,可參見前述相關描述,重複之處,這裡不再贅述。
本說明書一個或多個實施例中,候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識。從而創始節點能夠根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對第一交易進行共識驗證的共識節點;被創始節點選取的候選共識節點,作為第一交易的共識節點,對第一交易進行共識驗證處理。由此,通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
對應上述描述的區塊鏈系統的運行方法,基於相同的技術構思,本說明書一個或多個實施例還提供一種區塊鏈運行裝置,應用於區塊鏈系統的創始節點。圖9為本說明書一個或多個實施例提供的應用於創始節點的區塊鏈運行裝置的模組組成示意圖,如圖9所示,該裝置包括:
選取模組701,根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點;以通過被選取的所述候選共識節點,對所述第一交易進行共識驗證處理。
本說明書一個或多個實施例中,候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識;通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
可選地,所述裝置還包括:發送模組;
所述發送模組,在所述選取模組701從候選共識節點中選取對所述第一交易進行共識驗證的共識節點之後,向被選取的候選共識節點發送第一可驗證聲明;以使所述被選取的候選共識節點基於所述第一可驗證聲明,對所述第一交易進行共識驗證;其中,所述第一可驗證聲明用於證明所述被選取的候選共識節點被授予對所述第一交易進行共識驗證的許可權。
可選地,所述選取模組701,根據預設的第一共識節點選取規則,從所述創始節點和所述候選共識節點中選取N個對所述第一交易進行共識驗證的共識節點,以通過被選取的創始節點和候選共識節點,對所述第一交易進行共識驗證處理;其中,N為大於1且不大於所述創始節點和所述共識節點的總數量的整數;選取的所述共識節點包括至少一個創始節點和至少一個候選共識節點。
可選地,所述選取模組701,獲取每個所述創始節點和每個所述候選共識節點對預設指令的回應時間,其中,所述預設指令由提交所述第一交易的提交節點發送;以及,
根據所述回應時間,從所述創始節點和所述候選共識節點中,選取N個對所述第一交易進行共識驗證的共識節點。
可選地,所述選取模組701,獲取每個所述創始節點的回應時間以得到第一回應時間集合,從多個候選共識節點的回應時間中按照從小到大的順序選取第一預設數量的回應時間,以得到第二回應時間集合;以及,
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為A個,則從第一回應時間集合中選取最小的1個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-1個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為B個,則從第一回應時間集合中選取最小的2個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-2個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為C個,則從第一回應時間集合中選取最小的3個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-3個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
其中,所述第一條件為:回應時間的數值不大於所述第一回應時間集合中的全部回應時間的數值;A>=N-1,N-1>B>=2,2>C>=0,且A、B、C為整數。
可選地,所述裝置還包括:調整模組;
所述調整模組,在所述選取模組701選取N個對所述第一交易進行共識驗證的共識節點之後,針對被選取的參與共識驗證處理的候選驗證節點,調整所述候選共識節點參與共識驗證的參與權重。
可選地,所述調整模組,記錄被選取的所述候選共識節點的回應時間;以及,
根據記錄的所述候選共識節點的回應時間和所述候選共識節點參與共識驗證的次數,調整對應候選共識節點參與共識驗證的參與權重。
可選地,所述選取模組701,基於所述多個候選共識節點的所述參與權重,根據預設的第二共識節點選取規則,從所述候選共識節點中選取對所述第一交易進行共識驗證的共識節點。
可選地,所述裝置還包括:添加模組;
所述添加模組,接收使用者的終端設備發送的系統加入請求,向添加至所述區塊鏈系統的使用者的終端設備發送第二可驗證聲明;其中,所述第二可驗證聲明用於證明所述使用者被授予存取所述區塊鏈系統的許可權。
可選地,所述裝置還包括:第一創建模組;
所述第一創建模組,接收所述使用者的終端設備發送的第一創建請求,其中,所述第一創建請求用於請求創建候選共識節點,所述第一創建請求包括所述第二可驗證聲明;以及,
若確定所述第一創建請求包括的所述第二可驗證聲明合法、且當前所述候選共識節點的數量未到達預設的數量臨限值,則創建候選共識節點。
可選地,所述區塊鏈系統還包括資料節點,所述資料節點,向所述區塊鏈中保存資料或者從所述區塊鏈中讀取資料;所述裝置還包括:第二創建模組;
所述第二創建模組,接收所述使用者的終端設備發送的第二創建請求,其中,所述第二創建請求用於請求創建所述資料節點,所述第二創建請求包括所述第二可驗證聲明;以及,
若確定所述第二創建請求包括的所述第二可驗證聲明合法,則創建資料節點。
可選地,所述裝置還包括:配置模組;
所述配置模組,為添加至所述區塊鏈系統的使用者配置初始GAS。
本說明書一個或多個實施例提供的區塊鏈運行裝置,能夠根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從該系統包括的多個候選共識節點中選取對第一交易進行共識驗證的共識節點;被創始節點選取的候選共識節點,作為第一交易的共識節點,對第一交易進行共識驗證處理。由此,通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
需要說明的是,本說明書中關於區塊鏈運行裝置的實施例與本說明書中關於區塊鏈系統的運行方法的實施例基於同一發明構思,因此該實施例的具體實施可以參見前述對應的區塊鏈系統的運行方法的實施,重複之處不再贅述。
進一步地,對應上述區塊鏈系統的運行方法,基於相同的技術構思,本說明書一個或多個實施例還提供一種區塊鏈運行設備,該設備用於執行區塊鏈系統的創始節點的運行方法,圖10為本說明書一個或多個實施例提供的一種區塊鏈運行設備的結構示意圖。
如圖10所示,區塊鏈運行設備可因配置或性能不同而產生比較大的差異,可以包括一個或一個以上的處理器801和記憶體802,記憶體802中可以儲存有一個或一個以上儲存應用程式或資料。其中,記憶體802可以是短暫儲存或持久儲存。儲存在記憶體802的應用程式可以包括一個或一個以上模組(圖示未示出),每個模組可以包括區塊鏈運行設備中的一系列電腦可執行指令。更進一步地,處理器801可以設置為與記憶體802通信,在區塊鏈運行設備上執行記憶體802中的一系列電腦可執行指令。區塊鏈運行設備還可以包括一個或一個以上電源803,一個或一個以上有線或無線網路介面804,一個或一個以上輸入輸出介面805,一個或一個以上鍵盤806等。
在一個具體的實施例中,區塊鏈運行設備包括有記憶體,以及一個或一個以上的程式,其中一個或者一個以上程式儲存於記憶體中,且一個或者一個以上程式可以包括一個或一個以上模組,且每個模組可以包括對區塊鏈運行設備中的一系列電腦可執行指令,且經配置以由一個或者一個以上處理器執行該一個或者一個以上套裝程式含用於進行以下電腦可執行指令:
根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點;以通過被選取的所述候選共識節點,對所述第一交易進行共識驗證處理。
本說明書一個或多個實施例中,候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識;通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
可選地,電腦可執行指令在被執行時,所述從候選共識節點中選取對所述第一交易進行共識驗證的共識節點之後,還包括:
向被選取的候選共識節點發送第一可驗證聲明,以使被選取的候選共識節點,基於接收到的所述第一可驗證聲明,對所述第一交易進行共識驗證處理;其中,所述第一可驗證聲明用於證明所述被選取的候選共識節點被授予對所述第一交易進行共識驗證的許可權。
可選地,電腦可執行指令在被執行時,所述基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點,包括:
根據預設的第一共識節點選取規則,從所述創始節點和所述候選共識節點中選取N個對所述第一交易進行共識驗證的共識節點;以通過被選取的所述創始節點和被選取的所述候選共識節點,共同對所述第一交易進行共識驗證處理;其中,N為大於1且不大於所述創始節點和所述共識節點的總數量的整數;選取的所述共識節點包括至少一個創始節點和至少一個候選共識節點。
可選地,電腦可執行指令在被執行時,所述根據預設的第一共識節點選取規則,從所述創始節點和所述候選共識節點中選取N個對所述第一交易進行共識驗證的共識節點,包括:
獲取每個所述創始節點和每個所述候選共識節點對預設指令的回應時間,其中,所述預設指令由提交所述第一交易的提交節點發送;以及,
根據所述回應時間,從所述創始節點和所述候選共識節點中,選取N個對所述第一交易進行共識驗證的共識節點。
可選地,電腦可執行指令在被執行時,所述根據所述回應時間,從所述創始節點和所述候選共識節點中,選取N個對所述第一交易進行共識驗證的共識節點,包括:
獲取每個所述創始節點的回應時間以得到第一回應時間集合,從多個候選共識節點的回應時間中按照從小到大的順序選取第一預設數量的回應時間,以得到第二回應時間集合;以及,
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為A個,則從第一回應時間集合中選取最小的1個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-1個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為B個,則從第一回應時間集合中選取最小的2個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-2個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為C個,則從第一回應時間集合中選取最小的3個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-3個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
其中,所述第一條件為:回應時間的數值不大於所述第一回應時間集合中的全部回應時間的數值;A>=N-1,N-1>B>=2,2>C>=0,且A、B、C為整數。
可選地,電腦可執行指令在被執行時,所述選取N個對所述第一交易進行共識驗證的共識節點之後,還包括:
針對被選取的參與共識驗證處理的候選驗證節點,調整所述候選共識節點參與共識驗證的參與權重。
可選地,電腦可執行指令在被執行時,所述調整所述候選共識節點參與共識驗證的參與權重,包括:
記錄被選取的所述候選共識節點的回應時間;以及,
根據記錄的所述候選共識節點的回應時間和所述候選共識節點參與共識驗證的次數,調整對應候選共識節點參與共識驗證的參與權重。
可選地,電腦可執行指令在被執行時,所述基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點,包括:
基於所述多個候選共識節點的所述參與權重,根據預設的第二共識節點選取規則,從所述候選共識節點中選取對所述第一交易進行共識驗證的共識節點。
可選地,電腦可執行指令在被執行時,所述方法還包括:
接收使用者的終端設備發送的系統加入請求,向添加至所述區塊鏈系統的使用者的終端設備發送第二可驗證聲明;其中,所述第二可驗證聲明用於證明所述使用者被授予存取所述區塊鏈系統的許可權。
可選地,電腦可執行指令在被執行時,所述方法還包括:
接收所述使用者的終端設備發送的第一創建請求,其中,所述第一創建請求用於請求創建候選共識節點,所述第一創建請求包括所述第二可驗證聲明;
若確定所述第一創建請求包括的所述第二可驗證聲明合法、且當前所述候選共識節點的數量未到達預設的數量臨限值,則創建候選共識節點;以及,
所述創始節點創建的所述候選共識節點,同步所述區塊鏈上的區塊鏈資料。
可選地,電腦可執行指令在被執行時,所述區塊鏈系統還包括資料節點,所述資料節點,向所述區塊鏈中保存資料或者從所述區塊鏈中讀取資料;所述方法還包括:
接收所述使用者的終端設備發送的第二創建請求,其中,所述第二創建請求用於請求創建所述資料節點,所述第二創建請求包括所述第二可驗證聲明;
若確定所述第二創建請求包括的所述第二可驗證聲明合法,則創建資料節點;以及,
所述創始節點創建的所述資料節點,同步所述區塊鏈上的區塊鏈資料。
可選地,電腦可執行指令在被執行時,所述第二可驗證聲明包括有效期限,所述同步所述區塊鏈上的區塊鏈資料,包括:
以明文形式同步所述有效時段內的區塊鏈資料,以密文形式同步所述有效時段以外的區塊鏈資料。
可選地,電腦可執行指令在被執行時,所述方法還包括:
所述創始節點為添加至所述區塊鏈系統的使用者配置初始GAS。
本說明書一個或多個實施例提供的區塊鏈運行設備,能夠根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從該系統包括的多個候選共識節點中選取對第一交易進行共識驗證的共識節點;被創始節點選取的候選共識節點,作為第一交易的共識節點,對第一交易進行共識驗證處理。由此,通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
需要說明的是,本說明書中關於區塊鏈運行設備的實施例與本說明書中關於區塊鏈系統的運行方法的實施例基於同一發明構思,因此該實施例的具體實施可以參見前述對應的區塊鏈系統的運行方法的實施,重複之處不再贅述。
進一步地,對應上述描述的區塊鏈系統的運行方法,基於相同的技術構思,本說明書一個或多個實施例還提供了一種儲存媒體,用於儲存電腦可執行指令,一個具體的實施例中,該儲存媒體可以為隨身碟、光碟、硬碟等,該儲存媒體儲存的電腦可執行指令在被處理器執行時,能實現以下流程:
根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點;以通過被選取的所述候選共識節點,對所述第一交易進行共識驗證處理。
本說明書一個或多個實施例中,候選共識節點具有被選取為共識節點的許可權,其在被選取為共識節點時,才能夠參與共識,未被選取為共識節點時不參與共識;通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述從候選共識節點中選取對所述第一交易進行共識驗證的共識節點之後,還包括:
向被選取的候選共識節點發送第一可驗證聲明,以使被選取的候選共識節點,基於接收到的所述第一可驗證聲明,對所述第一交易進行共識驗證處理;其中,所述第一可驗證聲明用於證明所述被選取的候選共識節點被授予對所述第一交易進行共識驗證的許可權。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點,包括:
根據預設的第一共識節點選取規則,從所述創始節點和所述候選共識節點中選取N個對所述第一交易進行共識驗證的共識節點;以通過被選取的所述創始節點和被選取的所述候選共識節點,共同對所述第一交易進行共識驗證處理;其中,N為大於1且不大於所述創始節點和所述共識節點的總數量的整數;選取的所述共識節點包括至少一個創始節點和至少一個候選共識節點。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述根據預設的第一共識節點選取規則,從所述創始節點和所述候選共識節點中選取N個對所述第一交易進行共識驗證的共識節點,包括:
獲取每個所述創始節點和每個所述候選共識節點對預設指令的回應時間,其中,所述預設指令由提交所述第一交易的提交節點發送;以及,
根據所述回應時間,從所述創始節點和所述候選共識節點中,選取N個對所述第一交易進行共識驗證的共識節點。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述根據所述回應時間,從所述創始節點和所述候選共識節點中,選取N個對所述第一交易進行共識驗證的共識節點,包括:
獲取每個所述創始節點的回應時間以得到第一回應時間集合,從多個候選共識節點的回應時間中按照從小到大的順序選取第一預設數量的回應時間,以得到第二回應時間集合;以及,
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為A個,則從第一回應時間集合中選取最小的1個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-1個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為B個,則從第一回應時間集合中選取最小的2個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-2個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
若所述第二回應時間集合中的回應時間,符合第一條件的回應時間為C個,則從第一回應時間集合中選取最小的3個第一目標回應時間,從所述第二候選回應時間結合中按照從小到大的順序選取N-3個第二目標回應時間;將所述第一目標回應時間所對應的創始節點、所述第二目標回應時間所對應的候選共識節點,確定為對所述第一交易進行共識驗證的共識節點;
其中,所述第一條件為:回應時間的數值不大於所述第一回應時間集合中的全部回應時間的數值;A>=N-1,N-1>B>=2,2>C>=0,且A、B、C為整數。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述選取N個對所述第一交易進行共識驗證的共識節點之後,還包括:
針對被選取的參與共識驗證處理的候選驗證節點,調整所述候選共識節點參與共識驗證的參與權重。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述調整所述候選共識節點參與共識驗證的參與權重,包括:
記錄被選取的所述候選共識節點的回應時間;以及,
根據記錄的所述候選共識節點的回應時間和所述候選共識節點參與共識驗證的次數,調整對應候選共識節點參與共識驗證的參與權重。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述基於預設的共識節點選取規則,從候選共識節點中選取對所述第一交易進行共識驗證的共識節點,包括:
基於所述多個候選共識節點的所述參與權重,根據預設的第二共識節點選取規則,從所述候選共識節點中選取對所述第一交易進行共識驗證的共識節點。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述方法還包括:
接收使用者的終端設備發送的系統加入請求,向添加至所述區塊鏈系統的使用者的終端設備發送第二可驗證聲明;其中,所述第二可驗證聲明用於證明所述使用者被授予存取所述區塊鏈系統的許可權。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述方法還包括:
接收所述使用者的終端設備發送的第一創建請求,其中,所述第一創建請求用於請求創建候選共識節點,所述第一創建請求包括所述第二可驗證聲明;
若確定所述第一創建請求包括的所述第二可驗證聲明合法、且當前所述候選共識節點的數量未到達預設的數量臨限值,則創建候選共識節點;以及,
所述創始節點創建的所述候選共識節點,同步所述區塊鏈上的區塊鏈資料。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述區塊鏈系統還包括資料節點,所述資料節點,向所述區塊鏈中保存資料或者從所述區塊鏈中讀取資料;所述方法還包括:
接收所述使用者的終端設備發送的第二創建請求,其中,所述第二創建請求用於請求創建所述資料節點,所述第二創建請求包括所述第二可驗證聲明;
若確定所述第二創建請求包括的所述第二可驗證聲明合法,則創建資料節點;以及,
所述創始節點創建的所述資料節點,同步所述區塊鏈上的區塊鏈資料。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述第二可驗證聲明包括有效期限,所述同步所述區塊鏈上的區塊鏈資料,包括:
以明文形式同步所述有效時段內的區塊鏈資料,以密文形式同步所述有效時段以外的區塊鏈資料。
可選地,該儲存媒體儲存的電腦可執行指令在被處理器執行時,所述方法還包括:
所述創始節點為添加至所述區塊鏈系統的使用者配置初始GAS。
本說明書一個或多個實施例提供的儲存媒體儲存的電腦可執行指令在被處理器執行時,能夠根據提交至區塊鏈的第一交易,基於預設的共識節點選取規則,從該系統包括的多個候選共識節點中選取對第一交易進行共識驗證的共識節點;被創始節點選取的候選共識節點,作為第一交易的共識節點,對第一交易進行共識驗證處理。由此,通過動態的從候選共識節點中選取對第一交易進行共識驗證的共識節點,使得各候選共識節點均有機會參與共識驗證,維持了參與共識驗證的共識節點的動態平衡;並且無需大量的共識節點參與共識驗證,提升了共識驗證的效率。
需要說明的是,本說明書中關於儲存媒體的實施例與本說明書中關於區塊鏈系統的運行方法的實施例基於同一發明構思,因此該實施例的具體實施可以參見前述對應的區塊鏈系統的運行方法的實施,重複之處不再贅述。
上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在附圖中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多工處理和平行處理也是可以的或者可能是有利的。
在20世紀30年代,對於一個技術的改進可以很明顯地區分是硬體上的改進(例如,對二極體、電晶體、開關等電路結構的改進)還是軟體上的改進(對於方法流程的改進)。然而,隨著技術的發展,當今的很多方法流程的改進已經可以視為硬體電路結構的直接改進。設計人員幾乎都通過將改進的方法流程程式設計到硬體電路中來得到相應的硬體電路結構。因此,不能說一個方法流程的改進就不能用硬體實體模組來實現。例如,可程式設計邏輯裝置(Programmable Logic Device,PLD)(例如現場可程式設計閘陣列(Field Programmable Gate Array,FPGA))就是這樣一種積體電路,其邏輯功能由使用者對裝置程式設計來確定。由設計人員自行程式設計來把一個數位系統“整合”在一片PLD上,而不需要請晶片製造廠商來設計和製作專用的積體電路晶片。而且,如今,取代手工地製作積體電路晶片,這種程式設計也多半改用“邏輯編譯器(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)與Verilog。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬體描述語言稍作邏輯程式設計並程式設計到積體電路中,就可以很容易得到實現該邏輯方法流程的硬體電路。
控制器可以按任何適當的方式實現,例如,控制器可以採取例如微處理器或處理器以及儲存可由該(微)處理器執行的電腦可讀程式碼(例如軟體或韌體)的電腦可讀媒體、邏輯閘、開關、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、可程式設計邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限於以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,記憶體控制器還可以被實現為記憶體的控制邏輯的一部分。本領域技術人員也知道,除了以純電腦可讀程式碼方式實現控制器以外,完全可以通過將方法步驟進行邏輯程式設計來使得控制器以邏輯閘、開關、專用積體電路、可程式設計邏輯控制器和嵌入微控制器等的形式來實現相同功能。因此這種控制器可以被認為是一種硬體部件,而對其內包括的用於實現各種功能的裝置也可以視為硬體部件內的結構。或者甚至,可以將用於實現各種功能的裝置視為既可以是實現方法的軟體模組又可以是硬體部件內的結構。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦。具體的,電腦例如可以為個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任何設備的組合。
為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本說明書實施例時可以把各單元的功能在同一個或多個軟體及/或硬體中實現。
所屬技術領域中具有通常知識者應明白,本說明書一個或多個實施例可提供為方法、系統或電腦程式產品。因此,本說明書一個或多個實施例可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本說明書可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的電腦程式產品的形式。
本說明書是參照根據本說明書實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方塊圖來描述的。應理解可由電腦程式指令實現流程圖和/或方塊圖中的每一流程和/或方塊、以及流程圖和/或方塊圖中的流程和/或方塊的結合。可提供這些電腦程式指令到通用電腦、專用電腦、嵌入式處理機或其他可程式設計資料處理設備的處理器以產生一個機器,使得通過電腦或其他可程式設計資料處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的裝置。
這些電腦程式指令也可儲存在能引導電腦或其他可程式設計資料處理設備以特定方式工作的電腦可讀記憶體中,使得儲存在該電腦可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能。
這些電腦程式指令也可裝載到電腦或其他可程式設計資料處理設備上,使得在電腦或其他可程式設計設備上執行一系列操作步驟以產生電腦實現的處理,從而在電腦或其他可程式設計設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的步驟。
在一個典型的配置中,電腦設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和記憶體。
記憶體可能包括電腦可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)及/或非揮發性記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。記憶體是電腦可讀媒體的示例。
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存器、卡式磁帶,磁帶式磁碟儲存器或其他磁性存放裝置或任何其他非傳輸媒體,可用於儲存可以被電腦設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料信號和載波。
還需要說明的是,用語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
本說明書一個或多個實施例可以在由電腦執行的電腦可執行指令的一般上下文中描述,例如程式模組。一般地,程式模組包括執行特定任務或實現特定抽象資料類型的常式、程式、物件、元件、資料結構等等。也可以在分散式運算環境中實踐本說明書的一個或多個實施例,在這些分散式運算環境中,由通過通信網路而被連接的遠端處理設備來執行任務。在分散式運算環境中,程式模組可以位於包括存放裝置在內的本地和遠端電腦儲存媒體中。
本說明書中的各個實施例均採用循序的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本檔的實施例而已,並不用於限制本檔。對於本領域技術人員來說,本檔可以有各種更改和變化。凡在本檔的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本檔的申請專利範圍之內。
101:創始節點
102:候選共識節點
S202:步驟
S204:步驟
S300:步驟
S300-2:步驟
S300-4:步驟
S300-6:步驟
S402:步驟
S404:步驟
S406:步驟
S502:步驟
S504:步驟
S506:步驟
S202:步驟
S203:步驟
S204:步驟
S602:步驟
S604:步驟
S606:步驟
S608:步驟
S610:步驟
S612:步驟
S614:步驟
S616:步驟
S618:步驟
S620:步驟
701:選取模組
801:處理器
802:記憶體
803:電源
804:有線或無線網路介面
805:輸入輸出介面
806:鍵盤
為了更清楚地說明本說明書一個或多個實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本說明書中記載的一些實施例,對於本領域普通技術人員來講,在不付出進步性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[圖1]為本說明書一個或多個實施例提供的一種區塊鏈系統的場景示意圖;
[圖2]為本說明書一個或多個實施例提供的一種區塊鏈系統的組成示意圖;
[圖3]為本說明書一個或多個實施例提供的一種區塊鏈系統的運行方法的第一種流程示意圖;
[圖4]為本說明書一個或多個實施例提供的一種添加使用者的流程示意圖;
[圖5]為本說明書一個或多個實施例提供的一種創建候選共識節點的流程示意圖;
[圖6]為本說明書一個或多個實施例提供的一種創建資料節點的流程示意圖;
[圖7]為本說明書一個或多個實施例提供的一種區塊鏈系統的運行方法的第二種流程示意圖;
[圖8]為本說明書一個或多個實施例提供的選取共識節點進行共識驗證處理的流程示意圖;
[圖9]為本說明書一個或多個實施例提供的一種區塊鏈運行裝置的模組組成示意圖;
[圖10]為本說明書一個或多個實施例提供的一種區塊鏈運行設備的結構示意圖。