JP2020519959A - ビュー変更プロトコルを終了するためのシステムおよび方法 - Google Patents

ビュー変更プロトコルを終了するためのシステムおよび方法 Download PDF

Info

Publication number
JP2020519959A
JP2020519959A JP2019562589A JP2019562589A JP2020519959A JP 2020519959 A JP2020519959 A JP 2020519959A JP 2019562589 A JP2019562589 A JP 2019562589A JP 2019562589 A JP2019562589 A JP 2019562589A JP 2020519959 A JP2020519959 A JP 2020519959A
Authority
JP
Japan
Prior art keywords
node
nodes
view
sequence number
protocol
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2019562589A
Other languages
English (en)
Other versions
JP6923674B2 (ja
Inventor
ターイー ヤン
ターイー ヤン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2020519959A publication Critical patent/JP2020519959A/ja
Application granted granted Critical
Publication of JP6923674B2 publication Critical patent/JP6923674B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/14Error detection or correction of the data by redundancy in operation
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1621Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
    • 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/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

Abstract

ビュー変更を実行するための、コンピュータ記憶媒体上に符号化されたコンピュータ・プログラムを含む、方法、システム、および装置。これらの方法のうちの1つは、ブロックチェーン上で実施され、ビュー変更プロトコル中の、N個のノードのうちの第1のノードによって実行される。この方法は、N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストすることと、N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得することであって、各第1のメッセージは、N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている整合する現在のビューと、第2のノードに認識されている整合する現在の順序番号とを含み、現在の順序番号は、最新のトランザクションまたは最新のブロックに関連し、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きい、取得することと、少なくともQ個のエコー・メッセージを取得したことに応答して、ビュー変更プロトコルを終了することとを含む。【選択図】図1

Description

本出願は一般には、ビュー変更を実行するための方法およびデバイスに関し、より詳細には、実用的ビザンチン障害耐性(PBFT:Practical Byzantine Fault Tolerance)システムにおいてビュー(View)の変更を終了するための方法およびデバイスに関する。
実用的ビザンチン障害耐性(PBFT)は、ブロックチェーン・システムなどの分散システムにおいて実装することができる一種のコンセンサス・メカニズムである。PBFTコンセンサス・メカニズムによって、分散システムは、システムの特定のノードが故障する(たとえば、不十分なネットワーク接続が原因で、もしくは他の原因で障害が生じる)可能性があろうと、他のピアに誤った情報を伝播する(たとえば、悪意を持って行動する)可能性があろうと、安全性および生存性(liveness)を持って、十分なコンセンサスに到達することが可能になる。そのようなメカニズムの目的は、機能していないノードによる、システムの正しい機能への影響と、システム内の機能しているノード(たとえば、障害のない善意のノード)が到達するコンセンサスへの影響とを軽減することにより、壊滅的なシステム故障を防ぐことである。
PBFTコンセンサス・メカニズムは、独立したノード故障と、特定の独立したノードによって伝播される改ざんされたメッセージとがあるという仮定を通じて、ビザンチン障害(たとえば、機能していないノード)を許容する実用的ビザンチン・ステート・マシンの複製を提供することに焦点を当てている。このPBFTコンセンサス・メカニズムでは、たとえば、ブロックチェーン・システム内の全てのノードはある順序に順序付けられ、あるノードはプライマリ・ノード(別名、リーダーまたはマスター・ノード)となり、その他はバックアップ・ノード(別名、フォロワー・ノード)と呼ばれる。システム内の全てのノードは互いに通信し、目標は、全ての善意のノードがシステムの状態に関する合意/コンセンサスに至ることである。
たとえば、PBFTコンセンサス・メカニズムが機能するには、その前提は、ブロックチェーン・システム内の機能していないノードの量が、所与の脆弱性の窓において一斉にシステム内のノード全体の3分の1以上になってはならないというものである。この方法は、たかだかF個のノードが同時に機能していないノードである限り、生存性および安全性の両方を効果的に提供する。換言すれば、いくつかの実装形態では、PBFTコンセンサス・メカニズムが許容できる機能していないノードの数Fは、(N−1)/3を最も近い整数に切り捨てた値に等しく、ここでNはシステム内のノードの総数を表す。一部の実装形態では、PBFTコンセンサス・メカニズムを実装しているブロックチェーン・システムは、全部で少なくとも3F+1個のノードが存在する場合に、最大F個のビザンチン障害に対処することができる。コンセンサス検証を実行するために、各ノードはプライマリ・ノードのリーダーシップの下で通常動作プロトコルを実行する。プライマリ・ノードが機能していないとあるノードが考えた場合、そのノードはビュー変更プロトコルに入って、プライマリ・ノードの変更を開始することができる。大多数(majority)のノードの合意の下で、新たなプライマリ・ノードが機能していないプライマリ・ノードに置き換わった後、それらのノードは通常動作プロトコルに戻る。
現在の技術では、ノードは従来の手順に従って、すなわち、大多数のノードが同様にビュー変更プロトコルに入り、プライマリ・ノードが機能していないことに合意するまで待機して、ビュー変更プロトコルから退出する。従来のビュー変更プロトコルでは、この条件は、少なくとも2F+1個のノードがビュー変更プロトコルに入り、それぞれビュー変更メッセージをマルチキャストする場合、少なくとも2F+1個のビュー変更メッセージを取得した新たなプライマリ・ノードが新ビュー・メッセージをマルチキャストして、それらのノードが通常動作に戻るのを支援することである。しかしながら、場合によっては、ネットワーク通信の途絶により、ノードが、プライマリ・ノードが機能していないと誤解し、その他のノードがまだ通常動作中である間にビュー変更プロトコルに入る場合がある。結果として、そのノードはビュー変更プロトコルで立ち往生し、コンセンサス・プロセスから実質的に遮断される。立ち往生しているノードが通常動作に戻るまでの遅延は、いつ本当のプライマリ・ノードの機能停止または誤動作が発生するかによる場合があるので、予測不可能である。そのため、立ち往生しているノードの計算能力は、他のノードがビュー変更に参加するのを待っている間、無駄になる。したがって、ノードがビュー変更プロトコルから退出するのを支援することができる代替メカニズムを提供することが望ましい。
本明細書の様々な実施形態は、ビュー変更を実行するためのシステム、方法、および非一時的コンピュータ可読媒体を含むが、これらに限定されない。
一実施形態によれば、いくつか(N個)のノードによって維持されるブロックチェーン上で実施されるコンピュータ実施ビュー変更方法は、ビュー変更プロトコル中の、N個のノードのうちの第1のノードによって実行される。この方法は、N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストすることと、N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得することであって、各エコー・メッセージは、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている整合する現在のビューと、(2)第2のノードに認識されている整合する現在の順序番号とを含み、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連し、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きく、Q(定足数(quorum))は(N+F+1)/2を最も近い整数に切り上げた値であり、Fは(N−1)/3を最も近い整数に切り捨てた値である、取得することと、少なくともQ個のエコー・メッセージを取得したことに応答して、ビュー変更プロトコルを終了することとを含む。
いくつかの実施形態では、少なくともQ個の第2のノードがビュー変更メッセージを取得したことに応答して、少なくともQ個のエコー・メッセージが、それぞれ少なくともQ個の第2のノードによって第1のノードに送信される。
他の実施形態では、現在の順序番号は、第2のノードによって維持されるブロックチェーンの第2のコピーの高さを含み、第1の順序番号は、第1のノードによって維持されるブロックチェーンの第1のコピーの高さを含む。
さらに他の実施形態では、現在の順序番号は、第2のノードによってコミットされた最新のトランザクションの順序番号を含み、第1の順序番号は、第1のノードによってコミットされた最新のトランザクションの順序番号を含む。
またさらに他の実施形態では、エコー・メッセージは、両方とも第2のノードに認識されている現在のビューおよび現在の順序番号を保証するデジタル署名を含む。
いくつかの実施形態では、エコー・メッセージは、最新のブロックまたは最新のトランザクションのダイジェストをさらに含む。
他の実施形態では、ダイジェストは、最新のブロックまたは最新のトランザクションのハッシュ値を含む。
さらに他の実施形態では、ダイジェストは、第2のノードには認識されているが、第1のノードには認識されていない最新のブロックのブロックのマークル・ルートを含む。
またさらに他の実施形態では、ビュー変更プロトコルを終了することは、第1のノードによって維持されるブロックチェーンの第1のコピーを、第2のノードによって維持されるブロックチェーンの第2のコピーと同期させることと、第1のノードに対して整合する現在のビューを使用することによって、ビュー変更プロトコルから退出して、通常動作プロトコルに入ることとを含む。
いくつかの実施形態では、少なくともQ個の第2のノードに認識されている現在の順序番号は(n+1)であり、第1のノードに認識されている第1の順序番号はnである。
他の実施形態では、少なくともQ個の第2のノードの現在のビューはvであり、第1のノードは、ビュー変更プロトコル中の場合、vより大きい第1のビューを有する。
さらに他の実施形態では、N個のノードは、N個のノードのうちの1つがプライマリ・ノードとして機能し、その他の(N−1)個のノードがバックアップ・ノードとして機能する、実用的ビザンチン障害耐性(PBFT)ネットワークを形成する。
さらなる実施形態では、ビュー変更システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、前述の実施形態のいずれか1つの方法を実行するための、1つまたは複数のプロセッサによって実行可能な命令が記憶される、1つまたは複数のコンピュータ可読メモリとを備える。
いくつかの実施形態では、ビュー変更装置は、前述の実施形態のいずれか1つの方法を実行するための複数のモジュールを備える。
他の実施形態によれば、ビュー変更システムはブロックチェーンを維持するためのものであり、いくつか(N個)のノードはブロックチェーンを維持し、このシステムは、ビュー変更プロトコル中の、N個のノードのうちの第1のノードとして機能する。このシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、このシステムに動作を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読メモリとを備え、これらの動作は、N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストすることと、N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得することであって、各エコー・メッセージは、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている整合する現在のビューと、(2)第2のノードに認識されている整合する現在の順序番号とを含み、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連し、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きく、Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Fは(N−1)/3を最も近い整数に切り捨てた値である、取得することと、少なくともQ個のエコー・メッセージを取得したことに応答して、ビュー変更プロトコルを終了することとを含む。
さらに他の実施形態によれば、非一時的コンピュータ可読記憶媒体は、ブロックチェーンを維持するためのものであり、いくつか(N個)のノードはブロックチェーンを維持し、この記憶媒体は、ビュー変更プロトコル中の、N個のノードのうちの第1のノードに関連付けられる。この記憶媒体は、1つまたは複数のプロセッサに動作を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成され、これらの動作は、N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストすることと、N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得することであって、各エコー・メッセージは、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている整合する現在のビューと、(2)第2のノードに認識されている整合する現在の順序番号とを含み、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連し、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きく、Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Fは(N−1)/3を最も近い整数に切り捨てた値である、取得することと、少なくともQ個のエコー・メッセージを取得したことに応答して、ビュー変更プロトコルを終了することとを含む。
またさらに他の実施形態によれば、ビュー変更装置はブロックチェーンを維持するためのものであり、いくつか(N個)のノードはブロックチェーンを維持し、この装置は、ビュー変更プロトコル中の、N個のノードのうちの第1のノードとして機能する。この装置は、N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストするためのマルチキャスト・モジュールと、N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得するための取得モジュールであって、各エコー・メッセージは、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている整合する現在のビューと、(2)第2のノードに認識されている整合する現在の順序番号とを含み、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連し、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きく、Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Fは(N−1)/3を最も近い整数に切り捨てた値である、取得モジュールと、少なくともQ個のエコー・メッセージを取得したことに応答して、ビュー変更プロトコルを終了するための終了モジュールとを備える。
一実施形態によれば、いくつか(N個)のノードによって維持されるブロックチェーン上で実施されるコンピュータ実施ビュー変更方法は、通常動作プロトコル中の、N個のノードのうちの第2のノードによって実行される。この方法は、ビュー変更プロトコル中の第1のノードからビュー変更メッセージを取得することと、第2のノードの現在のプロトコル・ステータスを判定することと、現在のプロトコル・ステータスが通常動作プロトコルであると判定したことに応答して、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている現在のビューと、(2)第2のノードに認識されている現在の順序番号とを含むエコー・メッセージを第1のノードに送信することであって、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連する、送信することとを含む。
いくつかの実施形態では、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きい。
他の実施形態では、現在の順序番号は、第2のノードによって維持されるブロックチェーンの第2のコピーの高さを含み、第1の順序番号は、第1のノードによって維持されるブロックチェーンの第1のコピーの高さを含む。
さらに他の実施形態では、現在の順序番号は、第2のノードによってコミットされた最新のトランザクションの順序番号を含み、第1の順序番号は、第1のノードによってコミットされた最新のトランザクションの順序番号を含む。
またさらに他の実施形態では、エコー・メッセージは、両方とも第2のノードに認識されている現在のビューおよび現在の順序番号を保証するデジタル署名を含む。
いくつかの実施形態では、エコー・メッセージは、最新のブロックまたは最新のトランザクションのダイジェストをさらに含む。
他の実施形態では、ダイジェストは、最新のブロックまたは最新のトランザクションのハッシュ値を含む。
さらに他の実施形態では、ダイジェストは、第2のノードには認識されているが、第1のノードには認識されていない最新のブロックのブロックのマークル・ルートを含む。
またさらに他の実施形態では、第2のノードに認識されている現在の順序番号は(n+1)であり、第1のノードに認識されている第1の順序番号はnである。
いくつかの実施形態では、第2のノードの現在のビューはvであり、第1のノードは、ビュー変更プロトコル中の場合、vより大きい第1のビューを有する。
他の実施形態では、N個のノードは、N個のノードのうちの1つがプライマリ・ノードとして機能し、その他の(N−1)個のノードがバックアップ・ノードとして機能する、実用的ビザンチン障害耐性(PBFT)ネットワークを形成する。
さらなる実施形態では、ビュー変更システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、前述の実施形態のいずれか1つの方法を実行するための、1つまたは複数のプロセッサによって実行可能な命令が記憶される、1つまたは複数のコンピュータ可読メモリとを備える。
いくつかの実施形態では、ビュー変更装置は、前述の実施形態のいずれか1つの方法を実行するための複数のモジュールを備える。
他の実施形態によれば、ビュー変更システムはブロックチェーンを維持するためのものであり、いくつか(N個)のノードはブロックチェーンを維持し、このシステムは、通常動作プロトコル中の、N個のノードのうちの第2のノードとして機能する。このシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、このシステムに動作を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読メモリとを備え、これらの動作は、ビュー変更プロトコル中の第1のノードからビュー変更メッセージを取得することと、第2のノードの現在のプロトコル・ステータスを判定することと、現在のプロトコル・ステータスが通常動作プロトコルであると判定したことに応答して、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている現在のビューと、(2)第2のノードに認識されている現在の順序番号とを含むエコー・メッセージを第1のノードに送信することであって、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連する、送信することとを含む。
さらに他の実施形態によれば、非一時的コンピュータ可読記憶媒体は、ブロックチェーンを維持するためのものであり、いくつか(N個)のノードはブロックチェーンを維持し、この記憶媒体は、通常動作プロトコル中の、N個のノードのうちの第2のノードに関連付けられる。この記憶媒体は、1つまたは複数のプロセッサに動作を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成され、これらの動作は、ビュー変更プロトコル中の第1のノードからビュー変更メッセージを取得することと、第2のノードの現在のプロトコル・ステータスを判定することと、現在のプロトコル・ステータスが通常動作プロトコルであると判定したことに応答して、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている現在のビューと、(2)第2のノードに認識されている現在の順序番号とを含むエコー・メッセージを第1のノードに送信することであって、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連する、送信することとを含む。
またさらに他の実施形態によれば、ビュー変更装置はブロックチェーンを維持するためのものであり、いくつか(N個)のノードはブロックチェーンを維持し、この装置は、通常動作プロトコル中の、N個のノードのうちの第2のノードとして機能する。この装置は、ビュー変更プロトコル中の第1のノードからビュー変更メッセージを取得するための取得モジュールと、第2のノードの現在のプロトコル・ステータスを判定するための判定モジュールと、現在のプロトコル・ステータスが通常動作プロトコルであると判定したことに応答して、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている現在のビューと、(2)第2のノードに認識されている現在の順序番号とを含むエコー・メッセージを第1のノードに送信するための送信モジュールであって、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連する、送信モジュールとを備える。
本明細書で開示した実施形態は、1つまたは複数の技術的効果を有する。いくつかの実施形態では、これらの方法およびシステムは、ビュー変更プロトコルに入ったPBFTコンセンサス・システムのノード(たとえば、第1のノード)が、効率的にビュー変更プロトコルから退出し、通常動作プロトコルを再開できるようにすることができる。他の実施形態では、通常動作プロトコル中の第2のノードは、ビュー変更メッセージを受信するときに、エコー・メッセージで返答することができ、エコー・メッセージは、第2のノードに認識されている現在のビューおよび現在の順序番号を含む。現在のビューは、プライマリ・ノードの第2のノードのビューを示し、現在の順序番号は、第2のノードがコミットした最新のトランザクションを示し、または第2のノードによって維持されるブロックチェーンの最新のブロックに関連するブロックチェーンの高さ(ブロックの高さとも呼ばれる)を示す。さらに他の実施形態では、ビュー変更プロトコルで立ち往生している第1のノードは、エコー・メッセージから現在のビューおよび現在の順序番号を取得することができる。定足数Qの整合するエコー・メッセージを受信すると、第1のノードは、それらを自身のビューおよび順序番号と比較して、ノードの大多数がまだ通常動作中であるか否かを判定することができる。他のノードの大多数がまだ通常動作中である場合、第1のノードは、ビュー変更プロトコルを終了し、通常動作プロトコルを再開することができる。さらに他の実施形態では、エコー・メッセージ内の順序番号によって示されるように、大多数のノードが、コンセンサス検証順序における次のトランザクションまたは次のブロックに同意しており、次のトランザクションまたは次のブロックは、まだ第1のノードに認識されていない場合がある。大多数のノードがビュー変更に入らなかったと気付くことにより、第1のノードはスムーズにビュー変更プロトコルを終了することができる。いくつかの実施形態では、大多数のノードが同様にビュー変更に入り、新たなビューに同意してビュー変更プロトコルを終了しなくても、第1のノードはビュー変更を終了することができる。このようにして、通常動作中のノードの数、およびそれらの計算能力の提供を最適化することができる。
本明細書で開示したシステム、方法、および非一時的コンピュータ可読媒体のこれらおよび他の特徴のみならず、関連する構造要素の動作方法および機能、ならびに部品の組み合わせおよび製造の経済性は、添付図面を参照して以下の説明および添付の特許請求の範囲を考察するとより明らかになり、添付図面は全て本明細書の一部を形成し、同様の参照番号は様々な図における対応する部分を示す。しかしながら、図面は例示および説明のみを目的とするものであり、限定を意図したものではないことは明確に理解されたい。
様々な実施形態によるネットワークを示す図である。 PBFTの通常動作プロトコルを示す図である。 1つのレプリカが機能していない場合のPBFTの通常動作プロトコルを示す図である。 PBFTの通常動作プロトコルおよびビュー変更プロトコルを示す図である。 通常動作プロトコルとビュー変更プロトコルとの間での経路の切り替えのフローチャートである。 様々な実施形態による、通常動作プロトコルとビュー変更プロトコルとの間での経路の切り替えのフローチャートである。 様々な実施形態によるビュー変更退出ステップのフローチャートである。 様々な実施形態によるビュー変更方法のフローチャートである。 様々な実施形態によるビュー変更方法のフローチャートである。 様々な実施形態によるビュー変更システムのブロック図である。 様々な実施形態によるビュー変更システムのブロック図である。 本明細書に記載の実施形態のいずれかを実装することができるコンピュータ・システムのブロック図である。
本明細書で開示した実施形態は、限定はしないが、PBFTシステムにおいて実装することができるビュー変更システム、方法、および非一時的コンピュータ可読媒体を含む。様々な実施形態において、ビュー変更プロトコルから退出し、通常動作プロトコルを再開する経路が提供される。ビュー変更に入ったノードは、少なくともQ個のノードがビュー変更に入る必要がある従来のビュー変更プロトコルを経由せずに、通常動作に戻ることができる。Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Nはノードの総数を表し、4以上の整数であり、Fは(N−1)/3を最も近い整数に切り捨てた値である。PBFTと同様に、開示したシステム、方法、および非一時的コンピュータ可読媒体は、他のコンセンサス・プロトコル、たとえば、SecureRing、Byzantine Paxos、Q/U、HQ、Zyzzvyva、ABsTRACTs、RBFT、Adapt、Tangaroa、CheapBFT、MinBFT、FastBFTなどに適用することができる。PBFTの様々な態様については、M.Castro、B.Liskov、「Practical Byzantine Fault Tolerance」、Proceedings of the Third Symposium on Operating Systems Design and Implementation、(1999年2月)を参照することができ、その全体が本明細書に引用により組み込まれている。
図1に、様々な実施形態によるネットワーク120を示す。以下に提示する構成要素は、例示的なものとする。図示のように、ネットワーク120は、ネットワーク・システム112を含むことができる。ネットワーク・システム112は、サーバ、コンピュータ、携帯電話などの1つまたは複数のコンピューティング・デバイスに実装された1つまたは複数のノード(たとえば、ノード0、ノード1、ノード2、ノード3、ノード4、ノードiなど)を含むことができる。ネットワーク・システム112には、ネットワーク120の他のデバイスまたはさらなるシステムにアクセスするための適切なソフトウェア(たとえば、コンセンサス・プログラム)および/またはハードウェア(たとえば、有線、無線接続)をインストールすることができる。ノードは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合された1つまたは複数のメモリとを含むことができる。メモリは、非一時的かつコンピュータ可読にすることができ、1つまたは複数のプロセッサに本明細書に記載の動作を実行させるための、1つまたは複数のプロセッサによって実行可能な命令によって構成することができる。この図では、ノードは単一の構成要素として示しているが、これらのノードが単一のデバイスまたは互いに結合された複数のデバイスとして実装できることは理解されよう。一般に、ノードは互いに通信し、ネットワーク・システム112の外部の他のデバイスと通信することができてもよい。たとえば、1つまたは複数の有線または無線ネットワーク(たとえば、インターネット)を介して、データを通信することができる。
様々な実施形態において、ネットワーク・システム112は、様々なブロックチェーン・ノードを含むブロックチェーン・ネットワーク・システムとして実装することができる。図示のように、ブロックチェーン・ネットワーク・システムは、複数のブロックチェーン・ノード(たとえば、ノード0、ノード1、ノード2、ノード3、ノード4、ノードiなど)を含むことができる。ブロックチェーン・ノードは、あるブロックチェーン・ノードが他のブロックチェーン・ノードと通信するネットワーク(たとえば、ピア・ツー・ピア・ネットワーク)を形成することができる。図示したブロックチェーン・ノードの順序および数は、単なる例であって、説明を簡単にするためのものである。ブロックチェーン・ノードは、サーバ、コンピュータなどに実装することができる。各ブロックチェーン・ノードは、TCP/IPなどの様々なタイプの通信方法によって互いに結合された1つまたは複数の物理的なハードウェア・デバイスまたは仮想デバイスに対応することができる。分類に応じて、ブロックチェーン・ノードは、フル・ノード、Gethノード、コンセンサス・ノードなどを含むことができる。
様々な実施形態において、ブロックチェーン・ネットワーク・システムは、ノードAおよびノードB(たとえば、軽量ノード)などの他のシステムおよびデバイスとインタラクト(interact)することができる。インタラクションは、たとえば、要求を受信し、要求の実行結果を返すなどの目的の、データの送受信を含むことができる。一例では、ユーザAはブロックチェーン・ネットワークを介してユーザBと取引したい場合がある。トランザクションは、ユーザAの口座の一部の資産をユーザBの口座に送金することを含む場合がある。ユーザAおよびユーザBは、トランザクションのために適切なブロックチェーン・ソフトウェア(たとえば、暗号通貨ウォレットなど)がインストールされたノードAおよびノードBのそれぞれのデバイスを使用することができる。ノードAはノード0との通信を通じてブロックチェーンにアクセスすることができ、ノードBはノード1との通信を通じてブロックチェーンにアクセスすることができる。たとえば、ノードAはノード0を介してブロックチェーンにトランザクション要求を提出することができ、ノードBはノード1を介してブロックチェーンにスマート・コントラクト実行要求を提出することができる。ブロックチェーンから外れて、ノードAおよびノードBは、他の通信チャネル(たとえば、ノード0および1を経由しない通常のインターネット通信)を有することができる。
ブロックチェーン・ノードはそれぞれ、メモリを備えるか、またはメモリに結合することができる。いくつかの実施形態では、メモリは、プール・データベースを記憶することができる。プール・データベースは、分散方式で複数のブロックチェーン・ノードがアクセスできるようにすることができる。たとえば、プール・データベースは、ブロックチェーン・ノードのメモリにそれぞれ記憶することができる。プール・データベースは、ユーザによって操作されるノードAおよびBなどの1つまたは複数のユーザデバイスによって提出される複数のトランザクションを記憶することができる。
ブロックチェーン・ノードは、コンセンサスを通じて、ブロックチェーンと呼ばれる分散型台帳にトランザクションを記録するネットワーク(たとえば、P2Pネットワーク)を形成する。P2Pネットワークの参加者はノードと呼ばれる場合があり、ノードはブロックチェーンを維持するものである。ブロックチェーンP2Pネットワークでは、各ノードはコンセンサス検証に参加し、ブロックチェーンの完全な台帳のコピーを記憶する。全てのノードは、ブロックチェーン・コンセンサス方法によりトランザクションのバッチを確認することによって、全てのノードが整合する確認結果を有し、ひいてはブロックチェーンの整合するコピーを有するようにする。
ブロックチェーン・コンセンサス方法の1つは、実用的ビザンチン障害耐性(PBFT)である。ビザンチン障害耐性は、ビザンチン将軍問題が起源である。P2Pネットワーク・システムでは、そのような機能していないノードの数が特定の限度内である限り、システムは適切に機能し続けることができる。そのようなシステムは、ビザンチン障害耐性システムと呼ばれる。PBFTは、ビザンチン障害耐性ネットワーク機能の最適化の一例である。PBFTは、サーバをコピーし、クライアントのインタラクションをサーバのコピーと同期させることにより、ネットワークにビザンチン・ステート・マシンを提供する。
PBFT動作の中心となるのは、ブロックチェーンに記録された情報の整合するグローバルなビューの維持であり、これにより、分散方式でユーザが互いにインタラクトできるようにするためのバックボーンが形成される。PBFTコンセンサス・モデルのセキュリティは、ブロックチェーン・プラットフォームにとって重要である。コンセンサス・モデルの2つの主要な特性は:1)安全性または整合性:全ての善意のノードが同じ有効な出力を生成すること、および、2)生存性:コンセンサスを得た全ての善意のノードは、中間段階で止まることなく最終的に値を生成すること、である。安全で堅牢なPBFTコンセンサス・プロトコルは、ネットワーク・ノードの故障、ネットワークの分割、メッセージ遅延、順不同のメッセージ配信、メッセージ破損などを含む多種多様なビザンチン行動を許容し、システム内の機能していないノードの数が限られている限り、ノード間でコンセンサスに到達する必要がある。その目的で、PBFTモデルは、2つの相互に排他的なプロトコル:通常動作/整合性プロトコルおよびビュー変更プロトコルのいずれか一方の下で動作し、これらは以下でさらに説明する。本明細書では、機能していないということは、障害があるおよび/または悪意があることを意味し、機能しているということは、障害がなく善意であることを意味する。可能性のある障害または悪意がある行為は、メッセージの配信の失敗、メッセージの配信の遅延、順不同のメッセージ配信、ビザンチン障害(プロトコルに違反する恣意的なメッセージを様々なノードに配信する)などを含むことができる。
いくつかの実施形態では、実用的ビザンチン障害耐性(PBFT)システムはN個のノードを含むことができ、N個のノードのうちの1つはプライマリ・ノードとして機能し、N個のノードのうちのその他はバックアップ・ノードとして機能する。プライマリ・ノードの指定は特定のノードに固定されなくてもよく、その理由は、ビュー変更プロトコルを通じて他のノードが新たなプライマリ・ノードになるように選出することができるためである。たとえば、プライマリ・ノードは剰余演算によって選出することができ、最小のシリアル番号(ビュー番号の剰余)を有する機能しているノードが新たなプライマリ・ノードになる。現在のビューと、ノードの総数Nとによって、プライマリ・ノードid=(view+1)mod Nを決定することができる。PBFTでは、新たなプライマリ・ノードが選出されるたびにビューが変更される。たとえば、ビュー変更のたびに、ビューはゼロから単調に増加する。すなわち、プライマリ・ノードの変更に伴い、ビューを変更することができる。
いくつかの実施形態では、プライマリ・ノードはビューvで機能しており、通常動作プロトコルが実行される。通常動作では、プライマリ・ノードおよび/またはバックアップ・ノードは、1つまたは複数のクライアントから未検証のトランザクションに関連する要求を受信する場合がある。たとえば、クライアントとしてのノードAは、プライマリ・ノードおよび/またはバックアップ・ノードに要求を送信する場合がある。要求は、未検証のトランザクション(たとえば、ブロックチェーンの新たなブロックに追加されるトランザクション)を含むことができる。未検証のトランザクションは、たとえば、ブロックチェーン・ベースの金融取引、スマート・コントラクト展開または実行トランザクションなどを含むことができる。プライマリ・ノードおよびバックアップ・ノードは、トランザクションの何らかの予備検証を実行してもよく、しなくてもよい。要求を受信したバックアップ・ノードは、受信した要求をプライマリ・ノードに転送することができる。プライマリ・ノードにおけるトランザクションが特定のレベルに達するかまたは他の方法でトリガー条件を満たす場合、プライマリ・ノードは1ラウンドのコンセンサス検証を開始し、未検証のトランザクションの検証結果を提案することができる。バックアップ・ノードはコンセンサスに対処し、コンセンサスに到達するための提案を確認することができる。ノードの要件は、それらが決定性であって、同じ状態で開始することである。最終的な結果は、全ての善意のノードがレコードの順序に関するコンセンサスに至り、それを受諾または拒否することである。コンセンサス検証されると、トランザクションは、ブロックチェーンの新たなブロック内にパックされ、ノードによって維持されるローカルのブロックチェーンのコピーに追加することができる。また、要求を元々に送信したクライアント(たとえば、ノードA)に通知される。
安全性を持続するために、主なPBFT方法は、通常動作プロトコルに関する3つのフェーズ:事前準備、準備、およびコミット・フェーズを含む。図2Aから図2Cを参照すると、PBFTシステムの一例は、4つのレプリカ(レプリカとはノードの別名である):レプリカ0、レプリカ1、レプリカ2、およびレプリカ3を含む。0〜3の番号は、新たなプライマリ・ノードを決定するために使用できるレプリカのシリアル番号である。レプリカ0はプライマリ・ノード0に対応することができ、レプリカ1、2、および3はバックアップ・ノード1、2、および3に対応することができる。レプリカは、たとえば、上記のネットワーク・システム112の様々なブロックチェーン・ノードに実装することができる。機能していないノードが存在しない場合の通常動作プロトコルを図2Aに示し、レプリカ3が機能していないノードである場合の他の通常動作プロトコルを図2Bに示す。どちらの状況でも、通常動作プロトコルは、要求フェーズ、事前準備フェーズ、準備フェーズ、コミット・フェーズ、および返答フェーズに分けることができる。
図2Aおよび図2Bを参照すると、通常動作は、クライアントが要求(メッセージ)をプライマリ・ノード(レプリカ0)に提出したときに、要求フェーズにおいて開始し、プライマリ・ノードはその要求の主唱(advocating)を担当するものである。要求は、クライアント、要求動作(たとえば、コンセンサス検証されるトランザクション要求)、および要求タイムスタンプの情報を含むことができる。クライアント(クライアント・ノードとも呼ばれる)は、たとえば、上記のノードAに実装することができる。ノードAは、軽量ノード(たとえば、携帯電話に実装されたもの)とすることができる。それに加えてまたはその代わりに、クライアントは要求をバックアップ・ノードに送信することができ、バックアップ・ノードは事前準備フェーズの前に要求をプライマリ・ノードに転送する。プライマリ・ノードまたはバックアップ・ノードのいずれが要求を受信するかに関係なく、対応するノードは受信した要求をネットワーク内の他のノードにマルチキャストすることができる。このようにして、プライマリ・ノードが、クライアントによってコンセンサス・ネットワークに提出された保留中の要求を最終的に何らかの方法で取得することができる。
したがって、プライマリ・ノードはリーダーのように機能し、バックアップ・ノードをリードして、要求に関連するトランザクションを検証する。プライマリ・ノードは、そのビュー内での要求の実行の順序付けを担当する。事前準備フェーズにおいて、プライマリ・ノードは取得した要求を検証し、各要求に順序番号を提案することができる。このようにして、各要求に増加する順序番号を割り当てて、並べることができる。加えて、事前準備メッセージは、ブロックの高さを含むことができる。ブロックの高さは、ブロックチェーンの現在の高さに基づくことができる。たとえば、ブロックチェーンが現在1000個のブロックを有する場合、ブロックの高さは1000とすることができ、これは1000個のブロックがブロックチェーンに既に存在していることを示し、または1001とすることができ、これは要求に関連するトランザクションが、他のノードによってまだ検証されていないブロックチェーンの1001番目のブロック内にパックされるように提案されることを示す。プライマリ・ノードは、要求を順序番号および/またはブロックの高さと共に転送することができる。たとえば、要求を取得した後、プライマリ・ノードは、順序番号を割り当てることにより、対応するトランザクションを実行する順序に要求を配列し、リストに記憶することができる。プライマリ・ノードは、PBFTネットワーク・システム内の全てのバックアップ・ノード(レプリカ1からレプリカ3)に事前準備メッセージを送信することができる。図2Aに示すように、プライマリ・ノードは、リストを事前準備メッセージ内で、またはそれと共にバックアップ・ノードにマルチキャストすることができる。図2Bに示すように、バックアップ・ノード(レプリカ3)が機能しておらず、プライマリ・ノードがそれに気付いていない場合であっても、プライマリ・ノードはなおも事前準備メッセージを送信することができる。各バックアップ・ノードは事前準備メッセージを、それが有効である限り受諾する。事前準備メッセージは、ビュー番号、順序番号、署名、ダイジェスト(d)、その他のメタ・データなどを含むことができ、これによりメッセージの有効性を判定することが可能になる。
準備フェーズにおいて、バックアップ・ノードは、事前準備メッセージを受諾した場合、それに続いて、プライマリ・ノードを含むPBFTネットワーク・システム内の他のノードに準備メッセージをマルチキャストすることができる。準備メッセージをマルチキャストすることは、送信者ノードがその順序に同意することを示す。各準備メッセージは、有効である限り受信ノードによって受諾される。準備メッセージの有効性も同様に、ビュー番号、順序番号、署名、ダイジェスト(d)、その他のメタ・データなどに基づいて判定することができる。ノードは、プライマリ・ノードからオリジナルの要求を受信し、事前準備を行い(たとえば、事前準備メッセージをマルチキャストする)、事前準備メッセージに合致する少なくとも(Q−1)個の別個の有効かつ整合する準備メッセージを取得した場合に、準備が整う。(Q−1)個の準備メッセージは、マルチキャストした準備メッセージを含むことができる。Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Nはノードの総数を表し、4以上の整数であり、Fは(N−1)/3を最も近い整数に切り捨てた値である。Q個のノードのPBFTネットワーク・システムは、最大F個のビザンチン障害を許容することができる。いくつかの実施形態では、Nが少なくとも(3F+1)である場合、Qは(2F+1)である。ここでは、Q個ではなく(Q−1)個の準備メッセージが必要であり、その理由は、(プライマリ・ノード自体は準備メッセージを送信しなくてもよいが)事前準備メッセージをプライマリ・ノードの準備メッセージの同等物として扱うことができるためである。事前準備メッセージをもう1つの準備メッセージとしてカウントする場合、全てのノードのうちの少なくともQ個が事前準備メッセージを受諾したことを示す少なくともQ個の別個の有効な準備メッセージが存在することになり、そのうち最大F個の機能していないノードを許容することができる。このように、事前準備から準備までのフェーズによって、要求がビューvにおいて実行される場合に、その順序番号で実行されることに、少なくとも(Q−F)個の機能しているノード(Q個の準備できたノードから最大F個の機能していないノードを除外したもの)が同意することが保証される。準備フェーズによって、ビュー内の各要求の障害耐性のある整合する順序付けが保証される。
いくつかの実施形態では、バックアップ・ノードは、事前準備メッセージおよび(Q−1)個の準備メッセージを受信した後、順序を検証し、検証結果を、プライマリ・ノードによって事前準備メッセージ内に書き込まれた提案された検証結果と比較することができる。順序を検証するにはいくつかの方法があるであろう。たとえば、提案された検証結果は、ダイジェスト(d)に書き込まれた提案されたマークル・パトリシア・トライ(Merkle Patricia Trie)のルートを含むことができる。バックアップ・ノードは、要求に関連するトランザクションを順序に従って配列し、マークル・パトリシア・トライのルートを計算して、マークル・パトリシア・トライのルートと比較することができる。この計算は、ブロックチェーン内の既存ブロックのノード・ハッシュなどの特定の既存情報を必要とすることもできる。この比較により、バックアップ・ノードによって計算されるダイジェスト(D(m))が生成される。ダイジェスト(D(m))がダイジェスト(d)と整合する場合、検証は成功する。検証されると、バックアップ・ノードは、要求の順序付け(たとえば、要求に関連するトランザクションをブロックチェーンの新たなブロック内にパックする順序)に同意することができる。同様に、バックアップ・ノードは、受信したコミット・メッセージ(コミット・フェーズに関して後述する)が同じダイジェストD(m)を含むか否かを検証して、他のノードも要求の順序付けに同意するか否かを判定することができる。準備できたノードがQ個のコミット・メッセージを取得しており、より低い順序番号を有する要求が全て実行済みである場合、そのノードは要求を実行することができる。
いくつかの実施形態では、事前準備メッセージは、新たなブロックのダイジェスト(d)、または要求の実行に他の方法で関連する情報(たとえば、要求に関連するトランザクション)を含むことができる。ダイジェスト(d)(たとえば、ハッシュ値)は、トランザクションなどのデータにハッシュ・アルゴリズムを適用した数値結果とすることができる。バックアップ・ノードは、トランザクションを実行してダイジェスト(d)を確認することができる。複数の要求の場合、バックアップ・ノードは、順序(すなわち、要求の順序番号)に従って要求を実行して、ダイジェストD(m)を取得することができる。D(m)およびdが整合する場合、バックアップ・ノードは、バックアップ・ノードがプライマリ・ノードの検証結果に同意することを示すコミット・メッセージ(コミット・フェーズに関して後述する)をマルチキャストする。いくつかの実施形態では、コミット・メッセージは、コミット・メッセージをマルチキャストしたバックアップ・ノードが事前準備メッセージに同意し、別個のノードから(Q−1)個以上の有効かつ整合する準備メッセージを取得したことを示す。特定の順序番号の保留中の要求に関して、準備できたノードがQ個のコミット・メッセージを取得しており、より低い順序番号を有する要求が全て実行済みである場合、そのノードは要求を実行することができる。
コミット・フェーズでは、ノードが準備できている場合、コミット・メッセージを他のノードにマルチキャストすることができる。ノードは、他のノードからコミット・メッセージを受信することができる。各ノードはコミット・メッセージを有効である限り受諾する。コミット・メッセージは、ビュー番号、順序番号、署名、ダイジェスト、その他のメタ・データなどを含むことができ、これによりメッセージの有効性を判定することが可能になる。ノードが少なくともQ個の別個の有効かつ整合するコミット・メッセージを取得した場合、これは、定足数のノードがコミットしており(すなわち、少なくとも(Q−F)個の善意のノードが準備できており)、コンセンサスに到達したことを示す。少なくともQ個の有効なコミット・メッセージは、マルチキャストしたコミット・メッセージを含むことができる。したがって、準備からコミットまでのフェーズによって、要求が最終的にビューvにおいてその順序番号で実行されることに、少なくとも(Q−F)個の機能しているノード(Q個のコミット・メッセージから最大F個の機能していないノードを除外したもの)が同意することが保証される。ノードは異なるビューでコミットする場合があるので(たとえば、一部のノードが既に新たなビューに入っており、他の一部のノードが前のビューのままである場合)、受信されたコミット・メッセージは、異なるビューで実行されたコミットに対応する場合がある。機能しているノードが各要求の順序番号に同意するので、コミット・フェーズによって、ビュー全体にわたる各要求の障害耐性のある整合する順序付けが保証される。
いくつかの実施形態では、ノードが少なくともQ個の別個の有効かつ整合するコミット・メッセージを取得した場合、そのノードは対応する要求を実行することができる。たとえば、Q個のコミット・メッセージが取得されると、これは新たなブロックがコンセンサス検証されることを意味する。したがって、ノードは、ローカルに保持しているブロックチェーンのコピー内に新たなブロックをパックすることができる。そうでなければ、バックアップ・ノードは、ビュー変更プロトコルを直接トリガーすることができる。
返答フェーズでは、要求を実行した後、ノードは返答をクライアントに直接送信する。ブロックチェーン内にパックされたトランザクションについて、返答はブロックチェーン内のトランザクションのアドレスを含むことができる。最大F個の障害が許容されているので、クライアントは、異なるノードからの有効な署名と、同じ要求タイムスタンプおよび同じ実行結果を有する(Q−F)個の返答を待機した後、結果を受諾する。図2Aおよび図2Bに示すPBFTネットワーク・システムでは、合計4つのノードがあるので、最大で1つ(N=4、Q=3、およびF=1)の機能していないノードを許容することができる。したがって、図2Bにおいて、レプリカ3が機能していなくても、なおもコンセンサスに到達することができる。
生存性を持続するために、プライマリ・ノードが要求をマルチキャストせずに特定の時間が経過した場合、ビュー変更プロトコルにおいてプライマリ・ノードを置き換えることができる。たとえば、バックアップ・ノードはタイマーを保持することができる。バックアップ・ノードは、要求を受信し、タイマーがまだ動作していないときにタイマーを開始する。バックアップ・ノードは、要求を実行するために待機しなくなった(すなわち、要求が実行された)ときにタイマーを停止するが、その時点で1つまたは複数の他の要求を実行するために待機している場合は、タイマーを再開する。タイマーが時間切れになった場合、バックアップ・ノードは、プライマリ・ノードが機能していないと判定することができる。したがって、バックアップ・ノードは、ビュー変更メッセージを他のノードにマルチキャストすることができる。他の例では、バックアップ・ノードは、プライマリ・ノードが機能していないと判定することができる。したがって、バックアップ・ノードは、ビュー変更メッセージをマルチキャストすることができる。他の例では、クライアントはタイマーを使用して、クライアントがプライマリ・ノードに要求を送信してから応答を受信することなく時間が経過しすぎていないかを判定することができる。このタイマーが時間切れになった場合、クライアントはその要求を全てのノードに送信する。ノードが既に要求を認識している場合、再ブロードキャストは無視される。ノードが要求を認識していない場合、タイマーを開始する。ノードのタイマーがタイムアウトすると、ノードは、プライマリ・ノードが機能していないという疑いに基づいて、ビュー変更メッセージを他のバックアップ・ノードにマルチキャストすることにより、ビュー変更処理を開始する。ビュー変更メッセージは、(前の通常動作中の自身の準備メッセージを含むアーカイブ・メッセージの形式で)システム状態を含み、それによって他のノードは送信者ノードが故障していないことを知る。
圧倒的多数の善意のノードは、プライマリ・ノードが機能していないか否かを判定し、それを削除して、順番が次のプライマリ・ノードを代わりにすることができる。ビュー変更は、プライマリ・ノードが故障したと十分なノードが信じたときに行われる。図2Cの一部に、ビュー変更プロトコルを示す。図2Cを参照すると、ビュー変更フェーズの下で、現在のビューがvである場合、ノードp=(v+1)mod Nは、新たなプライマリ・ノードになるためにQ個の有効なビュー変更メッセージの取得を待機し、ここでpはレプリカ/ノードのシリアル番号であり、vはビュー番号であり、Nはレプリカ/ノードの総数である。Q個のビュー変更メッセージは、マルチキャストしたビュー変更メッセージを含むことができる。前のビューはvであるので、ビュー変更メッセージはそれぞれ新たなビューv+1を含むことができる。新たなプライマリ・ノードpは、Q個のビュー変更メッセージを取得すると、新ビュー・メッセージをマルチキャストする。このメッセージは、受信した全ての有効なビュー変更メッセージに加え、プライマリ・ノードの故障のためにまだ完了していない場合がある全ての要求のセットも含む。新たなプライマリ・ノードは、最新のチェックポイントを決定し、とりわけ、機能しているノードが最新の状態に追いつくようにすることができ、これは、新たなビューにおける以前の要求(たとえば、準備済みかつコミット済みであるが未実行の要求)を再コミットすることを含むことができる。ビュー変更が行われている間、新たな要求は受諾されない。ノードは、Q個のビュー変更メッセージを含む有効な新ビュー・メッセージを受信した後、ビューv+1に入り、未完了の要求のセットを処理する。その後、通常動作プロトコルが進行し、ノードは最新の安定したチェックポイントの順序番号と、準備メッセージ内の最大の番号との間の要求をやり直すが、要求を再実行しないようにする。通常動作プロトコルとビュー変更プロトコルとの間のノードのステータスの対応する切り替えを図3Aに示す。図3Aに示すように、たとえば、バックアップ・ノードのタイムアウトにより、通常動作プロトコルから(たとえば、通常動作プロトコルの任意のフェーズ中に)、ビュー変更プロトコルへの(たとえば、ビュー変更フェーズを開始する)切り替えをトリガーすることができる。ビュー変更プロトコルを実行した後、有効な新ビュー・メッセージを取得すると、バックアップ・ノードはビュー変更プロトコルから退出し、通常動作プロトコルを再開して保留中の要求を実行することができる。有効な新メッセージは、異なるノードからのQ個のビュー変更メッセージを含むことができる。
図3Bに示すように、様々な実施形態によれば、ノードがビュー変更プロトコルから通常動作プロトコルに切り替えるための代替経路を提供することができる。いくつかの実施形態では、ビュー変更プロトコル中のノードは、Q個のエコー・メッセージを取得して、ビュー変更プロトコルを終了することができる。エコー・メッセージは、現在のビュー、現在の順序番号、および/またはダイジェストを含むことができる。エコー・メッセージに基づいて、ビュー変更プロトコル中のノードは、他のノードの大多数が通常動作中であると判定して、ビュー変更から退出することができる。さらなる詳細については、図4から図6を参照して以下で説明する。
図4に、本明細書の様々な実施形態によるビュー変更退出ステップ410のフローチャートを示す。ステップ410は、図1のシステム100の1つまたは複数の構成要素(たとえば、上記のノード0、ノード1、ノード2、...、もしくはノードiまたは同様のデバイス、あるいはそれらのノードのいずれかと、ノードAなどの1つまたは複数のさらなるデバイスとの組み合わせ)によって実施することができる。ステップ410は、1つまたは複数のブロックチェーン・ノード(たとえば、プライマリ・ノード、バックアップ・ノード)によって実施することができる。プライマリ・ノードおよびバックアップ・ノードは、PBFTモデルで定義されたものとすることができる。ステップ410は、様々なハードウェア・マシンおよび/またはソフトウェアを含むビュー変更システムまたはデバイス(たとえば、コンピュータ、サーバ)によって実施することができる。たとえば、ビュー変更退出システムまたはデバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、そのシステムまたはデバイス(たとえば、プロセッサ)にステップ410を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読記憶媒体(たとえば、1つまたは複数のメモリ)とを備えることができる。以下に提示する動作は、例示的なものとする。実装形態に応じて、これらの動作は、様々な順序でまたは並行して実行される追加のステップ、より少ないステップ、または代替のステップを含むことができる。
ステップ411において、第1のノード(たとえば、バックアップ・ノード)は、ビュー変更プロトコルに入ることができる。ステップ412において、第1のノードは、ビュー変更メッセージをマルチキャストすることができる。ビュー変更に入るために、第1のノードは通常動作プロトコルを終了し、上記のビュー変更プロトコルのビュー変更フェーズに入る。一実施形態では、第1のノードは、ビュー変更メッセージをマルチキャストすることにより、ビュー変更プロトコルに入ることができる。たとえば、バックアップ・ノードは、ビュー変更メッセージをプライマリ・ノードおよび他のバックアップ・ノードにマルチキャストすることができる。第1のノードは、プライマリ・ノードが障害があるかまたは他の原因で機能していないと判定し、ビュー変更プロトコルに従ってビュー変更メッセージのマルチキャストを開始することができる。
プライマリ・ノードおよび(N−1)個のバックアップ・ノードは、PBFTコンセンサス・システムを形成することができる。ここで、プライマリ・ノードは、本当に機能していない場合と、そうでない場合とがある。プライマリ・ノードが本当に機能していない場合、大多数のバックアップ・ノード(たとえば、Q個のバックアップ・ノード)は、それぞれビュー変更プロトコルに入り、それぞれビュー変更メッセージをマルチキャストすることができる。第1のノードは、Q個のビュー変更メッセージを取得した場合、プライマリ・ノードが機能しておらず、新たなプライマリ・ノードが選出される必要があるというコンセンサスに大多数のノードが到達したと判定することができる。ビュー変更プロトコルの残りの部分を続けることができる。しかしながら、プライマリ・ノードがまだ機能している場合、第1のノードは以下のステップに従ってビュー変更プロトコルを終了することができる。そのような場合、第1のノードは、前述の事前準備メッセージ、準備メッセージ、またはコミット・メッセージの送信および/または受信の遅延を引き起こす、誤解、不安定な接続、および/またはその他の理由によって、ビュー変更に入った場合がある。
ステップ413において、レビュー変更メッセージを受信すると、第2のノードは、自身が通常動作プロトコル中であるか、ビュー変更プロトコル中であるかを判定することができる。通常動作中の場合、ステップ414において、第2のノードはエコー・メッセージで返答することができる。エコー・メッセージは、受信したビュー変更メッセージへの応答とみなすことができる。「エコー」という語は、メッセージのタイプを限定するものではない。ビュー変更中である場合、第2のノードは、ビュー変更プロトコルに従って自身のビュー変更メッセージをマルチキャストするか、または既に自身のビュー変更メッセージをマルチキャストしている場合、何もしないことができる。
一実施形態では、エコー・メッセージは、両方とも第2のノードに認識されている現在のビューおよび現在の順序番号を含むことができる。現在のビューは、いずれのノードが、第2のノードにプライマリ・ノードとして認識されているかを示すことができる。現在の順序番号は、(1)コミット・フェーズにおいて第2のノードによってコミットされた最新の要求(たとえば、トランザクション要求)の順序番号、または(2)コミット・フェーズにおいて第2のノードによってコミットされた最新のブロックを示すブロックの高さ、を示すことができる。ブロックの高さは、ブロックチェーン内のブロックの数に基づくことができる。たとえば、あるブロックの高さは、そのブロックと創始(genesis)ブロックとの間のチェーン内のブロック数とすることができる。ブロックチェーンの最初のブロックは、ブロックの高さ0を有することができ、次のブロックはブロックの高さ1を有することができ、などとすることができる。この例はブロックの高さを表す方法を限定することを意図したものではなく、ブロックの高さは、ブロックチェーンにおけるブロックのシリアル番号を示す限り、他のタイプの表現を有することができる。任意選択により、エコー・メッセージは、最新の要求または最新のブロックのダイジェストを含むこともできる。
ステップ415において、第1のノードは、第2のノードからそれぞれエコー・メッセージを取得することができる。Q個以上の整合するエコー・メッセージを取得したことに応答して、第1のノードはビュー変更プロトコルを終了して、通常動作プロトコルに入ることができる。Q個以上のエコー・メッセージは、少なくともQ個のノードが整合する「ビュー」および「順序番号」に同意したことを意味する。「ビュー」および「順序番号」が整合することは、ノードの大多数が、要求またはブロックに関する1つまたは複数のトランザクションのコンセンサス検証に成功したために、通常動作プロトコルで通常通りに機能していることを示す。第1のノードが、整合するビューおよび順序番号を有するQ個のエコー・メッセージを取得しなかった場合、第1のノードはビュー変更プロトコルのままでいることができる。
いくつかの実施形態では、Q個以上の第2のノードに認識されている現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きい(たとえば、1だけ大きい)。これは、ノードの大多数が、第1のノードによって見逃された、要求またはブロックの1ラウンドのコンセンサス検証を完了していることを示す。したがって、少なくともQ個のエコー・メッセージを受信した第1のノードは、整合するエコー・メッセージを通じて、ノードの大多数がまだ通常動作中であることを知ることができる。
いくつかの実施形態では、第1のノードは、少なくとも現在のビューに基づいて通常動作に入ることができる。たとえば、ビュー変更から退出すると、第1のノードは、現在のビューを自身のビューとして使用して、通常動作プロトコルに入ることができる。第1のノードは、最新のブロックの情報(たとえば、ダイジェスト)を組み込むことにより、ブロックチェーンの自身のコピーをブロックチェーンの最新のコピーと同期させることもできる。したがって、第1のノードは、正しいビューと、ブロックチェーンの更新されたコピーとを使用して、通常動作プロトコルを再開することができる。さらに、第1のノードがビュー変更に入ってから通常動作を再開するのにかかる時間は予測することができる。新たなブロックが追加されるとブロックチェーンの高さが増加するので、第1のノードがビュー変更に入り、新たなブロックのコンセンサス検証を見逃してから、1つの新たなブロックがブロックチェーンに追加されるまでに、第1のノードは自身の誤解に気付くことができる。したがって、通常動作を再開するのにかかる時間は、1ラウンドのコンセンサス検証を完了するための時間よりも短くすることができる。
したがって、ビュー変更に入ったノードは、代替経路を介してビュー変更プロトコルを効率的に終了し、他の通常動作しているノードに再参加することができる。この経路は、たとえば、誤解、不安定な接続、および/またはその他の理由により、ビュー変更に入ったノードに役立つことができる。この経路は、プライマリ・ノードを変更して通常動作を再開するためにQ個のノードがビュー変更に同意する必要がある従来のビュー変更プロトコルを迂回する。したがって、通常動作の最大数のノードを確保することにより、ネットワーク・リソース全体をより効率的に利用することができる。
図5Aに、本明細書の様々な実施形態によるビュー変更方法510のフローチャートを示す。方法510は、図1のシステム100の1つまたは複数の構成要素(たとえば、上記のノード0、ノード1、ノード2、...、もしくはノードiまたは同様のデバイス、あるいはそれらのノードのいずれかと、ノードAなどの1つまたは複数のさらなるデバイスとの組み合わせ)によって実施することができる。方法510は、1つまたは複数のブロックチェーン・ノード(たとえば、PBFTシステムのバックアップ・ノード)によって実施することができる。プライマリ・ノードおよびバックアップ・ノードは、PBFTモデルで定義されたものとすることができる。方法510は、様々なハードウェア・マシンおよび/またはソフトウェアを含むビュー変更システムまたはデバイス(たとえば、コンピュータ、サーバ)によって実施することができる。たとえば、ビュー変更システムまたはデバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、そのシステムまたはデバイス(たとえば、プロセッサ)に方法510を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読記憶媒体(たとえば、1つまたは複数のメモリ)とを備えることができる。以下に提示する方法510の動作は、例示的なものとする。実装形態に応じて、方法510は、様々な順序でまたは並行して実行される追加のステップ、より少ないステップ、または代替のステップを含むことができる。方法510のさらなる詳細については、図1から図4および上記の関連する説明を参照することができる。方法510は、第1のノードによって実行することができる。
様々な実施形態において、方法510は、いくつか(N個)のノード(たとえば、PBFTコンセンサス・システムのノード)によって維持されるブロックチェーン上で実施されるコンピュータ実施ビュー変更方法とすることができる。一実施形態では、N個のノードは、N個のノードのうちの1つがプライマリ・ノードとして機能し、その他の(N−1)個のノードがバックアップ・ノードとして機能する、実用的ビザンチン障害耐性(PBFT)ネットワークを形成する。方法510は、ビュー変更プロトコル中の、N個のノードのうちの第1のノード(たとえば、バックアップ・ノード)によって実行することができる。
いくつかの実施形態では、ブロック511の前に、第1のノードはビュー変更に入っている場合がある。ビュー変更に入ると、第1のノードは、ビュー変更メッセージを他のノードにマルチキャストすることができる。
ブロック511は、N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストすることを含む。たとえば、第1のノードはバックアップ・ノードとすることができ、ビュー変更メッセージをプライマリ・ノードおよび他のバックアップ・ノードにマルチキャストすることができる。プライマリ・ノードおよびバックアップ・ノードは、PBFTコンセンサス・システムを形成することができる。ビュー変更メッセージは、第1のノードが自身の通常動作プロトコルから退出し、ビュー変更プロトコルに入っていることを示す。第1のノードが他のノードから(Q−1)個の同様のビュー変更メッセージを受信しない場合(したがって、自身のビュー変更メッセージを含む合計Q個の整合するビュー変更メッセージを取得しない場合)、従来のビュー変更プロトコルの閾値は満たされない。それにもかかわらず、以下のステップにより、第1のノードはビュー変更プロトコルを終了し、通常動作プロトコルに入ることが可能になる。
ブロック512は、N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得することであって、各エコー・メッセージは、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている整合する現在のビューと、(2)第2のノードに認識されている整合する現在の順序番号とを含み、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連し、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きく、Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Fは(N−1)/3を最も近い整数に切り捨てた値である、取得することを含む。Nは4以上の任意の整数とすることができる。いくつかの実施形態では、Nが少なくとも(3F+1)である場合、Qは(2F+1)である。最新のトランザクションに関連する現在の順序番号は、たとえば、対応する第2のノードによってコミットされた1つまたは複数の最新のトランザクションの順序番号を含むことができる。最新のブロックに関連する現在の順序番号は、たとえば、対応する第2のノードによって維持されるブロックチェーンのコピーの高さを含むことができる。前述のように、ブロックチェーンの高さは、ブロックチェーン内のブロックの数に依存し、最新のブロックの追加に伴って増加することができる。一実施形態では、第1のノードがビュー変更を終了するために、少なくともQ個のエコー・メッセージは、整合する現在のビューおよび整合する現在の順序番号を含むことができる。いくつかの実施形態では、少なくともQ個の第2のノードがビュー変更メッセージを取得したことに応答して、少なくともQ個のエコー・メッセージが、それぞれ少なくともQ個の第2のノードによって第1のノードに送信される。
いくつかの実施形態では、「トランザクション」という用語は、ブロックチェーン・システムによって実施され、ブロックチェーンに記録することができる。トランザクションは、たとえば、金融トランザクション、ブロックチェーン契約を展開するまたは呼び出すためのブロックチェーン契約トランザクション、ブロックチェーンの状態(たとえば、ワールド・ステート)を更新するトランザクションなどを含むことができる。トランザクションは金銭の交換を含む必要はない。
様々な実施形態において、少なくともQ個の第2のノードの現在のビューはvであり、第1のノードは、ビュー変更プロトコル中の場合、vより大きい第1のビューを有する。たとえば、第1のノードがビュー変更に入る前に、第1および第2のノードは全てビューvを有する場合があり、しかしその後、第1のノードは、第1のノードが機能していないと疑い、ビューv+1のビュー変更に入ったが、第2のノードはビューvのままである。
いくつかの実施形態では、現在の順序番号は、第2のノードによって維持されるブロックチェーンの第2のコピーの高さ(ブロックの高さとも呼ばれる)を含み、第1の順序番号は、第1のノードによって維持されるブロックチェーンの第1のコピーの高さを含む。一実施形態では、少なくともQ個の第2のノードに認識されている現在の順序番号は(n+1)であり、第1のノードに認識されている第1の順序番号はnである。たとえば、第1のノードがビュー変更に入る前に、第1および第2のノードは全て、ビューvにおいてブロックの高さが99の(すなわち、ブロックチェーン内に100個のブロックがある)ブロックチェーンから開始している場合がある。第1のノードがビュー変更プロトコルに入って、コンセンサス検証から抜けた後、第2のノードは、101番目のブロックに関するコンセンサスに到達して、ブロックの高さを100に増加させている。ビュー変更プロトコルで立ち往生している第1のノードに認識されていない101番目のブロックは、現在の順序番号(100)と第1の順序番号(99)との差を生じさせる場合がある。
他の実施形態では、現在の順序番号は、第2のノードによってコミットされた最新のトランザクションの順序番号を含み、第1の順序番号は、第1のノードによってコミットされた最新のトランザクションの順序番号を含む。一実施形態では、少なくともQ個の第2のノードに認識されている現在の順序番号は(n+1)であり、第1のノードに認識されている第1の順序番号はnである。たとえば、第1のノードがビュー変更に入る前に、第1および第2のノードは全て、コンセンサス検証される80個の要求(たとえば、トランザクション要求)から開始している場合がある。要求には、増加する順序番号を割り当てることができる。ビューvにおいて、第1および第2のノードは、50個の要求をコンセンサス検証している場合がある。第1のノードがビュー変更プロトコルに入って、コンセンサス検証から抜けた後、第2のノードは、51番目の要求に関するコンセンサスに到達して、次の保留中の要求の順序番号を52に増加させている。コンセンサス検証された51番目の要求は、ビュー変更プロトコルで立ち往生している第1のノードには認識されておらず、現在の順序番号(51)と第1の順序番号(50)との差を生じさせる場合がある。
いくつかの実施形態では、エコー・メッセージは、最新のブロックまたは最新のトランザクションのダイジェストをさらに含む。ダイジェスト(たとえば、ハッシュ値)は、トランザクションなどのデータにハッシュ・アルゴリズムを適用した数値結果とすることができる。一実施形態では、ダイジェストは、最新のブロックまたは最新のトランザクションのハッシュ値を含む。一例では、ダイジェストは、第2のノードにはコミットされているが、第1のノードにはコミットされていない最新のトランザクションのトランザクション・ハッシュを含む。他の例では、ダイジェストは、第2のノードにはコミットされているが第1のノードにはコミットされていない複数の最新のトランザクションの複数のトランザクション・ハッシュを含む。他の例では、ダイジェストは、第2のノードには認識されているが第1のノードには認識されていない最新のブロックのマークル・ルートを含む。他の例では、ダイジェストは、第2のノードには認識されているが第1のノードには認識されていない複数の最新のブロックの複数のマークル・ルートを含む。
いくつかの実施形態では、「ビュー」、「順序番号」、および/または「ダイジェスト」は、1つまたは複数のデジタル署名(または略して、署名)としてエコー・メッセージに含めることができる。エコー・メッセージは、両方とも第2のノードに認識されている現在のビューおよび現在の順序番号を保証するデジタル署名を含む。「署名」は、対応するメッセージを送信したエンティティからの是認(endorsement)を示す。「署名」という用語は、あらゆる形態の承認を示すものとすることができる。一実施形態では、「ビュー」「順序番号」および/または「ダイジェスト」をまず一方向ハッシュ関数に入力し、その出力ハッシュ値を対応するノードの秘密鍵で暗号化して、デジタル署名を取得することができる。暗号化は様々な方法で、たとえば、公開−秘密鍵暗号化(非対称暗号とも呼ばれる)、デジタル署名アルゴリズム(DSA:Digital Signature Algorithm)、たとえば、楕円曲線デジタル署名アルゴリズム(ECDSA:Elliptic Curve Digital Signature Algorithm)などによって実現することができる。たとえば、RSAなどの公開鍵アルゴリズムを使用して、数学的にリンクされた2つの鍵:1つの秘密鍵および1つの公開鍵を生成することができる。公開鍵暗号が、2つの相互に認証する暗号鍵に依存するので、デジタル署名は機能する。デジタル署名を生成したノードは、自身の秘密鍵を使用して、「ビュー」、「順序番号」、および/または「ダイジェスト」を暗号化することができ、そのデータを復号する唯一の方法は、署名者ノードの公開鍵を使用することである。したがって、デジタル署名は、対応するノードに認識されている「ビュー」、「順序番号」、および/または「ダイジェスト」を表すことができる。
ブロック513は、少なくともQ個のエコー・メッセージを取得したことに応答して、ビュー変更プロトコルを終了することを含む。いくつかの実施形態では、ビュー変更プロトコルを終了することは、第1のノードによって維持されるブロックチェーンの第1のコピーを、第2のノードによって維持されるブロックチェーンの第2のコピーと同期させることと、第1のノードに対して整合する現在のビューを使用することによって、ビュー変更プロトコルから退出して、通常動作プロトコルに入ることとを含む。したがって、第2のノードがビューvにあり、第1のノードがビュー(v+1)で立ち往生していた場合、第1のノードはビュー変更プロトコルを終了し、ビューvで通常動作プロトコルに入ることができる。
図5Bに、本明細書の様々な実施形態によるビュー変更方法520のフローチャートを示す。方法520は、図1のシステム100の1つまたは複数の構成要素(たとえば、上記のノード0、ノード1、ノード2、...、もしくはノードiまたは同様のデバイス、あるいはそれらのノードのいずれかと、ノードAなどの1つまたは複数のさらなるデバイスとの組み合わせ)によって実施することができる。方法520は、1つまたは複数のブロックチェーン・ノード(たとえば、PBFTシステムのプライマリ・ノードまたはバックアップ・ノード)によって実施することができる。プライマリ・ノードおよびバックアップ・ノードは、PBFTモデルで定義されたものとすることができる。方法520は、様々なハードウェア・マシンおよび/またはソフトウェアを含むビュー変更システムまたはデバイス(たとえば、コンピュータ、サーバ)によって実施することができる。たとえば、ビュー変更システムまたはデバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、そのシステムまたはデバイス(たとえば、プロセッサ)に方法520を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読記憶媒体(たとえば、1つまたは複数のメモリ)とを備えることができる。以下に提示する方法520の動作は、例示的なものとする。実装形態に応じて、方法520は、様々な順序でまたは並行して実行される追加のステップ、より少ないステップ、または代替のステップを含むことができる。方法520のさらなる詳細については、図1から図4および上記の関連する説明を参照することができる。方法520は、第2のノードによって実行することができる。
様々な実施形態において、方法520は、いくつか(N個)のノード(たとえば、PBFTコンセンサス・システムのノード)によって維持されるブロックチェーン上で実施されるコンピュータ実施ビュー変更方法とすることができる。一実施形態では、N個のノードは、N個のノードのうちの1つがプライマリ・ノードとして機能し、その他の(N−1)個のノードがバックアップ・ノードとして機能する、実用的ビザンチン障害耐性(PBFT)ネットワークを形成する。方法520は、通常動作プロトコル中の、N個のノードのうちの第2のノード(たとえば、プライマリまたはバックアップ・ノード)によって実行することができる。
ブロック521は、ビュー変更プロトコル中の第1のノードからビュー変更メッセージを取得することを含む。いくつかの実施形態では、ブロック521の前に、第1のノードはビュー変更に入っている場合がある。ビュー変更に入ると、第1のノードは、ビュー変更メッセージを他のノードにマルチキャストすることができる。このようにして、第2のノードは、そのようなビュー変更メッセージを取得することができる。
ブロック522は、第2のノードの現在のプロトコル・ステータスを判定することを含む。第2のノードは、通常動作プロトコル中、またはビュー変更プロトコル中とすることができる。
ブロック523は、現在のプロトコル・ステータスが通常動作プロトコルであると判定したことに応答して、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている現在のビューと、(2)第2のノードに認識されている現在の順序番号とを含むエコー・メッセージを第1のノードに送信することであって、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連する、送信することを含む。
様々な実施形態において、少なくともQ個の第2のノードの現在のビューはvであり、第1のノードは、ビュー変更プロトコル中の場合、vより大きい第1のビューを有する。たとえば、第1のノードがビュー変更に入る前に、第1および第2のノードは全てビューvを有する場合があり、しかしその後、第1のノードは、第1のノードが機能していないと疑い、ビューv+1のビュー変更に入ったが、第2のノードはビューvのままである。いくつかの実施形態では、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きい。順序番号の様々な例は上記で説明している。また、本明細書で説明しているように、エコー・メッセージは、最新のブロックまたは最新のトランザクションのダイジェストをさらに含むことができる。
図6Aに、様々な実施形態によるビュー変更システム610のブロック図を示す。ビュー変更システム610(たとえば、コンピュータ・システム)は、上記のノード0、ノード1、ノード2、...、もしくはノードiまたは同様のデバイス、あるいはそれらのノードのいずれかと、さらなるデバイス(たとえば、ノードA)との組み合わせの実装形態の一例とすることができる。方法510は、ビュー変更システム610によって実施することができる。ビュー変更システム610は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、そのシステムまたはデバイス(たとえば、プロセッサ)に方法510を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読記憶媒体(たとえば、1つまたは複数のメモリ)とを備えることができる。ビュー変更システム610は、命令(たとえば、ソフトウェア命令)に対応する様々なユニット/モジュールを備えることができる。
いくつかの実施形態では、ビュー変更システム610は、(第1のノードに関する)ビュー変更装置と呼ばれる場合がある。ビュー変更装置は、ブロックチェーンを維持するためのものとすることができ、いくつか(N個)のノードがブロックチェーンを維持し、N個のノードのうちの1つはプライマリ・ノードとして機能し、その他の(N−1)個のノードはバックアップ・ノードとして機能し、コンセンサス装置は、ビュー変更プロトコル中の、N個のノードのうちの第1のノードとして機能する。コンセンサス装置は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、その装置に動作を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読メモリとを備えることができる。コンセンサス装置は、命令(たとえば、ソフトウェア命令)に対応する様々なユニット/モジュールを備えることができる。コンセンサス装置は、N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストするためのマルチキャスト・モジュール611と、N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得するための取得モジュール612であって、各エコー・メッセージは、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている整合する現在のビューと、(2)第2のノードに認識されている整合する現在の順序番号とを含み、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連し、現在の順序番号は、第1のノードに認識されている第1の順序番号よりも大きく、Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Fは(N−1)/3を最も近い整数に切り捨てた値である、取得モジュール612と、少なくともQ個のエコー・メッセージを取得したことに応答して、ビュー変更プロトコルを終了するための終了モジュール613とを備えることができる。
図6Bに、様々な実施形態によるビュー変更システム620のブロック図を示す。ビュー変更システム620(たとえば、コンピュータ・システム)は、上記のノード0、ノード1、ノード2、...、もしくはノードiまたは同様のデバイス、あるいはそれらのノードのいずれかと、さらなるデバイス(たとえば、ノードA)との組み合わせの実装形態の一例とすることができる。方法520は、ビュー変更システム620によって実施することができる。ビュー変更システム620は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、そのシステムまたはデバイス(たとえば、プロセッサ)に方法520を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読記憶媒体(たとえば、1つまたは複数のメモリ)とを備えることができる。ビュー変更システム620は、命令(たとえば、ソフトウェア命令)に対応する様々なユニット/モジュールを備えることができる。
いくつかの実施形態では、ビュー変更システム620は、(第2のノードに関する)ビュー変更装置と呼ばれる場合がある。ビュー変更装置は、ブロックチェーンを維持するためのものとすることができ、いくつか(N個)のノードがブロックチェーンを維持し、N個のノードのうちの1つはプライマリ・ノードとして機能し、その他の(N−1)個のノードはバックアップ・ノードとして機能し、コンセンサス装置は、通常動作プロトコル中の、N個のノードのうちの第2のノードとして機能する。コンセンサス装置は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、その装置に動作を実行させるための、1つまたは複数のプロセッサにより実行可能な命令によって構成される、1つまたは複数の非一時的コンピュータ可読メモリとを備えることができる。コンセンサス装置は、命令(たとえば、ソフトウェア命令)に対応する様々なユニット/モジュールを備えることができる。コンセンサス装置は、ビュー変更プロトコル中の第1のノードからビュー変更メッセージを取得するための取得モジュール621と、第2のノードの現在のプロトコル・ステータスを判定するための判定モジュール622と、現在のプロトコル・ステータスが通常動作プロトコルであると判定したことに応答して、(1)N個のノードの間で指定されるプライマリ・ノードを示す第2のノードに認識されている現在のビューと、(2)第2のノードに認識されている現在の順序番号とを含むエコー・メッセージを第1のノードに送信するための送信モジュール623であって、現在の順序番号は、第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連する、送信モジュール623とを備えることができる。
本明細書に記載の技術は、1つまたは複数の専用コンピューティング・デバイスによって実装される。専用コンピューティング・デバイスは、これらの技術を実装するためのハード・ワイヤードおよび/またはプログラム・ロジックを組み込んだ、デスクトップ・コンピュータ・システム、サーバ・コンピュータ・システム、ポータブル・コンピュータ・システム、ハンドヘルド・デバイス、ネットワーキング・デバイス、または他の任意のデバイスもしくはデバイスの組み合わせとすることができる。専用コンピューティング・デバイスは、パーソナル・コンピュータ、ラップトップ、携帯電話、カメラ付き携帯電話、スマート・フォン、携帯情報端末、メディア・プレーヤー、ナビゲーション・デバイス、電子メール・デバイス、ゲーム・コンソール、タブレット・コンピュータ、ウェアラブル・デバイス、またはそれらの組み合わせとして実装することができる。コンピューティング・デバイスは、通常、オペレーティング・システム・ソフトウェアによって制御および調整される。従来のオペレーティング・システムは、実行すべきコンピュータ・プロセスを管理およびスケジュールし、メモリ管理を実行し、ファイル・システム、ネットワーキング、I/Oサービスを提供し、とりわけグラフィカル・ユーザ・インターフェース(「GUI」)などのユーザ・インターフェース機能を提供する。本明細書に記載の様々なシステム、装置、記憶媒体、モジュール、およびユニットは、専用コンピューティング・デバイス、あるいは1つまたは複数の専用コンピューティング・デバイスの1つまたは複数のコンピューティング・チップに実装することができる。いくつかの実施形態では、本明細書に記載の命令は、専用コンピューティング・デバイス上の仮想マシンに実装することができる。命令は、実行されると、専用コンピューティング・デバイスに、本明細書に記載の様々な方法を実行させることができる。仮想マシンは、ソフトウェア、ハードウェア、またはそれらの組み合わせを含むことができる。たとえば、仮想マシンは、イーサリアムでのスマート・コントラクトのためのランタイム環境を提供するイーサリアム仮想マシン(EVM:Ethereum Virtual Machine)ソフトウェアを含むことができる。
図7は、本明細書に記載の実施形態のいずれかを実装することができるコンピュータ・システム700を示すブロック図である。システム700は、本明細書に記載の方法のいずれか(たとえば、ビュー変更方法510、ビュー変更方法520)を実行することができる。システム700は、本明細書に記載のシステムのいずれか(たとえば、ビュー変更システム610、ビュー変更システム620)に実装することができる。システム700は、本明細書に記載のノードのいずれかに実装し、ブロックチェーン契約を実施するための対応するステップを実行するように構成することができる。コンピュータ・システム700は、情報を伝達するためのバス702または他の通信メカニズム、情報を処理するための、バス702で結合された1つまたは複数のハードウェア・プロセッサ704を含む。ハードウェア・プロセッサ704は、たとえば、1つまたは複数の汎用マイクロプロセッサとすることができる。
コンピュータ・システム700は、情報と、プロセッサ704によって実行可能な命令とを記憶するための、バス702に結合されたメイン・メモリ706、たとえば、ランダム・アクセス・メモリ(RAM)、キャッシュ、および/または他の動的記憶デバイスなどをさらに含む。メイン・メモリ706は、プロセッサ704によって実行可能な命令の実行中に一時変数または他の中間情報を記憶するために使用することもできる。そのような命令は、プロセッサ704がアクセスできる記憶媒体に記憶されると、コンピュータ・システム700を、それらの命令で指定された動作を実行するようにカスタマイズされた専用マシンにする。コンピュータ・システム700は、プロセッサ704用の静的情報および命令を記憶するための、バス702に結合された読み取り専用メモリ(ROM)708または他の静的記憶デバイスをさらに含む。情報および命令を記憶するためのストレージ・デバイス710、たとえば、磁気ディスク、光ディスク、またはUSBサム・ドライブ(フラッシュ・ドライブ)などが設けられ、バス702に結合される。
コンピュータ・システム700は、コンピュータ・システムと組んで、コンピュータ・システム700を専用マシンにするかまたはそうなるようにプログラムする、カスタマイズされたハード・ワイヤード・ロジック、1つまたは複数のASICまたはFPGA、ファームウェアならびに/あるいはプログラム・ロジックを使用して、本明細書に記載の技術を実装することができる。一実施形態によれば、本明細書に記載の動作、方法、および処理は、プロセッサ704が、メイン・メモリ706に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行したことに応答して、コンピュータ・システム700によって実行される。そのような命令は、ストレージ・デバイス710などの他の記憶媒体からメイン・メモリ706に読み込むことができる。メイン・メモリ706に含まれる命令のシーケンスを実行することにより、プロセッサ704は本明細書に記載の処理ステップを実行する。代替的実施形態では、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハード・ワイヤード回路を使用することができる。
メイン・メモリ706、ROM708、および/またはストレージ710は、非一時的記憶媒体を含むことができる。「非一時的媒体」という用語および類似の用語は、本明細書で使用する場合、マシンを特定の方法で動作させるデータおよび/または命令を記憶する媒体を指し、その媒体は一時的な信号を除外する。そのような非一時的媒体は、不揮発性媒体および/または揮発性媒体を含むことができる。不揮発性媒体には、たとえば、ストレージ・デバイス710などの光ディスクまたは磁気ディスクが含まれる。揮発性媒体には、メイン・メモリ706などの動的メモリが含まれる。非一時的媒体の一般的な形式には、たとえば、フロッピー(登録商標)・ディスク、フレキシブル・ディスク、ハード・ディスク、ソリッド・ステート・ドライブ、磁気テープ、またはその他の任意の磁気データ記憶媒体、CD−ROM、その他の任意の光学データ記憶媒体、穴のパターンを有する任意の物理媒体、RAM、PROM、およびEPROM、フラッシュEPROM、NVRAM、その他の任意のメモリチップまたはカートリッジ、ならびにそれらのネットワーク接続バージョンが含まれる。
コンピュータ・システム700は、バス702に結合されたネットワーク・インターフェース718をさらに含む。ネットワーク・インターフェース718は、1つまたは複数のローカル・ネットワークに接続された1つまたは複数のネットワーク・リンクに結合する双方向データ通信を提供する。たとえば、ネットワーク・インターフェース718は、サービス総合デジタル網(ISDN:integrated services digital network)カード、ケーブル・モデム、衛星モデム、または対応するタイプの電話回線へのデータ通信接続を提供するモデムとすることができる。他の例として、ネットワーク・インターフェース718は、互換性のあるLANへのデータ通信接続を提供するローカル・エリア・ネットワーク(LAN)カード(またはWANと通信するためのWANコンポーネント)とすることができる。無線リンクを実装することもできる。任意のそのような実装形態では、ネットワーク・インターフェース718は、様々なタイプの情報を表すデジタル・データ・ストリームを運ぶ電気信号、電磁信号、または光信号を送受信する。
コンピュータ・システム700は、ネットワーク、ネットワーク・リンク、およびネットワーク・インターフェース718を介して、メッセージを送信し、プログラム・コードを含むデータを受信することができる。インターネットの例では、サーバは、インターネット、ISP、ローカル・ネットワーク、およびネットワーク・インターフェース718を介して、アプリケーション・プログラムの要求されたコードを送信してもよい。
受信されたコードは、受信されたときにプロセッサ704によって実行され、および/または後で実行するためにストレージ・デバイス710もしくはその他の不揮発性記憶装置に記憶することができる。
前のセクションで説明した処理、方法、およびアルゴリズムのそれぞれは、1つまたは複数のコンピュータ・システム、あるいはコンピュータ・ハードウェアを備えるコンピュータ・プロセッサによって実行されるコード・モジュールに具現化し、それによって完全にまたは部分的に自動化することができる。処理およびアルゴリズムは、特定用途向け回路に部分的または全体的に実装することができる。
上記の様々な特徴および処理は、互いに独立して使用することができ、または様々な方法で組み合わせることができる。可能な全ての組み合わせおよび部分的組み合わせは、本明細書の範囲内に入るものとする。加えて、特定の方法または処理ブロックは、実装形態によっては省略される場合がある。本明細書に記載の方法および処理も、任意の特定の順序に限定されるものではなく、それに関連するブロックまたは状態は、適切な他の順序で実行することができる。たとえば、説明したブロックまたは状態は、具体的に開示した順序以外の順序で実行することができ、あるいは複数のブロックまたは状態を単一のブロックまたは状態に組み合わせることができる。ブロックまたは状態の例は、直列に、並列に、または他の何らかの態様で実行することができる。開示した実施形態に対して、ブロックまたは状態を追加または削除することができる。本明細書に記載のシステムおよび構成要素の例は、記載とは異なるように構成することができる。たとえば、開示した実施形態と比較して、要素を追加、削除、または再配置することができる。
本明細書に記載の方法の様々な動作は、関連する動作を実行するように(たとえば、ソフトウェアで)一時的に構成されるまたは永続的に構成される1つまたは複数のプロセッサによって少なくとも部分的に実行することができる。一時的に構成されるか永続的に構成されるかにかかわらず、そのようなプロセッサは、本明細書に記載の1つまたは複数の動作または機能を実行するように動作するプロセッサ実装エンジンを構成することができる。
同様に、本明細書に記載の方法は、ハードウェアの一例である1つまたは複数の特定のプロセッサを使用して、少なくとも部分的にプロセッサで実装することができる。たとえば、方法の動作の少なくとも一部は、1つまたは複数のプロセッサまたはプロセッサ実装エンジンによって実行することができる。そのうえ、1つまたは複数のプロセッサは、「クラウド・コンピューティング」環境で、または「ソフトウェア・アズ・ア・サービス」(SaaS)として、関連する動作の実行をサポートするように動作することもできる。たとえば、動作の少なくとも一部は、(プロセッサを含むマシンの例としての)コンピュータのグループによって実行することができ、これらの動作はネットワーク(たとえば、インターネット)と、1つまたは複数の適切なインターフェース(たとえば、アプリケーション・プログラム・インターフェース(API))とを介してアクセス可能である。
特定の動作の実行は、単一のマシン内にあるプロセッサだけでなく、いくつかのマシンに配備されたプロセッサの間で分散させることができる。いくつかの実施形態では、プロセッサまたはプロセッサ実装エンジンは、単一の地理的位置(たとえば、家庭環境、オフィス環境、またはサーバ・ファーム内)に配置することができる。他の実施形態では、プロセッサまたはプロセッサ実装エンジンは、いくつかの地理的位置にわたって分散させることができる。
本明細書全体を通して、複数のインスタンスが、単一のインスタンスとして記述した構成要素、動作、または構造を実装することができる。1つまたは複数の方法の個々の動作は別個の動作として図示および説明しているが、個々の動作のうちの1つまたは複数は同時に実行することができ、動作が図示した順序で実行される必要はない。構成において個別の構成要素として提示した構造および機能は、組み合わせられた構造または構成要素として実装することができる。同様に、単一の構成要素として提示した構造および機能は、個別の構成要素として実装することができる。これらおよび他の変形、修正、追加、および改良は、本明細書の主題の範囲内に入る。さらに、本明細書で使用する関連語(related terms)(「第1の」、「第2の」、「第3の」など)は、いかなる順序、高さ、または重要性を示すものではなく、ある要素と他の要素とを区別するために使用する。さらに、「1つの(a)」、「1つの(an)」、および「複数の(plurality)」という語は、本明細書において数量の限定を示すものではなく、言及した項目のうちの少なくとも1つの存在を示すものである。
特定の実施形態を参照して本主題の概要を説明したが、本明細書の実施形態のより広い範囲から逸脱することなく、これらの実施形態に様々な修正および変更を加えることができる。詳細な説明は限定的な意味で解釈されるべきではなく、様々な実施形態の範囲は、添付の特許請求の範囲、ならびにそのような特許請求の範囲が権利を有する均等物の全範囲によってのみ定義される。

