TWI743881B - 用於在區塊鏈網路中添加節點的系統和方法 - Google Patents

用於在區塊鏈網路中添加節點的系統和方法 Download PDF

Info

Publication number
TWI743881B
TWI743881B TW109123385A TW109123385A TWI743881B TW I743881 B TWI743881 B TW I743881B TW 109123385 A TW109123385 A TW 109123385A TW 109123385 A TW109123385 A TW 109123385A TW I743881 B TWI743881 B TW I743881B
Authority
TW
Taiwan
Prior art keywords
node
consensus
blockchain
nodes
transaction
Prior art date
Application number
TW109123385A
Other languages
English (en)
Other versions
TW202118274A (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 TW202118274A publication Critical patent/TW202118274A/zh
Application granted granted Critical
Publication of TWI743881B publication Critical patent/TWI743881B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Retry When Errors Occur (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

提供了用於在區塊鏈網路中添加節點的方法、系統和裝置,包括編碼在電腦儲存媒介上的電腦程式。方法之一包括:區塊鏈網路的當前共識節點獲得包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易;回應於對第一交易的共識驗證成功,執行第一交易,並基於區塊鏈網路中多個當前共識節點的編號在節點列表中對節點編號;以及施行視圖改變以使節點作為區塊鏈網路的新共識節點參與未來的共識驗證。

Description

用於在區塊鏈網路中添加節點的系統和方法
本發明總體上涉及用於在區塊鏈網路中添加節點的系統和方法。 [相關申請的交叉引用]
本發明要求於2019年9月5日向中華人民共和國國家知識產權局(SIPO)提交的申請號為CN201910838736.9的中國申請的優先權和權益,其全部內容通過引用包含於此。
區塊鏈技術可以構建在傳輸網路(例如,點對點網路)上。傳輸網路中的網路節點可以基於鏈式資料結構來認證和儲存資料,並基於分散式共識演算法來產生和更新資料。在一些情況下,可能需要添加這種區塊鏈網路的節點。因此,期望提供一種用於在區塊鏈網路中添加節點的方法。
用於添加節點的現有技術經常導致對區塊鏈的正常運行的中斷。在一個示例中,用於在區塊鏈網路中添加節點的當前方法需要停止整個區塊鏈系統以添加節點,並且需要在添加之後重啟系統。結果,整個系統必須經歷停機時間。在另一示例中,用於在區塊鏈網路中添加節點的當前方法需要刪除未啟動節點,並且然後將節點重新添加為啟動共識節點。結果,已刪除並稍後添加的節點必須先與區塊鏈網路斷開連接,然後再添加回去。
本文的各種實施例包括但不限於用於在區塊鏈網路中添加節點的系統、方法和非暫態電腦可讀媒介。
根據一些實施例,一種電腦實現的用於在區塊鏈網路中添加節點的方法,包括:區塊鏈網路的當前共識節點獲得包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易;回應於對第一交易的共識驗證成功,執行第一交易,並基於區塊鏈網路中的多個當前共識節點的編號在節點列表中對節點編號;以及施行視圖改變以使節點作為區塊鏈網路的新共識節點參與未來的共識驗證。在一些實施例中,待添加節點可以是在節點添加之前的區塊鏈網路的未啟動共識節點,並且通過節點添加,節點成為區塊鏈網路的啟動共識節點。在一些實施例中,待添加節點在節點添加之前可能不是區塊鏈網路的一部分,並且通過節點添加,節點加入到區塊鏈網路中成為啟動共識節點。
在一些實施例中,第一交易被配置為調用部署在由區塊鏈網路維護的區塊鏈中的區塊鏈合約。
在一些實施例中,區塊鏈合約包括創始合約或系統合約。
在一些實施例中,當前共識節點獲得第一交易包括:從用戶端設備或控制器的命令控制台獲得第一交易。
在一些實施例中,當前共識節點在本地維護節點列表,節點列表包括以下一項或多項:共識節點標識、共識節點IP位址和共識節點埠號;並且,在節點清單中對多個共識節點順序編號。
在一些實施例中,節點列表處於由區塊鏈網路維護的區塊鏈的世界狀態。
在一些實施例中,基於區塊鏈網路中的多個當前共識節點的編號在節點列表中對節點編號,包括:基於節點列表中的多個共識節點的編號,將節點標識添加到節點清單的尾部,並對節點順序編號;或者根據節點屬性在節點清單中將多個共識節點和所述節點重新排序。
在一些實施例中,施行視圖改變包括回應於檢測到以下任何條件而發起視圖改變:節點列表中共識節點的數量與當前視圖中共識節點的數量不一致;節點清單中共識節點標識與當前視圖中的共識節點標識不一致。
在一些實施例中,施行視圖改變包括:回應於接收到由節點廣播的、用於發起視圖改變的訊息,而發起視圖改變。
在一些實施例中,在節點列表中對節點編號之後並在施行視圖改變之前,方法還包括:從節點獲得包括用於啟動節點的第二請求的第二交易;對第二交易施行共識驗證;以及回應於對第二交易的共識驗證成功,執行用於啟動節點的第二交易。
在一些實施例中,施行視圖改變包括回應於檢測到以下任何條件而發起視圖改變:節點列表中啟動共識節點的數量與當前視圖中啟動共識節點的數量不一致;以及節點清單中啟動共識節點的標識與當前視圖中啟動共識節點的標識不一致。
在一些實施例中,視圖改變中的副本數是包括節點的共識節點的總數。
根據一些實施例,一種用於在區塊鏈網路中添加節點的系統,在區塊鏈網路的當前共識節點中實施,並且包括一個或多個處理器以及一個或多個電腦可讀記憶體,一個或多個電腦可讀記憶體耦接至一個或多個處理器並且其上儲存有指令,所述指令可以由一個或多個處理器執行以施行包括以下的操作:獲得包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易;回應於對第一交易的共識驗證成功,執行第一交易並基於區塊鏈網路中多個當前共識節點的編號在節點列表中對節點編號;以及施行視圖改變以使節點作為區塊鏈網路的新共識節點參與未來的共識驗證。
根據其他實施例,一種非暫態電腦可讀儲存媒介,在區塊鏈網路的當前共識節點中實施,並配置有可由一個或多個處理器執行以使得一個或多個處理器施行包括以下操作的指令:獲得包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易;回應於對第一交易的共識驗證成功,執行第一交易,並基於區塊鏈網路中的多個當前共識節點的編號在節點列表中對節點編號;以及施行視圖改變以使節點作為區塊鏈網路的新共識節點參與未來的共識驗證。
根據又一些其他實施例,一種用於在區塊鏈網路中添加節點的裝置,在區塊鏈網路的當前共識節點中實施,並且包括:獲得模組,用於獲得包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易;執行模組,用於回應於對第一交易的共識驗證成功,執行第一交易,並基於區塊鏈網路中多個當前共識節點的編號在節點列表中對節點編號;以及施行模組,用於施行視圖改變以使節點作為區塊鏈網路的新共識節點參與未來的共識驗證。
根據一些實施例,一種用於電腦實現的用於在區塊鏈網路中添加節點的方法,包括:待添加到區塊鏈網路中的節點同步區塊鏈以獲得第一本地區塊鏈拷貝,其中,區塊鏈網路維護區塊鏈並且包括多個當前共識節點;回應於確定第一本地區塊鏈拷貝包括將節點添加為區塊鏈網路的新共識節點的第一請求,將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個;以及在將第二交易添加到區塊鏈之後,將第一本地區塊鏈拷貝與區塊鏈同步以獲得第二本地區塊鏈拷貝。
在一些實施例中,在所述同步區塊鏈之前,方法還包括:將包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易發送到多個當前共識節點中的一個或多個,以供多個當前共識節點對第一交易施行共識驗證,並回應於對第一交易的共識驗證成功而將第一交易添加到區塊鏈中。
在一些實施例中,在所述同步區塊鏈之前,方法還包括:多個當前共識節點之一將包括用於將節點添加為區塊鏈的新共識節點的第一請求的第一交易發送到多個當前共識節點中的一個或多個,以供多個當前共識節點對第一交易施行共識驗證,並回應於對第一交易的共識驗證成功而將第一交易添加到區塊鏈中。
在一些實施例中,同步所述區塊鏈包括:將一個或多個同步請求分別發送給多個當前共識節點中的一個或多個,以獲得區塊鏈中的資料。
在一些實施例中,將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個,包括:將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個,以供多個當前共識節點對第二交易施行共識驗證,並回應於對第二交易的共識驗證成功而執行用於啟動節點的第二交易。
在一些實施例中,方法還包括:在多個當前共識節點針對區塊鏈施行視圖改變後,將第二本地區塊鏈拷貝與區塊鏈同步以獲得第三本地區塊鏈拷貝。
在一些實施例中,方法還包括:作為區塊鏈網路的新共識節點而參與共識驗證。
在一些實施例中,將節點添加為區塊鏈網路的新共識節點的處理不會對區塊鏈網路的操作造成任何中斷。
在一些實施例中,方法還包括:通過檢查點訊息來確定第一本地區塊鏈拷貝、第二本地區塊鏈拷貝或第三本地區塊鏈拷貝的同步已完成。
在一些實施例中,方法還包括:向多個當前共識節點中的至少一些發送查詢當前最大區塊號的請求,並且通過發現從多個當前共識節點中的至少一些返回的相同的最大區塊號與最大本地區塊號一致來確定第一本地區塊鏈拷貝、第二本地區塊鏈拷貝或第三本地區塊鏈拷貝的同步已經完成。
在一些實施例中,將節點添加為區塊鏈網路的新共識節點的第一請求包括:將節點從區塊鏈網路的未啟動共識節點改變為區塊鏈網路的啟動共識節點的請求。
在一些實施例中,將節點添加為區塊鏈網路的新共識節點的第一請求包括:將節點包括到區塊鏈網路中作為新共識節點的請求。
根據其他實施例,一種用於在區塊鏈網路中添加節點的系統,包括一個或多個處理器以及一個或多個電腦可讀記憶體,一個或多個電腦可讀記憶體耦接至一個或多個處理器並且其上儲存有可由一個或多個處理器執行以施行前述實施例中任一個的方法的指令。
根據又一些實施例,一種非暫態電腦可讀儲存媒介,配置有可由一個或多個處理器執行以使得一個或多個處理器施行前述實施例中任一個的方法的指令。
根據再一些實施例,一種用於在區塊鏈網路中添加節點的裝置,包括用於施行前述實施例中任一個的方法的多個模組。
根據一些實施例,一種用於在區塊鏈網路中添加節點的系統,在待添加到區塊鏈網路中的節點中實施,並且包括一個或多個處理器和一個或多個電腦可讀記憶體,一個或多個電腦可讀記憶體耦接至一個或多個處理器並且其上儲存有可由一個或多個處理器執行以施行以下操作的指令:同步區塊鏈以獲得第一本地區塊鏈拷貝,其中,區塊鏈網路維護區塊鏈並且包括多個當前共識節點;回應於確定第一本地區塊鏈拷貝包括將節點添加為區塊鏈網路的新共識節點的第一請求,將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個;以及在將第二交易添加到區塊鏈之後,將第一本地區塊鏈拷貝與區塊鏈同步以獲得第二本地區塊鏈拷貝。
根據其他實施例,一種非暫態電腦可讀儲存媒介,在待添加到區塊鏈網路中的節點中實施,並配置有可由一個或多個處理器執行以使得一個或多個處理器施行包括以下操作的指令:同步區塊鏈以獲得第一本地區塊鏈拷貝,其中,區塊鏈網路維護區塊鏈並包括多個當前共識節點;回應於確定第一本地區塊鏈拷貝包括將節點添加為區塊鏈網路的新共識節點的第一請求,將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個;以及在將第二交易添加到區塊鏈之後,將第一本地區塊鏈拷貝與區塊鏈同步以獲得第二本地區塊鏈拷貝。
根據又一些其他實施例,一種用於在區塊鏈網路中添加節點的裝置,在待添加到區塊鏈網路中的節點中實施,並且包括:第一同步模組,同步區塊鏈以獲得第一本地區塊鏈拷貝,其中,區塊鏈網路維護區塊鏈並包括多個當前共識節點;發送模組,回應於確定第一本地區塊鏈拷貝包括將節點添加為區塊鏈網路的新共識節點的第一請求,將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個;以及第二同步模組,在將第二交易添加到區塊鏈之後,將第一本地區塊鏈拷貝與區塊鏈同步以獲得第二本地區塊鏈拷貝。
本文公開的實施例具有一種或多種技術效果。在一些實施例中,在區塊鏈網路中添加節點增加了區塊鏈網路(例如,實用拜占庭容錯(PBFT)系統)中的共識節點的總數n,這增加了區塊鏈網路對於惡意或故障(例如,異常、離線)節點的容忍度,因為PBFT系統可容忍的惡意或故障節點的最大數量f等於(n-1)/3向下四捨五入到最接近的整數。在一個實施例中,故障狀態可能是由於例如配置故障、機器故障、網路故障、軟體故障等導致的。因此,在區塊鏈網路中添加節點可提高區塊鏈網路的強健性和可靠性。在一些實施例中,通過動態地執行用於添加節點的第一交易和用於啟動節點的第二交易,可以將節點作為新共識節點添加到現有共識節點池中而不必中斷區塊鏈網路的運行。在一個實施例中,在節點添加處理期間避免了系統停機時間,並且區塊鏈網路維持其正常運行。在一些實施例中,通過在執行第一交易和第二交易之前、之間和之後的多次同步,新添加的節點能夠在短時間內獲得與由現有共識節點所儲存的節點清單相同的節點清單拷貝並同步至相同的區塊鏈資料。在一個實施例中,通過視圖改變,包括添加的節點的所有共識節點均獲得包括所有共識節點編號的節點清單的相同拷貝。因此,添加的節點能夠與現有的共識節點一起儘快地為共識驗證做出貢獻,並且避免浪費計算資源。
本文公開的系統、方法和非暫態電腦可讀媒介的這些和其他特徵,以及結構的相關元件的功能和操作方法以及零件的組合及製造的經濟性,在參考圖式考慮以下描述和所附申請專利範圍時將變得更加明顯,所有這些圖式、描述和申請專利範圍均形成本文的一部分,其中,相似的圖式標記指代各個圖式中的相應部分。然而,應明確地理解,圖式僅是出於說明和描述的目的,而並非旨在進行限制。
區塊鏈可分為三種類型:公有區塊鏈、私有區塊鏈、聯盟區塊鏈。此外,在三種類型的區塊鏈之間可能存在各種組合,例如私有區塊鏈+聯盟區塊鏈、聯盟區塊鏈+公有區塊鏈等。其中,公有區塊鏈是最去中心化的(decentralized)。對於由比特幣和乙太坊表示的公有區塊鏈,公有區塊鏈的參與者(區塊鏈節點,或簡稱為節點)可以從區塊鏈中讀取資料記錄、參與交易並競爭新區塊的記帳(bookkeeping)權等。此外,每個參與者可以自由加入和退出區塊鏈網路以及施行相關操作。然而,對於私有區塊鏈,區塊鏈網路的資料寫入許可權可由某個實體或組織所控制,而資料讀取許可權由實體或組織確定。因此,私有區塊鏈可被認為是弱中心化系統,其中參與的節點受約束並且數量受限制。聯盟區塊鏈介於公有區塊鏈與私有區塊鏈之間,並且可以實現“部分去中心化”。聯盟區塊鏈的每個節點可以對應於實體或組織。參與者可以通過授權加入聯盟區塊鏈網路,從而形成具有共同利益的聯盟,並共同維護區塊鏈網路的運行。對於上述各種類型的區塊鏈中的任何一種,可能存在在區塊鏈網路中動態添加節點的需求。
在一些實施例中,具有一定級別投票權的節點可以被稱為共識節點,其形成區塊鏈網路並通過共識協定維持其運行。例如,共識節點可以承擔對區塊鏈交易(或簡稱交易)施行共識驗證的責任。相比之下,未啟動節點(其可能是也可能不是區塊鏈網路的一部分)不參與這種共識驗證。通過共識驗證,共識節點可以就將新產生的區塊添加到區塊鏈中達成共識(協定)。新產生的區塊可以包括由共識節點進行共識驗證的一個或多個交易。共識節點還可以對區塊鏈做出其他共識決策,例如,為區塊鏈設置服務費。
在一些實施例中,共識節點可以包括兩種類型:啟動的和未啟動的。啟動共識節點可以參與共識驗證,並且可以以順序編號儲存在本地節點清單中。未啟動共識節點可能不參與共識驗證,因此不會在本地節點列表中與啟動共識節點一起編號。
公有區塊鏈、私有區塊鏈和聯盟區塊鏈中的每一個可以提供智慧合約。可以通過區塊鏈交易將智慧合約部署在區塊鏈中,然後由另一區塊鏈交易來調用。例如,乙太坊支援使用者創建和調用複雜演算法。作為可程式設計的區塊鏈,乙太坊的核心在於乙太坊虛擬機器(EVM)。每個乙太坊節點可以運行EVM。EVM是圖靈完備的,這意味著甚至可以通過它們來實施複雜的演算法。可以在EVM中執行智慧合約的部署和調用。
如圖1中所示,Bob可以將包括智慧合約創建的區塊鏈交易發送到乙太坊網路。區塊鏈節點1的EVM可以執行區塊鏈交易以產生智慧合約的相應實例。在圖1中,“0x6f8ae93…”表示智慧合約的位址。區塊鏈交易的“資料(data)”欄位可以儲存位元組碼。區塊鏈交易的“至(to)”欄位可以是空(null)的區塊鏈帳戶。在區塊鏈節點通過共識機制達成共識後,智慧合約被成功創建並部署在由區塊鏈網路維護的區塊鏈中,未來的用戶可以調用部署的智慧合約。
創建智慧合約後,將在區塊鏈中創建與智慧合約相對應的合約帳戶,並且合約帳戶具有特定的位址。合約代碼和帳戶資料將被儲存在合約帳戶下。智慧合約的行為由合約代碼控制,並且合約帳戶儲存智慧合約的狀態。換句話說,智慧合約使能在區塊鏈中創建包括合約代碼和帳戶儲存的虛擬帳戶。
如圖2中所示,仍以乙太坊為例,Bob將包括用於調用智慧合約的資訊的區塊鏈交易發送到乙太坊網路。區塊鏈節點1的EVM可以執行區塊鏈交易以產生智慧合約的相應實例。對於圖2中的區塊鏈交易,“從(from)”欄位可以包括調用智慧合約的區塊鏈帳戶的位址,“至”欄位中的“0x6f8ae93…”可以表示要被調用的智慧合約的位址,“值(value)”欄位可以表示乙太幣的值,“資料”欄位可以儲存用於調用智慧合約的方法和參數。調用智慧合約後,區塊鏈帳戶所持有的乙太幣餘額可能會改變。此外,某個用戶用戶端可以通過區塊鏈節點(例如,圖2中的區塊鏈節點6)來查看餘額。
智慧合約可以根據規定的方式在區塊鏈網路的每個區塊鏈節點中獨立執行。所有執行記錄和資料可以儲存在區塊鏈中。因此,在執行這樣的區塊鏈交易之後,防篡改並且永久的交易證明被儲存到區塊鏈中。
圖3示出了智慧合約的創建和調用。在乙太坊中創建智慧合約涉及諸如編寫智慧合約、編譯為位元組碼以及部署在區塊鏈中等步驟。在乙太坊中調用智慧合約可以指發起指向已部署的智慧合約的位址的區塊鏈交易,以使合約代碼在乙太坊網路中每個節點的EVM中執行。
除了用戶創建智慧合約之外,還可以在區塊鏈的創始區塊(genesis block)中由系統組態智慧合約。這種類型的合約可以稱為創始合約。在創始合約中,可以配置區塊鏈網路的資料結構、參數、屬性和方法。此外,具有系統管理員許可權的帳戶可以創建或修改系統級智慧合約(簡稱“系統合約”)。除了EVM之外,不同的區塊鏈網路可以採用不同的虛擬機器,本文不做限制。
區塊鏈技術與傳統的去中心化技術之間的一個區別是在每個節點上進行記帳,或稱為分散式記帳,而不是傳統的集中式記帳。在各種區塊鏈網路中,可以實施共識演算法(即上述共識機制),以確保在進行記帳的節點之間的記錄一致性。當節點產生新區塊時,如果新區塊被其他節點接受,則其他節點將記錄相同的新區塊。其他節點確認新區塊的處理是共識機制。共識機制是這樣的機制:區塊鏈節點就區塊資訊達成全網共識,以確保將新區塊正確地添加到區塊鏈中。當前,主流共識機制包括:工作量證明(POW)、權益證明(POS)、委託權益證明(DPOS)、實用拜占庭容錯(PBFT)演算法、HoneyBadger BFT演算法等。
在PBFT演算法的一個示例中,進行了一些結合PBFT動態地添加節點的已知嘗試。例如,“動態的實用拜占庭容錯”(https://ieeexplore.ieee.org/stamp/ stamp.jsp?arnumber=8433150)討論了,為了基於PBFT在區塊鏈網路中動態地添加新節點,需要憑證授權(CA)節點作為安全服務提供者來參與添加新節點,但CA節點不參與共識驗證。再例如,“Solida:基於可重構拜占庭共識的區塊鏈協議”(https://eprint.iacr.org/2017/1118.pdf)提出了一種基於比特幣POW和PBFT的節點添加與刪除演算法,演算法基於POW投票選出主節點。但是,已知POW會消耗大量的中央處理器(CPU)資源。下面以PBFT為例介紹共識機制。
圖4示出了傳統的PBFT演算法的流程圖。演算法由米格爾•卡斯楚(Miguel Castro)和芭芭拉•利斯科夫(Barbara Liskov)於1999年提出,解決了PBFT的低效率問題,將複雜度從指數級降低到多項式級,使PBFT在實際系統中的應用變得可行。論文發表在第三屆作業系統設計與實現研討會(1999)論文集上。演算法假定,如果多達f個備份副本(即節點)是惡意的或故障的,則總共有3f+1個或更多的副本可以保證非同步系統內的安全性和活性。為確保所有副本的資料一致並滿足容錯要求,需要一定數量的副本(例如包括分散式系統中大多數節點的集合)來形成法定數量(Quorum)。例如,如果副本總數n為3f+1,則Quorum為2f+1。因此,對於包括四個節點的分散式系統,它們中的任何三個都可以形成Quorum。
此外,所有副本都經過稱為視圖(view)的一系列配置(succession of configurations)。在視圖中,一個副本是主節點,其他副本是備份節點。視圖的主節點是副本p,使得p=v mod | R |,其中v是視圖編號,視圖被連續編號,並且| R |是副本數。當主節點故障時,需要觸發視圖改變協定以在系統故障時做出調整,來改變主節點。
PBFT演算法如下。 1.用戶端設備c向主節點0(副本0)發送請求; 2.主節點0向每個備份節點廣播請求; 3.所有副本中的每一個執行請求,並將相應的結果發送到用戶端設備c; 4.用戶端設備c分別從f+1個不同副本中收集相同的結果,作為操作的最終結果。
以下討論了PBFT(結合著名的拜占庭將軍問題)的示例。在此,假設n=4且f=1,即總共有四個節點,其中故障節點的數量是1。假設節點編號分別為0、1、2和3,並且故障節點為節點3。處理如下。 1.(請求階段)用戶端設備c將請求發送到主節點0; 2.(預準備階段)主節點0接收來自用戶端設備c的請求(或來自用戶端設備組的請求),對請求排序(在用戶端設備組的情況下),並將請求封裝為訊息m。然後,主節點0向節點1、2和3(即備份節點1、2和3,也稱為副本或節點1、2和3)廣播預準備訊息。預準備訊息包括訊息m。 3.(準備階段)在接收到預準備訊息之後,如果節點1、2和3成功驗證了訊息m,則節點1、2和3中的每個節點將重新廣播訊息m。例如,節點1將向節點0、2和3廣播準備訊息;節點2將向節點0、1和3廣播準備訊息。節點3可能會經歷停機時間並且無法廣播。此外,每個節點接收由其他節點廣播的準備訊息。每個節點可以將自身廣播的準備訊息(指示自身認可的準備訊息)和接收到的準備訊息(指示其他節點認可的準備訊息)添加到本地日誌中。如果節點接收到同一訊息的Quorum -1個確認(具有預準備訊息和Quorum -1個準備訊息,則本地日誌將具有Quorum個確認),則節點轉換到準備階段。 4.(提交階段)已進入準備階段的每個參與的共識節點向其他共識節點廣播提交訊息,並將自身廣播的提交訊息(指示自身認可的提交訊息)添加到本地日誌中。然後,每個節點接收其他節點廣播的提交訊息。如果節點接收到Quorum -1個有效的提交訊息,則節點將提交訊息添加到本地日誌中(具有自身廣播的提交訊息和Quorum -1個提交訊息,則本地日誌將具有Quorum個提交訊息)並轉換到提交狀態。 5.(回復階段)參與共識驗證的所有節點中的每個節點在其本地虛擬機器中循序執行預準備訊息的訊息m中的請求或一組有序請求,然後將回復發送到用戶端設備c。
如果用戶端設備c接收到f+1個相同的回復訊息,則這指示用戶端設備c提出的請求已達成全網共識。否則,用戶端設備c可能需要確定是否將請求重新發送到主節點0。
以上關於圖4的處理和描述是傳統的PBFT演算法。處理可以由用戶端設備發起,使得用戶端設備發起的請求訊息中的一個或多個交易經歷共識驗證,並在共識驗證結束時將共識驗證的結果返回到用戶端設備。
在聯盟區塊鏈場景中,可以由任何節點發起共識驗證(例如,上圖4的預準備、準備和提交處理)。在聯盟區塊鏈場景中,用戶端設備是可選的。如果不包括用戶端設備,則圖4的請求和回復階段變為可選,並且主節點可以在獲得一定數量的區塊鏈交易後發起PBFT共識驗證。如果包括用戶端設備,則共識驗證可以不由用戶端設備發起,而是可以由主節點在主節點獲得一定數量的區塊鏈交易後發起。即,圖4中的預準備階段可能不由請求階段直接觸發。
如果主節點行為惡意或故障(例如,異常、離線),並且未能廣播用戶端設備的請求,則用戶端設備可以配置超時機制。如果發生超時,則用戶端設備可以將請求廣播到所有副本。如果副本檢測到主節點行為惡意或故障(例如異常、離線),則副本可以發起視圖改變協議階段以改變主節點。
此外,主節點提出的錯誤提議可能會導致預準備、準備和提交三個階段的共識驗證失敗。替代地,在準備和提交階段,可能無法達成一致的Quorum,這也無法完成共識驗證。在這些情況下,也可以發起視圖改變以改變主節點。
在視圖改變協定階段,需要解決先前節點與其他節點之間的非同步問題,以使節點在視圖改變(VC)之後恢復。例如,如圖5中所示,在視圖改變之前的視圖v處,主節點副本0已經提交並執行了與<v,n,d>相對應的提議(propose)m5(例如,訊息m5),其中v是視圖編號,n是節點總數,並且d是提議m5的訊息摘要。然而,副本1可能由於網路延遲而沒有提交提議m5,並且仍然處於預準備階段。副本2(和副本3)也可以處於對提議m5的預準備階段。此後,副本0經歷停機時間。因此,不同的節點處於不同的狀態。改變主節點後,副本0可以通過重啟來恢復。主節點可能已改變為副本1,並且副本1-3需要在訊息處理進度上趕上副本0。因此,新的主節點副本1需要重新發送處於準備狀態的提議m5以供副本1-3執行並與副本0的狀態同步。否則,在新的視圖v+1處,副本1-3可能會完成新訊息m6的三個階段的共識驗證,但只有副本0已經執行了m5,而副本1-3尚未執行m5。即,在新視圖v+1處,副本1-3對新訊息m6的執行從與副本0不同的狀態啟動。這可能導致不同節點的虛擬機器之間出現不一致,並導致分叉。另外,在上述處理中,如果副本0針對m5處於準備狀態,也就是說,如果副本0尚未在其虛擬機器上執行m5,而其他副本在處理上落後於副本0,則副本0的準備狀態可以被刪除而不影響整個系統的一致性。
視圖改變協定階段可以包括視圖改變協定處理和新視圖協定處理。執行完兩個協議處理後,完成主節點的改變。主節點改變後,視圖編號將加1,改變為v+1。根據p=(v+1)%n,圖4的主節點副本0改變為副本1。
例如,如圖6中所示,檢測到主節點惡意或故障(例如,異常、離線)的備份節點可以將訊息<視圖改變,v+1, n, C, P, i>廣播到其他備份節點。如圖6中所示,副本1檢測到原始主節點副本0行為惡意或故障(例如,異常、離線),則副本1向副本0、副本2和副本3發送訊息<視圖改變,v+1,n,C,P,i>。類似地,副本2向副本0、副本1和副本3發送訊息<視圖改變,v+1,n,C,P,i>,並且副本3向副本0、副本1和副本2發送訊息<視圖改變,v+1,n,C,P,i>。
對於廣播訊息,“視圖改變”是協定標識,指示協定是視圖改變協定。下一個視圖編號是v+1,並且“n”是最新的穩定檢查點的數量,“C”是已驗證的2f+1個檢查點訊息的集合。“P”是可選的,並且如果存在,則指示對於發送視圖改變訊息(對應於準備狀態中的每個<v,n,d>,包括預準備訊息和2f個不同節點的簽名)的備份節點已達到準備狀態的一個或多個訊息的集合。
在例如圖6中的副本1的新的主節點p=(v+1)mod |R|接收到2f個有效的視圖改變訊息後,新的主節點向其他節點廣播訊息<新視圖,v+1,V,O,p>。“新視圖”是協定標識,指示協定是新的視圖協定。下一個視圖編號是v+1。“V”包括視圖改變訊息和新的主節點從2f個不同節點接收到的簽名,以及由新的主節點自身已發送或待發送的針對v+1的視圖改變訊息。“O”是由主節點重新發送的未執行的預準備訊息集,而“p”是當前節點(區塊鏈網路的現有節點,例如現有/當前共識節點)的簽名。預準備訊息集的選擇規則包括: 1.從V獲得具有最小編號min-s的穩定檢查點,從V獲得具有最大編號max-s的準備訊息。 2.在min-s與max-s之間,如果存在訊息集P,則創建訊息<<預準備,v+1,n,d>,m>。否則,創建空的預準備訊息<<預準備,v+1,n,d(null)>,m(null)>,其中m(null)是空訊息,d(null)是空訊息的摘要。
當備份節點從主節點接收到新的視圖訊息時,備份節點驗證V和O中的簽名和視圖改變訊息。如果有效,則備份節點進入v+1狀態並啟動處理O中的預準備訊息。
在聯盟區塊鏈的示例中,在聯盟區塊鏈場景中,節點可能對應於一個或多個帳戶。類似地,節點可能不對應任何帳戶,而僅充當共識節點。另外,聯盟區塊鏈可以包括可以如上所述產生的創始合約或系統合約。創始合約/系統合約可以配置聯盟區塊鏈的共識節點列表(節點列表,或簡稱清單),例如,配置共識節點的公開金鑰集,並根據預定順序排列集中的公開金鑰。聯盟區塊鏈的每個共識節點可以根據創始合約中的共識節點列表在本機存放區本地節點列表。在本地節點清單中,每個共識節點可以根據創始合約/系統合約中指定的順序,根據對應的公開金鑰來排列共識節點。因此,每個共識節點的本地列表都包含以相同的順序排列的相同的共識節點。另外,在創始合約/系統合約中,可以添加用於共識節點的方法和參數配置。因此,基於創始合約/系統合約,每個節點可以通過改變本地節點列表中的節點來完成節點添加的操作。
當帳戶發起添加共識節點的請求時,請求例如是交易請求,第一當前共識節點可以接收請求。例如,請求可以是用戶端設備提出的節點添加請求,從而觸發節點添加處理。替代地,請求可以是第一當前共識節點從控制器的命令控制台接收到的節點添加請求,從而觸發節點添加處理。控制器可以由控制相應節點的管理員例如通過圖形化或代碼化指令來操作。對於例如PBFT的具有主節點的共識演算法,第一當前共識節點可以是主節點。第一當前共識節點可以直接從用戶端設備或控制器、或者從轉發交易請求的其他共識節點來獲得交易請求。對於諸如HoneyBadger BFT之類的無主節點的共識演算法,不存在主節點,則第一當前共識節點是多個共識節點之一。
圖7示出了根據各種實施例的用於在區塊鏈網路中添加節點的流程圖。以下呈現的操作旨在說明。取決於實施方式,示例性步驟可以包括以各種順序或並行施行的附加的、更少的或替代的步驟。圖7提供了添加節點(節點X)作為在包括多個當前共識節點的區塊鏈網路的新共識節點的示例。區塊鏈網路維護區塊鏈。可以將節點X添加為基於PBFT的區塊鏈網路的主節點或備份節點。
在區塊鏈網路中添加節點可以至少包括以下實施例。在一些實施例中,節點X可以是在節點添加之前的區塊鏈網路的未啟動共識節點,並且通過節點添加,節點X變為區塊鏈網路的啟動共識節點。未啟動共識節點可能不參與共識驗證,因此可能是非共識節點。在一些實施例中,節點X在添加節點之前可能不是區塊鏈網路的一部分,並且通過節點添加,節點X加入區塊鏈網路以成為啟動共識節點。啟動共識節點可以參與共識驗證。
圖7示出兩個平行的時間軸,頂部時間軸承載節點X的本地區塊鏈拷貝的時間依賴狀態,並且底部時間軸承載當前共識節點(節點Y)之一的本地區塊鏈拷貝的時間依賴狀態。每個當前共識節點可以施行由節點Y所施行的步驟。在軸之間,存在訊息通信和資料同步方面的各種交互。在一些實施例中,每個當前共識節點在本地維護節點列表,節點列表包括以下一項或多項:共識節點標識、共識節點IP位址和共識節點埠號。在節點清單中對多個共識節點順序編號。在一個實施例中,節點列表處於由區塊鏈網路維護的區塊鏈的世界狀態。
沿著頂部軸,節點X經歷了從作為區塊鏈網路的未啟動共識節點或不作為區塊鏈網路的共識節點,通過恢復階段(在此期間,節點X還不是啟動共識節點,並且無法施行共識驗證),至達到正常階段(在此期間,節點X與當前共識節點相同,並且可以施行共識驗證)。沿著底部軸,節點Y經歷了從正常階段(照常施行共識驗證),到視圖改變階段(同步共識節點狀態),然後回到正常階段。同樣,沿著頂部軸和底部軸,當添加一個或多個新區塊時,區塊鏈會改變其狀態,因此,區塊鏈狀態會從B_0更新為B_change、B_act和B_newest。每個軸上的“區塊”框表示由節點X或節點Y所看見或所儲存的區塊鏈。
在一些實施例中,在步驟701,管理帳戶、外部帳戶或替代帳戶可以發起第一交易“添加節點(AddNode)”以在區塊鏈網路中添加節點X。第一交易可以由節點X、節點Y或耦接到區塊鏈網路的外部設備發起,並廣播到所有當前共識節點。節點Y可以從用戶端設備或控制器的命令控制台來獲得第一交易。此時,節點X可以在B_0保留原始本地區塊鏈拷貝,也可以沒有本地區塊鏈拷貝。節點Y以及其他當前共識節點可以對第一交易施行共識驗證。
在一些實施例中,節點X可以將包括用於將節點X添加為區塊鏈網路的新共識節點的第一請求的第一交易發送到多個當前共識節點中的一個或多個以供多個當前共識節點對第一交易施行共識驗證,以及回應於對第一交易的共識驗證成功而將第一交易添加到區塊鏈中。
在一些實施例中,多個當前共識節點之一可以將包括用於將節點X添加為區塊鏈網路的新共識節點的第一請求的第一交易發送到多個當前共識節點中的一個或多個以供多個當前共識節點對第一交易施行共識驗證,並回應於對第一交易的共識驗證成功而將第一交易添加到區塊鏈。
在一些實施例中,將節點X添加為區塊鏈網路的新共識節點的第一請求包括:將節點X從區塊鏈網路的未啟動共識節點改變為區塊鏈網路的啟動共識節點的請求,或者將節點X包括在區塊鏈網路中作為新共識節點的請求。
回應於對第一交易的共識驗證成功,節點Y可以執行第一交易。由此,將第一交易添加到區塊鏈,並且節點Y的本地區塊鏈拷貝位於B_change。附著到“區塊”的陰影框表示在將第一交易添加到區塊鏈之前可能存在的時滯。另外,節點Y可以基於區塊鏈網路的多個當前共識節點的編號在節點列表中對節點X編號。例如,節點Y可以基於節點列表中多個共識節點的現有編號將節點X的標識添加到節點Y的節點列表的尾部,並對節點X順序編號。又例如,節點Y可以在節點清單中根據節點屬性將多個共識節點與節點X一起重新排序。在一個實施例中,在節點添加之前,節點清單指示區塊鏈網路包括節點A(編號0)、節點B(編號1)、節點C(編號2)和節點Y(編號3);並且在添加節點之後,節點清單指示區塊鏈網路包括節點B(編號0)、節點A(編號1)、節點C(編號2)、節點Y(編號3)和節點X(編號4)。
在步驟702,節點X可以同步包括第一區塊鏈並且在B_change處的區塊鏈。例如,節點X可以分別向多個當前共識節點(例如,節點Y)中的一個或多個發送一個或多個同步請求,以獲得區塊鏈中的資料從而下載或更新本地區塊鏈拷貝。在一個實施例中,節點X可以向節點Y發送同步請求以獲得區塊鏈中的所有資料。在另一實施例中,節點X可以向不同的當前共識節點發送不同的同步請求,以獲得區塊鏈中的不同資料。例如,如果區塊鏈的資料當前儲存在100個區塊中,則節點X可以向節點Y發送同步請求以獲得前70個區塊中的資料,並向節點Z(另一當前共識節點)發送不同的同步請求以獲得後30個區塊中的資料,因此節點X可以總共獲得所有100個區塊中的資料。
如所述的,節點X可能在B_0處具有原始本地區塊鏈拷貝,也可能沒有本地區塊鏈拷貝。在一些實施例中,如果節點X在B_0處具有原始本地區塊鏈拷貝,則節點X可以同步區塊鏈以更新原始本地區塊鏈拷貝(B_0),從而獲得第一本地區塊鏈拷貝(B_change)。在一些實施例中,如果節點X沒有本地區塊鏈拷貝,則節點X可以同步區塊鏈以下載或以其他方式獲得第一本地區塊鏈拷貝(B_change)。因此,節點X在B_change處獲得節點X的第一本地區塊鏈副本。節點Y可以獲得包括用於將節點X添加為區塊鏈網路的新共識節點的第一請求的第一交易。第一交易可以被配置為調用部署在由區塊鏈網路維護的區塊鏈中的區塊鏈合約(例如,創始合約、系統合約)。
然後,根據第一本地區塊鏈副本,節點X可以確定第一本地區塊鏈副本包括將節點X添加為區塊鏈網路的新共識節點的第一請求,並因此發起第二交易“啟動節點(ActivateNode)”。節點X可以將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點(例如,節點Y)中的一個或多個。節點Y可以從節點X獲得包括用於啟動節點X的第二請求的第二交易。節點Y以及其他當前共識節點可以對第二交易施行共識驗證。
在步驟703,節點X可以將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個,以供多個當前共識節點對第二交易施行共識驗證,並回應於對第二交易的共識驗證成功,而執行用於啟動節點X的第二交易。
隨著共識驗證成功,第二交易被添加到區塊鏈,並且因此節點Y的本地區塊鏈拷貝被更新為B_act。附著到“區塊”的陰影框表示在將第二交易添加到區塊鏈之前的可能的時滯。回應於對第二交易的共識驗證成功,節點Y可以執行用於啟動節點的第二交易。
在步驟704,在將第二交易添加到區塊鏈之後,節點X可以將其第一本地區塊鏈拷貝與包括第二區塊鏈並且位於B_act處的區塊鏈同步。因此,節點X的第一本地區塊鏈拷貝被更新為節點X的B_act處的第二本地區塊鏈拷貝。
在步驟705,當前共識節點(例如,節點Y)可以發起視圖改變,通過視圖改變,節點Y的本地區塊鏈拷貝被更新到B_newest。在一些實施例中,節點Y可以回應於檢測到以下任何條件而發起視圖改變:節點列表中共識節點的數量與當前視圖中共識節點的數量不一致;以及節點清單中共識節點標識與當前視圖中共識節點標識不一致。在一些實施例中,節點Y可以回應於接收到由節點X廣播的、用於發起視圖改變的訊息來發起視圖改變。節點Y可以回應於檢測到以下任何條件而發起視圖改變:節點列表中啟動共識節點的數量與當前視圖中啟動共識節點的數量不一致;以及節點清單中啟動共識節點的標識與當前視圖中啟動共識節點的標識不一致。
節點Y可以施行視圖改變以使節點X作為區塊鏈網路的新共識節點參與未來的共識驗證。若非立即進入視圖改變,而是當前視圖的主節點發起下一輪共識驗證,那麼共識驗證可能會暫時失敗,但是最終所有共識節點可以在執行視圖改變後恢復。
在一些實施例中,視圖改變中的副本數是包括節點X的共識節點的總數。也就是說,視圖改變的n為1+當前共識節點數。
在步驟706,在多個當前共識節點針對區塊鏈施行視圖改變之後,節點X可以將其第二本地區塊鏈拷貝與位於B_newest處的區塊鏈同步。因此,節點X的第二本地區塊鏈拷貝被更新為節點X的B_newest處的第三本地區塊鏈拷貝。
因此,節點X確定自身已經被啟動為共識節點,並且可以作為區塊鏈網路的新共識節點參與共識驗證。即,包括節點X和節點Y的共識節點可以施行下一輪共識驗證。
在一些實施例中,節點X可以(1)通過檢查點訊息確定第一本地區塊鏈拷貝、第二本地區塊鏈拷貝或第三本地區塊鏈拷貝的同步已完成;或(2)向多個當前共識節點中的至少一些發送用於查詢當前最大區塊號(例如,區塊高度)的請求,並通過發現從多個當前共識節點中的至少一些返回的相同的最大區塊號與最大的本地區塊號一致來確定第一本地區塊鏈拷貝、第二本地區塊鏈拷貝或第三本地區塊鏈拷貝的同步已完成。
這樣,在節點添加期間不會中斷區塊鏈運行。在節點添加處理期間仍然可以施行共識驗證。無需停止區塊鏈系統即可實現節點添加,從而消除了系統停機時間並減少了用於引入新節點的同步時間。
圖8示出了根據各種實施例的用於在區塊鏈網路中添加節點的方法800的流程圖。在一些實施例中,區塊鏈網路可以基於聯盟區塊鏈。在一些實施例中,區塊鏈網路可以基於PBFT。
S801包括:區塊鏈網路的第一當前共識節點獲得用於添加節點的交易請求,並對用於添加節點的交易請求發起共識驗證;共識驗證成功後,當前共識節點執行用於添加節點的交易並基於當前共識節點的編號在本地節點列表中對節點編號。
在一些實施例中,交易請求可以是用於調用合約的交易請求。在交易請求中,可以指定被調用的智慧合約的位址、調用方法和輸入參數。例如,被調用的合約可以是上述創始合約/系統合約,調用方法可以是用於添加節點的方法,以及輸入參數可以包括待添加節點的以下中的一個或多個:標識、IP位址和埠號。
在一些實施例中,第一當前共識節點可以通過接收用於添加節點的交易請求來觸發節點添加處理。例如,如上所述,第一當前共識節點可以通過從用戶端設備接收用於添加節點的交易請求來觸發節點添加處理,或者第一當前共識節點可以通過從控制器的命令控制台接收用於添加節點的交易請求來觸發節點添加處理。控制器可由控制相應節點的管理員例如通過圖形化或代碼化的指令來操作。替代地,第一共識節點可以從待添加節點接收待添加節點的相關資訊,以觸發添加節點處理。
在一些實施例中,將用於添加節點的交易請求傳播到基於底層點對點(P2P)網路的區塊鏈網路中的各個共識節點。在第一當前共識節點接收到用於添加節點的交易請求後,第一當前共識節點可以作為與具有主節點的共識演算法關聯的主節點、或者作為與不具有主節點的共識演算法關聯的共識節點,發起共識驗證處理。以例如PBFT的具有主節點的共識演算法為例,第一當前共識節點可以是主節點,並且可以針對用於添加節點的交易請求發起共識驗證處理,即主要包括上圖4中的預準備、準備以及提交處理。替代地,第一當前共識節點可以是備份節點,其接收並將交易請求轉發給主節點以發起共識驗證處理。
在一些實施例中,在完成共識驗證之後,區塊鏈網路中的節點在本地具有針對待添加節點的交易請求中的訊息內容,並且達成共識。此外,如果用於添加節點的交易請求中的訊息內容與其他訊息一起形成共識結果,則用於添加節點的交易請求中的訊息內容在不同節點上具有相同的訊息序列,即,至少Quorum的共識節點已經針對節點添加請求中的訊息的內容和與訊息相關聯的順序達成共識。就節點添加請求中的訊息的內容和與訊息相關聯的順序達成共識的意義在於,如果包含在預準備訊息中的訊息至少包括兩個節點添加訊息,例如分別添加節點m和節點n,則可以通過主節點來固定訊息的內容和與訊息相關聯的順序以用於共識驗證。隨後,節點m和節點n在不同共識節點的本地節點列表中將具有相同的序號。也就是說,將不會出現這種情況:在共識節點的本地節點列表中,節點m的編號為4,節點n的編號為5;而在另一共識節點的本地節點列表中,節點n的編號為4,而節點m的編號為5。
在一些實施例中,在S801之後,如前所述,至少Quorum的共識節點已針對包括節點添加的交易請求中的訊息的內容達成共識。此外,當前的共識節點可以在本地執行相應的合約。例如,當前的共識節點可以調用上述創始合約/系統合約,在諸如EVM的虛擬機器中執行創始合約/系統合約的調用中指定的方法,並輸入相應的參數。在一個示例中,輸入參數可以包括例如待添加節點的標識、待添加節點的IP位址、待添加節點的埠號等。在執行合約期間,當前共識節點可以基於本地節點列表中的當前共識節點將待添加節點的標識添加到清單的尾部,並對其順序編號。這樣,至少由Quorum的當前共識節點維護的共識節點清單具有要以相同方式順序添加的節點的相關資訊。
在一些實施例中,如上所述,當前共識節點可以在本地維護共識節點列表,即上述本地節點清單,其記錄當前區塊鏈網路中所有共識節點的基本資訊。在一個示例中,基本資訊可以包括例如以下中的一項或多項:共識節點標識、IP位址、埠號等。其中,可以在本地節點清單中對共識節點順序編號。共識節點可以具有標識(ID),其可以是唯一地標識節點的標識,例如節點的公開金鑰、IP位址+埠號等。在某些區塊鏈項目中,共識節點清單可以在邏輯上存在於世界狀態。以乙太坊、紡布克(Fabric)和聯盟區塊鏈為例,每個節點在本地維護世界狀態,其中所有帳戶的最新狀態可用。例如,在乙太坊中,節點可以基於區塊中的狀態樹、交易樹和收據樹的內容來維護所有帳戶的最新狀態。
在一些實施例中,由於共識節點已經施行了數個共識,因此理論上,在當前共識節點之間已經維護了共識節點列表的一致性。例如,當前共識節點a、b、c和d的各自世界狀態中儲存有本地節點清單,並且儲存在各個節點a、b、c和d的本地節點列表中的當前共識節點為四個節點a、b、c和d,並且順序為a-b-c-d。然後,a、b、c和d的編號分別為0、1、2和3。這樣,對於添加的節點m,每個當前共識節點基於在本地維護的共識節點列表來施行S801,並且當前共識節點的本地節點列表中的節點包括節點a、b、c、d和m,總共五個節點,並且對節點m配置了相同的序號(例如4)。
在一些實施例中,在執行合約期間,除了上述當前共識節點基於本地節點列表中的當前節點,將待添加節點的標識添加到清單的尾部、並對節點順序編號之外,當前共識節點可以按照指定屬性對包括待添加節點的所有共識節點進行重新排序。例如,當前共識節點在諸如EVM的虛擬機器中執行在創始合約/系統合約中指定的方法,該方法定義了根據屬性對本地節點清單中的所有節點進行重新排序。例如,當前節點a、b、c和d的各自世界狀態中儲存有本地節點清單,而儲存在各個節點a、b、c和d的本地節點列表中的當前共識節點是a、b、c、d四個節點,並且順序為a-b-c-d。然後,a、b、c和d的編號分別為0、1、2和3。這樣,對於添加的節點m,每個當前共識節點基於在本地維護的共識節點列表來施行S801,並且當前共識節點在本地節點列表中的節點包括a、b、c、d、m,總共五個節點。例如,創始合約/系統合約中的方法是根據指定的屬性公開金鑰對包括待添加節點的所有共識節點重新排序,即,將公開金鑰作為字串來排序。例如,隨著從最高位以及持續到最低位的比較,重新排序後的結果為a-b-m-c-d。因此,a、b、m、c和d的編號分別為0、1、2、3和4。可以看出,新添加的節點m的編號為2,並且當前節點c和d的編號分別從2變為3和從3變為4。
S803包括待添加節點同步區塊鏈中的區塊資料。
在一些實施例中,照此,待添加節點加入到區塊鏈網路中並成為其中的一個節點。如果待添加節點加入到區塊鏈網路中並成為共識節點,即,後續參與共識驗證處理,則待添加節點可能需要獲得區塊鏈的所有區塊資料以及包括區塊鏈網路中的所有共識節點的列表。當待添加節點獲得區塊鏈的所有區塊資料時,可以在本地狀態機中按從創始區塊到最新區塊的循序執行每個交易,從而更新本地世界狀態。由於待添加節點執行的從創始區塊到最新區塊的交易與由其他共識節點執行的從創始區塊到最新區塊的交易相同,因此待添加節點的世界狀態可以與其他共識節點的世界狀態保持一致。這樣,待添加節點成為共識節點後,待添加節點可以與其他當前節點一樣處於相同的初始狀態以施行後續的交易,並將其世界狀態與其他當前節點的世界狀態保持一致。
在一些實施例中,為了獲得區塊鏈的所有區塊資料,待添加節點可以向一些或所有當前節點廣播同步請求以從當前節點獲得區塊。在一個實施例中,待添加節點可以向當前節點發送同步請求,以從當前節點獲得所有區塊資料。
此外,在某些實施例中,為了實現高效率,類似於P2P傳播原理,待添加節點可以向不同的當前節點廣播用於獲得不同區塊的同步請求,並且同步請求的總和為要獲得的所有區塊。例如,共有從0到9十個區塊,並且待添加節點可以向當前節點1請求獲得區塊0-3,向當前節點2請求獲得區塊4-6,以及向當前節點3請求獲得區塊7-10。這樣,在待添加節點從不同的當前節點獲得了不同的區塊之後,可以組成所有區塊。
在一些實施例中,所有區塊一般包括從創始區塊到新產生的區塊的每個區塊。待添加節點可以使用檢查點訊息來確定是否完成了區塊的同步。
在一些實施例中,在前述PBFT三個階段處理中,當副本發送訊息或接收由其他節點發送的訊息(包括預準備、準備、提交訊息)時,每個副本在副本的本機存放區器的訊息日誌中進行記錄。隨著PBFT的進行,日誌將佔用大量儲存空間。因此,為了節省記憶體空間,需要施行垃圾回收,即,當副本完成提議的執行時清除日誌。一種方式是,每當副本執行提議時,副本就會向其他節點廣播,以就是否可以清除日誌而達成全網共識。每個副本在接收到廣播後也向其他副本廣播。如果收到Quorum的不同節點的確認,則這些節點將刪除本地日誌中與提議對應的訊息記錄。另一種方式是,如果副本執行K個提議,並向其他節點廣播以就是否可以清除日誌達成全網共識。每個副本在接收到廣播後也向其他副本廣播。如果接收到Quorum的不同節點的確認,則這些節點將刪除本地日誌中與K個提議相對應的訊息記錄。以上刪除日誌訊息是格式為<檢查點(CHECKPOINT),n,d,i>的檢查點訊息。其中n是當前節點期望保留的最小序號,d是期望保留的訊息摘要,而i是發出檢查點訊息的副本編號。副本發出的檢查點訊息和接收到的檢查點訊息均記錄到訊息日誌中。如果副本i從不同節點接收到Quorum-1個有效的檢查點訊息和副本自身發送的檢查點訊息,則日誌中針對<n,d>的檢查點訊息達到了Quorum,然後清除n之前的所有訊息(包括預準備、準備、提交訊息,還可以包括檢查點訊息)。
在一些實施例中,可以通過使用檢查點訊息來確定上述待添加節點是否已經完成了區塊資料的同步。在一個示例中,待添加節點可以接收不同節點發送的Quorum-1個有效的檢查點訊息,其中n與待添加節點同步區塊鏈資料的最大的n一致,可以確定完成了區塊資料的同步。
此外,在一些實施例中,檢查點訊息還可以直接指示當前的最新區塊號。待添加節點可以接收到不同節點發送的Quorum-1個有效的檢查點訊息,其中指定的當前最新區塊號與待添加節點已同步到的區塊中的最大區塊號一致,可以確定所有區塊的同步已完成。
在一些實施例中,待添加節點可以替代地向其他節點發送查詢當前最大區塊號的請求,並通過發現從大多數節點回饋回來的相同的最大區塊號與最大的本地區塊號一致來確定完成了區塊資料的同步。
在一些實施例中,S801與S803沒有嚴格的順序,並且可以非同步地或並行地執行。
S805包括當前共識節點來施行視圖改變。
在S801,當前共識節點執行用於添加節點的交易後,當前共識節點可以更新本地節點列表。在當前視圖中,參與共識驗證的原始節點及其順序沒有改變。這樣,當前共識節點施行了添加節點的交易後,它們可以檢測到本地共識節點列表中共識節點的數量與當前視圖中共識節點的數量不一致,或者檢測到本地共識節點清單中的共識節點標識與當前視圖中共識節點標識不一致。因此,當前共識節點可以發起視圖改變。
在一些實施例中,待添加節點已經同步區塊鏈的區塊鏈資料後,節點可以向區塊鏈網路廣播用於發起視圖改變的訊息,指示待添加節點已經完成同步,具有加入到區塊鏈網路並充當共識節點的能力,並請求發起視圖改變。因此,當前共識節點可以在接收到訊息後發起視圖改變處理。
在一些實施例中,視圖改變處理中的R(即視圖改變處理中的副本數)是包括待添加節點的共識節點的總數,即,本地節點列表中包括待添加節點的節點數。
在一些實施例中,類似於前述,當前共識節點可以向其他副本節點廣播訊息<視圖改變,v+1,n,C,P,i>,其中n是最新的穩定檢查點的數量,C是2f+1個經驗證的檢查點訊息的集合,以及P是當前副本節點尚未完成處理的預準備和準備訊息集。
在一些實施例中,假設當前節點包括節點0、1、2和3,並且待添加節點是節點4。節點0是例如PBFT中的主節點,而節點1、2和3是例如PBFT中的備份節點。可以通過p=(v)mod |R|來計算新的主節點編號。例如,如果p=1,則新的主節點是節點b。這裡,R是的本地節點列表中包括待添加節點的節點數。例如,總共有四個當前共識節點,分別編號為0、1、2和3。每個當前共識節點在本地節點清單中記錄了四個節點0、1、2和3的編號。在這種情況下,R=4。在執行S801至S805的示例中,每個當前共識節點可以基於本地節點列表中已經存在的節點的編號對待添加節點順序編號,即,可以將待添加節點順序編號為4。在這種情況下,R變為5。如上所述,視圖改變處理中的視圖編號增加,即,從v增加到v+1。
在一些實施例中,當在S801中調用創始合約/系統合約時,調用的方法為添加節點的方法。共識驗證完成後,當前共識節點執行用於添加節點的交易,並基於本地節點列表中已有的共識節點的編號對待添加節點進行編號。可以在本地節點列表中將添加的節點初始化為預設的未啟動狀態(例如,處於未啟動狀態)。此外,待添加節點可以嘗試通過發起交易請求來啟動其自身,並且當前共識節點也可以在達成共識之後通過執行相應的交易來將新添加的節點從未啟動狀態改變為啟動狀態。
這樣,在S803與S805之間,方法還包括:待添加節點同步區塊鏈中的區塊資料後,待添加節點向區塊鏈網路發送用於啟動節點的交易請求,並且當前共識節點施行共識驗證後,執行用於啟動節點的交易請求。
在一些實施例中,在待添加節點完成所有區塊資料的同步之後,可以將用於啟動節點的交易請求發送到區塊鏈網路。在一個示例中,待添加節點可以通過其自身的帳戶向區塊鏈網路發送用於啟動節點的交易請求。類似於前述的用於添加節點的交易請求,用於啟動節點的交易請求也可以是調用合約的交易。相應地,用於啟動節點的方法可能已經存在於創始合約/系統合約中。用於啟動節點的交易請求可以指示調用的創始合約/系統合約中的方法,並且可以包括諸如節點標識、節點IP位址、節點埠號等的參數。
在一些實施例中,類似地,可以將用於啟動節點的交易請求傳播到基於底層點對點(P2P)網路的區塊鏈網路中的每個共識節點。當前共識節點可以發起對用於啟動節點的交易請求的共識驗證。以諸如PBFT的具有主節點的共識演算法為例,第一當前共識節點可以是主節點,並且可以發起對用於包括用於啟動節點的交易請求的交易請求的共識驗證處理,即,主要包括上圖4中的預準備、準備和提交處理。
在一些實施例中,在完成共識驗證之後,區塊鏈網路中的至少Quorum的共識節點在本地具有用於添加節點的交易請求中的訊息內容,並且達成了共識。此外,當前共識節點可以在本地調用相應的合約以執行。例如,當前共識節點可以調用上述創始合約/系統合約,在諸如EVM的虛擬機器中執行在調用的創始合約/系統合約中指定的方法,並輸入相應的參數。在一個示例中,輸入的參數包括上述節點標識、節點IP位址、節點埠號等。在合約執行期間,當前共識節點在本地節點清單中將處於未啟動狀態的節點的狀態配置為啟動。另外,當前共識節點檢測到本地共識節點列表中的啟動共識節點的數量與當前視圖中的啟動共識節點的數量不一致,或者檢測到本地共識節點列表中啟動共識節點的標識與當前視圖中啟動共識節點的標識不一致。因此,當前共識節點可以發起視圖改變。
在一些實施例中,用於啟動節點的交易請求將在通過共識驗證之後形成新的區塊(區塊還可包括除用於啟動節點的交易以外的交易)。在共識驗證之後,新產生的區塊至少存在於Quorum的當前共識節點上,並且不存在於新啟動節點(即,剛添加的節點)中。這是因為剛啟動節點在啟動之前沒有參與共識驗證。因此,在S801之後,待添加節點可以繼續向一些或所有當前節點發送同步請求,從而從當前節點獲得區塊。這樣,待添加節點可以獲得包含用於啟動節點的交易請求的區塊。
S807包括:在視圖改變完成之後,節點參與共識驗證。
在一些實施例中,在視圖改變完成之後,包括待添加節點的每個共識節點在本地具有相同的節點編號列表並且具有相同的區塊資料,從而待添加節點可以參與共識驗證,即,與當前共識節點共同施行共識驗證。這樣,節點添加處理完成。
方法800可以進一步分解為由維護區塊鏈的區塊鏈網路的當前共識節點來施行的方法900(圖9A)和由待添加到區塊鏈網路中的節點來施行的方法910(圖9B)。
圖9A和圖9B示出了根據各種實施例的用於在區塊鏈網路中添加節點的方法的流程圖。圖9A示出了由維護區塊鏈的區塊鏈網路的當前共識節點來施行的步驟,並且步驟可以被稱為方法900。圖9B示出了由待添加到區塊鏈網路中的節點來施行的步驟,並且步驟可以被稱為方法910。
在區塊鏈網路中添加節點可以至少包括以下實施例。在一些實施例中,待添加節點可以是節點添加之前的區塊鏈網路的未啟動共識節點,並且通過節點添加,未啟動共識節點成為區塊鏈網路的啟動共識節點(即,區塊鏈網路的新共識節點)。未啟動共識節點可能不參與共識驗證,並且因此可能是非共識節點。在一些實施例中,待添加節點在節點添加之前可能不是區塊鏈網路的一部分,並且通過節點添加,節點加入到區塊鏈網路中成為啟動共識節點。啟動共識節點可以參與共識驗證。
參考圖9A,方法900可以由用於在區塊鏈網路中添加例如區塊鏈網路的當前共識節點(例如,圖1-3的區塊鏈節點、圖7或圖10的當前共識節點)的節點的設備、裝置或系統來施行。當前共識節點可以是在節點添加之前的現有共識節點。當前共識節點可以是基於PBFT的區塊鏈網路的主節點或備份節點。可以由包括各種硬體機器和/或軟體的系統或設備(例如,電腦、伺服器)來實施當前共識節點。例如,系統或設備可以包括一個或多個處理器以及一個或多個非暫態電腦可讀儲存媒介(例如,一個或多個記憶體),電腦可讀儲存媒介耦接到一個或多個處理器並且配置有可由一個或多個處理器執行以使得系統或設備(例如,處理器)施行方法900的指令。
下面呈現的方法900的操作旨在說明。取決於實施方式,方法900可以包括以各種順序或並行施行的附加的、更少的或替代的步驟。下面例如方塊S903-S905的一個或多個步驟可以是可選的。方法900的更多細節可以參考圖1至圖8和圖10以及相關的描述。參考圖1至圖8和圖10描述的用於在區塊鏈網路中添加節點的步驟被包括在方法900中。
方塊S901包括:區塊鏈網路的當前共識節點獲得包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易。在一些實施例中,第一交易被配置為調用部署在由區塊鏈網路維護的區塊鏈中的區塊鏈合約。在一些實施例中,區塊鏈合約包括創始合約或系統合約。
在一些實施例中,當前共識節點獲得第一交易包括:從用戶端設備或控制器的命令控制台獲得第一交易。
方塊S902包括:回應於第一交易的共識驗證成功而執行第一交易,並基於區塊鏈網路中的多個當前共識節點的編號在節點列表中對節點編號。在一些實施例中,當前共識節點在本地維護節點列表,節點列表包括以下一項或多項:共識節點標識、共識節點IP位址和共識節點埠號;並且在節點清單中對多個共識節點順序編號。在一些實施例中,節點列表處於由區塊鏈網路維護的區塊鏈的世界狀態。
在一些實施例中,基於區塊鏈網路中的多個當前共識節點的編號在節點列表中對節點編號包括:基於節點列表中的多個共識節點的編號,將節點的標識添加到節點清單的尾部,並對節點順序編號;或者根據節點屬性在節點清單中將多個共識節點和所述節點重新排序。
方塊S903包括:從節點獲得包括用於啟動節點的第二請求的第二交易。
方塊S904包括:對第二交易施行共識驗證。
方塊S905包括:回應於對第二交易的共識驗證成功,執行用於啟動節點的第二交易。
方塊S906包括:施行視圖改變以使節點作為區塊鏈網路的新共識節點參與未來的共識驗證。在一些實施例中,視圖改變中的副本數是包括該節點的共識節點的總數。
在一些實施例中,施行視圖改變包括回應於檢測到以下任何條件而發起視圖改變:節點列表中共識節點的數量與當前視圖中共識節點的數量不一致;以及節點清單中共識節點標識與當前視圖中共識節點標識不一致。
在一些實施例中,施行視圖改變包括:回應於接收到由節點廣播的、用於發起視圖改變的訊息,而發起視圖改變。
在一些實施例中,施行視圖改變包括回應於檢測到以下任何條件而發起視圖改變:節點列表中啟動共識節點的數量與當前視圖中啟動共識節點的數量不一致;以及節點清單中啟動共識節點的標識與當前視圖中的啟動共識節點的標識不一致。
參考圖9B,可以由用於在區塊鏈網路中添加例如待添加到區塊鏈網路中的節點(例如,圖7或圖10的待添加節點)的節點的設備、裝置或系統來施行方法910。可以添加節點以使其成為基於PBFT的區塊鏈網路的主節點或備份節點。
可以由包括各種硬體機器和/或軟體的系統或設備(例如,電腦、伺服器)來實施待添加節點。例如,系統或設備可包括一個或多個處理器以及一個或多個非暫態電腦可讀儲存媒介(例如,一個或多個記憶體),電腦可讀儲存媒介耦接到一個或多個處理器並且配置有可由一個或多個處理器執行以使得系統或設備(例如,處理器)施行方法910的指令。
下面呈現的方法910的操作旨在說明。取決於實施方式,方法910可以包括以各種順序或並行施行的附加的、更少的或替代的步驟。下面例如方塊S914-S915的一個或多個步驟可以是可選的。方法910的更多細節可以參考圖1至圖8和圖10以及相關的描述。參考圖1至圖8和圖10描述的在區塊鏈網路中添加節點的步驟被包括在方法910中。
方塊S911包括:待添加到區塊鏈網路中的節點同步區塊鏈以獲得第一本地區塊鏈拷貝,其中,區塊鏈網路維護區塊鏈並且包括多個當前共識節點。在一些實施例中,所述同步區塊鏈包括:將一個或多個同步請求分別發送到多個當前共識節點中的一個或多個,以獲得區塊鏈中的資料。
在一些實施例中,在所述同步區塊鏈之前,方法還包括:將包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易發送到多個當前共識節點中的一個或多個,以供多個當前共識節點對第一交易施行共識驗證,並回應於對第一交易的共識驗證成功而將第一交易添加到區塊鏈。
在一些實施例中,在所述同步區塊鏈之前,方法還包括:多個當前共識節點之一將包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易發送到多個當前共識節點中的一個或多個,以供多個當前共識節點對第一交易施行共識驗證,並回應於對第一交易的共識驗證成功而將第一交易添加到區塊鏈。
方塊S912包括:回應於確定第一本地區塊鏈拷貝包括將節點添加為區塊鏈網路的新共識節點的第一請求,向多個當前共識節點中的一個或多個發送包括用於啟動節點的第二請求的第二交易。在一些實施例中,向多個當前共識節點中的一個或多個發送包括用於啟動節點的第二請求的第二交易包括:向多個當前共識節點中的一個或多個發送包括用於啟動節點的第二請求的第二交易,以供多個當前共識節點對第二交易施行共識驗證,並回應於對第二交易的共識驗證成功而執行用於啟動節點的第二交易。
在一些實施例中,將節點添加為區塊鏈網路的新共識節點的第一請求包括:將節點從區塊鏈網路的未啟動共識節點改變為區塊鏈網路的啟動共識節點的請求。
在一些實施例中,將節點添加為區塊鏈網路的新共識節點的第一請求包括:將節點包括到區塊鏈網路中作為新共識節點的請求。
方塊S913包括:在將第二交易添加到區塊鏈中之後,將第一本地區塊鏈拷貝與區塊鏈同步以獲得第二本地區塊鏈拷貝。
方塊S914包括:在多個當前共識節點針對區塊鏈施行視圖改變後,將第二本地區塊鏈拷貝與區塊鏈同步以獲得第三本地區塊鏈拷貝。
方塊S915包括:作為區塊鏈網路的新共識節點,參與共識驗證。在一些實施例中,將節點添加為區塊鏈網路的新共識節點的處理不會中斷區塊鏈網路的運行。
在一些實施例中,方法進一步包括:通過檢查點訊息來確定第一本地區塊鏈拷貝、第二本地區塊鏈拷貝或第三本地區塊鏈拷貝的同步已經完成。
在一些實施例中,方法進一步包括:向多個當前共識節點中的至少一些當前共識節點發送用於查詢當前最大區塊號的請求,並通過發現從多個當前共識節點中的至少一些當前共識節點返回的相同的最大區塊號與最大的本地區塊號相一致來確定第一本地區塊鏈拷貝、第二本地區塊鏈拷貝或第三本地區塊鏈拷貝的同步已完成。
圖10示出了根據各種實施例的用於實施區塊鏈網路的方塊圖。如所示的,在節點添加之前,區塊鏈網路可以包括多個當前共識節點1003(例如,1003a、1003b、1003c、1003d),並且待添加節點1002將被添加到區塊鏈網路中。當前共識節點中的任何一個可以是用於接收第一交易的第一當前共識節點。這裡,節點1003a被指定為第一當前共識節點。在節點添加完成之後,區塊鏈網路可以包括節點1002、1003a、1003b、1003c和1003d,所有都作為共識節點。在一些實施例中,區塊鏈網路可以基於PBFT,並且在每個視圖中,其節點之一可以是主節點而剩餘的節點是備份節點。
在一些實施例中,區塊鏈系統包括待添加節點1002和多個當前共識節點1003。第一當前共識節點1003a被配置為獲得用於添加節點1002的交易請求並對用於將節點1002添加到區塊鏈網路的交易請求發起共識驗證。在共識驗證成功後,當前共識節點1003各自被配置為執行添加節點1002的交易,並基於當前共識節點的編號在本地節點列表中對節點1002編號。待添加節點1002被配置為同步區塊鏈中的區塊資料。當前共識節點1003被配置為用於施行視圖改變。節點1002被配置為在視圖改變完成之後,參與針對區塊鏈的共識驗證。
在一些實施例中,用於添加節點的交易請求包括用於調用合約的交易請求。在一些實施例中,所調用的合約包括創始合約或系統合約。在一些實施例中,第一當前共識節點1003a獲得用於添加節點的交易請求包括:第一當前共識節點1003a從用戶端設備獲得用於添加節點的交易請求;或者第一當前共識節點1003a從控制器的命令控制台獲得用於添加節點的交易請求。
在一些實施例中,當前共識節點1003各自被配置為在本地維護節點列表,節點列表包括以下一項或多項:共識節點標識、共識節點IP位址和共識節點埠號,其中,在節點清單中對共識節點順序編號。在一個實施例中,由共識節點在本地維護的節點清單處於世界狀態。
在一些實施例中,為了執行用於添加節點的交易並基於本地節點清單中的當前共識節點的編號對節點編號,當前共識節點1003各自被配置為執行用於添加節點的交易,並基於本地節點列表中的當前共識節點將待添加節點的標識添加到清單的尾部,並對待添加節點順序編號;或被配置為執行用於添加節點的交易,並根據指定的屬性對包括待添加節點的所有共識節點重新排序。
在一些實施例中,為了同步區塊鏈中的區塊資料,待添加節點1002被配置為向當前節點發送同步請求以從當前節點獲得所有區塊資料;或配置為向不同的當前節點發送同步請求以獲得不同的區塊。
在一些實施例中,待添加節點1002被配置為通過檢查點訊息來確定同步區塊資料已經完成;或配置為向其他節點發送用於查詢當前最大區塊號的請求,並通過發現從大多數節點回饋的相同的最大區塊號與最大本地區塊號一致來確定同步區塊資料已完成。
在一些實施例中,任何當前共識節點1003可以被配置為回應於檢測到以下任何條件而發起視圖改變:本地共識節點列表中共識節點的數量與當前視圖中共識節點的數量不一致;以及本地共識節點清單中共識節點標識與當前視圖中共識節點標識不一致。
在一些實施例中,任何當前共識節點1003可以被配置為回應於接收到由待添加節點廣播的、用於發起視圖改變的訊息而發起視圖改變。
在一些實施例中,待添加節點1002同步區塊鏈中的區塊資料後,待添加節點1002被配置為向區塊鏈網路發送用於啟動節點的交易請求,並且當前共識節點1003被配置為在施行共識驗證之後執行用於啟動節點的交易請求。
在一些實施例中,任何當前共識節點1003可以被配置為回應於檢測到以下任何條件而發起視圖改變:本地共識節點列表中啟動共識節點的數量與當前視圖中啟動共識節點的數量不一致;以及本地共識節點清單中啟動共識節點的標識與當前視圖中啟動共識節點的標識不一致。
在一些實施例中,視圖改變中的副本數是包括待添加節點的共識節點的總數。
圖11A示出了根據一些實施例的用於在區塊鏈網路中添加節點的裝置1100的方塊圖。裝置1100可以是節點(例如,圖1-3的區塊鏈節點、圖7或圖10的當前共識節點)的一個或多個元件的實施示例。節點可以是基於PBFT的區塊鏈網路的主節點或備份節點。方法800和方法900的一個或多個步驟可以由裝置1100實施。
裝置1100可以在包括一個或多個處理器和一個或多個非暫態電腦可讀儲存媒介(例如,一個或多個記憶體)的電腦系統或設備中實施,一個或多個非暫態電腦可讀儲存媒介耦接到一個或多個處理器並且配置有可由一個或多個處理器執行以使得系統或設備(例如,處理器)施行上述方法(例如,方法800或900)的步驟的指令。裝置1100可以包括與指令(例如,軟體指令)相對應的各種單元/模組。
在一些實施例中,裝置1100可以包括:第一獲得模組1101,獲得包括用於將節點添加為區塊鏈網路的新共識節點的第一請求的第一交易;第一執行模組1102,回應於對第一交易的共識驗證成功,執行第一交易並基於區塊鏈網路中的多個當前共識節點的編號在節點列表中對節點編號;第二獲得模組1103,從節點獲得包括用於啟動節點的第二請求的第二交易;第一施行模組1104,對第二交易施行共識驗證;第二執行模組1105,回應於對第二交易的共識驗證成功,執行用於啟動節點的第二交易;以及第二施行模組1106,施行視圖改變以使節點作為區塊鏈網路的新共識節點參與未來的共識驗證。一個或多個模組(例如,第二獲得模組1103、第一施行模組1104、第二執行模組1105)是可選的。
圖11B示出了根據一些實施例的用於在區塊鏈網路中添加節點的裝置1110的方塊圖。裝置1110可以是待添加到區塊鏈網路中的節點(例如,圖7或圖10的待添加節點)的一個或多個元件的實施的示例。可以添加節點以使其變為基於PBFT的區塊鏈網路的主節點或備份節點。方法800和方法910的一個或多個步驟可以由裝置1110實施。
裝置1110可以在包括一個或多個處理器以及一個或多個非暫態電腦可讀儲存媒介(例如,一個或多個記憶體)的電腦系統或設備中實施,一個或多個非暫態電腦可讀儲存媒介耦接至一個或多個處理器並配置有可由一個或多個處理器執行以使系統或設備(例如,處理器)施行上述方法(例如,方法800或910)的步驟的指令。裝置1110可以包括與指令(例如,軟體指令)相對應的各種單元/模組。
在一些實施例中,裝置1110可以包括:第一同步模組1111,同步區塊鏈以獲得第一本地區塊鏈拷貝,其中,區塊鏈網路維護區塊鏈並且包括多個當前共識節點;發送模組1112,回應於確定第一本地區塊鏈拷貝包括將節點添加為區塊鏈網路的新共識節點的第一請求,將包括用於啟動節點的第二請求的第二交易發送到多個當前共識節點中的一個或多個;第二同步模組1113,在將第二交易添加到區塊鏈後,將第一本地區塊鏈拷貝與區塊鏈同步以獲得第二本地區塊鏈拷貝;以及第三同步模組1114,在多個當前共識節點針對區塊鏈施行視圖改變後,將第二本地區塊鏈拷貝與區塊鏈同步以獲得第三本地區塊鏈拷貝;以及參與模組1115,作為區塊鏈網路的新共識節點參與共識驗證。一個或多個模組(例如,第三同步模組1114、參與模組1115)是可選的。
這裡描述的技術可由一個或多個專用計算設備實現。專用計算設備可以是桌上型電腦系統、伺服器電腦系統、可擕式電腦系統、手持設備、網路設備或包含硬連線和/或程式邏輯以實現這些技術的任何其他設備或設備的組合。專用計算設備可以被實現為個人電腦、筆記型電腦、蜂巢式電話、照相電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件設備、遊戲控制台、平板電腦、可穿戴設備或其組合。計算設備通常可由作業系統軟體控制和協調。傳統的作業系統控制和調度用於執行的電腦程序,施行記憶體管理,提供檔案系統、網路、I/O服務,以及提供使用者介面功能,例如圖形化使用者介面(“GUI”)等。這裡描述的各種系統、裝置、儲存媒介、模組和單元可以在專用計算設備或者一個或多個專用計算設備的一個或多個計算晶片中實現。在一些實施例中,這裡描述的指令可以在專用計算設備上的虛擬機器中實現。當被執行時,指令可以促使專用計算設備施行本文描述的各種方法。虛擬機器可以包括軟體、硬體或其組合。
圖12示出了其中可以實施本文描述的任何實施例的電腦系統的方塊圖。電腦系統1200可以在圖1-7、圖10、圖11A和圖11B中所示的環境、系統或設備的任何元件中實施。可以通過電腦系統1200的一個或多個實施方式來施行圖8、圖9A和圖9B所示的一個或多個方法。
電腦系統1200可以包括匯流排1202或用於通信資訊的其他通信機制、與匯流排1202耦接的用於處理資訊的一個或多個硬體處理器1204。硬體處理器1204可以是例如一個或多個通用微處理器。
電腦系統1200還可包括耦接到匯流排1202的、用於儲存資訊和可由處理器1204執行的指令的主記憶體1206,例如隨機存取記憶體(RAM)、快取記憶體和/或其他動態儲存裝置設備。主記憶體1206還可以用於在可由(多個)處理器1204執行的指令的執行期間儲存臨時變數或其他中間資訊。當儲存在可由(多個)處理器1204存取的儲存媒介中時,這樣的指令將電腦系統1200呈現到為被定制以施行指令中指定的操作的專用機器中。電腦系統1200可以進一步包括唯讀記憶體(ROM)1208或耦接到匯流排1202的用於儲存用於處理器1204的靜態資訊和指令的其他靜態儲存設備。可以提供例如磁片、光碟、USB拇指驅動器(快閃記憶體驅動器)等的儲存設備1210並將其耦接到匯流排1202以儲存資訊和指令。
電腦系統1200可使用定制的硬接線邏輯、一個或多個ASIC或FPGA、韌體和/或程式邏輯,其與電腦系統結合而使得電腦系統1200成為專用機器或將電腦系統1200程式設計成為專用機器,來實現本文描述的技術。根據一個實施例,本文描述的操作、方法和過程由電腦系統1200回應於處理器1204執行主記憶體1206中包含的一個或多個指令的一個或多個序列來施行。這些指令可以從諸如儲存設備1210的另一儲存媒介讀取到主記憶體1206中。執行主記憶體1206中包含的指令序列可使得處理器1204施行本文描述的處理步驟。在替代實施例中,可以使用硬連線電路代替軟體指令或與軟體指令組合。
主記憶體1206、ROM 1208和/或儲存設備1210可包括非暫時性儲存媒介。這裡使用的術語“非暫時性媒介”和類似術語是指儲存促使機器以特定方式操作的資料和/或指令的媒介,所述媒介不包括暫時性信號。這種非暫時性媒介可以包括非揮發性媒介和/或揮發性媒介。例如,非揮發性媒介包括光碟或磁片,諸如儲存設備1210。揮發性媒介包括動態儲存裝置器,諸如主記憶體1206。常規形式的非暫時性媒介包括,例如,磁片、軟碟、硬碟、固態驅動器、磁帶或任何其他磁資料儲存媒介、CD-ROM、任何其他光學資料儲存媒介、具有孔圖案的任何物理媒介、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他記憶體晶片或盒式磁帶以及它們的網路版本。
電腦系統1200可包括耦接到匯流排1202的網路介面1218。網路介面1218可為連接到一個或多個本地網路的一個或多個網路連結提供雙向資料通信耦合。例如,網路介面1218可以是整合式服務數位網路絡(ISDN)卡、纜線數據機、衛星數據機、或者向相應類型的電話線提供資料通信連接的數據機。作為另一示例,網路介面1218可以是區域網(LAN)卡以提供資料通信連接至相容的LAN(或與WAN通信的WAN組件)。還可以實現無線鏈路。在任何這種實施中,網路介面1218可發送和接收攜帶表示各種類型資訊的數位資料流程的電信號、電磁信號或光信號。
電腦系統1200可通過網路、網路連結和網路介面1218來發送訊息和接收包括程式碼的資料。網際網路示例中,伺服器可通過網際網路、ISP、本地網路和網路介面1218來傳送應用程式的請求代碼。
接收到的代碼可在接收時由處理器1204執行,和/或儲存在儲存設備1210或其他非揮發性記憶體中,用於以後執行。
前面部分中描述的每個處理、方法和演算法可以體現在由包括電腦硬體的一個或多個電腦系統或者電腦處理器執行的代碼模組中並且被其完全或部分自動化地實現。處理和演算法可以部分或全部地在專用電路中實現。
上述各種特徵和處理可彼此獨立地使用,或者可以各種方式組合。所有可能的組合和子組合都旨在落入本文的範圍內。另外,在一些實施方式中可以省略某些方法或處理框。本文描述的方法和處理也不限於任何特定順序,與其相關的方塊或狀態可以以適當的其他循序執行。例如,所描述的方塊或狀態可以以不同於具體公開的循序執行,或者多個方塊或狀態可以在單個方塊或狀態中組合。方塊或狀態的示例可以串列、並行或以某種其他方式執行。可以將方塊或狀態可以添加到所公開的實施例或從所公開的實施例中移除。這裡描述的系統和元件的示例可以與所描述的不同地被配置。例如,與所公開的實施例相比,可以添加、移除或重新佈置元件。
本文描述的方法的各種操作可以至少部分地由被臨時配置(例如,通過軟體)或被永久配置為執行相關操作的一個或多個處理器執行。無論是臨時配置還是永久配置,這樣的處理器可以構成處理器實現的引擎,所述處理器實現的引擎用於執行本文描述的一個或多個操作或功能。
類似地,這裡描述的方法可以至少部分地由處理器實現,其中特定處理器是硬體的示例。例如,所述方法的至少一些操作可以由一個或多個處理器或處理器實現的引擎執行。此外,一個或多個處理器還可操作以支持“雲端計算”環境中的相關操作的性能,或作為“軟體即服務”(SaaS)操作。例如,至少一些操作可以由一組電腦(作為包括處理器的機器的示例)執行,這些操作可以經由網路(例如,網際網路)經由一個或多個適當的介面(例如,應用程式介面(API))被存取。
某些操作的性能可以在處理器之間分配,不僅駐留在單個機器中,而且跨多個機器被部署。在一些實施例中,處理器或處理器實現的引擎可以位於單個地理位置(例如,在家庭環境、辦公室環境或伺服器群內)。在其他實施例中,處理器或處理器實現的引擎可以分佈在多個地理位置。
在本文中,多個實例可以實現作為單個實例所描述的元件、操作或結構。儘管一個或多個方法的各個操作被示出並描述為獨立的操作,但是可以同時執行一個或多個獨立的操作,並且不需要以所示的循序執行所述操作。在配置中作為獨立元件呈現的結構和功能可以實現為組合結構或元件。類似地,作為單個元件呈現的結構和功能可以實現為獨立的元件。這些和其他變化、修改、添加和改進都落入本文中的主題的範圍內。
儘管已經參考具體實施例描述了主題的概述,但是在不脫離本文的實施例的較寬範圍的情況下,可以對這些實施例進行各種修改和改變。具體實施方式不應被視為具有限制意義,並且各種實施例的範圍僅由所附申請專利範圍以及這些申請專利範圍所賦予的等同物的全部範圍限定。此外,這裡使用的相關術語(諸如“第一”、“第二”、“第三”等)不表示任何順序、高度或重要性,而是用於將一個元件與另一元件區分開。此外,術語“一”、“一個”和“多個”在本文中並不表示對數量的限制,而是表示存在至少一個所述的物品。另外,在本文中,“或”是包括性的而不是排他性的,除非另外明確指出或通過上下文另外指出。因此,在本文中,“A或B”表示“A、B或兩者”,除非另外明確指出或通過上下文另外指出。而且,“和”既是連詞又是數個,除非另外明確指出或通過上下文另外指出。因此,在本文中,“A和B”是指“A和B,共同地或分別地”,除非另外明確指出或通過上下文另外指出。
701~706:步驟 800:方法 S801~S807:步驟 900:方法 S901~S906:步驟 910:方法 S911~S915:步驟 1002:待添加節點 1003a:當前共識節點 1003b:當前共識節點 1003c:當前共識節點 1003d:當前共識節點 1100:用於在區塊鏈網路中添加節點的裝置 1101:第一獲得模組 1102:第一執行模組 1103:第二獲得模組 1104:第一施行模組 1105:第二執行模組 1106:第二施行模組 1110:用於在區塊鏈網路中添加節點的裝置 1111:第一同步模組 1112:發送模組 1113:第二同步模組 1114:第三同步模組 1115:參與模組 1200:電腦系統 1202:匯流排 1204:處理器 1206:主記憶體 1208:唯讀記憶體(ROM) 1210:儲存設備
[圖1]示出了根據各種實施例的用於創建區塊鏈合約的圖。
[圖2]示出了根據各種實施例的用於調用區塊鏈合約的圖。
[圖3]示出了根據各種實施例的用於創建和調用區塊鏈合約的圖。
[圖4]示出了用於實用拜占庭容錯(PBFT)演算法的流程圖。
[圖5]示出了用於在執行PBFT演算法的視圖改變之後進行恢復的流程圖。
[圖6]示出了用於執行PBFT演算法的視圖改變的流程圖。
[圖7]示出了根據各種實施例的用於在區塊鏈網路中添加節點的流程圖。
[圖8]示出了根據各種實施例的用於在區塊鏈網路中添加節點的方法的流程圖。
[圖9A]和[圖9B]示出了根據各種實施例的用於在區塊鏈網路中添加節點的方法的流程圖。
[圖10]示出了根據各種實施例的用於實施區塊鏈網路的方塊圖。
[圖11A]示出了根據一些實施例的用於在區塊鏈網路中添加節點的裝置的方塊圖。
[圖11B]示出了根據一些實施例的用於在區塊鏈網路中添加節點的裝置的方塊圖。
[圖12]示出了其中可以實施本文描述的任何實施例的示例性電腦系統的方塊圖。

Claims (26)

  1. 一種電腦實現的用於在區塊鏈網路中添加節點的方法,該方法由該區塊鏈網路中的當前共識節點執行,該方法包括:獲得包括用於將該節點添加為該區塊鏈網路的新共識節點的第一請求的第一交易;回應於對該第一交易的共識驗證成功,執行該第一交易,並基於該區塊鏈網路中的多個當前共識節點的編號在節點列表中對該節點編號,其中參與共識驗證的共識節點為啟動共識節點且其編號儲存在該節點列表中,以及該多個當前共識節點為多個啟動共識節點;從該節點,獲得包括用於啟動該節點的第二請求的第二交易;回應於對該第二交易的共識驗證成功,執行用於啟動該節點的該第二交易;以及施行視圖改變以使該節點作為該區塊鏈網路的該新共識節點參與未來的共識驗證;其中,該施行視圖改變包括回應於檢測到以下任何條件而發起該視圖改變:該節點列表中共識節點的數量與當前視圖中共識節點的數量不一致;以及該節點列表中共識節點標識與該當前視圖中共識節點標識不一致。
  2. 根據請求項1所述的方法,其中,該第一 交易被配置為調用部署在由該區塊鏈網路維護的區塊鏈中的區塊鏈合約。
  3. 根據請求項2所述的方法,其中,該區塊鏈合約包括創始合約或系統合約。
  4. 根據請求項1-3中任一項所述的方法,其中,該當前共識節點獲得該第一交易包括:從用戶端設備或控制器的命令控制台獲得該第一交易。
  5. 根據請求項1-3中任一項所述的方法,其中:該當前共識節點在本地維護該節點列表,該節點列表包括以下一項或多項:共識節點標識、共識節點IP位址和共識節點埠號;以及在該節點列表中對該多個共識節點順序編號。
  6. 根據請求項1-3中任一項所述的方法,其中,該節點列表處於由該區塊鏈網路維護的區塊鏈的世界狀態。
  7. 根據請求項1-3中任一項所述的方法,其中,基於該區塊鏈網路中的多個當前共識節點的編號在節點列表中對該節點編號,包括:基於該節點列表中的該多個共識節點的編號,將該節點的標識添加至該節點列表的尾部,並對該節點順序編號;或者根據節點屬性,在該節點列表中將該多個共識節點和 該節點重新排序。
  8. 根據請求項1-3中任一項所述的方法,其中,該施行視圖改變包括:回應於接收到由該節點廣播的、用於發起視圖改變的訊息,而發起該視圖改變。
  9. 根據請求項1所述的方法,其中,該施行視圖改變包括回應於檢測到以下任何條件而發起該視圖改變:該節點列表中啟動共識節點的數量與當前視圖中啟動共識節點的數量不一致;以及該節點列表中啟動共識節點的標識與該當前視圖中啟動共識節點的標識不一致。
  10. 根據請求項1所述的方法,其中,該視圖改變中的副本數為包括該多個當前共識節點及該節點的共識節點的總數。
  11. 一種用於在區塊鏈網路中添加節點的系統,包括:一個或多個處理器;和一個或多個電腦可讀記憶體,其耦接到該一個或多個處理器並且其上儲存有指令,該指令能夠由該一個或多個處理器執行以施行請求項1-10中任一項所述的方法。
  12. 一種用於在區塊鏈網路中添加節點的裝置,包括用於施行請求項1-10中任一項所述方法的多個模組。
  13. 一種非暫態電腦可讀儲存媒介,其配置 有能夠由一個或多個處理器執行以使得該一個或多個處理器施行請求項1-10中任一項所述方法的指令。
  14. 一種電腦實現的用於在區塊鏈網路中添加節點的方法,該方法由待添加到該區塊鏈網路中的該節點執行,該方法包括:將包括用於將該節點添加為該區塊鏈網路的新共識節點的第一請求的第一交易發送到多個當前共識節點中的一個或多個,以供該多個當前共識節點施行對該第一交易的共識驗證,並回應於對該第一交易的共識驗證成功而將該第一交易添加到該區塊鏈中,且基於該區塊鏈網路中的該多個當前共識節點的編號在節點列表中對該節點編號,其中該區塊鏈網路維護區塊鏈並且包括該多個當前共識節點,參與共識驗證的共識節點為啟動共識節點且其編號儲存在該節點列表中,以及該多個當前共識節點為多個啟動共識節點;同步該區塊鏈以獲得第一本地區塊鏈拷貝;回應於確定該第一本地區塊鏈拷貝包括用於將該節點添加為該區塊鏈網路的該新共識節點的該第一請求,將包括用於啟動該節點的第二請求的第二交易發送到該多個當前共識節點中的一個或多個;以及在將該第二交易添加到該區塊鏈後,將該第一本地區塊鏈拷貝與該區塊鏈同步以獲得第二本地區塊鏈拷貝;其中,該多個當前共識節點施行視圖改變以使該節點作為該區塊鏈網路的該新共識節點參與未來的共識驗證, 且該施行視圖改變包括回應於檢測到以下任何條件而發起該視圖改變:該節點列表中共識節點的數量與當前視圖中共識節點的數量不一致;以及該節點列表中共識節點標識與該當前視圖中共識節點標識不一致。
  15. 根據請求項14所述的方法,其中,該同步區塊鏈包括:將一個或多個同步請求分別發送到該多個當前共識節點中的一個或多個,以獲得該區塊鏈中的資料。
  16. 根據請求項14所述的方法,其中,將包括用於啟動該節點的第二請求的第二交易發送到該多個當前共識節點中的一個或多個,包括:將包括用於啟動該節點的該第二請求的該第二交易發送到該多個當前共識節點中的一個或多個,以供該多個當前共識節點施行對該第二交易的共識驗證,並回應於對該第二交易的共識驗證成功而執行用於啟動該節點的該第二交易。
  17. 根據請求項16所述的方法,還包括:在該多個當前共識節點針對該區塊鏈施行視圖改變後,將該第二本地區塊鏈拷貝與該區塊鏈同步以獲得第三本地區塊鏈拷貝。
  18. 根據請求項17所述的方法,還包括:作為該區塊鏈網路的該新共識節點參與共識驗證。
  19. 根據請求項17所述的方法,還包括:通過檢查點訊息來確定該第一本地區塊鏈拷貝或第二本地區塊鏈拷貝的同步已完成。
  20. 根據請求項17所述的方法,還包括:向該多個當前共識節點中的至少一些發送用於查詢當前最大區塊號的請求,並且通過發現從該多個當前共識節點中的該至少一些返回的相同的最大區塊號與最大本地區塊號一致來確定該第一本地區塊鏈拷貝或第二本地區塊鏈拷貝的同步已經完成。
  21. 根據請求項14所述的方法,其中:將該節點添加為該區塊鏈網路的該新共識節點的處理不會對該區塊鏈網路的運行造成任何中斷。
  22. 根據請求項14所述的方法,其中,將該節點添加為該區塊鏈網路的該新共識節點的該第一請求,包括:將該節點從該區塊鏈網路的未啟動共識節點改變為該區塊鏈網路的啟動共識節點的請求。
  23. 根據請求項14所述的方法,其中,將該節點添加為該區塊鏈網路的該新共識節點的該第一請求,包括:將該節點包括在該區塊鏈網路中作為該新共識節點的請求。
  24. 一種用於在區塊鏈網路中添加節點的系統,包括: 一個或多個處理器;和一個或多個電腦可讀記憶體,其耦接到該一個或多個處理器並且其上儲存有指令,該指令能夠由該一個或多個處理器執行以施行請求項14-23任一項所述的方法。
  25. 一種用於在區塊鏈網路中添加節點的裝置,包括用於施行請求項14-23中任一項所述方法的多個模組。
  26. 一種非暫態電腦可讀儲存媒介,配置有能夠由一個或多個處理器執行以使得該一個或多個處理器施行請求項14-23中任一項所述方法的指令。
TW109123385A 2019-09-05 2020-07-10 用於在區塊鏈網路中添加節點的系統和方法 TWI743881B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201910838736.9A CN110727731B (zh) 2019-09-05 2019-09-05 区块链网络中加入节点的方法和区块链系统
CN201910838736.9 2019-09-05
WOPCT/CN2019/109416 2019-09-30
PCT/CN2019/109416 WO2020011284A2 (en) 2019-09-05 2019-09-30 System and method for adding node in blockchain network

Publications (2)

Publication Number Publication Date
TW202118274A TW202118274A (zh) 2021-05-01
TWI743881B true TWI743881B (zh) 2021-10-21

Family

ID=69143330

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109123385A TWI743881B (zh) 2019-09-05 2020-07-10 用於在區塊鏈網路中添加節點的系統和方法

Country Status (6)

Country Link
US (2) US10693957B2 (zh)
EP (1) EP3688618B1 (zh)
CN (3) CN114401150B (zh)
SG (1) SG11202003887XA (zh)
TW (1) TWI743881B (zh)
WO (2) WO2020011284A2 (zh)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3596888B1 (en) 2019-03-18 2022-08-03 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
AU2019203861B2 (en) * 2019-03-18 2020-07-02 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
CN114401150B (zh) * 2019-09-05 2023-10-20 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统
CN110609872B (zh) * 2019-09-20 2021-03-05 北京海益同展信息科技有限公司 用于同步节点数据的方法和装置
JP6852776B1 (ja) * 2019-11-26 2021-03-31 ダイキン工業株式会社 ブロックチェーンシステム、プログラム及びネットワーク接続装置
CN114418574A (zh) * 2020-01-17 2022-04-29 厦门潭宏信息科技有限公司 一种共识和资源传输方法、设备及存储介质
CN111369358B (zh) * 2020-02-10 2023-09-12 杭州溪塔科技有限公司 一种区块链共识方法、装置和电子设备
JP2023517049A (ja) * 2020-03-04 2023-04-21 リュビデックス,エルエルシー 暗号データ入力ブロックチェーンデータ構造
CN111404928B (zh) * 2020-03-13 2021-07-06 电子科技大学 一种适用于实时交易场景的区块链节点共识方法
CN111046110B (zh) * 2020-03-16 2020-06-26 支付宝(杭州)信息技术有限公司 用于区块链系统的节点管理的方法、节点和计算设备
CN111447087B (zh) * 2020-03-23 2023-04-07 北京众享比特科技有限公司 一种动态组网的区块链配置方法
CN111444210B (zh) * 2020-03-26 2021-11-05 腾讯科技(深圳)有限公司 区块链共识节点管理方法、装置、设备以及存储介质
CN111461886B (zh) * 2020-04-01 2022-02-01 杭州溪塔科技有限公司 区块链上不依赖智能合约的系统配置的管理方法和装置
CN111507717B (zh) * 2020-04-20 2022-08-12 腾讯科技(深圳)有限公司 数据处理方法、装置、区块节点及计算机可读存储介质
CN111209346B (zh) * 2020-04-24 2020-07-28 腾讯科技(深圳)有限公司 一种区块链数据归档方法、装置和计算机可读存储介质
CN111596937B (zh) * 2020-05-14 2023-09-15 北京众享比特科技有限公司 一种区块链中节点的新特征同步生效的实现方法和系统
CN111786812B (zh) * 2020-05-27 2023-06-20 金蝶软件(中国)有限公司 节点管理方法、装置、计算机设备和存储介质
CN111382456B (zh) * 2020-06-01 2020-10-23 腾讯科技(深圳)有限公司 提案消息处理方法、装置、设备以及存储介质
CN111600965B (zh) * 2020-06-05 2023-10-27 支付宝(杭州)信息技术有限公司 区块链中的共识方法和系统
CN111698315B (zh) * 2020-06-09 2021-10-15 腾讯科技(深圳)有限公司 针对区块的数据处理方法、数据处理装置及计算机设备
CN112039964B (zh) * 2020-08-24 2022-01-04 大连理工大学 一种基于区块链的节点信誉共识方法
CN111930847B (zh) * 2020-09-16 2021-01-08 深圳壹账通智能科技有限公司 基于区块链的数据处理方法、装置及存储介质
CN112286945A (zh) * 2020-09-21 2021-01-29 杭州趣链科技有限公司 基于pbft算法的配置变更方法、系统、设备及介质
CN112202581A (zh) * 2020-09-24 2021-01-08 成都质数斯达克科技有限公司 群组加入方法、装置以及电子设备
CN112968967B (zh) * 2020-09-25 2023-05-19 支付宝(杭州)信息技术有限公司 区块同步方法及装置
CN112291318B (zh) * 2020-10-20 2022-11-11 杭州云象网络技术有限公司 一种区块链网络节点添加方法、系统、存储介质和装置
CN112182113B (zh) * 2020-10-23 2024-06-25 网易(杭州)网络有限公司 区块链共识方法、系统、电子设备及存储介质
CN112040015B (zh) * 2020-11-06 2021-02-12 腾讯科技(深圳)有限公司 一种共识节点列表生成方法及相关装置
CN112381649B (zh) * 2020-11-17 2024-06-18 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置及设备
CN112600874B (zh) * 2020-11-24 2023-03-31 成都质数斯达克科技有限公司 节点加入方法、装置、电子设备及可读存储介质
CN112564895B (zh) * 2020-11-26 2022-10-21 中国船舶工业系统工程研究院 基于区块链的无人艇集群可信组网方法、系统及存储介质
CN112200680B (zh) * 2020-12-03 2021-03-05 腾讯科技(深圳)有限公司 区块链节点管理方法、装置、计算机以及可读存储介质
CN112668998B (zh) * 2020-12-23 2023-12-19 树根互联股份有限公司 流程实现方法、装置、系统、电子设备和可读存储介质
CN112865959B (zh) * 2020-12-30 2022-05-31 杭州趣链科技有限公司 分布式节点设备的共识方法、节点设备及分布式网络
CN112804091B (zh) * 2020-12-31 2023-07-25 北京百度网讯科技有限公司 联盟网络的运行实现方法、装置、设备及存储介质
CN113760897A (zh) * 2021-01-19 2021-12-07 北京沃东天骏信息技术有限公司 数据重分片方法、装置、计算机系统和计算机可读存储介质
CN112837162A (zh) * 2021-03-12 2021-05-25 中国工商银行股份有限公司 一种基于区块链的数据交互方法、节点及系统
US20220318122A1 (en) * 2021-04-05 2022-10-06 Mastercard International Incorporated Method and system for blockchain performance testing
CN113160972B (zh) * 2021-04-15 2023-03-24 阜外华中心血管病医院 基于“互联网+”技术的症状群管理个性化推荐平台
CN113157805B (zh) * 2021-04-16 2024-05-03 西安瓜大网络科技有限公司 一种事务定序共识方法和系统
CN112991067B (zh) * 2021-04-28 2021-08-03 支付宝(杭州)信息技术有限公司 一种区块链共识方法、装置和系统
CN112988878B (zh) * 2021-05-06 2021-08-13 腾讯科技(深圳)有限公司 基于区块链的区域热力图处理方法、装置和计算机设备
US11983161B2 (en) 2021-06-23 2024-05-14 Bank Of America Corporation System for mitigating data loss in an edge computing environment using machine learning and distributed ledger techniques
CN113179286B (zh) * 2021-06-30 2022-08-19 广州平云信息科技有限公司 一种区块链的数据监管方法和系统
CN113206893B (zh) * 2021-07-05 2021-09-14 支付宝(杭州)信息技术有限公司 区块同步、节点加入区块链网络的方法
CN113486118B (zh) * 2021-07-21 2023-09-22 银清科技有限公司 共识节点选取方法及装置
CN113765671B (zh) * 2021-08-06 2024-07-26 深圳前海微众银行股份有限公司 一种区块链节点热重启的方法及装置
CN113836232A (zh) * 2021-09-24 2021-12-24 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
CN115859343A (zh) * 2021-09-24 2023-03-28 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置以及可读存储介质
KR20230090027A (ko) * 2021-12-14 2023-06-21 한국전자통신연구원 블록체인 네트워크에서의 합의 노드 정보 동기화 장치 및 방법
CN114363349B (zh) * 2021-12-31 2024-04-02 支付宝(杭州)信息技术有限公司 区块链子网的启动方法及装置
CN114358938A (zh) * 2021-12-31 2022-04-15 杭州复杂美科技有限公司 交易、区块的广播方法、设备和存储介质
CN114047899B (zh) * 2022-01-12 2022-03-18 南京金宁汇科技有限公司 一种区块链的视图同步方法及系统
CN114064343B (zh) * 2022-01-13 2022-04-08 北京溪塔科技有限公司 一种区块链的异常处置方法及装置
CN114070733B (zh) * 2022-01-17 2023-01-31 清华大学 一种基于区块链网络的共识方法、装置及系统
CN114760198B (zh) * 2022-01-17 2023-03-24 清华大学 一种基于区块链网络的共识方法、装置及系统
US20230334040A1 (en) * 2022-04-14 2023-10-19 Kabushiki Kaisha Toshiba Methods and systems for storing data using a distributed ledger
CN115314374B (zh) * 2022-07-06 2024-02-06 京东科技信息技术有限公司 区块链节点的部署方法、设备、存储介质及程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN107395665A (zh) * 2017-05-22 2017-11-24 阿里巴巴集团控股有限公司 一种区块链业务受理及业务共识方法及装置
US20190205873A1 (en) * 2017-12-29 2019-07-04 Ebay, Inc. Secure control of transactions using blockchain
US20190251077A1 (en) * 2018-11-07 2019-08-15 Alibaba Group Holding Limited Facilitating practical byzantine fault tolerance blockchain consensus and node synchronization

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594624B1 (en) 1999-06-22 2003-07-15 The United States Of America As Represented By The National Security Agency Method of identifying all minimum-cost cutsets in a network
US20140149715A1 (en) 2012-11-28 2014-05-29 Los Alamos National Security, Llc Scalable and programmable computer systems
US9372892B1 (en) 2015-12-28 2016-06-21 International Business Machines Corporation Bloom filter construction method for use in a table join operation portion of processing a query to a distributed database
US10720232B2 (en) 2016-04-13 2020-07-21 Accenture Global Solutions Limited Distributed healthcare records management
WO2018006072A1 (en) 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US10360191B2 (en) * 2016-10-07 2019-07-23 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system
US10158527B2 (en) 2016-10-28 2018-12-18 International Business Machines Corporation Changing an existing blockchain trust configuration
EP3593482B1 (en) 2017-03-06 2022-01-19 Nokia Technologies Oy Secure de-centralized domain name system
CN107391320B (zh) * 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
US10521604B2 (en) 2017-03-17 2019-12-31 Labyrinth Research Llc Unified control of privacy-impacting devices
CN107040594B (zh) * 2017-04-12 2020-04-10 山大地纬软件股份有限公司 基于pbft的许可区块链节点准入的方法及装置
US10896169B2 (en) 2017-05-12 2021-01-19 International Business Machines Corporation Distributed system, computer program product and method
US10740733B2 (en) 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
US10567359B2 (en) 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
US11281644B2 (en) 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
US20190052453A1 (en) * 2017-08-14 2019-02-14 Honeywell International Inc. Apparatus and method for using blockchains with secure custody transfer data, sealing data, and other data associated with material transfers
US20190058709A1 (en) 2017-08-16 2019-02-21 Telefonaktiebolaget Lm Ericsson (Publ) Tenant management method and system in a cloud computing environment
CN107579848B (zh) * 2017-08-30 2020-08-25 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
US10528551B2 (en) 2017-09-29 2020-01-07 Oracle International Corporation System and method for providing a representational state transfer proxy service for a blockchain cloud service
CN107819749A (zh) * 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
US10567156B2 (en) 2017-11-30 2020-02-18 Bank Of America Corporation Blockchain-based unexpected data detection
US11159537B2 (en) 2017-11-30 2021-10-26 Bank Of America Corporation Multicomputer processing for data authentication and event execution using a blockchain approach
US10949511B2 (en) 2017-11-30 2021-03-16 Bank Of America Corporation Multicomputer processing for data authentication using a blockchain approach
US11243945B2 (en) 2017-12-11 2022-02-08 International Business Machines Corporation Distributed database having blockchain attributes
CN108182635A (zh) * 2017-12-18 2018-06-19 深圳前海微众银行股份有限公司 区块链共识方法、系统和计算机可读存储介质
US11296863B2 (en) 2018-01-04 2022-04-05 Bank Of America Corporation Blockchain enterprise data management
US20190207751A1 (en) * 2018-01-04 2019-07-04 Bank Of America Corporation Blockchain enterprise data management
CA3088610A1 (en) * 2018-01-17 2019-07-25 Geeq Corporation Blockchain methods, nodes, systems and products
US10542046B2 (en) * 2018-06-07 2020-01-21 Unifyvault LLC Systems and methods for blockchain security data intelligence
US10713133B2 (en) 2018-06-11 2020-07-14 Vmware, Inc. Linear view-change BFT
CA3046020A1 (en) * 2018-06-14 2019-12-14 Zero31Skytech Inc. Apparatus, system and method to limit access to open networks by requiring the consensus of pre-existing nodes to admit candidate nodes
US10992455B2 (en) 2018-08-14 2021-04-27 International Business Machines Corporation Consensus based ad-hoc group creation
CN109242685B (zh) * 2018-08-29 2020-05-12 众安信息技术服务有限公司 基于区块链的共识和验证方法及装置
CN109327528B (zh) * 2018-10-31 2020-10-20 创新先进技术有限公司 一种基于区块链的节点管理方法和装置
WO2019072285A2 (en) 2018-11-30 2019-04-18 Alibaba Group Holding Limited PLATFORM FOR ATOMIC TRANSFER OF INTELLIGENT RESOURCES IN BLOCK CHAIN NETWORKS
SG11201903527QA (en) 2018-11-30 2019-05-30 Alibaba Group Holding Ltd Platform for atomic transfer of smart assets within blockchain networks
CN109784916A (zh) * 2018-12-12 2019-05-21 广东工业大学 一种改进pbft的以太坊共识机制应用于联盟链的方法
CN109829724A (zh) * 2018-12-27 2019-05-31 链极智能科技(上海)有限公司 一种基于区块链的溯源系统
CN109918261B (zh) * 2019-01-25 2022-11-22 中国联合网络通信集团有限公司 故障监听方法、装置、设备及计算机可读存储介质
CN109859047A (zh) * 2019-01-31 2019-06-07 北京瑞卓喜投科技发展有限公司 一种区块链更新方法和区块链更新系统
CN109842681B (zh) * 2019-01-31 2021-06-29 广东绍林科技开发有限公司 一种兼顾集中式与分布式特色的数据管理系统及方法
JP6731123B1 (ja) * 2019-03-18 2020-07-29 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 合意システムのダウンタイムの回復
AU2019203865B2 (en) 2019-03-18 2021-01-21 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
CN114401150B (zh) * 2019-09-05 2023-10-20 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN107395665A (zh) * 2017-05-22 2017-11-24 阿里巴巴集团控股有限公司 一种区块链业务受理及业务共识方法及装置
US20190205873A1 (en) * 2017-12-29 2019-07-04 Ebay, Inc. Secure control of transactions using blockchain
US20190251077A1 (en) * 2018-11-07 2019-08-15 Alibaba Group Holding Limited Facilitating practical byzantine fault tolerance blockchain consensus and node synchronization

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Mahdi Zamani, et al., "RapidChain: Scaling Blockchain via Full Sharding", CCS '18: Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, Pages 931-948, October 2018. [https://dl.acm.org/doi/pdf/10.1145/3243734.3243853]
Wenbo Wang, et al., "A Survey on Consensus Mechanisms and Mining Strategy Management in Blockchain Networks", IEEE, 19 Feb 2019.

Also Published As

Publication number Publication date
EP3688618B1 (en) 2021-11-03
CN114401150A (zh) 2022-04-26
SG11202003887XA (en) 2020-05-28
WO2021042885A1 (zh) 2021-03-11
US10693957B2 (en) 2020-06-23
CN111480157B (zh) 2023-07-28
CN110727731A (zh) 2020-01-24
CN111480157A (zh) 2020-07-31
US10693958B2 (en) 2020-06-23
EP3688618A2 (en) 2020-08-05
US20200120157A1 (en) 2020-04-16
WO2020011284A3 (en) 2020-06-25
CN110727731B (zh) 2021-12-21
EP3688618A4 (en) 2020-12-16
WO2020011284A2 (en) 2020-01-16
TW202118274A (zh) 2021-05-01
CN114401150B (zh) 2023-10-20
US20200153899A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
TWI743881B (zh) 用於在區塊鏈網路中添加節點的系統和方法
TWI761879B (zh) 用於在區塊鏈網路中刪除節點的系統和方法
TWI724678B (zh) 共識系統停機時間恢復
KR102170345B1 (ko) 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
TWI729609B (zh) 共識系統停機時間恢復
TWI717135B (zh) 用於結束視域變換協定的系統和方法
JP2022523217A (ja) 投票集計を伴うトポロジードリブンビザンチンフォールトトレラント合意プロトコル