TW201837777A - 分散式系統及訊息處理方法 - Google Patents

分散式系統及訊息處理方法 Download PDF

Info

Publication number
TW201837777A
TW201837777A TW107109510A TW107109510A TW201837777A TW 201837777 A TW201837777 A TW 201837777A TW 107109510 A TW107109510 A TW 107109510A TW 107109510 A TW107109510 A TW 107109510A TW 201837777 A TW201837777 A TW 201837777A
Authority
TW
Taiwan
Prior art keywords
node
message
nodes
consensus
slave
Prior art date
Application number
TW107109510A
Other languages
English (en)
Other versions
TWI662435B (zh
Inventor
郭銳
李茂材
趙琦
張建俊
屠海濤
王宗友
梁軍
朱大衛
陳立生
劉斌華
Original Assignee
大陸商騰訊科技(深圳)有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 大陸商騰訊科技(深圳)有限公司 filed Critical 大陸商騰訊科技(深圳)有限公司
Publication of TW201837777A publication Critical patent/TW201837777A/zh
Application granted granted Critical
Publication of TWI662435B publication Critical patent/TWI662435B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/0709Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0847Transmission error
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic 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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Environmental & Geological Engineering (AREA)
  • Power Engineering (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本發明公開了分散式系統及訊息處理方法。分散式系統包括:客戶端及複數個節點;主節點接收客戶端的訊息;驗證訊息的數位簽名成功後將訊息發送到從節點;接收到預定數量的從節點的確認接收通知並持久化儲存訊息,向從節點發送儲存訊息通知;從節點接收主節點發送的訊息時向客戶端返回結果;驗證所接收的訊息數位簽名成功後向主節點發送確認接收通知,並持久化儲存所接收的訊息;客戶端,根據從節點接收到訊息時返回的結果,確定異常節點。本發明能够在保證分散式系統的節點的共識效率的同時檢測異常節點。

Description

分散式系統及訊息處理方法
本發明係關於一種分散式計算技術,特別有關一種分散式系統及訊息處理方法。
分散式系統是目前普遍使用的計算系統,應用於區塊鏈、ZooKeeper分散式服務框架等等諸多領域。
分散式系統的工作過程中,需要對來自客戶端的待處理的訊息形成共識(Consensus),即分散式系統的全部節點或多數節點對接收的訊息進行確認,然後對訊息進行同步儲存/處理。
例如,當分散式系統應用在私有區塊鏈或聯盟區塊鏈中時,各節點對於客戶端提交的交易記錄的根據共識算法形成共識(即確認交易記錄的可靠性),會在各個節點的維護的區塊鏈中儲存,保證了各個節點儲存的交易記錄的一致性。
分散式系統目前採用的共識算法往往側重於達成共識的效率,或在達成共識的過程中保證一定的容錯性能,容錯性能是指存在故障節點或惡意節點時,保證多數的節點仍然能够達成共識。
對於相關技術提供的用於保證達成共識的效率的共識算法來說,由於無法檢測故障節點和惡意節點,因此難以保證共識的可靠性。
本發明實施例提供一種分散式系統及訊息處理方法,能够保證節點針對訊息高效達成共識的同時,還能够檢測異常節點。
本發明實施例的技術方案是這樣實現的:
第一方面,本發明實施例提供一種分散式系統,包括:客戶端和多個節點;所述節點,用於在第一共識模式中新的共識周期到達時,透過執行選舉操作確定處於主節點的狀態或處於從節點的狀態;其中,所述節點,還用於處於主節點的狀態時,驗證所述客戶端發送的訊息的數位簽名,將所述訊息發送到所述從節點;接收到超出預定數量的所述從節點的確認接收通知並驗證所述確認接收通知的數位簽名,持久化儲存所述訊息,向所述從節點發送儲存訊息通知;所述節點,還用於處於從節點的狀態時,接收到所述主節點發送的所述訊息時向所述客戶端返回結果;驗證所接收的訊息的數位簽名,向所述主節點發送確認接收通知;驗證所接收的儲存訊息通知的數位簽名,持久化儲存所接收的訊息;所述客戶端,用於根據所述從節點接收到所述訊息時返回的結果,確定異常節點。
第二方面,本發明實施例提供一種訊息處理方法,包括:在第一共識模式中新的共識周期到達時,分散式系統中的節點透過執行選舉操作處於主節點的狀態或處於從節點的狀態;其中,所述節點處於主節點的狀態時接收所述客戶端的訊息,驗證所述訊息的數位簽名,將所述訊息發送到所述從節點;所述節點處於從節點的狀態時,接收到所述主節點發送 的所述訊息並向所述客戶端返回結果,驗證所接收的訊息的數位簽名後向所述主節點發送確認接收通知;所述節點處於主節點的狀態時,接收到超出預定數量的所述從節點的確認接收通知,驗證所述確認接收訊息的數位簽名後持久化儲存所述訊息,向所述從節點發送儲存訊息通知;所述節點處於從節點的狀態時,驗證所接收的儲存訊息通知的數位簽名後持久化儲存所接收的訊息;所述客戶端根據所述從節點接收到所述訊息時返回的結果,確定異常節點。
第三方面,本發明實施例提供一種訊息處理方法,應用於分散式系統中的節點,包括:在第一共識模式中新的共識周期到達時,分散式系統中的節點透過執行選舉操作處於主節點的狀態或處於從節點的狀態;其中,所述節點處於主節點的狀態時接收所述客戶端的訊息,驗證所述訊息的數位簽名,將所述訊息發送到所述從節點;所述節點處於從節點的狀態時,接收到所述主節點發送的所述訊息並向所述客戶端返回結果,驗證所接收的訊息的數位簽名後向所述主節點發送確認接收通知;所述節點處於主節點的狀態時,接收到超出預定數量的所述從節點的確認接收通知,驗證所述確認接收訊息的數位簽名後持久化儲存所述訊息,向所述從節點發送儲存訊息通知;所述節點處於從節點的狀態時,驗證所接收的儲存訊息通知的數位簽名後持久化儲存所接收的訊息;所述訊息,用於供客戶端確定異常節點。
上述方案中,所述從節點向所述客戶端返回結果携帶所 述訊息的唯一性欄位和所述從節點的數位簽名,用於供所述客戶端驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
上述方案中,所述從節點所返回的結果還携帶所述從節點所接收訊息的序列號,用於供所述客戶端根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定所述主節點為惡意節點。
上述方案中,還包括:所述節點在所述客戶端確定所述主節點為惡意節點,或者,確定所述從節點中存在故障節點時,切換到第二共識模式。
上述方案中,還包括:所述節點在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,確認一致時向所述客戶端發送携帶相應節點的數位簽名的一致性確認;所述一致性確認,用於供所述客戶端在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第一共識模式;未在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第二共識模式。
上述方案中,還包括:所述節點在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,確認一致時向訊息的發送節點發送携帶相應節點的數位簽名的資料確認; 所述資料確認,用於供所述客戶端在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一節點未接收到其他節點發送的資料確認時,觸發所述分散式系統的節點繼續切換到所述第二共識模式。
上述方案中,還包括:所述主節點在所述第二共識模式中統計到與所述從節點針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,與所述從節點切換到所述第一共識模式。
上述方案中,所述主節點在所述第二共識模式中統計到與所述從節點針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,與所述從節點切換到所述第一共識模式,包括:所述主節點在所述第二共識模式中統計到針對所接收的訊息形成共識的次數超過所述主節點共識次數閾值時,向所述從節點發送切換到所述第一共識模式的通知,並在接收到全部所述從節點發送的切換確認時,與所述從節點保持節點的狀態切換到所述第一共識模式。
上述方案中,還包括:所述從節點在接收到切換到所述第一共識模式的通知時,統計到針對所接收的訊息形成共識的次數超過從節點共識次數閾值時,向所述主節點發送切換確認。
上述方案中,所述從節點未接收到所述主節點的心跳訊息時,或者,所述主節點為惡意節點時,透過執行選舉操作確定處於主節點的狀態或處於從節點的狀態。
上述方案中,所述節點在新的共識周期到達、且未接收到其他節點發送的心跳訊息時,向所述其他節點發送選舉請求,所述選舉請求携帶所述節點的數位簽名,當接收預定數量的其他 節點返回的選舉確認時,轉換為主節點的狀態,定期向所述其他節點發送心跳訊息;其中,所述選舉確認為所述其他節點驗證所述選取請求携帶的數位簽名後發送;所述節點在新的共識周期到達、且接收到其他節點發送的心跳訊息時轉換為從節點的狀態。
第四方面,本發明實施例提供一種分散式系統中的節點,包括:選舉單元,用於在第一共識模式中新的共識周期到達時,透過執行選舉操作確定處於主節點的狀態或處於從節點的狀態;其中,主節點單元,用於當所述節點處於主節點的狀態時接收所述客戶端的訊息,驗證所述訊息的數位簽名,將所述訊息發送到所述從節點;從節點單元,用於當所述節點處於從節點的狀態時,接收到所述主節點發送的所述訊息並向所述客戶端返回結果,驗證所接收的訊息的數位簽名後向所述主節點發送確認接收通知;所述主節點單元,用於當所述節點處於主節點的狀態時,接收到超出預定數量的所述從節點的確認接收通知,驗證所述確認接收訊息的數位簽名後持久化儲存所述訊息,向所述從節點發送儲存訊息通知;所述從節點單元,用於當所述節點處於從節點的狀態時,驗證所接收的儲存訊息通知的數位簽名後持久化儲存所接收的訊息;所述訊息用於供客戶端確定異常節點。
上述方案中,所述從節點向所述客戶端返回結果携帶所述訊息的唯一性欄位和所述從節點的數位簽名,用於供所述客戶端驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位 與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
上述方案中,所述從節點所返回的結果還携帶所述從節點所接收訊息的序列號,用於供所述客戶端根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定所述主節點為惡意節點。
上述方案中,還包括:切換單元,用於在所述客戶端確定所述主節點為惡意節點,或者,確定所述從節點中存在故障節點時,切換到第二共識模式。
上述方案中,所述切換單元,還用於在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,確認一致時向所述客戶端發送携帶相應節點的數位簽名的一致性確認;所述一致性確認,用於供所述客戶端在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第一共識模式;未在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第二共識模式。
上述方案中,所述切換單元,還用於在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,確認一致時向訊息的發送節點發送携帶相應節點的數位簽名的資料確認;所述資料確認,用於供所述客戶端在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一節點未接收到其他節點發送的資料確認時,觸發所述分 散式系統的節點繼續切換到所述第二共識模式。
上述方案中,所述主節點單元,還用於當所述節點處於主節點的狀態,並在所述第二共識模式中統計到與所述從節點針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,與所述從節點切換到所述第一共識模式。
上述方案中,所述主節點單元,還用於在所述第二共識模式中統計到針對所接收的訊息形成共識的次數超過所述主節點共識次數閾值時,向所述從節點發送切換到所述第一共識模式的通知,並在接收到全部所述從節點發送的切換確認時,與所述從節點保持節點的狀態切換到所述第一共識模式。
上述方案中,所述從節點單元,還用於當所述節點處於從節點的狀態時,在接收到切換到所述第一共識模式的通知時,統計到針對所接收的訊息形成共識的次數超過從節點共識次數閾值時,向所述主節點發送切換確認。
上述方案中,所述選舉單元,還用於當未接收到所述主節點的心跳訊息時,或者,所述主節點為惡意節點時,透過重新執行選舉操作確定處於主節點的狀態或處於從節點的狀態。
上述方案中,所述選舉單元,還用於當在新的共識周期到達、且未接收到其他節點發送的心跳訊息時,向所述其他節點發送選舉請求,所述選舉請求携帶所述節點的數位簽名,當接收預定數量的其他節點返回的選舉確認時,轉換為主節點的狀態,定期向所述其他節點發送心跳訊息;其中,所述選舉確認為所述其他節點驗證所述選取請求携帶的數位簽名後發送;所述選舉單元,還用於當在新的共識周期到達、且接收到其他節點發送的心跳訊息時轉換為從節點的狀態。
第五方面,本發明實施例提供一種訊息處理方法,包括: 向分散式系統的節點中的主節點發送訊息,所述訊息携帶所述客戶端的數位簽名;其中,所述數位簽名用於供所述主節點進行驗證,並將所接收的訊息携帶所述主節點的數位簽名,發送給所述分散式系統中的從節點;接收所述從節點在接收到所述訊息時返回的結果;根據所述從節點接收到所述訊息時返回的結果,確定異常節點。
第六方面,本發明實施例提供一種客戶端,包括:通訊單元,用於向分散式系統的節點中的主節點發送訊息,所述訊息携帶所述客戶端的數位簽名;其中,所述數位簽名用於供所述主節點進行驗證,並將所接收的訊息携帶所述主節點的數位簽名,發送給所述分散式系統中的從節點;所述通訊單元,用於接收所述從節點在接收到所述訊息時返回的結果;檢測單元,用於根據所述從節點接收到所述訊息時返回的結果,確定異常節點。
上述方案中,所述檢測單元,還用於驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
上述方案中,所述檢測單元,還用於根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定所述主節點為惡意節點。
上述方案中,還包括:切換單元,用於確定所述主節點為惡意節點,或者,確定所述從節點中存在故障節點時,觸發所述分散式系統的節點切換到第二共識模式。
上述方案中,所述切換單元,還用於在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點返回所述第一共識模式;未在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第二共識模式;其中,所述一致性確認,為各所述節點在切換到所述第二共識模式的準備階段,將各所述節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,並在確認一致時發送,且携帶相應節點的數位簽名。
上述方案中,所述切換單元,還用於在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一所述節點未接收到其他節點發送的資料確認時,觸發所述分散式系統的節點繼續切換到所述第二共識模式;其中,所述資料確認,為各所述節點在切換到所述第二共識模式的準備階段,將各所述節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較並在確認一致時發送,且携帶相應節點的數位簽名。
第七方面,本發明實施例提供一種儲存介質,儲存有可執行指令,用於執行本發明實施例提供的訊息處理方法。
本發明實施例具有這樣的有益效果:
1)採用數位簽名的方式保證通訊的可靠性:對於任意通訊的雙方均採用數位簽名的方式,即發送方在發送訊息時會携帶訊息的數位簽名例如,使用發送方的不對稱加密算法的私鑰對 訊息的摘要進行加密,形成發送方的數位簽名,接收方透過驗證數位簽名確保訊息的可靠性,即讀訊息的簽名使用不對稱加密算法的公鑰(保證接收方和發送方使用相同的不對稱加密算法,則接收方預先獲知公鑰)進行解密,對解密得到的摘要與從訊息中提取的摘要比對,如果一致說明數位簽名驗證透過,發送方發送的訊息是可靠的。
2)從節點在接收主節點發送的訊息時,會直接向客戶端返回結果,在結果中携帶必要的訊息如唯一性欄位、訊息序列號和數位簽名等,這樣,客戶端可以直接根據從節點返回的結果來判定從節點達成共識的情况,能够容易地檢測出異常節點。
100‧‧‧分散式系統
101~114‧‧‧步驟
200‧‧‧節點
300‧‧‧客戶端
210、310‧‧‧處理器
220、320‧‧‧網路連接埠
230、330‧‧‧儲存介質
240、340‧‧‧輸入/輸出連接埠
250、350‧‧‧中間件
260、360‧‧‧操作系統
270‧‧‧共識機制
280‧‧‧電子貨幣錢包
290‧‧‧智慧型合約
370‧‧‧共識
380‧‧‧管理節點
390‧‧‧部署智慧型合約
2701‧‧‧選舉單元
2702‧‧‧主節點單元
2703‧‧‧從節點單元
2704‧‧‧切換單元
3701‧‧‧通訊單元
3702‧‧‧檢測單元
3703‧‧‧切換單元
第1圖是本發明實施例提供的分散式系統應用於區塊鏈系統的一個可選的結構示意圖;第2圖是本發明實施例提供的區塊結構一個可選的示意圖;第3A圖是本發明實施例提供的節點的一個可選的軟硬體結構示意圖;第3B圖是本發明實施例提供的客戶端的一個可選的軟硬體結構示意圖;第4圖是本發明實施例提供的在第一共識模式中各節點執行選舉操作而確定主節點和從節點的一個可選的示意圖;第5圖是本發明實施例提供的分散式系統的節點在第一共識模式中達成共識、並檢測故障節點和惡意節點的一個可選的流程示意圖;第6圖是本發明實施例提供分散式系統在第一共識模式和第二模式中進行切換的一個可選的流程示意圖; 第7圖是本發明實施例提供分散式系統在第一共識模式和第二模式中進行切換的一個可選的流程示意圖;第8圖是發明實施例提供的區塊鏈系統採用RAFT算法達成共識的一個可選的流程示意圖;第9圖是發明實施例提供的區塊鏈系統採用PBFT算法達成共識的一個可選的流程示意圖;第10圖是本發明實施例提供的實現自適應共識算法運行狀態圖;第11圖是本發明實施例提供的T-RAFT算法共識的實現示意圖;第12圖是本發明實施例提供的在PBFT算法切換的準備階段進行切換回T-RAFT算法的一個可選的流程示意圖;第13圖是本發明實施例提供的區塊鏈系統從T-RAFT算法共識切換到PBFT算法共識的一個可選的流程示意圖;第14圖是本發明實施例提供的區塊鏈系統PBFT算法共識模式切換到T-RAFT算法共識模式的一個可選的流程示意圖;第15圖是本發明實施例提供的分散式系統應用於聯盟鏈系統的一個可選的場景示意圖。
以下結合圖式及實施例,對本發明進行進一步詳細說明。應當理解,此處所提供的實施例僅僅用以解釋本發明,並不用於限定本發明。另外,以下所提供的實施例是用於實施本發明的部分實施例,而非提供實施本發明的全部實施例,在不衝突的情况下,本發明實施例記載的技術方案可以任意組合的方式實施。
1)分散式系統,由多個節點透過網路通訊而連接形成的系統;還包括客戶端,訊息的具體內容根據實際的業務場景而 有區別,例如,訊息可以為交易記錄、供節點的狀態機執行的指令等。
2)共識,在分散式系統中,節點對其他節點發送的訊息的正確性進行驗證,如驗證成功則向發送訊息的節點發送確認,並將該訊息進行持久化儲存,以用於支持後續進行查詢。
例如,在區塊鏈系統中,節點對其他節點提交的新區塊的有效性進行驗證,如驗證成功則向發送新區塊的節點發送確認,並將該新區塊添加到相應節點所儲存的區塊鏈的尾部。
3)共識模式,也稱為共識算法,用於保證分散式系統的節點達成共識的算法,例如,包括:能够實現較高的共識效率、並且能够檢測到節點故障或者拜占庭問題(一方向另一方發送訊息,另一方沒有收到,或者收到了錯誤的訊息的情况)、但是無法解决拜占庭問題的共識模式,本文中也稱為第一共識模式,例如,包括Paxos算法;遞歸容錯算法(RAFT,Recursive Algorithm for Fault Tolerance);用於解决拜占庭問題的共識模式,本文中也稱為第二共識模式,例如,包括:拜占庭容錯(BFT,Byzantine Fault Tolerance)算法、實用拜占庭容錯(PBFT,Practical Byzantine Fault Tolerance)算法、遞歸容錯算法-拜占庭容錯(BFT-RAFT,Byzantine Fault Tolerance Recursive Algorithm for Fault Tolerance)、拜占庭容錯(BFT-Paxos)算法等。
4)共識模式切換,也稱為共識模式自適應,分散式網路的節點共識算法在網路環境良好的時候自動採用共識效率高可以檢測到異常節點(如拜占庭問題的節點)的共識算法,當發現惡意節點或者節點錯誤的時候,可以自動切換到以支持解决拜占 庭容錯的共識算法。
本發明實施例涉及的分散式系統是由客戶端、多個節點(訪問網路中的任意形式的計算設備,如伺服器、用戶終端)透過網路通訊的形式連接形成。
以分散式系統為區塊鏈系統為例,參見第1圖,第1圖是本發明實施例提供的分散式系統100應用於區塊鏈系統的一個可選的結構示意圖,由多個節點(訪問網路中的任意形式的計算設備,如伺服器、用戶終端)和客戶端形成,節點之間形成組成的點對點(P2P,Peer To Peer)網路,P2P協議是一個運行在傳輸控制協議(TCP,Transmission Control Protocol)協議之上的應用層協議。
參見第1圖示出的區塊鏈系統中各節點的功能,涉及的功能包括:
1)路由,節點具有的基本功能,用於支持節點之間的通訊。
節點除具有路由功能外,還可以具有以下功能:
2)應用,用於部署在區塊鏈中,根據實際業務需求而實現特定業務,記錄實現功能相關的資料形成記錄資料,在記錄資料中携帶數位簽名以表示任務資料的來源,將記錄資料發送到區塊鏈系統中的其他節點,供其他節點在驗證記錄資料來源以及完整性成功時,將記錄資料添加到臨時區塊中。
例如,應用實現的業務包括:
2.1)錢包,用於提供進行電子貨幣的交易的功能,包括發起交易(即,將當前交易的交易記錄發送給區塊鏈系統中的其他節點,其他節點驗證成功後,作為承認交易有效的響應,將交易的記錄資料存入區塊鏈的臨時區塊中;當然,錢包還支持查詢 電子貨幣地址中剩餘的電子貨幣;
2.2)共享帳本,用於提供帳目資料的儲存、查詢和修改等操作的功能,將對帳目資料的操作的記錄資料發送到區塊鏈系統中的其他節點,其他節點驗證有效後,作為承認帳目資料有效的響應,將記錄資料存入臨時區塊中,還可以向發起操作的節點發送確認。
2.3)智慧型合約,計算機化的協議,可以執行某個合約的條款,透過部署在共享帳本上的用於在滿足一定條件時而執行的程式碼實現,根據實際的業務需求程式碼用於完成自動化的交易,例如查詢買家所購買商品的物流狀態,在買家簽收貨物後將買家的電子貨幣轉移到商戶的地址;當然,智慧型合約不僅限於執行用於交易的合約,還可以執行對接收的訊息進行處理的合約。
3)區塊鏈,包括一系列按照產生的先後時間順序相互接續的區塊(Block),新區塊一旦加入到區塊鏈中就不會再被移除,區塊中記錄了區塊鏈系統中節點提交的記錄資料。
參見第2圖,第2圖是本發明實施例提供的區塊結構(Block Structure)一個可選的示意圖,每個區塊中包括本區塊儲存交易記錄的哈希值(Hash values)(本區塊的哈希值)、以及前一區塊的哈希值,各區塊透過哈希值連接形成區塊鏈。另外,區塊中還可以包括有區塊生成時的時間戳等訊息。
在分散式系統中,任何機器如伺服器、終端都可以加入而成為節點,在硬體層面上,示例性地,參見第3A圖,第3A圖是本發明實施例提供的節點200的一個可選的軟硬體結構示意圖,節點200包括硬體層、中間層、操作系統層和應用層。然而,所屬技術領域具有通常知識者應當理解,第3A圖示出的節點200的結構僅為示例,並不構成對節點200結構的限定。例如,節點200可以根 據實施需要設置較第3A圖更多的組件,或者根據實施需要省略設置部分組件。
節點200的硬體層包括處理器210輸入/輸出連接埠240,儲存介質230以及網路連接埠220,組件可以經系統匯流排連接通訊。
處理器210可以採用中央處理器(CPU)、微處理器(MCU,Microcontroller Unit)、特殊應用積體電路(ASIC,Application Specific Integrated Circuit)或邏輯可編程閘陣列(FPGA,Field-Programmable Gate Array)實現。
輸入/輸出連接埠240可以採用如顯示螢幕、觸空螢幕、揚聲器等輸入/輸出器件實現。
儲存介質230可以採用快閃記憶體、硬碟、光碟等非揮發性儲存介質實現,也可以採用雙倍率(DDR,Double Data Rate)動態緩存等揮發性儲存介質實現,其中儲存有用以執行上述通訊狀態處理方法的可執行指令。
網路連接埠220向處理器210提供外部資料如異地設置的儲存介質230的訪問能力,示例性地,網路連接埠220可以實現如基於分碼多工(CDMA,Code Division Multiple Access)、寬頻分碼多工(WCDMA,Wideband Code Division Multiple Access)等通訊制式及其演進制式的通訊。
驅動層包括用於供操作系統260識別硬體層並與硬體層各組件通訊的中間件250,例如可以為針對硬體層的各組件的驅動程式的集合。
操作系統260用於提供面向用戶的圖形界面,顯示基於區塊鏈的各種應用處理的各種中間結果和最終結果。
應用層包括用於實現節點之間形成共識的共識機制270 (用於在第一共識模式和第二共識模式中自適應切換)、以及節點基於分散式系統實現的功能如電子貨幣錢包280、智慧型合約290等,包括前述的第一共識模式和第二共識模式。
就應用層舉例來說,參見第3A圖,第3A圖提供的節點的應用層的共識機制270包括:選舉單元2701,用於在第一共識模式中新的共識周期到達時,分散式系統中的節點透過執行選舉操作處於主節點的狀態或處於從節點的狀態;其中,主節點單元2702,用於當節點處於主節點的狀態時接收客戶端的訊息,驗證訊息的數位簽名,將訊息發送到從節點;從節點單元2703,用於當節點處於從節點的狀態時,接收到主節點發送的訊息並向客戶端返回結果,驗證所接收的訊息的數位簽名後向主節點發送確認接收通知;主節點單元2702,用於當節點處於主節點的狀態時,接收到超出預定數量的從節點的確認接收通知,驗證確認接收訊息的數位簽名後持久化儲存訊息,向從節點發送儲存訊息通知;從節點單元2703,用於當節點處於從節點的狀態時,驗證所接收的儲存訊息通知的數位簽名後持久化儲存所接收的訊息;訊息用於供客戶端確定異常節點。
在一個實施例中,從節點向客戶端返回結果携帶訊息的唯一性欄位和從節點的數位簽名,用於供客戶端驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
在一個實施例中,從節點所返回的結果還携帶從節點所接收訊息的序列號,用於供客戶端根據所接收結果携帶的序列號 與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定主節點為惡意節點。
在一個實施例中,還包括切換單元2704,用於在客戶端確定主節點為惡意節點,或者,確定從節點中存在故障節點時,切換到第二共識模式在一個實施例中,切換單元2704,還用於在切換到第二共識模式的準備階段,將節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,確認一致時向客戶端發送携帶相應節點的數位簽名的一致性確認;一致性確認,用於供客戶端在預定時間內接收到全部節點的一致性確認時,通知全部節點繼續切換到第一共識模式;未在預定時間內接收到全部節點的一致性確認時,通知全部節點繼續切換到第二共識模式。
在一個實施例中,切換單元2704,還用於在切換到第二共識模式的準備階段,將節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,確認一致時向訊息的發送節點發送携帶相應節點的數位簽名的資料確認;資料確認,用於供客戶端在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一節點未接收到其他節點發送的資料確認時,觸發分散式系統的節點繼續切換到第二共識模式。
在一個實施例中,主節點單元2702,還用於當節點處於主節點的狀態,並在第二共識模式中統計到與從節點針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,與從節點切換到第一共識模式。
在一個實施例中,主節點單元2702,還用於在第二共識 模式中統計到針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,向從節點發送切換到第一共識模式的通知,並在接收到全部從節點發送的切換確認時,與從節點保持節點的狀態切換到第一共識模式。
在一個實施例中,從節點單元2703,還用於當節點處於從節點的狀態,在接收到切換到第一共識模式的通知時,統計到針對所接收的訊息形成共識的次數超過從節點共識次數閾值時,向主節點發送切換確認。
在一個實施例中,選舉單元2701,還用於當未接收到主節點的心跳訊息時,或者,主節點為惡意節點時,透過執行選舉操作確定處於主節點的狀態或處於從節點的狀態。
在一個實施例中,選舉單元2701,還用於當在新的共識周期到達、且未接收到其他節點發送的心跳訊息時,向其他節點發送選舉請求,選舉請求携帶節點的數位簽名,當接收預定數量的其他節點返回的選舉確認時,轉換為主節點的狀態,定期向其他節點發送心跳訊息;其中,選舉確認為其他節點驗證選取請求携帶的數位簽名後發送;選舉單元2701,還用於當在新的共識周期到達、且接收到其他節點發送的心跳訊息時轉換為從節點的狀態。
在分散式系統中,客戶端是硬體以及在硬體上部署的軟體環境的結合,基於此,客戶端也可以稱為客戶端設備,用於實現挖礦、管理節點、部署智慧型合約等功能。
參見第3B圖,第3B圖是本發明實施例的客戶端的一個可選的軟硬體結構示意圖,客戶端300包括硬體層、中間層、操作系統層和應用層。然而,所屬技術領域具有通常知識者應當理解,第31B圖示出的客戶端300的結構僅為示例,並不構成對客戶端300 結構的限定。例如,客戶端300可以根據實施需要設置較第3B圖更多的組件,或者根據實施需要省略設置部分組件。
客戶端300的硬體層包括處理器310輸入/輸出連接埠340,儲存介質330以及網路連接埠320,組件可以經系統匯流排連接通訊。
處理器310可以採用CPU、MCU、ASIC或FPGA實現。
輸入/輸出連接埠340可以採用如顯示螢幕、觸控螢幕、揚聲器等輸入/輸出器件實現。
儲存介質330可以採用快閃記憶體、硬碟、光碟等非揮發性儲存介質實現,也可以採用DDR實現,其中儲存有用以執行上述通訊狀態處理方法的可執行指令。
網路連接埠320向處理器310提供外部資料如異地設置的儲存介質330的訪問能力,示例性地,網路連接埠320可以實現如基於CDMA、WCDMA等通訊制式及其演進制式的通訊。
驅動層包括用於供操作系統360識別硬體層並與硬體層各組件通訊的中間件350,例如可以為針對硬體層的各組件的驅動程式的集合。
操作系統360用於提供面向用戶的圖形界面,顯示基於區塊鏈的各種應用處理的各種中間結果和最終結果。
應用層用於向分散式系統的節點發送訊息,使各節點取得針對訊息的共識從而持久化儲存訊息;檢測分散式系統中的異常節點,觸發節點切換共識模式。
就應用層舉例來說,參見第3B圖,第3B圖提供了客戶端300的應用層的功能結構,包括管理節點380、部署智慧型合約390和共識370。
就共識370舉例來說,包括: 通訊單元3701,用於向分散式系統的節點中的主節點發送訊息,訊息携帶客戶端的數位簽名;其中,數位簽名用於供主節點進行驗證,並將所接收的訊息携帶主節點的數位簽名,發送給分散式系統中的從節點;通訊單元3701,用於接收從節點在接收到訊息時返回的結果;檢測單元3702,用於根據從節點接收到訊息時返回的結果,確定異常節點。
在一個實施例中,檢測單元3702,還用於驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
在一個實施例中,檢測單元3702,還用於根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定主節點為惡意節點。
在一個實施例中,還包括:切換單元3703,用於確定主節點為惡意節點,或者,確定從節點中存在故障節點時,觸發分散式系統的節點切換到第二共識模式。
在一個實施例中,切換單元3703,還用於在預定時間內接收到全部節點的一致性確認時,通知全部節點返回第一共識模式;未在預定時間內接收到全部節點的一致性確認時,通知全部節點繼續切換到第二共識模式;其中,一致性確認,為各節點在切換到第二共識模式的準備階段,將各節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較,並在確認一致時發送,且携帶相應 節點的數位簽名。
在一個實施例中,切換單元3703,還用於在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一節點未接收到其他節點發送的資料確認時,觸發分散式系統的節點繼續切換到第二共識模式;其中,資料確認,為各節點在切換到第二共識模式的準備階段,將各節點持久化儲存的訊息的哈希值與其他節點持久化儲存的訊息的哈希值比較並在確認一致時發送,且携帶相應節點的數位簽名。
本發明實施例提供的分散式系統來說,其中的節點採用第一共識模式中對來自客戶端的訊息形成共識,第一共識模式能够保證節點形成共識的效率,當然,本發明實施例不排除分散式系統的節點默認採用第二共識模式對來自客戶端的訊息形成共識。
對在第一共識模式中達成共識的實現方式進行說明,參見第5圖,第5圖是本發明實施例提供的分散式系統的節點在第一共識模式中達成共識、並檢測故障節點和惡意節點的一個可選的流程示意圖,包括以下步驟:
步驟101,分散式系統的多個節點在在第一共識模式中新的共識周期到達時,透過執行選舉操作確定主節點的狀態、以及處於從節點的狀態。
在一個實施例中,分散式系統的節點具有三種類型(也稱為狀態):競爭節點、主節點和從節點;分散式系統的各個節點啟動計時器,在用於形成共識的新的共識周期到達時,各個節點均為競爭節點,各個競爭節點透過執行選取操作而爭取轉換為主節點(一個分散式系統只有一個合法的主節點),未成為主節點的 競爭節點轉換為從節點。
對於每個競爭節點,在新的共識周期開始時會檢測是否接收到其他節點發送的心跳訊息,如果沒有接收到,說明當前共識周期內還未產生主節點,則該競爭節點向其他節點發送選舉請求,在選取請求中携帶發送節點的數位簽名,接收節點驗證選取請求的數位簽名成功後,確定選舉請求的可靠性,即向發送節點發送選舉確認,當一個節點接收到足够(如預定數量可以為半數的節點)其他節點的選舉確認時即轉換為主節點,並定期向其他節點發送心跳訊息,接收到心跳訊息的競爭節點轉換為從節點。當在一個共識周期內任意節點都沒有接收的到足够數量的選舉確認,則開始新的共識周期繼續選取操作直至確定主節點和從節點。
以第一共識模式採用RAFT算法為例,參見第4圖,第4圖是本發明實施例提供的在第一共識模式中各節點執行選舉操作而確定主節點和從節點的一個可選的示意圖。
在分散式系統中,任何一個節點在任何一個時刻都處於三種狀態之一:主節點、從節點和競爭節點。在分散式系統正常運行的絕大部分時間,分散式系統中會有一個主節點,其他節點都是從節點,由主節點接受客戶端的訊息。
分散式系統的工作時間分為連續的共識周期,這裡也稱為任期(Term),每個任期可以是任意時長,任期用連續的整數進行標號。每個任期首先進行主節點選舉,選舉時,多個競爭節點競爭成為主節點,一旦某個節點成為主節點,其他競爭節點則轉變為從節點,成為主節點的節點將在該任期內一致擔任主節點,如果該主節點發生故障,其他節點會在新的任期內進行選舉。
任何一個任期內都不會有多個主節點(除非有惡意節點偽裝為主節點),每個節點都維護著當前任期的計數,每次節點間 的之間的通訊都包含任期的計數,每個節點在檢測到自己維護的任期計數低於其他節點維護的任期計數時,都會更新自己的任期計數為檢測到的最高的值。
當前一共識周期的主節點和競爭節點發現自己的任期計數低於別的節點的任期計數時,則立即把自己轉換為從節點,從而保證在每個任期內只有一個主節點。
RAFT算法中採用心跳機制觸發主節點選舉操作,當分散式系統啟動時,所有節點初始化為從節點狀態,設置任期為0,並啟動計時器,計時器超時後,從節點轉化為競爭節點,一旦轉化為競爭節點,執行以下操作:步驟1011,增加節點的任期的計數;步驟1012,啟動一個新的計時器;步驟1013,向其他節點發送選取請求(Request Vote)遠程過程調用協議(RPC,Remote Procedure Call Protocol)訊息,並等待其他節點回復選舉確認。
如果在計時器超時前接收到多數節點的選舉確認,則轉換為主節點。如果接受到其他節點發送的附加內容為空的附加入口(Append Entries)心跳RPC訊息,說明其他節點已經被選為主節點,則轉換為從節點。如果計時器超時還沒有接受到以上兩種訊息中的任何一種,則進行新的選舉操作。
節點在接受到多數節點的投票成為主節點後,會立即向所有節點發送Append Entries心跳RPC訊息,競爭節點收到Append Entries心跳RPC訊息後,轉換為從節點,選舉操作結束。
步驟102,客戶端對訊息進行數位簽名,發送携帶數位簽名的訊息給主節點。
客戶端使用自身的私鑰對訊息的摘要(本發明實施例中 不排除使用任意摘要算法從訊息中提取摘要)加密,形成數位簽名。
步驟103,主節點驗證訊息的數位簽名成功後,在訊息中添加主節點的數位簽名,將訊息發送到從節點。
主節點使用公鑰對數位簽名解密得到摘要,與採用摘要算法(與客戶端使用的摘要算法一致)進行比對,如果一致則說明訊息的來源是可靠的,利用主節點的私鑰對訊息的摘要加密形成主節點的數位簽名,在訊息中添加主節點的數位簽名發送到各個從節點。對於訊息携帶的客戶端的數位簽名可以携帶也可以不携帶;如果主節點比對如果不一致可以丟棄訊息並向客戶端要求重傳。
步驟104,從節點接收到主節點發送的訊息後,驗證接收的訊息的數位簽名,驗證透過後向主節點發送確認接收通知,並向客戶端發送結果。
從節點使用公鑰對接收的訊息的數位簽名解密得到摘要,與採用摘要算法(與主節點使用的摘要算法一致)進行比對,如果一致則說明訊息的來源是可靠的,利用從節點的私鑰對確認接收通知的摘要加密形成從節點的數位簽名,返回主節點。
從節點向客戶端發送結果包括兩種情况:
1)在當前共識周期內,如果從節點首次接收到主節點發送的訊息,則向客戶端發送的結果包括:所接收訊息的序列號;訊息的唯一性欄位(訊息中的欄位,能够區別與其他訊息的欄位);從節點針對結果的數位簽名,利用從節點的私鑰對結果的摘要進行加密得到。
2)在當前共識周期內,如果從節點非首次接收到主節點發送的訊息,則向客戶端發送的結果包括:訊息的唯一性欄位 (訊息中的欄位,能够區別與其他訊息的欄位);從節點針對結果的數位簽名,利用從節點的私鑰對結果的摘要進行加密得到。
步驟105,主節點驗證接收到確認接收通知携帶的數位簽名,當連續接收到預定數量的從節點發送的確認接收通知後,持久化儲存訊息,向從節點發送儲存訊息通知。
儲存訊息通知中携帶主節點針對儲存訊息通知的數位簽名,數位簽名為使用主節點的私鑰對儲存訊息通知的摘要加密得到。
對於持久化儲存而言,主節點將訊息以非易失的方式儲存,例如,在區塊鏈系統中,接收到客戶端提交的交易記錄的節點(主節點)將交易記錄儲存在區塊鏈的新區塊中。
步驟106,從節點接收到儲存訊息通知,驗證携帶的數位簽名成功後,在從節點本地持久化儲存訊息,並向主節點發送携帶數位簽名的儲存訊息確認。
從節點使用公鑰對接收的儲存訊息通知的數位簽名解密得到摘要,與採用摘要算法(與主節點使用的摘要算法一致)進行比對,如果一致則說明儲存訊息通知的來源是可靠的,利用從節點的私鑰對儲存訊息確認的摘要加密形成從節點的數位簽名,將携帶數位簽名的儲存訊息確認返回主節點。
步驟107,主節點對接收的儲存訊息確認的數位簽名進行驗證,如果接收到超過半數的從節點的儲存訊息確認並成功驗證數位簽名,向客戶端發送儲存訊息確認。
主節點向客戶端發送的儲存訊息確認中携帶主節點的數位簽名,用於供客戶端驗證儲存訊息來源的可靠性。
步驟108,客戶端主節點和從節點接收到訊息時返回的結果,檢測異常節點:確定主節點是否為惡意節點,以及,確定 從節點中是否存在故障節點。
在一個實施例中,客戶端驗證各個從節點返回的結果(各個從節點在接收到主節點發送的訊息後發)的數位簽名成功後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,如果不一致,則判定發送不一致的唯一性欄位的從節點為出錯節點,對於沒有返回結果的從節點則判定為故障節點。
在一個實施例中,當主節點為在一個新的共識周期內新產生的主節點時,當接收該主節點發送的訊息時,從節點向客戶端發送的結果除了包括唯一性欄位和數位簽名,還包括所接收訊息的序列號,從而,客戶端能够根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出數量閾值時,說明新產生的主節點向從節點發送了偽造的訊息,因此判定主節點為惡意節點。
從上述步驟可以看出,在第一共識模式中:
1)採用數位簽名的方式保證通訊的可靠性:對於任意通訊的雙方均採用數位簽名的方式,即發送方在發送訊息時會携帶訊息的數位簽名例如,使用發送方的不對稱加密算法的私鑰對訊息的摘要進行加密,形成發送方的數位簽名,接收方透過驗證數位簽名確保訊息的可靠性,即讀訊息的簽名使用不對稱加密算法的公鑰(保證接收方和發送方使用相同的不對稱加密算法,則接收方預先獲知公鑰)進行解密,對解密得到的摘要與從訊息中提取的摘要比對,如果一致說明數位簽名驗證透過,發送方發送的訊息是可靠的。
2)從節點在接收主節點發送的訊息時,會直接向客戶端返回結果,在結果中携帶必要的訊息如唯一性欄位、訊息序列號和數位簽名等,這樣,客戶端可以直接根據從節點返回的結果 來判定從節點達成共識的情况,能够容易地檢測出異常節點。
在第一共識模式中檢測到異常節點的情况,由於第一共識模式適用於保證節點的共識效率,而對節點異常的容錯形能有限,為此,本發明實施例提供在分散式系統中出現異常節點時使分散式系統切換到具有較佳容錯性能的第二共識模式的方案。
參見第6圖,第6圖是本發明實施例提供分散式系統在第一共識模式和第二模式中進行切換的一個可選的流程示意圖,包括以下步驟:
步驟109,客戶端確定分散式系統中存在異常節點時,觸發分散式系統中的節點從切換到第二共識模式。
當主節點為惡意節點、從節點中存在故障節點、或從節點中存在異常節點時,客戶端向分散式系統的節點廣播切換到第二共識模式的通知。
步驟110,分散式系統的節點在切換到第二共識模式的準備階段中,向其他節點發送相應節點持久化儲存的訊息的哈希值以及數位簽名。
步驟111,訊息的接收節點接收到分散式系統中全部其他節點(即,除接收節點之外的全部節點)發送的哈希值以及數位簽名,驗證哈希值的數位簽名成功後,將哈希值與接收節點持久化儲存的訊息的哈希值進行比較,如果全部一致,則向客戶端發送一致性確認。
例如,分散式系統中接收到通知的節點1,在向第二共識模式切換的準備階段,將節點中持久化儲存的訊息的哈希值以及數位簽名發送(如廣播)到節點2-N(N為分散式系統中節點的數量),同時,節點1會接收節點2至節點N發送的哈希值,哈希值中携帶相應節點的數位簽名,節點1驗證數位簽名成功後,將節點 2至節點N發送的哈希值與節點1持久化儲存的訊息的哈希值進行比較,如果全部一致,則節點1向客戶端發送一致性確認。
對於節點2至節點N來講,接收到哈希值的處理與節點1類似,不再重複說明。
步驟112,客戶端檢測是否接收到全部節點的一致性確認,如果是,則通知分散式系統的節點繼續切換到第一共識模式;如果否,則通知分散式系統的節點繼續切換到第二共識模式。
如果客戶端接收分散式系統中全部節點發送的一致性確認,說明之前檢測到異常節點是由於網路波動或者丟棄響應訊息導致的,分散式系統中不存在異常節點,因此重新切換到第一共識模式,保證節點之間達成共識的效率。
如果客戶端沒有在預定時間內接收分散式系統中全部節點發送的一致性確認,則說明分散式系統中確實存在異常節點,則通知分散式系統中節點繼續保持向第二共識模式的切換。
參見第7圖,第7圖是本發明實施例提供分散式系統在第一共識模式和第二模式中進行切換的一個可選的流程示意圖,包括以下步驟:
步驟109,客戶端確定分散式系統中存在異常節點時,觸發分散式系統中的節點從切換到第二共識模式。
當主節點為惡意節點、從節點中存在故障節點、或從節點中存在異常節點時,客戶端向分散式系統的節點廣播切換到第二共識模式的通知。
步驟110,分散式系統的節點在切換到第二共識模式的準備階段中,向其他節點發送相應節點持久化儲存的訊息的哈希值以及數位簽名。
步驟113,訊息的接收節點接收到分散式系統中其他節 點發送的哈希值以及數位簽名,驗證哈希值的數位簽名成功後,將哈希值與接收節點持久化儲存的訊息的哈希值進行比較,如果一致,則向訊息的發送節點發送資料確認。
例如,分散式系統中接收到通知的節點1,在向第二共識模式切換的準備階段,將節點中持久化儲存的訊息的哈希值以及數位簽名發送(如廣播)到節點2-N(N為分散式系統中節點的數量),同時,節點1會接收節點2至節點N發送的哈希值,哈希值中携帶相應節點的數位簽名,節點1驗證數位簽名成功後,將節點2至節點N發送的哈希值與節點1持久化儲存的訊息的哈希值進行比較,如果全部一致,則節點1向節點2至節點N分別發送資料確認。
對於節點2至節點N來講,接收到哈希值的處理與節點1類似,不再重複說明。
步驟114,客戶端根據各節點發送的資料確認觸發分散式系統的節點返回第一共識模式,或,觸發分散式系統的節點繼續切換到第二共識模式。
對於分散式系統的各節點,將節點持久化儲存的訊息的哈希值以及發送節點的數位簽名廣播到其他節點;對於哈希值的接收節點來說,在驗證所接收的哈希值的數位簽名後,將所接收的哈希值的與接收節點儲存訊息的哈希值進行比較,在比較一致時向相應哈希值的發送節點發送資料確認,表示二個節點儲存的訊息是一致的。
這裡涉及到兩種情况:
情况1)在預定時間內,對於資料確認的接收節點來說,如果均接收到全部其他節點(除接收節點之外的節點)的發送的資料確認,則可以向客戶端發送資料確認,客戶端根據資料確認確認得知各節點儲存的訊息是一致的,沒有必要繼續切換到第二 共識模式,因此可以向分散式系統的各節點發送返回第一共識模式的通知,向第二共識模式切換的過程終止。
例如,節點1向節點2至節點N發送的哈希值,哈希值携帶節點1的數位簽名,節點2至節點N-1在驗證節點1的數位簽名成功後,以節點2為例,節點2將節點2持久化儲存的訊息的哈希值(對於區塊鏈系統中的節點來說,可以為區塊鏈中的最新的區塊的哈希值)與節點1發送的哈希值比較,如果一致則向節點1發送資料確認,對於節點3至節點N-1的處理與節點2類似。
假設節點1接收到節點2至節點N-1的資料確認,但是沒有接收到節點N的資料確認,由於客戶端在預定時間內沒有接收到節點1的資料確認,客戶端認為節點1未取得與全部其他節點的資料一致,則通知節點1至節點N繼續切換到第二共識模式的操作。
情况2)在預定時間內任一節點未接收到全部其他節點的資料確認時,或者,在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認,導致客戶端未接收全部其他節點的資料確認,則客戶端通知分散式系統的節點繼續切換到第二共識模式。
例如,節點1向節點2至節點N發送的哈希值,哈希值携帶節點1的數位簽名,節點2至節點N-1在驗證節點1的數位簽名成功後,以節點2為例,節點2將節點2持久化儲存的訊息的哈希值(對於區塊鏈系統中的節點來說,可以為區塊鏈中的最新的區塊的哈希值)與節點1發送的哈希值比較,如果一致則向節點1發送資料確認,對於節點3至節點N-1的處理與節點2類似。
假設節點1在預定時間內接收到節點2至節點N-1的資料確認,但是沒有接收到節點N的資料確認,向客戶端發送在預定時間內沒有接收到全部節點資料確認的通知,客戶端通知節點1至節 點N繼續切換到第二共識模式的操作。
再例如,節點1向節點2至節點N發送的哈希值,哈希值携帶節點1的數位簽名,節點2至節點N-1在驗證節點1的數位簽名成功後,以節點2為例,節點2將節點2持久化儲存的訊息的哈希值(對於區塊鏈系統中的節點來說,可以為區塊鏈中的最新的區塊的哈希值)與節點1發送的哈希值比較,如果一致則向節點1發送資料確認,對於節點3至節點N-1的處理與節點2類似。
假設節點1在預定時間內接收到節點2至節點N-1的資料確認,但是沒有接收到節點N的資料確認,則節點1向客戶端發送未接收到全部其他節點(也就是分散式系統中除節點1的之外節點)的資料確認的通知,客戶端通知節點1至節點N繼續切換到第二共識模式的操作。
繼續對分散式系統的節點切換到第二共識模式,並從第二共識模式切換的回第一共識模式的方式進行說明,對於從第二共識模式切換回第一共識模式,存在這樣的幾種方式:
方式1)主節點統計到形成共識的次數超出主節點共識次數閾值時,觸發從節點切換回第一共識模式,主節點和從節點在切換到第一共識模式中時繼承在第二共識模式中的節點狀態(即節點作為主節點或從節點的狀態保持不變)。
分散式系統處於第二共識模式中時,對於分散式系統中主節點(可以理解地,這裡的主節點是針對一個共識周期而言)來說,如果主節點在第二共識模式中統計到與從節點針對所接收的訊息達成共識的次數超過主節點共識次數閾值(如M次,M為根據對分散式系統中節點的共識的精度設定,一般地,精度要求越高,則預定次數越大),說明主節點與從節點針對連續來自客戶端的訊息已經達成較好的共識,為了進一步提升分散式系統的節點 達成共識的效率,可以向從節點發送切換到第一共識模式的通知。
對於分散式系統中的從節點,在接收到主節點發送的切換到第一共識模式的通知後,即向主節點發送切換確認(承認主節點在切換到第一共識模式中時可以繼續保持主節點的狀態),主節點與從節為保持當前節點的狀態切換到第一共識模式,這樣在第一共識模式中可以避免惡意節點成為主節點的情况,確保共識的效率。
可以理解地,上述的共識節點數量閾值可以為分散式系統中的全部從節點的數量,或者,為分散式系統中在第一共識模式中要求達成共識的從節點的數量的最小值(即第一共識模式的容錯性能所要求的共識節點數量的最小值,低於該最小值後第一共識模式中達成的共識的可靠性無法得到保證)。
同理,上述的共識節點比例閾值可以對應分散式系統中的全部從節點的數量即100%,或者,為分散式系統中在第一共識模式中要求達成共識的從節點的數量的最小值如51%(即第一共識模式的容錯性能所要求的共識節點數量的最小值,低於該最小值後第一共識模式中達成的共識的可靠性無法得到保證)。
例如,分散式系統在第二共識機制中,假設節點1為主節點,節點2至節點N為從節點,各節點就來自客戶端的訊息達成的共識進行計數,對於節點1來說,如果節點1與節點2至節點N就最近來自客戶端的M個(主節點共識次數閾值)訊息均達成共識,說明各節點之間已經達成較好的共識,節點1會向節點2至節點N廣播切換到第一共識模式的通知,節點2至節點N向節點1發送切換確認,承認節點1在第一共識模式中仍然為主節點,節點2至節點2N繼續作為從節點,即使節點2至節點N中出現惡意節點,也無法偽造來自客戶端的訊息,確保節點達成共識的效率。
方式2)主節點統計到形成共識的次數超出主節點共識次數閾值,主節點觸發從節點切換回第一共識模式,當從節點統計到形成共識次數閾值超出從節點共識次數閾值時,從節點確認切換回第一共識模式,主節點和從節點在切換到第一共識模式中時繼承在第二共識模式中的節點狀態(即節點作為主節點或從節點的狀態保持不變)。
分散式系統處於第二共識模式中時,主節點統計在第二共識模式中與其他節點(包括主節點和其他從節點)針對來自客戶端的訊息形成共識的次數,如果形成共識的次數超過從節點共識次數閾值(可以小於或等於主節點共識次數閾值,例如,可以為M/2),則向主節點發送同意主節點在第一共識模式中繼續作為主節點的通知,第二共識模式中的從節點在切換到第一共識模式中時繼續作為從節點,從而完成了切換到第一共識模式的選舉操作,並繼續在第一共識模式中針對來自客戶端的訊息達成共識。這樣在第一共識模式中可以避免惡意節點成為主節點的情况,確保共識的效率。
在分散式系統的節點切換到第一共識模式之後,如果在第一共識模式中沒有檢測到異常節點,則繼續保持在第一共識模式,如果在返回第一共識模式後仍然無法取得較好的共識(例如,仍然檢測到惡意節點、異常節點或出錯節點),則重新切換到第二共識模式。
這裡的預定數量/比例可以根據前述說明而理解,不再重複說明。
例如,分散式系統的主節點可以基於計數器在切換到第二共識模式後同步開始計時,在計時時間達到計時時間閾值(如10分鐘,僅為舉例)後,會觸發分散式系統的從節點同步切換回 第一共識模式,在第一共識模式中執行選舉操作確定新的主節點和從節點;如果在切換到第一共識模式後仍然檢測到異常節點,則再次切換回第二共識模式(切換到第一共識模式的方式可以根據前述說明而理解),從而,在利用第二共識模式進行共識以保證分散式系統的容錯性能的前提下,最大程度提升分散式系統達成共識的效率。
這裡的預定數量/比例可以根據前述說明而理解,不再重複說明。
例如,分散式系統在第二共識機制中,假設節點1為主節點,節點2至節點N為從節點,各節點就來自客戶端的訊息達成的共識進行計數,對於節點1來說,如果節點1與節點2至節點N就最近來自客戶端的M個(主節點共識次數閾值)訊息均達成共識,說明各節點之間已經達成較好的共識,節點1會向節點2至節點N廣播切換到第一共識模式的通知,對於節點2至節點N來說,以節點2為例,節點2統計在第二共識模式中形成共識的次數,如果超出M/2,則向節點1發送切換確認(確認節點1在切換到第一共識模式中時仍然作為主節點,節點2作為從節點);節點3至節點N的處理與節點2類似,不再重複說明。
當節點1接收到節點2至節點N中每個節點發送的切換確認時,切換到第一共識模式並在第一共識模式中,節點1作為主節點、節點2至節點N作為從節點;如果節點1未接收到節點2至節點N每個節點發送的切換確認,則繼續停留在第二共識模式,每間隔M/2次共識節點1繼續向節點2至節點N發送且切換到第一共識模式的通知,直至接收到節點2至節點N全部節點的切換確認。
下面,以區塊鏈系統(如維護對單獨的個人或實體開放的聯盟鏈系統)在第一共識模式中採用改進的RAFT(T-RAFT) 算法,在第二共識模式中採用PBFT算法進行共識為例,可以理解地,第一共識模式中還可以使用Paxos算法,第二共識模式中還可以採用BFT算法、BFT-RAFT等;第一共識模式可以採用任意共識效率高並且能檢測到節點故障或者拜占庭節點的算法如T-RAFT算法,第二共識模式可以採用任意可以實現拜占庭容錯的算法。
RAFT算法只解决了多個節點資料一致性的問題,並不解决拜占庭容錯,但是RAFT算法效率比較高。PBFT算法可以解决拜占庭容錯,但是由於在PBFT算法中需要在節點中進行訊息廣播,實現的效率比較低。
在分散式網路應用到聯盟鏈(對單獨的個人或實體開放的區塊鏈)的使用場景中,一般來說,區塊鏈系統在絕大部分時間裏是沒有節點故障、也沒有拜占庭節點問題,採用RAFT的算法可以高效達成節點之間的共識。
只要在有節點出錯或者有拜占庭問題的時候,能够自動採用要求PBFT算法實現各節點的共識,當所有節點都完全達成共識即沒有拜占庭節點的時候,再自動切換到共識效率較高的RAFT算法實現各節點間的共識。
RAFT解决了多個節點一致性的問題,效率比較高,但是沒有解决節點間拜占庭容錯的問題。
PBFT算法可以保證多個節點的一致性並且解决了各個節點間拜占庭容錯。
參見第8圖,第8圖是發明實施例提供的區塊鏈系統採用RAFT算法達成共識的一個可選的流程示意圖,客戶端發送的訊息主節點(leader節點)之後,主節點對接收的訊息進行排序,按照排序分發給從節點(follower節點),其他follower按照leader節點組織好的順序儲存訊息到日誌中,並向leader節點返回RPC結果 (result),然後leader節點將日誌中訊息儲存在本地磁碟後,再向各從節點發一次提交(commit),則各從節點將訊息中的日誌儲存在從節點的本地磁碟中,就完成了訊息的一致性同步,具有較高的效率,但是不能解决拜占庭節點的問題。
參見第9圖,第9圖是發明實施例提供的區塊鏈系統採用PBFT算法達成共識的一個可選的流程示意圖,一個訊息需要兩次廣播之後才能真正確認,由於依賴於廣播,在達成共識的過程發送的訊息數是節點數的平方級別,因此實現共識的效率比較低,但是能解决節點間拜占庭容錯的問題。
RAFT算法雖然能解决一致性問題且效率高,但是不能解决拜占庭容錯問題,所以在很多區塊鏈系統的場景裏是不被採納,而只能採納相對低效但是能解决拜占庭容錯的PBFT算法。本發明實施例充分利用在聯盟鏈的應用場景的特點:多數情况下網路條件良好且無拜占庭節點,只需要多節點之間實現共識,結合RAFT的高效和PBFT的容錯優點,提供了高效並且能解决拜占庭容錯問題自適應共識算法。
在應用於聯盟鏈的區塊鏈系統中,參與共識的節點個數有限,並且在絕大多數情况下各個參與節點沒有拜占庭節點,只需要保證資料一致性,此時採用效率較高的T-RAFT算法。當出現異常如節點間有拜占庭容錯需求或者節點故障的時候,能够及時檢測到並且能够自動切換到可以支持拜占庭容錯的PBFT算法,當PBFT算法中所有節點都達成共識的時候,再自動切換到效率較高的T-RAFT算法,這樣在絕大多數情况即網路良好、無拜占庭節點的時,可以滿足聯盟鏈的高效共識的要求,有異常節點的時候又可以實時糾正、容錯。
為實現共識算法的自動切換,參見第10圖,第10圖是本 發明實施例提供的實現自適應共識算法運行狀態圖,區塊鏈系統默認在T-RAFT算法下共識,T-RAFT算法檢測到資料不一致的節點低於閾值(全部節點數量,或預定比例的節點,根據T-RAFT算法的容錯性能設定)的時候,進入資料(訊息)一致性的確認狀態:如果確認各節點的資料一致,再回到T-RAFT算法:如果節點的資料不一致,轉為PBFT算法實現節點之間的共識。當PBFT算法運行時檢測到所有節點的資料實現一致,再切換到T-RAFT算法。
T-RAFT算法是RAFT算法的改進,能够防止節點篡改、重放、偽造訊息,並且能够及時發現惡意節點,參見第11圖,第11圖是本發明實施例提供的T-RAFT算法共識的實現示意圖,相對於RAFT算法而言,涉及的改進主要涉及以下幾個方面:
1、客戶端(Client)發送的訊息中帶有針對訊息的訊息體的數位簽名,這樣可以防止訊息在傳輸的過程中被修改,並且訊息中携帶唯一性欄位,可以防止訊息被截獲後重放。
2、各個節點間之間傳輸的訊息携帶發送方的數位簽名,訊息的接收節點都會驗證數位簽名的正確性,這樣可以防止偽造新節點參與選舉操作或偽裝成主節點向從節點發送虛假的訊息。
3、客戶端請求到主節點之後,T-RAFT共識模式中的主節點訊息同步給從節點的過程中,所有的從節點收到主節點發送的訊息之後,除了完成原RAFT的訊息流程之外,都會向客戶端返回結果,返回結果中帶訊息中的唯一性欄位以及從節點的數位簽名。這樣客戶端就可以透過比較所有節點返回的結果,是否一致來判斷各節點資料(訊息)的一致性。如果客戶端收到的結果不一致或者預定時間內未收到所有節點的結果,則判斷存在拜占庭節點或者存在故障節點,就會觸發資料一致性確認的流程。
資料一致性確認的過程發生在共識算法切換的中間階段,資料修復的過程實際上是一次少數服從多數的共識過程,共識的過程採用訊息廣播的方式,具體來說,節點默認使用T-RAFT算法;在有節點出錯或者有拜占庭節點的時候,客戶端透過比較各個節點返回的結果可以發現資料不一致的情况,以判斷是否需要進行算法切換。
舉例來說,如需要切到PBFT算法的共識模式,客戶端向各節點廣播切換到PBFT算法的通知所有節點,當節點收到共識算法切換的通知而處於準備(prepare)階段的時候,廣播資料請求確認訊息到所有其他的節點,資料請求確認訊息携帶節點的區塊鏈中最近共識的區塊的哈希值以及節點的數位簽名
收到資料請求確認訊息的節點,這裡稱為接收節點,會檢查節點的區塊鏈中最新的共識的區塊的哈希值跟資料請求確認訊息携帶的哈希值是否一致,並驗證節點數位簽名的正確性,對於接收節點來說,如果接收到所有其他節點的資料請求確認訊息,並且這些資料請求確認訊息簽名正確、且與接收節點最新共識的區塊的哈希值一致,則回復客戶端資料一致性確認,其中携帶接收節點的數位簽名。
如果客戶端接收等到所有節點的資料一致性確認,則認為各節點維護的區塊鏈的資料是一致的,並且認為算法切換請求之前的資料一致性比對失敗是網路波動或者丟棄響應訊息導致的,就會重新切換到到T-RAFT算法。具體流程可以參考如下訊息流程圖:作為一個示例,參見第12圖,第12圖是本發明實施例提供的在PBFT算法切換的準備階段進行切換回T-RAFT算法的一個可選的流程示意圖,在第12圖中,節點1、2、3、4都收到了來自 其他節點的資料一致性確認的廣播訊息,並且確認各節點最新共識的區塊的哈希值也一致,各節點都向客戶端返回資料一致性確認,並且各自返回T-RAFT算法的狀態,即使客戶端重新切換到T-RAFT的通知沒有到達節點,節點在超時時間到達之後也會進入T-RAFT算法的選舉流程。
如果在超時時間內客戶端沒有收到所有節點的資料一致性確認,或者共識節點(即區塊鏈系統中最新的區塊的哈希值一致)沒有收到其他所有節點資料一致性確認的廣播訊息,則客戶端通知所有節點切換到PBFT算法。
另外,對於任一節點來說,如果沒有收到其他所有節點的資料一致性確認的廣播訊息,會自動進入PBFT算法狀態,並廣播切換到PBFT算法的通知。
當節點收到f+1個以上的新算法廣播訊息之後(f為根據PBFT算法在區塊鏈系統中能够允許的出錯節點的最大值),開始發起新算法(PBFT)中主節點的選舉,也稱為視圖更換(view change),完成之後進入新的PBFT算法的共識階段。
參見第13圖,第13圖是本發明實施例提供的區塊鏈系統從T-RAFT算法共識切換到PBFT算法共識的一個可選的流程示意圖,這個訊息流程示意圖中,假設節點4故障,節點1、2和3收到客戶端的切換算法的通知而處於PBFT算法的切換準備階段時,分別廣播資料請求確認訊息,訊息中帶了自己最新共識的區塊塊的哈希值,由於節點4故障了,節點1、2、3在超時時間內不會接收到節點4廣播的資料一致性確認(一致響應),所以不會向客戶端發送資料一致性確認,節點1、2、3和客戶端在超時之後,都會廣播切換到PBFT算法的通知,節點1、2、3都會收到算法切換的通知,大於f+1,最先收到f+1個算法切換通知的節點首先發起視圖更換流 程,視圖更換完成之後,進入PBFT算法共識模式。
在PBFT的共識中,一旦主節點統計到連續出現M次(可配置)資料完全一致,會轉換為T-RAFT的競爭節點,並觸發T-RAFT的選舉過程,其他節點收到選舉請求之後,只要也統計到連續共識的次數大於M/2次或者大於一個固定的配置值T,就會同意競爭節點轉換為主節點,只有所有從節點都同意競爭節點轉換為主節點時,進入T-RAFT算法的共識模式,各節點的連續共識次數將清零。只要有一個從節點不同意競爭節點轉換為主節點,競爭節點馬上恢復到原有狀態即轉換為PBFT算法的主節點,繼續執行PBFT算法,各節點的共識統計次數繼續累加,直到M+T的時候再次觸發一次T-RAFT選舉,如果不成功,下一次等到M+2T的時候觸發,如此往復,M+x*T的時候觸發,x是次數,直到主節點選舉成功為止。
參見第14圖,第14圖是本發明實施例提供的區塊鏈系統PBFT算法共識模式切換到T-RAFT算法共識模式的一個可選的流程示意圖,PBFT算法的過程中,主節點即節點1統計到資料連續一致(共識)超過M次的時候,轉變為T-RAFT的競爭節點狀態,然後發起T-RAFT算法的選舉,節點2、3和4收到選舉請求(request vote)訊息之後,判斷是否也統計到連續資料一致的數量大於M/2(或者一個固定的值T),如果是,則返回同意競爭節點轉換為主節點的切換確認。
競爭節點收到節點2,3,4的切換確認,轉換成主節點開始T-RAFT算法共識階段。在T-RAFT選舉的過程中,原來PBFT共識模式中的主節點(節點1)收到客戶端的訊息之後,不再發送定序(PBFT算法中的pre-prepare)訊息,等到選舉完成,在T-RAFT中將訊息附在AppendEntries RPC中發送給從節點。
再結合實際應用中一個使用場景進行說明,參見第15圖,第15圖是本發明實施例提供的分散式系統應用於聯盟鏈系統的一個可選的場景示意圖,聯盟鏈系統是對單獨的個人或實體開放的,包括多個節點,每個節點向第三方支付機構、以及銀行業務系統(作為客戶端)提供訪問,接收第三方支付機構、以及銀行業務系統提交的交易記錄,節點對提交的一個交易記錄形成共識後,才會將該交易記錄儲存在區塊鏈的最新區塊中儲存,供第三方支付機構和簽約銀行根據各自的業務流水進行對帳。
節點默認使用T-RAFT共識模式取得針對交易記錄的共識,在出現異常節點時切換到PBFT共識模式對交易記錄取得共識。
用戶的第三方支付終端中綁定了用戶在在銀行的信用卡帳戶,用戶與商家線上下或線上進行交易時,第三方支付終端可以透過預先獲得的信用卡帳號的預授權,從用戶的信用卡帳戶中撥款到商家的帳戶,形成一個交易記錄。
對於這筆交易來說,第三方支付機構的業務系統會在分散式系統中所訪問的主節點提交一個交易記錄(例如,包括收款方、付款方和支付金額,携帶第三方支付客戶端的數位簽名);主節點對接收到交易記錄驗證數位簽名成功後,將交易記錄同步給其他的從節點(携帶主節點的數位簽名),從節點驗證交易記錄的數位簽名成功後,一方面向第三方支付機構業務系統返回結果(携帶從節點數位簽名、唯一性欄位,在主節點為新選舉出的主節點時,還携帶交易記錄的序列號);另一方面,通知主節點同步完畢;主節點在確認各從節點同步完成後將交易記錄儲存在區塊鏈的最新區塊中並通知各從節點,從節點執行相同操作,完成交易記錄的持久化儲存。
對於上述針對交易記錄的共識過程,如果客戶端根據從 節點返回的結果確定主節點為惡意節點,或從節點出現故障,則會觸發聯盟鏈系統切換到PBFT共識模式取得針對交易記錄的共識,確保交易記錄能够在各節點的區塊鏈中順利儲存;根據聯盟鏈系統對第三方支付結構業務系統後續提交的交易記錄的共識情况,如取得較好的公式(主節點與其他節點連續M次共識),可以切換回T-RAFT共識模式以提升共識的效率。
綜上,本發明實施例具有以下有益效果:
1)客戶端與節點之間、節點之間採用數位簽名的方式保證通訊的可靠性,避免訊息偽裝的情况,保證分散式系統內部通訊的可靠性。
2)從節點在接收主節點發送的訊息時,會直接向客戶端返回結果,在結果中携帶必要的訊息如唯一性欄位、訊息序列號和數位簽名等,這樣,客戶端可以直接根據從節點返回的結果來判定從節點達成共識的情况,能够容易地檢測出異常節點。
3)在檢測到異常節點時,能够從默認的共識效率高的第一共識模式切換到容錯性能更優的第二共識模式,確保分散式系統的共識在出現異常時也能够順利達成。
4)在第二共識模式中一旦達成較好的共識(例如,根據共識次數判斷),則再次切換到第一共識模式,這種自適應的共識模式切換實現了共識效率和容錯性能的最佳融合。在分散式系統的運行的網路狀態良好的多數時間內、實現了共識效率高的技術效果,節點故障或者有拜占庭容錯節點時保真分散式系統的業務功能正常處理。
所屬技術領域具有通常知識者可以理解:實現上述方法實施例的全部或部分步驟可以透過程式指令相關的硬體來完成,前述的程式可以儲存於一計算機可讀取儲存介質中,該程式在執 行時,執行包括上述方法實施例的步驟;而前述的儲存介質包括:移動儲存通訊狀態處理裝置、隨機存取儲存器(RAM,Random Access Memory)、唯讀儲存器(ROM,Read-Only Memory)、磁碟或者光碟等各種可以儲存程式程式碼的介質。
或者,本發明上述集成的單元如果以軟體功能模組的形式實現並作為獨立的產品銷售或使用時,也可以儲存在一個計算機可讀取儲存介質中。基於這樣的理解,本發明實施例的技術方案本質上或者說對相關技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品儲存在一個儲存介質中,包括複數指令用以使得一台計算機通訊狀態處理裝置(可以是個人電腦、伺服器、或者網路通訊狀態處理裝置等)執行本發明各個實施例所述方法的全部或部分。而前述的儲存介質包括:移動儲存通訊狀態處理裝置、RAM、ROM、磁碟或者光碟等各種可以儲存程式程式碼的介質。
以上所述,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應以後附之申請專利範圍的保護範圍為準。