Claims (25)

  1. いくつか(N個)のノードによって維持されるブロックチェーン上で実施されるコンピュータ実施コンセンサス方法であって、前記方法は、ビュー変更プロトコル中の、前記N個のノードのうちの第1のノードによって実行され、前記方法は、
    前記N個のノードのうちの少なくとも一部にビュー変更メッセージをマルチキャストすることと、
    前記N個のノードのうちの少なくともQ個の第2のノードからそれぞれ、少なくともQ個のエコー・メッセージを取得することであって、各エコー・メッセージは、(1)前記N個のノードの間で指定されるプライマリ・ノードを示す前記第2のノードに認識されている整合する現在のビューと、(2)前記第2のノードに認識されている整合する現在の順序番号とを含み、前記現在の順序番号は、前記第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連し、前記現在の順序番号は、前記第1のノードに認識されている第1の順序番号よりも大きく、Q(定足数)は(N+F+1)/2を最も近い整数に切り上げた値であり、Fは(N−1)/3を最も近い整数に切り捨てた値である、取得することと、
    前記少なくともQ個のエコー・メッセージを取得したことに応答して、前記ビュー変更プロトコルを終了することと
    を含む、方法。
  2. 前記少なくともQ個の第2のノードが前記ビュー変更メッセージを取得したことに応答して、前記少なくともQ個のエコー・メッセージが、それぞれ前記少なくともQ個の第2のノードによって前記第1のノードに送信される、
    請求項1に記載の方法。
  3. 前記現在の順序番号は、前記第2のノードによって維持される前記ブロックチェーンの第2のコピーの高さを含み、
    前記第1の順序番号は、前記第1のノードによって維持される前記ブロックチェーンの第1のコピーの高さを含む、
    請求項1または2に記載の方法。
  4. 前記現在の順序番号は、前記第2のノードによってコミットされた前記最新のトランザクションの順序番号を含み、
    前記第1の順序番号は、前記第1のノードによってコミットされた最新のトランザクションの順序番号を含む、
    請求項1または2に記載の方法。
  5. 前記エコー・メッセージは、両方とも前記第2のノードに認識されている前記現在のビューおよび前記現在の順序番号を保証するデジタル署名を含む、
    請求項1〜4のいずれか一項に記載の方法。
  6. 前記エコー・メッセージは、前記最新のブロックまたは前記最新のトランザクションのダイジェストをさらに含む、
    請求項1〜5のいずれか一項に記載の方法。
  7. 前記ダイジェストは、前記最新のブロックまたは前記最新のトランザクションのハッシュ値を含む、
    請求項6に記載の方法。
  8. 前記ダイジェストは、前記第2のノードには認識されているが、前記第1のノードには認識されていない前記最新のブロックのブロックのマークル・ルートを含む、
    請求項6または7に記載の方法。
  9. 前記ビュー変更プロトコルを終了することは、
    前記第1のノードによって維持される前記ブロックチェーンの第1のコピーを、第2のノードによって維持される前記ブロックチェーンの第2のコピーと同期させることと、
    前記第1のノードに対して前記整合する現在のビューを使用することによって、前記ビュー変更プロトコルから退出して、通常動作プロトコルに入ることと
    を含む、請求項1〜8のいずれか一項に記載の方法。
  10. 前記少なくともQ個の第2のノードに認識されている前記現在の順序番号は(n+1)であり、
    前記第1のノードに認識されている前記第1の順序番号はnであり、
    前記少なくともQ個の第2のノードの前記現在のビューはvであり、
    前記第1のノードは、前記ビュー変更プロトコル中の場合、vより大きい第1のビューを有する、
    請求項1〜9のいずれか一項に記載の方法。
  11. 前記N個のノードは、前記N個のノードのうちの1つが前記プライマリ・ノードとして機能し、その他の(N−1)個のノードがバックアップ・ノードとして機能する、実用的ビザンチン障害耐性(PBFT)ネットワークを形成する、
    請求項1〜10のいずれか一項に記載の方法。
  12. 1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサに結合され、請求項1〜11のいずれか一項に記載の方法を実行するための、前記1つまたは複数のプロセッサによって実行可能な命令が記憶される、1つまたは複数のコンピュータ可読メモリと
    を備える、ビュー変更システム。
  13. 請求項1〜11のいずれか一項に記載の方法を実行するための複数のモジュールを備える、ビュー変更装置。
  14. いくつか(N個)のノードによって維持されるブロックチェーン上で実施されるコンピュータ実施コンセンサス方法であって、前記方法は、通常動作プロトコル中の、前記N個のノードのうちの第2のノードによって実行され、前記方法は、
    ビュー変更プロトコル中の第1のノードからビュー変更メッセージを取得することと、
    前記第2のノードの現在のプロトコル・ステータスを判定することと、
    前記現在のプロトコル・ステータスが前記通常動作プロトコルであると判定したことに応答して、(1)前記N個のノードの間で指定されるプライマリ・ノードを示す前記第2のノードに認識されている現在のビューと、(2)前記第2のノードに認識されている現在の順序番号とを含むエコー・メッセージを前記第1のノードに送信することであって、前記現在の順序番号は、前記第2のノードによってコミットされた最新のブロックまたは最新のトランザクションに関連する、送信することと
    を含む、方法。
  15. 前記現在の順序番号は、前記第1のノードに認識されている第1の順序番号よりも大きい、
    請求項14に記載の方法。
  16. 前記現在の順序番号は、前記第2のノードによって維持される前記ブロックチェーンの第2のコピーの高さを含み、
    前記第1の順序番号は、前記第1のノードによって維持される前記ブロックチェーンの第1のコピーの高さを含む、
    請求項14または15に記載の方法。
  17. 前記現在の順序番号は、前記第2のノードによってコミットされた前記最新のトランザクションの順序番号を含み、
    前記第1の順序番号は、前記第1のノードによってコミットされた最新のトランザクションの順序番号を含む、
    請求項14または15に記載の方法。
  18. 前記エコー・メッセージは、両方とも前記第2のノードに認識されている前記現在のビューおよび前記現在の順序番号を保証するデジタル署名を含む、
    請求項14〜17のいずれか一項に記載の方法。
  19. 前記エコー・メッセージは、前記最新のブロックまたは前記最新のトランザクションのダイジェストをさらに含む、
    請求項14〜17のいずれか一項に記載の方法。
  20. 前記ダイジェストは、前記最新のブロックまたは前記最新のトランザクションのハッシュ値を含む、
    請求項19に記載の方法。
  21. 前記ダイジェストは、前記第2のノードには認識されているが、前記第1のノードには認識されていない前記最新のブロックのマークル・ルートを含む、
    請求項19または20に記載の方法。
  22. 前記第2のノードに認識されている前記現在の順序番号は(n+1)であり、
    前記第1のノードに認識されている前記第1の順序番号はnであり、
    前記第2のノードの前記現在のビューはvであり、
    前記第1のノードは、前記ビュー変更プロトコル中の場合、vより大きい第1のビューを有する、
    請求項14〜21のいずれか一項に記載の方法。
  23. 前記N個のノードは、前記N個のノードのうちの1つが前記プライマリ・ノードとして機能し、その他の(N−1)個のノードがバックアップ・ノードとして機能する、実用的ビザンチン障害耐性(PBFT)ネットワークを形成する、
    請求項14〜23のいずれか一項に記載の方法。
  24. 1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサに結合され、請求項14〜23のいずれか一項に記載の方法を実行するための、前記1つまたは複数のプロセッサによって実行可能な命令が記憶される、1つまたは複数のコンピュータ可読メモリと
    を備える、ビュー変更システム。
  25. 請求項14〜23のいずれか一項に記載の方法を実行するための複数のモジュールを備える、ビュー変更装置。
