TW202023232A - 分布式網路中進行主節點變更的系統 - Google Patents
分布式網路中進行主節點變更的系統 Download PDFInfo
- Publication number
- TW202023232A TW202023232A TW108125656A TW108125656A TW202023232A TW 202023232 A TW202023232 A TW 202023232A TW 108125656 A TW108125656 A TW 108125656A TW 108125656 A TW108125656 A TW 108125656A TW 202023232 A TW202023232 A TW 202023232A
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- epoch
- new
- message
- network
- Prior art date
Links
- 230000008859 change Effects 0.000 title claims abstract description 79
- 238000000034 method Methods 0.000 claims abstract description 131
- 230000004044 response Effects 0.000 claims abstract description 87
- 230000008569 process Effects 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims description 194
- 238000012795 verification Methods 0.000 claims description 65
- 238000012790 confirmation Methods 0.000 claims description 6
- 238000012797 qualification Methods 0.000 claims description 6
- 239000002131 composite material Substances 0.000 description 31
- 238000011084 recovery Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 18
- 230000007246 mechanism Effects 0.000 description 16
- 230000009471 action Effects 0.000 description 13
- 238000004590 computer program Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001976 improved effect Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000007616 round robin method Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 208000024891 symptom Diseases 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- 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
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/1425—Reconfiguring to eliminate the error by reconfiguration of node membership
-
- 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
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- 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/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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
-
- 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/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0659—Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Power Engineering (AREA)
- Hardware Redundancy (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
一種在區塊鏈網路中進行主節點變更的方法,包括:區塊鏈網路中的備節點確定需要進行時元改變;確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應權重;基於該相應權重,確定該備節點的權重和;向其他網路節點發送EPOCH_CHANGE消息以申請作為新時元內的新主節點;從其他網路節點接收NEW_EPOCH消息;確定有效NEW_EPOCH消息的數量是否超過第二預設閾值;以及回應於確定該有效NEW_EPOCH消息的數量超過了該第二預設閾值,確定該備節點將成為該新時元內的該新主節點。
Description
本發明係關於分布式網路技術領域,具體而言,關於一種分布式網路中進行主節點變更的系統。
分布式帳本系統(DLS),又稱共識網路和/或區塊鏈網路,使得參與的實體能夠安全地且不可竄改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路的示例可以包括:公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。公有區塊鏈網路向所有實體開放使用DLS,並開放參與共識處理。私有區塊鏈網路針對特定實體提供,該實體集中控制讀寫權限。聯盟區塊鏈網路針對選擇的實體組群提供,該實體組群控制共識處理,並包括存取控制層。
共識機制是分布式區塊鏈系統的主要組成部分。共識機制是電腦科學用在分布式處理或系統中就單一資料值達成共識的處理。共識機制是為了在涉及多個不可靠節點的網路中實現可靠性而設計的。解決該問題(所謂共識問題)在分布式計算及多代理系統中非常重要。
區塊鏈依賴於共識機制以在節點之間達成協議。區塊鏈是在點對點(P2P)網路中由分布式電腦管理的去中心化資料庫。每個節點維護一份帳本的副本以防止單點故障(SPOF)。更新和驗證同時反映於所有副本中。
儘管可以使用多個現有技術在區塊鏈系統的網路節點中執行共識,但用於執行共識的更有效的解決方案將是有優勢的。
本發明的實施方式包括用於解決分布式系統(例如,區塊鏈網路)中的共識問題的電腦實施方法。更具體地,本發明的實施方式涉及在分布式系統中進行主節點的變更。
在一些實施方式中,動作包括:區塊鏈網路中的備節點確定需要進行時元改變(epoch change),其中,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元,當前時元包括利用主節點在多個網路節點之間達成共識的共識處理,且該共識處理包括三個階段;該備節點確定該備節點在當前時元內的該共識處理的三個階段中的每個階段的相應權重;該備節點基於該備節點在當前時元內的三個階段中的每個階段的相應權重,確定該備節點的權重和;回應於確定該權重和達到第一預設閾值,該備節點向該多個網路節點中除該備節點外的其他網路節點發送EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息表示請求將具有當前主節點的當前時元變更為該備節點作為新主節點的新時元,且該EPOCH_CHANGE消息包括該備節點的該權重和;該備節點從該多個網路節點中除該備節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息,其中,該NEW_EPOCH消息表示確認該備節點將成為該新主節點;該備節點驗證該至少一個NEW_EPOCH消息是否有效;該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過第二預設閾值;以及回應於確定有效NEW_EPOCH消息的數量超過該第二預設閾值,該備節點確定該備節點成為新時元中的新主節點。
其他實施方式包括對應的系統、裝置和電腦程式,該電腦程式被配置為實現該方法的動作並被編碼在電腦儲存設備上。
這些和其他實施方式可各自可選地包括以下特徵中的一個或多個:
第一特徵,可與以下任何特徵組合,其中,該備節點將該備節點在該共識處理的第一階段的權重確定為第一值。
第二特徵,可與以下任何特徵組合,其中,回應於確定該當前時元內的該共識處理的該第二階段的Quorum驗證失敗,該備節點將該備節點在該共識處理的該第二階段的權重確定為第一值,以及回應於確定該當前時元內的該共識處理的該第二階段的Quorum驗證成功,該備節點將該備節點在該共識處理的該第二階段的權重確定為大於該第一值的第二值。
第三特徵,可與以下任何特徵組合,其中,該網路節點在該第二階段中的該Quorum驗證包括:從其他網路節點接收預設數量的ECHO消息。
第四特徵,可與以下任何特徵組合,其中,回應於確定該當前時元內的該共識處理的該第三階段的Quorum驗證失敗,該備節點將該備節點在該共識處理的該第三階段的權重確定為第三值,且回應於確定該當前時元內的該共識處理的該第三階段的Quorum驗證成功,該備節點將該備節點在該共識處理的該第三階段的權重確定為大於該第三值的第四值。
第五特徵,可與以下任何特徵組合,其中,該第三階段中對網路節點的該Quorum驗證包括:從其他網路節點接收預設數量的接受消息,其中,來自其他網路節點的每個接受消息表示每個其他網路節點已經接受預設數量的ECHO消息。
第六特徵,可與以下任何特徵組合,其中,該EPOCH_CHANGE消息還包括與多個網路節點中的一組網路節點相關聯的一組簽名,且該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要。
第七特徵,可與以下任何特徵組合,其中,驗證該至少一個有效NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH中的該EPOCH_CHANGE消息的摘要是否有效。
第八特徵,可與以下任何特徵組合,其中,驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,包括:驗證該EPOCH_CHANGE消息的該組簽名是否有效。
第九特徵,可與以下任何特徵組合,其中,回應於確定在該舊時元中在預設時間內尚未達成共識,該備節點確定需要進行時元改變。
第十特徵,可與以下任何特徵組合,其中,該新時元包括利用該新主節點在該多個網路節點之間用於達成共識的共識處理。
在一些實施方式中,動作包括:多個網路節點中的一個網路節點從除該網路節點外的備節點接收EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息包括需要進行時元改變的指示,該時元改變促使從擁有當前主節點的當前時元變更為擁有新主節點的新時元;該網路節點驗證該EPOCH_CHANGE消息是否有效;回應於驗證該EPOCH_CHANGE消息是有效的,該網路節點向其他網路節點發送NEW_EPOCH消息,其中,該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要;該網路節點從多個網路節點中除該網路節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息;該網路節點驗證該至少一個NEW_EPOCH消息是否有效;該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過預設閾值;以及回應於確定該有效NEW_EPOCH消息的數量超過了該預設閾值,該網路節點確定該備節點成為該新時元中的該新主節點。
其他實施方式包括對應的系統、裝置和電腦程式,該電腦程式被配置為實現該方法的操作並被編碼在電腦儲存設備上。
這些和其他實施方式可各自可選地包括以下特徵中的一個或多個:
第一特徵,可與以下任何特徵組合,其中,該EPOCH_CHANGE消息包括與該備節點關聯的權重和,以及與該多個網路節點中的一組網路節點關聯的一組簽名。
第二特徵,可與以下任何特徵組合,其中,驗證該EPOCH_CHANGE消息是否有效,包括:驗證該EPOCH_CHANGE消息中的該權重和是否有效;並且,驗證該EPOCH_CHANGE消息中的該權重和是否有效,包括:驗證該組簽名是否有效。
第三特徵,可與以下任何特徵組合,其中,驗證該至少一個NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的摘要是否有效;並且,驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的摘要是否有效,包括:驗證該EPOCH_CHANGE消息中的該組簽名是否有效。
本發明還提供了耦接到一個或多個處理器並且其上儲存有指令的一個或多個非暫態電腦可讀取儲存介質,當該指令由一個或多個處理器執行時,該指令促使一個或多個處理器按照本文提供的方法的實施方式進行操作。
本發明還提供了用於實施本文提供的方法的系統。該系統包括一個或多個處理器以及耦接到一個或多個處理器並且其上儲存有指令的電腦可讀取儲存介質,當該指令由一個或多個處理器執行該指令時,該指令促使一個或多個處理器根據本文提供的方法的實施方式進行操作。
本發明公開了改良的共識機制,包括用於以下的技術:在分布式系統內的網路節點之間達成共識,在分布式系統中實現主節點的變更,以及在分布式系統中實現網路節點的恢復處理。該共識機制可在不同應用中實現各種優點。
例如,下述共識處理包括許多特徵,這些特徵改良了區塊鏈系統的操作並且幫助緩解了網路瓶頸。例如,該共識處理包括根據糾刪碼(EC)將交易請求轉換為多個EC區塊,並向每個網路節點發送其中一個EC區塊。該EC區塊的大小比初始交易請求的小。因此,向該網路節點發送該EC區塊而不是完整交易請求,減小了在區塊鏈網路中的網路節點間傳輸的資料區塊的大小,從而節省了網路帶寬並減少了網路負載。這進一步減少了寫入網路節點的儲存空間及從網路節點的儲存空間讀取的資料大小,從而減輕了網路節點的儲存空間的負擔並提高了整個區塊鏈系統的效率。
此外,本發明描述了時元改變處理,該處理包括將相應權重分配給該共識處理的多個階段,基於該多個階段的該相應權重確定權重和,並基於該權重和確定新主節點。基於該權重和而不是輪詢法(round robin method)的時元改變處理有助於及時選擇非錯誤新主節點。與該輪詢法不同,本發明中的時元改變處理依賴於該權重和來選擇該新主節點,這可以減少尋找無錯誤的該新主節點時的延時或延遲。此方法可以進一步提高該整個區塊鏈系統在提供該區塊鏈服務時的效率。
另外,本發明討論了恢復處理,該恢復處理包括諸如由網路節點發送申請成為新主節點的狀態請求消息、並從其他網路節點接收狀態回復消息的操作。這些操作被執行使得該錯誤網路節點的該恢復處理不干擾其他非錯誤網路節點之間的該共識處理的正常操作。通過降低該恢復處理的複雜性來恢復錯誤網路節點,這有助於節省計算和網路資源。
應當確認的是,根據本發明的方法可以包括本文描述的方面和特徵的任何組合。也即,根據本發明的方法不限於本文所詳述的方面和特徵的組合,還包括任何方面和特徵的任何組合。
以下在圖式和描述中闡述了本發明的一個或多個實施方式的細節。根據說明書和圖式以及申請專利範圍,本發明的其他特徵和優點將顯而易見。
本發明的實施方式包括用於解決分布式系統(例如區塊鏈網路)中的共識問題的電腦實施方法。更具體地,本發明的實施方式涉及在分布式系統中進行主節點的變更。
在一些實施方式中,動作包括:區塊鏈網路中的備節點確定需要進行時元改變(epoch change),其中,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元,該當前時元包括利用主節點在多個網路節點之間達成共識的共識處理,該共識處理包括三個階段;該備節點確定該備節點在當前時元內的該共識處理的三個階段中的每個階段的相應權重;該備節點基於該備節點在該當前時元內的三個階段中的每個階段的相應權重,確定該備節點的權重和;回應於確定該權重和達到第一預設閾值,該備節點向多個網路節點中除該備節點外的其他網路節點發送EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息表示請求將具有該當前主節點的該當前時元變更為該備節點作為新主節點的新時元,且EPOCH_CHANGE包括該備節點的權重和;該備節點從多個網路節點中除該備節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息,其中,NEW_EPOCH消息表示確認該備節點將成為新主節點;該備節點驗證至少一個NEW_EPOCH消息是否有效;該備節點確定至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過第二預設閾值;以及回應於確定有效NEW_EPOCH消息的數量超過該第二預設閾值,該備節點確定該備節點成為該新時元中的該新主節點。
在一些實施方式中,動作包括:多個網路節點中的一個網路節點從除該網路節點外的備節點接收EPOCH_CHANGE消息,其中,EPOCH_CHANGE消息包括需要進行時元改變的指示,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元;該網路節點驗證該EPOCH_CHANGE消息是否有效;回應於驗證該EPOCH_CHANGE消息是有效的,該網路節點向其他網路節點發送NEW_EPOCH消息,其中,該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要;該網路節點從多個網路節點中除該網路節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息;該網路節點驗證該至少一個NEW_EPOCH消息是否有效;該備節點確定至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過預設閾值;以及回應於確定該有效NEW_EPOCH消息的數量超過了預設閾值,該網路節點確定該備節點成為新時元中的新主節點。
為本發明實施方式提供進一步的背景,並且如上所述,分布式帳本系統(DLS),又可稱為共識網路(例如,由點對點節點組成)或區塊鏈網路,使得參與的實體能夠安全地且不可竄改地進行交易和儲存資料。在不參考任何特定用例的情況下,本文中所用術語"區塊鏈"通常是指DLS。如上所述,區塊鏈網路的示例可以包括:公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。
區塊鏈是一種資料結構,其以一種允許驗證未來交易以與儲存在鏈中的所有先前交易一致的方式儲存交易。區塊鏈包括一個或多個區塊。鏈中的每個區塊通過包含在該鏈中緊鄰其之前的前一區塊的加密雜湊值(cryptographic hash)來連接到該前一區塊。每個區塊還包括時間戳,其自身的加密雜湊值以及一個或多個交易。已經被區塊鏈網路中的節點驗證過的交易經雜湊處理並編入梅克爾樹(Merkle tree)中。Merkle樹是一種資料結構,其中在該樹的葉節點處的資料是經雜湊處理的,並且在該樹的每個分支中的所有雜湊值在該分支的根處級聯(concatenated)。此處理沿樹持續至整個樹的根,該整個樹的根部儲存了代表樹中所有資料的雜湊值。通過確定級聯的雜湊值是否與樹的結構一致,可快速驗證聲稱是儲存在該樹中的交易的雜湊值。
儘管區塊鏈是用於儲存交易的資料結構,但區塊鏈網路是管理、更新以及維護一個或多個區塊鏈的計算節點的網路。如上所述,區塊鏈網路可被提供為公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路。
在公有區塊鏈網路中,共識處理由共識網路中的節點控制。例如,數百、數千甚至數百萬個實體可以協同運作公有區塊鏈網路,每個實體操作該公有區塊鏈網路中的至少一個節點。因此,公有區塊鏈網路可被認為是關於參與實體的公有網路。在一些示例中,大多數實體(節點)必須對每個區塊簽名以使該區塊有效,並被添加至區塊鏈網路的區塊鏈(分布式帳本)中。示例性公有區塊鏈網路包括利用分布式帳本(稱為區塊鏈)的特定點對點支付網路。然而,如上所述,術語"區塊鏈"通常用於指代分布式帳本,而不特指任何特定的區塊鏈網路。
通常,公有區塊鏈網路支持公開交易。公開交易被公有區塊鏈網路內的所有節點共享,並儲存於全域區塊鏈中。全域區塊鏈是跨所有節點複製的區塊鏈。也即,所有節點相對於全域區塊鏈都處於完全共識狀態。為了達成共識(例如,同意向區塊鏈添加區塊),在該公有區塊鏈網路內實施共識協議。共識協議的示例包括,但不限於,工作證明(POW)、權益證明(POS)以及權限證明(POA)。本文進一步引用POW作為非限制性示例。
通常,為特定實體提供私有區塊鏈網路,該特定實體集中控制讀寫權限。實體控制哪些節點能參與到該區塊鏈網路中。因此,私有區塊鏈網路通常被稱為權限網路,其限制允許誰參與網路,以及它們的參與級別(例如,僅在特定交易中)。可以使用各種類型的存取控制機制(例如,現有參與者對添加新實體進行投票,管理機構可以控制權限)。
通常,聯盟區塊鏈網路在參與實體之間是私有的。在聯盟區塊鏈網路中,該共識處理由一組經授權的節點控制,一個或多個節點由相應實體(例如,金融機構、保險公司)操作。例如由十(10)個實體(例如,金融機構、保險公司)組成的聯盟可以運作聯盟區塊鏈網路,每個實體操作該聯盟區塊鏈網路中的至少一個節點。因此,聯盟區塊鏈網路可被認為是對於參與實體的私有網路。在一些示例中,每個實體(節點)必須對每個區塊簽名,以使該區塊有效並被添加到該區塊鏈中。在一些示例中,至少實體(節點)的子集(例如,至少7個實體)必須對每個區塊簽名,以使該區塊有效並被添加到區塊鏈中。
本文參考聯盟區塊鏈網路進一步詳盡描述了本發明的實施方式。然而,可以預期,本發明的實施方式可以在任何適當類型的區塊鏈網路中實現。
鑒於以上背景,本文進一步詳盡描述了本發明的實施方式。更具體地,且如上所述,本發明的實施方式涉及在分布式系統中的網路節點執行恢復處理。
區塊鏈是防竄改的、共享的數位帳本,其在公有或私有點對點網路中記錄交易。該帳本被分發至網路中的所有成員節點,且網路中發生的資產交易歷史被永久地記錄於區塊中。
共識機制保證分布式區塊鏈網路中的所有網路節點以相同順序執行交易並隨後寫入該同一帳本中。共識模型旨在解決的一個問題是克服拜占庭(Byzantine)錯誤。在拜占庭錯誤中,分布式區塊鏈網路中諸如伺服器或網路節點的組件可不一致地出現錯誤並且對錯誤檢測系統起作用,向不同的觀察者顯示不同症狀。其他網路節點很難宣稱它錯誤並將其從網路中關閉,因為它們需要首先就哪個網路節點最先出現錯誤達成共識。
在分布式系統的上下文中,拜占庭容錯(BFT)是分布式電腦網路根據需要發揮作用並正確地達到足夠共識的能力,儘管系統的惡意組件(即,區塊鏈網路中的網路節點)出錯或將錯誤資訊傳播給其他節點。目的是通過減輕這些惡意節點對網路的正確功能和由系統中的誠實節點達成正確共識的影響來防止災難性系統錯誤。
然而,現存BFT機制已被證實在許多方面低效。例如,當嘗試克服拜占庭錯誤時,現有的BFT機制增加了實施分布式區塊鏈網路的複雜性,從而增加了分布式區塊鏈網路中的網路節點之間的通信的延時。實用的拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)是旨在改進現有的BFT共識機制的優化方法之一。PBFT模型側重於提供實用的拜占庭狀態機複製,其通過假設存在獨立節點錯誤和由特定獨立節點傳播的操作消息來容忍拜占庭錯誤(惡意節點)。
在PBFT模型中,所有節點都按順序排列,其中一個節點作為主節點(領導者),而其他節點被稱為備節點。系統內的所有節點彼此通信,且目標是使大多數誠實節點就系統狀態達成一致。節點彼此通信,且不僅需要證明消息來自特定的對等節點,還需要證明消息在傳輸中未被修改。
為了使PBFT模型起作用,假設在給定的漏洞窗口中,網路中的惡意節點數量不能同時等於或超過系統中的全部節點的1/3。系統中的節點越多,那麼在數學上越不太可能使全部節點的接近1/3的數量成為惡意。只要最多(n-1)/3個節點同時是惡意或錯誤,該演算法就有效地提供了活躍性和安全性,其中n代表總節點。
每輪PBFT共識(稱為視圖)包括四個階段:
(1)客戶端向領導節點發送請求以調用服務操作;
(2)領導節點向備節點組播該請求;
(3)節點執行該請求並然後發送回復至客戶端;以及
(4)客戶端等待來自不同節點的具有相同結果的f+1(f代表可能錯誤的節點的最大數)個回復。
最終結果是:所有誠實節點就記錄順序達成一致,並且他們或者接受或者拒絕該結果。領導節點在每個視圖期間以輪詢方案改變,並且如果領導節點沒有組播請求的情況經過了特定時間量,則領導節點甚至可以替換為名為視圖改變的協議。大多數誠實節點也可以決定領導者是否錯誤,並以隊列中的下一領導者作為替代移除他們。
然而,PBFT共識機制存在一些局限性。例如,因為節點間需要繁瑣的通信量,PBFT模型可以在具有相對小尺寸的共識組的傳統形式中很好地工作。在網路節點間傳輸龐大的區塊資料導致了網路負載問題並導致網路瓶頸。此外,使用方法認證碼(MAC)作為PBFT模型中認證消息的格式,對於諸如加密貨幣網路和MAC之類的大共識組中的節點之間所需的通信量而言可能是低效的。可能存在無法向第三方證明消息的真實性的固有缺陷。
此外,若在利用PBFT使用的輪詢法變更領導節點時遇到連續的惡意節點,將因延時或延遲了尋找誠實的領導節點而影響區塊鏈服務。例如,當選擇第一網路節點作為新的領導節點時,第一網路節點可能是惡意節點,因此不能被選為新的領導節點。在輪詢法中,可以選擇隊列中的第二網路節點作為新的領導節點。然而,若第二網路節點也是惡意節點,將驗證隊列中的另一網路節點是否適合作為領導節點。繼續這一處理直到識別出新的領導節點是誠實的。領導節點的這種頻繁變更在區塊鏈服務中引入了顯著的延遲。
此外,區塊鏈網路中的網路節點可能在任意時間經歷拜占庭錯誤或崩潰錯誤。例如,網路節點可能被惡意網路攻擊者破壞並且行為不當。如果受到攻擊的網路節點沒有及時恢復,則惡意網路攻擊者可能在未被檢測到的情況下破壞超過1/3的網路節點,從而危及區塊鏈網路和服務。
為解決上述與現存BFT共識機制和PBFT共識機制相關的問題和關注,本發明公開了改良的共識機制,包括:用於在分布式系統內的網路節點之間達成共識的技術、用於在分布式系統中執行主節點變更的技術、以及用於對分布式系統中的網路節點執行恢復處理的技術。所描述的共識機制可以在不同應用中展現各種優點。
例如,以下所討論的共識處理包括許多特徵,這些特徵改進了區塊鏈系統的操作且幫助緩解了網路瓶頸,例如,所描述的共識處理包括根據糾刪碼(EC)將交易請求轉換為多個EC區塊,並向每個網路節點發送其中一個區塊。EC區塊的大小比原始交易請求的小。因此,向網路節點發送EC區塊而不是完整交易請求,減少了在區塊鏈網路中的網路節點之間傳輸的資料區塊的大小,從而節省了網路帶寬並減少了網路負載。這進一步減少寫入並從網路節點的記憶體空間讀取的資料大小,從而減輕了網路節點的記憶體空間的負擔並提高了整個區塊鏈系統的效率。
此外,本發明描述了時元改變處理,該處理包括:將相應權重分配給共識處理的多個階段、基於該多個階段的相應權重確定權重和、以及基於權重和確定新的主節點。基於權重和而不是輪詢法(round robin method)進行的時元改變處理可以有助於及時選擇無錯誤的新主節點。主節點可以是領導節點,其具有在包括該主節點的多個網路節點之間發起一輪共識處理的權限。區塊鏈網路中的其他網路節點可以稱為備節點。時元改變處理可以幫助解決輪詢法的以下問題:當新主節點的隊列中的多個網路節點出現錯誤時,該輪詢方法會導致主節點頻繁變更。與輪詢法不同,本發明中的時元改變處理依賴於權重和來選擇新主節點,這可以減少尋找無錯誤的新主節點的延時或延遲。此方法可以進一步提高整個區塊鏈系統在提供區塊鏈服務時的效率。
另外,本發明討論了恢復處理,該恢復處理包括諸如由適用於新主節點的網路節點發送狀態請求消息以及從其他網路節點接收狀態應答消息的操作。執行這些操作使得錯誤網路節點的恢復處理不干擾其他非錯誤網路節點之間的共識處理的正常操作。通過降低恢復處理的複雜性,這有助於節省用於恢復錯誤網路節點的計算和網路資源。
圖1描繪了可用於執行本發明實施方式的環境100的示例。在一些示例中,環境100使得實體能夠參與到聯盟區塊鏈網路102中。環境100包括計算設備或系統106、108和網路110。在一些示例中,網路110包括局域網(LAN)、廣域網(WAN)、因特網或其組合,並且連接網路站點、用戶設備(例如,計算設備)以及後台系統。在一些示例中,可以通過有線和/或無線通信連接來存取網路110。在一些示例中,網路110使得與聯盟區塊鏈網路102通信以及在聯盟區塊鏈網路102內部進行通信成為可能。通常,網路110代表一個或多個通信網路。在一些情況下,計算設備106、108可以是雲端計算系統(未示出)的節點,或每個計算設備106、108可以是單獨的雲端計算系統,該系統包括通過網路互聯的多個電腦並用作分布式處理系統。
在所描述的示例中,計算系統106、108可以各自包括能夠作為節點參與到聯盟區塊鏈網路102中的任何合適的電腦系統。示例性計算設備包括,但不限於伺服器、台式電腦、筆記型電腦、平板計算設備以及智慧型電話。在一些示例中,計算系統106、108承載一個或多個由電腦實施的服務用於與聯盟區塊鏈網路102交互。例如,計算系統106可以承載第一實體(例如,用戶A)的由電腦實施的、例如交易管理系統的服務,第一實體使用該交易管理系統管理其與一個或更多其他實體(例如,其他用戶)的交易。計算系統108可以承載第二實體(例如,用戶B)的由電腦實施的、例如交易管理系統的服務,第二實體使用該交易管理系統管理其與一個或更多其他實體(例如,其他用戶)的交易。在圖1的示例中,聯盟區塊鏈網路102被表示為節點的點對點網路,且計算系統106、108分別提供參與到聯盟區塊鏈網路102中的第一實體和第二實體的節點。
圖2描繪了根據本發明實施方式的概念性架構200的示例。概念性架構200的示例包括分別對應於參與者A、參與者B和參與者C的參與者系統202、204和206。每個參與者(例如,用戶、企業)參與到包括多個節點214的、被提供為點對點網路的區塊鏈網路212中,至少一些節點將資訊不可竄改地記錄在區塊鏈216中。如本文中進一步詳述,儘管在區塊鏈網路212中示意性地描繪了單個區塊鏈216,但是在區塊鏈網路212上提供並維護了區塊鏈216的多個副本。
在所描述的示例中,每個參與者系統202、204、206分別由或代表參與者A、參與者B和參與者C提供,並且在區塊鏈網路內作為各自的節點214發揮作用。如本文所使用的,節點通常是指連接至區塊鏈網路212的獨立系統(例如,電腦、伺服器),且使得相應的參與者能夠參與到區塊鏈網路中。在圖2的示例中,參與者對應於每個節點214。然而,可以預測,一個參與者可以操作區塊鏈網路212內的多個節點214,和/或多個參與者可以共享一個節點214。在一些示例中,參與者系統202、204、206使用協議(例如,超文本傳輸安全協議(HTTPS))和/或使用遠程過程調用(RPC)與區塊鏈網路212通信或通過區塊鏈網路212進行通信。
節點214可以在區塊鏈網路212中具有不同的參與程度。例如,一些節點214可以參與共識處理(例如,作為將區塊添加至區塊鏈216的監視節點),而其他節點214不參與此共識處理。作為另一示例,一些節點214儲存區塊鏈216的完整的副本,而其他節點214僅儲存區塊鏈216的一部分的副本。例如,資料存取權限可以限制相應參與者在其相應系統內儲存的區塊鏈資料。在圖2的示例中,參與者系統202、204、206儲存區塊鏈216相應的完整副本216'、216''、216'''。
區塊鏈(例如,圖2中的區塊鏈216)由一系列區塊構成,每個區塊儲存資料。資料的示例包括表示兩個或更多個參與者之間的交易的交易資料。雖然本文通過非限制性示例使用了交易,但是可以預期,任何適當的資料都可以儲存在區塊鏈中(例如,文檔、圖像、視頻、音頻)。交易的示例可以包括,但不限於有價物的交換(例如,財產、產品、服務和貨幣)。交易資料被不可竄改地儲存在區塊鏈中。也即,交易資料不能被改變。
在將交易資料儲存於區塊中之前,對交易資料進行雜湊處理。雜湊處理是將交易資料(作為字符串資料提供)轉換為固定長度雜湊值(也作為字符串資料提供)的處理。無法通過將雜湊值進行去雜湊處理來獲得交易資料。雜湊處理確保即使交易資料中的輕微改變也會導致完全不同的雜湊值。此外,如上所述,雜湊值具有固定長度。也即,無論交易資料的大小如何,雜湊值的長度都是固定的。雜湊處理包括通過雜湊函數處理交易資料以生成雜湊值。雜湊函數的示例包括但不限於輸出256位雜湊值的安全雜湊演算法(SHA)-256。
多個交易的交易資料被雜湊處理並儲存在區塊中。例如,提供兩個交易的雜湊值,並對它們自身進行雜湊處理以提供另一個雜湊值。重複該處理,直到為所有要儲存在區塊中的交易提供單個雜湊值為止。該雜湊值被稱為梅克爾(Merkle)根雜湊,並儲存於區塊的頭中。任何交易中的變更都將導致其雜湊值發生變化,並最終導致Merkle根雜湊值發生變化。
通過共識協議將區塊添加至區塊鏈。區塊鏈網路內的多個節點參與共識協議,並競相將區塊添加到區塊鏈中。這樣的節點被稱為礦工(或監視節點)。上文介紹的POW用作非限制性示例。
礦工節點執行共識處理以將交易添加至區塊鏈中。雖然多個礦工節點參與共識處理,但只有一個礦工節點可以將區塊寫入區塊鏈。也即,礦工節點在共識處理中競相將它們的區塊添加至區塊鏈中。具體而言,礦工節點週期性地從交易池中收集待處理的交易(例如,最多達到區塊中可包括的交易數量的預定限制,如果有的話)。交易池包括來自區塊鏈網路中的參與者的交易消息。礦工節點構建區塊,並將交易添加至區塊中。在將交易添加至區塊之前,礦工節點檢查是否有任一交易已經包含在區塊鏈的區塊中。如果該交易已經包含在另一區塊中,則該交易將被丟棄。
礦工節點生成區塊頭,對該區塊中的所有交易進行雜湊處理,並將所得的雜湊值成對組合以生成進一步的雜湊值,直到為區塊中的所有交易提供單一雜湊值(Merkle根雜湊值)。將該雜湊值添加至區塊頭中。礦工還確定區塊鏈中最近的區塊(即,添加至區塊鏈中的最後的區塊)的雜湊值。礦工節點還向區塊頭添加隨機數(nonce value)和時間戳。在挖礦處理中,礦工節點嘗試查找滿足所需參數的雜湊值。礦工節點不斷變更隨機數直到找到滿足所需參數的雜湊值。
區塊鏈網路中的每個礦工都試圖找到滿足所需參數的雜湊值,並以這種方式彼此競爭。最終,礦工節點之一找到滿足所需參數的雜湊值,並將其通告給區塊鏈網路中的所有其他礦工節點。其他礦工節點驗證雜湊值,若確定是正確的,則驗證區塊中的每個交易,接受該區塊,並將該區塊附加至它們的區塊鏈的副本中。以此種方式,區塊鏈的全域狀態在區塊鏈網路內的所有礦工節點上是一致的。上述處理是POW共識協議。
參考圖2提供了非限制性示例。在此示例中,參與者A想要向參與者B發送一定數額的資金。參與者A生成交易消息(例如,包括發送方、接收方和資金值字段),並將交易消息發送至區塊鏈網路,從而將交易消息添加到了交易池中。區塊鏈網路中的每個礦工節點創建一個區塊,並從交易池中取出所有交易(例如,最多達到可添加到區塊的交易數量的預定限制,如果有的話),並將交易添加至區塊中。以此種方式,參與者A發佈的交易被添加至礦工節點的區塊中。
在一些區塊鏈網路中,用密碼學來維護交易的隱私。例如,若兩個節點想保持交易隱私,使得區塊鏈網路中的其他節點不能看出交易的細節,則這兩個節點可以對交易資料進行加密處理。加密方法的示例包括,但不限於對稱加密和非對稱加密。對稱加密是指使用單一密鑰進行加密(從明文生成密文)和解密(從密文中生成明文)的加密處理。在對稱加密中,同一密鑰可用於多個節點,因此每個節點都可以對交易資料進行加密/解密。
非對稱加密使用密鑰對,每個密鑰對包括私鑰和公鑰,私鑰僅對相應節點是已知的,而公鑰對於區塊鏈網路中的任何或所有其他節點是已知的。一個節點可以使用另一節點的公鑰來加密資料,並且該加密的資料可以使用該另一個節點的私鑰解密。例如,再次參考圖2,參與者A可以使用參與者B的公鑰來加密資料,並將該加密資料發送給參與者B。參與者B可以使用它的私鑰來解密該加密的資料(密文)並提取原始資料(明文)。使用節點的公鑰加密的消息只能使用節點的私鑰解密。
非對稱加密用於提供數位簽名,這使得交易中的參與者能夠確認交易中的其他參與者以及交易的有效性。例如,節點可以對消息進行數位簽名,而另一個節點可以基於參與者A的數位簽名來確認該消息是由該節點發送的。數位簽名還可以用於確保消息在傳輸中不被竄改。例如,再次參考圖2,參與者A要向參與者B發送消息。參與者A生成該消息的雜湊值,然後使用其私鑰加密該雜湊值以提供為該加密雜湊值的數位簽名。參與者A將該數位簽名附加到消息上,並將該具有數位簽名的消息發送至參與者B。參與者B使用參與者A的公鑰解密該數位簽名,並提取雜湊值。參與者B對該消息進行雜湊處理並比較雜湊值。若雜湊值相同,參與者B可以確認該消息確實是來自參與者A,且未被竄改。
圖3描繪了可以根據本發明實施方式執行的、用於在分布式系統(例如,區塊鏈網路102和212)的網路節點(例如,節點214)之間達成共識的處理300的示例。具體地,圖3示出了根據本發明示例性實施例呈現的用於在正常情況下達成共識的方法300的圖。如圖3所示,共識處理300包括下述三個階段或階段310、階段320和階段330。
在共識處理300的第一階段310,區塊鏈網路中的主節點(或領導節點)向其他網路節點(即,備節點)發送第一消息。該第一消息表示主節點正在發起共識處理。例如,如圖3中所示的,主節點R0
向區塊鏈網路中的其他網路節點R1
、R2
、R3
發送INITIAL(初始)消息。注意,僅為了說明目的,處理300被示為包括四個網路節點R0
、R1
、R2
和R3
,處理300可以包括任何合適數量的網路節點。第一階段和INITIAL消息的格式將在下文參考圖4-6更詳細地討論。
在共識處理300的第二階段320,每個備節點接收由主節點發送的第一消息,回應於該第一消息準備第二消息,以及將該第二消息組播至其他網路節點,該第二消息表示備節點已經接收到來自主節點的第一消息,並正在發送回復以回應第一消息。例如,如圖3所示的,備節點R1
接收由主節點R0
發送的INITIAL消息,並以ECHO消息作為第二消息的示例回復主節點R0
。同時,備節點R1
還將ECHO消息組播至其他備節點,例如,備節點R2
和R3
。類似地,備節點R2
和R3
各自將ECHO消息組播至包括主節點R0
的其他網路節點。
例如,當諸如主節點或備節點的網路節點從其他網路節點接收ECHO消息時,該網路節點可以驗證ECHO消息中的資訊。第二階段和ECHO消息的格式將在下文參考圖4-6更詳細地討論。
在共識處理300的第三階段330,每個網路節點向其他網路節點組播第三消息。第三消息表示網路節點已經接受預設數量的第二消息。在一些實施方式中,該第三消息可以表示網路節點已經準備好執行交易。在一些實施方式中,該第三消息可以表示已經在網路節點成功重建了交易。例如,如圖3所示,主節點R0
將ACCEPT消息組播至備節點R1
、R2
和R3
。類似地,備節點R1
、R2
和R3
各自將ACCEPT消息組播至其他網路節點。在本發明的一些實施方式中,在組播ACCEPT消息之前,網路節點根據糾刪碼(EC)以及ECHO消息中的資訊是否是第二階段接收的資訊,來確定是否發送ACCEPT消息。第三階段、EC碼和ACCEPT消息的格式將在下文參考圖4-6更詳細地討論。
當網路節點從其他網路節點接收到足夠的ACCEPT消息時,網路節點確定已經達成共識。例如,若主節點R0
或備節點R1
、R2
或R3
接收到法定數量(quorum,例如,2f+1,其中f代表錯誤網路節點的數量)的ACCEPT消息,則在網路節點中自動達成共識。
圖4描繪了可以根據本發明實施方式執行的、用於在分布式系統(例如,區塊鏈網路102或212)的網路節點(例如,節點214或節點R0
、R1
、R2
和R3
)之間達成共識的處理400的示例。在一些實施方式中,處理400可以利用一個或多個計算設備執行一個或多個電腦可執行程式來進行。為了清楚地呈現,以下描述總體上描述了在本說明書其他圖式的背景中的方法400。應當理解,方法400可以由諸如任何合適的系統、環境、軟體和硬體,或系統、環境、軟體和硬體的組合合理進行。在一些實施方式中,方法400的各步驟可以並行、組合、循環或以任何順序進行。
首先,處理400可以結合如圖1-3所示的系統100-300進行。在本發明的一些實施方式中,區塊鏈網路102和/或212包括主節點404和一個或多個備節點406。區塊鏈網路102和/或212與計算系統106和/或108通信,例如,客戶端節點402通過網路110提供區塊鏈服務。客戶端節點402、主節點404和備節點406中的每個可以是專用電腦或配置成執行本文所討論的處理的其他資料處理裝置。例如,客戶端節點402也可以指與區塊鏈網路交互的客戶端終端或客戶端設備。客戶端節點402可以安裝諸如用於存取區塊鏈網路並與區塊鏈網路通信的、與區塊鏈網路連接的客戶端應用程式或客戶端軟體開發套裝(SDK)。主節點404和一個或多個備節點406也可以被稱為共識節點或網路節點,其在區塊鏈網路中達成共識並不可竄改地記錄資訊。
處理400始於408,其中客戶端節點402生成交易請求。在本發明的一些實施方式中,交易請求可以包括請求從區塊鏈網路102和/或212請求區塊鏈服務。
在410,客戶端節點402將交易請求組播至區塊鏈網路102和/或212的主節點404。在本發明的一些實施方式中,主節點404給交易請求分配序列號,以在從客戶端節點402接收到交易請求之後跟蹤交易請求。
在412,主節點402在從客戶端節點402接收交易請求之後生成多個EC區塊。在本發明的一些實施方式中,主節點404利用交易請求根據EC碼生成多個EC區塊。例如,參考圖5,主節點404在交易請求502上應用EC碼504,並使用EC碼504將交易請求502轉換為EC消息506。EC碼504是在位元糾刪(bit erasures)的假設下的前向糾錯(FEC)碼。EC碼504將初始交易請求502轉換為更長的EC消息506,使得可以從EC消息506的部分或片段中恢復初始交易請求502。
在本發明的一些實施方式中,EC碼504是近乎最優的糾刪碼,諸如,龍捲風碼(Tornado code)或低密度奇偶校驗碼。在本發明的可選實施方式中,EC碼504是近乎最優的噴泉碼(fountain code),諸如噴泉碼、在線碼、盧比變換碼(Luby transform (LT) code)或速龍碼(raptor code)。在本發明的可選實施方式中,EC碼504是最優糾刪碼,諸如,奇偶校驗碼、校驗檔案碼(Parchive code)、裡德-所羅門碼(Reed-Solomon code)或再生成碼(regenerating code)。在本發明的一些實施方式中,EC碼504可以是任何合適類型的糾刪碼。
在將交易請求502轉換為EC消息506之後,主節點404利用EC消息506生成多個EC區塊508。例如,如圖5所示,主節點404通過劃分EC消息506來生成EC區塊A、EC區塊B、EC區塊C、EC區塊D這四個EC區塊508。注意,為作說明目的,圖5中示出的EC區塊508包括四個區塊,EC區塊508可以生成為包括任何合適數量的EC區塊508。EC區塊508將通過INITIAL消息被發送至相應的備節點406。
在本發明的一些實施方式中,EC區塊508具有相同大小。然而,在可選實施方式中,EC區塊508可以具有彼此不同的大小。
在本發明的一些實施方式中,主節點404利用EC區塊508生成雜湊樹500(如Merkle樹)。雜湊樹500包括標記有資料區塊的雜湊值的多個葉節點和標記有子節點標記的加密雜湊值的多個非葉節點。例如,如圖5所示,雜湊樹500被配置為包括四個葉節點510:雜湊值A、雜湊值B、雜湊值C和雜湊值D,其被生成為它們相應EC區塊508的加密雜湊值;四個非葉節點512被生成為它們相應子節點510級聯的雜湊值,以及一個非葉節點514被生成為其子節點512的雜湊值且是雜湊樹500的根雜湊值。
雜湊樹500允許對大型資料結構的內容進行有效且安全的驗證。雜湊樹500可以用於驗證在電腦內和電腦之間儲存、處理和傳輸的任何類型的資料。它們可以幫助確保從P2P網路中其他對等點接收的資料區塊是未受損且未被竄改接收的,並且甚至檢查其他對等點沒有發送虛假區塊。下面將參考共識處理400的如下步驟以更詳細地討論利用雜湊樹500驗證資料區塊。
返回參考圖4,主節點404在生成EC區塊508和雜湊樹500後生成第一消息(例如,INITIAL消息)。第一消息表示主節點正在發起共識處理。在一些實施方式中,作為第一消息的示例的INITIAL消息,是利用EC區塊508和雜湊樹500中的資訊生成的。在本發明的一些實施方式中,參考圖6,INITIAL消息具有為<epoch, tx_root_hash, ec_block_hash, ec_block, seq, j>的格式,其中"epoch"代表正在發送的消息的一輪共識,"tx_root_hash"代表雜湊樹500中的根雜湊值514,"ec_block_hash"代表雜湊樹500中的雜湊值510和/或512,"ec_block"代表雜湊樹500中的EC區塊508,"seq"代表與交易請求502關聯的序列號,以及"j"代表生成並發送INITIAL消息的網路節點。在一些實施方式中,INITIAL消息可以具有不同格式,例如,包括附加或不同的字段。
返回參考圖4,在416,在共識處理的第一階段,主節點404將INITIAL消息組播至其他網路節點(例如,備節點406)。在一些實施方式中,被發送至備節點406的INITIAL消息具有<epoch, tx_root_hash, ec_block_hash, ec_block, seq, j>的格式。例如,主節點404可以向第一備節點406發送第一INITIAL消息<epoch 1, Hash ABCD, {Hash B, Hash C, Hash D}, EC block A, 1, 0>,以及向第二備節點406發送第二INITIAL消息<epoch 1, Hash ABCD, {Hash A, Hash C, Hash D}, EC block B, 1, 0>等。注意,INITIAL消息中的資訊,例如"ec_block"可與"ec_block_hash"一起使用以重建雜湊樹500。例如,在第一INITIAL消息<epoch 1, Hash ABCD, {Hash B, Hash C, Hash D}, EC block A, 1, 0>中,可以將EC區塊508"EC block A"進行雜湊處理以生成加密雜湊值510"Hash A",其進一步與其他雜湊值510"{ Hash B、Hash C、Hash D}"一起使用來重建雜湊樹500。參考下述共識處理的步驟,如下文所詳述的,所重建的雜湊樹500將被用於驗證ECHO消息。
在418,每個備節點406在從主節點404接收INITIAL消息後,在共識處理的第二階段生成第二消息(例如,ECHO消息)。該第二消息表示備節點已經從主節點接收到第一消息。回應於第一消息,第二消息作為回復被發送。在本發明的一些實施方式中,ECHO消息由備節點406生成,包括INITIAL消息或INITIAL消息的一部分以及備節點406的與INITIAL消息關聯的簽名。例如,備節點406可以通過利用私鑰對INITIAL消息或INITIAL消息的摘要進行簽名來生成簽名。該私鑰簽名可由使用與該私鑰配對的公鑰的其他網路節點使用,來認證包括該私鑰簽名的ECHO消息。
在本發明的一些實施方式中,參考圖6,ECHO消息具有為<epoch, tx_root_hash, ec_block_hash, ec_block, seq, sign_proof, j>的格式,其中"epoch"代表正在發送的消息的一輪共識,"tx_root_hash"代表雜湊樹500中的根雜湊值514,"ec_block_hash"代表雜湊樹500中的雜湊值510和/或512,"ec_block"代表雜湊樹500中由相應備節點406接收的EC區塊508,"seq"代表與交易請求502相關聯的序列號,"sign proof"代表備節點406的與INITIAL消息關聯的簽名,以及"j"代表生成並發送ECHO消息的網路節點。在一些實施方式中,ECHO消息可以具有不同格式,例如,包括附加或不同的字段。
返回參考圖4,在420,備節點406向主節點404發送ECHO消息。在421,每個備節點406向其他備節點406發送ECHO消息。在423,每個備節點406可以從其他備節點406接收ECHO消息。
在422,主節點404驗證由備節點406發出的ECHO消息。在本發明的一些實施方式中,主節點404根據雜湊樹500驗證ECHO消息是否有效。例如,主節點可以從第一備節點406接收第一ECHO消息<epoch 1, Hash ABCD, {Hash B, Hash C, Hash D}, EC block A, 1, 1>。主節點404可以從消息中檢索EC區塊508"EC block A"並將其雜湊處理以生成加密雜湊值510"Hash A"。主節點404進一步使用生成的雜湊值510"Hash A"與消息中的其他雜湊值510"{Hash B、Hash C、Hash D}"以重建雜湊樹500。然後,主節點404確定重建的雜湊樹500的根雜湊值514並將其與ECHO消息中的例如"Hash ABCD"的根雜湊值514比較。若兩個根雜湊值514匹配,則主節點404確定ECHO消息有效。主節點404可以儲存有效的ECHO消息並丟棄確定為無效ECHO消息。
在424,主節點404確定有效ECHO消息的數量是否超過預設閾值。在本發明的一些實施方式中,主節點404確定有效ECHO消息的數量是否達到法定數量n-f或2f+1,其中n是網路節點的總數,且f是網路可容忍的錯誤節點的最大數量。
在426,回應於確定有效ECHO消息的數量達到了法定數量,主節點404重建交易請求502。在本發明的一些實施方式中,主節點404根據EC碼基於有效ECHO消息的至少一個子集來重建交易請求502。例如,主節點404可以檢索有效ECHO消息的法定數量(例如,n-f或2f+1個)中的n-2f或f+1數量個EC區塊508,並使用檢索到的EC區塊508以根據EC碼504重建交易請求502。
在428,在共識處理的第三階段,回應於確定已經成功重建交易請求502,主節點404生成第三消息(例如,ACCEPT消息)。該第三消息表示網路節點已經接受預設數量的第二消息。在一些實施方式中,該第三消息可以表示網路節點已經準備好執行交易。在一些實施方式中,該第三消息可以表示已經成功地在網路節點中重建交易。例如,ACCEPT消息可以用於向其他網路節點表示已經成功重建交易請求502。若主節點404未能重建交易請求502,則主節點404可能不生成ACCEPT消息。
在本發明的一些實施方式中,參考圖6,ACCEPT消息具有為<epoch, tx_root_hash, seq, sign_proofs, j>的格式,其中"epoch"代表正在發送的消息的一輪共識,"tx_root_hash"代表雜湊樹500中的根雜湊值514,"seq"代表與交易請求502關聯的序列號,"sigh_proofs"代表有效ECHO消息中的一組簽名,以及"j"代表生成並發送ACCEPT消息的網路節點。在一些實施方式中,ACCEPT消息可以具有不同的格式,例如,包括附加或不同的字段。
返回參考圖4,在430,主節點404向備節點406發送ACCEPT消息。
類似於主節點404,每個備節點406可以重建交易請求,例如,通過執行與主節點404的步驟422-428類似的步驟。在432,回應於確定交易請求502已經由備節點406成功重建,每個備節點406生成ACCEPT消息。在一些實施方式中,主節點404和備節點406可以以並行方式執行步驟422-428,例如,如圖3所示。
在434,備節點406向主節點404發送ACCEPT消息。同時每個備節點406可以向其他備節點406發送ACCEPT消息。
在436,回應於確定ACCEPT消息的數量超過了預設閾值,主節點404執行交易請求502。在本發明的一些實施方式中,主節點404確定接收的ACCEPT消息是否相同以及相同的ACCEPT消息的數量是否達到法定數量(例如,2f+1)。若相同的ACCEPT消息的數量達到了法定數量,則主節點404確定已在所有網路節點之間達成共識,然後在本地執行交易請求502。在本發明的一些實施方式中,若主節點404確定相同的ACCPET消息的數量未達到法定數量,則主節點404確定在所有網路節點中尚未達成共識,然後避免執行交易請求502。
在本發明的一些實施方式中,在執行交易請求502之前,每個備節點406可以執行如上述436的由主節點404執行的相同操作。若備節點406確定其接收的ACCEPT消息超過了預設閾值,則備節點406確定網路節點之間已經達成共識並在本地執行交易請求502。在本發明的一些實施方式中,若備節點406確定相同的ACCEPT消息的數量未達到法定數量,則備節點406確定尚未在所有網路節點之間達成共識,然後制止執行交易請求502。
在438,主節點404在執行交易請求502之後向客戶端節點402發送交易結果。已經在本地成功執行交易請求502的備節點406也可以將它們相應的交易結果發送至客戶端節點402。
如上所討論的共識處理包括許多特徵,這些特徵改進了整個區塊鏈系統的操作並幫助緩解了網路瓶頸。例如,本發明中的共識處理包括根據EC碼利用交易請求生成多個EC區塊,並向每個網路節點發送其中一個EC區塊。該EC區塊的大小比初始交易請求的小。因此,向網路節點發送EC區塊而不是交易請求,減小了在區塊鏈網路中的網路節點之間傳輸的資料區塊的大小,從而節省了網路帶寬並減少了網路負載。這進一步減少寫入並從網路節點的記憶體空間讀取的資料大小,從而降低了網路節點的記憶體空間的負載並提高了整個區塊鏈系統的效率。
在共識處理期間,備節點正在等待來自主節點的請求。然而,主節點可能遭遇拜占庭錯誤或崩潰錯誤,使得主節點不能在預設時間窗口內廣播請求。當主節點沒有組播請求的情況持續了特定時間量時,需要選擇新主節點以防止備節點無限期地等待執行請求。
圖7描繪了可根據本發明實施方式執行的、用於在分布式系統(例如,區塊鏈網路102或212)中進行主節點(例如,節點214或404)變更的處理700的示例。具體地,圖7示出了根據本發明示例性實施例呈現的用於執行主節點變更的方法700的圖。在一些實施方式中,主節點與包括將主節點作為領導者的共識處理的時元相關聯。主節點的變更可導致時元的改變。
在一些實施方式中,回應於確定當前時元的主節點需要被變更,區塊鏈網路中的備節點向其他網路節點發送第一消息。該第一消息表示備節點希望成為新時元內的新主節點。例如,如圖7所示,回應於備節點R0
確定當前主節點錯誤且需要進行時元改變,備節點R0
向區塊鏈網路中的其他網路節點R1
、R2
和R3
發送EPOCH_CHANGE消息。EPOCH_CHANGE消息是表示備節點R0
申請成為新主節點的第一消息的示例。時元改變可以促使從具有當前主節點的當前時元變更為具有新主節點的新時元。注意僅用於說明目的,處理700被示出為結合四個網路節點實施。處理700可以結合任何合適數量的網路節點實施。
然後,每個網路節點接收由備節點發送的第一消息,回應於該第一消息準備第二消息,並將第二消息組播至其他網路節點。例如,如圖7所示,網路節點R1
接收由備節點R0
發送的EPOCH_CHANGE消息,並向備節點R0
回復NEW_EPOCH消息,該NEW_EPOCH消息表示了確認該備節點R0
可以成為新主節點。同時,網路節點R1
還將NEW_EPOCH消息組播至其他網路節點,例如,網路節點R2
和R3
。類似地,網路節點R2
和R3
各自將NEW_EPOCH消息組播至其他網路節點。
上述的時元改變處理、EPOCH_CHANGE消息的格式、以及NEW_EPOCH消息的格式將在下文參考圖8-9詳細討論。
圖8描繪了可根據本發明實施方式執行的、用於在分布式系統(例如,區塊鏈網路102或212)中進行主節點變更的處理800的示例。在一些實施方式中,示例性處理800可以使用一個或多個電腦設備執行一個或多個電腦可執行程式來執行。為了清楚地呈現,以下描述總體上描述了在本發明中的其他圖式的執行背景中的方法800。可以理解的是,方法800可以由諸如任何合適的系統、環境、軟體和硬體,或系統、環境、軟體和硬體的組合合理進行。在一些實施方式中,方法800的各步驟可以並行、組合、循環或以任何順序進行。
處理800始於806,其中備節點802確定需要執行時元改變,本文討論的時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元。如上面參考圖3-6所討論的,示例性時元可以包括用於使用主節點在多個網路節點之間達成共識的共識處理(例如,共識處理300或400)。
在本發明的一些實施方式中,回應於確定備節點802在未收到來自當前主節點的請求的情況持續了特定時間量之後仍在等待來自當前主節點的請求,備節點802確定需要進行時元改變。例如,當前主節點可能遭遇拜占庭錯誤或崩潰錯誤使得當前主節點不能在預設時間窗口內組播請求。因此,由超時觸發時元改變,以防止備節點無限期地等待執行請求。本文討論的時元改變處理,通過允許系統在主節點發生錯誤時取得進展來提供活躍性並減少了網路延遲。
在808,備節點802確定備節點802在當前時元內共識處理的每個階段相應的權重。在一些實施方式中,共識處理包括上文參考圖3-6所述的三個階段。權重是對備節點802成為新時元中的新主節點的資格的度量。
在本發明的一些實施方式中,備節點802將備節點802在當前時元內的共識處理的第一階段的權重確定為第一值。例如,若備節點802已經進入共識處理的第一階段(例如,共識處理300的第一階段310),則可以為備節點802分配10%的初始權重。在本發明的可選實施方式中,備節點802可以針對當前共識處理的第一階段給備節點802分配任何合適的權重值。
在本發明的一些實施方式中,備節點802基於Quorum驗證處理確定備節點802在當前時元內共識處理的第二階段(例如,共識處理300的第二階段320)的權重。通過確定備節點802是否在共識處理的第二階段從其他網路節點中接收到預設數量(例如,2f+1)的ECHO消息來執行Quorum驗證處理。
在本發明的一些實施方式中,若備節點802的Quorum驗證失敗(例如,備節點802接收的ECHO消息的數量低於預設閾值),則備節點802可以將備節點802在共識處理的第二階段的權重確定為第一值。若備節點802通過了Quorum驗證(例如,備節點802接收的ECHO消息的數量等於或超過了預設閾值),則備節點802可以將備節點802在共識處理的第二階段的權重確定為第二值。在本發明的一些實施方式中,設定第二值大於第一值。例如,若備節點802的Quorum驗證失敗,則可以針對共識處理的第二階段給備節點802分配為零的權重值。若備節點802通過了Quorum驗證,則備節點802可以針對共識處理的第二階段給備節點802分配45%的權重值。然而,在本發明的可選實施方式中,備節點802可以針對當前時元內共識處理的第二階段給備節點802分配任何合適數值。
在本發明的一些實施方式中,Quorum驗證進一步包括驗證ECHO消息是否有效,該ECHO消息由備節點802在共識處理第二階段期間從其他網路節點接收。例如,備節點802可以利用公鑰來認證ECHO消息中的私鑰簽名,以確定ECHO消息是否有效。
與確定第二階段的權重類似,在一些實施方式中,備節點802基於Quorum驗證處理,確定備節點802在當前時元內共識處理的第三階段(例如,共識處理300的第三階段330)的權重。通過確定備節點802在當前時元內共識處理的第三階段中從其他網路節點中是否接收到預設數量(如,2f+1個)的接受消息來執行Quorum驗證處理。來自其他網路節點的每個接受消息表示每個其他網路節點已接受預定數量的ECHO消息。該接受消息可以是,例如,上文參考共識處理300的第三階段330描述的ACCEPT消息。
在本發明的一些實施方式中,若備節點802的Quorum驗證失敗(例如,備節點802接收的ACCEPT消息的數量低於預設閾值),則備節點802可以將備節點802在共識處理的第三階段的權重確定為第一值。若備節點802通過了Quorum驗證(例如,備節點802接收的ACCEPT消息的數量等於或超過了預設閾值),則備節點802可以將備節點802在共識處理的第三階段的權重確定為第二值。在一些實施方式中,設定第二值大於第一值。例如,若備節點802的Quorum驗證失敗,則備節點802可以針對共識處理的第三階段給備節點802分配為零的權重值。若備節點802通過了Quorum驗證,備節點802可以針對共識處理的第三階段給備節點802分配為45%的權重值。然而,在本發明的可選實施方式中,備節點802可以針對當前時元內共識處理的第三階段給備節點802分配任何合適的值。
在810,在確定備節點802在當前時元內共識處理的各階段的相應的權重後,備節點802基於相應的權重確定備節點802在共識處理的權重和。在本發明的一些實施方式中,權重和是備節點在當前時元內共識處理的每個階段的相應權重的加和。例如,若備節點802已經確定備節點802在第一階段的第一權重值為10%、備節點802在第二階段的第二權重值為45%、備節點802在第三階段的第三權重值為45%,則備節點802確定權重和為100%。作為另一示例,若備節點802已經確定備節點802在第一階段的第一權重值為10%、備節點802在第二階段的第二權重值為45%、備節點802在第三階段的第三權重值為0,則備節點802確定權重和為55%。
在812,若備節點802確定在810處確定的權重和達到或超過了預設閾值,則備節點802向其他網路節點804發送EPOCH_CHANGE消息。例如,若在810處確定的權重和達到100%,則備節點802可以向其他網路節點804發送EPOCH_CHANGE消息。EPOCH_CHANGE消息表示請求將具有當前主節點的當前時元變更為以備節點作為新主節點的新時元。
在本發明的一些實施方式中,參考圖9,EPOCH_CHANGE消息具有為<weight, epoch+1, ECHO{}, ACCEPT{}, j>的格式,其中"weight"代表先前在810針對共識處理確定的備節點802的權重和,"epoch+1"代表與新主節點關聯的新一輪共識(即新時元),"ECHO{}"代表在共識處理的第二階段期間備節點802接收的一組ECHO消息,"ACCEPT{}"代表在共識處理的第三階段期間備節點802接收的一組ACCEPT消息,以及"j"代表生成並發送EPOCH_CHANGE消息的網路節點(例如,備節點802)。在一些實施方式中,EPOCH_CHANGE消息可以具有不同的格式,例如通過包括附加或不同的字段。
返回參考圖8,在814,除備節點802之外的網路節點804驗證由備節點802發送的EPOCH_CHANGE消息。在一些實施方式中,每個網路節點804通過驗證EPOCH_CHANGE消息中的權重和是否有效來驗證EPOCH_CHANGE消息是否有效。在一些實施方式中,驗證EPOCH_CHANGE消息中的權重和是否有效,包括:驗證包含在EPOCH_CHANGE消息內的ECHO消息中的該組簽名是否有效。例如,每個網路節點804可以使用公鑰來認證包括在EPOCH_CHANGE消息內的ECHO消息中的該組私鑰簽名。
在816,回應於驗證由備節點802發送的EPOCH_CHANGE消息是有效的,每個網路節點804向備節點802發送NEW_EPOCH消息。NEW_EPOCH消息表示確認備節點將成為新主節點。例如,由網路節點804發送的NEW_EPOCH消息包括網路節點804確認備節點802將成為新時元內新主節點的指示。同時,每個網路節點804還向其他網路節點804發送NEW_EPOCH消息。
參考圖9,NEW_EPOCH消息生成具有<epoch+1, i, j, seq, ec_digest>的格式,其中"epoch+1"代表與新主節點關聯的新一輪共識(即,新時元),"i"代表新時元內的新主節點,"j"代表發送NEW_EPOCH消息的網路節點804,以及"ec_digest"代表EPOCH_CHANGE消息的摘要。在一些實施方式中,EPOCH_CHANGE消息的摘要包括EPOCH_CHANGE消息的雜湊值。在一些實施方式中,NEW_EPOCH消息可以具有不同的格式,例如,包括附加或不同的字段。
返回參考圖8,在818,備節點802驗證由網路節點804發送的NEW_EPOCH消息是否有效。在一些實施方式中,備節點802通過驗證NEW_EPOCH消息中的EPOCH_CHANGE消息的摘要是否有效來驗證NEW_EPOCH消息。由於摘要包括EPOCH_CHANGE消息的資訊,所以摘要還包括EPOCH_CHANGE消息中的簽名。備節點802可以通過驗證EPOCH_CHANGE消息中的該組簽名是否有效來驗證EPOCH_CHANGE消息的摘要。
在820,備節點802確定在818處確定的有效NEW_EPOCH消息的數量是否超過了預設閾值。在一些實施方式中,預設閾值是法定數量(例如,2f+1)
在822,回應於確定所確定的有效NEW_EPOCH消息的數量超過了預設閾值,備節點802確定備節點802成為新時元中的新主節點。注意到每個網路節點804與備節點802相同地執行步驟818-822,並且網路節點804和備節點802可以以並行方式進行步驟818-822。例如,每個網路節點804可以驗證從其他網路節點804發來的一組NEW_EPOCH消息,確定有效NEW_EPOCH消息的數量是否超過預設閾值,並確定新主節點。
如上所討論的時元改變處理(例如,處理700或800)包括許多特徵,這些特徵可以改進整個區塊鏈系統的操作並幫助緩解網路瓶頸。例如,本發明中的時元改變處理包括:給共識處理的三個階段分配相應的權重,基於三個階段的相應權重確定權重和,並基於權重和確定新主節點。基於權重和而不是輪詢法的時元改變處理可以有助於及時選擇無錯誤的新主節點。當用於新主節點隊列中的多個網路節點發生錯誤時,輪詢法可能導致主節點的頻繁變更。這將因延時或延遲找到非錯誤主節點而顯著影響區塊鏈服務。和輪詢法不同,本發明中的時元改變處理依賴於權重和來選擇新主節點,這可以減少尋找非錯誤新主節點的時間。這可以進一步提高整個區塊鏈系統在提供區塊鏈服務時的效率。
在區塊鏈網路運行期間,由於網路波動、突然斷電、磁碟故障等原因,一些網路節點的執行速度可能落後於大多數網路節點的執行速度。在此情境下,系統中超過1/3的網路節點可能發生錯誤。若在系統的生命週期內,少於1/3的網路節點發生錯誤,則BFT可提供安全性和活躍度。然而這些保障對於長壽命系統來說是不夠的,因為在上述情景中很可能超過上限。因此,需要一個恢復處理,使錯誤網路節點再次正常運行,並繼續參與後續的共識處理,以允許系統在其生命週期內容忍多於f個錯誤。此外,所描述的恢復處理可以恢復仍在進行共識處理(例如,共識處理300或400)的一個或多個網路節點,且無需等到所有網路節點之間達成共識。這樣,所描述的恢復處理可以進一步減少系統延時並提高區塊鏈網路的效率。
圖10描繪了可根據本發明實施方式執行的、用於執行分布式系統(例如,區塊鏈網路102或212)的網路節點(例如,節點214或404)的恢復處理的處理1000的示例。具體地,圖10示出了根據本發明示例性實施例呈現的用於執行網路節點的恢復處理的方法1000的圖。如圖10所示,處理1000包括幾個階段和時期。
在第一階段1010中,想要恢復目標交易具有目標序列號R0
的網路節點(例如,網路節點R0
)將狀態請求消息(例如,QUERY_STATE消息)組播至其他網路節點,以表示網路節點待恢復。狀態請求消息可以包括網路節點R0
想要恢復的目標序列號。在第二階段1020中,其他網路節點接收狀態請求消息並向網路節點R0
發送狀態回復消息(例如,REPLY_STATE消息)。在第三階段1030中,網路節點R0
向其他網路節點發送請求消息(例如,FETCH_ECHO消息)以從每個其他網路節點請求ECHO消息。如上述參考圖3-6該,ECHO消息可以與相應的其他網路節點在共識處理300的第二階段320發送的ECHO消息相同。在第四階段1040中,回應於FETCH_ECHO消息,每個其他網路節點向網路節點R0
發送ECHO消息。在第五階段1050,網路節點R0
根據EC碼驗證ECHO消息並恢復目標交易,例如,根據上述參考圖4的示例性重建技術。在第六階段1060中,網路節點R0
向其他網路節點發送ACCEPT消息以表示網路節點已經被恢復。
注意,僅用於說明性目的,處理1000被示為結合四個網路節點實施。處理1000可以結合任何合適數量的網路節點實施。處理1000、QUERY_STATE消息的格式、以及REPLY_STATE消息的格式將在下文參考圖11-12更詳細地討論。
圖11描繪了可根據本發明實施方式執行的、用於在分布式系統中(例如,區塊鏈網路102或212)執行網路節點恢復處理的處理1100的示例。在一些實施方式中,處理1100可以使用一個或多個電腦設備執行一個或多個電腦可執行程式來進行。為了清楚地呈現,以下描述總體上描述了在本說明書中的其他圖式的背景中的方法1100。可以理解的是,方法1100可以由諸如任何合適的系統、環境、軟體和硬體,或系統、環境、軟體和硬體的組合合理進行。在一些實施方式中,方法1100的各步驟可以並行、組合、循環或以任何順序進行。
處理1100始於1106,其中網路節點1102將狀態請求消息組播至其他網路節點1104。狀態請求消息包括網路節點1102將恢復目標交易具有目標序列號的指示。網路節點1102可以是主節點或備節點。
在本發明的一些實施方式中,參考圖12,QUERY_STATE消息,作為狀態請求消息的示例,具有為<j, seq>的格式,其中"j"代表發送QUERY_STATE消息的網路節點1102,以及"seq"代表網路節點1102在當前共識處理中的最大序列號或最新序列號。在一些實施方式中,QUERY_STATE消息可以具有不同的格式,例如,包括附加或不同的字段。
通過將QUERY_STATE消息廣播至其他網路節點1104,網路節點1102請求其他網路節點1104將它們的最新序列號發送至網路節點1102,從而獲取區塊鏈系統的最新區塊資訊。並且,通過獲取整個區塊鏈系統的最新區塊資訊,網路節點1102可以能夠同步到整個系統的最新狀態,從而將其自身恢復以繼續參與至共識處理中。
再次參考圖11,在1108,回應於接收到狀態請求消息,每個其他網路節點1104向網路節點1102發送狀態回復消息(例如,REPLY_STATE消息)。在一些實施方式中,狀態回復消息包括與網路節點1104關聯的先前序列號。
在一些實施方式中,參考圖12,REPLY_STATE消息作為狀態回復消息的示例,具有為<j, last_seq>的格式,其中"j"代表發送REPLY_STATE消息的網路節點1104,以及"last_seq"代表網路節點1104在當前共識處理中的先前序列號。在一些實施方式中,REPLY_STATE消息可以具有不同格式,例如,包括附加或不同的字段。
返回參考圖11,在1110,網路節點1102確定接收到的狀態回復消息的數量是否超過預設閾值。例如,網路節點1102可以確定接收到的REPLY_STATE的數量是否超過法定數量(例如,2f+1或n-f個)。在一些實施方式中,網路節點1102還確定接收到的法定數量的REPLY_STATE消息是否包括相同的序列號。接收到的法定數量的REPLY_STATE消息包括相同的序列號,意味著大部分的網路節點1104就整個系統的公共狀態達成共識。
在1112,若網路節點1102確定從網路節點1104接收到的包括該相同的序列號的狀態回復消息的數量超過預設閾值,則網路節點1102基於該相同的序列號確定目標序列號。例如,網路節點1102可以確定該目標序列號為該相同的序列號(例如,"last_seq")的增量(例如,"last_seq+1")。
在1114,網路節點1102向其他網路節點1104發送請求消息(例如,FETCH_ECHO消息)。FETCH_ECHO消息由網路節點1102發送,以從每個其他網路節點1104請求ECHO消息。如上參考圖3-6所討論的,ECHO消息是由網路節點1104傳輸的消息,用於在網路節點1104之間就目標交易達成共識。ECHO消息包括目標交易的一部分(例如,EC區塊)以及發送ECHO消息的網路節點1104的簽名。
在一些實施方式中,參考圖12,作為請求消息示例的FETCH_ECHO消息,具有為<j, last_seq+1>的格式,其中"j"代表發送FETCH_ECHO消息的網路節點1102,以及"last_seq+1"代表與網路節點1102正從其他網路節點1104請求的ECHO消息相關聯的目標序列號。在一些實施方式中,FETCH_ECHO消息可以具有不同格式,例如,包括附加或不同的字段。
本文所討論的FETCH_ECHO消息是由網路節點1102發送,以從其他網路節點1104請求包括最新序列號或最大序列號的ECHO消息。通過從其他網路節點1104收集包括最新序列號或最大序列號的ECHO消息,網路節點1102可能恢復與最新序列號關聯的最新狀態。
返回參考圖11,在1116,回應於接收到的FETCH_ECHO消息,每個網路節點1104向網路節點1102發送ECHO消息。在一些實施方式中,每個網路節點1104在向網路節點1102發送ECHO消息之前,驗證FETCH_ECHO消息。在一些實施方式中,每個網路節點1104通過確定包含於FETCH_ECHO消息中的序列號是否超過與網路節點1104關聯的最新序列號來驗證FETCH_ECHO消息。若包含於FETCH_ECHO消息中的序列號等於與網路節點1104關聯的最新序列號,則網路節點1104確定FETCH_ECHO有效,且將ECHO消息發送至網路節點1102。若包含於FETCH_ECHO消息中的序列號超過與網路節點1104關聯的最新序列號,則網路節點1104確定FETCH_ECHO無效,且不會將ECHO消息發送至網路節點1102。
在1118,網路節點1102驗證由網路節點1104發送的ECHO消息是否有效。在一些實施方式中,網路節點1102利用梅克爾(Merkle)樹驗證ECHO消息。例如,網路節點1102可以利用包含於ECHO消息中的資料來重建梅克爾(Merkle)樹並確定重建的梅克爾(Merkle)樹的重建的根雜湊值。然後網路節點1102可以將重建的根雜湊值與包含於ECHO消息中的根雜湊值進行比較。若重建的根雜湊值與包含於ECHO消息中的根雜湊值匹配,則網路節點1102確定ECHO消息有效。若重建的根雜湊值與包含於ECHO消息中的根雜湊值不匹配,則網路節點1102確定ECHO消息無效並可以丟棄無效的ECHO消息。
在一些實施方式中,網路節點1102通過進一步驗證ECHO消息中的簽名是否有效來驗證ECHO消息是否有效。例如,網路節點1102可以利用與該私鑰配對的公鑰來驗證ECHO消息的私鑰簽名,以驗證簽名。
在1120,網路節點1102確定從其他網路節點1104接收的有效ECHO消息的數量是否超過預設閾值,例如,網路節點1102可以確定從其他網路節點1104接收的有效ECHO消息的數量是否超過法定數量(例如,2f+1)。
在1122,回應於確定有效ECHO消息的數量超過預設閾值,網路節點1102恢復目標交易具有目標序列號。在一些實施方式中,網路節點1102利用包含於多個有效ECHO消息中的資料來恢復目標交易。例如,網路節點1102可以檢索包含於ECHO消息中的EC區塊的子集,以根據EC碼重建目標交易。
在1124,網路節點1102在恢復目標交易後將ACCEPT消息組播至其他網路節點1104。例如,網路節點1102可以在成功重建目標交易後將ACCPET消息組播至其他網路節點1104。在一些實施方式中,ACCEPT消息包括ECHO消息中的一組簽名和目標序列號。通過向其他網路節點1104發送包括簽名和目標序列號的ACCEPT消息,網路節點1102向其他網路節點1104表示網路節點1102已被恢復並被同步到系統的最新狀態。
本發明中的上面所討論的恢復處理包括許多特徵,這些特徵改進了實施恢復處理的電腦操作並幫助緩解了網路瓶頸。例如,本發明中的恢復處理包括以下操作:由申請成為新主節點的網路節點發送狀態請求消息;從其他網路節點接收狀態回復消息;以及由該網路節點發送FETCH_ECHO消息,以從其他網路節點請求ECHO消息。在進行這些操作時,錯誤網路節點的恢復處理不會干擾其他非錯誤網路節點中的共識處理的正常運行。通過降低恢復處理的複雜性來恢復錯誤網路節點,這有助於節省計算和網路資源。
參考圖13,圖13是根據本發明實施方式示出的共識裝置1300的模組圖示。用於達成共識的裝置1300可以應用於基於區塊鏈技術的共識系統。例如,裝置1300可以對應於圖1-6所示的實施方式。裝置1300可以在區塊鏈網路中的主節點實現。裝置1300包括:接收器或接收單元1302,配置為接收交易請求;生成單元1304,配置為根據EC碼利用該交易請求生成多個糾刪碼(EC)區塊;發送器或發送單元1306,配置為分別向一個或多個備節點發送第一消息,其中該多個第一消息分別包括與多個EC區塊關聯的複合雜湊值;接收器或接收單元1302,進一步配置為從至少一個備節點接收至少一個第二消息,其中該至少一個第二消息包括該多個第一消息中的一個和與該多個第一消息中的一個相關聯的至少一個備節點的簽名;驗證單元1308,配置為回應於從至少一個備節點接收至少一個第二消息,驗證至少一個第二消息是否有效;確定單元1310,配置為確定有效第二消息的數量是否超過預設閾值;重建單元1312,配置為回應於確定有效第二消息的數量超過了預設閾值,根據EC碼,基於多個有效第二消息的子集重建交易請求;發送器或發送單元1306,進一步配置為回應於確定已經成功重建交易請求,向其他網路節點發送第三消息,其中該第三消息包括有效第二消息中的一組簽名;接收器或接收單元1302,進一步配置為從至少一個備節點接收至少一個第三消息;以及執行單元1314,配置為回應於接收到預設數量的相同的第三消息,執行交易請求。
在一可選實施方式中,交易請求與序列號相關聯。
在一可選實施方式中,根據EC碼生成多個EC區塊包括以下:利用EC碼將交易請求轉換為EC消息,並將EC消息劃分為多個EC區塊。
在一可選實施方式中,利用雜湊樹生成多個EC區塊的複合雜湊值。
在一可選實施方式中,雜湊樹包括Merkle樹,且其中複合雜湊值是Merkle樹的根雜湊值。
在一可選實施方式中,與多個第一消息中的一個關聯的至少一個備節點的簽名包括:與多個第一消息中的一個關聯的至少一個備節點的私鑰簽名。
在一可選實施方式中,該至少一個第二消息還包括該多個EC區塊中的至少一個。
在一可選實施方式中,驗證該至少一個第二消息是否有效,包括以下:利用該至少一個第二消息中的多個EC區塊中的至少一個生成重建的雜湊樹;確定重建的雜湊樹的重建的複合雜湊值;以及確定重建的複合雜湊值是否與該至少一個第二消息中的複合雜湊值匹配。
在一可選實施方式中,確定單元1310進一步配置為:回應於確定重建的複合雜湊值與至少一個第二消息中的複合雜湊值匹配,驗證該第二消息有效。
在一可選實施方式中,預設數量的相同的第三消息包括:預設數量的第三消息具有相同的簽名組。
圖13為示出了內部功能模組和共識裝置1300的結構的示意圖。實際執行主體可以為電子設備,該電子設備包括以下:至少一個處理器;和配置為儲存至少一個處理器可執行的指令的記憶體。
至少一個處理器配置為:接收交易請求;利用交易請求根據糾刪碼(EC)生成多個EC區塊;將多個第一消息分別發送至一個或多個備節點,其中,該多個第一消息中的每個包括與多個EC區塊關聯的複合雜湊值;從至少一個備節點接收至少一個第二消息,該至少一個第二消息包括多個第一消息中的一個以及與多個第一消息中的一個關聯的至少一個備節點的簽名;回應於從至少一個備節點接收的至少一個第二消息,驗證該至少一個第二消息是否有效;確定有效第二消息的數量是否超過預設閾值;回應於確定有效第二消息的數量超過預設閾值,根據EC碼基於多個有效第二消息的子集重建交易請求;回應於確定已經成功重建交易請求,向其他網路節點發送第三消息,其中,第三消息包括有效第二消息中的一組簽名;從該至少一個備節點接收至少一個第三消息;以及回應於接收到預設數量的相同的第三消息,執行交易請求。
可選地,交易請求與序列號關聯。
可選地,根據EC碼生成多個EC區塊包括:利用EC碼將交易請求轉換為EC消息,並將EC消息劃分為多個EC區塊。
可選地,利用雜湊樹生成多個EC區塊的複合雜湊值。
可選地,雜湊樹包括梅克爾(Merkle)樹,並且複合雜湊值是梅克爾(Merkle)樹的根雜湊值。
可選地,與多個第一消息中的一個關聯的至少一個備節點的簽名包括:與多個第一消息中的一個關聯的至少一個備節點的私鑰簽名。
可選地,該至少一個第二消息還包括該多個EC區塊中的至少一個。
可選地,驗證該至少一個第二消息是否有效,包括以下:利用該至少一個第二消息中的多個EC區塊中的至少一個生成重建的雜湊樹;確定重建的雜湊樹的重建的複合雜湊值;以及確定重建的複合雜湊值與至少一個第二消息中的複合雜湊值是否匹配。
可選地,至少一個處理器還配置為:回應於確定重建的複合雜湊值與至少一個第二消息中的複合雜湊值匹配,確定該第二消息有效。
可選地,預設數量的相同的第三消息包括預設數量的第三消息具有相同的簽名組。
參考圖14,圖14是根據本發明實施方式示出的共識裝置1400的模組的示意圖。用於達成共識的裝置1400可以應用於基於區塊鏈技術的共識系統。裝置1400可以對應於圖1-6所示的實施方式,裝置1400可以在區塊鏈網路中的備節點實施。裝置1400包括:接收器或接收單元1402,配置為從主節點接收第一消息,其中,該第一消息包括與多個EC區塊關聯的複合雜湊值,該多個EC區塊是主節點根據EC碼利用交易請求生成的;發送器或發送單元1404,配置為回應於接收到的第一消息,備節點向其他網路節點發送第二消息,其中,該第二消息包括第一消息和與第一消息關聯的備節點的簽名;接收器或接收單元1402,進一步配置為從除該備節點外的至少一個備節點接收至少一個第二消息;驗證單元1406,配置為回應於從至少一個備節點接收至少一個第二消息,驗證至少一個第二消息是否有效;確定單元1408,配置為確定有效第二消息的數量是否超過預設閾值;重建單元1410,配置為回應於確定有效第二消息的數量超過了預設閾值,根據EC碼,基於多個有效第二消息的子集重建交易請求;發送器或發送單元1404,配置為回應於確定已經成功重建該交易請求,向其他網路節點發送第三消息,其中,該第三消息包括有效第二消息中的一組簽名;接收器或接收單元1402,進一步配置為從至少一個備節點接收至少一個第三消息;以及執行單元1412,配置為回應於接收到預設數量的相同的第三消息,執行交易請求。
在一可選實施方式中,根據EC碼生成多個EC區塊包括以下:利用EC碼將交易請求轉換為EC消息,並將EC消息劃分為多個EC區塊。
在一可選實施方式中,利用雜湊樹生成多個EC區塊的複合雜湊值。
在一可選實施方式中,雜湊樹包括Merkle樹,並且其中複合雜湊值是Merkle樹的根雜湊值。
在一可選實施方式中,與第一消息關聯的備節點的簽名包括:與第一消息關聯的備節點的私鑰簽名。
在一可選實施方式中,該至少一個第二消息還包括多個EC區塊中的至少一個。
在一可選實施方式中,驗證至少一個第二消息是否有效,包括以下:利用在至少一個第二消息中的多個EC區塊中的至少一個生成重建的雜湊樹;確定重建的雜湊樹的重建的複合雜湊值;對比重建的複合雜湊值與至少一個第二消息中的複合雜湊值;以及確定重建的複合雜湊值是否與至少一個第二消息中的複合雜湊值匹配。
在一可選實施方式中,確定單元1408進一步配置為:回應於確定重建的複合雜湊值與至少一個第二消息中的複合雜湊值匹配,確定該第二消息有效。
在一可選實施方式中,預設數量的相同的第三消息包括預設數量的第三消息具有相同的簽名組。
圖14是示出了共識裝置的1400的內部功能模組和結構的示意圖。實際的執行主體可以為電子設備,該電子設備包括以下:至少一個處理器;和配置為儲存至少一個處理器可執行的指令的記憶體。
該至少一個處理器配置為:從主節點接收第一消息,其中該第一消息包括與多個EC區塊關聯的複合雜湊值,其中該多個EC區塊是由主節點利用交易請求根據EC碼生成的;回應於接收到第一消息,備節點向其他網路節點發送第二消息,其中,該第二消息包括第一消息和與第一消息關聯的備節點的簽名;從除該備節點外的至少一個備節點接收至少一個第二消息;回應於從該至少一個備節點接收至少一個第二消息,驗證至少一個第二消息是否有效;確定有效第二消息的數量是否超過預設閾值;回應於確定有效第二消息的數量超過了預設閾值,根據EC碼基於多個有效第二消息的子集重建交易請求;回應於確定已經成功重建交易請求,向其他網路節點發送第三消息,其中,第三消息包括有效第二消息中的一組簽名;從至少一個備節點接收至少一個第三消息;以及回應於接收到預設數量的相同的第三消息,執行交易請求。
可選地,根據EC碼生成多個EC區塊包括:利用EC碼將交易請求轉換為EC消息,並將EC消息劃分為多個EC區塊。
可選地,利用雜湊樹生成多個EC區塊的複合雜湊值。
可選地,雜湊樹包括Merkle樹,並且複合雜湊值是Merkle樹的根雜湊值。
可選地,與第一消息關聯的備節點的簽名包括:與第一消息關聯的備節點的私鑰簽名。
可選地,至少一個第二消息還包括該多個EC區塊中的至少一個。
可選地,驗證至少一個第二消息是否有效,包括:利用在至少一個第二消息中的多個EC區塊中的至少一個生成重建的雜湊樹;確定重建的雜湊樹的重建的複合雜湊值;對比重建的複合雜湊值與至少一個第二消息中的複合雜湊值;以及確定重建的複合雜湊值是否與至少一個第二消息中的複合雜湊值匹配。
可選地,至少一個處理器還配置為:回應於確定重建的複合雜湊值與至少一個第二消息中的複合雜湊值匹配,確定該第二消息有效。
可選地,預設數量的相同的第三消息包括預設數量的第三消息具有相同的簽名組。
參考圖15,圖15是根據本發明實施方式示出的主節點變更裝置1500的模組的圖。用於變更主節點的裝置1500可以應用於基於區塊鏈技術的共識系統。裝置1500可以對應於圖7-9所示的實施方式,裝置1500可以在區塊鏈網路中的備節點實施。裝置1500包括以下:確定單元1502,配置為確定需要進行時元改變,其中該時元改變促使具有當前主節點的當前時元變更為具有新主節點的新時元,其中當前時元包括利用主節點在多個網路節點中達成共識的共識處理,共識處理包括三個階段;確定單元1502,進一步配置為確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重,其中,該權重是對該備節點成為新時元中的新主節點的資格的度量;確定單元1502,還配置為基於該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重確定該備節點的權重和;發送器或發送單元1504,配置為回應於確定權重和達到了第一預設閾值,向多個網路節點中除該網路節點外的其他網路節點發送EPOCH_CHANGE消息,其中,EPOCH_CHANGE消息表示請求將具有當前主節點的當前時元變更為該備節點作為新主節點的新時元,以及EPOCH_CHANGE消息包括該備節點的權重和;接收器和接收單元1506,配置為從多個網路節點中除該備節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息,其中,該NEW_EPOCH消息表示該備節點將成為新主節點的確認;驗證單元1508,配置為驗證至少一個NEW_EPOCH消息是否有效;確定單元1502,還配置為確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過第二預設閾值;以及確定單元1502,還配置為回應於確定有效NEW_EPOCH消息的數量超過第二預設閾值,確定該備節點將成為新時元中的新主節點。
在一可選實施方式中,確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重包括:將該備節點在共識處理第一階段的權重確定為第一值。
在一可選實施方式中,確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重包括:回應於確定當前時元內的共識處理第二階段的Quorum驗證失敗,將該備節點在共識處理第二階段的權重確定為第一值;以及回應於確定當前時元內的共識處理第二階段的Quorum驗證成功,將該備節點在共識處理第二階段的權重確定為第二值,其中第一值小於第二值。
在一可選實施方式中,針對網路節點的在第二階段中的Quorum驗證包括從其他網路節點接收預設數量的ECHO消息。
在一可選實施方式中,確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重包括:回應於確定當前時元內的共識處理第三階段的Quorum驗證失敗,將該備節點在共識處理第三階段的權重確定為第三值;以及回應於確定當前時元內的共識處理第三階段的Quorum驗證成功,將該備節點在共識處理第三階段的權重確定為第四值,其中第三值小於第四值。
在一可選實施方式中,網路節點在第三階段中的Quorum驗證包括從其他網路節點接收預設數量的接受消息,其中,來自其他網路節點的每個接受消息表示每個其他網路節點已經接受了預設數量的ECHO消息。
在一可選實施方式中,EPOCH_CHANGE消息進一步包括與多個網路節點中的一組網路節點關聯的一組簽名,且NEW_EPOCH消息包括EPOCH_CHANGE消息的摘要。
在一可選實施方式中,驗證該至少一個有效NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH中的EPOCH_CHANGE消息的摘要是否有效;以及,驗證該至少一個NEW_EPOCH中的EPOCH_CHANGE消息的摘要是否有效,包括:驗證EPOCH_CHANGE消息中的該組簽名是否有效。
在一可選實施方式中,確定需要進行時元改變包括:回應於確定在舊時元中在預設時間內尚未達成共識,確定需要進行時元改變。
在一可選實施方式中,主節點變更裝置1500還包括:操作單元1510,配置為在具有新主節點的新時元中操作,其中該新時元包括利用新主節點在多個網路節點中達成共識的共識處理。
圖15是示出了主節點變更裝置1500的內部功能模組和結構的示意圖。實際執行主體可以為電子設備,該電子設備包括以下:至少一個處理器;和配置為儲存至少一個處理器可執行的指令的記憶體。
該至少一個處理器被配置為:確定需要進行時元改變,其中該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元,其中當前時元包括利用主節點在多個網路節點中達成共識的共識處理,該共識處理包括三個階段;確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重,其中該權重是對該備節點成為新時元中的新主節點的資格的度量;基於該備節點在當前時元的三個階段中的每個階段的相應的權重確定該備節點的權重和;回應於確定該權重和達到了第一預設閾值,向多個網路節點中除該網路節點外的其他網路節點發送EPOCH_CHANGE消息,其中該EPOCH_CHANGE消息表示請求將具有當前主節點的當前時元變更為以該備節點作為新主節點的新時元,以及該EPOCH_CHANGE消息包括該備節點的權重和;從多個網路節點中除該備節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息,其中,該NEW_EPOCH消息表示確認該備節點將成為新主節點;驗證至少一個NEW_EPOCH消息是否有效;確定至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過第二預設閾值;以及回應於確定有效NEW_EPOCH消息的數量超過第二預設閾值,確定該備節點將成為新時元中的新主節點。
可選地,確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重包括:將該備節點在共識處理第一階段的權重確定為第一值。
可選地,確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重包括:回應於確定當前時元內的共識處理第二階段的Quorum驗證失敗,將該備節點在共識處理第二階段的權重確定為第一值;以及回應於確定當前時元內的共識處理第二階段的Quorum驗證成功,將該備節點在共識處理第二階段的權重確定為第二值,其中該第一值小於第二值。
可選地,針對網路節點第二階段中的Quorum驗證包括從其他網路節點接收預設數量的ECHO消息。
可選地,確定該備節點在當前時元內的共識處理的三個階段中的每個階段的相應的權重包括:回應於確定當前時元內的共識處理第三階段的Quorum驗證失敗,確定該備節點在共識處理第三階段的權重作為第三值;以及回應於確定當前時元內的共識處理第三階段的Quorum驗證成功,確定該備節點在共識處理第三階段的權重為第四值,其中該第三值小於第四值。
可選地,網路節點在第三階段中的Quorum驗證包括從其他網路節點接收預設數量的接受消息,其中來自其他網路節點的每個接受消息表示每個其他網路節點已經接受了預設數量的ECHO消息。
可選地,EPOCH_CHANGE消息進一步包括與多個網路節點中的一組網路節點關聯的一組簽名,且NEW_EPOCH消息包括EPOCH_CHANGE消息的摘要。
可選地,驗證該至少一個有效NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH中的EPOCH_CHANGE消息的摘要是否有效;以及,驗證至少一個NEW_EPOCH中的EPOCH_CHANGE消息的摘要是否有效,包括:驗證EPOCH_CHANGE消息中的該組簽名是否有效。
可選地,確定需要進行時元改變包括:回應於確定在舊時元中在預設時間內尚未達成共識,確定需要進行時元改變。
可選地,該至少一個處理器進一步配置為利用新主節點在新時元中操作,其中該新時元包括利用該新主節點在多個網路節點中達成共識的共識處理。
參考圖16,圖16是根據本發明實施方式示出的主節點變更裝置1600的模組的圖。用於變更主節點的裝置1600可以應用於基於區塊鏈技術的共識系統。裝置1600可以對應於圖7-9所示的實施方式。例如,裝置1600可以在區塊鏈網路中的網路節點實施。裝置1600包括以下:接收器或接收單元1602,配置為從除該網路節點外的備節點接收EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息包括需要進行時元改變的指示,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元;驗證單元1604,配置為驗證EPOCH_CHANG消息是否有效;發送器或發送單元1606,配置為回應於驗證EPOCH_CHANGE消息有效,向其他網路節點發送NEW_EPOCH消息,其中,該NEW_EPOCH消息包括EPOCH_CHANGE消息的摘要;接收器或接收單元1602,進一步被配置為從多個網路節點中除該網路節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息;驗證單元1604,進一步被配置為驗證該至少一個NEW_EPOCH消息是否有效;確定單元1608,被配置為確定至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過預設閾值;以及確定單元1608,還被配置為回應於有效NEW_EPOCH消息的數量超過預設閾值,確定該備節點將成為新時元內的新主節點。
在一可選實施方式中,EPOCH_CHANGE消息包括與備節點關聯的權重和以及與多個網路節點中的一組網路節點關聯的一組簽名。
在一可選實施方式中,驗證EPOCH_CHANGE消息是否有效,包括:驗證EPOCH_CHANGE消息中的權重和是否有效;以及,驗證EPOCH_CHANGE消息中的權重和是否有效,包括:驗證該組簽名是否有效。
在一可選實施方式中,驗證至少一個NEW_EPOCH消息是否有效,包括:驗證至少一個NEW_EPOCH消息中的EPOCH_CHANGE消息的摘要是否有效;以及,驗證至少一個NEW_EPOCH消息中的EPOCH_CHANGE消息的摘要是否有效,包括:驗證EPOCH_CHANGE消息中的該組簽名是否有效。
圖16是示出了主節點變更裝置1600的內部功能模組和結構的示意圖。實際執行主體可以為電子設備,該電子設備包括以下:至少一個處理器;和配置為儲存至少一個處理器可執行的指令的記憶體。
至少一個處理器配置為:從除該網路節點外的備節點接收EPOCH_CHANGE消息,其中,EPOCH_CHANGE消息包括需要進行時元改變的指示,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元;驗證EPOCH_CHANG消息是否有效;回應於驗證EPOCH_CHANGE消息有效,向其他網路節點發送NEW_EPOCH消息,其中NEW_EPOCH消息包括EPOCH_CHANGE消息的摘要;從多個網路節點中除該網路節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息;驗證至少一個NEW_EPOCH消息是否有效;確定至少一個NEW_EPOCH中的有效NEW_EPOCH的數量是否超過了預設閾值;以及回應於確定有效NEW_EPOCH消息的數量超過預設閾值,確定該備節點成為新時元內的新主節點。
可選地,EPOCH_CHANGE消息包括與備節點關聯的權重和以及與該多個網路節點中的一組網路節點關聯的一組簽名。
可選地,驗證EPOCH_CHANGE消息是否有效,包括:驗證EPOCH_CHANGE消息中的權重和是否有效;以及,驗證EPOCH_CHANGE消息中的權重和是否有效,包括:驗證該組簽名是否有效。
可選地,驗證至少一個NEW_EPOCH消息是否有效,包括:驗證至少一個NEW_EPOCH消息中的EPOCH_CHANGE消息的摘要是否有效;以及,驗證至少一個NEW_EPOCH消息中的EPOCH_CHANGE消息的摘要是否有效,包括:驗證EPOCH_CHANGE消息中的該組簽名是否有效。
參考圖17,圖17是根據本發明實施方式示出的恢復裝置1700的模組的圖。恢復裝置1700可以應用於基於區塊鏈技術的共識系統。裝置1700可以對應於圖10-12所示的實施方式。例如,裝置1700可以在區塊鏈網路中的網路節點實現。裝置1700包括以下:廣播單元1702,配置為由區塊鏈網路中的網路節點將狀態請求消息廣播至區塊鏈網路中的多個其他網路節點,其中,該網路節點用於恢復目標交易具有目標序列號;接收器1704或接收單元1704,配置為從多個其他網路節點接收多個狀態回復消息,其中,該多個狀態回復消息各自包括一序列號;識別單元1706,配置為回應於確定狀態回復消息的數量超過了預設閾值,基於相同的序列號識別目標序列號,其中,多個狀態回復消息中的每一個包括相同序列號;發送器1708或發送單元1708,配置為向多個其他網路節點發送請求消息,其中,請求消息從多個其他網路節點分別請求ECHO消息,ECHO消息是由多個其他網路節點各自傳輸的消息,用於在多個其他網路節點之間就目標交易具有目標序列號達成共識,並且ECHO消息包括目標交易的一部分以及多個其他網路節點各自的簽名;接收器1704或接收單元1704,進一步配置為從多個其他網路節點接收多個ECHO消息;確定單元1710,配置為確定多個ECHO消息中的有效ECHO消息,其中每個該有效ECHO消息包括該目標序列號;恢復單元1712,配置為回應於確定有效ECHO消息的數量超過預設閾值,基於多個有效ECHO消息在該網路節點處恢復目標交易具有相同序列號;以及發送器1708,進一步配置為向多個其他網路節點發送表示該網路節點已被恢復的消息。
在一可選實施方式中,多個網路節點包括主節點和一個或多個備節點。
在一可選實施方式中,該網路節點是主節點或備節點。
在一可選實施方式中,請求消息包括目標序列號。
在一可選實施方式中,恢復裝置1700還包括:驗證單元1714,配置為多個其他網路節點中除該網路節點外的每一個其他網路節點在向該網路節點發送ECHO消息之前,驗證該請求消息。
在一可選實施方式中,驗證單元1714還配置為驗證每個ECHO消息是否有效;其中,驗證每個ECHO消息是否有效,包括利用Merkel樹驗證每個ECHO消息是否有效。
在一可選實施方式中,驗證每個ECHO消息是否有效還包括驗證ECHO消息中的簽名是否有效。
在一可選實施方式中,每個ECHO消息進一步包括與目標交易關聯的多個糾刪碼(EC)區塊中的至少一個,其中,多個EC區塊是利用目標交易根據EC碼生成的。
在一可選實施方式中,基於多個有效ECHO消息在該網路節點處恢復目標交易具有相同序列號,包括:利用多個有效ECHO消息中的多個EC區塊的子集重建目標交易。
在一可選實施方式中,送至多個其他網路節點的表示該網路節點已被恢復的消息包括多個有效ECHO消息中的一組簽名和目標序列號。
先前實施方式中示出的系統、裝置、模組或單元可以由電腦晶片或實體實現,或可以通過利用具有特定功能的產品實現。典型的實施設備為電腦,且電腦可以為個人電腦、筆記型電腦、蜂巢式電話、照相電話、智慧型電話、個人數位助手、媒體播放器、導航設備、電子郵件接收和發送設備、遊戲控制台、平板電腦、可穿戴設備或任何這些設備的組合。
對於裝置中每個單元的功能和角色的實現處理,可參考前述方法中對應的步驟的實現處理。為簡單起見,在此不做贅述。
由於裝置的實施方式基本對應於方法實施方式,對於相關部分,可參考方法實施方式中的相關描述。先前描述的裝置實施方式僅為示例。單獨描述的單元可以是或可以不是物理分離的,且示出的作為單元的部分可以是或可以不是物理單元,可以位於一個位置或可以分佈在多個網路單元。可以基於實際需求選擇某些或全部模組以達成本發明解決方案的目標。本領域普通技術人員在不付出創造性勞動的情況下就可以理解並實現本發明的實施方式。
圖17是示出了恢復裝置1700的內部功能模組和結構的示意圖。實際執行主體可以為電子設備,該電子設備包括以下:至少一個處理器;和配置為儲存至少一個處理器可執行的指令的記憶體。
該至少一個處理器配置為:區塊鏈網路中的網路節點將狀態請求消息廣播至區塊鏈網路中的多個其他網路節點,其中,該網路節點用於恢復目標交易具有目標序列號;從多個其他網路節點接收多個狀態回復消息,該多個狀態回復消息各自包括一序列號;回應於確定狀態回復消息的數量超過了預設閾值,基於相同的序列號識別目標序列號,其中,各個狀態回復消息包括一相同的序列號;向該多個其他網路節點發送請求消息,其中,該請求消息從多個其他網路節點分別請求ECHO消息,該ECHO消息是由該多個其他網路節點各自傳輸的消息,該消息用於在多個其他網路節點之間就目標交易具有目標序列號達成共識,並且ECHO消息包括目標交易的一部分以及多個其他網路節點各自的簽名;從多個其他網路節點接收多個ECHO消息;確定多個ECHO消息中的有效ECHO消息的數量,其中,每個有效ECHO消息包括目標序列號;回應於確定有效ECHO消息的數量超過預設閾值,基於多個有效ECHO消息在該網路節點處恢復目標交易具有相同序列號;以及向多個其他網路節點發送消息,表示該網路節點已被恢復。
可選地,多個網路節點包括主節點和一個或多個備節點。
可選地,該網路節點是主節點或備節點。
可選地,該請求消息包括目標序列號。
可選地,該至少一個處理器進一步配置為,除該網路節點外的多個其他網路節點在向該網路節點發送ECHO消息之前,分別驗證該請求消息。
可選地,驗證每個ECHO消息是否有效;其中,驗證每個ECHO消息是否有效,包括:利用Merkel樹驗證每個ECHO消息是否有效。
可選地,驗證每個ECHO消息是否有效還包括:驗證ECHO消息中的簽名是否有效。
可選地,每個ECHO消息進一步包括與目標交易關聯的多個糾刪碼(EC)區塊中的至少一個,其中,該多個EC區塊是利用目標交易根據EC碼生成的。
可選地,基於該多個有效ECHO消息在該網路節點處恢復目標交易具有相同序列號,包括:利用多個有效ECHO消息中的多個EC區塊的子集重建目標交易。
在一可選實施方式中,送至多個其他網路節點的表示網路節點已被恢復的消息包括多個有效ECHO消息中的一組簽名和目標序列號。
本發明中描述的主題、動作和操作的實施方式可在數位電子電路中,有形體現的電腦軟體或韌體、電腦硬體中實現,包括本發明中公開的結構及其結構等同物、或它們中的一個或多個的組合。本發明中描述的主題的實施方式的實施可以實現一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝置執行或控制資料處理裝置的操作。載體可以是有形的非暫態電腦儲存介質。可選地或附加地,載體可以是人為生成的傳播信號,例如,機器生成的電信號、光信號或電磁信號,其被生成來編碼資訊用於傳輸到合適的接收裝置上以供資料處理設備執行。電腦儲存介質可以是或部分是機器可讀取儲存設備、機器可讀取儲存基板、隨機或串行存取儲存設備或它們中的一個或多個的組合。電腦儲存介質不是傳播信號。
術語"資料處理裝置"包括用於處理資料的所有類型的裝置、設備和機器,包括如:可程式化處理器、電腦或多個處理器或電腦。資料處理裝置可包括專用邏輯電路,例如FPGA(現場可式化程閘陣列)、ASIC(專用積體電路)或GPU(圖形處理單元)。除了硬體,該裝置還可包括為電腦程式創建執行環境的代碼,例如,構成處理器韌體、協定疊、資料庫管理系統、操作系統或者它們之中一個或多個的組合的代碼。
電腦程式也可被稱為或描述為程式、軟體、軟體應用程式、應用程式、app、模組、軟體模組、引擎、腳本或代碼,可以以任何形式的編程語言編寫,包括編譯或演繹性語言、說明或程式性語言;它可以配置為任何形式,包括作為獨立程式,或作為模組、組件、引擎、子程式或適合在計算環境中執行的其他單元,該環境可包括通過在一個或多個位置由資料通信網路互連的一個或多個電腦。
電腦程式可以但非必須對應於文件系統中的文件。電腦程式可儲存在:存有其他程式或資料的文件的一部分中,例如,儲存在標記語言文檔中的一個或多個腳本;專用於所討論的程式的單個文件;或者多個協調文件,例如,儲存一個或多個模組、子程式或部分代碼的文件。
本發明中描述的處理和邏輯流程可由一台或多台電腦執行一個或多個電腦程式進行,以進行通過對輸入資料進行運算並生成輸出的操作。處理和邏輯流程也可由例如FPGA、ASIC、GPU等的專用邏輯電路或專用邏輯電路與一個或多個編程電腦的組合來執行。
適合於執行電腦程式的電腦可以是基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀記憶體和/或隨機存取記憶體接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個儲存設備。中央處理單元和記憶體可以補充有專用邏輯電路或集成在專用邏輯電路中。
通常,電腦將耦接到至少一個非暫態電腦可讀取儲存介質(也稱為電腦可讀取記憶體)上。耦接到電腦的儲存介質可以是電腦的內部組件(例如,集成硬碟驅動器)或外部組件(例如,通用串行匯流排(USB)硬碟驅動器或通過網路存取的儲存系統)。儲存介質的示例可包括:例如,磁碟、磁光碟或光碟、固態硬碟、諸如雲端儲存系統的網路儲存資源或其他類型的儲存介質。但是,電腦不需要這樣的設備。此外,電腦可嵌入在另一個設備中,例如行動電話、個人數位助理(PDA)、行動音頻或視頻播放器、遊戲控制台、全球定位系統(GPS)接收器或可攜式儲存設備,例如通用串行匯流排(USB)快閃記憶體驅動器,這裡僅舉幾例。
為了提供針對與用戶的交互,本發明實施方式中描述的主題可在電腦上實現或被配置為與該電腦通信,該電腦具有:顯示設備,例如,LCD(liqiud crystal display)監視器,用於向用戶顯示資訊;以及輸入設備,用戶可以通過該輸入設備向該電腦提供輸入,例如鍵盤和例如滑鼠、軌跡球或觸控板等的指針設備。其他類型的設備也可用於提供與用戶的交互;例如,提供給用戶的反饋可是任何形式的感官反饋,例如視覺反饋、聽覺反饋或觸覺反饋;並且可以接收來自用戶的任何形式的輸入,包括聲學、語音或觸覺輸入。此外,電腦可通過向用戶使用的設備發送文檔並從用戶使用的設備接收文檔來與用戶交互;例如,通過向客戶設備上的網路瀏覽器發送網路頁面以回應從網路瀏覽器接收到的請求,或通過與例如智慧型電話或電子平板電腦等的用戶設備上運行的應用程式(app)進行交互。此外,電腦可以通過向個人設備(例如,運行消息應用程式的智慧型電話)輪流發送文本消息或其他形式的消息並接收來自用戶的回應消息來與用戶交互。
本發明結合系統、裝置和電腦程式組件使用術語"配置為"。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著該系統已經在其上安裝了在運行中促使該系統執行該操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當由資料處理裝置執行時使該裝置執行操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行操作或動作的電子邏輯。
雖然本發明包含許多具體實施細節,但這些實施細節不應被解釋為對申請專利範圍本身所限定的要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本發明多個單獨實施方式的上下文中描述的多個特定特徵也可在單個實施方式中組合實現。相反,在單個實施方式的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施方式中實現。此外,儘管可以將上述特徵描述為以某種組合方式實現,此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初如此要求保護,但是在一些情況下,可以從要求保護的組合中刪除來自該組合的一個或多個特徵,並且可以要求保護指向子組合或子組合的變體。
類似地,雖然以特定順序在圖式中描繪了操作並且在申請專利範圍中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有示出的操作。在一些情況下,多任務和並行處理可能是有利的。此外,上述實施例中的各種系統模組和組件的劃分不應被理解為所有實施例中都要求如此劃分,而應當理解,所描述的程式組件和系統通常可以一起集成在單個軟體產品或者打包成多個軟體產品。
已經描述了特定主題的實施方式。其他實施方式在以下申請專利範圍的範圍內。例如,申請專利範圍中記載的動作可以按照不同的順序執行並且仍然實現期望的結果。作為一個示例,圖式中所描繪的處理無需要求所示的特定順序或次序來實現期望的結果。在一些情況下,多任務和並行處理可能是有利的。
100:環境
102:聯盟區塊鏈網路
106、108:計算設備或系統
110:網路
200:概念性架構
202、204、206:參與者系統
212:區塊鏈網路
214:節點
216:區塊鏈
216'、216''、216''':副本
300、400、408~438、700、800、806~822、1000、1100、1106~1124:處理
310、320、330:階段
R0:主節點
R1、R2、R3:網路節點
402:客戶端節點
404:主節點
406:備節點
500:哈希樹
502:交易請求
504:EC碼
506:EC消息
508:EC區塊
510:葉節點
512、514:非葉節點
802:備節點
804:網路節點
1010、1020、1030、1040、1050、1060:階段
1102、1104:網路節點
1300:共識裝置
1302:接收器
1304:生成單元
1306:發送器
1308:驗證單元
1310:確定單元
1312:重建單元
1314:執行單元
1400:共識裝置
1402:接收器
1404:發送器
1406:驗證單元
1408:確定單元
1410:重建單元
1412:執行單元
1500:主節點變更裝置
1502:確定單元
1504:發送器
1506:接收器
1508:驗證單元
1510:操作單元
1600:主節點變更裝置
1602:接收器
1604:驗證單元
1606:發送器
1608:確定單元
1700:恢復裝置
1702:廣播單元
1704:接收器
1706:識別單元
1708:發送器
1710:確定單元
1712:恢復單元
1714:驗證單元
圖1描繪了可用於執行本發明實施方式的環境的示例。
圖2描繪了根據本發明實施方式的概念性架構的示例。
圖3描繪了可根據本發明實施方式執行的共識處理的示例。
圖4描繪了可根據本發明實施方式執行的共識處理的示例。
圖5描繪了根據本發明實施方式的雜湊樹的示例。
圖6描繪了根據本發明實施方式的分布式系統的網路節點之間通信的消息的示例。
圖7描繪了根據本發明實施方式的在分布式系統中進行主節點變更的處理的示例。
圖8描繪了根據本發明實施方式的在分布式系統中進行主節點變更處理的示例。
圖9描繪了根據本發明實施方式的分布式系統的網路節點之間通信的消息的示例。
圖10描繪了根據本發明實施方式的在分布式系統中進行網路節點恢復處理的處理的示例。
圖11描繪了根據本發明實施方式的在分布式系統中進行網路節點恢復處理的處理的示例。
圖12描繪了根據本發明實施方式的分布式系統的網路節點內通信的消息的示例。
圖13描繪了根據本發明實施方式示出了共識裝置的模組的示例圖。
圖14描繪了根據本發明實施方式示出了共識裝置的模組的示例圖。
圖15描繪了根據本發明實施方式示出了主節點變更裝置的模組的示例圖。
圖16描繪了根據本發明實施方式示出了主節點變更裝置的模組的示例圖。
圖17描繪了根據本發明實施方式示出了恢復裝置的模組的示例圖。
各圖式中相同的參考符號表示相同的元件。
310、320、330:階段
R0:主節點
R1、R2、R3:網路節點
Claims (42)
- 一種電腦實施的方法,用於在包括多個網路節點的區塊鏈網路中進行主節點變更,其中,該多個網路節點包括該主節點和一個或多個備節點,該方法包括: 備節點確定需要進行時元改變,其中,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元,該當前時元包括利用該主節點在該多個網路節點之間達成共識的共識處理,該共識處理包括三個階段; 該備節點確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,其中,該權重是對該備節點成為該新主節點的資格的度量; 該備節點基於該備節點在該當前時元內的該三個階段中的每個階段的相應權重,確定該備節點的權重和; 回應於確定該權重和達到第一預設閾值,該備節點向該多個網路節點中除該備節點外的其他網路節點發送EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息表示請求將具有該當前主節點的該當前時元變更為該備節點作為該新主節點的該新時元,且該EPOCH_CHANGE消息包括該備節點的該權重和; 該備節點從該多個網路節點中除該備節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息,其中,該NEW_EPOCH消息表示確認該備節點將成為該新主節點; 該備節點驗證該至少一個NEW_EPOCH消息是否有效; 該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過第二預設閾值;以及 回應於確定該有效NEW_EPOCH消息的數量超過了該第二預設閾值,該備節點確定該備節點成為該新時元中的該新主節點。
- 如請求項1所述的方法,其中,確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,包括: 將該備節點在該共識處理的第一階段的權重確定為第一值。
- 如請求項1所述的方法,其中,確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,包括: 回應於確定該當前時元內的該共識處理的第二階段的Quorum驗證失敗,將該備節點在該共識處理的該第二階段的權重確定為第一值;以及 回應於確定該當前時元內的該共識處理的該第二階段的Quorum驗證成功,將該備節點在該共識處理的該第二階段的權重確定為第二值,其中,該第一值小於該第二值。
- 根據請求項3所述的方法,其中,該網路節點在該第二階段的該Quorum驗證,包括: 從其他網路節點接收預設數量的ECHO消息。
- 根據請求項1所述的方法,其中,確定該備節點在該當前時元內的共識處理的該三個階段中的每個階段的相應權重,包括: 回應於確定該當前時元內的共識處理的第三階段的Quorum驗證失敗,將該備節點在該共識處理的該第三階段的權重確定為第三值;以及 回應於確定該當前時元內的該共識處理的該第三階段的Quorum驗證成功,將該備節點在該共識處理的該第三階段的權重確定為第四值,其中,該第三值小於該第四值。
- 如請求項5所述的方法,其中,該網路節點在該第三階段的Quorum驗證,包括: 從其他網路節點接收預設數量的接受消息, 其中,來自其他網路節點的每個該接受消息表示每個該其他網路節點已經接受了預設數量的ECHO消息。
- 如請求項1所述的方法,其中, 該EPOCH_CHANGE消息進一步包括與該多個網路節點中的一組網路節點關聯的一組簽名,且 該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要。
- 如請求項7所述的方法,其中, 驗證該至少一個有效NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的摘要是否有效,且 驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的摘要是否有效,包括:驗證該EPOCH_CHANGE消息中的該組簽名是否有效。
- 如請求項1所述的方法,其中,確定需要進行時元改變,包括: 回應於確定在該舊時元中在預設時間內尚未達成該共識,確定需要進行時元改變。
- 如請求項1所述的方法,進一步包括: 在該新時元中利用該新主節點進行操作, 其中,該新時元包括利用該新主節點在該多個網路節點之間達成共識的共識處理。
- 一種電腦實施的方法,用於在包括多個網路節點的區塊鏈網路中進行主節點變更,其中,該多個網路節點包括該主節點和一個或多個備節點,該方法包括: 網路節點從除該網路節點外的備節點接收EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息包括需要進行時元改變的指示,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元; 該網路節點驗證該EPOCH_CHANGE消息是否有效; 回應於驗證該EPOCH_CHANGE消息是有效的,該網路節點向該其他網路節點發送NEW_EPOCH消息,其中,該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要; 該網路節點從該多個網路節點中除該網路節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息; 該網路節點驗證該至少一個NEW_EPOCH消息是否有效; 該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過預設閾值;以及 回應於確定該有效NEW_EPOCH消息的數量超過了預設閾值,該網路節點確定該備節點成為該新時元中的該新主節點。
- 如請求項11所述的方法,其中,該EPOCH_CHANGE消息包括: 與該備節點關聯的權重和,以及 與該多個網路節點中的一組網路節點關聯的一組簽名。
- 如請求項12所述的方法,其中, 驗證該EPOCH_CHANGE消息是否有效,包括:驗證該EPOCH_CHANGE消息中的該權重和是否有效, 驗證該EPOCH_CHANGE消息中的該權重和是否有效,包括:驗證該組簽名是否有效。
- 如請求項12所述的方法,其中, 驗證該至少一個NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,且 驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,包括:驗證該EPOCH_CHANGE消息中的該組簽名是否有效。
- 一種非暫態電腦可讀取儲存介質,其耦合到一個或多個電腦並配置有可由該一個或多個電腦執行的指令,以: 包括多個網路節點的區塊鏈網路中的備節點確定需要進行時元改變,其中,該多個網路節點包括主節點和包括該備節點的一個或多個備節點,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元,該當前時元包括利用該主節點在該多個網路節點之間達成共識的共識處理,該共識處理包括三個階段; 該備節點確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,其中,該權重是對該備節點成為該新主節點的資格的度量; 該備節點基於該備節點在該當前時元內的該三個階段中的每個階段的相應權重,確定該備節點的權重和; 回應於確定該權重和達到第一預設閾值,該備節點向該多個網路節點中除該備節點外的其他網路節點發送EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息表示請求將具有該當前主節點的該當前時元變更為該備節點作為該新主節點的該新時元,且該EPOCH_CHANGE消息包括該備節點的該權重和; 該備節點從該多個網路節點中除該備節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息,其中,該NEW_EPOCH消息表示確認該備節點將成為該新主節點; 該備節點驗證該至少一個NEW_EPOCH消息是否有效; 該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過第二預設閾值;以及 回應於確定該有效NEW_EPOCH消息的數量超過了該第二預設閾值,該備節點確定該備節點成為該新時元中的該新主節點。
- 如請求項15所述的非暫態電腦可讀取儲存介質,其中,確定該備節點在該當前時元內的該共識處理的三個階段中的每個階段的相應權重,包括: 將該備節點在該共識處理的第一階段的權重確定為第一值。
- 如請求項15所述的非暫態電腦可讀取儲存介質,其中,確定該備節點在該當前時元內的該共識處理的三個階段中的每個階段的相應權重,包括: 回應於確定該當前時元內的該共識處理的第二階段的Quorum驗證失敗,將該備節點在該共識處理的該第二階段的權重確定為第一值;以及 回應於確定該當前時元內的該共識處理的該第二階段的Quorum驗證成功,將該備節點在該共識處理的該第二階段的權重確定為第二值,其中,該第一值小於該第二值。
- 如請求項17所述的非暫態電腦可讀取儲存介質,其中,該網路節點在該第二階段中的該Quorum驗證包括: 從其他網路節點接收預設數量的ECHO消息。
- 如請求項15所述的非暫態電腦可讀取儲存介質,其中,確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,包括: 回應於確定該當前時元內的共識處理的第三階段的Quorum驗證失敗,將該備節點在該共識處理的該第三階段的權重確定為第三值;以及 回應於確定該當前時元內的共識處理的第三階段的Quorum驗證成功,將該備節點在該共識處理的該第三階段的權重確定為第四值,其中,該第三值小於該第四值。
- 如請求項19所述的非暫態電腦可讀取儲存介質,其中,該網路節點在該第三階段的Quorum驗證,包括: 從其他網路節點接收預設數量的接受消息, 其中,來自其他網路節點的每個該接受消息表示每個該其他網路節點已經接受了預設數量的ECHO消息。
- 如請求項15所述的非暫態電腦可讀取儲存介質,其中, 該EPOCH_CHANGE消息進一步包括與該多個網路節點中的一組網路節點關聯的一組簽名,且 該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要。
- 如請求項21所述的非暫態電腦可讀取儲存介質,其中, 驗證該至少一個有效NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH中的該EPOCH_CHANGE消息的該摘要是否有效,且 驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,包括:驗證該EPOCH_CHANGE消息中的該組簽名是否有效。
- 如請求項15所述的非暫態電腦可讀取儲存介質,其中,確定需要進行時元改變,包括: 回應於確定在該舊時元中在預設時間內尚未達成該共識,確定需要進行時元改變。
- 如請求項15所述的非暫態電腦可讀取儲存介質,還配置有可由該一個或多個電腦執行的指令,用於: 在該新時元中利用該新主節點進行操作, 其中,該新時元包括利用該新主節點在該多個網路節點之間達成共識的共識處理。
- 一種系統,包括: 一個或多個電腦;以及 一個或多個電腦可讀取記憶體,其耦合到該一個或多個電腦並配置有可由該一個或多個電腦執行的指令,以: 包括多個網路節點的區塊鏈網路中的備節點確定需要進行時元改變,其中,該多個網路節點包括主節點和包括該備節點的一個或多個備節點,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元,該當前時元包括利用該主節點在該多個網路節點之間達成共識的共識處理,該共識處理包括三個階段; 該備節點確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,其中,該權重是對該備節點成為該新主節點的資格的度量; 該備節點基於該備節點在該當前時元內的該三個階段中的每個階段的相應權重,確定該備節點的權重和; 回應於確定該權重和達到第一預設閾值,該備節點向該多個網路節點中除該備節點外的其他網路節點發送EPOCH_CHANGE消息,其中,該EPOCH_CHANGE消息表示請求將具有該當前主節點的該當前時元變更為該備節點作為該新主節點的該新時元,且該EPOCH_CHANGE消息包括該備節點的該權重和; 該備節點從該多個網路節點中除該備節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息,其中,該NEW_EPOCH消息表示確認該備節點將成為該新主節點; 該備節點驗證該至少一個NEW_EPOCH消息是否有效; 該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過第二預設閾值; 回應於確定該有效NEW_EPOCH消息的數量超過了該第二預設閾值,該備節點確定該備節點成為該新時元中的該新主節點。
- 如請求項25所述的系統,其中,確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,包括: 將該備節點在該共識處理的第一階段的權重確定為第一值。
- 如請求項25所述的系統,其中,確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,包括: 回應於確定該當前時元內的該共識處理的第二階段的Quorum驗證失敗,將該備節點在該共識處理的該第二階段的權重確定為第一值;以及 回應於確定該當前時元內的該共識處理的該第二階段的Quorum驗證成功,將該備節點在該共識處理的該第二階段的權重確定為第二值,其中,該第一值小於該第二值。
- 如請求項27所述的系統,其中,該網路節點在該第二階段中的Quorum驗證包括: 從其他網路節點接收預設數量的ECHO消息。
- 如請求項25所述的系統,其中,確定該備節點在該當前時元內的該共識處理的該三個階段中的每個階段的相應權重,包括: 回應於確定該當前時元內的共識處理的第三階段的Quorum驗證失敗,將該備節點在共識處理第三階段的權重確定為第三值;以及 回應於確定該當前時元內的共識處理的第三階段的Quorum驗證成功,將該備節點在該共識處理的該第三階段的權重確定為第四值,其中,該第三值小於該第四值。
- 如請求項29所述的系統,其中,該網路節點在該第三階段的Quorum驗證,包括: 從其他網路節點接收預設數量的接受消息, 其中,來自其他網路節點的每個該接受消息表示每個該其他網路節點已經接受了預設數量的ECHO消息。
- 如請求項25所述的系統,其中, 該EPOCH_CHANGE消息進一步包括與該多個網路節點中的一組網路節點關聯的一組簽名,且 該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要。
- 如請求項31所述的系統,其中, 驗證該至少一個有效NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH中的該EPOCH_CHANGE消息的該摘要是否有效,且 驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,包括:驗證該EPOCH_CHANGE消息中的該組簽名是否有效。
- 如請求項25所述的系統,其中,確定需要進行時元改變,包括: 回應於確定在該舊時元中在預設時間內尚未達成該共識,確定需要進行時元改變。
- 如請求項25所述的系統,其中,該電腦可讀取記憶體進一步配置有可由該一個或多個電腦執行的指令,用於: 在該新時元中利用該新主節點進行操作, 其中,該新時元包括利用該新主節點在該多個網路節點之間達成共識的共識處理。
- 一種非暫態電腦可讀取儲存介質,其耦合到一個或多個電腦並配置有可由該一個或多個電腦執行的指令,用於: 包括多個網路節點的區塊鏈網路中的網路節點從該區塊鏈網路節點中除該網路節點外的備節點接收EPOCH_CHANGE消息,其中,該多個網路節點包括主節點和一個或多個備節點,該EPOCH_CHANGE消息包括需要進行時元改變的指示,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元; 該網路節點驗證該EPOCH_CHANGE消息是否有效; 回應於驗證該EPOCH_CHANGE消息是有效的,該網路節點向該其他網路節點發送NEW_EPOCH消息,其中,該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要; 該網路節點從該多個網路節點中除該網路節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息; 該網路節點驗證該至少一個NEW_EPOCH消息是否有效; 該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過預設閾值;以及 回應於確定該有效NEW_EPOCH消息的數量超過了預設閾值,該網路節點確定該備節點成為該新時元中的該新主節點。
- 如請求項35所述的非暫態電腦可讀取儲存介質,其中,該EPOCH_CHANGE消息包括: 與該備節點關聯的權重和,以及 與該多個網路節點中的一組網路節點關聯的一組簽名。
- 如請求項36所述的非暫態電腦可讀取儲存介質,其中, 驗證該EPOCH_CHANGE消息是否有效,包括:驗證該EPOCH_CHANGE消息中的權重和是否有效, 驗證該EPOCH_CHANGE消息中的權重和是否有效,包括:驗證該組簽名是否有效。
- 如請求項37所述的非暫態電腦可讀取儲存介質,其中, 驗證該至少一個NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,且 驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,包括:驗證該EPOCH_CHANGE消息中的該組簽名是否有效。
- 一種系統,包括 一個或多個電腦;以及 一個或多個電腦可讀取記憶體,其耦合到該一個或多個電腦並配置有可由該一個或多個電腦執行的指令,用於: 包括多個網路節點的區塊鏈網路中的網路節點從該區塊鏈網路中除該網路節點外的備節點接收EPOCH_CHANGE消息,其中,該多個網路節點包括主節點和一個或多個備節點,該EPOCH_CHANGE消息包括需要進行時元改變的指示,該時元改變促使從具有當前主節點的當前時元變更為具有新主節點的新時元; 該網路節點驗證該EPOCH_CHANGE消息是否有效; 回應於驗證該EPOCH_CHANGE消息是有效的,該網路節點向該其他網路節點發送NEW_EPOCH消息,其中,該NEW_EPOCH消息包括該EPOCH_CHANGE消息的摘要; 該網路節點從該多個網路節點中除該網路節點外的至少一個其他網路節點接收至少一個NEW_EPOCH消息; 該網路節點驗證該至少一個NEW_EPOCH消息是否有效; 該備節點確定該至少一個NEW_EPOCH消息中的有效NEW_EPOCH消息的數量是否超過預設閾值;以及 回應於確定該有效NEW_EPOCH消息的數量超過了預設閾值,該網路節點確定該備節點成為該新時元中的該新主節點。
- 如請求項39所述的系統,其中,該EPOCH_CHANGE消息包括: 與該備節點關聯的權重和,以及 與該多個網路節點中的一組網路節點關聯的一組簽名。
- 如請求項40所述的系統,其中, 驗證該EPOCH_CHANGE消息是否有效,包括:驗證該EPOCH_CHANGE消息中的權重和是否有效, 驗證該EPOCH_CHANGE消息中的權重和是否有效,包括:驗證該組簽名是否有效。
- 如請求項40所述的系統,其中, 驗證該至少一個NEW_EPOCH消息是否有效,包括:驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,且 驗證該至少一個NEW_EPOCH消息中的該EPOCH_CHANGE消息的該摘要是否有效,包括:驗證該EPOCH_CHANGE消息中的組簽名是否有效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2018/120873 | 2018-12-13 | ||
PCT/CN2018/120873 WO2019072296A2 (en) | 2018-12-13 | 2018-12-13 | REALIZING A CHANGE OF A PRIMARY NODE IN A DISTRIBUTED SYSTEM |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202023232A true TW202023232A (zh) | 2020-06-16 |
TWI705690B TWI705690B (zh) | 2020-09-21 |
Family
ID=66100008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108125656A TWI705690B (zh) | 2018-12-13 | 2019-07-19 | 分布式網路中進行主節點變更的系統 |
Country Status (16)
Country | Link |
---|---|
US (2) | US10630672B2 (zh) |
EP (1) | EP3566397B1 (zh) |
JP (1) | JP6726367B2 (zh) |
KR (1) | KR102134549B1 (zh) |
CN (1) | CN111543026B (zh) |
AU (1) | AU2018348336B2 (zh) |
BR (1) | BR112019016598A2 (zh) |
CA (1) | CA3053208C (zh) |
MX (1) | MX2019009548A (zh) |
MY (1) | MY189985A (zh) |
PH (1) | PH12019501871A1 (zh) |
RU (1) | RU2716558C1 (zh) |
SG (1) | SG11201907346UA (zh) |
TW (1) | TWI705690B (zh) |
WO (1) | WO2019072296A2 (zh) |
ZA (1) | ZA201905274B (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599835B2 (en) | 2018-02-06 | 2020-03-24 | Vmware, Inc. | 32-bit address space containment to secure processes from speculative rogue cache loads |
US10747629B2 (en) * | 2018-06-11 | 2020-08-18 | Vmware, Inc. | Linear view-change BFT with optimistic responsiveness |
US10713133B2 (en) | 2018-06-11 | 2020-07-14 | Vmware, Inc. | Linear view-change BFT |
CA3053208C (en) * | 2018-12-13 | 2020-10-06 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
RU2718411C1 (ru) | 2018-12-13 | 2020-04-02 | Алибаба Груп Холдинг Лимитед | Выполнение процесса восстановления для сетевого узла в распределённой системе |
EP3566392B1 (en) | 2018-12-13 | 2021-08-25 | Advanced New Technologies Co., Ltd. | Achieving consensus among network nodes in a distributed system |
US11048596B2 (en) * | 2018-12-14 | 2021-06-29 | Nokia Technologies Oy | Hierarchical weighted consensus for permissioned blockchains |
US20210185091A1 (en) * | 2018-12-28 | 2021-06-17 | Mox-SpeedChain, LLC | Advanced Security System for Implementation in an Internet of Things (IOT) Blockchain Network |
US10938750B2 (en) | 2019-03-18 | 2021-03-02 | Advanced New Technologies Co., Ltd. | Consensus system downtime recovery |
SG11201908544UA (en) | 2019-03-18 | 2019-10-30 | Alibaba Group Holding Ltd | Consensus system downtime recovery |
CN110870288B (zh) | 2019-03-18 | 2022-05-27 | 创新先进技术有限公司 | 共识系统停机时间恢复 |
CN110049051B (zh) * | 2019-04-22 | 2020-08-11 | 成都四方伟业软件股份有限公司 | 请求的验证方法、装置、存储介质及联盟链验证系统 |
WO2019170169A2 (en) | 2019-06-05 | 2019-09-12 | Alibaba Group Holding Limited | Consensus system and method |
US10896171B2 (en) * | 2019-06-13 | 2021-01-19 | Tyson York Winarski | Big data blockchains with Merkle trees |
CN111406252B (zh) * | 2019-11-06 | 2022-04-15 | 支付宝(杭州)信息技术有限公司 | 基于纠错码的共享区块链数据存储的共识 |
EP4055791B1 (en) * | 2019-11-06 | 2023-12-27 | Visa International Service Association | Blockchain enabled fault tolerance |
JP7004423B2 (ja) * | 2019-11-06 | 2022-01-21 | アリペイ (ハンジョウ) インフォメーション テクノロジー カンパニー リミテッド | 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のデータセキュリティ |
SG11202010558PA (en) | 2019-11-13 | 2020-11-27 | Alipay Hangzhou Inf Tech Co Ltd | Blockchain data storage based on error correction code for permissioned blockchain network |
CN111369266A (zh) * | 2020-03-03 | 2020-07-03 | 珠海市一堂科技有限公司 | 一种基于区块链的工艺作品的溯源方法 |
CN111507840B (zh) * | 2020-04-15 | 2024-03-26 | 财付通支付科技有限公司 | 区块链共识方法、装置、计算机以及可读存储介质 |
CN111539726B (zh) * | 2020-04-20 | 2024-03-19 | 中国工商银行股份有限公司 | 区块链共识系统及方法 |
US11431476B2 (en) * | 2020-04-30 | 2022-08-30 | Dell Products L.P. | Install time creation of forward error correction data and integrity checksums |
CN111343212B (zh) * | 2020-05-22 | 2020-08-28 | 腾讯科技(深圳)有限公司 | 消息处理方法、装置、设备以及存储介质 |
CN111711526B (zh) * | 2020-06-16 | 2024-03-26 | 深圳前海微众银行股份有限公司 | 一种区块链节点的共识方法及系统 |
CN111526219B (zh) | 2020-07-03 | 2021-02-09 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN111526216B (zh) * | 2020-07-03 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN111522800B (zh) | 2020-07-03 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
CN111526217B (zh) | 2020-07-03 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的共识方法和系统 |
CN112513914A (zh) * | 2020-07-03 | 2021-03-16 | 支付宝(杭州)信息技术有限公司 | 基于区块链的隐私交易中提供隐私和安全保护的系统和方法 |
KR102577432B1 (ko) * | 2020-07-27 | 2023-09-12 | 한국전자통신연구원 | 블록체인 네트워크의 블록 합의 방법 및 장치 |
CN112068978B (zh) * | 2020-08-27 | 2022-06-10 | 恒宝股份有限公司 | View-change二次启动定时器的定时期限延长方法及装置 |
CN112511338A (zh) * | 2020-11-09 | 2021-03-16 | 迅鳐成都科技有限公司 | 区块链共识网络动态恢复方法、电子设备、系统及介质 |
CN112511337B (zh) * | 2020-11-09 | 2023-03-14 | 迅鳐成都科技有限公司 | 区块链共识网络自恢复方法、电子设备、系统及存储介质 |
CN112398692B (zh) * | 2020-11-16 | 2022-07-19 | 网易(杭州)网络有限公司 | 共识流程处理方法、装置和电子设备 |
US11593210B2 (en) | 2020-12-29 | 2023-02-28 | Hewlett Packard Enterprise Development Lp | Leader election in a distributed system based on node weight and leadership priority based on network performance |
WO2023282932A2 (en) * | 2020-12-31 | 2023-01-12 | Orbs Ltd. | Using decentralized networks to ensure transparency in remote device operation |
CN113079139B (zh) * | 2021-03-23 | 2022-11-29 | 中国工商银行股份有限公司 | 基于区块链的共识组主节点确定方法、装置及系统 |
CN113297173B (zh) * | 2021-05-24 | 2023-10-31 | 阿里巴巴新加坡控股有限公司 | 分布式数据库集群管理方法及装置、电子设备 |
CN113535942B (zh) * | 2021-07-21 | 2022-08-19 | 北京海泰方圆科技股份有限公司 | 一种文本摘要生成方法、装置、设备及介质 |
CN114531722B (zh) * | 2022-03-01 | 2024-05-03 | 杭州老板电器股份有限公司 | 本地网络中设备的联网方法、装置和电子设备 |
CN114760135B (zh) * | 2022-04-19 | 2023-03-28 | 浙江大学 | 一种区块链容错共识方案的优化方法 |
CN115131022B (zh) * | 2022-08-26 | 2022-11-29 | 中国工业互联网研究院 | 基于区块链的数字资产交易方法、装置、设备及介质 |
CN118377743B (zh) * | 2024-06-25 | 2024-08-23 | 山东云海国创云计算装备产业创新中心有限公司 | 输入请求的仲裁方法、装置、设备、介质及产品 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4309569A (en) | 1979-09-05 | 1982-01-05 | The Board Of Trustees Of The Leland Stanford Junior University | Method of providing digital signatures |
DE3381526D1 (de) | 1983-02-09 | 1990-06-07 | Ibm | Verfahren zum erhalten der einigung mehrfacher rechner zum vermeiden von fehlern. |
US7249259B1 (en) | 1999-09-07 | 2007-07-24 | Certicom Corp. | Hybrid signature scheme |
US6671821B1 (en) * | 1999-11-22 | 2003-12-30 | Massachusetts Institute Of Technology | Byzantine fault tolerance |
US6985956B2 (en) | 2000-11-02 | 2006-01-10 | Sun Microsystems, Inc. | Switching system |
US6931431B2 (en) | 2001-01-13 | 2005-08-16 | International Business Machines Corporation | Agreement and atomic broadcast in asynchronous networks |
US7502360B2 (en) * | 2005-03-04 | 2009-03-10 | Itt Manufacturing Enterprises, Inc. | Method and apparatus for dynamic neighbor discovery within wireless networks using time division multiple access (TDMA) |
US8819102B2 (en) | 2007-07-03 | 2014-08-26 | Cisco Technology, Inc. | Method and system for managing message communications |
US8392496B2 (en) | 2008-12-19 | 2013-03-05 | Watchguard Technologies, Inc. | Cluster architecture for network security processing |
JP5427574B2 (ja) | 2009-12-02 | 2014-02-26 | 株式会社日立製作所 | 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム |
WO2013063330A1 (en) * | 2011-10-25 | 2013-05-02 | Nicira, Inc. | Chassis controllers for converting universal flows |
US9471622B2 (en) | 2012-04-30 | 2016-10-18 | International Business Machines Corporation | SCM-conscious transactional key-value store |
JP2014178793A (ja) * | 2013-03-14 | 2014-09-25 | Hitachi Ltd | 情報処理システム |
CN104468163B (zh) * | 2013-09-18 | 2018-11-09 | 腾讯科技(北京)有限公司 | 容灾网络组网的方法、装置及容灾网络 |
JP2015146165A (ja) * | 2014-02-04 | 2015-08-13 | 日本電信電話株式会社 | 障害耐性信号処理装置および障害耐性信号処理方法 |
EP3129903B1 (en) * | 2014-07-01 | 2018-11-28 | SAS Institute Inc. | Systems and methods for fault tolerant communications |
WO2016155002A1 (en) | 2015-04-03 | 2016-10-06 | Yahoo! Inc. | Method and system for data recovery in a data system |
EP3345360B1 (en) | 2015-09-04 | 2021-03-03 | Nec Corporation | Method for storing an object on a plurality of storage nodes |
WO2017136527A1 (en) * | 2016-02-05 | 2017-08-10 | Manifold Technology, Inc. | Blockchain-enhanced database |
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 |
WO2017186317A1 (en) | 2016-10-04 | 2017-11-02 | Nec Europe Ltd. | Method and system for byzantine fault-tolerance replicating of data on a plurality of servers |
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 |
US10554746B2 (en) | 2016-11-14 | 2020-02-04 | International Business Machines Corporation | Decentralized immutable storage blockchain configuration |
US10311230B2 (en) | 2016-12-24 | 2019-06-04 | Cisco Technology, Inc. | Anomaly detection in distributed ledger systems |
CN106529951A (zh) | 2016-12-30 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种联盟链网络下采用异步方式的节点共识验证方法 |
CN107391320B (zh) * | 2017-03-10 | 2020-07-10 | 创新先进技术有限公司 | 一种共识方法及装置 |
CN107360206B (zh) * | 2017-03-29 | 2020-03-27 | 创新先进技术有限公司 | 一种区块链共识方法、设备及系统 |
US10503614B2 (en) | 2017-04-21 | 2019-12-10 | Vmware, Inc. | Byzantine agreement using communications having linear complexity |
CN107423152B (zh) | 2017-04-24 | 2019-05-21 | 杭州趣链科技有限公司 | 一种区块链共识节点自动恢复方法 |
US11626993B2 (en) | 2017-05-22 | 2023-04-11 | Visa International Service Association | Network for improved verification speed with tamper resistant data |
CN107528882B (zh) * | 2017-07-14 | 2020-12-25 | 创新先进技术有限公司 | 区块链共识网络中处理共识请求的方法、装置和电子设备 |
WO2019055507A1 (en) | 2017-09-15 | 2019-03-21 | Identify3D, Inc. | SYSTEM AND METHOD FOR MANAGING AND SECURING DATA FOR DIGITAL MANUFACTURING |
US11165862B2 (en) * | 2017-10-24 | 2021-11-02 | 0Chain, LLC | Systems and methods of blockchain platform for distributed applications |
CN108306760A (zh) * | 2017-12-28 | 2018-07-20 | 中国银联股份有限公司 | 用于在分布式系统中使管理能力自恢复的方法和装置 |
CN108365993B (zh) * | 2018-03-09 | 2020-04-28 | 深圳前海微众银行股份有限公司 | 区块链节点动态变更方法、系统和计算机可读存储介质 |
CN108616596B (zh) * | 2018-05-09 | 2020-12-25 | 南京邮电大学 | 基于动态授权和网络环境感知的区块链自适应共识方法 |
CN108768749B (zh) | 2018-06-21 | 2021-03-30 | 佛山科学技术学院 | 一种基于区块链的节点隔离自恢复方法及装置 |
RU2718411C1 (ru) | 2018-12-13 | 2020-04-02 | Алибаба Груп Холдинг Лимитед | Выполнение процесса восстановления для сетевого узла в распределённой системе |
EP3566392B1 (en) | 2018-12-13 | 2021-08-25 | Advanced New Technologies Co., Ltd. | Achieving consensus among network nodes in a distributed system |
CA3053208C (en) * | 2018-12-13 | 2020-10-06 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
-
2018
- 2018-12-13 CA CA3053208A patent/CA3053208C/en active Active
- 2018-12-13 KR KR1020197023532A patent/KR102134549B1/ko active IP Right Grant
- 2018-12-13 EP EP18866636.6A patent/EP3566397B1/en active Active
- 2018-12-13 BR BR112019016598-3A patent/BR112019016598A2/pt active Search and Examination
- 2018-12-13 MX MX2019009548A patent/MX2019009548A/es active IP Right Grant
- 2018-12-13 JP JP2019543000A patent/JP6726367B2/ja active Active
- 2018-12-13 RU RU2019125158A patent/RU2716558C1/ru active
- 2018-12-13 MY MYPI2019004568A patent/MY189985A/en unknown
- 2018-12-13 SG SG11201907346UA patent/SG11201907346UA/en unknown
- 2018-12-13 WO PCT/CN2018/120873 patent/WO2019072296A2/en unknown
- 2018-12-13 AU AU2018348336A patent/AU2018348336B2/en active Active
- 2018-12-13 CN CN201880004807.9A patent/CN111543026B/zh active Active
-
2019
- 2019-05-24 US US16/421,953 patent/US10630672B2/en active Active
- 2019-07-19 TW TW108125656A patent/TWI705690B/zh active
- 2019-08-08 ZA ZA2019/05274A patent/ZA201905274B/en unknown
- 2019-08-13 PH PH12019501871A patent/PH12019501871A1/en unknown
-
2020
- 2020-02-26 US US16/801,729 patent/US10791107B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
BR112019016598A2 (pt) | 2020-03-31 |
EP3566397A2 (en) | 2019-11-13 |
KR20200074912A (ko) | 2020-06-25 |
ZA201905274B (en) | 2021-10-27 |
WO2019072296A2 (en) | 2019-04-18 |
US20190288993A1 (en) | 2019-09-19 |
US20200195625A1 (en) | 2020-06-18 |
TWI705690B (zh) | 2020-09-21 |
US10791107B2 (en) | 2020-09-29 |
JP2020513170A (ja) | 2020-04-30 |
EP3566397A4 (en) | 2020-03-04 |
AU2018348336B2 (en) | 2020-07-23 |
CN111543026A (zh) | 2020-08-14 |
US10630672B2 (en) | 2020-04-21 |
JP6726367B2 (ja) | 2020-07-22 |
CN111543026B (zh) | 2023-08-04 |
KR102134549B1 (ko) | 2020-07-27 |
MY189985A (en) | 2022-03-22 |
MX2019009548A (es) | 2019-09-26 |
RU2716558C1 (ru) | 2020-03-12 |
CA3053208C (en) | 2020-10-06 |
AU2018348336A1 (en) | 2020-07-02 |
CA3053208A1 (en) | 2019-04-18 |
SG11201907346UA (en) | 2019-09-27 |
WO2019072296A3 (en) | 2019-08-29 |
EP3566397B1 (en) | 2021-07-28 |
PH12019501871A1 (en) | 2020-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI705690B (zh) | 分布式網路中進行主節點變更的系統 | |
CN110169015B (zh) | 在分布式系统中的网络节点之间达成共识 | |
CN110178340B (zh) | 在分布式系统中进行网络节点的恢复处理 |