Claims (28)

  1. 一種分散式系統,包括:客戶端;及複數個個節點,所述節點,用於在第一共識模式中新的共識周期到達時,透過執行選舉操作確定處於主節點的狀態或處於從節點的狀態,其中所述節點,還用於處於主節點的狀態時,驗證所述客戶端發送的訊息的數位簽名,將所述訊息發送到所述從節點;接收到超出預定數量的所述從節點的確認接收通知,驗證所述確認接收通知的數位簽名後持久化儲存所述訊息,向所述從節點發送儲存訊息通知;其中所述節點,還用於處於從節點的狀態時,接收到所述主節點發送的所述訊息時向所述客戶端返回結果;驗證所接收的訊息的數位簽名,向所述主節點發送確認接收通知;驗證所接收的儲存訊息通知的數位簽名後持久化儲存所接收的訊息;以及其中所述客戶端,用於根據所述從節點接收到所述訊息時返回的結果,確定異常節點。
  2. 根據申請專利範圍第1項所述之分散式系統,其中所述客戶端,還用於驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
  3. 根據申請專利範圍第1項所述之分散式系統,其中所述客戶端,還用於根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定所述主節點為惡意節點。
  4. 根據申請專利範圍第1項所述之分散式系統,其中所述客戶端,還用於確定所述主節點為惡意節點,或者,確定所述從節點中存在故障節點時,觸發所述分散式系統的節點切換到第二共識模式。
  5. 根據申請專利範圍第4項所述之分散式系統,其中所述節點,還用於在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值(Hash values)與其他節點持久化儲存的訊息的哈希值比較,確認一致時向所述客戶端發送携帶相應節點的數位簽名的一致性確認;以及其中所述客戶端,還用於在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點返回所述第一共識模式;未在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第二共識模式。
  6. 根據申請專利範圍第4項所述之分散式系統,其中所述節點,還用於在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值(Hash values)與其他節點持久化儲存的訊息的哈希值比較,確認一致時向訊息的發送節點發送携帶相應節點的數位簽名的資料確認;以及其中所述客戶端,還用於在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一節點未接收到其他節點發送的資料確認時,觸發所述分散式系統的節點繼續切換到所述第二共識模式。
  7. 根據申請專利範圍第4項所述之分散式系統,其中所述節點,還用於處於主節點的狀態,並在所述第二共識模式中統計到與所述從節點針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,與所述從節點切換到所述第一共識模式。
  8. 根據申請專利範圍第7項所述之分散式系統,其中所述節點,還用於處於主節點的狀態時,並在所述第二共識模式中統計到針對所接收的訊息形成共識的次數超過所述主節點共識次數閾值時,向所述從節點發送切換到所述第一共識模式的通知,並在接收到全部所述從節點發送的切換確認時,與所述從節點保持節點的狀態切換到所述第一共識模式。
  9. 根據申請專利範圍第8項所述之分散式系統,其中所述節點,還用於處於從節點的狀態時,接收到切換到所述第一共識模式的通知,統計到針對所接收的訊息形成共識的次數超過從節點共識次數閾值時,向所述主節點發送切換確認。
  10. 根據申請專利範圍第1項所述之分散式系統,其中所述節點,還用於未接收到所述主節點的心跳訊息時,或者,所述主節點為惡意節點時,透過重新執行選舉操作確定處於主節點的狀態或處於從節點的狀態。
  11. 根據申請專利範圍第1項所述之分散式系統,其中所述節點,還用於在新的共識周期到達、且未接收到其他節點發送的心跳訊息時,向所述其他節點發送選舉請求,所述選舉請求携帶所述節點的數位簽名,當接收預定數量的其他節點返回的選舉確認時,轉換為主節點的狀態並定期向所述其他節點發送心跳訊息;其中,所述選舉確認為所述其他節點驗證所述選取請求携帶的數位簽名後發送;以及其中所述節點,還用於在新的共識周期到達、且接收到其他節點發送的心跳訊息時轉換為從節點的狀態。
  12. 一種訊息處理方法,包括:在第一共識模式中新的共識周期到達時,分散式系統中的節點透過執行選舉操作確定處於主節點的狀態或處於從節點的狀 態;所述節點處於主節點的狀態時接收所述客戶端的訊息,驗證所述訊息的數位簽名,將所述訊息發送到所述從節點;所述節點處於從節點的狀態時,接收到所述主節點發送的訊息並向所述客戶端返回結果,驗證所接收的訊息的數位簽名後向所述主節點發送確認接收通知;所述節點處於主節點的狀態時,接收到超出預定數量的所述從節點的確認接收通知,驗證所述確認接收訊息的數位簽名後持久化儲存所述訊息,向所述從節點發送儲存訊息通知;所述節點處於從節點的狀態時,驗證所接收的儲存訊息通知的數位簽名後持久化儲存所接收的訊息;以及所述客戶端根據所述從節點接收到所述訊息時返回的結果,確定異常節點。
  13. 根據申請專利範圍第12項所述之訊息處理方法,其中所述客戶端根據所述從節點接收到所述訊息時返回的結果,確定異常節點,包括:所述從節點向所述客戶端返回結果携帶所述訊息的唯一性欄位和所述從節點的數位簽名;以及所述客戶端驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
  14. 根據申請專利範圍第12項所述之訊息處理方法,其中所述客戶端根據所述從節點接收到所述訊息時返回的結果,確定異常節點,包括:所述從節點所返回的結果還携帶所述從節點所接收訊息的序 列號;以及所述客戶端根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定所述主節點為惡意節點。
  15. 根據申請專利範圍第12項所述之訊息處理方法,還包括:所述客戶端確定所述主節點為惡意節點,或者,確定所述從節點中存在故障節點時,觸發所述分散式系統的節點切換到第二共識模式。
  16. 根據申請專利範圍第15項所述之訊息處理方法,還包括:所述節點在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值(Hash values)與其他節點持久化儲存的訊息的哈希值比較,確認一致時向所述客戶端發送携帶相應節點的數位簽名的一致性確認;以及所述客戶端在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第一共識模式;未在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第二共識模式。
  17. 根據申請專利範圍第15項所述之訊息處理方法,還包括:所述節點在切換到所述第二共識模式的準備階段,將所述節點持久化儲存的訊息的哈希值(Hash values)與其他節點持久化儲存的訊息的哈希值比較,確認一致時向訊息的發送節點發送携帶相應節點的數位簽名的資料確認;以及所述客戶端在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一節點未接收到其他節點發送的資料確認時,觸發所述分散式系統的節點繼續切換到所述第二共識模式。
  18. 根據申請專利範圍第15項所述之訊息處理方法,還包括:所述主節點在所述第二共識模式中統計到與所述從節點針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,與所述從節點切換到所述第一共識模式。
  19. 根據申請專利範圍第18項所述之訊息處理方法,其中所述主節點在所述第二共識模式中統計到與所述從節點針對所接收的訊息形成共識的次數超過主節點共識次數閾值時,與所述從節點切換到所述第一共識模式,包括:所述主節點在所述第二共識模式中統計到針對所接收的訊息形成共識的次數超過所述主節點共識次數閾值時,向所述從節點發送切換到所述第一共識模式的通知,並在接收到全部所述從節點發送的切換確認時,與所述從節點保持節點的狀態切換到所述第一共識模式。
  20. 根據申請專利範圍第19項所述之訊息處理方法,還包括:所述從節點在接收到切換到所述第一共識模式的通知時,統計到針對所接收的訊息形成共識的次數超過從節點共識次數閾值時,向所述主節點發送切換確認。
  21. 根據申請專利範圍第12項所述之訊息處理方法,還包括:所述從節點未接收到所述主節點的心跳訊息時,或者,所述主節點為惡意節點時,透過重新執行選舉操作確定處於主節點的狀態或處於從節點的狀態。
  22. 根據申請專利範圍第12項所述之訊息處理方法,其中所述節點在新的共識周期到達、且未接收到其他節點發送的心跳訊息時,向所述其他節點發送選舉請求,所述選舉請求携帶所述節點的數位簽名,當接收預定數量的其他節點返回的選舉確認時,轉換為主節點的狀態,定期向所述其他節點發送心跳訊息; 其中所述選舉確認為所述其他節點驗證所述選取請求携帶的數位簽名後發送;以及其中所述節點在新的共識周期到達、且接收到其他節點發送的心跳訊息時轉換為從節點的狀態。
  23. 一種訊息處理方法,包括:向分散式系統的節點中的主節點發送訊息,所述訊息携帶所述客戶端的數位簽名,其中所述數位簽名用於供所述主節點進行驗證,並將所接收的訊息携帶所述主節點的數位簽名,發送給所述分散式系統中的從節點;接收所述從節點在接收到所述訊息時返回的結果;以及根據所述從節點接收到所述訊息時返回的結果,確定異常節點。
  24. 根據申請專利範圍第23項所述之訊息處理方法,其中所述根據所述從節點接收到所述訊息時返回的結果,確定異常節點,包括:驗證所接收結果的數位簽名後,將所接收結果包括唯一性欄位與所發送訊息的唯一性欄位比較,確定不一致的唯一性欄位對應的從節點為出錯節點,以及確定未返回相應結果的從節點為故障節點。
  25. 根據申請專利範圍第23項所述之訊息處理方法,其中所述根據所述從節點接收到所述訊息時返回的結果,確定異常節點,包括:根據所接收結果携帶的序列號與所發送訊息的序列號比較,當發送不一致序列號的從節點的數量超出不一致數量閾值時,判定所述主節點為惡意節點。
  26. 根據申請專利範圍第23項所述之訊息處理方法,還包括: 確定所述主節點為惡意節點,或者,確定所述從節點中存在故障節點時,觸發所述分散式系統的節點切換到第二共識模式。
  27. 根據申請專利範圍第26項所述之訊息處理方法,還包括:在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點返回所述第一共識模式;未在預定時間內接收到全部所述節點的一致性確認時,通知全部所述節點繼續切換到所述第二共識模式,其中所述一致性確認,為各所述節點在切換到所述第二共識模式的準備階段,將各所述節點持久化儲存的訊息的哈希值(Hash values)與其他節點持久化儲存的訊息的哈希值比較,並在確認一致時發送,且携帶相應節點的數位簽名。
  28. 根據申請專利範圍第26項所述之訊息處理方法,還包括:在預定時間內達成共識的節點未接收到未達成共識的節點的資料確認時,或在預定時間內任一所述節點未接收到其他節點發送的資料確認時,觸發所述分散式系統的節點繼續切換到所述第二共識模式,其中所述資料確認,為各所述節點在切換到所述第二共識模式的準備階段,將各所述節點持久化儲存的訊息的哈希值(Hash values)與其他節點持久化儲存的訊息的哈希值比較並在確認一致時發送,且携帶相應節點的數位簽名。