JP2019562589A 2019-03-18 2019-03-18 ビュー変更プロトコルを終了するためのシステムおよび方法 Active JP6923674B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/078492 WO2019101242A2 (en) 2019-03-18 2019-03-18 System and method for ending view change protocol

Publications (2)

Publication Number Publication Date
JP2020519959A true JP2020519959A (ja) 2020-07-02
JP6923674B2 JP6923674B2 (ja) 2021-08-25

Family

ID=66631238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019562589A Active JP6923674B2 (ja) 2019-03-18 2019-03-18 ビュー変更プロトコルを終了するためのシステムおよび方法

Country Status (10)

Country Link
US (3) US11263067B2 (ja)
EP (1) EP3596888B1 (ja)
JP (1) JP6923674B2 (ja)
KR (1) KR102170347B1 (ja)
CN (1) CN110785966B (ja)
AU (1) AU2019203862B2 (ja)
CA (1) CA3057395A1 (ja)
SG (1) SG11201908887XA (ja)
TW (1) TWI717135B (ja)
WO (1) WO2019101242A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102170347B1 (ko) 2019-03-18 2020-10-28 알리바바 그룹 홀딩 리미티드 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
EP3889780A1 (en) * 2019-03-18 2021-10-06 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
US10778452B2 (en) * 2019-06-03 2020-09-15 Alibaba Group Holding Limited Blockchain ledger authentication
US11513923B2 (en) * 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
KR102460432B1 (ko) * 2020-06-30 2022-10-27 주식회사 트러스트디비 Rdbms 기반의 분산원장 관리 시스템 및 방법
CN111526165B (zh) * 2020-07-03 2020-10-09 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
CN111526218B (zh) * 2020-07-03 2020-09-22 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
CN111526216B (zh) * 2020-07-03 2020-09-22 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
KR102652737B1 (ko) * 2021-09-29 2024-04-01 한양대학교 산학협력단 블록체인 네트워크를 위한 효율적인 듀얼모드 합의 프로토콜
CN117202183B (zh) * 2023-09-13 2024-03-12 北京航空航天大学 一种基于同步拜占庭容错的轻量级5g设备群组认证方法
CN116915796B (zh) * 2023-09-14 2023-12-12 杭州趣链科技有限公司 集群视图分叉后的自主恢复方法、装置以及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107819749A (zh) * 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
JP2018064142A (ja) * 2016-10-11 2018-04-19 富士通株式会社 エッジサーバ,その暗号化通信制御方法,及び端末
US20180157558A1 (en) * 2016-10-04 2018-06-07 Nec Europe Ltd. Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
WO2018161901A1 (zh) * 2017-03-10 2018-09-13 阿里巴巴集团控股有限公司 一种共识方法及装置
WO2018177264A1 (zh) * 2017-03-30 2018-10-04 腾讯科技(深圳)有限公司 分布式系统、消息处理方法、节点、客户端及存储介质
JP2019012415A (ja) * 2017-06-30 2019-01-24 株式会社bitFlyer ネットワークにおける合意形成方法及び当該ネットワークを構成するノード

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671821B1 (en) 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
US8549142B2 (en) 2011-03-28 2013-10-01 Siemens Corporation Replicated state machine utilizing view change protocol resilient to performance attacks
WO2017036546A1 (en) 2015-09-04 2017-03-09 Nec Europe Ltd. Method for storing an object on a plurality of storage nodes
US10529042B2 (en) 2016-04-18 2020-01-07 Rs Ltd. System and method for managing transactions in dynamic digital documents
US10204341B2 (en) 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US10713731B2 (en) 2016-07-22 2020-07-14 Nec Corporation Method for secure ledger distribution and computer system using secure distributed ledger technology
US10540652B2 (en) 2016-11-18 2020-01-21 Intel Corporation Technology for secure partitioning and updating of a distributed digital ledger
EP3394756B1 (en) * 2016-11-25 2024-01-03 NEC Corporation Method and system for byzantine fault - tolerance replicating of data
US10523421B2 (en) 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
US10586210B2 (en) 2016-11-30 2020-03-10 International Business Machines Corporation Blockchain checkpoints and certified checkpoints
US20180158034A1 (en) 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
CN106529951A (zh) * 2016-12-30 2017-03-22 杭州云象网络技术有限公司 一种联盟链网络下采用异步方式的节点共识验证方法
US11954697B2 (en) 2017-02-27 2024-04-09 Ncr Corporation Blockchain consumer ledger
US20180267539A1 (en) 2017-03-17 2018-09-20 Jeanne Louise Shih Distributive networks of groups of moveable autonomous devices
WO2018170504A1 (en) 2017-03-17 2018-09-20 Labyrinth Research Llc Unified control of privacy-impacting devices
CN107360206B (zh) 2017-03-29 2020-03-27 创新先进技术有限公司 一种区块链共识方法、设备及系统
CN107040594B (zh) * 2017-04-12 2020-04-10 山大地纬软件股份有限公司 基于pbft的许可区块链节点准入的方法及装置
US20180308091A1 (en) 2017-04-21 2018-10-25 Vmware, Inc. Fairness preserving byzantine agreements
US10896169B2 (en) 2017-05-12 2021-01-19 International Business Machines Corporation Distributed system, computer program product and method
EP3632037A4 (en) 2017-05-22 2020-04-08 Visa International Service Association IMPROVED VERIFICATION SPEED NETWORK COMPRISING INVIOLABLE DATA
US20190012662A1 (en) 2017-07-07 2019-01-10 Symbiont.Io, Inc. Systems, methods, and devices for reducing and/or eliminating data leakage in electronic ledger technologies for trustless order matching
US10984134B2 (en) * 2017-07-14 2021-04-20 Microsoft Technology Licensing, Llc Blockchain system for leveraging member nodes to achieve consensus
CN112804349B (zh) * 2017-07-14 2023-07-04 创新先进技术有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
US10567359B2 (en) 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
EP3439264B1 (en) 2017-08-01 2021-06-02 Panasonic Intellectual Property Corporation of America Management system, vehicle, and information processing method
US20190058709A1 (en) 2017-08-16 2019-02-21 Telefonaktiebolaget Lm Ericsson (Publ) Tenant management method and system in a cloud computing environment
CN107579848B (zh) 2017-08-30 2020-08-25 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
US10672211B2 (en) * 2017-08-31 2020-06-02 BinBox, Inc. Secure storage systems and methods
CN108108967B (zh) 2017-12-29 2020-10-16 山大地纬软件股份有限公司 面向复杂数字资产的多阶段pbft共识系统及方法
US20190251199A1 (en) 2018-02-14 2019-08-15 Ivan Klianev Transactions Across Blockchain Networks
CN109039748B (zh) * 2018-08-10 2021-09-03 上交所技术有限责任公司 一种pbft协议动态增删节点的方法
CN109194493B (zh) * 2018-08-13 2020-11-13 北京邮电大学 一种信息管理系统、方法及装置
RU2724181C1 (ru) 2018-11-07 2020-06-22 Алибаба Груп Холдинг Лимитед Упрощение консенсуса в цепочках блоков по принципу практичной отказоустойчивости на основе византийского соглашения и синхронизации узлов
US20200162266A1 (en) 2018-11-16 2020-05-21 Adobe Inc. Facilitating analytic services for provenance of digital documents
US10938750B2 (en) 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
KR102170347B1 (ko) 2019-03-18 2020-10-28 알리바바 그룹 홀딩 리미티드 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
CN110870288B (zh) 2019-03-18 2022-05-27 创新先进技术有限公司 共识系统停机时间恢复
EP3889780A1 (en) 2019-03-18 2021-10-06 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
EP3701701A4 (en) 2019-06-05 2020-12-30 Alibaba Group Holding Limited CONSENSUS SYSTEM AND PROCESS
US10944624B2 (en) 2019-06-28 2021-03-09 Advanced New Technologies Co., Ltd. Changing a master node in a blockchain system
CN110730204B (zh) 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统
CN110727731B (zh) 2019-09-05 2021-12-21 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180157558A1 (en) * 2016-10-04 2018-06-07 Nec Europe Ltd. Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
JP2018064142A (ja) * 2016-10-11 2018-04-19 富士通株式会社 エッジサーバ,その暗号化通信制御方法,及び端末
WO2018161901A1 (zh) * 2017-03-10 2018-09-13 阿里巴巴集团控股有限公司 一种共识方法及装置
WO2018177264A1 (zh) * 2017-03-30 2018-10-04 腾讯科技(深圳)有限公司 分布式系统、消息处理方法、节点、客户端及存储介质
JP2019012415A (ja) * 2017-06-30 2019-01-24 株式会社bitFlyer ネットワークにおける合意形成方法及び当該ネットワークを構成するノード
CN107819749A (zh) * 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法

