TWI724780B - 用於區塊鏈系統中的主節點切換處理的方法及裝置 - Google Patents

用於區塊鏈系統中的主節點切換處理的方法及裝置 Download PDF

Info

Publication number
TWI724780B
TWI724780B TW109103621A TW109103621A TWI724780B TW I724780 B TWI724780 B TW I724780B TW 109103621 A TW109103621 A TW 109103621A TW 109103621 A TW109103621 A TW 109103621A TW I724780 B TWI724780 B TW I724780B
Authority
TW
Taiwan
Prior art keywords
node
period
backup
request
random number
Prior art date
Application number
TW109103621A
Other languages
English (en)
Other versions
TW202101939A (zh
Inventor
林鵬
Original Assignee
開曼群島商創新先進技術有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 開曼群島商創新先進技術有限公司 filed Critical 開曼群島商創新先進技術有限公司
Publication of TW202101939A publication Critical patent/TW202101939A/zh
Application granted granted Critical
Publication of TWI724780B publication Critical patent/TWI724780B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

本案提供了用於執行區塊鏈系統中的主節點切換處理的方法及裝置。在該方法中,當在備份節點處確定需要執行時期切換時,備份節點產生第一隨機數。如果第一隨機數滿足時期切換觸發條件,則備份節點向區塊鏈系統中的除了該備份節點之外的多個網路節點發送時期切換請求訊息。在備份節點處,接收來自多個網路節點中的至少一個網路節點的請求確認訊息,所述請求確認訊息指示確認備份節點充當新的主節點。響應於所接收到的驗證通過訊息的數量大於預定數量,備份節點向多個網路節點發送時期切換確認訊息。

Description

用於區塊鏈系統中的主節點切換處理的方法及裝置
本案涉及區塊鏈技術領域,具體地,涉及用於區塊鏈系統中的主節點切換處理的方法及裝置。
分散式帳本(Distributed ledger,DL)是一種在分散式記帳系統(Distributed ledger systems,DLSs)的成員(也稱為“節點”)之間共享、複製和同步的資料庫。分散式帳本記錄分散式記帳系統的成員之間的交易,比如資產或資料的交換。DLS是一種去中心化的分散式記帳系統。在DLS中,每個節點複製並保存分類帳,該分類帳在每個節點處獨立地進行更新,並且不需要中心節點來進行維護。 DLS也可以稱為共識網路、區塊鏈網路和/或區塊鏈系統。區塊鏈系統的示例可以包括公有區塊鏈系統,私有區塊鏈系統和聯盟區塊鏈系統。公有區塊鏈是指對所有人或實體都開放的區塊鏈。在公有區塊鏈系統中,任何人或實體都可以讀取資料、發送交易並且對交易進行有效確認。私有區塊鏈也稱為專有區塊鏈。私有區塊鏈是一條非公開的“區塊鏈”,通常情況下,節點只有得到授權後才能加入私有區塊鏈系統。此外,私有區塊鏈系統中的各個節點的寫入權限會被嚴格控制,並且讀取權限可視需求有選擇性地對外開放。聯盟鏈是指由多個機構共同參與管理的區塊鏈,每個組織或機構管理一個或多個節點,其資料只允許系統內的不同機構進行讀寫和發送。 區塊鏈系統依賴於共識機制來在區塊鏈系統中的各個節點之間實現資料一致性。例如,如果區塊鏈系統中的某個節點需要進行交易處理,則會針對該交易所對應的提議在區塊鏈系統中進行共識處理,以在區塊鏈系統的所有節點之間達成一致。 在區塊鏈系統中進行共識處理時,區塊鏈系統中的一個節點會充當主節點,區塊鏈系統中的其餘節點充當備份節點。主節點向所有備份節點發送待共識的提議。在接收到待共識的提議後,所有備份節點對該提議進行共識確認,並且將共識確認結果返回給主節點。主節點根據所接收的共識確認結果來判斷共識是否通過。 在共識過程中,會存在當前主節點作惡或當前主節點發生通信故障(即,當前主節點失效),從而導致當前共識處理過程無法正常完成。在這種情況下,需要啓動換主流程來從備份節點中重新選舉新的主節點,由該新的主節點來重新發起完成共識處理過程。 在當前主節點失效後,會存在多個備份節點來發起換主請求來競爭主節點。如何高效地實現換主處理,成為共識過程的一個極待解決的問題。
鑒於上述,本案提供了一種用於區塊鏈系統中的主節點切換處理的方法及裝置。利用該方法及裝置,能夠降低出現由於多個備份節點設備同時發起換主請求而導致的選票瓜分問題的機率,由此提升換主處理效率。 根據本案的一個態樣,提供了一種用於執行區塊鏈系統中的主節點切換處理的方法,所述區塊鏈系統包括多個網路節點,所述多個網路節點包括主節點和至少一個備份節點,所述方法包括:當在備份節點處確定需要執行時期切換時,由所述備份節點產生第一隨機數,所述時期切換使得從基於當前主節點進行的當前時期切換到基於新的主節點進行的新時期;如果所述第一隨機數滿足時期切換觸發條件,則由所述備份節點向所述區塊鏈系統中的除了所述備份節點之外的多個網路節點發送時期切換請求訊息,所述時期切換請求訊息指示請求從基於所述當前主節點進行的當前時期切換到基於所述備份節點作為新的主節點進行的新時期;在所述備份節點處,接收來自所述多個網路節點中的至少一個網路節點的請求確認訊息,所述請求確認訊息指示確認所述備份節點充當所述新的主節點;以及響應於所接收到的驗證通過訊息的數量大於預定數量,由所述備份節點向所述多個網路節點發送時期切換確認訊息。 可選地,在上述態樣的一個示例中,在備份節點處確定需要執行時期切換包括:響應於在所述備份節點處監測到所述當前時期內的針對第一待共識提議的第一共識處理在預定時段內未完成,確定需要執行時期切換。 可選地,在上述態樣的一個示例中,所述時期切換請求訊息包括所述第一隨機數以及第一隨機數的證明資訊,所述第一隨機數和所述第一隨機數的證明資訊是使用可驗證隨機函數演算法來基於第二隨機數和所述第一待共識提議的提議編號產生的,所述第二隨機數是在所述區塊鏈系統的當前主節點設備被選擇為主節點設備的主節點切換處理過程中產生的隨機數,其中,所述多個網路節點處的請求確認處理是基於所述第一隨機數以及所述第一隨機數的證明資訊進行的。 可選地,在上述態樣的一個示例中,所述時期切換觸發條件包括:所述第一隨機數小於第一預定臨限值;或者所述第一隨機數大於第二預定臨限值。 可選地,在上述態樣的一個示例中,所述請求確認訊息包括所述第一待共識提議的提議編號和發送所述請求確認訊息的網路節點的節點標識。 可選地,在上述態樣的一個示例中,所述第一共識處理包括三階段共識處理,所述請求確認訊息還包括發出所述請求確認訊息的網路節點在所述第一共識處理時做出的第二階段共識承諾資訊以及第三階段共識承諾資訊。 可選地,在上述態樣的一個示例中,所述時期切換確認訊息包括所述第一待共識提議的提議編號和所述備份節點的節點標識。 可選地,在上述態樣的一個示例中,所述時期切換確認訊息還包括各個發出請求確認訊息的網路節點在所述第一共識處理時做出的第二階段共識承諾資訊集合以及第三階段共識承諾資訊集合。 根據本案的另一態樣,提供一種用於執行區塊鏈系統中的主節點切換處理的方法,所述區塊鏈系統包括多個網路節點,所述多個網路節點包括主節點和至少一個備份節點,所述方法包括:在網路節點處,接收來自備份節點的時期切換請求訊息,所述時期切換請求訊息指示請求從基於所述當前主節點進行的當前時期切換到基於所述備份節點作為新的主節點進行的新時期;在所述網路節點處,對所述時期切換請求訊息進行時期切換請求驗證;在時期切換請求驗證通過後,由所述網路節點向所述備份節點發送請求確認訊息,所述請求確認訊息指示確認所述備份節點充當所述新的主節點;以及從所述備份節點設備接收時期切換確認訊息,其中,所述時期切換請求訊息是在第一隨機數滿足時期切換觸發條件時由所述備份節點設備發送的,所述第一隨機數是在確定需要執行時期切換時在所述備份節點設備處產生的,所述時期切換確認訊息是響應於所述備份節點設備從所述區塊鏈系統中的除了所述備份節點之外的網路節點接收到的請求確認訊息的數量超過預定數量,由所述備份節點發送的。 可選地,在上述態樣的一個示例中,確定需要執行時期切換包括:響應於在所述備份節點處監測到所述當前時期內的針對第一待共識提議的第一共識處理在預定時段內未完成,確定需要執行時期切換。 可選地,在上述態樣的一個示例中,所述時期切換請求訊息包括所述第一隨機數以及第一隨機數的證明資訊,所述第一隨機數和所述第一隨機數的證明資訊是使用可驗證隨機函數演算法來基於第二隨機數和所述第一待共識提議的提議編號產生的,所述第二隨機數是在所述區塊鏈系統的當前主節點設備被選擇為主節點設備的主節點切換處理過程中產生的隨機數,對所述時期切換請求訊息進行時期切換請求驗證包括:基於所述第一隨機數以及所述第一隨機數的證明資訊,對所述時期切換請求訊息進行時期切換請求驗證。 可選地,在上述態樣的一個示例中,所述請求認證訊息包括所述第一待共識提議的提議編號和發出所述請求認證訊息的網路節點的節點標識。 可選地,在上述態樣的一個示例中,所述請求認證訊息還包括發送所述請求認證訊息的網路節點在所述第一共識處理時做出的第二階段共識承諾資訊以及第三階段共識承諾資訊。 可選地,在上述態樣的一個示例中,所述時期切換確認訊息包括所述第一待共識提議的提議編號和所述備份節點的節點標識。 可選地,在上述態樣的一個示例中,所述時期切換確認訊息還包括各個發出請求認證訊息的網路節點在所述第一共識處理時做出的第二階段共識承諾資訊集合以及第三階段共識承諾資訊集合。 可選地,在上述態樣的一個示例中,在網路節點處,接收來自備份節點的時期切換請求訊息,包括:在網路節點處,接收來自至少兩個備份節點的至少兩個時期切換請求訊息,所述時期切換請求訊息包括第一隨機數,以及對所述時期切換請求訊息進行時期切換請求驗證包括:基於所述至少兩個時期切換請求訊息的第一隨機數,確定待驗證的時期切換請求訊息;以及對所確定的待驗證的時期切換請求訊息進行時期切換請求驗證。 根據本案的另一態樣,提供一種用於執行區塊鏈系統中的主節點切換處理的裝置,所述區塊鏈系統包括多個網路節點,所述多個網路節點包括主節點和至少一個備份節點,所述裝置位於所述備份節點中,所述裝置包括:隨機數產生單元,被配置為在確定需要執行時期切換時,產生第一隨機數,所述時期切換使得從基於當前主節點進行的當前時期切換到基於新的主節點進行的新時期;時期切換請求訊息發送單元,被配置為如果所述第一隨機數滿足時期切換觸發條件,則向所述區塊鏈系統中的除了所述備份節點之外的多個網路節點發送時期切換請求訊息,所述時期切換請求訊息指示請求從基於所述當前主節點進行的當前時期切換到基於所述備份節點作為新的主節點進行的新時期;請求確認訊息接收單元,被配置為接收來自所述多個網路節點中的至少一個網路節點的請求確認訊息,所述請求確認訊息指示確認所述備份節點充當所述新的主節點;以及時期切換確認訊息發送單元,被配置為響應於所接收到的驗證通過訊息的數量大於預定數量,由所述備份節點向所述多個網路節點發送時期切換確認訊息。 可選地,在上述態樣的一個示例中,所述裝置還可以包括:時期切換確定單元,被配置為響應於監測到所述當前時期內的針對第一待共識提議的第一共識處理在預定時段內未完成,確定需要執行時期切換。 可選地,在上述態樣的一個示例中,所述時期切換請求訊息包括所述第一隨機數以及第一隨機數的證明資訊,所述第一隨機數和所述第一隨機數的證明資訊是使用可驗證隨機函數演算法來基於第二隨機數和所述第一待共識提議的提議編號產生的,所述第二隨機數是在所述區塊鏈系統的當前主節點設備被選擇為主節點設備的主節點切換處理過程中產生的隨機數,其中,所述多個網路節點處的請求確認處理是基於所述第一隨機數以及所述第一隨機數的證明資訊進行的。 可選地,在上述態樣的一個示例中,所述請求確認訊息包括所述第一待共識提議的提議編號和發送所述請求確認訊息的網路節點的節點標識。 可選地,在上述態樣的一個示例中,所述第一共識處理包括三階段共識處理,所述請求確認訊息還包括發出所述請求確認訊息的網路節點在所述第一共識處理時做出的第二階段共識承諾資訊以及第三階段共識承諾資訊。 可選地,在上述態樣的一個示例中,所述時期切換確認訊息包括所述第一待共識提議的提議編號和所述備份節點的節點標識。 可選地,在上述態樣的一個示例中,所述時期切換確認訊息還包括各個發出請求確認訊息的網路節點在所述第一共識處理時做出的第二階段共識承諾資訊集合以及第三階段共識承諾資訊集合。 根據本案的另一態樣,提供一種用於執行區塊鏈系統中的主節點切換處理的裝置,所述區塊鏈系統包括多個網路節點,所述多個網路節點包括主節點和至少一個備份節點,所述裝置位於處理請求充當新的主節點的備份節點之外的網路節點中,所述裝置包括:時期切換請求訊息接收單元,被配置為接收來自備份節點的時期切換請求訊息,所述時期切換請求訊息指示請求從基於所述當前主節點進行的當前時期切換到基於所述備份節點作為新的主節點進行的新時期;時期切換請求驗證單元,被配置為對所述時期切換請求訊息進行時期切換請求驗證;請求確認訊息發送單元,被配置為在時期切換請求驗證通過後,向所述備份節點發送請求確認訊息,所述請求確認訊息指示確認所述備份節點充當所述新的主節點;以及時期切換確認訊息接收單元,被配置為從所述備份節點設備接收時期切換確認訊息,其中,所述時期切換請求訊息是在第一隨機數滿足時期切換觸發條件時由所述備份節點設備發送的,所述第一隨機數是在確定需要執行時期切換時在所述備份節點設備處產生的,所述時期切換確認訊息是響應於所述備份節點設備從所述區塊鏈系統中的除了所述備份節點之外的網路節點接收到的請求確認訊息的數量超過預定數量,由所述備份節點發送的。 可選地,在上述態樣的一個示例中,所述時期切換請求訊息接收單元被配置為:從至少兩個備份節點設備接收時期切換請求訊息,所述時期切換請求訊息包括第一隨機數,以及所述時期切換請求驗證單元包括:時期切換請求訊息確定模組,被配置為基於所述至少兩個時期切換請求訊息的第一隨機數,確定待驗證的時期切換請求訊息;以及時期切換請求驗證模組,被配置為對所確定的待驗證的時期切換請求訊息進行時期切換請求驗證。 根據本案的另一態樣,提供一種區塊鏈節點,包括:如上所述的位於備份節點處的用於執行區塊鏈系統中的主節點切換處理的裝置;和/或如上所述的位於網路節點處的用於執行區塊鏈系統中的主節點切換處理的裝置。 根據本案的另一態樣,還提供一種計算設備,包括:至少一個處理器;以及記憶體,所述記憶體儲存指令,當所述指令被所述至少一個處理器執行時,使得所述至少一個處理器執行如上所述的應用於備份節點的用於執行區塊鏈系統中的主節點切換處理的方法。 根據本案的另一態樣,還提供一種機器可讀儲存媒體,其儲存有可執行指令,所述指令當被執行時使得所述機器執行如上所述的應用於備份節點處的用於執行區塊鏈系統中的主節點切換處理的方法。 根據本案的另一態樣,還提供一種計算設備,包括:至少一個處理器;以及記憶體,所述記憶體儲存指令,當所述指令被所述至少一個處理器執行時,使得所述至少一個處理器執行如上所述的應用於網路節點的用於執行區塊鏈系統中的主節點切換處理的方法。 根據本案的另一態樣,還提供一種機器可讀儲存媒體,其儲存有可執行指令,所述指令當被執行時使得所述機器執行如上所述的應用於網路節點的用於執行區塊鏈系統中的主節點切換處理的方法。
以下將參考示例實施方式討論本文描述的主題。應該理解,討論這些實施方式只是為了使得本領域技術人員能夠更好地理解從而實現本文描述的主題,並非是對申請專利範圍中所闡述的保護範圍、適用性或者示例的限制。可以在不脫離本案內容的保護範圍的情況下,對所討論的元件的功能和排列進行改變。各個示例可以根據需要,省略、替代或者添加各種過程或組件。另外,相對一些示例所描述的特徵在其他例子中也可以進行組合。 如本文中使用的,術語“包括”及其變型表示開放的術語,含義是“包括但不限於”。術語“基於”表示“至少部分地基於”。術語“一個實施例”和“一實施例”表示“至少一個實施例”。術語“另一個實施例”表示“至少一個其他實施例”。術語“第一”、“第二”等可以指代不同的或相同的對象。下面可以包括其他的定義,無論是明確的還是隱含的。除非上下文中明確地指明,否則一個術語的定義在整個說明書中是一致的。 區塊鏈是一種按照時間順序來將資料區塊順序相連組合而成的鏈式資料結構,並且以密碼學方式保證資料區塊不可篡改和不可僞造。區塊鏈包括一個或多個區塊。區塊鏈中的每個區塊通過包括該區塊鏈中緊接其之前的前一個區塊的加密散列而鏈接到該前一個區塊。每個區塊還包括時間戳記、該區塊的加密雜湊以及一個或多個交易(transaction)。對已經被區塊鏈網路的節點驗證的交易進行雜湊處理並形成Merkle樹。在Merkle樹中,對葉節點處的資料進行雜湊處理,並且針對Merkle樹的每個分支,在該分支的根處級聯該分支的所有雜湊值。針對Merkle樹執行上述處理,直到整個Merkle樹的根節點。Merkle樹的根節點儲存代表該Merkle樹中的所有資料的雜湊值。當一個雜湊值聲稱是Merkle樹中儲存的交易時,可以通過判斷該雜湊值是否與Merkle樹的結構一致來進行快速驗證。 區塊鏈是用於儲存交易的資料結構。區塊鏈網路是用於管理、更新和維護一個或多個區塊鏈結構的計算節點網路。如上所述,區塊鏈網路可以包括公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路。 在公有區塊鏈網路中,共識過程由共識網路的節點控制。例如,在公有區塊鏈網路中可以存在成千上萬個實體協作處理,每個實體操作該公有區塊鏈網路中的至少一個節點。因此,公有區塊鏈網路可以被認為是參與實體的公有網路。在一些示例中,大多數實體(節點)必須按序對每個區塊進行簽章,並且將簽章後的區塊添加到區塊鏈網路的區塊鏈中。公有區塊鏈網路的示例可以包括特定對等支付網路。 公有區塊鏈網路支持公有交易。公有交易在公有區塊鏈網路內的所有節點之間共享,並且儲存在全域區塊鏈中。全域區塊鏈是指跨所有節點複製的區塊鏈。為了達成共識(例如,同意向區塊鏈添加區塊),在公有區塊鏈網路內實現共識協議。共識協議的示例包括但不限於:工作量證明(POW,proof-of-work),權益證明(POS,proof-of-stake)和權威證明(POA,proof-of-authority)。在本案中,採用POW作為非限制性示例。 私有區塊鏈網路被提供來用於特定實體。私有區塊鏈網路中的各個節點的讀寫權限被嚴格控制。因此,私有區塊鏈網路通常也稱為許可網路,其對允許誰參與網路以及的網路參與層級(例如,僅在某些交易情形下)進行限制。在私有區塊鏈網路中,可以使用各種類型的存取控制機制(例如,現有參與方對添加新實體進行投票,監管機構控制許可等)。 聯盟區塊鏈網路在參與實體之間是私有的。在聯盟區塊鏈網路中,共識過程由授權節點控制。例如,由若干個(例如,10個)實體(例如,金融機構,保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體操作該聯盟區塊鏈網路中的至少一個節點。因此,聯盟區塊鏈網路可以被認為是參與實體的私有網路。在一些示例中,每個參與實體(節點)必須按序對每個區塊進行簽章,並將該區塊添加到區塊鏈。在一些示例中,可以由參與實體(節點)的子集(例如,至少7個實體)來對每個區塊進行簽章,並將該區塊添加到區塊鏈。 在本案中參考聯盟區塊鏈網路來詳細描述本案的實施例。然而,可以預期,本案的實施例可以在任何適合的區塊鏈網路中實現。 區塊鏈是防篡改的共享數位分類帳,其在公有或私有對等網路中記錄交易。分類帳被分發到網路中的所有成員節點,並且網路中發生的資產交易歷史記錄被永久記錄在區塊中。 共識機制確保分散式區塊鏈網路中的所有網路節點按照相同的順序執行交易,並且隨後寫入相同的分類帳。共識模型旨在解決拜占庭問題。在拜占庭問題中,分散式區塊鏈網路中的比如伺服器或網路節點的組件可能會出現故障,或者故意向其他節點傳播錯誤的資訊。由於其他網路節點需要首先就哪個網路節點首先失敗達成共識,從而其他網路節點很難將該組件聲明失敗並將其排除出區塊鏈網路。 在分散式系統的上下文中,拜占庭容錯(BFT)機制使得即使分散式系統的惡意組件出現故障或者向其他對等實體傳播錯誤的資訊,該分散式系統仍然能夠正常工作並且達成足夠的共識。然而,現有BFT機制在許多態樣已被證明是低效率的。例如,當試圖解決拜占庭問題時,現有BFT機制增加了分散式區塊鏈網路的實現複雜度,從而增加了分散式區塊鏈網路的網路節點之間的通信延遲。實用拜占庭容錯(PBFT)是針對現有BFT共識機制的改進。 在PBFT模型中,所有節點按序排列,其中,一個節點是主節點(領導者),以及其他節點稱為備份節點。分散式系統內的所有節點彼此通信,並且使得大多數誠實節點針對系統狀態達成一致。節點不僅需要證明所接收的訊息來自特定對等節點,還需要驗證該訊息在傳輸過程中是否未被修改。 為了使得PBFT模型能夠正常工作,假設分散式系統中的惡意節點的數量不能同時等於或超過該系統中的整個節點的1/3。系統中的節點越多,則惡意節點的數目就越不可能接近總節點的1/3。只要最多(n-1)/3個節點同時是惡意或出現故障,該演算法就能夠有效地工作,其中,n代表總節點。 每輪PBFT共識(稱為“視圖”或“時期”)包括4個階段:(1)用戶端向主節點發送請求(例如,交易請求)以呼叫服務操作;(2)主節點將該請求多播到備份節點;(3)主節點和備份節點執行請求,然後向用戶端發送回復;以及(4)用戶端等待來自不同節點的f + 1個相同結果,其中,f表示可能有故障的最大節點數。 最終結果是所有誠實的節點就記錄達成一致,即,接受或拒絕。在每輪PBFT共識中,主節點可以是不同的網路節點。例如,如果主節點沒有多播請求並且持續特定時間段,則可以利用時期切換(或,視窗切換)的協議來替換該輪PBFT的主節點。例如,假設需要進行時期切換,則可以選擇緊接在當前主節點之後的備份節點作為下一主節點(即,環狀切換或循環切換)。 然而,當使用循環切換的方法來進行主節點替換時,如果遇到連續的惡意節點,則會在區塊鏈服務中引入由於尋找誠實的主節點而導致的延遲。例如,當選擇第一網路節點作為新的主節點時,第一網路節點是惡意節點,因此不能作為新的主節點。按照循環切換的方法,隨後選擇緊接在第一網路節點之後的第二網路節點作為新的主節點。這時,如果第二網路節點也是惡意節點,則需要選擇第二網路節點之後的另一個網路節點並且繼續驗證該另一網路節點是否適合作為主節點。此過程一直持續到識別出誠實的新主節點為止,從而在區塊鏈服務中引入了顯著延遲。 為了解決與現有BFT共識機制和PBFT共識機制相關聯的上述問題,本案的實施例提供了一種改進的主節點切換技術。 例如,在如下所討論的主節點切換過程中,在確定需要執行時期切換時,在各個備份節點處產生第一隨機數。針對每個備份節點,只有在該備份節點處產生的第一隨機數滿足時期切換觸發條件,該備份節點才向區塊鏈系統中的其餘網路節點發送時期切換請求訊息,從而可以有助於及時選擇無故障的新主節點,並且不會發生由於尋找沒有故障的新主節點而導致的延遲。此外,由於在備份節點處產生的第一隨機數是隨機的,從而使得能夠同時滿足時期切換觸發條件的備份節點的數目較少,由此可以避免出現由於多個備份節點設備同時發起換主請求而導致的選票瓜分問題。這可以進一步提高區塊鏈系統在提供區塊鏈服務方面的效率。 圖1示出了可用於執行根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的環境100的示例的示意圖。在一些示例中,環境100使得實體能夠參與區塊鏈網路102。如圖1所示,環境100包括網路104、和計算設備/系統106,108。在一些示例中,網路104可以包括區域網路(LAN),廣域網路(WAN),網際網路或其組合,並且連接網站、用戶設備(例如,計算設備)和後端系統。在一些示例中,可以通過有線和/或無線通信鏈路來存取網路104。在一些示例中,計算設備/系統106、108通過網路104相互通信,以及通過網路104實現與區塊鏈網路102之間的通信,以及區塊鏈網路102中的節點(或,節點設備)通過網路104來進行通信。通常,網路104表示一個或多個通信網路。在一些情況下,計算設備/系統106,108可以是雲端計算系統(未示出)的節點,或者每個計算設備/系統106,108可以是單獨的雲端計算系統,其包括通過網路104互連的多個電腦並且用作分散式處理系統。 在所描繪的示例中,計算設備/系統106,108中的每個可以包括能夠參與作為區塊鏈網路102中的節點的任何合適的計算系統。計算設備/系統的示例包括但不限於,伺服器,桌上型電腦,筆記本電腦,平板電腦設備和智慧型手機等。在一些示例中,計算設備/系統106,108上可以安裝有用於與區塊鏈網路102交互的一個或多個電腦實現的服務。例如,計算設備/系統106上可以安裝有第一實體(例如,用戶A)的服務,比如,第一實體用於管理其與一個或多個其他實體(例如,其他用戶)的交易的交易管理系統。計算設備/系統108上可以安裝有第二實體(例如,用戶B)的服務,比如,第二實體用於管理其與一個或多個其他實體(例如,其他用戶)的交易的交易管理系統。在圖1的示例中,區塊鏈網路102被表示為節點的對等網路,並且計算設備/系統106,108分別作為參與區塊鏈網路102的第一實體和第二實體的節點。 圖2示出了執行根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的系統架構200的示例的示意圖。系統架構200的示例包括分別與參與方A,參與方B和參與方C對應的參與方系統202,204,206。每個參與方(例如,用戶,企業)參與被提供來作為對等網路的區塊鏈網路212。區塊鏈網路212包括多個節點214,其中,節點214中的至少一些節點在區塊鏈216中記錄資訊,並且所記錄的資訊不可更改。儘管在區塊鏈網路212內示意性地示出了單個區塊鏈216,但是可以提供區塊鏈216的多個副本,並且在區塊鏈網路212中維護多個副本,如稍後詳細描述的。 在所示出的示例中,每個參與方系統202,204,206分別由參與方A,參與方B和參與方C提供,或者被提供來作為參與方A,參與方B和參與方C,並且充當區塊鏈網路212內的對應節點214。如這裡所使用的,節點通常是指連接到區塊鏈網路212的單個系統(例如,電腦,伺服器),並且使得相應的參與方能夠參與區塊鏈網路。在圖2示出的示例中,參與方對應於每個節點214。然而,一個參與方可以操作區塊鏈網路212內的多個節點214,和/或多個參與方可以共享單個節點214。在一些示例中,參與方系統202,204,206使用協議(例如,超文本傳輸協議安全(HTTPS))和/或使用遠端過程呼叫(RPC)來與區塊鏈網路212通信,或者通過區塊鏈網路212進行通信。 節點214在區塊鏈網路212的參與度可以不同。例如,一些節點214可以參與共識過程(例如,作為將區塊添加到區塊鏈216的礦工節點),而其他節點214不參與共識過程。作為另一示例,一些節點214儲存區塊鏈216的完整副本,而其他節點214僅儲存區塊鏈216的部分副本。在圖2的示例中,參與方系統202,204,206各自儲存區塊鏈216的完整副本216',216'',216'''。 區塊鏈(例如,圖2中的區塊鏈216)由一連串的區塊組成,每個區塊儲存資料。資料的示例可以包括表示兩個或更多參與方之間的交易的交易資料。在本案中,交易被使用來作為非限制性示例,可以預期的是,任何適當的資料都可以儲存在區塊鏈中(例如,文件,影像,視訊,音訊)。交易的示例可以包括但不限於交換有價值的東西(例如,資產,產品,服務和貨幣等)。交易資料被不可更改地儲存在區塊鏈中。 在儲存在區塊中之前,對交易資料進行雜湊處理。雜湊處理是將(作為字符串資料提供的)交易資料轉換為固定長度的雜湊值(也被作為字符串資料提供)的過程。通過對交易資料進行雜湊處理後,即使交易資料出現輕微更改,也會導致得到完全不同的雜湊值。雜湊值通常是通過使用雜湊函數來對交易資料進行雜湊處理而產生的。雜湊函數的示例包括但不限於安全散列演算法(SHA)-256,其輸出256比特的雜湊值。 多個交易的交易資料被雜湊化並且儲存在區塊中。例如,對兩個交易資料進行雜湊處理得到兩個雜湊值,然後,對所得到的兩個雜湊值再次進行雜湊處理以得到另一雜湊值。重複該過程,直到對於要儲存在區塊中的所有交易,得到單個雜湊值。該雜湊值被稱為Merkle根雜湊,並且被儲存在區塊的標頭。任何交易的更改都會導致其雜湊值發生變化,最終導致Merkle根雜湊值發生變化。 通過共識協議來將區塊添加到區塊鏈中。區塊鏈網路中的多個節點參與共識協議,並且競爭來將區塊添加到區塊鏈中。這樣的節點被稱為礦工節點(或記帳節點)。以上介紹的POW用作非限制性示例。 礦工節點執行共識過程來將交易(所對應的區塊)添加到區塊鏈。雖然多個礦工節點參與共識過程,但只有一個礦工節點可以將區塊寫入區塊鏈。也就是說,礦工節點在共識過程中競爭以將其區塊添加到區塊鏈中。更詳細地,礦工節點周期性地從交易池中收集待處理的交易(例如,直到達到在區塊中可以包括的交易數量的預定限制,如果有的話)。交易池包括來自區塊鏈網路中的參與方的交易訊息。礦工節點創建區塊,並將交易添加到區塊中。在將交易添加到區塊之前,礦工節點檢查待添加的交易中是否存在區塊鏈的區塊中具有的交易。如果該交易已被添加到另一個區塊中,則該交易將被丟棄。 礦工節點產生區塊頭,對區塊中的所有交易進行雜湊處理,並且成對地組合雜湊值以產生進一步的雜湊值,直到針對區塊中的所有交易得到單個雜湊值(Merkle根雜湊)。然後,將Merkle根雜湊添加到區塊頭中。礦工還確定區塊鏈中的最新區塊(即,添加到區塊鏈的最後一個區塊)的雜湊值。礦工節點還可以在區塊頭中添加隨機數值(noune值)和時間戳記。在挖掘過程中,礦工節點嘗試找到滿足所需參數的雜湊值。礦工節點不斷更改nonce值,直到找到滿足所需參數的雜湊值。 區塊鏈網路中的每個礦工都試圖找到滿足所需參數的雜湊值,並且以這種方式彼此競爭。最終,一個礦工節點找到滿足所需參數的雜湊值,並將該雜湊值通告給區塊鏈網路中的所有其他礦工節點。其他礦工節點驗證雜湊值,如果確定為正確,則驗證區塊中的每個交易,接受該區塊,並將該區塊附加到它們的區塊鏈副本中。以這種方式,區塊鏈的全域狀態在區塊鏈網路內的所有礦工節點上達成一致。上述過程是POW共識協議。 在圖2所提供的示例中,參與方A想要向參與方B發送一定數量的資金。參與方A產生交易訊息,並將交易訊息發送到區塊鏈網路,該交易訊息被增加到交易池中。區塊鏈網路中的每個礦工節點創建區塊,並從交易池中獲取交易,並將交易添加到區塊。按照這種方式,參與方A所發布的交易被添加到礦工節點的區塊中。 在一些區塊鏈網路中,實施密碼技術來維護交易的隱私性。例如,如果兩個節點想要保持交易私密性,使得區塊鏈網路中的其他節點不能獲悉交易細節,則節點可以對交易資料進行加密處理。加密方法的示例包括但不限於對稱加密和非對稱加密。對稱加密是指使用單個密鑰進行加密(根據明文產生密文)和解密(根據密文產生明文)的加密過程。在對稱加密中,多個節點可以使用相同的密鑰,因此每個節點都可以對交易資料進行加密/解密。 非對稱加密是指使用密鑰對來進行加密。每個密鑰對包括私鑰和公鑰,私鑰僅對於相應節點是已知的,並且公鑰對於區塊鏈網路中的任何或所有其他節點是已知的。節點可以使用另一個節點的公鑰來加密資料,並且可以使用該另一個節點的私鑰來解密該經過加密的資料。例如,再次參考圖1。參與方A可以使用參與方B的公鑰來加密資料,並將加密資料發送給參與方B。參與方B可以使用其私鑰來解密加密資料(密文)並提取原始資料(明文)。使用節點的公鑰加密的訊息,只能使用該節點的私鑰解密。 非對稱加密用於提供數位簽章,這使得交易中的參與方能夠確認交易中的其他參與方以及交易的有效性。例如,節點可以對訊息進行數位簽章,而另一個節點可以根據參與方A的數位簽章確認訊息是由該節點發送的。數位簽章還可以用於確保訊息在傳輸過程中不被篡改。例如,再次參考圖1。參與方A將向參與方B發送訊息。參與方A產生訊息的雜湊值,然後使用其私鑰對雜湊值進行加密來產生數位簽章。參與方A將該數位簽章附加到訊息,並將具有數位簽章的訊息發送給參與方B。參與方B使用參與方A的公鑰解密數位簽章,從而解密出對應的雜湊值。參與方B對所接收的訊息進行雜湊處理以得到另一雜湊值,然後比較兩個雜湊值。如果雜湊值相同,則參與方B可以確認該訊息確實來自參與方A,並且未被篡改。 圖3示出了根據本案的實施例的共識過程300的示例的示意圖。如圖3所示,C表示用戶端,R0 為區塊鏈系統的當前共識過程的主節點,以及R1 、R2 和R3 為備份節點。 在請求階段310,用戶端C可以向主節點R0 發送交易請求Request,另外,用戶端C也可以向區塊鏈系統中的其他節點(例如,R1 、R2 和R3 )發送該交易請求(圖3中未示出),然後,該其他節點將所接收的交易請求轉發給主節點R0 。 在本案中,如圖4所示,交易請求Request的格式可以是:<REQUEST,op,timestamp,cid,signature-c>。這裡,“REQUEST”表示交易請求的協議標識。“op”表示具體的請求內容,其可以是代表業務含義的單個請求訊息,比如,“C給某人轉帳5元”。“timestamp”表示交易請求的發送時間。“cid”表示用戶端C的標識。“signature-c”表示用戶端C的簽章。 在接收到交易請求Request之後,主節點R0 與備份節點R1 、R2 以及R3 進行共識處理。共識處理的過程包括:預準備階段(pre-prepare)320、準備階段(prepare)330以及確認階段(commit)340。 在預準備階段320,在接收到一定數量的交易請求後,主節點R0 對所接收的交易排序並打包為訊息m,然後產生預準備訊息Pre-prepare,並且在給定的時間間隔內,將預準備訊息Pre-prepare 發送(例如,廣播)給備份節點R1 、R2 和R3 。預準備訊息Pre-prepare表明主節點R0 正在啓動共識過程。 如圖3所示,主節點R0 向區塊鏈網路中的其他網路節點R1 ,R2 和R3 發送預準備訊息Pre-prepare。注意,共識過程300被示為包括4個網路節點R0 ,R1 ,R2 和R3 僅用於說明目的,共識過程300也可以包括任何合適數量的網路節點。 在本案中,如圖4所示,預準備訊息Pre-prepare的格式可以為:<<PRE-PREPARE,epoch,seq,D(m),signature-p>,m,j>。這裡,“PRE-PREPARE”表示預準備訊息的協議標識,“epoch”表示R0 作為主節點的時期,“seq”表示所需共識的提議的提議編號,“D(m)”表示請求訊息集合的摘要,“signature-p”表示R0 的簽章,“m”表示請求訊息的具體內容,以及“j”表示R0 的節點標識。 在準備階段330,對於每個備份節點(R1 、R2 或R3 ),在接收到預準備訊息Pre-prepare並檢測預準備訊息Pre-prepare合法後,可以將預準備訊息Pre-prepare儲存在本地日誌中,並產生用於響應預準備訊息Pre-prepare的準備訊息Prepare,再將所產生的準備訊息Prepare廣播至其他節點。準備訊息Prepare指示備份節點已從主節點接收到預準備訊息Pre-prepare,並且正在響應預準備訊息Pre-prepare發送回覆。 相應地,每個備份節點也會接收到其他備份節點發送的預準備訊息Pre-prepare。以備份節點R1 為例,備份節點R1 接收到主節點R0 發送的預準備訊息Pre-prepare之後,會將產生的準備訊息Prepare廣播至主節點R0 、備份節點R2 和R3 。相應地,備份節點R1 也會接收到主節點R0 、備份節點R2 和R3 發送的準備訊息Prepare。 在本案中,備份節點廣播的準備訊息Prepare可以用於表示該備份節點在準備階段330所做出的共識承諾。 在本案中,如圖4所示,準備訊息Prepare的格式可以是:<PREPARE,epoch,seq,D(m),i,signature-i>。這裡,“PREPARE”表示準備訊息Prepare的協議標識,“i”表示發送準備訊息Prepare的節點的節點標識,“signature-i”表示發送準備訊息Prepare的節點的簽章。準備訊息Prepare中的“epoch”、“seq”以及“D(m)”的含義與上述預準備訊息Pre-prepare中的“epoch”、“seq”以及“D(m)”的含義相同。 在確認階段340,當網路節點從其他網路節點接收到足夠數量的準備訊息Prepare時,該網路節點確定已經達成共識。例如,如果主節點R0或備份節點R1,R2或R3接收到Quorum個(例如,2f+1,其中f表示多個故障網路節點)準備訊息Prepare,則確定在網路節點之間達成共識。然後,主節點R0或備份節點R1,R2或R3會向其他節點廣播確認訊息Commit。 在本案中,如圖4所示,確認訊息Commit的格式可以是:<COMMIT,epoch,seq,D(m),p,signature-p>。其中,“COMMIT”表示確認訊息Commit的協議標識,“p”表示發送確認訊息Commit的節點的節點標識,“signature-p”表示發送確認訊息Commit的節點的簽章。確認訊息Commit中的“epoch”、“seq”以及“D(m)”的含義與上述預準備訊息Pre-prepare中的“epoch”、“seq”以及“D(m)”的含義相同。 在本案中,節點發送確認訊息Commit並將確認訊息Commit儲存至本地日誌中,以表示該節點在確認階段340所做出的共識承諾。 在回覆階段350,在針對發起的提議達成共識後,所有參與共識的節點中的每一個在本地狀態機中順序執行預準備訊息pre-prepare的訊息m中的一組有序requests,並返回回覆訊息reply給用戶端C。 在本案中,如圖4所示,回覆訊息reply的格式可以為:<REPLY, r, i, signature-i>。這裡,“REPLY”表示回覆訊息reply的協議標識。“r”表示針對請求返回的具體回覆內容。“i”表示發送回覆訊息reply的節點的節點標識。“signature-i”表示發送回覆訊息reply的節點的簽章。 圖5示出了根據本案的實施例的共識過程500的示例的流程圖。在一些實現中,可以使用一個或多個計算設備執行的一個或多個電腦可執行程式來執行共識過程500。要說明的是,以下說明是在本案的其他圖式的上下文中描述共識過程500。應當理解,共識過程500可以例如通過適當的任何合適的系統,環境,軟體和硬體,或系統,環境,軟體和硬體的組合來執行。在一些實現中,共識過程500的各個步驟可以並行,組合,循環或以任何順序運行。 共識過程500可以結合圖1和2所述的系統100,200實現。在本案的一些實施方式中,區塊鏈網路102和/或212包括主節點和一個或多個備份節點。區塊鏈網路102和/或212與計算設備/系統106和/或108通信,例如,用戶端節點通過網路104提供區塊鏈服務。用戶端節點、主節點和備份節點中的每一個可以是專用電腦,或者被配置成執行本案所討論的過程的其他資料處理裝置。例如,用戶端節點也可以稱為用戶端終端,或者與區塊鏈網路交互的用戶端設備。用戶端節點可以安裝例如與區塊鏈網路相關的用戶端應用程式或用戶端軟體開發工具包(Software Development Kit,SDK),用於存取區塊鏈網路並與區塊鏈網路通信。主節點和一個或多個備份節點也可以稱為共識節點或網路節點,其實現共識處理並且在區塊鏈網路中不可更改地記錄資訊。 如圖5所示,首先,在區塊501,用戶端節點產生交易請求。在本案的一些實施方式中,交易請求可以包括用於向區塊鏈網路102和/或212請求區塊鏈服務的請求。 在區塊502,用戶端節點將交易請求發送(例如,多播)到區塊鏈網路102和/或212的主節點。在本案的一些實現中,主節點將序列號分配給交易請求,以在從用戶端節點接收到交易請求之後跟蹤交易請求。 接著,在區塊503,主節點產生預準備訊息Pre-prepare。預準備訊息Pre-prepare指示主節點正在發起共識過程。然後,在區塊504,主節點將Pre-prepare訊息發送(例如,多播)到其他網路節點(例如,備份節點)。 在接收到預準備訊息Pre-prepare後,在區塊505處,每個備份節點檢測預準備訊息Pre-prepare是否合法(即,進行訊息確認),並且在檢測到預準備訊息Pre-prepare合法後,產生準備訊息Prepare。準備訊息Prepare指示備份節點已從主節點接收到預準備訊息Pre-prepare,並且正在響應預準備訊息Pre-prepare而發送回覆。隨後,在區塊506,每個備份節點將所產生的準備訊息Prepare發送至主節點。在區塊507,每個備份節點將準備訊息Prepare發送到其他備份節點。在區塊508,每個備份節點可以接收來自其他備份節點的準備訊息Prepare。 在區塊509,主節點確定所具有的準備訊息Prepare是否超過預定臨限值,並且響應於所具有的準備訊息Prepare超過預定臨限值而產生確認訊息Commit。確認訊息Commit用於指示主節點已接受預定數量的準備訊息Prepare,並且已經準備好執行交易。在本案的一些實現中,主節點確定所具有的準備訊息Prepare息的數量是否達到法定數量n - f或2f + 1,其中n是網路節點的總數,f是網路可以容忍的故障節點的最大數量。 接著,在區塊510,主節點將確認訊息Commit發送到各個備份節點。同樣,在區塊511中,在各個備份節點處,按照與主節點處相同的方式來產生確認訊息Commit。隨後,在區塊512,將所產生的確認訊息Commit發送給其他網路節點。這裡要說明的是,區塊509和510的操作可以與區塊511-512的操作並行執行。 在區塊513處,主節點響應於所具有的確認訊息Commit超過預定臨限值而執行交易請求。在本案的一些實現中,主節點確定所接收的確認訊息Commit的數量是否達到法定數量(例如,2f+1)。如果Commit訊息的數量達到法定數量,則主節點確定已在所有網路節點之間達成共識,然後在本地執行交易請求。在本案的一些實現中,如果主節點確定Commit訊息的數量未達到法定數量,則主節點確定在所有網路節點之間尚未達成共識,然後避免執行交易請求。 在本案的一些實施方式中,每個備份節點可以在執行交易請求之前執行由主節點執行的相同操作,如上述區塊513處的操作。如果備份節點確定所接收的Commit訊息超過預定臨限值,備份節點確定網路節點之間已達成共識並在本地執行事務請求。在本案的一些實現中,如果備份節點確定所接收的Commit訊息的數量未達到預定臨限值,則備份節點確定在所有網路節點之間尚未達成共識,然後避免執行交易請求。 在區塊514處,主節點在執行交易請求之後,將執行交易請求而得到的交易結果發送到用戶端節點。已經在本地成功執行交易請求的備份節點也可以將它們各自的交易結果發送到用戶端節點。 在共識過程期間,備份節點正在等待來自主節點的請求。但是,主節點可能遇到拜占庭故障或崩潰故障,因此主節點不能在預定時間窗口內廣播請求。在沒有主節點多播請求的情況下經過特定時間量時,可能需要選擇新的主節點以防止備份節點無限期地等待執行請求。 在一種主節點切換處理的現有技術方案中,假設在當前的時期下,R0 為當前的主節點設備,R1 、R2 和R3 均為備份節點設備。若R0 發生故障或者作惡時,會啓動進行主節點切換過程。在現有的主節點切換過程中,在備份節點R1 、R2 和R3 處設置定時器。如果檢測到R0 發生故障或者作惡,則作為備份節點的R1 、R2 和R3 會啓動各自的計時器。 一旦備份節點處的計時器到期,則備份節點會向區塊鏈網路中的其餘網路節點廣播時期切換請求訊息,以請求充當新的主節點。每個備份節點會對最先接收到的時期切換請求訊息進行訊息驗證(即,投票),然後向發出該時期切換訊息的備份節點返回驗證訊息。 在上述主節點切換過程中,由於備份節點R1 、R2 和R3 處的時期切換請求訊息是響應於自有的定時器而發出的,從而使得可能會發生多個備份節點同時發出時期切換請求訊息,即,其他網路節點可能會同時接收到對於一個時期切換請求訊息,由此導致會同時針對多個備份節點進行投票以選出新的主節點,從而導致出現選票瓜分問題。 為了解決上述問題,本案提供了用於區塊鏈系統中的主節點切換處理的方法及裝置。利用該方法及裝置,通過在監測到當前主節點發生故障或是作惡節點時,在各個備份節點處產生隨機數,並且基於所產生的隨機資料是否滿足主節點切換觸發條件來發起主節點切換流程。由於隨機數產生的隨機性,從而能夠降低出現由於多個備份節點設備同時發起換主請求而導致的選票瓜分問題的機率,由此提升換主處理效率。 圖6示出了根據本案的實施例的用於執行區塊鏈系統(例如,區塊鏈網路102和212)中的主節點切換處理的過程600的示例的示意圖。在一些實現中,主節點與包括採用該主節點作為領導節點的共識過程的時期(epoch)相關聯。主節點切換(或改變)會導致時期切換(epoch change)。 在一些實現中,響應於確定當前時期的主節點需要切換,區塊鏈網路的備份節點將時期切換請求訊息發送到其他網路節點。時期切換請求訊息指示備份節點希望成為新時期中的新主節點。例如,如圖6所示,響應於確定當前主節點有故障(或當前主節點是作惡節點)並且需要執行時期切換,備份節點R0向區塊鏈網路中的其他網路節點R1,R2和R3發送時期切換請求訊息。VF訊息是指示備份節點R0申請成為新主節點的時期切換請求訊息的示例。時期切換可以導致從具有當前主節點的當前時期切換到具有新主節點的新時期。要注意的是,僅僅出於說明目的,過程600被示為結合四個網路節點實現。過程600可以結合任何合適數量的網路節點來實現。 然後,每個網路節點接收由備份節點R0發送的時期切換請求訊息,響應於時期切換請求訊息而準備請求確認訊息,並將請求確認訊息多播到其他網路節點。例如,如圖6所示,網路節點R1接收由備份節點R0發送的VF訊息,並且用EC訊息回復備份節點R0,該EC訊息指示網路節點R1確認備份節點R0可以成為新的主節點。同時,網路節點R1還將該EC訊息多播到其他網路節點,例如網路節點R0,R2和R3。類似地,網路節點R2和R3各自將EC訊息多播到其他網路節點。 在備份節點R0接收到其他網路節點發送的EC訊息後,如果所接收的EC訊息的數量超過預定臨限值,則備份節點R0向其他網路節點發送時期切換確認訊息(NC),該時期切換確認訊息(NC)指示備份節點R0充當新時期的主節點。 下面將參考圖7更詳細地討論如上所述的時期切換過程。 圖7示出了根據本案的實施例的用於執行區塊鏈系統(例如,區塊鏈網路102和212)中的主節點切換處理的方法700的示例的流程圖。在一些實現中,可以使用由一個或多個計算設備執行的一個或多個電腦可執行程式來執行示例方法700。要說明的是,以下說明是在本案的其他圖式的上下文中描述方法700。應當理解,方法700可以例如通過適當的任何合適的系統,環境,軟體和硬體,或系統,環境,軟體和硬體的組合來執行。在一些實現中,方法700的各個步驟可以並行,組合,循環或以任何順序運行。 如圖7所示,方法700開始於區塊702。在區塊702,備份節點確定需要執行時期切換。這裡討論的時期切換導致從具有當前主節點的當前時期切換到具有新主節點的新時期。示例時期可以包括用於使用主節點在多個網路節點之間達成共識的共識過程(例如,如上面參考圖3和圖4討論的共識過程300或400)。這裡,備份節點可以是區塊鏈系統中的任一備份節點。 在本案的一些實施方式中,響應於在備份節點處監測到當前時期內的針對第一待共識提議的第一共識處理在預定時段內未完成,備份節點確定需要執行時期切換。換言之,如果備份節點在沒有接收到來自當前主節點的請求後已經過去特定時間量之後仍在等待來自當前主節點的請求,則備份節點可以確定需要執行時期切換。例如,當前主節點可能遇到拜占庭故障或崩潰故障,使得當前主節點不能在預定時間窗口內多播請求。這裡所討論的時期切換過程通過允許系統在主節點發生故障時繼續工作來提供存在性並減少網路等待時間。 在本案中,監測針對第一待共識提議的第一共識處理在預定時段內未完成可以包括但不限於:主節點設備不發起第一待共識提議,主節點設備發起錯誤的第一待共識提議,針對第一待共識提議的共識階段達不到Quorum數量的一致而無法完成共識。 當在備份節點處確定需要執行時期切換時,在區塊704,備份節點(例如,R0)產生第一隨機數。在本案的一個示例中,第一隨機數可以是使用VRF(verifiable random function,可驗證隨機函數演算法)來基於第二隨機數和第一待共識提議的提議編號產生的,其中,第二隨機數是在區塊鏈系統的當前主節點設備被選擇作為主節點設備的主節點切換處理過程中產生的隨機數。此外,備份節點還可以基於使用VRF演算法來基於第二隨機數和第一待共識提議的提議編號產生第一隨機數的證明資訊,以用於第一隨機數的驗證。 具體地,備份節點產生包括私鑰和公鑰的密鑰對,並且使用第二隨機數和第一待共識提議的提議編號作為VRF函數的輸入參數,以利用VRF_hash函數來基於私鑰和輸入參數得到第一隨機數,以及利用VRF_Proof函數來基於私鑰和輸入參數得到第一隨機數的證明資訊。 接著,在區塊706,確定發起時期切換。例如,判斷第一隨機數是否滿足時期切換觸發條件。這裡,時期切換觸發條件可以包括:第一隨機數小於第一預定臨限值;或者第一隨機數大於第二預定臨限值。 如果第一隨機數滿足時期切換觸發條件,則備份節點確定發起時期切換。隨後,在區塊708,備份節點向區塊鏈系統中的除了該備份節點之外的多個網路節點發送時期切換請求訊息(VF),時期切換請求訊息(VF)指示請求從基於當前主節點進行的當前時期切換到基於該備份節點作為新的主節點進行的新時期。如圖7中所示,備份節點向網路節點1-N發送VF訊息。 在本案的一個示例中,在使用VRF演算法來產生第一隨機數時,時期切換請求訊息(VF)可以包括第一隨機數以及第一隨機數的證明資訊。如圖8所示,VF訊息的訊息格式可以為:VF<epoch+1, j, random_num, random_num_proof>。這裡,“epoch”表示當前主節點所對應的時期,j是發出VF訊息的備份節點的節點標識,random_num表示第一隨機數,以及random_num_proof表示第一隨機數的證明資訊。 接收到VF訊息的各個網路節點所執行的操作相同,如圖7所示,網路節點1-N中的各個網路節點所執行的操作相同。在接收到VF訊息後,在區塊710,在各個網路節點處,執行時期切換請求驗證(時期切換請求確認)。例如,如果VF訊息包括第一隨機數以及第一隨機數的證明資訊,則可以在各個網路節點處,基於第一隨機數以及第一隨機數的證明資訊來進行時期切換請求驗證。具體地,以網路節點1為例,網路節點1首先驗證是否可以由證明資訊計算出第一隨機數,在上述驗證通過的情況下,繼續利用備份節點的公鑰、VRF的輸入參數以及證明資訊進行驗證,以驗證證明資訊是否可以由VRF的輸入參數得到。如果證明資訊可以由VRF的輸入參數得到,則時期切換請求驗證通過。如果時期切換請求驗證通過,則在各個網路節點處,產生請求確認訊息(EC),請求確認訊息(EC)指示該網路節點確認備份節點充當新的主節點。然後,在區塊712,各個網路節點將所產生的請求確認訊息(EC)發送給備份節點以及其他網路節點。 在本案的一個示例中,EC訊息可以包括第一待共識提議的提議編號和發出EC訊息的網路節點的節點標識。 在該示例中,第一待共識提議的提議編號用於表徵該EC訊息是針對第一待共識提議的,確保同一提議在內容和次序上的一致性。節點標識用於唯一標識發送該EC訊息的節點,這樣便於備份節點設備統計所接收的EC訊息的數量。 在本案的另一示例中,EC訊息還可以包括發出EC訊息的網路節點在第一共識處理時做出的第二階段共識承諾資訊以及第三階段共識承諾資訊。以下將“發出EC訊息的網路節點”簡稱為“發出網路節點”。 在本案的一個示例中,如圖8所示,EC訊息的訊息格式可以為:EC<epoch+1, E, W, j>。這裡,“epoch”表示當前主節點所對應的時期,j是發出VF訊息的備份節點的節點標識,E表示發出請求確認訊息(EC)的網路節點在第一共識處理時做出的第二階段共識承諾資訊,以及W表示發出請求確認訊息(EC)的網路節點在第一共識處理時做出的第三階段共識承諾資訊。 在該示例中,第二階段即為圖3所示的準備階段330,準備階段330是發出網路節點接收到預準備訊息觸發的。發出網路節點在接收到預準備訊息後,會利用私鑰對預準備訊息進行簽章,得到sign_proof。在準備階段330,發出網路節點發送的準備訊息中攜帶sign_proof。sign_proof可以用於表徵發出網路節點在準備階段330所做出的共識承諾。 例如,如圖8所示,第二階段共識承諾資訊的格式可以是:E{<epoch,seq,sign_proof,i>},其中,“E”表示第二階段共識承諾資訊,“epoch”表示第一共識處理所處的時期,“seq”表示第一待共識提議的提議編號,“i”表示發出網路節點的節點標識,“sign_proof”為發出網路節點對所接收到的預準備訊息的簽章。 在該示例中,第三階段即為圖3所示的確認階段340,確認階段340是發出網路節點接收其他節點發送的準備訊息觸發的。發出網路節點會接收到多個準備訊息,且每一個準備訊息中攜帶有一個sign_proof。這樣發出網路節點可以得到多個sign_proof,該多個sign_proof以及發出網路節點本地的sign_proof所形成的集合即為sign_proofs。 在確認階段340,發出網路節點發送的EC訊息中攜帶sign_proofs,sign_proofs可以用於表徵發出網路節點在確認階段340所做出的共識承諾。 以圖3所示的R1 為例,R1 接收的R2 和R3 發送的準備訊息分別為:PREPARE2和PREPARE3,其中,PREPARE2中攜帶sign_proof2,PREPARE3中攜帶sign_proof3,R1 本地的sign_proof1,則在確認階段240發送的確認訊息中攜帶的sign_proofs包括:sign_proof1、sign_proof2以及sign_proof3。 例如,如圖8所示,第三階段共識承諾資訊的格式可以是:W{<epoch,seq,sign_proofs,i>},“W”表示第三階段共識承諾資訊,“sign_proofs”表示正確節點設備的簽章的集合,W中的“epoch”、“seq”以及“i”所表示的含義與上述E中的“epoch”、“seq”以及“i”所表示的含義相同。 接著,在區塊714,在備份節點處確定時期切換請求是否被確認。具體地,響應於所接收到的驗證通過訊息(EC)的數量大於預定數量,備份節點確定時期切換請求得到區塊鏈網路中的網路節點的大多數節點的確認,並且能夠充當新時期的主節點。 在本案中,預定數量可以為Quorum-1,例如,Quorum為2f+1時,規定數量為2f,其中,f是網路可以容忍的故障節點的最大數量。 然後,在區塊716,備份節點向區塊鏈網路中的其他網路節點發送時期切換確認訊息(NE),時期切換確認訊息(NE)用於向區塊鏈網路中的其他網路節點通知該備份節點是新時期的主節點。 在本案的一個示例中,NE訊息可以包括第一待共識提議的提議編號和備份節點的節點標識。此外,NE訊息還可以包括各個發出請求確認訊息(EC)的網路節點在所述第一共識處理時做出的第二階段共識承諾資訊集合(E’)以及第三階段共識承諾資訊集合(W’)。 如圖8所示,NE訊息的訊息格式可以是:NE<epoch+1,j,seq,E’,W’>。這裡,“epoch”表示當前主節點所對應的時期,j是發出NE訊息的備份節點的節點標識,E’表示發出請求確認訊息(EC)的網路節點在第一共識處理時做出的第二階段共識承諾資訊集合,以及W’表示發出請求確認訊息(EC)的網路節點在第一共識處理時做出的第三階段共識承諾資訊集合。 在該示例中,第一待共識提議的提議編號用於表徵該NE訊息是針對第一待共識提議的,確保同一提議在內容和次序上的一致性。節點標識用於向其餘節點(即圖7中的網路節點1-N)通知作為新的主節點的節點。這樣區塊鏈系統中的所有節點知曉新的主節點,從而便於後續操作。 在該示例中,備份節點從其餘網路節點接收到多個EC訊息,每個EC訊息中攜帶有該EC訊息的發出網路節點所做出的第二階段共識承諾資訊和第三階段共識承諾資訊。這樣,備份節點可以得到其他網路節點在第一共識處理時做出的第二階段共識承諾資訊,所得到的第二階段共識承諾資訊的集合即為第二階段共識承諾資訊集合。並且,還可以得到其他網路節點設備在第一共識處理時做出的第三階段共識承諾資訊,所得到的第三階段共識承諾資訊的集合即為第三階段共識承諾資訊集合。 例如,R0 分別接收R1 、R2 和R3 發送的驗證通過訊息:EC1、EC2以及EC3,其中,EC1中攜帶的第二階段共識承諾資訊為E1,攜帶的第三階段共識承諾資訊為W1,EC2中攜帶的第二階段共識承諾資訊為E2,攜帶的第三階段共識承諾資訊為W2,以及EC3中攜帶的第二階段共識承諾資訊為E3,攜帶的第三階段共識承諾資訊為W3,則R0 發送的換主確認訊息中攜帶的第二階段共識承諾資訊集合包括E1、E2和E3,攜帶的第三階段共識承諾資訊集合包括W1、W2和W3。 通過該示例中的第二階段共識承諾資訊集合和第三階段共識承諾資訊集合,區塊鏈系統中的各個備份節點可以進行針對第一待共識提議在第一共識處理時的資料同步,以便於在epoch+1下,繼續完成在epoch下未完成的共識處理。 此外,可選地,在本案的一個示例中,網路節點(例如,網路節點1)可以從至少兩個備份節點設備接收到時期切換請求訊息。也就是說,該至少兩個備份節點設備各自產生的第一隨機數均滿足時期切換觸發條件,並且分別向網路節點1發送時期切換請求訊息,且每個時期切換請求訊息中均包括第一隨機數。 此時,網路節點1可以基於各個時期切換請求訊息中的第一隨機數,確定待驗證時期切換請求訊息,然後對所確定的待驗證時期切換請求訊息進行時期切換請求驗證。具體地,網路節點1可以將第一隨機數滿足預定條件的時期切換請求訊息確定為待驗證時期切換請求訊息。例如,預定條件可以是:第一隨機數最小;第一隨機數最大,或者適合於唯一確定的其它合適條件。 如上參照圖1-圖8描述了根據本案的實施例的共識過程以及主節點切換過程。下面參照圖9-11描述根據本案的實施例的時期切換處理裝置以及對應的節點。 圖9示出了根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的裝置(下文中稱為時期切換處理裝置)900的方塊圖。區塊鏈系統包括多個網路節點,多個網路節點包括主節點和至少一個備份節點,時期切換處理裝置900位於備份節點中。 如圖9所示,時期切換處理裝置900包括隨機數產生單元910,時期切換請求訊息發送單元920,請求確認訊息接收單元930以及時期切換確認訊息發送單元940。 隨機數產生單元910被配置為在確定需要執行時期切換時,產生第一隨機數,時期切換使得從基於當前主節點進行的當前時期切換到基於新的主節點進行的新時期。隨機數產生單元910的操作可以參考上面參照圖7描述的區塊704的操作。 時期切換請求訊息發送單元920被配置為如果第一隨機數滿足時期切換觸發條件,則向區塊鏈系統中的除了備份節點之外的多個網路節點發送時期切換請求訊息(VF),時期切換請求訊息(VF)指示請求從基於當前主節點進行的當前時期切換到基於備份節點作為新的主節點進行的新時期。時期切換請求訊息發送單元920的操作可以參考上面參照圖7描述的區塊708的操作。 在本案的一個示例中,時期切換請求訊息(VF)包括第一隨機數以及第一隨機數的證明資訊,第一隨機數和第一隨機數的證明資訊是使用可驗證隨機函數演算法來基於第二隨機數和第一待共識提議的提議編號產生的,第二隨機數是在區塊鏈系統的當前主節點設備被選擇為主節點設備的主節點切換處理過程中產生的隨機數,其中,多個網路節點處的請求確認處理是基於第一隨機數以及第一隨機數的證明資訊進行的。 請求確認訊息接收單元930被配置為接收來自多個網路節點中的至少一個網路節點的請求確認訊息(EC),請求確認訊息(EC)指示確認備份節點充當新的主節點。請求確認訊息接收單元930的操作可以參考上面參照圖7描述的區塊712的操作。 在本案的一個示例中,請求確認訊息(EC)包括第一待共識提議的提議編號(SEQ)和發送請求確認訊息(EC)的網路節點的節點標識。此外,在第一共識處理包括三階段共識處理時,請求確認訊息(EC)還可以包括發出請求確認訊息(EC)的網路節點在第一共識處理時做出的第二階段共識承諾資訊(E)以及第三階段共識承諾資訊(W)。 時期切換確認訊息發送單元940被配置為響應於所接收到的驗證通過訊息(EC)的數量大於預定數量,由備份節點向多個網路節點發送時期切換確認訊息(NE)。時期切換確認訊息發送單元940的操作可以參考上面參照圖7描述的區塊716的操作。 在本案的一個示例中,時期切換確認訊息(NE)可以包括第一待共識提議的提議編號(SEQ)和備份節點的節點標識。此外,時期切換確認訊息(NE)還可以包括各個發出請求確認訊息(EC)的網路節點在第一共識處理時做出的第二階段共識承諾資訊集合(E’)以及第三階段共識承諾資訊集合(W’)。 此外,時期切換處理裝置900還可以包括時期切換確定單元(未示出)。時期切換確定單元被配置為響應於監測到當前時期內的針對第一待共識提議的第一共識處理在預定時段內未完成,確定需要執行時期切換。時期切換確定單元的操作可以參考上面參照圖7描述的區塊702的操作。 圖10示出了根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的裝置(下文中稱為時期切換處理裝置)1000的方塊圖。區塊鏈系統包括多個網路節點,多個網路節點包括主節點和至少一個備份節點,時期切換處理裝置900位於除了備份節點之外的網路節點(下文中稱為網路節點)中。 如圖10所示,時期切換處理裝置1000包括時期切換請求訊息接收單元1010、時期切換請求驗證單元1020、請求確認訊息發送單元1030和時期切換確認訊息接收單元1040。 時期切換請求訊息接收單元1010被配置為接收來自備份節點的時期切換請求訊息(VF),時期切換請求訊息(VF)指示請求從基於當前主節點進行的當前時期切換到基於備份節點作為新的主節點進行的新時期。時期切換請求訊息接收單元1010的操作可以參考上面參照圖7描述的區塊708的操作。 時期切換請求驗證單元1020被配置為對時期切換請求訊息(VF)進行時期切換請求驗證。時期切換請求驗證單元1020的操作可以參考上面參照圖7描述的區塊710的操作。 請求確認訊息發送單元1030被配置為在時期切換請求驗證通過後,向備份節點發送請求確認訊息(EC),請求確認訊息(EC)指示確認備份節點充當新的主節點。請求確認訊息發送單元1030的操作可以參考上面參照圖7描述的區塊712的操作。 時期切換確認訊息接收單元1040被配置為從備份節點設備接收時期切換確認訊息(NE)。時期切換確認訊息接收單元1040的操作可以參考上面參照圖7描述的區塊716的操作。 此外,在網路節點的時期切換請求訊息接收單元從至少兩個備份節點設備接收時期切換請求訊息(VF)時,時期切換請求驗證單元可以包括時期切換請求訊息確定模組(未示出)和時期切換請求驗證模組(未示出)。時期切換請求訊息確定模組被配置為基於該至少兩個時期切換請求訊息(VF)的第一隨機數,確定待驗證的時期切換請求訊息。時期切換請求驗證模組被配置為對所確定的待驗證的時期切換請求訊息進行時期切換請求驗證。 在本案中,節點可以包括圖9所示的時期切換處理裝置和/或圖10所示的時期切換處理裝置中的任何一個或兩者。在節點僅僅包括圖9所示的時期切換處理裝置,該節點充當發起主節點切換過程的備份節點。在節點僅僅包括圖10所示的時期切換處理裝置,該節點充當對發起主節點切換過程的備份節點進行確認處理的網路節點。在節點包括圖9和圖10所示的時期切換處理裝置兩者時,該節點既可以充當發起主節點切換過程的備份節點,也可以充當對發起主節點切換過程的備份節點進行確認處理的網路節點。圖11示出了包括圖9和圖10所示的時期切換處理裝置兩者的區塊鏈節點1100的方塊圖。 以上參照圖1到圖11,對根據本案的用於執行區塊鏈系統中的主節點切換處理的方法、裝置以及節點設備的實施例進行了描述。 本案的用於執行區塊鏈系統中的主節點切換處理的裝置可以採用硬體實現,也可以採用軟體或者硬體和軟體的組合來實現。以軟體實現為例,作為一個邏輯意義上的裝置,是通過其所在設備的處理器將記憶體中對應的電腦程式指令讀取到內部記憶體中運行形成的。在本案中,時期切換處理裝置例如可以利用計算設備實現。 圖12示出了根據本案的實施例的用於執行區塊鏈系統中的時期切換的計算設備的方塊圖。如圖12所示,計算設備1200包括至少一個處理器1210、記憶體1220、內部記憶體1230和通信介面1240,並且至少一個處理器1210、記憶體1220、內部記憶體1230和通信介面1240經由匯流排1260連接在一起。至少一個處理器1210執行在記憶體中儲存或編碼的至少一個電腦可讀指令(即,上述以軟體形式實現的元件)。 在一個實施例中,在記憶體中儲存電腦可執行指令,其當執行時使得至少一個處理器1210:當在備份節點處確定需要執行時期切換時,由備份節點產生第一隨機數,時期切換使得從基於當前主節點進行的當前時期切換到基於新的主節點進行的新時期;如果第一隨機數滿足時期切換觸發條件,則由備份節點向所述區塊鏈系統中的除了備份節點之外的多個網路節點發送時期切換請求訊息,時期切換請求訊息指示請求從基於當前主節點進行的當前時期切換到基於備份節點作為新的主節點進行的新時期;在備份節點處,接收來自多個網路節點中的至少一個網路節點的請求確認訊息,請求確認訊息指示確認備份節點充當新的主節點;以及響應於所接收到的驗證通過訊息的數量大於預定數量,由備份節點向多個網路節點發送時期切換確認訊息。 應該理解,在記憶體中儲存的電腦可執行指令當執行時使得至少一個處理器1210進行本案的各個實施例中以上結合圖1-11描述的各種操作和功能。 根據一個實施例,提供了一種例如機器可讀媒體的程式產品。機器可讀媒體可以具有指令(即,上述以軟體形式實現的元件),該指令當被機器執行時,使得機器執行本案的各個實施例中以上結合圖1-11描述的各種操作和功能。 圖13示出了根據本案的實施例的用於執行區塊鏈系統中的時期切換的計算設備的方塊圖。如圖13所示,計算設備1300包括至少一個處理器1310、記憶體1320、內部記憶體1330和通信介面1340,並且至少一個處理器1310、記憶體1320、內部記憶體1330和通信介面1340經由匯流排1360連接在一起。至少一個處理器1310執行在記憶體中儲存或編碼的至少一個電腦可讀指令(即,上述以軟體形式實現的元件)。 在一個實施例中,在記憶體中儲存電腦可執行指令,其當執行時使得至少一個處理器1310:時期切換請求訊息接收單元,被配置為接收來自備份節點的時期切換請求訊息,時期切換請求訊息指示請求從基於當前主節點進行的當前時期切換到基於備份節點作為新的主節點進行的新時期;時期切換請求驗證單元,被配置為對時期切換請求訊息進行時期切換請求驗證;請求確認訊息發送單元,被配置為在時期切換請求驗證通過後,向備份節點發送請求確認訊息,請求確認訊息指示確認備份節點充當新的主節點;以及時期切換確認訊息接收單元,被配置為從備份節點設備接收時期切換確認訊息,其中,時期切換請求訊息是在第一隨機數滿足時期切換觸發條件時由備份節點設備發送的,第一隨機數是在確定需要執行時期切換時在備份節點設備處產生的,時期切換確認訊息是響應於備份節點設備從區塊鏈系統中的除了備份節點之外的網路節點接收到的請求確認訊息的數量超過預定數量,由備份節點發送的。 應該理解,在記憶體中儲存的電腦可執行指令當執行時使得至少一個處理器1310進行本案的各個實施例中以上結合圖1-11描述的各種操作和功能。 根據一個實施例,提供了一種例如機器可讀媒體的程式產品。機器可讀媒體可以具有指令(即,上述以軟體形式實現的元件),該指令當被機器執行時,使得機器執行本案的各個實施例中以上結合圖1-11描述的各種操作和功能。 在根據本案的實施例提供的可讀儲存媒體上儲存著實現上述實施例中任一實施例的功能的軟體程式碼,且使該系統或者裝置的電腦或處理器讀出並執行儲存在該可讀儲存媒體中的指令。 在這種情況下,從可讀媒體讀取的程式碼本身可實現上述實施例中任何一項實施例的功能,因此機器可讀碼和儲存機器可讀碼的可讀儲存媒體構成了本發明的一部分。 可讀儲存媒體的實施例包括軟碟、硬碟、磁光碟、光碟(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁帶、非揮發性記憶卡和ROM。可選擇地,可以由通信網路從伺服器電腦上或雲端上下載程式碼。 上述對本說明書特定實施例進行了描述。其他實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多任務處理和平行處理也是可以的或者可能是有利的。 上述各流程和各系統結構圖中不是所有的步驟和單元都是必須的,可以根據實際的需要忽略某些步驟或單元。各步驟的執行順序不是固定的,可以根據需要進行確定。上述各實施例中描述的裝置結構可以是物理結構,也可以是邏輯結構,即,有些單元可能由同一物理實體實現,或者,有些單元可能分由多個物理實體實現,或者,可以由多個獨立設備中的某些部件共同實現。 在整個本說明書中使用的術語“示例性”意味著“用作示例、實例或例示”,並不意味著比其他實施例“優選”或“具有優勢”。出於提供對所描述技術的理解的目的,具體實施方式包括具體細節。然而,可以在沒有這些具體細節的情況下實施這些技術。在一些實例中,為了避免對所描述的實施例的概念造成難以理解,公知的結構和裝置以方塊圖形式示出。 以上結合圖式詳細描述了本案的實施例的可選實施方式,但是,本案的實施例並不限於上述實施方式中的具體細節,在本案的實施例的技術構思範圍內,可以對本案的實施例的技術方案進行多種簡單變型,這些簡單變型均屬於本案的實施例的保護範圍。 本案內容的上述描述被提供來使得本領域任何普通技術人員能夠實現或者使用本案內容。對於本領域普通技術人員來說,對本案內容進行的各種修改是顯而易見的,並且,也可以在不脫離本案內容的保護範圍的情況下,將本文所定義的一般性原理應用於其他變型。因此,本案內容並不限於本文所描述的示例和設計,而是與符合本文揭示的原理和新穎性特徵的最廣範圍相一致。
100:環境 102:區塊鏈網路 104:網路 106,108:計算設備/系統 200:系統架構 202,204,206:參與方系統 212:區塊鏈網路 214:節點 216:區塊鏈 216',216'',216''':完整副本 300:共識過程 310:請求階段 320:預準備階段 330:準備階段 340:確認階段 350:回覆階段 500:共識過程 501,502,503,504,505,506,507,508,509,510,511,512,513,514:區塊 600:過程 700:方法 702,704,706,708,710,712,714,716:區塊 900:時期切換處理裝置 910:隨機數產生單元 920:時期切換請求訊息發送單元 930:請求確認訊息接收單元 940:時期切換確認訊息發送單元 1000:時期切換處理裝置 1010:時期切換請求訊息接收單元 1020:時期切換請求驗證單元 1030:請求確認訊息發送單元 1040:時期切換確認訊息接收單元 1100:區塊鏈節點 1200:計算設備 1210:處理器 1220:記憶體 1230:內部記憶體 1240:通信介面 1260:匯流排 1300:計算設備 1310:處理器 1320:記憶體 1330:內部記憶體 1340:通信介面 1360:匯流排
通過參照下面的圖式,可以實現對於本案內容的本質和優點的進一步理解。在圖式中,類似組件或特徵可以具有相同的圖式標記。圖式是用來提供對本發明實施例的進一步理解,並且構成說明書的一部分,與下面的具體實施方式一起用於解釋本案的實施例,但並不構成對本案的實施例的限制。在圖式中: [圖1]示出了可用於執行根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的環境的示例的示意圖; [圖2]示出了執行根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的系統架構的示例的示意圖; [圖3]示出了根據本案的實施例的共識過程的示例的示意圖; [圖4]示出了根據本案的實施例的共識過程的示例的流程圖; [圖5]示出了根據本案的實施例的在區塊鏈系統的網路節點之間傳送的訊息的示例的示意圖; [圖6]示出了根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的過程的示例的示意圖; [圖7]示出了根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的方法的流程圖; [圖8]示出了根據本案的實施例的在區塊鏈系統的網路節點之間傳送的訊息的示例的示意圖; [圖9]示出了根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的裝置的方塊圖; [圖10]示出了根據本案的實施例的用於執行區塊鏈系統中的主節點切換處理的裝置的方塊圖; [圖11]示出了根據本案的實施例的節點的結構方塊圖; [圖12]示出了根據本案的實施例的用於執行區塊鏈系統中的時期切換的計算設備的方塊圖; [圖13]示出了根據本案的實施例的用於執行區塊鏈系統中的時期切換的計算設備的方塊圖。
1:網路節點
700:方法
702,704,706,708,710,712,714,716:區塊
N:網路節點

Claims (20)

  1. 一種用於執行區塊鏈系統中的主節點切換處理的方法,所述方法包括:在所述區塊鏈系統中的備份節點處確定在所述區塊鏈系統中將發生時期切換,所述區塊鏈系統包括多個網路節點,所述多個網路節點包括當前主節點和多個備份節點;響應於確定在所述區塊鏈系統中將發生所述時期切換,由所述備份節點產生第一隨機數;響應於確定所述第一隨機數滿足時期切換觸發條件,則由所述備份節點向所述區塊鏈系統中的除了所述備份節點之外的多個網路節點發送時期切換請求訊息,以發起所述時期切換,其中所述時期切換請求訊息指示請求,所述請求用於將所述當前主節點的當前時期切換到所述備份節點作為新的主節點的新時期,且其中所述時期切換請求訊息包括所述第一隨機數和所述第一隨機數的證明資訊,所述第一隨機數和所述第一隨機數的證明資訊是已透過使用可驗證隨機函數演算法產生,使得同時試圖發起所述時期切換的備份節點的數量少於所述區塊鏈系統中所有備份節點的數量;在所述備份節點處,接收來自所述多個網路節點中的至少一個網路節點的請求確認訊息,其中所述請求確認訊息指示確認所述備份節點將充當所述新的主節點;以及響應於在所述備份節點處所接收到的驗證通過訊息的數量大於訊息的預定數量,由所述備份節點向所述多個網 路節點發送時期切換確認訊息。
  2. 如請求項1所述的方法,其中所述時期切換觸發條件包括:所述第一隨機數小於第一預定臨限值,或者所述第一隨機數大於第二預定臨限值。
  3. 如請求項1所述的方法,其中所述請求確認訊息包括所述當前時期中的提議的提議編號和發送所述請求確認訊息的網路節點的節點標識。
  4. 如請求項3所述的方法,其中所述時期切換確認訊息包括所述當前時期中的所述提議的所述提議編號和所述備份節點的節點標識。
  5. 如請求項1所述的方法,其中在所述區塊鏈系統中的備份節點處確定將發生所述時期切換包括:在所述備份節點處確定所述當前時期內的在預定時段內未完成對所述當前時期的提議的共識處理。
  6. 如請求項5所述的方法,其中所述可驗證隨機函數演算法是基於第二隨機數和所述當前時期中的所述提議的提議編號,所述第二隨機數是在為所述當前時期選擇所述當前主節點的主節點切換過程中已產生的;且基於所述第一隨機數以及所述第一隨機數的所述證明資訊,由所述多個網路節點處提供所述請求確認處理資訊。
  7. 如請求項5所述的方法,其中所述共識處理包括三階段共識處理,且所述請求確認訊息包括由發出所述請求確認訊息的網路節點已做出的第二階段共識承諾 資訊以及第三階段共識承諾資訊。
  8. 如請求項7所述的方法,其中所述時期切換確認訊息還包括來自各個發出請求確認訊息的網路節點的資訊的第二階段共識承諾資訊集合以及第三階段共識承諾資訊集合。
  9. 一種電腦實現的系統,包括:一或多個電腦;和一或多個電腦記憶體裝置,與該一或多個電腦可互操作地耦接,並且具有儲存一或多個指令的有形的且非暫時性的機器可讀媒體,該等指令在由該一或多個電腦執行時執行若干操作,該等操作包括:在區塊鏈系統中的備份節點處確定在所述區塊鏈系統中將發生時期切換,所述區塊鏈系統包括多個網路節點,所述多個網路節點包括當前主節點和多個備份節點;響應於確定在所述區塊鏈系統中將發生所述時期切換,由所述備份節點產生第一隨機數;響應於確定所述第一隨機數滿足時期切換觸發條件,則由所述備份節點向所述區塊鏈系統中的除了所述備份節點之外的多個網路節點發送時期切換請求訊息,以發起所述時期切換,其中所述時期切換請求訊息指示請求,所述請求用於將所述當前主節點的當前時期切換到所述備份節點作為新的主節點的新時期,且其中所述時期切換請求訊息包括所述第一隨機數和所述第一隨機數的證明資訊,所述第一隨機數和所述第一隨機數的證明資訊是已透過使用 可驗證隨機函數演算法產生,使得同時試圖發起所述時期切換的備份節點的數量少於所述區塊鏈系統中所有備份節點的數量;在所述備份節點處,接收來自所述多個網路節點中的至少一個網路節點的請求確認訊息,其中所述請求確認訊息指示確認所述備份節點將充當所述新的主節點;以及響應於在所述備份節點處所接收到的驗證通過訊息的數量大於訊息的預定數量,由所述備份節點向所述多個網路節點發送時期切換確認訊息。
  10. 如請求項9所述的系統,其中所述時期切換觸發條件包括:所述第一隨機數小於第一預定臨限值,或者所述第一隨機數大於第二預定臨限值。
  11. 如請求項9所述的系統,其中所述請求確認訊息包括所述當前時期中的提議的提議編號和發送所述請求確認訊息的網路節點的節點標識。
  12. 如請求項11所述的系統,其中所述時期切換確認訊息包括所述當前時期中的所述提議的所述提議編號和所述備份節點的節點標識。
  13. 如請求項9所述的系統,其中在所述區塊鏈系統中的備份節點處確定將發生所述時期切換包括:在所述備份節點處確定所述當前時期內的在預定時段內未完成對當前時期的提議的共識處理。
  14. 如請求項13所述的系統,其中所述可驗證隨機函數演算法是基於第二隨機數和所述當前時期中的 所述提議的提議編號,所述第二隨機數是在為所述當前時期選擇所述當前主節點的主節點切換過程中已產生的;且基於所述第一隨機數以及所述第一隨機數的所述證明資訊,由所述多個網路節點處提供所述請求確認處理資訊。
  15. 如請求項13所述的系統,其中所述共識處理包括三階段共識處理,且所述請求確認訊息包括由發出所述請求確認訊息的網路節點已做出的第二階段共識承諾資訊以及第三階段共識承諾資訊。
  16. 如請求項15所述的系統,其中所述時期切換確認訊息還包括來自各個發出請求確認訊息的網路節點的資訊的第二階段共識承諾資訊集合以及第三階段共識承諾資訊集合。
  17. 一種非暫時性電腦可讀儲存媒體,其上儲存有一或多個指令,該等指令可由電腦系統執行以執行操作,該等操作包括:在區塊鏈系統中的備份節點處確定在所述區塊鏈系統中將發生時期切換,所述區塊鏈系統包括多個網路節點,所述多個網路節點包括當前主節點和多個備份節點;響應於確定在所述區塊鏈系統中將發生所述時期切換,由所述備份節點產生第一隨機數;響應於確定所述第一隨機數滿足時期切換觸發條件,則由所述備份節點向所述區塊鏈系統中的除了所述備份節點之外的多個網路節點發送時期切換請求訊息,以發起所 述時期切換,其中所述時期切換請求訊息指示請求,所述請求用於將所述當前主節點的當前時期切換到所述備份節點作為新的主節點的新時期,且其中所述時期切換請求訊息包括所述第一隨機數和所述第一隨機數的證明資訊,所述第一隨機數和所述第一隨機數的證明資訊是已透過使用可驗證隨機函數演算法產生,使得同時試圖發起所述時期切換的備份節點的數量少於所述區塊鏈系統中所有備份節點的數量;在所述備份節點處,接收來自所述多個網路節點中的至少一個網路節點的請求確認訊息,其中所述請求確認訊息指示確認所述備份節點將充當所述新的主節點;以及響應於在所述備份節點處所接收到的驗證通過訊息的數量大於訊息的預定數量,由所述備份節點向所述多個網路節點發送時期切換確認訊息。
  18. 如請求項17所述的電腦可讀儲存媒體,其中所述時期切換觸發條件包括:所述第一隨機數小於第一預定臨限值,或者所述第一隨機數大於第二預定臨限值。
  19. 如請求項17所述的電腦可讀儲存媒體,其中所述請求確認訊息包括所述當前時期中的提議的提議編號和發送所述請求確認訊息的網路節點的節點標識。
  20. 如請求項17所述的電腦可讀儲存媒體,其中在所述區塊鏈系統中的備份節點處確定將發生所述時期切換包括: 在所述備份節點處確定所述當前時期內的在預定時段內未完成對所述當前時期的提議的共識處理。
TW109103621A 2019-06-28 2020-02-06 用於區塊鏈系統中的主節點切換處理的方法及裝置 TWI724780B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910576979.X 2019-06-28
CN201910576979.XA CN110351133B (zh) 2019-06-28 2019-06-28 用于区块链系统中的主节点切换处理的方法及装置

Publications (2)

Publication Number Publication Date
TW202101939A TW202101939A (zh) 2021-01-01
TWI724780B true TWI724780B (zh) 2021-04-11

Family

ID=68177178

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109103621A TWI724780B (zh) 2019-06-28 2020-02-06 用於區塊鏈系統中的主節點切換處理的方法及裝置

Country Status (3)

Country Link
CN (1) CN110351133B (zh)
TW (1) TWI724780B (zh)
WO (1) WO2020258831A1 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10944624B2 (en) 2019-06-28 2021-03-09 Advanced New Technologies Co., Ltd. Changing a master node in a blockchain system
CN110351133B (zh) * 2019-06-28 2021-09-17 创新先进技术有限公司 用于区块链系统中的主节点切换处理的方法及装置
CN110891090B (zh) * 2019-11-29 2023-01-31 北京声智科技有限公司 一种请求方法、装置、服务端、系统及存储介质
CN111274317A (zh) * 2020-01-07 2020-06-12 书生星际(北京)科技有限公司 多节点数据同步的方法和装置,以及计算机设备
CN111327414A (zh) * 2020-01-20 2020-06-23 布比(北京)网络技术有限公司 一种区块链共识方法、系统及计算机存储介质、电子设备
CN111507709B (zh) * 2020-03-25 2023-11-14 农业农村部农药检定所(国际食品法典农药残留委员会秘书处) 一种数据溯源系统
CN113301002B (zh) * 2020-04-24 2023-05-09 阿里巴巴集团控股有限公司 一种信息处理方法、装置、电子设备以及存储介质
CN111711537B (zh) * 2020-06-07 2022-10-25 中信银行股份有限公司 备用主节点列表更新方法、装置及设备
CN111711526B (zh) * 2020-06-16 2024-03-26 深圳前海微众银行股份有限公司 一种区块链节点的共识方法及系统
CN113298649A (zh) * 2020-07-01 2021-08-24 阿里巴巴集团控股有限公司 交易数据的处理方法和装置、数据处理方法和装置
CN111881486A (zh) * 2020-07-23 2020-11-03 中国工商银行股份有限公司 基于区块链的多方数据备份方法、装置及系统
CN112398692B (zh) * 2020-11-16 2022-07-19 网易(杭州)网络有限公司 共识流程处理方法、装置和电子设备
CN112907370B (zh) * 2021-02-10 2022-06-03 北京航空航天大学 多角色驱动的流水线共识方法及系统
CN113114495B (zh) * 2021-04-03 2021-12-28 湖南大学 一种基于区块链的主节点公平选举方法
CN113301114B (zh) * 2021-04-13 2022-03-04 广东电网有限责任公司 区块链共识节点选择方法、装置、计算机设备和存储介质
CN113179166B (zh) * 2021-04-13 2022-07-08 华东师范大学 基于高鲁棒性拜占庭容错的联盟链数据安全实时上链方法
CN113254264B (zh) * 2021-04-14 2023-06-09 卓尔智联(武汉)研究院有限公司 一种区块链的数据备份方法、装置及存储介质
KR102650336B1 (ko) * 2021-05-04 2024-03-22 계명대학교 산학협력단 외부 저장소와 pbft 합의 알고리즘을 이용한 경량화 블록체인 제공 방법 및 장치
CN113139871A (zh) * 2021-05-07 2021-07-20 新晨科技股份有限公司 区块链上自适应共识方法、设备及计算机可读存储介质
CN113472566A (zh) * 2021-06-11 2021-10-01 北京市大数据中心 一种联盟区块链的状态监控方法及主节点状态监控系统
CN113411330B (zh) * 2021-06-18 2022-02-01 国网电子商务有限公司 一种区块链网关切换方法及装置
CN113342902B (zh) * 2021-08-09 2021-11-12 腾讯科技(深圳)有限公司 区块链网络的数据处理方法、装置、计算机设备和介质
CN113645074A (zh) * 2021-08-11 2021-11-12 永旗(北京)科技有限公司 一种基于区块链的共识方法
CN113676541B (zh) * 2021-08-23 2023-06-27 南昌航空大学 一种改进的pbft共识方法
CN114050968B (zh) * 2021-09-27 2023-08-15 南京邮电大学 一种物联网区块链pbft共识架构的构建方法
CN113922864B (zh) * 2021-10-09 2023-07-28 郑州大学 一种基于拜占庭共识的多层卫星网络安全保障方法
CN113949518A (zh) * 2021-10-18 2022-01-18 甘肃同兴智能科技发展有限责任公司 一种提高区块链吞吐量的共识方法及系统
CN114065246B (zh) * 2021-11-16 2022-08-19 上海柯林布瑞信息技术有限公司 医疗区块链数据上链方法和装置
CN114254050B (zh) * 2022-03-02 2022-06-07 恒生电子股份有限公司 区块链网络共识预加载方法、装置、设备及存储介质
CN114448769B (zh) * 2022-04-02 2022-07-01 支付宝(杭州)信息技术有限公司 一种基于共识系统的节点竞选投票方法及装置
CN114866560B (zh) * 2022-04-29 2023-12-01 蚂蚁区块链科技(上海)有限公司 区块链节点迁移的方法、装置、电子设备及可读存储介质
CN115208895A (zh) * 2022-07-19 2022-10-18 中软航科数据科技(珠海横琴)有限公司 一种用于区块链技术的自动化组网方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106060036A (zh) * 2016-05-26 2016-10-26 布比(北京)网络技术有限公司 去中心化共识方法及装置
US20180101560A1 (en) * 2016-10-07 2018-04-12 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system
CN108306760A (zh) * 2017-12-28 2018-07-20 中国银联股份有限公司 用于在分布式系统中使管理能力自恢复的方法和装置
TW201833855A (zh) * 2017-03-10 2018-09-16 香港商阿里巴巴集團服務有限公司 一種共識方法及裝置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10049017B2 (en) * 2016-10-04 2018-08-14 Nec Corporation Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
CN107819749A (zh) * 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
CN108134706B (zh) * 2018-01-02 2020-08-18 中国工商银行股份有限公司 区块链多活高可用系统、计算机设备以及方法
CN109361740B (zh) * 2018-09-27 2021-07-06 百度在线网络技术(北京)有限公司 一种区块链的区块生成方法、装置、设备和介质
MX2019008861A (es) * 2018-12-13 2019-09-11 Alibaba Group Holding Ltd Logro de consenso entre nodos de red en sistema distribuido.
CN109688012B (zh) * 2018-12-29 2020-07-17 杭州趣链科技有限公司 一种联盟链节点热备切换的方法
CN109918261B (zh) * 2019-01-25 2022-11-22 中国联合网络通信集团有限公司 故障监听方法、装置、设备及计算机可读存储介质
CN110351133B (zh) * 2019-06-28 2021-09-17 创新先进技术有限公司 用于区块链系统中的主节点切换处理的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106060036A (zh) * 2016-05-26 2016-10-26 布比(北京)网络技术有限公司 去中心化共识方法及装置
US20180101560A1 (en) * 2016-10-07 2018-04-12 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system
TW201833855A (zh) * 2017-03-10 2018-09-16 香港商阿里巴巴集團服務有限公司 一種共識方法及裝置
CN108306760A (zh) * 2017-12-28 2018-07-20 中国银联股份有限公司 用于在分布式系统中使管理能力自恢复的方法和装置

Also Published As

Publication number Publication date
TW202101939A (zh) 2021-01-01
WO2020258831A1 (zh) 2020-12-30
CN110351133A (zh) 2019-10-18
CN110351133B (zh) 2021-09-17

Similar Documents

Publication Publication Date Title
TWI724780B (zh) 用於區塊鏈系統中的主節點切換處理的方法及裝置
US11128522B2 (en) Changing a master node in a blockchain system
US11614994B2 (en) Method, apparatus and electronic device for blockchain-based transaction consensus processing
US11144411B2 (en) Transaction consensus processing method and apparatus for blockchain and electronic device
CN108111604B (zh) 区块链共识方法、装置和系统、标识信息处理方法和装置
CN108429759B (zh) 去中心化存储安全实现方法
WO2021135857A1 (zh) 对信任节点信息进行更新的方法及装置
WO2021135757A1 (zh) 用于执行交易正确性验证的方法及装置
US11625718B2 (en) Blockchain-based data verification system and method, computing device and storage medium
TWI732620B (zh) 用於管理基於區塊鏈的中心化帳本系統的方法、系統及裝置
TWI740378B (zh) 用於進行交易驗證的方法及裝置
WO2021184885A1 (zh) 用于更新区块链节点处的公钥集合的方法及装置
WO2021135744A1 (zh) 用于区块链节点的数据同步方法及装置
KR20200074911A (ko) 분산 시스템 내의 네트워크 노드를 위한 복구 프로세스의 수행
CN111314067A (zh) 区块存储方法、装置、计算机设备及存储介质
US11436599B2 (en) Blockchain-based identity verification method and related hardware
US20230262126A1 (en) Blockchain-based data processing method and apparatus, device, and readable storage medium
JP2021518962A (ja) ブロックチェーンブロックの非同期処理
WO2021135755A1 (zh) 发送针对数据请求的应答消息的方法及装置、区块链系统
WO2021143364A1 (zh) 获取去中心化应用集群中的交易处理状态的方法及装置
CN111162970B (zh) 在区块链系统中测试去中心化应用服务器的方法及装置
WO2024045552A1 (zh) 一种数据处理方法及相关设备
Shalini et al. Mutual Authentication and Secure Key Distribution in Distributed Computing Environment