TW107109510A 2017-03-30 2018-03-20 分散式系統及訊息處理方法 TWI662435B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710203499.XA CN106789095B (zh) 2017-03-30 2017-03-30 分布式系统及消息处理方法
??201710203499.X 2017-03-30

Publications (2)

Publication Number Publication Date
TW201837777A true TW201837777A (zh) 2018-10-16
TWI662435B TWI662435B (zh) 2019-06-11

Family

ID=58965529

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107109510A TWI662435B (zh) 2017-03-30 2018-03-20 分散式系統及訊息處理方法

Country Status (7)

Country Link
US (2) US11237896B2 (zh)
EP (1) EP3605947B1 (zh)
JP (1) JP6883106B2 (zh)
KR (1) KR102248454B1 (zh)
CN (3) CN110430064B (zh)
TW (1) TWI662435B (zh)
WO (1) WO2018177264A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI772758B (zh) * 2019-03-04 2022-08-01 美商高通公司 基於票據的請求流控制

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
EP4027251A1 (en) 2016-11-10 2022-07-13 Swirlds, Inc. Methods and apparatus for a distributed database including anonymous entries
CN116820695A (zh) 2016-12-19 2023-09-29 海德拉哈希图有限责任公司 用于启用事件删除的分布式数据库的方法和设备
CN110430064B (zh) 2017-03-30 2020-12-04 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
CN108063787A (zh) * 2017-06-26 2018-05-22 杭州沃趣科技股份有限公司 基于分布式一致性状态机实现双活架构的方法
CN110892396B (zh) * 2017-07-11 2023-11-24 海德拉哈希图有限责任公司 用于在网络内高效地实现分布式数据库的方法和设备
CN109426952B (zh) * 2017-08-22 2021-06-01 汇链丰(北京)科技有限公司 一种区块链架构
US10943680B1 (en) * 2017-09-07 2021-03-09 Massachusetts Mutual Life Insurance Company Intelligent health-based blockchain
CN108023729B (zh) * 2017-10-13 2020-06-23 中国银联股份有限公司 区块链网络及其交易方法
CN107819749A (zh) * 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
CA3076257A1 (en) 2017-11-01 2019-05-09 Swirlds, Inc. Methods and apparatus for efficiently implementing a fast-copyable database
CN109819003A (zh) * 2017-11-22 2019-05-28 南京理工大学 一种区块链的分层共识方法和系统
CN108009445B (zh) * 2017-11-30 2021-05-11 成都蓝海贝信息技术有限公司 一种半中心化的可信数据管理系统
CN108182581B (zh) * 2017-12-29 2020-08-11 北京欧链科技有限公司 一种区块链的记账方法及装置
CN108876359A (zh) * 2018-01-03 2018-11-23 上海指旺信息科技有限公司 基于区块链的电子钱包平台
EP3741081B1 (en) * 2018-01-16 2021-10-13 Nchain Holdings Limited Computer implemented method and system for obtaining digitally signed data
CN108269190A (zh) * 2018-01-17 2018-07-10 深圳四方精创资讯股份有限公司 基于跨链中继平台的跨链方法及其系统
CN108347350B (zh) * 2018-01-25 2022-04-15 中国银联股份有限公司 一种通信方法及装置
CN109842606B (zh) * 2018-02-24 2020-08-18 中国科学院计算技术研究所 基于一致性哈希算法的区块链共识算法和系统
CN110489485B (zh) * 2018-04-28 2023-05-30 腾讯科技(深圳)有限公司 联盟区块链网络及在其中存储产品数据的方法和存储介质
US11095714B2 (en) 2018-05-01 2021-08-17 YugaByte Inc Orchestration of data services in multiple cloud infrastructures
CN108848056B (zh) * 2018-05-03 2021-05-04 南京理工大学 基于验证的区块链共识方法
CN108737175B (zh) * 2018-05-19 2021-04-23 上海分布信息科技有限公司 一种节点管理方法及其实现系统
US20210209885A1 (en) * 2018-05-23 2021-07-08 Centiglobe Ab A system and a method for achieving consensus between multiple parties on an event
CN108768787B (zh) * 2018-06-25 2020-10-02 中国联合网络通信集团有限公司 一种区块链节点激励方法及装置
CN109003175B (zh) * 2018-07-06 2021-08-10 国网汇通金财(北京)信息科技有限公司 一种基于区块链的对账方法及系统
CN110740113B (zh) 2018-07-20 2021-10-29 富士通株式会社 通过多个主体协作进行信息处理的方法和装置
CN109126098A (zh) * 2018-07-26 2019-01-04 深圳市梵高夫科技有限公司 基于区块链的竞赛仲裁方法、系统、核心节点及存储介质
CN110784331B (zh) * 2018-07-30 2022-05-13 华为技术有限公司 一种共识流程恢复方法及相关节点
CN108881488B (zh) * 2018-08-01 2020-12-22 夸克链科技(深圳)有限公司 一种基于分域的区块链交易处理方法及网络
WO2020033048A1 (en) * 2018-08-09 2020-02-13 Hrl Laboratories, Llc System and method for consensus ordering of broadcast messages
US10848375B2 (en) 2018-08-13 2020-11-24 At&T Intellectual Property I, L.P. Network-assisted raft consensus protocol
CN109218079B (zh) * 2018-08-16 2021-09-10 北京京东尚科信息技术有限公司 一种区块链网络、部署方法及存储介质
CN109257334B (zh) * 2018-08-21 2021-04-09 广州杰赛科技股份有限公司 一种基于区块链的数据上链系统、方法及存储介质
CN109194646B (zh) * 2018-08-30 2021-05-25 东北大学 一种基于区块链的安全认证数据存取方法
CN108989465B (zh) * 2018-08-30 2021-03-12 交叉信息核心技术研究院(西安)有限公司 共识方法、服务器、存储介质及分布式系统
CN109347906B (zh) * 2018-08-30 2021-04-20 腾讯科技(深圳)有限公司 一种数据传输方法、装置、与服务器
CN109241362B (zh) * 2018-09-18 2020-12-01 百度在线网络技术(北京)有限公司 区块生成方法、装置、设备及存储介质
CN109344630B (zh) * 2018-09-18 2021-07-02 百度在线网络技术(北京)有限公司 区块生成方法、装置、设备和存储介质
CN109213828B (zh) * 2018-09-18 2021-08-20 百度在线网络技术(北京)有限公司 区块生成方法、装置、设备及存储介质
CN109284630B (zh) * 2018-09-21 2020-12-08 深圳市九洲电器有限公司 文件编辑方法、装置、系统及可读存储介质
CN109544334B (zh) * 2018-10-22 2020-09-29 深圳市哈希树科技有限公司 一种网络可扩展性区块链实现方法
CN109408203B (zh) * 2018-11-01 2019-10-18 无锡华云数据技术服务有限公司 一种队列消息一致性的实现方法、装置、计算系统
CN109614405A (zh) * 2018-11-30 2019-04-12 无锡井通网络科技有限公司 用于区块链的网络实况系统
CN109451039B (zh) * 2018-12-07 2021-06-04 上海分布信息科技有限公司 一种网络信息传输处理方法
US20200394183A1 (en) * 2019-06-12 2020-12-17 Subramanya R. Jois System and method of executing, confirming and storing a transaction in a serverless decentralized node network
CN109727029A (zh) * 2018-12-18 2019-05-07 杭州茂财网络技术有限公司 一种联盟链共识方法和系统
CN109785131A (zh) * 2018-12-21 2019-05-21 昆明理工大学 一种基于区块链的电力交易方法
CN111352943A (zh) * 2018-12-24 2020-06-30 华为技术有限公司 实现数据一致性的方法和装置、服务器和终端
CN110022345B (zh) * 2018-12-28 2020-03-24 阿里巴巴集团控股有限公司 联盟链中的请求处理方法、系统、装置及设备
CN109587271B (zh) * 2018-12-29 2020-06-09 杭州复杂美科技有限公司 主链平行链架构系统及区块同步方法、设备和存储介质
CN109495516A (zh) * 2019-01-07 2019-03-19 国网江苏省电力有限公司无锡供电分公司 基于区块链的电力物联网终端接入方法
CN109857751A (zh) * 2019-01-23 2019-06-07 平安科技(深圳)有限公司 基于区块链的跨平台数据更新方法、装置和计算机设备
CN109831425B (zh) * 2019-01-25 2022-02-15 中国联合网络通信集团有限公司 区块链共识方法、装置、设备及计算机可读存储介质
CN109816021B (zh) * 2019-01-28 2021-07-13 网易(杭州)网络有限公司 智能合约处理方法及装置、系统、存储介质和电子设备
CN109828979A (zh) * 2019-01-31 2019-05-31 浙江小泰科技有限公司 一种数据一致性检测方法及系统
CN110061856A (zh) * 2019-03-07 2019-07-26 阿里巴巴集团控股有限公司 一种基于区块链的通信方法、装置及电子设备
EP3593249B1 (en) 2019-03-18 2021-06-23 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
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
ES2862428T3 (es) 2019-03-18 2021-10-07 Advanced New Technologies Co Ltd Recuperación de tiempo de inactividad de sistema de consenso
CA3057395A1 (en) 2019-03-18 2019-05-31 Alibaba Group Holding Limited System and method for ending view change protocol
CN109902074B (zh) * 2019-04-17 2021-02-09 江苏全链通信息科技有限公司 基于数据中心的日志存储方法和系统
JP6991427B2 (ja) * 2019-04-26 2022-01-12 株式会社シーズ 電子機器、情報処理システム
CN114073023B (zh) * 2019-04-26 2024-05-31 株式会社赛斯 电子设备和信息处理系统
CN110263582A (zh) * 2019-05-10 2019-09-20 阿里巴巴集团控股有限公司 一种基于联盟链的对账方法、装置及电子设备
CN110096381B (zh) * 2019-05-10 2021-05-07 百度在线网络技术(北京)有限公司 远程过程调用的实现方法、装置、设备和介质
US11228446B2 (en) 2019-05-10 2022-01-18 Advanced New Technologies Co., Ltd. Blockchain-based reconciliation method and apparatus and electronic device
AU2020279389A1 (en) 2019-05-22 2021-10-14 Hedera Hashgraph, Llc Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database
US11611439B2 (en) * 2019-06-11 2023-03-21 Celo Foundation Tree structure for byzantine fault tolerance
CN112150141A (zh) * 2019-06-26 2020-12-29 京东数字科技控股有限公司 一种区块链共识方法、装置和系统
CN110380934B (zh) * 2019-07-23 2021-11-02 南京航空航天大学 一种分布式余度系统心跳检测方法
CN110445570B (zh) * 2019-07-25 2021-07-20 腾讯科技(深圳)有限公司 一种时间校准方法、装置及计算机存储介质
CN110417889B (zh) * 2019-07-30 2022-02-01 中国联合网络通信集团有限公司 一种基于ipfs的数据传输方法及装置
EP4014129A4 (en) * 2019-08-16 2023-08-30 ZeU Technologies, Inc. METHOD AND SYSTEM FOR A DECENTRALIZED TRANSACTIONAL COMMUNICATION PROTOCOL
CN110460536B (zh) * 2019-08-26 2022-11-29 中国工商银行股份有限公司 用于区块链的数据处理方法和装置、介质和电子设备
CN110730204B (zh) * 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统
CN110769028B (zh) * 2019-09-10 2022-04-15 陕西优米数据技术股份有限公司 基于区块链技术的图案授权共识系统及方法
CN110830260B (zh) * 2019-09-27 2021-09-24 电子科技大学 一种基于区块链的数字签名的时间戳生成方法
CN110766552B (zh) * 2019-09-28 2023-10-20 北京瑞卓喜投科技发展有限公司 基于区块链的业务处理方法及装置
CN110784461B (zh) * 2019-10-23 2020-05-12 北方工业大学 一种基于区块链的安全6LoWPAN通信方法及系统
CN110798308A (zh) * 2019-10-31 2020-02-14 支付宝(杭州)信息技术有限公司 一种区块链的签名方法和系统
CA3098932C (en) * 2019-11-06 2021-09-28 Alipay (Hangzhou) Information Technology Co., Ltd. Data security of shared blockchain data storage based on error correction code
KR102285882B1 (ko) * 2019-11-19 2021-08-05 한양대학교 산학협력단 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램
CN111669442A (zh) * 2019-11-27 2020-09-15 朱培培 基于区块链的数据传输方法及电子设备
CN110958253A (zh) * 2019-12-05 2020-04-03 全链通有限公司 基于区块链的电子投票方法、设备及存储介质
CN111147494B (zh) * 2019-12-27 2022-11-18 杭州趣链科技有限公司 一种面向区块链轻节点的多中心接入的管理方法和装置
CN111107103B (zh) * 2019-12-31 2022-04-15 南京可信区块链与算法经济研究院有限公司 一种联盟链的性能维持方法、系统及存储介质
CN111179063B (zh) * 2019-12-31 2023-06-23 中国银行股份有限公司 基于区块链的信用卡业务数据处理方法、系统及相关节点
CN111274317A (zh) * 2020-01-07 2020-06-12 书生星际(北京)科技有限公司 多节点数据同步的方法和装置,以及计算机设备
CN111277645B (zh) * 2020-01-16 2023-02-10 深圳市迅雷网络技术有限公司 主备节点热切换方法、区块链系统、区块链节点及介质
CN113291355B (zh) * 2020-02-24 2023-05-23 中国航天科工飞航技术研究院(中国航天海鹰机电技术研究院) 超高速列车牵引驱动设备通信方法及系统
CN111311414B (zh) * 2020-02-27 2023-12-08 杭州云象网络技术有限公司 一种基于一致性哈希算法的区块链多方共识方法
CN111416703A (zh) * 2020-03-16 2020-07-14 北京有链科技有限公司 一种区块链跨越式和跳跃式快速同步方法及系统
CN111431999B (zh) * 2020-03-23 2022-11-25 杭州小影创新科技股份有限公司 一种基于Paxos算法的云函数分布式系统
CN111464349A (zh) * 2020-03-30 2020-07-28 南京中诚区块链研究院有限公司 区块链Raft+PBFT的混合共识网络算法及系统
CN111464356B (zh) * 2020-04-01 2021-11-05 腾讯科技(深圳)有限公司 一种区块共识周期切换方法、装置及计算机设备
CN111510347B (zh) * 2020-04-08 2021-10-26 北京链化未来科技有限公司 一种提高区块链共识效率的方法
CN111431931A (zh) * 2020-04-12 2020-07-17 中信银行股份有限公司 节点共识方法及装置
CN111586110B (zh) * 2020-04-22 2021-03-19 广州锦行网络科技有限公司 一种raft在出现点对点故障时的优化处理方法
CN113301002B (zh) * 2020-04-24 2023-05-09 阿里巴巴集团控股有限公司 一种信息处理方法、装置、电子设备以及存储介质
CN111695994B (zh) * 2020-05-12 2023-12-26 成都芯域矩阵科技有限公司 一种基于信用评分的区块链共识方法及系统
CN111682942B (zh) * 2020-05-18 2022-06-10 哈尔滨工业大学 一种应用于许可链的二元加权拜占庭容错共识方法
CN111343208B (zh) * 2020-05-21 2020-08-14 腾讯科技(深圳)有限公司 基于区块链的数据检测方法、装置及计算机可读存储介质
CN111654415B (zh) * 2020-05-28 2021-09-10 腾讯科技(深圳)有限公司 基于区块链的信息处理方法、装置、设备及可读存储介质
CN111756823A (zh) * 2020-06-12 2020-10-09 山西警察学院 基于简化拜占庭容错算法的应用于公安系统的开放许可链
CN111523899B (zh) * 2020-07-03 2021-09-07 支付宝(杭州)信息技术有限公司 联盟链的共识方法、数据校验方法、装置及系统
US11882222B2 (en) * 2020-07-23 2024-01-23 The Toronto-Dominion Bank Multidirectional synchronization of confidential data using distributed ledgers
CN111988321B (zh) * 2020-08-24 2022-02-11 桂林电子科技大学 一种基于机器学习的联盟链异常检测系统及其检测方法
CN112068978B (zh) * 2020-08-27 2022-06-10 恒宝股份有限公司 View-change二次启动定时器的定时期限延长方法及装置
CN111813795B (zh) * 2020-08-28 2020-12-04 支付宝(杭州)信息技术有限公司 在区块链网络中确认交易的方法及装置
CN111988203B (zh) * 2020-09-03 2022-08-23 深圳壹账通智能科技有限公司 节点选举方法、装置及存储介质
CN111930847B (zh) * 2020-09-16 2021-01-08 深圳壹账通智能科技有限公司 基于区块链的数据处理方法、装置及存储介质
CN112153136B (zh) * 2020-09-21 2022-04-22 中国电子科技网络信息安全有限公司 一种新型区块链共识算法rbft的实现方法
CN112422341B (zh) * 2020-11-18 2021-09-28 腾讯科技(深圳)有限公司 区块链网络的故障检测方法及相关设备
CN112532436B (zh) * 2020-11-23 2024-05-28 京东科技控股股份有限公司 一种区块链节点状态转换方法及区块链系统
CN112636905B (zh) * 2020-12-11 2022-02-15 北京航空航天大学 基于多角色的可扩展共识机制的系统及方法
CN112671761B (zh) * 2020-12-22 2022-08-05 网易(杭州)网络有限公司 区块链的节点处理方法、装置、节点设备及存储介质
CN112804091B (zh) * 2020-12-31 2023-07-25 北京百度网讯科技有限公司 联盟网络的运行实现方法、装置、设备及存储介质
KR102603880B1 (ko) * 2021-01-08 2023-11-20 한국전자통신연구원 블록 합의 방법 및 트랜잭션 상태 관리 방법
CN113010337B (zh) * 2021-01-21 2023-05-16 腾讯科技(深圳)有限公司 故障检测方法、总控节点、工作节点及分布式系统
CN113364874B (zh) * 2021-06-09 2022-06-10 网易(杭州)网络有限公司 基于区块链的节点同步方法、装置、存储介质及服务器
US11651110B2 (en) * 2021-07-08 2023-05-16 Dell Products, L.P. Hardware device mutual authentication system and method for a baseboard management controller (BMC)
US11915014B2 (en) 2021-08-18 2024-02-27 Microsoft Technology Licensing Consensus based determination of stable configuration
CN113761062B (zh) * 2021-08-26 2024-08-02 浙商银行股份有限公司 一种自适应共识算法切换方法、设备及存储介质
CN113779145B (zh) * 2021-08-27 2024-07-16 浙商银行股份有限公司 一种区块链吞吐量提升系统及方法
CN113810497B (zh) * 2021-09-17 2022-07-26 北京邮电大学 基于区块链的医疗数据共享方法和装置
CN113570357B (zh) * 2021-09-26 2021-12-17 青岛理工大学 一种动态分层的高效pbft算法
US11601326B1 (en) * 2021-09-28 2023-03-07 Sap Se Problem detection and categorization for integration flows
CN114089744B (zh) * 2021-11-01 2023-11-21 南京邮电大学 一种基于改进Raft算法选择车辆队列领航车的方法
KR102620994B1 (ko) * 2021-11-04 2024-01-05 모비두 주식회사 라이브 커머스에서의 데이터 처리 시스템
CN114448995A (zh) * 2021-12-24 2022-05-06 苏州纳智天地智能科技有限公司 基于raft选主策略的分布式计算方法
CN114225381B (zh) * 2022-01-07 2022-07-19 广州炫动信息科技有限公司 基于区块链分布式共识算法的战斗数据处理方法及系统
CN114553508B (zh) * 2022-02-12 2023-06-30 中国银联股份有限公司 一种数据访问方法及装置
CN114185997B (zh) * 2022-02-17 2022-05-13 天津眧合数字科技有限公司 一种基于区块链的宠物信息可信存储系统
CN114760135B (zh) * 2022-04-19 2023-03-28 浙江大学 一种区块链容错共识方案的优化方法
CN115119230A (zh) * 2022-05-09 2022-09-27 成都市联洲国际技术有限公司 确定主设备和从设备的方法、装置、设备及存储介质
CN117221337A (zh) * 2022-06-02 2023-12-12 腾讯科技(深圳)有限公司 区块链共识方法、装置、介质及电子设备
CN115276999B (zh) * 2022-06-10 2024-03-22 大连理工大学 一种基于信任模型的自适应切换高效容错共识方法
CN115174447B (zh) * 2022-06-27 2023-09-29 京东科技信息技术有限公司 一种网络通信方法、装置、系统、设备及存储介质
CN115134320B (zh) * 2022-08-25 2023-01-03 四川汉唐云分布式存储技术有限公司 一种基于消息分发确定时序的交易系统
CN116192692B (zh) * 2022-12-30 2024-06-14 蚂蚁区块链科技(上海)有限公司 一种区块链网络中的数据传输延迟探测方法和区块链系统
CN116074328B (zh) * 2023-03-01 2023-06-27 中国信息通信研究院 区块链网络中的区块传输方法、装置、设备和介质
CN116488946B (zh) * 2023-06-21 2023-09-15 积至网络(北京)有限公司 基于持续多模表决的恶意节点检测方法
CN117220884B (zh) * 2023-09-05 2024-09-13 上海雷龙信息科技有限公司 一种数字签名交互验证方法、设备和介质
CN117879825A (zh) * 2023-11-27 2024-04-12 杭州海兴泽科信息技术有限公司 一种基于raft机制的身份验证方法及装置

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2283775A1 (en) * 1997-03-18 1998-09-24 Telefonaktiebolaget Lm Ericsson Trench-isolated bipolar devices
JP3899076B2 (ja) * 2002-03-27 2007-03-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 一時的ネットワーク
US7451321B2 (en) * 2003-10-07 2008-11-11 Joseph Ernest Dryer Electronic signature management method
CN1937840B (zh) * 2005-09-19 2011-04-13 华为技术有限公司 一种移动终端切换过程中获得安全联盟信息的方法及装置
CN101022647B (zh) * 2006-02-15 2010-09-08 华为技术有限公司 切换处理过程中确定安全协商参数的实现方法及装置
US7630944B2 (en) * 2006-03-17 2009-12-08 Novell, Inc. Method for consensus decision making in a distributed system
CN101083658A (zh) * 2007-07-13 2007-12-05 浙江大学 一种角度随机中继协议实现方法
CN101110762A (zh) * 2007-08-22 2008-01-23 华中科技大学 一种Ad hoc网络安全路由方法
CN101483516A (zh) * 2008-01-07 2009-07-15 华为技术有限公司 安全控制的方法及其系统
US7937482B1 (en) * 2008-03-27 2011-05-03 Amazon Technologies, Inc. Scalable consensus protocol
US8156333B2 (en) * 2008-05-29 2012-04-10 Red Hat, Inc. Username based authentication security
US20150006895A1 (en) * 2009-06-01 2015-01-01 Maidsafe Foundation Distributed network system
US8856593B2 (en) * 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US10614098B2 (en) * 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US8918392B1 (en) 2012-03-29 2014-12-23 Amazon Technologies, Inc. Data storage mapping and management
CN102739656A (zh) * 2012-06-12 2012-10-17 北京英华高科科技有限公司 一种控制非主节点类型和规模的方法和系统
EP2976714B1 (en) 2013-03-20 2017-05-03 NEC Corporation Method and system for byzantine fault tolerant data replication
US9686161B2 (en) 2013-09-16 2017-06-20 Axis Ab Consensus loss in distributed control systems
US9690675B2 (en) * 2014-07-17 2017-06-27 Cohesity, Inc. Dynamically changing members of a consensus group in a distributed self-healing coordination service
CL2015003766A1 (es) * 2015-12-30 2016-08-05 Univ Chile Sistema y método para comunicaciones electrónicas seguras mediante hardware de seguridad basado en criptografía umbral
US10282457B1 (en) * 2016-02-04 2019-05-07 Amazon Technologies, Inc. Distributed transactions across multiple consensus groups
CN105975868A (zh) * 2016-04-29 2016-09-28 杭州云象网络技术有限公司 一种基于区块链的证据保全方法及装置
CN106060036B (zh) * 2016-05-26 2019-07-16 布比(北京)网络技术有限公司 去中心化共识方法及装置
CN106445711B (zh) 2016-08-28 2019-04-30 杭州云象网络技术有限公司 一种应用于区块链的拜占庭容错共识方法
CN106503589A (zh) * 2016-10-26 2017-03-15 北京瑞卓喜投科技发展有限公司 区块链交易信息正确性的校验方法、装置及系统
CN106534273B (zh) * 2016-10-31 2022-04-15 中金云金融(北京)大数据科技股份有限公司 区块链元数据存储系统及其存储方法与检索方法
CN106487801B (zh) * 2016-11-03 2019-10-11 江苏通付盾科技有限公司 基于区块链的信息验证方法及装置
CN107391320B (zh) * 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
CN107368507B (zh) * 2017-03-28 2020-03-27 创新先进技术有限公司 一种基于区块链的共识方法及装置
CN110430064B (zh) * 2017-03-30 2020-12-04 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
US10768085B2 (en) * 2017-07-18 2020-09-08 Cornell University Resonantly-driven drop contact-line mobility measurement
US20190306173A1 (en) * 2018-04-02 2019-10-03 Ca, Inc. Alert smart contracts configured to manage and respond to alerts related to code
PL3542514T3 (pl) * 2018-11-07 2021-08-30 Advanced New Technologies Co., Ltd. Ułatwianie konsensusu łańcucha bloków i praktycznej odporności na uszkodzenia bizantyjskie i synchronizacji węzła
ES2862428T3 (es) * 2019-03-18 2021-10-07 Advanced New Technologies Co Ltd Recuperación de tiempo de inactividad de sistema de consenso
EP3610606B1 (en) * 2019-03-29 2022-09-21 Advanced New Technologies Co., Ltd. Managing sensitive data elements in a blockchain network
US11611439B2 (en) * 2019-06-11 2023-03-21 Celo Foundation Tree structure for byzantine fault tolerance
US11343073B2 (en) * 2019-06-18 2022-05-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
US11411721B2 (en) * 2019-09-27 2022-08-09 Cypherium Blockchain Inc. Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI772758B (zh) * 2019-03-04 2022-08-01 美商高通公司 基於票據的請求流控制