Also Published As

Publication number Publication date
TWI717135B (zh) 2021-01-21
CN110785966B (zh) 2022-08-26
SG11201908887XA (en) 2019-10-30
EP3596888B1 (en) 2022-08-03
CN110785966A (zh) 2020-02-11
EP3596888A2 (en) 2020-01-22
US20200310901A1 (en) 2020-10-01
CA3057395A1 (en) 2019-05-31
US20200110648A1 (en) 2020-04-09
US20200142765A1 (en) 2020-05-07
KR102170347B1 (ko) 2020-10-28
US11263067B2 (en) 2022-03-01
TW202037116A (zh) 2020-10-01
JP6923674B2 (ja) 2021-08-25
US10877829B2 (en) 2020-12-29
US10725843B2 (en) 2020-07-28
WO2019101242A2 (en) 2019-05-31
WO2019101242A3 (en) 2019-12-26
AU2019203862B2 (en) 2020-07-09
KR20200112636A (ko) 2020-10-05
EP3596888A4 (en) 2020-05-13

Similar Documents

Publication Publication Date Title
JP6882527B2 (ja) ビュー変更プロトコルを終了するためのシステムおよび方法
JP6923674B2 (ja) ビュー変更プロトコルを終了するためのシステムおよび方法
US10671599B2 (en) Consensus system and method
EP3607733B1 (en) Consensus system downtime recovery
JP6731123B1 (ja) 合意システムのダウンタイムの回復
US20200127945A1 (en) Consensus system downtime recovery
AU2019101575A4 (en) System and method for ending view change protocol
AU2019101610A4 (en) Consensus system downtime recovery

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201029

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210317

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210629

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210729

R150 Certificate of patent or registration of utility model

Ref document number: 6923674

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150