TWI717135B - 用於結束視域變換協定的系統和方法 - Google Patents
用於結束視域變換協定的系統和方法 Download PDFInfo
- Publication number
- TWI717135B TWI717135B TW108144681A TW108144681A TWI717135B TW I717135 B TWI717135 B TW I717135B TW 108144681 A TW108144681 A TW 108144681A TW 108144681 A TW108144681 A TW 108144681A TW I717135 B TWI717135 B TW I717135B
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- nodes
- view
- sequence number
- current
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/182—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
- H04L1/1621—Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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 involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Hardware Redundancy (AREA)
- Retry When Errors Occur (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
用於執行視域變換的方法、系統和裝置,包括編碼在電腦儲存媒體上的電腦程式。所述方法之一將在區塊鏈上實施並由N個節點中處於視域變換協定的第一節點執行。所述方法包括:將視域變換訊息多播到所述N個節點中的至少一些節點;分別從所述N個節點中的至少Q個第二節點獲得至少Q個回應訊息,Q個回應訊息各自包括第二節點已知的指示N個節點中指定的主節點的一致性當前視域以及第二節點已知的一致性當前序號,所述當前序號與最新交易或最新區塊相關聯,所述當前序號大於所述第一節點已知的第一序號;並且回應於獲得至少Q個回應訊息,結束所述視域變換協定。
Description
本發明一般涉及用於執行視域變換的方法和設備,尤其涉及用於在實用拜占庭容錯(PBFT)系統中結束視域變換的方法和設備。
實用拜占庭容錯(PBFT)是一種可以在分散式系統如區塊鏈系統中實現的共識機制。PBFT共識機制使得分散式系統能夠在安全性和活躍性方面達成足夠的共識,儘管系統的某些節點可能發生故障(例如,由於網路連接不良或以其他方式變得有故障)或向其他對等方傳播不正確的資訊(例如,惡意行動)。這種機制的目的是通過減輕無功能節點對系統的正確功能的影響以及對由系統中功能節點(例如,無故障和誠實節點)達成的共識的影響來抵禦災難性的系統故障。
PBFT共識機制側重於通過假設存在獨立節點故障和由特定並獨立的節點傳播的操縱訊息來提供容忍拜占庭故障(例如,無功能節點)的實用拜占庭狀態機複製。例如,在這種PBFT共識機制中,區塊鏈系統中的所有節點按順序排序,其中一個節點是主節點(也稱為領導節點或主控節點),其他節點稱為備份節點(也稱為追隨者節點)。系統內的所有節點彼此通訊,並且目標是讓所有誠實節點對系統狀態達成一致/共識。
例如,為了使PBFT共識機制起作用,假設在給定的漏洞視窗中,區塊鏈系統中的無功能節點的數量不能同時等於或超過系統中總節點數的三分之一。只要至多F個節點同時是無功能節點,該方法就有效地提供活躍性和安全性。換句話說,在一些實現中,PBFT共識機制可以容忍的無功能節點的數量F等於(N-1)/3向下取最接近整數,其中N表示系統中的節點總數。在一些實現中,實現PBFT共識機制的區塊鏈系統可以處理多達F個拜占庭故障,其中總共存在至少3F+1個節點。為了執行共識驗證,每個節點在主節點的領導下執行正常操作協定。當節點認為主節點是無功能的時,所述節點可以進入視域變換協定,以啟動主節點的變換。在新主節點在大多數節點同意下替換無功能主節點之後,這些節點切換回正常操作協定。
在當前技術中,節點根據如下的傳統程式退出視域變換協定:等待大多數節點也進入視域變換協定並同意主節點是無功能的。在傳統的視域變換協定中,這種情況是當至少2F+1個節點進入視域變換協定並分別多播視域變換訊息時,獲得至少2F+1個視域變換訊息的新主節點多播新的視域訊息以説明這些節點恢復正常操作。然而,在一些情況下,網路通訊中斷可能導致節點錯誤地確定主節點是無功能的並且進入視域變換協定,而其他節點仍處於正常操作。結果,所述節點陷入視域變換協定中並且有效地關閉共識過程。在使陷入的節點恢復正常操作之前的延遲是不可預測的,因為它可能取決於實際的主節點故障或功能失靈何時發生。因此,在等待其他節點加入視域變換時浪費了陷入的節點的計算能力。因此,期望提供可以説明節點退出視域變換協定的替代機制。
本說明書的各種實施例包括但不限於用於執行視域變換的系統、方法和非暫態電腦可讀媒體。
根據一個實施例,電腦實現的待在由多個(N個)節點維護的區塊鏈上實施的視域變換方法由N個節點中處於視域變換協定的第一節點執行。所述方法包括:將視域變換訊息多播到N個節點中的至少一些節點;分別從N個節點中的至少Q個第二節點獲得至少Q個回應訊息,至少Q個回應訊息各自包括(1)所述第二節點已知的指示N個節點中指定的主節點的一致性當前視域以及(2)所述第二節點已知的一致性當前序號,所述當前序號與第二節點提交(commit)的最新區塊或最新交易相關聯,當前序號大於第一節點已知的第一序號,Q(定額,quorum)是(N+F+1)/2向上取最接近整數,F是(N-1)/3向下取最接近整數;並且回應於獲得至少Q個回應訊息,結束視域變換協定。
在一些實施例中,至少Q個回應訊息分別由至少Q個第二節點回應於至少Q個第二節點獲得視域變換訊息而發送到第一節點。
在其他實施例中,當前序號包括由第二節點維護的區塊鏈的第二副本的長度;第一序號包括由第一節點維護的區塊鏈的第一副本的長度。
在其他實施例中,當前序號包括第二節點提交的最新交易的序號;第一序號包括第一節點提交的最新交易的序號。
在其他實施例中,所述回應訊息包括認證當前視域和當前序號均為第二節點已知的數位簽章。
在一些實施例中,所述回應訊息還包括最新區塊或最新交易的摘要。
在其他實施例中,所述摘要包括最新區塊或最新交易的雜湊值。
在其他實施例中,所述摘要包括第二節點已知但第一節點未知的最新區塊的區塊梅克爾(Merkle)根。
在其他實施例中,結束視域變換協定包括:將由第一節點維護的區塊鏈的第一副本與由第二節點維護的區塊鏈的第二副本同步;並且退出視域變換協定,以使用第一節點的一致性當前視域進入正常操作協定。
在一些實施例中,至少Q個第二節點已知的當前序號是(n+1);並且第一節點已知的第一序號是n。
在其他實施例中,至少Q個第二節點的當前視域是v;當處在視域變換協定中時,第一節點具有大於v的第一視域。
在其他實施例中,N個節點形成實用拜占庭容錯(PBFT)網路,其中N個節點之一充當主節點而其他(N-1)個節點充當備份節點。
在實施例中,視域變換系統包括:一個或多個處理器;和耦合到所述一個或多個處理器並且其上儲存有指令的一個或多個電腦可讀記憶體,所述指令能由所述一個或多個處理器執行以執行任何前述實施例的方法。
在一些實施例中,視域變換裝置包括用於執行任何前述實施例的方法的多個模組。
根據另一實施例,視域變換系統用於維護區塊鏈,其中多個(N個)節點維護所述區塊鏈,所述系統充當N個節點中處於視域變換協定的第一節點。所述系統包括一個或多個處理器和一個或多個非暫態電腦可讀記憶體,所述非暫態電腦可讀記憶體耦合到一個或多個處理器並配置有可由一個或多個處理器執行的指令,以促使所述系統執行包括以下的操作:將視域變換訊息多播到N個節點中的至少一些節點;分別從N個節點中的至少Q個第二節點獲得至少Q個回應訊息,至少Q個回應訊息各自包括(1)所述第二節點已知的指示N個節點中指定的主節點的一致性當前視域以及(2)所述第二節點已知的一致性當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯,當前序號大於第一節點已知的第一序號,Q(定額)是(N+F+1)/2向上取最接近整數,F是(N-1)/3向下取最接近整數;並且回應於獲得至少Q個回應訊息,結束視域變換協定。
根據又一實施例,非暫態電腦可讀儲存媒體用於維護區塊鏈,其中多個(N個)節點維護所述區塊鏈,所述儲存媒體與N個節點中處於視域變換協定的第一節點相關聯。所述儲存媒體配置有可由一個或多個處理器執行的指令,以促使一個或多個處理器執行包括以下的操作:將視域變換訊息多播到N個節點中的至少一些節點;分別從N個節點中的至少Q個第二節點獲得至少Q個回應訊息,至少Q個回應訊息各自包括(1)所述第二節點已知的指示N個節點中指定的主節點的一致性當前視域以及(2)所述第二節點已知的一致性當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯,當前序號大於第一節點已知的第一序號,Q(定額)是(N+F+1)/2向上取最接近整數,F是(N-1)/3向下取最接近整數;並且回應於獲得至少Q個回應訊息,結束視域變換協定。
根據另一實施例,視域變換裝置用於維護區塊鏈,其中多個(N個)節點維護所述區塊鏈,所述裝置充當N個節點中處於視域變換協定的第一節點。所述裝置包括多播模組、獲取模組和結束模組,所述多播模組用於將視域變換訊息多播到N個節點中的至少一些節點;所述獲取模組用於分別從N個節點中的至少Q個第二節點獲得至少Q個回應訊息,至少Q個回應訊息各自包括(1)所述第二節點已知的指示N個節點中指定的主節點的一致性當前視域以及(2)所述第二節點已知的一致性當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯,當前序號大於第一節點已知的第一序號,Q(定額)是(N+F+1)/2向上取最接近整數,F是(N-1)/3向下取最接近整數;所述結束模組用於回應於獲得至少Q個回應訊息,結束視域變換協定。
根據一個實施例,電腦實現的待在由多個(N個)節點維護的區塊鏈上實施的視域變換方法由N個節點中處於正常操作協定的第二節點執行。所述方法包括:從處於視域變換協定的第一節點獲得視域變換訊息;確定第二節點的當前協定狀態;回應於確定當前協定狀態是正常操作協定,向第一節點發送回應訊息,所述回應訊息包括:(1)所述第二節點已知的指示N個節點中指定的主節點的當前視域以及(2)所述第二節點已知的當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯。
在一些實施例中,所述當前序號大於所述第一節點已知的第一序號。
在其他實施例中,所述當前序號包括由第二節點維護的區塊鏈的第二副本的長度;第一序號包括由第一節點維護的區塊鏈的第一副本的長度。
在其他實施例中,所述當前序號包括第二節點提交的最新交易的序號;第一序號包括第一節點提交的最新交易的序號。
在其他實施例中,所述回應訊息包括認證當前視域和當前序號均為第二節點已知的數位簽章。
在一些實施例中,所述回應訊息還包括最新區塊或最新交易的摘要。
在其他實施例中,所述摘要包括最新區塊或最新交易的雜湊值。
在其他實施例中,所述摘要包括第二節點已知但第一節點未知的最新區塊的區塊梅克爾(Merkle)根。
在其他實施例中,第二節點已知的當前序號是(n+1);並且第一節點已知的第一序號是n。
在一些實施例中,第二節點的當前視域是v;當處在視域變換協定中時,第一節點具有大於v的第一視域。
在其他實施例中,N個節點形成實用拜占庭容錯(PBFT)網路,其中N個節點之一充當主節點而其他(N-1)個節點充當備份節點。
在實施例中,視域變換系統包括:一個或多個處理器;和耦合到所述一個或多個處理器並且其上儲存有指令的一個或多個電腦可讀記憶體,所述指令能由所述一個或多個處理器執行以執行任何前述實施例的方法。
在一些實施例中,視域變換裝置包括用於執行任何前述實施例的方法的多個模組。
根據另一實施例,視域變換系統用於維護區塊鏈,其中多個(N個)節點維護所述區塊鏈,所述系統充當N個節點中處於正常操作協定的第二節點。所述系統包括一個或多個處理器和一個或多個非暫態電腦可讀記憶體,所述記憶體耦合到一個或多個處理器並配置有可由一個或多個處理器執行的指令,以促使系統執行包括以下的操作:從處於視域變換協定的第一節點獲得視域變換訊息;確定第二節點的當前協定狀態;回應於確定當前協定狀態是正常操作協定,向第一節點發送回應訊息,所述回應訊息包括(1)所述第二節點已知的指示N個節點中指定的主節點的當前視域以及(2)所述第二節點已知的當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯。
根據又一實施例,非暫態電腦可讀儲存媒體用於維護區塊鏈,其中多個(N個)節點維護所述區塊鏈,所述儲存媒體與N個節點中處於正常操作協定的第二節點相關聯。所述儲存媒體配置有可由一個或多個處理器執行的指令,以促使一個或多個處理器執行包括以下的操作:從處於視域變換協定的第一節點獲得視域變換訊息;確定第二節點的當前協定狀態;回應於確定當前協定狀態是正常操作協定,向第一節點發送回應訊息,所述回應訊息包括(1)所述第二節點已知的指示N個節點中指定的主節點的當前視域以及(2)所述第二節點已知的當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯。
根據另一實施例,視域變換裝置用於維護區塊鏈,其中多個(N個)節點維護所述區塊鏈,所述裝置充當N個節點中處於正常操作協定的第二節點。所述裝置包括獲取模組,用於從處於視域變換協定的第一節點獲得視域變換訊息;確定模組,用於確定第二節點的當前協定狀態;發送模組,用於回應於確定當前協定狀態是正常操作協定,向第一節點發送回應訊息,所述回應訊息包括:(1)所述第二節點已知的指示N個節點中指定的主節點的當前視域以及(2)所述第二節點已知的當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯。
本說明書中公開的實施例具有一個或多個技術效果。在一些實施例中,所述方法和系統可以確保PBFT共識系統中已進入視域變換協定的節點(例如,第一節點)可以有效地退出視域變換協定並恢復正常操作協定。在其他實施例中,當處於正常操作協定的第二節點接收視域變換訊息時,它可以回復包括第二節點已知的當前視域和當前序號的回應訊息。當前視域指示第二節點的主節點視域,當前序號指示第二節點的最新提交的交易或與由第二節點維護的區塊鏈的最新區塊相關聯的區塊鏈高度(也稱為區塊高度)。在其他實施例中,陷入視域變換協定的第一節點可以從回應訊息獲得當前視域和當前序號。在接收到定額數量Q的一致性回應訊息時,第一節點可以將它們與其自己的視域和序號進行比較,以確定大多數節點是否仍處於正常操作中。如果大多數其他節點仍處於正常操作中,則第一節點可以結束視域變換協定並恢復正常操作協定。在其他實施例中,如回應訊息中的序號所指示的,大多數節點可能已經對共識驗證序列中的下一交易或下一區塊達成共識,所述下一交易或下一區塊尚未被第一節點識別。通過意識到大多數節點沒有進入視域變換,第一節點可以順利地結束視域變換協定。在一些實施例中,如果大多數節點沒有也進入視域變換且對用於結束視域變換協定的新視域達成一致,第一節點可以結束視域變換。因此可以最佳化正常操作中的節點數量以及貢獻其計算能力的節點數量。
參考圖式考慮以下描述和所附申請專利範圍,本文公開的系統、方法和非暫態電腦可讀媒體的這些和其他特徵,以及相關結構元件的操作方法和功能以及部件的組合和製造經濟性將變得更加明顯。所有這些圖式形成本說明書的一部分,其中相同的圖式標記表示各圖式中的對應部分。然而,應該清楚地理解,圖式僅用於說明和描述的目的,而不是限制性的。
本文公開的實施例包括但不限於可以在PBFT系統中實現的視域變換系統、方法和非暫態電腦可讀媒體。在各種實施例中,提供了退出視域變換協定並恢復正常操作協定的路徑。已進入視域變換的節點在無需通過傳統視域變換協定的情況下可以被恢復到正常操作,傳統視域變換協定需要至少Q個節點進入視域變換。Q(定額)是(N+F+1)/2向上取最接近整數,N表示節點總數並且是不小於4的整數,F是(N-1)/3向下取最接近整數。與PBFT類似,所公開的系統、方法和非暫態電腦可讀媒體可以應用於其他共識協定,例如SecureRing、Byzantine Paxos、Q/U、HQ、Zyzzvyva、ABsTRACTs、RBFT、Adapt、Tangaroa、CheapBFT、MinBFT、FastBFT等。PBFT的各個方面可以參考M. Castro, B. Liskov, “Practical Byzantine Fault Tolerance,” Proceedings of the Third Symposium on Operating Systems Design and Implementation,(Feb 1999),其通過引用完整地併入本文。
圖1示出了根據各種實施例的網路120。下面給出的元件旨在說明。如圖所示,網路120可以包括網路系統112。網路系統112可以包括在諸如伺服器、電腦、行動電話之類的一個或多個計算設備中實現的一個或多個節點(例如,節點0、節點1、節點2、節點3、節點4、節點i等)。網路系統112可以安裝有適當軟體(例如,共識程式)和/或硬體(例如,有線連接、無線連接),以存取網路120或附加系統的其他設備。所述節點可以包括一個或多個處理器以及耦合到所述一個或多個處理器的一個或多個記憶體。所述記憶體可以是非暫態的且電腦可讀的,並且配置有可由所述一個或多個處理器執行的指令,以促使所述一個或多個處理器執行本文所述的操作。儘管在該圖中節點被示為單個元件,但是應當理解,這些節點可以實現為單個設備或耦合在一起的多個設備。通常,節點能夠彼此通訊並且與網路系統112外部的其他設備通訊。例如,通過一個或多個有線網路或無線網路(例如,網際網路),資料可以被傳送。
在各種實施例中,網路系統112可以被實現為包括各種區塊鏈節點的區塊鏈網路系統。如圖所示,所述區塊鏈網路系統可以包括多個區塊鏈節點(例如,節點0、節點1、節點2、節點3、節點4、節點i等)。所述區塊鏈節點可以形成網路(例如,點對點網路,Peer-to-Peer network),其中一個區塊鏈節點與另一區塊鏈節點通訊。所示的區塊鏈節點的順序和數量僅僅是示例性的並且是為了簡化說明。所述區塊鏈節點可以在伺服器、電腦等中被實現。每個區塊鏈節點可以對應於經由各種類型的通訊方法諸如TCP/IP耦合在一起的一個或多個實體硬體設備或虛擬裝置。根據分類,區塊鏈節點可以包括全量節點、Geth節點、共識節點等。
在各種實施例中,所述區塊鏈網路系統可以與諸如節點A和節點B(例如,輕量節點)的其他系統和設備交互。所述交互可以涉及資料的發送和接收,以便例如接收請求並返回所述請求的執行結果。在一個示例中,用戶A可能想要通過區塊鏈網路與用戶B進行交易。所述交易可以涉及將用戶A的帳號中的某些資產轉移到用戶B的帳號。用戶A和用戶B可以使用各自的安裝有適當區塊鏈軟體(例如,加密貨幣錢包)的設備節點A和節點B進行交易。節點A可以通過與節點0的通訊來存取區塊鏈,節點B可以通過與節點1的通訊來存取區塊鏈。例如,節點A可以通過節點0向區塊鏈提交交易請求,節點B可以通過節點1向區塊鏈提交智慧合約執行請求。在區塊鏈之外,節點A和節點B可以具有其他通訊通道(例如,不經過節點0和節點1的常規網際網路通訊)。
所述區塊鏈節點可以各自包括記憶體或耦合到記憶體。在一些實施例中,記憶體可以儲存池資料庫(pool database)。所述池資料庫可以被分散式方式的多個區塊鏈節點存取。例如,所述池資料庫可以分別儲存在區塊鏈節點的記憶體中。所述池資料庫可以儲存由一個或多個用戶設備(例如由用戶操作的節點A和節點B)提交的多個交易。
區塊鏈節點形成網路(例如,P2P網路),所述網路,通過共識,在稱為區塊鏈的分散式分類帳中記錄交易。P2P網路的參與者可以被稱為維護區塊鏈的節點。在區塊鏈P2P網路中,每個節點參與共識驗證並儲存區塊鏈的完整分類帳副本。每個節點通過區塊鏈共識方法確認批量交易,以確保所有節點具有一致的確認結果,從而確保所有節點具有一致的區塊鏈副本。
區塊鏈共識方法之一是實用拜占庭容錯(PBFT)。拜占庭容錯源於拜占庭一般問題。對於P2P網路系統,只要這些無功能節點的數量在一定限度內,所述系統就可以繼續正常運行。這種系統稱為拜占庭容錯系統。PBFT是拜占庭容錯網路能力最佳化的一個例子。PBFT通過複製伺服器並將用戶端交互與伺服器副本同步,為網路提供拜占庭狀態機。
PBFT操作的核心是維護記錄在區塊鏈上的資訊的一致性全域視域,這形成了使用戶能夠以分散方式彼此交互的主幹。PBFT共識模型的安全性對區塊鏈平臺至關重要。所述共識模型的兩個關鍵屬性是:1)安全性或共識性:所有誠實節點產生相同的有效輸出;2)活躍性:共識中的所有誠實節點最終都會產生值而不會在中間步驟停滯。安全可靠的PBFT共識協定需要容忍各種各樣的拜占庭行為,包括網路節點故障、網路磁碟分割、訊息延遲、無序訊息傳遞、訊息損壞等,並且在節點中達成共識,只要系統內的無功能節點數量是有限的。為此,PBFT模型在兩種互斥協定中的任何一種下工作:正常操作/共識協定和視域變換協定,這將在下面進一步描述。在本說明書中,無功能意味著有故障和/或惡意,起作用意味著無故障和誠實。可能的故障或惡意行為可以包括:訊息傳遞故障、訊息傳遞延遲、無序訊息傳遞、拜占庭故障(向不同節點傳遞任意訊息,違反協定)等。
在一些實施例中,實用拜占庭容錯(PBFT)系統可以包括N個節點,其中N個節點之一充當主節點,而N個節點中的其他節點充當備份節點。主節點指定可以不被固定於特定節點,因為可以通過視域變換協定選擇另一節點成為新主節點。例如,可以通過取模運算選擇主節點,其中具有最低序號(模視域號)的功能節點成為新主節點。當前視域和節點總數N可以確定主節點id=(view+1)mod N。在PBFT中,每次選擇新主節點時都會變換視域。例如,隨著每個視域變換,視域從零開始單調增加。也就是說,所述視域可以隨主節點變換而變換。
在一些實施例中,所述主節點在視域v處運行,並且執行正常操作協定。對於正常操作,所述主節點和/或備份節點可以從一個或多個用戶端接收與未驗證交易相關聯的請求。例如,作為用戶端的節點A可以向主節點和/或備份節點提交請求。所述請求可以包括未驗證交易(例如,要添加到區塊鏈的新區塊中的交易)。所述未驗證交易可以包括例如基於區塊鏈的金融交易、智慧合約部署或執行交易等。所述主節點和備份節點可以執行或不執行交易的一些初步驗證。接收所述請求的備份節點可以將接收到的請求轉發到主節點。一旦主節點處的交易達到特定級別或以其他方式滿足觸發條件,則所述主節點可以發起一輪共識驗證,並提議對未驗證交易的驗證結果。所述備份節點可以回應共識,並確認所述提議以達成共識。對這些節點的要求是它們是確定性的並且以相同狀態開始。最終的結果是,所有誠實節點對記錄的順序達成共識,所有誠實節點要麼接受它,要麼拒絕它。一旦經過共識驗證,所述交易就可以被打包到區塊鏈的新區塊中,並被添加到由這些節點維護的本地區塊鏈副本中。此外,最初發送請求的用戶端(例如,節點A)被通知。
為了保持安全,主要的PBFT方法包括正常操作協定的三個階段:預準備、準備和提交。參考圖2A至圖2C,PBFT系統的示例包括四個副本(副本是節點的另一個術語):副本0、副本1、副本2和副本3。數位0至3是可用於確定新主節點的副本序號。副本0可以對應於主節點0,副本1、副本2和副本3可以對應於備份節點1、備份節點2和備份節點3。例如,所述副本可以在上述網路系統112的各種區塊鏈節點中被實現。圖2A中示出了正常操作協定,其中不存在無功能節點,圖2B中示出了另一種正常操作協定,其中副本3是無功能節點。對於這兩種情況,可以將正常操作協定劃分為請求階段、預準備階段、準備階段、提交階段和回復階段。
參考圖2A和圖2B,當用戶端向負責提倡請求的主節點(副本0)提交請求(訊息)時,正常操作在請求階段開始。所述請求可以包括用戶端的資訊、請求操作(例如,用於共識驗證的交易請求)和請求時間戳記。所述用戶端(也稱為用戶端節點)可以例如在上述節點A中被實現。節點A可以是輕量節點(例如,在行動電話中被實現)。附加地或替代地,用戶端可以將請求提交給備份節點,所述備份節點在預準備階段之前將所述請求轉發到主節點。無論是主節點還是備份節點接收所述請求,相應節點都可以將所接收的請求多播到網路中的其他節點。因此,主節點可能最終以某種方式獲得用戶端提交給共識網路的未決請求。
因此,主節點充當領導者並且領導備份節點驗證與請求相關聯的交易。主節點負責在其視域中對請求的執行進行排序。在預準備階段,主節點可以驗證所獲得的請求並為每個請求提出序號。因此,每個請求可以被分配遞增的序號,從而被按順序排列。另外,所述預準備訊息可以包括區塊高度。所述區塊高度可以基於區塊鏈的當前長度。例如,如果區塊鏈當前具有1000個區塊,則區塊高度可以是1000,其表示區塊鏈中已經存在1000個區塊,或者可以是1001,其表示與請求相關聯的交易被提議打包到區塊鏈中尚未被其他節點驗證的第1001個區塊中。所述主節點可以轉發請求以及序號和/或區塊高度。例如,在獲得所述請求之後,所述主節點可以通過分配序號來將請求按照用於執行相應交易的順序排列,並將其儲存到清單中。所述主節點可以向PBFT網路系統中的每個備份節點(副本1至副本3)發送預準備訊息。如圖2A所示,所述主節點可以將預準備訊息中的清單多播到備份節點或將所述清單與預準備訊息一起多播到備份節點。如圖2B所示,即使備份節點(副本3)是無功能的並且主節點不知道這一點,所述主節點仍然可以發送預準備訊息。每個備份節點都接受預準備訊息,只要所述預準備訊息是有效的。預準備訊息可以包含允許確定訊息的有效性的視域號、序號、簽名、摘要(d)、其他中繼資料等。
在準備階段,如果備份節點接受預準備訊息,則可以通過將準備訊息多播到包括主節點的PBFT網路系統中的其他節點來跟蹤。多播準備訊息表示發送方節點同意該順序。每個準備訊息,只要是有效的,就被接收節點接受。所述準備訊息的有效性可以基於視域號、序號、簽名、摘要(d)、其他中繼資料等被類似地確定。如果節點已經從主節點接收原始請求,已經預準備(例如,通過多播預準備訊息),並且已經獲得至少(Q-1)個不同的、有效的且與預準備訊息匹配的一致性準備訊息,則節點準備就緒。(Q-1)個準備訊息可以包括多播準備訊息。Q(定額)是(N+F+1)/2向上取最接近整數,N表示節點總數並且是不小於4的整數,F是(N-1)/3向下取最接近整數。Q個節點的PBFT網路系統可以容忍多達F個拜占庭故障。在一些實施例中,當N至少為(3F+1)時,Q為(2F+1)。這裡,需要(Q-1)個而不是Q個準備訊息,因為預準備訊息可以被視為主節點的準備訊息的等效物(儘管主節點本身可以不發送準備訊息)。如果將預準備訊息計算為另一個準備訊息,那麼將有至少Q個不同且有效的準備訊息,這些準備訊息指示所有節點中的至少Q個節點接受預準備訊息,其中至多F個無功能節點可以被容忍。因此,所述預準備階段至準備階段確保至少(Q-F)個功能節點(Q個準備節點但考慮了至多F個無功能節點)同意,如果在視域v中執行請求,則將按照其序號執行所述請求。所述準備階段確保視域中每個請求的容錯一致性排序。
在一些實施例中,在接收到預準備訊息和(Q-1)個準備訊息之後,所述備份節點可以驗證該順序並將驗證結果與主節點在預準備訊息中寫入的提議驗證結果進行比較。可以有多種方法來驗證該順序。例如,所述提議驗證結果可以包括寫入摘要(d)中的提議的Merkle Patricia Trie根。所述備份節點可以根據該順序對與請求相關聯的交易進行排列,並計算Merkle Patricia Trie根以與提議的Merkle Patricia Trie根進行比較。所述計算還可能需要某些現有資訊,例如區塊鏈中現有區塊的節點雜湊值。所述比較產生由備份節點計算的摘要(D(m))。如果摘要(D(m))與摘要(d)一致,則驗證成功。一旦被驗證,所述備份節點可以同意所述請求的排序(例如,將與請求相關聯的交易打包到區塊鏈的新區塊中的順序)。類似地,所述備份節點可以驗證它接收的提交訊息(下面相對於提交階段描述的)是否包括相同摘要D(m),以確定其他節點是否也同意所述請求的排序。如果準備節點已經獲得Q個提交訊息並且已經執行了具有較低序號的所有請求,則所述節點可以執行所述請求。
在一些實施例中,所述預準備訊息可以包括新區塊的摘要(d)或者與執行所述請求有關的其他資訊(例如,與所述請求相關聯的交易)。所述摘要(d)(例如,雜湊值)可以是將雜湊演算法應用於諸如交易的資料的數值結果。所述備份節點可以執行交易以確認所述摘要(d)。對於多個請求,所述備份節點可以根據順序(即,所述請求的序號)執行所述請求以獲得摘要D(m)。如果D(m)和(d)是一致的,則所述備份節點多播提交訊息(下面針對提交階段描述的),所述提交訊息指示備份節點與主節點的驗證結果一致。在一些實施例中,所述提交訊息指示多播提交訊息的備份節點同意預準備訊息,並且已經從不同節點獲得(Q-1)個或更多個有效的一致性準備訊息。對於特定序號的未決請求,如果準備節點已經獲得Q個提交訊息並且已經執行具有較低序號的所有請求,則所述節點可以執行所述請求。
在提交階段,如果節點準備就緒,則所述節點可以將提交訊息多播到其他節點。所述節點可以從其他節點接收提交訊息。只要提交訊息是有效的,每個節點都接受它。所述提交訊息可以包含允許確定訊息的有效性的視域號、序號、簽名、摘要、其他中繼資料等。如果節點已經獲得至少Q個不同的、有效的一致性提交訊息,則表示定額數量的節點已經提交(即,至少(Q-F)個誠實節點準備就緒)並且已達成共識。至少Q個有效的提交訊息可以包括多播提交訊息。因此,準備階段至提交階段確保至少(Q-F)個功能節點(Q個提交訊息但考慮了最多F個無功能節點)同意,請求最終將在視域v中按照其序號被執行。由於節點可以在不同視域(例如,當一些節點已經進入新視域並且一些其他節點依然在先前視域中時)中提交,所接收的提交訊息可以對應於在不同視域中執行的提交。所述提交階段確保跨視域的每個請求的容錯一致性排序,因為功能節點對每個請求的序號達成一致。
在一些實施例中,如果節點已經獲得至少Q個不同的、有效的一致性提交訊息,則所述節點可以執行相應請求。例如,一旦獲得Q個提交訊息,就意味著新區塊被共識驗證。因此,所述節點可以將新區塊打包到本地維護的區塊鏈副本中。否則,所述備份節點可以直接觸發視域變換協定。
在回復階段,在執行所述請求之後,所述節點直接向用戶端發送回復。對於打包到區塊鏈中的交易,所述回復可以包括所述交易在區塊鏈中的位址。由於允許多達F個故障,所以用戶端在接受結果之前等待來自不同節點的具有有效簽名以及具有相同請求時間戳記和相同執行結果的(Q-F)個回復。對於圖2A和圖2B中所示的PBFT網路系統,總共存在四個節點,因此可以容忍至多一個(N=4,Q=3和F=1)無功能節點。因此,即使副本3是無功能的,在圖2B中仍然可以達成共識。
為了保持活躍性,如果主節點沒有多播請求的情況經過了特定時間量,則可以在視域變換協定中替換主節點。例如,所述備份節點可以維護計時器。所述備份節點在接收請求並且計時器尚未運行時啟動計時器。當所述備份節點不再等待執行請求時(即,所述請求被執行),所述備份節點停止計時器,但是如果在那時它正在等待執行一個或多個其他請求,則重新啟動計時器。如果所述計時器到期,則備份節點可以確定主節點是無功能的。因此,所述備份節點可以將視域變換訊息多播到其他節點。又例如,所述備份節點可以確定主節點是無功能的。因此,所述備份節點可以多播視域變換訊息。再例如,用戶端可以使用計時器來確定在用戶端將所述請求發送到主節點之後是否已經過太多時間而沒有接收到回應。當該計時器到期時,用戶端將其請求發送到所有節點。如果節點已經獲知該請求,則忽略該重新廣播。如果節點未獲知該請求,它將啟動計時器。一旦所述節點的計時器超時,基於懷疑主節點是無功能的,所述節點通過將視域變換訊息多播到其他備份節點來啟動視域變換過程。所述視域變換訊息包括系統狀態(以存檔訊息的形式,包括在先前正常操作期間其自己的準備訊息),以便其他節點將獲知發送方節點未發生故障。
絕對多數誠實節點可以確定主節點是否是無功能的,並在用下一主節點作為替換的情況下刪除該主節點。當足夠的節點認為主節點發生故障時,發生視域變換。圖2C的一部分示出了視域變換協定。參考圖2C,在視域變換階段,如果當前視域是v,則節點p=(v+1)mod N等待獲得Q個有效視域變換訊息以成為新主節點,其中p是副本/節點序號,v是視域號,N是副本/節點的總數。Q個視域變換訊息可以包括多播視域變換訊息。由於先前視域是v,因此視域變換訊息可以各自包括新視域v+1。一旦新主節點p已經獲得Q個視域變換訊息,它就多播新視域訊息。該訊息包含接收的所有有效視域變換訊息以及由於主節點故障而可能尚未完成的所有請求的集合。新主節點可以決定最新的檢查點,並且此外,確保功能節點趕上最新狀態,這可能涉及在新視域中重新提交先前的請求(例如,準備就緒、提交、但未被執行的請求)。當視域變換發生時,不會接受任何新請求。在節點接收包含Q個視域變換訊息的有效新視域訊息後,它將進入視域v+1並處理未完成的請求的集合。此後,正常操作協定繼續進行,並且節點重做在最新的穩定檢查點的序號和準備訊息中的最高號之間的請求,但是避免重新執行請求。在圖3A中示出了節點在正常操作協定和視域變換協定之間的相應狀態切換。如圖3A所示,例如,備份節點的超時可以觸發從正常操作協定(例如,在正常操作協定的任何階段期間)切換到視域變換協定(例如,開始視域變換階段)。在執行視域變換協定之後,一旦獲得有效的新視域訊息,所述備份節點可以退出視域變換協定並恢復正常操作協定以執行未決請求。有效的新訊息可以包括來自不同節點的Q個視域變換訊息。
如圖3B所示,根據各種實施例,可以為節點提供從視域變換協定切換到正常操作協定的替代路徑。在一些實施例中,所述視域變換協定中的節點可以獲得Q個回應訊息以結束視域變換協定。所述回應訊息可以包括當前視域、當前序號和/或摘要。基於所述回應訊息,所述視域變換協定中的節點可以確定大多數其他節點處於正常操作中並因此退出視域變換。下面參考圖4至圖6描述更多細節。
圖4示出了根據本說明書的各種實施例的視域變換退出步驟410的流程圖。步驟410可以由圖1的系統112的一個或多個元件(例如,上述節點0、節點1、節點2、......或節點i或者類似設備,或者任何節點和一個或多個附加設備例如節點A的組合)實現。步驟410可以由一個或多個區塊鏈節點(例如,主節點、備份節點)實現。主節點和備份節點可以是PBFT模型中定義的節點。步驟410可以由包括各種硬體機器和/或軟體的視域變換系統或設備(例如,電腦、伺服器)實現。例如,視域變換退出系統或設備可以包括一個或多個處理器和一個或多個非暫態電腦可讀儲存媒體(例如,一個或多個記憶體),所述儲存媒體耦合到所述一個或多個處理器並配置有可由所述一個或多個處理器執行的指令,以促使所述系統或設備(例如,處理器)執行步驟410。下面的操作旨在說明。根據實施方式,操作可以包括以各種循序執行或並存執行的附加、更少或替代步驟。
在步驟411,第一節點(例如,備份節點)可以進入視域變換協定。在步驟412,第一節點可以多播視域變換訊息。為了進入視域變換,第一節點結束正常操作協定並進入上述視域變換協定的視域變換階段。在一個實施例中,第一節點可以通過多播視域變換訊息來進入視域變換協定。例如,備份節點可以將視域變換訊息多播到主節點和其他備份節點。第一節點可以確定主節點有故障或者是無功能的,並且根據視域變換協定開始多播視域變換訊息。
主節點和(N-1)個備份節點可以形成PBFT共識系統。這裡,主節點可能是或可能不是真正無功能的。如果主節點確實是無功能的,則大多數備份節點(例如,Q個備份節點)可以各自進入視域變換協定,並且各自多播視域變換訊息。當第一節點獲得Q個視域變換訊息時,它可以確定大多數節點已達成主節點是無功能的並且需要選擇新主節點的共識。所述視域變換協定的其餘部分可以遵循。但是,如果主節點仍在運行,則第一節點可以根據以下步驟結束視域變換協定。對於這種情況,第一節點可能由於錯誤、不穩定的連接和/或其他原因而進入視域變換,這導致發送和/或接收預準備訊息、準備訊息或提交訊息的延遲,如前所述。
在步驟413,一旦接收視域變換訊息,第二節點可以確定它處於正常操作協定還是處於視域變換協定中。如果處於正常操作中,在步驟414,第二節點可以回復回應訊息。回應訊息可以被認為是對所接收的視域變換訊息的回應。“回應”一詞不對訊息類型進行限制。如果處於視域變換中,則第二節點可以根據視域變換協定多播其視域變換訊息,或者如果它已經多播其視域變換訊息則不進行任何操作。
在一個實施例中,所述回應訊息可以包括第二節點已知的當前視域和當前序號。當前視域可以指示哪個節點是第二節點已知的主節點。當前序號可以指示(1)第二節點在提交階段提交的最新請求(例如,交易請求)的序號,或者指示(2)第二節點在提交階段提交的最新區塊的區塊高度。所述區塊高度可以基於區塊鏈中的區塊數。例如,所述區塊高度可以是鏈中在所述區塊與創世區塊(genesis block)之間的區塊的數量。區塊鏈中的最先區塊的區塊高度可以為0,下一個區塊的區塊高度可以為1,依此類推。該示例不旨在限制表示區塊高度的方式,只要能夠指示區塊鏈中區塊的序號,區塊高度可以具有其他類型的表示。可選地,所述回應訊息還可以包括最新請求的摘要或最新區塊的摘要。
在步驟415,第一節點可以從各第二節點獲得回應訊息。回應於獲得Q個或更多個一致性回應訊息,第一節點可以結束視域變換協定以進入正常操作協定。Q個或更多個回應訊息意味著至少Q個節點同意一致性“視域”和“序號”。所述一致性“視域”和“序號”表示大多數節點在其正常操作協定中正常運行,因為它們已經成功地共識驗證了針對請求或區塊的一個或多個交易。如果第一節點沒有獲得具有一致的視域和序號的Q個回應訊息,則第一節點可以依然留在視域變換協定中。
在一些實施例中,Q個或更多個第二節點已知的當前序號大於第一節點已知的第一序號(例如,大1)。這表明大多數節點已經完成了針對請求或區塊的一輪共識驗證,而這被第一節點錯過了。因此,接收至少Q個回應訊息的第一節點可以通過一致性回應訊息知道大多數節點仍處於正常操作中。
在一些實施例中,第一節點可以至少基於當前視域進入正常操作。例如,在退出視域變換時,第一節點可以使用當前視域作為其自己的視域進入正常操作協定。第一節點還可以通過合併最新區塊的資訊(例如,摘要)來使其區塊鏈的副本與區塊鏈的最新副本同步。因此,第一節點可以用正確的視域和更新的區塊鏈副本恢復正常操作協定。此外,第一節點從進入視域變換至恢復正常操作所花費的時間是可以預測的。因為區塊鏈的長度隨著被添加的新區塊的增加而增加,由於第一節點進入視域變換並錯過新區塊的共識驗證,第一節點可以在將該新區塊添加到區塊鏈時發現其錯誤。因此,恢復正常操作所花的時間可以比完成一輪共識驗證所花的時間少。
因此,進入視域變換的節點可以通過替代路徑有效地結束視域變換協定並重新加入其他正常操作的節點。該路徑對於例如,由於錯誤、不穩定的連接和/或其他原因而進入視域變換的節點是有用的。該路徑繞過了要求Q個節點同意視域變換以便變換主節點並恢復正常操作的傳統視域變換協定。因此,通過確保最大數量的節點處於正常操作中,可以更有效地利用整體網路資源。
圖5A示出了根據本說明書的各種實施例的視域變換方法510的流程圖。方法510可以由圖1的系統112的一個或多個元件(例如,上述節點0、節點1、節點2、......或節點i或者類似設備,或者任何節點和一個或多個附加設備例如節點A的組合)實現。方法510可以由一個或多個區塊鏈節點(例如,PBFT系統中的備份節點)實現。主節點和備份節點可以是PBFT模型中定義的節點。方法510可以由包括各種硬體機器和/或軟體的視域變換系統或設備(例如,電腦、伺服器)實現。例如,所述視域變換系統或設備可以包括一個或多個處理器和一個或多個非暫態電腦可讀儲存媒體(例如,一個或多個記憶體),所述儲存媒體耦合到所述一個或多個處理器並配置有可由所述一個或多個處理器執行的指令,以促使系統或設備(例如,處理器)執行方法510。以下呈現的方法510的操作旨在是說明性的。根據實施方式,方法510可以包括以各種循序執行或並存執行的附加、更少或替代步驟。方法510的進一步細節可以參考圖1至圖4以及上面的相關描述。方法510可以由第一節點執行。
在各種實施例中,方法510可以是電腦實現的待在由多個(N個)節點(例如,PBFT共識系統的節點)維護的區塊鏈上實施的視域變換方法。在一個實施例中,N個節點形成實用拜占庭容錯(PBFT)網路,其中N個節點之一充當主節點而其他(N-1)個節點充當備份節點。方法510可以由N個節點中處於視域變換協定的第一節點(例如,備份節點)執行。
在一些實施例中,在框511之前,第一節點可能已進入視域變換。當進入視域變換時,第一節點可以將視域變換訊息多播到其他節點。
框511包括:將視域變換訊息多播到N個節點中的至少一些節點。例如,第一節點可以是備份節點,並且可以將視域變換訊息多播到主節點和其他備份節點。主節點和備份節點可以形成PBFT共識系統。所述視域變換訊息指示第一節點已退出其正常操作協定並進入視域變換協定。如果第一節點沒有從其他節點接收到(Q-1)個類似的視域變換訊息(因此獲得總共Q個一致性視域變換訊息,包含其自己的視域變換訊息),則將無法滿足針對傳統視域變換協定的閾值。無論如何,以下步驟可以允許第一節點結束視域變換協定並進入正常操作協定。
框512包括:分別從所述N個節點中的至少Q個第二節點獲得至少Q個回應訊息,至少Q個回應訊息各自包括(1)所述第二節點已知的指示所述N個節點中指定的主節點的一致性當前視域以及(2)所述第二節點已知的一致性當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯,所述當前序號大於所述第一節點已知的第一序號,Q(定額)是(N+F+1)/2向上取最接近整數,F是(N-1)/3向下取最接近整數。N可以是不小於4的任何整數。在一些實施例中,當N至少為(3F+1)時,Q為(2F+1)。與最新交易相關聯的當前序號可以包括例如由對應的第二節點提交的一個或多個最新交易的序號。與最新區塊相關聯的當前序號可以包括例如由對應的第二節點維護的區塊鏈副本的長度。如前所述,區塊鏈的長度可以取決於區塊鏈中的區塊數量,並且隨著最新區塊的添加而增加。在一個實施例中,針對第一節點結束視域變換,所述至少Q個回應訊息可以包括一致性當前視域和一致性當前序號。在一些實施例中,至少Q個回應訊息分別由至少Q個第二節點回應於至少Q個第二節點獲得視域變換訊息而發送到第一節點。
在一些實施例中,術語“交易”可以通過區塊鏈系統被實現並被記錄到區塊鏈中。所述交易可以包括,例如,金融交易、用於部署或調用區塊鏈合約的區塊鏈合約交易、更新區塊鏈狀態(例如,世界狀態)的交易等。所述交易不必涉及金融交易。
在各種實施例中,至少Q個第二節點的當前視域是v;並且當在視域變換協定中時,第一節點具有大於v的第一視域。例如,第一節點和第二節點可以在第一節點進入視域變換之前全都具有視域v,但是之後第一節點懷疑第一節點是無功能的,並且已經進入具有視域v+1的視域變換,而第二節點仍處於視域v。
在一些實施例中,當前序號包括由第二節點維護的區塊鏈的第二副本的長度(也稱為區塊高度);第一序號包括由第一節點維護的區塊鏈的第一副本的長度。在一個實施例中,至少Q個第二節點已知的當前序號是(n+1);並且第一節點已知的第一序號是n。例如,在第一節點進入視域變換之前,第一節點和第二節點都可以在視域v中以區塊高度99的區塊鏈(即區塊鏈中的100個區塊)開始。在第一節點進入視域變換協定並因此退出共識驗證之後,第二節點已經對第101個區塊達成共識,從而將區塊高度增加至100。陷入視域變換協定中的第一節點未知第101個區塊可以引起當前序號(100)和第一序號(99)之間的差。
在其他實施例中,當前序號包括第二節點提交的最新交易的序號;第一序號包括第一節點提交的最新交易的序號。在一個實施例中,至少Q個第二節點已知的當前序號是(n+1);並且第一節點已知的第一序號是n。例如,在第一節點進入視域變換之前,第一節點和第二節點都可以以用於共識驗證的80個請求(例如,交易請求)開始。所述請求可以被分配遞增的序號。在視域v中,第一節點和第二節點可以具有經共識驗證的50個請求。在第一節點進入視域變換協定並因此退出共識驗證之後,第二節點已經對第51個請求達成共識,從而將下一個未決請求的序號增加到52。被共識驗證的第51個請求對於陷入視域變換協定中的第一節點是未知的,並且可能引起當前序號(51)和第一序號(50)之間的差。
在一些實施例中,回應訊息還包括最新區塊或最新交易的摘要。所述摘要(例如,雜湊值)可以是將雜湊演算法應用於諸如交易的資料的數值結果。在一個實施例中,所述摘要包括最新區塊或最新交易的雜湊值。在一個示例中,所述摘要包括第二節點已提交但第一節點未提交的最新交易的交易雜湊值。在另一示例中,所述摘要包括第二節點已提交但第一節點未提交的多個最新交易的多個交易雜湊值。在另一示例中,所述摘要包括第二節點已知但第一節點未知的最新區塊的梅克爾(Merkle)根。在另一示例中,所述摘要包括第二節點已知但第一節點未知的多個最新區塊的多個梅克爾(Merkle)根。
在一些實施例中,“視域”、“序號”和/或“摘要”可以作為一個或多個數位簽章(或簡稱為簽名)被包含在回應訊息中。所述回應訊息包括認證當前視域和當前序號均為所述第二節點已知的數位簽章。“簽名”表示發送相應訊息的實體的認可。術語“簽名”可以是任何形式的批准指示。在一個實施例中,“視域”、“序號”和/或“摘要”可以首先輸入到單向雜湊函數,用對應節點的私密金鑰對該函數的輸出雜湊值進行加密以獲得數位簽章。加密可以通過各種方式實現,例如公開金鑰-私密金鑰加密(也稱為非對稱加密);數位簽章演算法(DSA),例如橢圓曲線數位簽章演算法(ECDSA)等。例如,使用公開金鑰演算法諸如RSA,可以生成兩個數學連結的金鑰:一個私密金鑰和一個公開金鑰。數位簽章是奏效的,因為公開金鑰加密依賴於兩個相互認證的加密金鑰。創建數位簽章的節點可以使用其自己的私密金鑰來對“視域”、“序號”和/或“摘要”進行加密;對這些資料進行解密的唯一方法是使用簽名者節點的公開金鑰。因此,所述數位簽章可以表示對應節點已知的“視域”、“序號”和/或“摘要”。
框513包括:回應於獲得至少Q個回應訊息,結束視域變換協定。在一些實施例中,結束視域變換協定包括:將由第一節點維護的區塊鏈的第一副本與由第二節點維護的區塊鏈的第二副本同步;並且退出視域變換協定,以使用第一節點的一致性當前視域進入正常操作協定。因此,如果第二節點處於視域v中並且第一節點陷入視域(v+1)中,則第一節點可以結束視域變換協定並在視域v中進入正常操作協定。
圖5B示出了根據本說明書的各種實施例的視域變換方法520的流程圖。方法520可以由圖1的系統112的一個或多個元件(例如,上述節點0、節點1、節點2、......或節點i或者類似設備,或者任何節點和一個或多個附加設備,例如節點A的組合)實現。方法520可以由一個或多個區塊鏈節點(例如,PBFT系統中的主節點或備份節點)實現。主節點和備份節點可以是PBFT模型中定義的節點。方法520可以由包括各種硬體機器和/或軟體的視域變換系統或設備(例如,電腦、伺服器)實現。例如,視域變換系統或設備可以包括一個或多個處理器和一個或多個非暫態電腦可讀儲存媒體(例如,一個或多個記憶體),所述儲存媒體耦合到所述一個或多個處理器並配置有可由所述一個或多個處理器執行的指令,以促使系統或設備(例如,處理器)執行方法520。以下呈現的方法520的操作旨在是說明性的。根據實施方式,方法520可以包括以各種循序執行或並存執行的附加、更少或替代步驟。方法520的進一步細節可以參考圖1至圖4以及上面的相關描述。方法520可以由第二節點執行。
在各種實施例中,方法520可以是電腦實現的待在由多個(N個)節點(例如,PBFT共識系統的節點)維護的區塊鏈上實施的視域變換方法。在一個實施例中,N個節點形成實用拜占庭容錯(PBFT)網路,其中N個節點之一充當主節點而其他(N-1)個節點充當備份節點。方法520可以由N個節點中處於正常操作協定的第二節點(例如,主節點或備份節點)執行。
框521包括:從處於視域變換協定的第一節點獲得視域變換訊息。在一些實施例中,在框521之前,第一節點可能已進入視域變換。當進入視域變換時,第一節點可以將視域變換訊息多播到其他節點。因此,所述第二節點可以獲得這種視域變換訊息。
框522包括:確定第二節點的當前協定狀態。第二節點可以處於正常操作協定或視域變換協定中。
框523包括:回應於確定當前協定狀態是正常操作協定,向第一節點發送回應訊息,所述回應訊息包括(1)所述第二節點已知的指示N個節點中指定的主節點的當前視域以及(2)所述第二節點已知的當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯。
在各種實施例中,至少Q個第二節點的當前視域是v;並且,當處於視域變換協定時,第一節點具有大於v的第一視域。例如,第一節點和第二節點可以在第一節點進入視域變換之前全都具有視域v,但是之後第一節點懷疑第一節點是無功能的,並且已進入具有視域v+1的視域變換,而第二節點仍處於視域v中。在一些實施例中,當前序號大於第一節點已知的第一序號。以上描述了序號的各種示例。同樣如本文所述,所述回應訊息還可以包括最新區塊或最新交易的摘要。
圖6A示出了根據各種實施例的視域變換系統610的方塊圖。視域變換系統610(例如,電腦系統)可以是上述節點0、節點1、節點2、......或節點i或者類似設備,或者任何節點和附加設備(例如,節點A)的組合的實現的示例。方法510可以由視域變換系統610實現。視域變換系統610可以包括一個或多個處理器和一個或多個非暫態電腦可讀儲存媒體(例如,一個或多個記憶體),所述儲存媒體耦合到一個或多個處理器並配置有可由一個或多個處理器執行的指令,以促使系統或設備(例如,處理器)執行方法510。視域變換系統610可以包括與指令(例如,軟體指令)相對應的各種單元/模組。
在一些實施例中,視域變換系統610可以被稱為視域變換裝置(相對於第一節點)。視域變換裝置可以用於維護區塊鏈,其中多個(N個)節點維護區塊鏈,N個節點之一充當主節點而其他(N-1)個節點充當備份節點,視域變換裝置充當N個節點中處於視域變換協定的第一節點。所述視域變換裝置可以包括一個或多個處理器和一個或多個非暫態電腦可讀記憶體,所述記憶體耦合到一個或多個處理器並配置有可由一個或多個處理器執行的指令,以促使裝置執行操作。所述視域變換裝置可以包括與指令(例如,軟體指令)對應的各種單元/模組。所述視域變換裝置可以包括多播模組611、獲取模組612和結束模組613,所述多播模組用於將視域變換訊息多播到N個節點中的至少一些節點;所述獲取模組用於分別從N個節點中的至少Q個第二節點獲得至少Q個回應訊息,所述至少Q個回應訊息各自包括(1)所述第二節點已知的指示N個節點中指定的主節點的一致性當前視域以及(2)所述第二節點已知的一致性當前序號,所述當前序號與由第二節點提交的最新區塊或最新交易相關聯,當前序號大於第一節點已知的第一序號,Q(定額)是(N+F+1)/2向上取最接近整數,F是(N-1)/3向下取最接近整數;所述結束模組用於回應於獲得至少Q個回應訊息,結束視域變換協定。
圖6B示出了根據各種實施例的視域變換系統620的方塊圖。視域變換系統620(例如,電腦系統)可以是上述節點0、節點1、節點2、......或節點i或者類似設備,或者任何節點和附加設備(例如,節點A)的組合的實現的示例。方法520可以由視域變換系統620實現。視域變換系統620可以包括一個或多個處理器和一個或多個非暫態電腦可讀儲存媒體(例如,一個或多個記憶體),所述儲存媒體耦合到一個或多個處理器並配置有可由一個或多個處理器執行的指令,以促使系統或設備(例如,處理器)執行方法520。視域變換系統620可以包括與指令(例如,軟體指令)相對應的各種單元/模組。
在一些實施例中,視域變換系統620可以被稱為視域變換裝置(相對於第二節點)。視域變換裝置可以用於維護區塊鏈,其中多個(N個)節點維護區塊鏈,N個節點之一充當主節點而其他(N-1)個節點充當備份節點,視域變換裝置充當N個節點中處於正常操作協定的第二節點。所述視域變換裝置可以包括一個或多個處理器和一個或多個非暫態電腦可讀記憶體,所述記憶體耦合到一個或多個處理器並配置有可由一個或多個處理器執行的指令,以促使裝置執行操作。所述視域變換裝置可以包括與指令(例如,軟體指令)對應的各種單元/模組。所述視域變換裝置可以包括獲取模組621,用於從處於視域變換協定的第一節點獲得視域變換訊息;確定模組622,用於確定第二節點的當前協定狀態;發送模組623,用於回應於確定當前協定狀態是正常操作協定,向第一節點發送回應訊息,所述回應訊息包括:(1)所述第二節點已知的指示N個節點中指定的主節點的當前視域以及(2)所述第二節點已知的當前序號,所述當前序號與第二節點提交的最新區塊或最新交易相關聯。
本文描述的技術由一個或多個專用計算設備實現。專用計算設備可以是臺式電腦系統、伺服器電腦系統、可擕式電腦系統、手持設備、網路設備或結合硬連線和/或程式邏輯以實現這些技術的任何其他設備或設備的組合。專用計算設備可以被實現為個人電腦、筆記型電腦、蜂巢式電話、照相電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件設備、遊戲控制台、平板電腦、可穿戴設備或其組合。計算設備通常由作業系統軟體控制和協調。傳統的作業系統控制和調度用於執行的電腦進程,執行記憶體管理,提供檔案系統、網路、I/O服務,以及提供用戶介面功能,例如圖形化用戶介面(“GUI”)等。這裡描述的各種系統、裝置、儲存媒體、模組和單元可以在專用計算設備或者一個或多個專用計算設備的一個或多個計算晶片中實現。在一些實施例中,本文描述的指令可以在專用計算設備上的虛擬機器中實現。當被執行時,指令可以促使專用計算設備執行本文描述的各種方法。虛擬機器可以包括軟體、硬體或其組合。例如,虛擬機器可以包括為乙太坊中的智慧合約提供運行時環境的乙太坊虛擬機器(EVM)軟體。
圖7是示出電腦系統700的方塊圖,在所述電腦系統700上可以實現本文描述的任何實施例。系統700可以執行本文描述的任何方法(例如,視域變換方法510、視域變換方法520)。系統700可以在本文描述的任何系統(例如,視域變換系統610、視域變換系統620)中實現。系統700可以在本文描述的任何節點中實現,並且被配置為執行用於實現區塊鏈合約的相應步驟。電腦系統700包括用於通訊資訊的匯流排702或其他通訊機制,與匯流排702耦合以處理資訊的一個或多個硬體處理器704。硬體處理器704可以是例如一個或多個通用微處理器。
電腦系統700還包括耦合到匯流排702的用於儲存資訊和可由處理器704執行的指令的主記憶體706,例如隨機存取記憶體(RAM)、快取記憶體和/或其他動態儲存裝置設備。主記憶體706還可以用於在執行可由處理器704執行的指令期間儲存臨時變數或其他中間資訊。當這些指令儲存在處理器704可存取的儲存媒體中時,這些指令將電腦系統700呈現為被定制以執行指令中指定的操作的專用機器。電腦系統700還包括耦合到匯流排702的用於儲存處理器704的靜態資訊和指令的唯讀記憶體(ROM)708或其他靜態存放裝置。存放裝置710諸如磁片、光碟或USB隨身碟(快閃記憶體碟)等被提供並被耦合到匯流排702以儲存資訊和指令。
電腦系統700可以使用與電腦系統相結合使得電腦系統700成為專用機器或將電腦系統700程式設計為專用機器的定制硬連線邏輯、一個或多個ASIC或FPGA、韌體和/或程式邏輯實現本文所述的技術。根據一個實施例,本文描述的操作、方法和過程由電腦系統700回應於處理器704執行主記憶體706中包含的一個或多個指令的一個或多個序列而執行。這些指令可以從另一儲存媒體(例如存放裝置710)讀入主記憶體706中。主記憶體706中包含的指令序列的執行促使處理器704執行本文描述的處理步驟。在替代實施例中,可以使用硬連線電路代替軟體指令或與軟體指令組合。
主記憶體706、ROM 708和/或存放裝置710可以包括非暫態儲存媒體。本文使用的術語“非暫態媒體”和類似術語是指儲存促使機器以特定方式操作的資料和/或指令的媒體,所述媒體不包括暫時性信號。這種非暫態媒體可以包括非揮發性媒體和/或揮發性媒體。例如,非揮發性媒體包括光碟或磁片,諸如存放裝置710。揮發性媒體包括動態儲存裝置器,例如主記憶體706。常規形式的非暫態媒體包括,例如,軟碟、軟碟、硬碟、固態硬碟、磁帶或任何其他磁資料儲存媒體、CD-ROM、任何其他光學資料儲存媒體、具有孔圖案的任何實體媒體、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他記憶體晶片或盒式磁帶的以及它們的網路版本。
電腦系統700還包括耦合到匯流排702的網路介面718。網路介面718提供耦合到一個或多個網路鏈路的雙向資料通訊,所述一個或多個網路鏈路連接到一個或多個本地網路。例如,網路介面718可以是整合式服務數位網路(ISDN)卡、纜線數據機、衛星數據機或數據機,以提供與相應類型的電話線的資料通訊連接。作為另一示例,網路介面718可以是局域網(LAN)卡,以提供到相容LAN(或與WAN通訊的WAN元件)的資料通訊連接。還可以實現無線鏈路。在任何這樣的實施方式中,網路介面718發送和接收攜帶表示各種類型的資訊的數位資料流程的電信號、電磁信號或光信號。
電腦系統700可以通過網路、網路鏈路和網路介面718發送訊息和接收資料,包括程式碼。在網際網路示例中,伺服器可以通過網際網路、ISP、本地網路和網路介面718發送用於應用程式的請求代碼。
所接收的代碼可在其被接收時由處理器704執行,和/或儲存在存放裝置710或其他非揮發性記憶體中以用於稍後執行。
前面部分中描述的每個過程、方法和演算法可以在由包括電腦硬體的一個或多個電腦系統或電腦處理器執行的代碼模組中實現,並且完全或部分自動化地實現。過程和演算法可以部分或全部地在專用電路中實現。
上述各種特徵和過程可以彼此獨立地使用,或者可以以各種方式組合。所有可能的組合和子組合都旨在落入本說明書的範圍內。另外,在一些實施方式中可以省略某些方法或過程框。本文描述的方法和過程也不限於任何特定序列,與其相關的框或狀態可以以適當的其他序列執行。例如,所描述的框或狀態可以以不同於具體公開的循序執行,或者多個框或狀態可以在單個框或狀態中組合。框或狀態的示例可以串列、並行或以某種其他方式執行。可以將框或狀態添加到所公開的實施例中或從所公開的實施例中移除。本文描述的系統和元件的示例可以與所描述的不同地被配置。例如,與所公開的實施例相比,可以添加、移除或重新排列元件。
本文描述的方法的各種操作可以至少部分地由被臨時配置(例如,通過軟體)或被永久配置為執行相關操作的一個或多個處理器執行。無論是臨時配置還是永久配置,這樣的處理器可以構成處理器實現引擎,所述處理器實現引擎操作以執行本文描述的一個或多個操作或功能。
類似地,本文描述的方法可以至少部分地由處理器實現,其中一個或多個特定處理器是硬體的示例。例如,所述方法的至少一些操作可以由一個或多個處理器或處理器實現引擎執行。此外,一個或多個處理器還可以操作以支援“雲計算”環境中的相關操作的性能或作為“軟體即服務”(SaaS)。例如,至少一些操作可以由一組電腦(作為包括處理器的機器的示例)執行,這些操作可以經由網路(例如,網際網路)並且經由一個或多個適當的介面(例如,應用程式介面(API))被存取。
某些操作的性能可以在處理器之間分配,不僅駐留在單個機器中,而且跨多個機器被部署。在一些實施例中,處理器或處理器實現引擎可以位於單個地理位置(例如,在家庭環境、辦公室環境或伺服器群內)。在其他實施例中,處理器或處理器實現引擎可以分佈在多個地理位置。
在整個說明書中,多個實例可以實現作為單個實例所描述的元件、操作或結構。儘管一個或多個方法的各個操作被示出並描述為獨立的操作,但是可以同時執行一個或多個獨立的操作,並且不需要以所示的循序執行所述操作。在配置中作為獨立元件呈現的結構和功能可以實現為組合結構或元件。類似地,作為單個元件呈現的結構和功能可以實現為獨立的元件。這些和其他變化、修改、添加和改進都落入本文中的主題的範圍內。此外,本文使用的相關術語(諸如“第一”、“第二”、“第三”等)不表示任何順序、高度或重要性,而是用於將一個元件與另一元件區分開。此外,術語“一”、“一個”和“多個”在本文中並不表示數量的限制,而是表示存在至少一個所述的物品。
儘管已經參考具體實施例描述了主題的概述,但是在不脫離本說明書的實施例的較寬範圍的情況下,可以對這些實施例進行各種修改和改變。具體實施方式不應被視為具有限制意義,並且各種實施例的範圍僅由所附申請專利範圍以及這些申請專利範圍所賦予的等同物的全部範圍限定。
120:網路
112:網路系統
410~523:步驟
610:視域變換系統
611:多播模組
612:獲取模組
613:結束模組
620:視域變換系統
621:獲取模組
622:確定模組
623:發送模組
700:電腦系統
702:匯流排
704:處理器
706:主記憶體
708:唯讀記憶體(ROM)
710:存放裝置
718:網路介面
[圖1]示出了根據各種實施例的網路。
[圖2A]示出了PBFT的正常操作協定。
[圖2B]示出了具有一個無功能副本的PBFT的正常操作協定。
[圖2C]示出了PBFT的正常操作協定和視域變換協定。
[圖3A]示出了正常操作協定和視域變換協定之間切換路徑的流程圖。
[圖3B]示出了根據各種實施例的在正常操作協定和視域變換協定之間切換路徑的流程圖。
[圖4]示出了根據各種實施例的視域變換退出步驟的流程圖。
[圖5A]示出了根據各種實施例的視域變換方法的流程圖。
[圖5B]示出了根據各種實施例的視域變換方法的流程圖。
[圖6A]示出了根據各種實施例的視域變換系統的方塊圖。
[圖6B]示出了根據各種實施例的視域變換系統的方塊圖。
[圖7]示出了電腦系統的方塊圖,其中可以實現本文描述的任何實施例。
112:網路系統
120:網路
Claims (25)
- 一種電腦實現的待在由多個(N個)節點維護的區塊鏈上實施的共識方法,該方法由該N個節點中處於視域變換協定的第一節點執行,該方法包括: 將視域變換訊息多播到該N個節點中的至少一些節點; 分別從該N個節點中的至少Q個第二節點獲得至少Q個回應訊息,該至少Q個回應訊息各自包括(1)該第二節點已知的指示該N個節點中指定的主節點的一致性當前視域以及(2)該第二節點已知的一致性當前序號,該當前序號與該第二節點提交的最新區塊或最新交易相關聯,該當前序號大於該第一節點已知的第一序號,定額Q是(N+F+1)/2向上取最接近的整數,F是(N-1)/3向下取最接近的整數;並且 回應於獲得該至少Q個回應訊息,結束該視域變換協定。
- 如請求項1所述的方法,其中: 該至少Q個回應訊息分別由該至少Q個第二節點回應於該至少Q個第二節點獲得該視域變換訊息而發送到該第一節點。
- 如請求項1和2中任一項所述的方法,其中: 該當前序號包括由該第二節點維護的該區塊鏈的第二副本的長度;並且 該第一序號包括由該第一節點維護的該區塊鏈的第一副本的長度。
- 如請求項1和2中任一項所述的方法,其中: 該當前序號包括該第二節點提交的最新交易的序號;並且 該第一序號包括該第一節點提交的最新交易的序號。
- 如請求項1和2中任一項所述的方法,其中: 該回應訊息包括認證該當前視域和該當前序號均為該第二節點已知的數位簽章。
- 如請求項1和2中任一項所述的方法,其中: 該回應訊息還包括該最新區塊或該最新交易的摘要。
- 如請求項6所述的方法,其中: 該摘要包括該最新區塊或該最新交易的雜湊值。
- 如請求項7所述的方法,其中: 該摘要包括該第二節點已知但該第一節點未知的該最新區塊的區塊梅克爾根。
- 如請求項1和2中任一項所述的方法,其中,結束該視域變換協定包括: 將由該第一節點維護的該區塊鏈的第一副本與由該第二節點維護的該區塊鏈的第二副本進行同步;並且 退出該視域變換協定,以使用該第一節點的該一致性當前視域進入正常操作協定。
- 如請求項1和2中任一項所述的方法,其中: 該至少Q個第二節點已知的該當前序號是n+1; 該第一節點已知的該第一序號是n; 該至少Q個第二節點的當前視域是v;以及 當在該視域變換協定中時,該第一節點具有大於v的第一視域。
- 如請求項1和2中任一項所述的方法,其中: 該N個節點形成實用拜占庭容錯(PBFT)網路,其中,該N個節點之一充當主節點而其他N-1個節點充當備份節點。
- 一種視域變換系統,包括: 一個或多個處理器;和 耦合到該一個或多個處理器並且其上儲存有指令的一個或多個電腦可讀記憶體,該指令能由該一個或多個處理器執行以執行請求項1至11中任一項所述的方法。
- 一種視域變換裝置,包括用於執行請求項1至11中任一項所述的方法的多個模組。
- 一種電腦實現的待在由多個(即N個)節點維護的區塊鏈上實施的共識方法,該方法由該N個節點中處於正常操作協定的第二節點執行,該方法包括: 從處於視域變換協定的第一節點獲取視域變換訊息; 確定該第二節點的當前協定狀態;以及 回應於確定該當前協定狀態是正常操作協定,向該第一節點發送回應訊息,該回應訊息包括(1)該第二節點已知的指示該N個節點中指定的主節點的當前視域和(2)該第二節點已知的當前序號,該當前序號與該第二節點提交的最新區塊或最新交易相關聯。
- 如請求項14所述的方法,其中: 該當前序號大於該第一節點已知的第一序號。
- 如請求項14和15中任一項所述的方法,其中: 該當前序號包括由該第二節點維護的該區塊鏈的第二副本的長度;以及 該第一序號包括由該第一節點維護的該區塊鏈的第一副本的長度。
- 如請求項14和15中任一項所述的方法,其中: 該當前序號包括該第二節點提交的最新交易的序號;以及 該第一序號包括該第一節點提交的最新交易的序號。
- 如請求項14和15中任一項所述的方法,其中: 該回應訊息包括認證該當前視域和該當前序號均為該第二節點已知的數位簽章。
- 如請求項14和15中任一項所述的方法,其中: 該回應訊息還包括該最新區塊或該最新交易的摘要。
- 如請求項19所述的方法,其中: 該摘要包括該最新區塊或該最新交易的雜湊值。
- 如請求項20所述的方法,其中: 該摘要包括該第二節點已知但該第一節點未知的該最新區塊的梅克爾根。
- 如請求項14和15中任一項所述的方法,其中: 該第二節點已知的該當前序號是n+1; 該第一節點已知的該第一序號是n; 該第二節點的該當前視域是v;以及 當處於該視域變換協定中時,該第一節點具有大於v的第一視域。
- 如請求項14和15中任一項所述的方法,其中: 該N個節點形成實用拜占庭容錯(PBFT)網路,其中,該N個節點之一充當主節點而其他N-1個節點充當備份節點。
- 一種視域變換系統,包括: 一個或多個處理器;和 耦合到該一個或多個處理器並且其上儲存有指令的一個或多個電腦可讀記憶體,該指令能由該一個或多個處理器執行以執行請求項14至23中任一項所述的方法。
- 一種視域變換裝置,包括用於執行請求項14至23中任一項所述的方法的多個模組。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2019/078492 | 2019-03-18 | ||
PCT/CN2019/078492 WO2019101242A2 (en) | 2019-03-18 | 2019-03-18 | System and method for ending view change protocol |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202037116A TW202037116A (zh) | 2020-10-01 |
TWI717135B true TWI717135B (zh) | 2021-01-21 |
Family
ID=66631238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108144681A TWI717135B (zh) | 2019-03-18 | 2019-12-06 | 用於結束視域變換協定的系統和方法 |
Country Status (10)
Country | Link |
---|---|
US (3) | US11263067B2 (zh) |
EP (1) | EP3596888B1 (zh) |
JP (1) | JP6923674B2 (zh) |
KR (1) | KR102170347B1 (zh) |
CN (1) | CN110785966B (zh) |
AU (1) | AU2019203862B2 (zh) |
CA (1) | CA3057395A1 (zh) |
SG (1) | SG11201908887XA (zh) |
TW (1) | TWI717135B (zh) |
WO (1) | WO2019101242A2 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263067B2 (en) | 2019-03-18 | 2022-03-01 | Advanced New Technologies Co., Ltd. | System and method for ending view change protocol |
WO2019101241A2 (en) * | 2019-03-18 | 2019-05-31 | Alibaba Group Holding Limited | System and method for ending view change protocol |
US10778452B2 (en) * | 2019-06-03 | 2020-09-15 | Alibaba Group Holding Limited | Blockchain ledger authentication |
US11513923B2 (en) * | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
KR102460432B1 (ko) * | 2020-06-30 | 2022-10-27 | 주식회사 트러스트디비 | Rdbms 기반의 분산원장 관리 시스템 및 방법 |
CN111526216B (zh) * | 2020-07-03 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN111526165B (zh) * | 2020-07-03 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN111526218B (zh) * | 2020-07-03 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN112381649B (zh) * | 2020-11-17 | 2024-06-18 | 深圳前海微众银行股份有限公司 | 基于区块链的交易共识方法、装置及设备 |
KR102652737B1 (ko) * | 2021-09-29 | 2024-04-01 | 한양대학교 산학협력단 | 블록체인 네트워크를 위한 효율적인 듀얼모드 합의 프로토콜 |
CN117202183B (zh) * | 2023-09-13 | 2024-03-12 | 北京航空航天大学 | 一种基于同步拜占庭容错的轻量级5g设备群组认证方法 |
CN116915796B (zh) * | 2023-09-14 | 2023-12-12 | 杭州趣链科技有限公司 | 集群视图分叉后的自主恢复方法、装置以及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671821B1 (en) * | 1999-11-22 | 2003-12-30 | Massachusetts Institute Of Technology | Byzantine fault tolerance |
US20120254412A1 (en) * | 2011-03-28 | 2012-10-04 | Siemens Corporation | Replicated state machine utilizing view change protocol resilient to performance attacks |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3345360B1 (en) | 2015-09-04 | 2021-03-03 | Nec Corporation | Method for storing an object on a plurality of storage nodes |
US10803537B2 (en) | 2016-04-18 | 2020-10-13 | R3 Ltd. | System and method for managing transactions in dynamic digital documents |
US10204341B2 (en) | 2016-05-24 | 2019-02-12 | Mastercard International Incorporated | Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees |
US10713731B2 (en) | 2016-07-22 | 2020-07-14 | Nec Corporation | Method for secure ledger distribution and computer system using secure distributed ledger technology |
EP3281115B1 (en) | 2016-10-04 | 2019-06-19 | Nec Corporation | Method and system for byzantine fault-tolerance replicating of data on a plurality of servers |
JP6825296B2 (ja) * | 2016-10-11 | 2021-02-03 | 富士通株式会社 | エッジサーバ,及びその暗号化通信制御方法 |
US10540652B2 (en) | 2016-11-18 | 2020-01-21 | Intel Corporation | Technology for secure partitioning and updating of a distributed digital ledger |
EP3394756B1 (en) * | 2016-11-25 | 2024-01-03 | NEC Corporation | Method and system for byzantine fault - tolerance replicating of data |
US10523421B2 (en) | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US10586210B2 (en) | 2016-11-30 | 2020-03-10 | International Business Machines Corporation | Blockchain checkpoints and certified checkpoints |
US20180158034A1 (en) | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Dynamic reordering of blockchain transactions to optimize performance and scalability |
CN106529951A (zh) * | 2016-12-30 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种联盟链网络下采用异步方式的节点共识验证方法 |
US11954697B2 (en) | 2017-02-27 | 2024-04-09 | Ncr Corporation | Blockchain consumer ledger |
US20180267539A1 (en) | 2017-03-17 | 2018-09-20 | Jeanne Louise Shih | Distributive networks of groups of moveable autonomous devices |
CN107391320B (zh) * | 2017-03-10 | 2020-07-10 | 创新先进技术有限公司 | 一种共识方法及装置 |
WO2018170504A1 (en) | 2017-03-17 | 2018-09-20 | Labyrinth Research Llc | Unified control of privacy-impacting devices |
CN107360206B (zh) | 2017-03-29 | 2020-03-27 | 创新先进技术有限公司 | 一种区块链共识方法、设备及系统 |
CN106789095B (zh) | 2017-03-30 | 2020-12-08 | 腾讯科技(深圳)有限公司 | 分布式系统及消息处理方法 |
CN107040594B (zh) | 2017-04-12 | 2020-04-10 | 山大地纬软件股份有限公司 | 基于pbft的许可区块链节点准入的方法及装置 |
US10503614B2 (en) * | 2017-04-21 | 2019-12-10 | Vmware, Inc. | Byzantine agreement using communications having linear complexity |
US10896169B2 (en) | 2017-05-12 | 2021-01-19 | International Business Machines Corporation | Distributed system, computer program product and method |
EP3632037B1 (en) | 2017-05-22 | 2024-10-16 | Visa International Service Association | Network for improved verification speed with tamper resistant data |
JP2019012415A (ja) * | 2017-06-30 | 2019-01-24 | 株式会社bitFlyer | ネットワークにおける合意形成方法及び当該ネットワークを構成するノード |
US20190012662A1 (en) | 2017-07-07 | 2019-01-10 | Symbiont.Io, Inc. | Systems, methods, and devices for reducing and/or eliminating data leakage in electronic ledger technologies for trustless order matching |
CN107528882B (zh) * | 2017-07-14 | 2020-12-25 | 创新先进技术有限公司 | 区块链共识网络中处理共识请求的方法、装置和电子设备 |
US10984134B2 (en) * | 2017-07-14 | 2021-04-20 | Microsoft Technology Licensing, Llc | Blockchain system for leveraging member nodes to achieve consensus |
US10567359B2 (en) | 2017-07-18 | 2020-02-18 | International Business Machines Corporation | Cluster of secure execution platforms |
EP3439264B1 (en) | 2017-08-01 | 2021-06-02 | Panasonic Intellectual Property Corporation of America | Management system, vehicle, and information processing method |
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 | 上海保险交易所股份有限公司 | 实用拜占庭容错共识机制中动态更改共识节点的方法 |
US10672211B2 (en) * | 2017-08-31 | 2020-06-02 | BinBox, Inc. | Secure storage systems and methods |
CN107819749A (zh) | 2017-10-26 | 2018-03-20 | 平安科技(深圳)有限公司 | 基于以太坊的区块链系统和交易数据处理方法 |
CN108108967B (zh) * | 2017-12-29 | 2020-10-16 | 山大地纬软件股份有限公司 | 面向复杂数字资产的多阶段pbft共识系统及方法 |
US20190251199A1 (en) | 2018-02-14 | 2019-08-15 | Ivan Klianev | Transactions Across Blockchain Networks |
CN109039748B (zh) * | 2018-08-10 | 2021-09-03 | 上交所技术有限责任公司 | 一种pbft协议动态增删节点的方法 |
CN109194493B (zh) * | 2018-08-13 | 2020-11-13 | 北京邮电大学 | 一种信息管理系统、方法及装置 |
RU2724181C1 (ru) | 2018-11-07 | 2020-06-22 | Алибаба Груп Холдинг Лимитед | Упрощение консенсуса в цепочках блоков по принципу практичной отказоустойчивости на основе византийского соглашения и синхронизации узлов |
US20200162266A1 (en) | 2018-11-16 | 2020-05-21 | Adobe Inc. | Facilitating analytic services for provenance of digital documents |
US10938750B2 (en) | 2019-03-18 | 2021-03-02 | Advanced New Technologies Co., Ltd. | Consensus system downtime recovery |
SG11201908387SA (en) | 2019-03-18 | 2019-10-30 | Alibaba Group Holding Ltd | Consensus system downtime recovery |
US11263067B2 (en) | 2019-03-18 | 2022-03-01 | Advanced New Technologies Co., Ltd. | System and method for ending view change protocol |
WO2019101241A2 (en) | 2019-03-18 | 2019-05-31 | Alibaba Group Holding Limited | System and method for ending view change protocol |
SG11202004685RA (en) | 2019-06-05 | 2020-06-29 | Alibaba Group Holding Ltd | Consensus system and method |
US10944624B2 (en) | 2019-06-28 | 2021-03-09 | Advanced New Technologies Co., Ltd. | Changing a master node in a blockchain system |
CN114401150B (zh) | 2019-09-05 | 2023-10-20 | 创新先进技术有限公司 | 区块链网络中加入节点的方法和区块链系统 |
CN110730204B (zh) | 2019-09-05 | 2022-09-02 | 创新先进技术有限公司 | 区块链网络中删除节点的方法和区块链系统 |
-
2019
- 2019-03-18 US US16/498,348 patent/US11263067B2/en active Active
- 2019-03-18 CN CN201980002995.6A patent/CN110785966B/zh active Active
- 2019-03-18 JP JP2019562589A patent/JP6923674B2/ja active Active
- 2019-03-18 CA CA3057395A patent/CA3057395A1/en not_active Abandoned
- 2019-03-18 SG SG11201908887X patent/SG11201908887XA/en unknown
- 2019-03-18 KR KR1020197032390A patent/KR102170347B1/ko active IP Right Grant
- 2019-03-18 AU AU2019203862A patent/AU2019203862B2/en active Active
- 2019-03-18 EP EP19725896.5A patent/EP3596888B1/en active Active
- 2019-03-18 WO PCT/CN2019/078492 patent/WO2019101242A2/en unknown
- 2019-12-06 TW TW108144681A patent/TWI717135B/zh active
-
2020
- 2020-01-06 US US16/735,457 patent/US10725843B2/en active Active
- 2020-06-16 US US16/902,401 patent/US10877829B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671821B1 (en) * | 1999-11-22 | 2003-12-30 | Massachusetts Institute Of Technology | Byzantine fault tolerance |
US20120254412A1 (en) * | 2011-03-28 | 2012-10-04 | Siemens Corporation | Replicated state machine utilizing view change protocol resilient to performance attacks |
Also Published As
Publication number | Publication date |
---|---|
JP6923674B2 (ja) | 2021-08-25 |
EP3596888A4 (en) | 2020-05-13 |
WO2019101242A2 (en) | 2019-05-31 |
WO2019101242A3 (en) | 2019-12-26 |
US10877829B2 (en) | 2020-12-29 |
EP3596888A2 (en) | 2020-01-22 |
US11263067B2 (en) | 2022-03-01 |
US10725843B2 (en) | 2020-07-28 |
US20200142765A1 (en) | 2020-05-07 |
TW202037116A (zh) | 2020-10-01 |
JP2020519959A (ja) | 2020-07-02 |
EP3596888B1 (en) | 2022-08-03 |
KR102170347B1 (ko) | 2020-10-28 |
CN110785966A (zh) | 2020-02-11 |
US20200110648A1 (en) | 2020-04-09 |
KR20200112636A (ko) | 2020-10-05 |
CN110785966B (zh) | 2022-08-26 |
AU2019203862B2 (en) | 2020-07-09 |
US20200310901A1 (en) | 2020-10-01 |
SG11201908887XA (en) | 2019-10-30 |
CA3057395A1 (en) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI709063B (zh) | 用於結束視域變換協定的系統和方法 | |
TWI717135B (zh) | 用於結束視域變換協定的系統和方法 | |
TWI724678B (zh) | 共識系統停機時間恢復 | |
CN111630826B (zh) | 共识系统和方法 | |
TWI729609B (zh) | 共識系統停機時間恢復 | |
AU2019101575A4 (en) | System and method for ending view change protocol |