Also Published As

Publication number Publication date
WO2018177264A1 (zh) 2018-10-04
EP3605947A4 (en) 2020-12-30
US11775377B2 (en) 2023-10-03
KR102248454B1 (ko) 2021-05-04
CN110430064A (zh) 2019-11-08
CN110430064B (zh) 2020-12-04
CN106789095B (zh) 2020-12-08
US20190235946A1 (en) 2019-08-01
EP3605947B1 (en) 2023-01-11
TWI662435B (zh) 2019-06-11
US11237896B2 (en) 2022-02-01
JP2020512708A (ja) 2020-04-23
US20220091918A1 (en) 2022-03-24
CN106789095A (zh) 2017-05-31
EP3605947A1 (en) 2020-02-05
JP6883106B2 (ja) 2021-06-09
CN110445619A (zh) 2019-11-12
KR20190118631A (ko) 2019-10-18
CN110445619B (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
TWI662435B (zh) 分散式系統及訊息處理方法
US11347726B2 (en) Cross-chain transaction method and apparatus
US11516006B2 (en) Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system
US11451400B2 (en) Blockchain transaction method and apparatus
US10681083B2 (en) System and method for detecting replay attack
CN112035889B (zh) 计算外包的区块链隐私验证方法、装置及计算机设备
US20200143366A1 (en) Methods for decentralized digital asset transfer and smart contract state transition
JP2020512708A5 (zh)
US10735464B2 (en) System and method for detecting replay attack
WO2019072312A2 (en) SYSTEM AND METHOD FOR DETECTING REJECTION ATTACK
US20200296130A1 (en) System and method for detecting replay attack
US20220158836A1 (en) Fork Processing Method And Blockchain Node
Liang et al. Experimental performance comparison of byzantine fault-tolerant protocols for data centers
CN112994891B (zh) 一种基于门限签名的交易请求共识方法和系统
CN115310974A (zh) 一种跨链交易的处理方法、计算机设备及介质
WO2021115554A1 (en) A service based interface for establishing distributed consensus
Friedman et al. Hardening cassandra against byzantine failures
Baqer et al. Distributed Payment Systems