(57)【要約】  トランザクションがブロックに整理されるトランザクションシステムにおいて、前のブロックのシーケンスに関連して、エンティティが有効なトランザクションの新たなブロックを構築するために、エンティティに前のブロックから数量Ｑを求めさせ、Ｑとエンティティとに一意に関連付けられているストリングＳを計算するためにエンティティに秘密鍵を使用させ、エンティティに、Ｑから、Ｓ自体、Ｓの関数および／またはＳのハッシュ値である数量Ｔを計算させ、Ｔが所与の性質を有しているどうかをエンティティに判定させ、Ｔが所与の性質を有している場合には、エンティティに、新たなブロックに電子署名させて、Ｓおよび電子署名済みバージョンの新たなブロックを利用できるようにさせる。秘密鍵は、エンティティの公開鍵に対応する秘密署名鍵であってもよい。Ｓは、エンティティによるＱの電子署名であってもよい。
2019519137.tif 000002
【特許請求の範囲】
【請求項１】
トランザクションがブロックに整理されるトランザクションシステムにおいて、エンティティが、前のブロックのシーケンスＢ０，Ｂ１，．．．，Ｂｒ１に関連して、有効なトランザクションの新たなブロックＢｒを構築するための方法であって、
前記エンティティに、前記前のブロックから数量Ｑを求めさせることと、
Ｑと前記エンティティとに一意に関連付けられているストリングＳを計算するために前記エンティティに秘密鍵を使用させることと、
前記エンティティに、Ｓから、Ｓ自体、Ｓの関数およびＳのハッシュ値のうちの少なくとも１つである数量Ｔを計算させることと、
Ｔが所与の性質を有しているかどうかを前記エンティティに判定させることと、
Ｔが前記所与の性質を有している場合には、前記エンティティにＢｒに電子署名させて、Ｓおよび電子署名済みバージョンのＢｒを利用できるようにさせることと、
を含む、方法。
【請求項２】
前記秘密鍵は、前記エンティティの公開鍵に対応する秘密署名鍵であり、Ｓは、前記エンティティによるＱの電子署名である、請求項１に記載の方法。
【請求項３】
Ｔは、数であり、所与の数ｐ未満である場合に前記性質を満たす、請求項１に記載の方法。
【請求項４】
Ｓは、ＢｒからＳを推論可能にすることによって利用できるようにされる、請求項２に記載の方法。
【請求項５】
各ユーザは前記トランザクションシステムに残高を有し、各ユーザの前記残高に応じて各ユーザについてのｐが変動する、請求項２に記載の方法。
【請求項６】
トランザクションがブロックに整理されて、ブロックが電子署名の集合によって承認されるトランザクションシステムにおいて、前のブロックのシーケンスをＢ０，．．．，Ｂｒ−１として、エンティティがトランザクションの新たなブロックＢｒを承認する方法であって、
前記エンティティに前記前のブロックから数量Ｑを求めさせることと、
前記エンティティにＱの電子署名Ｓを計算させることと、
前記エンティティに、Ｓから、Ｓ自体、Ｓの関数およびＳのハッシュ値のうちの少なくとも１つである数量Ｔを計算させることと、
Ｔが所与の性質を有しているかどうかを前記エンティティに判定させることと、
Ｔが前記所与の性質を有している場合には、前記エンティティに、他者がＳを利用できるようにさせることと、
を含む、方法。
【請求項７】
Ｔは、数のバイナリ展開であり、所定の閾値ｐ未満である場合に前記所与の性質を満たし、前記エンティティは、Ｓも利用できるようにする、請求項６に記載の方法。
【請求項８】
前記エンティティは前記トランザクションシステムに残高を有し、ｐは前記エンティティの残高に応じて変動する、請求項６に記載の方法。
【請求項９】
前記エンティティは少なくとも１つの他のエンティティの授権代理人として行為する、請求項８に記載の方法。
【請求項１０】
ｐは、前記エンティティの前記残高、および前記エンティティの前記残高と前記他のエンティティの残高との組み合わせのうちの少なくとも１つに依存する、請求項９に記載の方法。
【請求項１１】
前記他のユーザは前記ユーザに電子署名の権限を与える、請求項９に記載の方法。
【請求項１２】
前記エンティティは、Ｂｒがエンティティの所与の集合によって実行されたビザンチン合意プロトコルの出力である場合に限り、Ｂｒに電子署名する、請求項６に記載の方法。
【請求項１３】
前記エンティティのうちの特定の１つの電子署名が、前記前のブロックによって求められた、所与の性質を満たす数量を有する場合、前記エンティティのうちの前記特定の１つが前記エンティティの所与の集合に属す、請求項１２に記載の方法。
【請求項１４】
生成されて電子署名されたブロックのシーケンスＢ０，．．．，Ｂｒ−１にトランザクションが整理され、各ブロックＢｒが、保護されるべき何らかの情報ＩＮＦＯｒを含むとともに保護情報Ｓｒを含むトランザクションシステムにおいて、ブロックの内容に対して、検出不能な改変がなされないようにする方法であって、前記方法は、
新たなブロックＢｉが生成される度に、バイナリツリーのリーフｉにＢｉの情報ＩＮＦＯｉを挿入することと、
マークル木Ｔｉを得るために前記バイナリツリーをマークル化することと、
Ｔｉのルートの内容ＲｉおよびＴｉの前記リーフｉの内容の認証経路を含むために、ブロックＢｉの前記保護情報Ｓｉを判定することと、
を含む、方法。
【請求項１５】
直前のブロックＢｉ１のＳｉ１の保護情報は格納され、前記保護情報Ｓｉは、所定のシーケンスで、Ｓｉ１の前記値、ＩＮＦＯｉの前記ハッシュおよび所与の値のうちの少なくとも１つを含む集合から値をハッシュ化することによって得る、請求項１４に記載の方法。
【請求項１６】
第１のエンティティは、ブロックＢｚの前記保護情報Ｓｚを有する第２のエンティティに前記マークル木ＴｚでＩＮＦＯｉの前記認証経路を受信させることによって、ブロックＢｚの直前の前記ブロックＢｒの前記情報ＩＮＦＯｒが真正であることを前記第２のエンティティに対して証明する、請求項１５に記載の方法。
【請求項１７】
ユーザが残高を有し、電子署名された支払を介して互いにマネーを移転し、ユーザの初期集合の残高が既知である支払システムにおいて、第１番目のユーザ支払セットが第１番目の電子署名済みブロックＢ１に収集され、第２番目のユーザ支払セットが第２番目の電子署名済みブロックＢ２に収集されて、Ｂ１の後に利用できるようになる、等の場合、エンティティＥが、ユーザｉが第ｒ番目のブロックＢｒの時点ですべての支払を行いかつ受領した後で前記ユーザｉが利用できる残高ａｉに関する検証済み情報を提供する方法であって、前記方法は、
前記ブロックのシーケンスＢ０，．．．，Ｂｒ−１に明記される情報から推論可能な情報から、すべてのユーザｘについて金額ａｘを計算することと、
利用できるようにされているｒ番目のブロックＢｒの時点での前記システム内のユーザの数ｎを計算することと、
前記ユーザｘを所与の順番に並べることと、
各ユーザｘについて、ｘが前記所与の順番の前記ｉ番目のユーザである場合、少なくともｎ個のリーフを有するバイナリツリーＴのリーフｉにａｘを格納し、前記木Ｔのマークル値を判定して、Ｔのルートで格納される値Ｒを計算し、Ｒを認証する電子署名Ｓを生成し、リーフｉとＴの前記ルートとの間の経路のノードの兄弟であるすべてのノードの内容を提供してＴの任意のリーフｉの内容の証明としてＳを利用できるようにすることと、
を含む、方法。
【請求項１８】
ユーザが残高を有し、電子署名された支払を介して互いにマネーを移転し、ユーザの初期集合の残高が既知である支払システムにおいて、第１番目のユーザ支払セットが第１番目の電子署名済みブロックＢ１に収集され、第２番目のユーザ支払セットが第２番目の電子署名済みブロックＢ２に収集されて、Ｂ１の後に利用できるようになる、等の場合、エンティティの集合Ｅが、ユーザｉが第ｒ番目のブロックＢｒの時点ですべての支払を行いかつ受領した後で前記ユーザｉが利用できる前記残高ａｉを検証することを可能にする情報を提供する方法であって、前記方法は、
前記最初のｒ個のブロックの支払後の各ユーザｉの前記残高を判定することと、
各ユーザの前記残高がＴｒの少なくとも１つのノードの保護されるべき値である、マークル平衡探索木Ｔｒを生成することと、
前記エンティティの集合の各メンバーに、Ｔｒの前記ルートの前記保護値ｈｖεを含む情報の電子署名を生成させることと、
ｈｖεの前記電子署名を提供して前記最初のｒ個の支払後の前記ユーザのうちの少なくとも１名の前記残高を証明することと、
を含む、方法。
【請求項１９】
前記エンティティの集合は、１つのエンティティから構成される、請求項１８に記載の方法。
【請求項２０】
前記エンティティの集合は、その電子署名の値に基づいて選択される、請求項１８に記載の方法。
【請求項２１】
ユーザが残高を有し、電子署名された支払を介して互いにマネーを移転し、ユーザの初期集合の残高が既知である支払システムにおいて、第１番目のユーザ支払セットが第１番目の電子署名済みブロックＢ１に収集され、第２番目のユーザ支払セットが第２番目の電子署名済みブロックＢ２に収集されて、Ｂ１の後に利用できるようになる、等の場合、エンティティＥが、ユーザｉが第ｒ番目のブロックＢｒの時点ですべての支払を行いかつ受領した後に前記ユーザｉが利用できる前記残高ａｉを証明する方法であって、前記方法は、
各ユーザの前記残高がＴｒの少なくとも１つのノードの情報値であるマークル平衡探索木Ｔｒの前記ルートの前記保護情報ｈｖεについて、エンティティの集合のメンバーの電子署名を取得することと、
前記ユーザｉについて、認証経路、およびＴｒで探索するために所与の検索アルゴリズムを処理するすべてのノードの前記内容を計算することと、
別のエンティティがｉの前記残高を検証することを可能にするために、前記認証経路と内容および前記電子署名を提供することと、
を含む、方法。
【請求項２２】
非一時的コンピュータ可読媒体に提供され、前述の請求項１乃至２１のいずれか１項に記載の方法を実施する実行可能コードを含む、コンピュータソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１６年５月４日に出願された「ＡＬＧＯＲＡＮＤ：Ａ  ＶＥＲＹ  ＥＦＦＩＣＩＥＮＴ  ＭＯＮＥＹ  ＰＬＡＴＦＯＲＭ（アルゴランド：非常に効率的なマネープラットフォ−ム）」と題する米国仮特許出願第６２／３３１，６５４号、２０１６年５月９日に出願された「ＡＬＧＯＲＡＮＤ：Ａ  ＶＥＲＹ  ＥＦＦＩＣＩＥＮＴ  ＭＯＮＥＹ  ＰＬＡＴＦＯＲＭ（アルゴランド：非常に効率的なマネープラットフォーム）」と題する米国仮特許出願第６２／３３３，３４０号、２０１６年５月３１日に出願された「ＡＬＧＯＲＡＮＤ：ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＢＬＯＣＫ  ＣＨＡＩＮ（アルゴランド：効率的なブロックチェーン）」と題する米国仮特許出願第６２／３４３，３６９号、２０１６年６月２日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＢＬＯＣＫ  ＣＨＡＩＮ（アルゴランド  効率的なブロックチェーン）」と題する米国仮特許出願第６２／３４４，６６７号、２０１６年６月７日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＢＬＯＣＫ  ＣＨＡＩＮ（アルゴランド  効率的なブロックチェーン）」と題する米国仮特許出願第６２／３４６，７７５号、２０１６年６月１６日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＡＮＤ  ＤＥＭＯＣＲＡＴＩＣ  ＬＥＤＧＥＲ（アルゴランド  効率的かつ民主的な台帳）」と題する米国仮特許出願第６２／３５１，０１１号、２０１６年６月２２日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＡＮＤ  ＤＥＭＯＣＲＡＴＩＣ  ＬＥＤＧＥＲ（アルゴランド  効率的かつ民主的な台帳）」と題する米国仮特許出願第６２／３５３，４８２号、２０１６年６月２４日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＡＮＤ  ＤＥＭＯＣＲＡＴＩＣ  ＬＥＤＧＥＲ（アルゴランド  効率的かつ民主的な台帳）」と題する米国仮特許出願第６２／３５４，１９５号、２０１６年７月１９日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＡＮＤ  ＤＥＭＯＣＲＡＴＩＣ  ＬＥＤＧＥＲ（アルゴランド  効率的かつ民主的な台帳）」と題する米国仮特許出願第６２／３６３，９７０号、２０１６年８月１日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＡＮＤ  ＤＥＭＯＣＲＡＴＩＣ  ＬＥＤＧＥＲ（アルゴランド  効率的かつ民主的な台帳）」と題する米国仮特許出願第６２／３６９，４４７号、２０１６年８月２４日に出願された「ＡＬＧＯＲＡＮＤ  ＴＨＥ  ＥＦＦＩＣＩＥＮＴ  ＰＵＢＬＩＣ  ＬＥＤＧＥＲ（アルゴランド  効率的な公開台帳）」と題する米国仮特許出願第６２／３７８，７５３号、２０１６年９月２日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／３８３，２９９号、２０１６年９月１３日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／３９４，０９１号、２０１６年９月２７日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４００，３６１号、２０１６年１０月３日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４０３，４０３号、２０１６年１０月２０日に出願された「��ＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４１０，７２１号、２０１６年１１月３日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４１６，９５９号、２０１６年１１月１６日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４２２，８８３号、２０１７年２月６日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４５５，４４４号、２０１７年２月１４日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４５８，７４６号、および、２０１７年２月１６日に出願された「ＡＬＧＯＲＡＮＤ（アルゴランド）」と題する米国仮特許出願第６２／４５９，６５２号に対する優先権を主張し、同出願を参照によりすべて本明細書に組み込む。
【０００２】
本出願は、電子トランザクションの分野に関し、より具体的には、トランザクションブロックのシーケンスの内容および電子支払の検証を保護する分散型公開台帳の分野に関する。
【背景技術】
【０００３】
発明の背景
公開台帳とは、誰もが読んだり増やしたりすることのできる、改ざん防止データのシーケンスである。共有公開台帳は、現代社会の活動のあり方に革命的な変化を起こしそうである。これは、支払、資産の移転および権利化等のあらゆる種類の従来の取引を、それが発生した正確な順番で保護することができ、また、暗号通貨やスマートコントラクト等の全く新しい取引を可能にする。不正を抑え、仲介機関をなくし、信頼の新たな枠組みの先駆けとなることができる。支払システムおよび暗号通貨を構築するために公開台帳を使用することは、特に重要かつ魅力的である。
【０００４】
ビットコイン（Ｂｉｔｃｏｉｎ）等の以前の分散型システムでは、ユーザは、電子署名スキームの公開鍵を有する（また、対応する秘密鍵を知っている）。各鍵を人とみなして、それをユーザと考えると便利である。実際、このシステムの公開鍵は知られているが、その鍵の背後にいるユーザは直接知られていないため、ある程度のプライバシーがユーザに提供される。マネーは各公開鍵に直接関連付けられている。それまでのブロックのシーケンスについて推論することのできる各時点で、各公開鍵は所与の金額のマネーを所有している。ある公開鍵（「支払人」）から別の公開鍵（「受取人」）への支払には、支払人によって電子署名がなされる。同様に、すべてのトランザクションに電子署名がなされる。さらに、有効にするためには、支払は、その時点で支払人が所有するマネーを超えない金額のマネーを移転しなければならない。支払（および、より一般的には、トランザクション）はブロックに整理される。ブロックは、その支払（およびトランザクション）のすべてが集合的に有効であれば有効である。すなわち、ある所与のブロックのいずれかの支払人が支払うマネーの総額は、その時点で当該支払人が利用できるマネーの金額を超えない。ビットコインは非許可型システムである。すなわち、新たなユーザが、自由にシステムに参加することができる。新たなユーザは、（有効な）ブロックで支払の受取人として出現するとき、システムに参加する。したがって、ビットコインでは、ユーザは、複数の鍵を所有することによって、ユーザが享受するいかなるプライバシーを強化してもよく、その鍵を、異なるタイプの支払に使用してもよい。非許可型システムでは、ユーザは、所有している鍵から新たな鍵にマネーをいくらか移転することによって、自分の鍵の数を簡単に増やすことができる。非許可性は重要な性質である。非許可型システムは許可型システムとして運用することもできるが、その逆は必ずしも真ではない。許可型システムでは、新たなユーザは自動的に参加することはできず、承認を受けなければならない。（許可型システムの特殊なケースは、ユーザの集合が固定されているものである。）非許可型システムは、より応用可能で現実的であるが、同時に課題も多い。ビットコインおよび同様な分散型システムでは、ユーザは、メッセージを伝播することによって（つまり、「うわさ話をする」ことによって）通信する。メッセージは、ランダムに選ばれた少数の「隣人」に送られ、その各人が、さらに、そのメッセージを、少数のランダムな隣人に送る、等である。ループを避けるために、一人が同じメッセージを２度送ることはない。分散型（または共有）台帳は、それまでに発生した（有効な）トランザクションのブロックのシーケンスからなる。通例、第１番目のブロック、すなわちジェネシスブロックは、システムの仕様の一部であることによって、共通知識であることが想定されている。共有台帳は、新たなブロックが「生成される」方法が異なる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、現在実施されているように、公開台帳はその膨大な可能性を実現していない。集中型公開台帳は、すべての信頼を、所与の鍵が行う支払の公開を任意に拒否することができる単一のエンティティに置いており、サイバー攻撃に対して非常に脆弱である。実際、単一の中央集権機関が危険にさらされれば、システム全体も同様となる。ビットコイン等の非集中型システムは、無駄な計算や他の価値あるリソースを作動させるのが非常に高価で、新たなエンティティ（マイナー（採掘者））の手に権力を集中させ、かなりの曖昧さ（フォーク）を受け、レイテンシが長くスループットが小さい。他の非集中型の実施態様は、許可型であるか、もしくは不正を働くユーザを罰する能力を呈するか、またはその両方であり、および／または、ユーザの何らかの部分集合が十分に長い期間にわたってサイバー攻撃を受け付けないことを確信している。
【０００６】
このように、中央集権機関に頼る必要なく、公知の非集中型アプローチの非効率性および危険な状態に悩まされない公開台帳および電子マネーシステムを提供することが望ましい。
【０００７】
発明の概要
本明細書に説明されるシステムによると、トランザクションがブロックに整理されるトランザクションシステムにおいて、エンティティは、前のブロックＢ０，．．．，Ｂｒ−１のシーケンスに関連して、有効なトランザクションの新たなブロックＢｒを構築するために、エンティティに前のブロックから数量Ｑを求めさせ、Ｑとエンティティとに一意に関連付けられているストリングＳを計算するためにエンティティに秘密鍵を使用させ、エンティティに、Ｓから、Ｓ自体、Ｓの関数およびＳのハッシュ値のうちの少なくとも１つである数量Ｔを計算させ、Ｔが所与の性質を有しているかどうかをエンティティに判断させ、Ｔが所与の性質を有している場合には、エンティティに、Ｂｒに電子署名させて、Ｓおよび電子署名済みバージョンのＢｒを利用できるようにさせる。秘密鍵は、エンティティの公開鍵に対応する秘密署名鍵であってもよく、Ｓは、エンティティによるＱの電子署名であってもよい。Ｔは、数のバイナリ展開であってもよく、所与の数ｐ未満である場合に当該性質を満たすことができる。Ｓは、ＢｒからＳを推論できるようにすることによって利用できるようにされてもよい。各ユーザは、トランザクションシステムに残高を有することがあり、各ユーザの残高に応じて各ユーザについてのｐが変動することがある。
【０００８】
さらに本明細書に説明されるシステムによると、トランザクションがブロックに整理されて、ブロックが電子署名の集合によって承認されるトランザクションシステムにおいて、エンティティは、新たなトランザクションのブロックＢｒの承認を、前のブロックのシーケンスをＢ０，．．．，Ｂｒ−１とすると、エンティティに前のブロックから数量Ｑを求めさせて、エンティティにＱの電子署名Ｓを計算させ、エンティティに、Ｓから、Ｓ自体、Ｓの関数およびＳのハッシュ値のうちの少なくとも１つである数量Ｔを計算させ、Ｔが所与の性質を有しているかどうかをエンティティに判断させ、Ｔが所与の性質を有している場合には、エンティティに、他者がＳを利用できるようにさせることによって行う。Ｔは、数のバイナリ展開であってもよく、所定の閾値ｐ未満である場合に所与の性質を満たし、エンティティは、Ｓも利用できるようにすることができる。エンティティはトランザクションシステムに残高を有することがあり、ｐはエンティティの残高に応じて変動してもよい。エンティティは、少なくとも１つの他のエンティティの授権代理人として行為してもよい。ｐの値は、エンティティの残高および／またはエンティティの残高と他のエンティティの残高との組み合わせに依存してもよい。他のユーザは、ユーザに電子署名の権限を与える。エンティティは、Ｂｒがエンティティの所与の集合によって実行されたビザンチン合意プロトコルの出力である場合に限り、Ｂｒに電子署名することができる。エンティティのうちの特定の１つの電子署名が、前のブロックによって求められた、所与の性質を満たす数量を有する場合、エンティティのうちのその特定の１つは、エンティティの所与の集合に属すことができる。
【０００９】
さらに本明細書に説明されるシステムによると、生成されて電子署名されたブロックのシーケンスＢ０，．．．，Ｂｒ−１にトランザクションが整理され、各ブロックＢｒが、保護されるべき何らかの情報ＩＮＦＯｒを含むとともに保護情報Ｓｒを含むトランザクションシステムにおいて、新たなブロックＢｉが生成される度に、バイナリツリーのリーフｉにＢｉの情報ＩＮＦＯｉを挿入することと、マークル木Ｔｉを得るために前記バイナリツリーをマークル化することと、Ｔｉのルートの内容ＲｉおよびＴｉのリーフｉの内容の認証経路を含むために、ブロックＢｉの前記保護情報Ｓｉを判定することと、によって、ブロックの内容に対して、検出不能な改変がなされないようにする。直前のブロックＢｉ１のＳｉ１の保護情報は格納されてもよく、保護情報Ｓｉは、所定のシーケンスで、Ｓｉ１の値、ＩＮＦＯｉのハッシュおよび所与の値のうちの少なくとも１つを含む集合から値をハッシュ化することによって得ることができる。第１のエンティティは、ブロックＢｚの保護情報Ｓｚを有する第２のエンティティにマークル木ＴｚでＩＮＦＯｉの認証経路を受信させることによって、ブロックＢｚの直前のブロックＢｒの情報ＩＮＦＯｒが真正であることを前記第２のエンティティに対して証明することができる。
【００１０】
さらに本明細書で説明されるシステムによると、ユーザが残高を有し、電子署名された支払を介して互いにマネーを移転し、ユーザの初期集合の残高が既知である支払システムにおいて、第１番目のユーザ支払セットが第１番目の電子署名済みブロックＢ１に収集され、第２番目のユーザ支払セットが第２番目の電子署名済みブロックＢ２に収集されて、Ｂ１の後に利用できるようになる、等の場合、エンティティＥが、ユーザｉが第ｒ番目のブロックＢｒの時点ですべての支払を行いかつ受領した後でユーザｉが利用できる残高ａｒｉに関し、ブロックＢ０，．．．，Ｂｒ−１のシーケンスに明記される情報から推論可能な情報から、すべてのユーザｘについて金額ａｘを計算し、利用できるようにされている第ｒ番目のブロックＢｒの時点でのシステム内のユーザの数ｎを計算し、ｘが所与の順番におけるｉ番目のユーザの場合、各ユーザｘについて、ユーザｘを所与の順番に並べ、少なくともｎ個のリーフを有するバイナリ木Ｔのリーフｉにａｘを格納し、木Ｔのマークル値を判定して、Ｔのルートで格納される値Ｒを計算し、Ｒを認証する電子署名Ｓを生成し、リーフｌとＴのルートとの間の経路のノードの兄弟であるすべてのノードの内容を提供してＴの任意のリーフｉの内容の証明としてＳを利用できるようにすることによって、検証済み情報を提供する。
【００１１】
さらに本明細書で説明されるシステムによると、ユーザが残高を有し、電子署名された支払を介して互いにマネーを移転し、ユーザの初期集合の残高が既知である支払システムにおいて、第１番目のユーザ支払セットが第１番目の電子署名済みブロックＢ１に収集され、第２番目のユーザ支払セットが第２番目の電子署名済みブロックＢ２に収集されて、Ｂ１の後に利用できるようになる、等の場合、エンティティの集合Ｅが、ユーザｉが第ｒ番目のブロックＢｒの時点ですべての支払を行いかつ受領した後でユーザｉが利用できる残高ａｉを検証することを可能にする情報を、最初のｒ個のブロックの支払後の各ユーザｉの残高を判定し、各ユーザの残高がＴｒの少なくとも１つのノードの保護されるべき値である場合、マークル平衡探索木Ｔｒを生成し、エンティティの集合の各メンバーに、Ｔｒのルートの保護値ｈｖεを含む情報の電子署名を生成させ、ｈｖεの電子署名を提供して前記最初のｒ個の支払後のユーザのうちの少なくとも１名の残高を証明することによって提供する。エンティティの集合は、１つのエンティティから構成されてもよい。エンティティの集合は、その電子署名の値に基づいて選択されてもよい。
【００１２】
さらに本明細書で説明されるシステムによると、ユーザが残高を有し、電子署名された支払を介して互いにマネーを移転し、ユーザの初期集合の残高が既知である支払システムにおいて、第１番目のユーザ支払セットが第１番目の電子署名済みブロックＢ１に収集され、第２番目のユーザ支払セットが第２番目の電子署名済みブロックＢ２に収集されて、Ｂ１の後に利用できるようになる、等の場合、エンティティＥが、ユーザｉが第ｒ番目のブロックＢｒの時点ですべての支払を行いかつ受領した後でユーザｉが利用できる残高ａｉを、各ユーザの残高がＴｒの少なくとも１つのノードの情報値であるマークル平衡探索木Ｔｒのルートの保護情報ｈｖεについて、エンティティの集合のメンバーの電子署名を取得し、ユーザｉについて、認証経路、およびＴｒで検索するために所与の検索アルゴリズムを処理するすべてのノードの内容を計算し、別のエンティティがｉの残高を検証することを可能にするために、認証経路と内容および電子署名を提供することによって証明する。
【００１３】
さらに本明細書に説明されるシステムによると、非一時的コンピュータ可読媒体に提供されるコンピュータソフトウェアは、本明細書に説明される方法のいずれかを実装する実行可能コードを含む。
【００１４】
共有公開台帳はトランザクションのブロックの共通のシーケンスを生成するべきであり、その内容はセキュアであり、容易に証明することができる。したがって、本発明は、ブロックのシーケンス（ブロックツリー）の内容を保護する新規な方法で、その内容も容易に証明することが可能なブロックの共通シーケンス、アルゴランドを生成する新規な方法を提供する。
【００１５】
アルゴランド
高次で、Ｂ１，．．．，Ｂｒ−１をアルゴランドの最初のｒ−１個のブロックとすると、新たなブロックＢｒは次の２つの（メガ）ステップにより生成される。
・ブロックリーダーであるユーザｌｒはランダムに選択されて信用されており、そのタスクは、有効なトランザクションの新たなブロックＢｒをアセンブルし、これを認証し、ネットワークを通じてこれを伝播することである。誠実なリーダーｌｒによって提案される場合、ブロックＢｒは、ｌｒが見る新たな有効トランザクションのすべてを含む。
・集合的に「委員会」と見なされるユーザの部分集合Ｃｒは、ランダムに選択されて、Ｃｒには、ｌｒによって提案されたブロックのコンセンサスを取り、これを認証し、この認証をネットワークに伝播するタスクが課せられる。ブロックは、それがＣＲの証明済みメンバーのうちの少なくとも所与の数によって適切に認定される場合、つまり、電子署名される場合に限り、公開台帳に記入される。
【００１６】
ここで、公開鍵がどのように選択されるか、Ｃｒがコンセンサスをどのように取るか、そして、ブロックを認定するために必要な電子署名の所与の数がどのように選ばれるかを詳細に説明する。
【００１７】
好ましくは、公開鍵は、秘密暗号くじを介して、ブロックＢｒのリーダーまたは委員会メンバーとして選択される。本質的に、ユーザは、自分自身のくじ引きを実行することによって自分を選択するので、（ａ）当該ユーザは、（たとえ自分が望んだとしても）いかさまをして、自分が思ったよりも高い確率で自分を選択することはできず、（ｂ）誰でも調べることができる、選択されたという証明Ｐｉを取得し、（ｃ）当該ユーザは、自分が選択されたことを知る唯一の者である（証明Ｐｉを提示することによって、そうであることを他者に明らかにすると決めるまで）。
【００１８】
ユーザが所有する公開鍵が選択される確率を高めるために、ユーザは、自分が所有する公開鍵の数を増やす誘惑にかられるかもしれないが（いわゆるシビル攻撃）、これは、既に述べたように非許可型システムでは非常に簡単に行える。このような攻撃を防止するために、選ばれる秘密暗号くじは、所与の公開鍵が選択される確率を、当該公開鍵が所有するマネーに比例させることを確実にする。このように、ユーザが、自分のマネー全部を単一の鍵に関連付けておくか、またはそれをいくつかの鍵に分散させるかに関係なく、当該ユーザの公開鍵のうちの１つが選択される確率は同じである。（具体的には、ユーザが、例えば、１００万ドルを単一の鍵に所有していても、または１ドルずつの１００万個の鍵を所有していても、選択される可能性は同じである。）
【００１９】
より正確には、ユーザが所有する公開鍵ｐｋが、リーダーまたは委員会メンバーとして選択されるかどうかを判定するために、ユーザは、以前のすべてのブロックから導き出せるいくつかの情報に電子署名する（対応する秘密鍵ｓｋを介して）。好適な実施形態において、ユーザは、実際には、最後のブロックＢｒ−１から導き出せる数量Ｑｒに電子署名し、それをハッシュ化し、ハッシュが所与の（確率）閾値ｐ（これは、ユーザの公開鍵が所有するマネーの金額に依存する）よりも小さいかどうかをチェックする。この場合には、ユーザのこの電子署名は、公開鍵ｐｋが選択された証明として使用することができる。実際、誰もが、ユーザの署名を、チェックし、ハッシュ化し、所与の閾値ｐと比較することができる。
【００２０】
選択閾値ｐを変えることによって、システムは、それぞれの役割について何人のユーザを選択するかを制御する。まず、委員会Ｃｒの公開鍵を選択することを考えてみよう。例えば、システム内に、それぞれ同じマネーの金額を所有する１００万個の鍵があり、ＣＲに、ほぼ１千人のメンバーを持たせたいと仮定する。すると、ｐ＝１／１，０００を共通の選択閾値にするように選ぶことができる。事実、署名のハッシュは０から１までのランダムな数のバイナリ展開としてみなすことができ、そのため、１／１，０００以下になり、確率はｐ＝１／１，０００に等しい。このように、選択されるユーザの予想総数は１００万／１千＝１／１千になる。後で述べるように、異なる公開鍵が異なるマネーの金額を所有するときもなお、所与の数の委員会メンバーを選択することを実現することができる。
【００２１】
ここで、ｒ番目のブロックについて単一のリーダーｌｒを選択することを考えてみよう。そして、システムは、まず、（例えば１００個の）公開鍵を選択するために秘密暗号くじを使用してもよく、次に、リーダーを（ハッシュ化された）証明がより小さい公開鍵にする。より正確には、簡潔さのみのために、選択される鍵がｐｋ１，．．．，ｐｋ１００であり、それに対応する選択の証明がＰ１，．．．，Ｐ１００であると仮定する。すると、選択される各鍵の所有者ｉは、新たな有効トランザクションの自分自身のブロックＢｉｒをアセンブルし、適切に認証されたブロックＢｉｒとともにＰｉを伝播する。すると、リーダーｌｒは、その証明が辞書式順序に小さい鍵になり、ブロックＢｒは、ｌｒによって提案されるブロックであるとして委員会Ｃｒがコンセンサスを取るブロックになる。
【００２２】
ブロックリーダーを選択するために秘密暗号くじを使用する大きな利点は、システムの活動を監視して自らが望む任意のユーザをうまく支配できる敵対者が、リーダーｌｒを容易に腐敗させることができないため、ｌｒが提案するブロックを選べるようになることである。事実、１００名の潜在的リーダーが、自分自身のくじ引きを実行することによって秘密裡に自分自身を選択する場合。したがって、敵対者は、どれが（予想される）１００個の公開鍵になるか分からない。しかし、各ｉが自分のクレデンシャルおよび提案されるブロックを伝播すると、敵対者はすぐにリーダーｌｒが誰であるかを見つけ出すことができる。しかし、その時点では、リーダーを腐敗させる利点はほとんどない。当該リーダーのブロックおよび証明はネットワークを通じて急速に伝播しており、止めることができない。（国家でさえ、例えば、ウィキリークスが送ったメッセージを元に戻すことはできなかった。）それでも敵対者には最後の１つの手段が利用できるかもしれない。すなわち、敵対者はｌｒを腐敗させるかもしれず、当該ｌｒを支配してしまえば、異なるブロックをアセンブリし、認証し、伝播することを当該ｌｒに強いる。しかし、敵対者には、この機会すら閉ざされる。実際、ユーザは、自分の支払およびトランザクションを認証し、（ユーザが選択される場合に）自分の選択の証明を生成するために使用する秘密署名鍵を保管する。しかし、ユーザがリーダーとして選択される場合、ユーザは、提案するブロックを認証するために、異なる一時的な鍵のセットを使用する。より正確には、ユーザは、（例えば１００万個の）公開・秘密鍵のペア（ｐｋｉｒ，ｓｋｉｒ）のセットを事前に選択し、まだ使用するかもしれない各秘密鍵ｓｋｉｒを安全に保管する。本発明のシステムは、提案されるｒ番目のブロックに署名できるのがどのｉかに対してｐｋｉｒが唯一可能な公開鍵であることを誰もが認識することができ、ｐｋｉｒに関連するｉの電子署名を誰もが検証することができるが、対応する秘密鍵ｓｋｉｒを知っている唯一の者が当該ｉであるため、このような署名を生成することができるのはｉだけであることを保証する。ｉが誠実で、ブロックＢｉｒを提案するために選択される場合、ｉは、自分の公開鍵ペア（ｐｋｉｒ，ｓｋｉｒ）に関連してブロックＢｉｒに電子署名し、直後にｓｋｉｒを破壊する。このように、万が一敵対者がｉを腐敗させるのに成功したとしても、敵対者は、今や腐敗させられているｉに第２の異なるブロックを認証させることを可能にするために必要な秘密鍵ｓｋｉｒを見つけられない。委員会メンバーについても同じ利点が存在する。ここで、リーダーｌｒによって伝播されるブロックに関して委員会Ｃｒのメンバーがどのようにコンセンサスを取るかを述べる。
【００２３】
新たに提案されるブロックに関してＣｒがコンセンサスを取るための好適な方法は、ビザンチン合意（ＢＡ）による。ＢＡプロトコルは、それぞれ自分自身の値から始まる一定のプレーヤ集合が共通の値に関してコンセンサスを取ることを可能にする通信プロトコルである。プレーヤは、当該プレーヤの規定された命令のすべてに従う場合には誠実で、そうでない場合には悪意である。悪意のプレーヤは、単一のエンティティである敵対者によって支配され、完璧に協調させることができる。プレーヤのうちの少数（例えば１／３）だけが悪意である限り、ＢＡプロトコルは次の２つの基本的な性質を満たす。（１）誠実なプレーヤ全員が同じ値を出力し、かつ、（２）プレーヤ全員が同じ出力値で開始する場合、誠実なプレーヤ全員がその値を出力する。
【００２４】
非許可型分散型台帳システムでＢＡを使用するにはいくつかの課題がある。主なものは、ＢＡプロトコルが非常に遅いことである。（通例、ＢＡプロトコルには、たかだか数十人のユーザしか関われない。）アルゴランドは、この課題を、最悪の場合でも、予想で９ステップしか踏まない新規なプロトコルによって克服する。さらに、これらのステップのそれぞれで、参加するプレーヤは単一の短いメッセージを伝播するだけでよい！
【００２５】
しかし、別の課題も残っている。新たなブロックに関してビザンチン合意に達するためには、２つ以上のステップを踏むため、（委員会メンバーは秘密暗号くじを介して自分を選択するので）委員会メンバーが自分の最初のメッセージの送信を開始する前に敵対者が委員会メンバーを攻撃することはできないかもしれないが、当該委員会メンバーがＢＡプロトコルで自分の最初のメッセージを伝播した後であれば、当該敵対者は委員会Ｃｒのメンバー全員を腐敗させることができるであろう。実際、当該委員会メンバーは、自分の最初のメッセージを使って、委員会に所属していることの証明も伝播する。幸いなことに、本発明によるコンセンサスプロトコルは、プレーヤ代替性であるという追加の新規な利点を享受する。すなわち、プロトコルの予想される少数のステップのそれぞれは、異なるプレーヤの集合によって実行することができ、当該プレーヤらは秘密情報または隠れた内部状態を、以前のいずれかのステップを行うために選択されたプレーヤと一切共有する必要がない。実際、アルゴランドのコンセンサスプロトコルは、ステートレスなビザンチン合意（ＢＡ）プロトコルである。したがって、新たなＢＡプロトコルの各ステップを実行するために、異なるユーザの集合を、秘密暗号くじを介して、選択することができる。
【００２６】
最後の課題が１つ残っている。述べてきたように、公開鍵は、ブロックＢの生成において役割を有するために、既に公開で知られている前のブロックＢｒ−１の一部であることが好ましい数量Ｑｒに電子署名し、その署名が、特殊な性質、すなわち、そのハッシュが所与の選択閾値未満でなければならないこと、を満たしているかどうかを検証することによって、自らを選択する。問題は、アルゴランドが非許可型であるため、敵対者は、Ｑｒの署名が所望の性質を有するものを見つけるまで、多くの公開・秘密鍵ペアを生成し続ける場合があることである。このような鍵を見つけると、敵対者は、自分の鍵のうちの１つがブロックＢｒの選択を担当するリーダーであることを保証するために、または、当該敵対者がＢＡの性質を壊すことを可能にする、当該敵対者の支配する鍵を委員会Ｃｒのほとんどが含むことを保証するために、その鍵をシステムに持ち込むかもしれない。この可能性を防ぐために、アルゴランドは２本柱の戦略に依拠する。まず、新たに導入された鍵には、ブロックリーダーまたは委員会メンバーとしてすぐに選択される資格を持たせない。むしろ、ブロックＢｒの生成で役割を持つために、鍵ｐｋはしばらくそこに存在していなければならない。より正確には、当該鍵は、ブロックＢｒ−ｋまたはそれより古いブロックで最初に出現しなければならず、ここでｋは十分に大きい整数である。（例えば、我々の詳細な実施形態のそれぞれにおいて、マネーの少なくとも８０％が誠実者の手元にある場合、ｋ＝７０で十分である。）次に、Ｑｒを帰納的に、すなわち、前の数量Ｑｒ−１の観点から定義する。より正確には、我々の好適な実施形態において、Ｑｒは、ペア（Ｑｒ−１，ｒ）のブロックＢｒのリーダーのハッシュ電子署名である。この電子署名は、実際には、ブロックＢｒ−１の明示的な部分にされる。これが機能する理由は次の通りである。敵対者が、あるブロックＢｒ−ｋで、自分が支配する公開鍵からｐｋに支払を行うことによって、システムに新たな鍵ｐｋを持ち込むことにした場合、ｐｋが役割を果たすことができる最も早いブロックはＢｒである。しかし、Ｂｒより前のｋ個のブロックについては、ランダムに推測するよりも有意によくなるようなＱｒ−１を誰も予測することはできないことを証明する。そのため敵対者は、いかなる戦略的な方法でもｐｋを選ぶことができない！
【００２７】
ブロックツリー（およびステータスツリー）
ブロックチェーンは、そのブロックの改ざん防止性を保証するが、そのブロックでの動作（例、所与の支払が所与のブロックの一部かどうかを証明すること）をかなり複雑で手間がかかるものにもする。共有公開台帳はブロックチェーンの類義語ではなく、実際、ブロックを構築するためのより優れた方法から利益を得る。アルゴランドは従来のブロックチェーンを用いて機能するが、情報のブロックの新たな構築方法、ブロックツリーも用いて機能する。この発明による方法には、独自の重要性があり得る。
【００２８】
ブロックツリーの主な利点は、ブロックチェーン全体を提示する必要なく、過去の個々のブロックの内容を効率的に証明できることである。
【００２９】
我々は、マークル木の新規な適用によりブロックツリーを構築する。
【００３０】
また、支払が公開鍵から別の公開鍵にマネーを移転し、支払がブロックのシーケンスに整理される分散型支払システムの場合、我々は、支払の最初のｒ個のブロックの後で所与の鍵が利用できる残高（口座にあるマネー）が何であるかを証明する、効率的な方法を提供する。この方法をステータスツリーと呼ぶ。
【図面の簡単な説明】
【００３１】
本明細書で説明するシステムの実施形態を、以下簡潔に説明する図面の図に従って、より詳細に説明する。
【００３２】
【図１】図１は、本明細書で説明するシステムの実施形態による、ネットワークおよびコンピューティングステーションの模式図である。
【図２】図２は、トランザクションの新たなブロックが提案される場合の、アルゴランドシステムの第１ステップの模式的かつ概念的な概略である。
【図３】図３は、アルゴランドシステムの新たなブロックの合意および認定の模式的かつ概念的な概略である。
【図４】図４は、マークル木およびそのノードのうちの１つに含まれる値の認証経路を示す模式図である。
【図５】図５は、ブロックツリー内に構築される第１番目のブロックに対応するマークル木を示す模式図である。
【図６】図６は、ブロックツリー内の第１番目のブロックの保護情報を構築するために十分な値を示す模式図である。
【発明を実施するための形態】
【００３３】
様々な実施形態の詳細な説明
本明細書で説明するシステムは、エンティティがトランザクション情報を検証および／または伝播する計算を行うことに対して単独で責任を負わないように、トランザクションの検証および伝播を分散させるためのメカニズムを提供する。代わりに、参加エンティティのそれぞれは、検証可能かつ信頼性をもってトランザクションを伝播するために行われる計算を共有する。
【００３４】
図１を参照すると、図は、インターネット等のデータネットワーク２４に接続されている複数のコンピューティングワークステーション２２ａ〜２２ｃを示している。本明細書の他の箇所でより詳細に説明するように、ワークステーション２２ａ〜２２ｃはネットワーク２４を介して互いに通信し、分散型トランザクションの伝播および検証を提供する。ワークステーション２２ａ〜２２ｃが互いに通信可能であることを条件に、システムは、本明細書で説明する機能を提供することのできる任意の数のワークステーションに対応することができる。本明細書の他の箇所でより詳細に説明するように、ワークステーション２２ａ〜２２ｃのそれぞれは、トランザクションをシステム内の他のワークステーションのすべてに伝播し、トランザクションを検証するための処理を独立して行うことができる。
【００３５】
図２は、アルゴランドシステムのラウンドｒの最初のステップを図式的かつ概念的にまとめたものであり、少数の選択されたユーザのそれぞれが、ｒ番目のブロックについて自分自身の候補を提案する。具体的には、ステップは、システムのユーザａ，．．．，ｚが個々に秘密暗号くじプロセスを経ることから始まり、ブロックの提案にどのユーザが選択され、選択された各ユーザがブロックを生成する権利を与えられていることを証明するクレデンシャルを当該ユーザがどこで秘密に計算するかを決定する。図２の実施例では、ユーザｂ、ｄおよびｈのみがブロックの提案に選択され、それぞれの計算されたクレデンシャルはσｂｒ，１，σｄｒ，ａ１およびσｈｒ，１である。選択された各ユーザｉは自分自身の提案ブロックＢｉｒをアセンブルし、それに一時的に署名し（すなわち、後で説明するように、一時的な鍵を使ってそれに電子署名する）、自分自身のクレデンシャルと一緒にネットワークに伝播する。ラウンドのリーダーは、クレデンシャルが最も小さいハッシュを有する、選択されたユーザである。図は、リーダーがユーザｄであることを示している。したがって、ユーザｄの提案ブロックＢｄｒは、バイナリ合意プロトコルへの入力として与えられるものである。
【００３６】
図３は、合意に達し、提案ブロックを正式なｒ番目のブロックＢｒとして認定するためのアルゴランドのプロセスを図式的かつ概念的にまとめたものである。アルゴランドの最初のステップは新たなブロックを提案するステップからなるため、このプロセスは第２ステップから始まる。このステップは、実際には、アルゴランドの好適なビザンチン合意プロトコルＢＡ★の最初のステップと同時に起こる。このプロトコルの各ステップは、秘密暗号くじによってランダムに選択されたプレーヤからなる、異なる「委員会」によって実行される（図には示していない）。したがって、各ステップを行うために選択されるユーザは全く異なることがある。ＢＡ★のステップの数も異なることがある。図３は、アルゴランドの２からアルゴランドのステップ８までの７つのステップを含むＢＡ★の実行を示す。図３の実施例では、ステップ２を行うために選択されるユーザはａ，ｅおよびｑである。各ユーザｉ∈｛ａ，ｅ，ｑ｝はネットワークに自分のクレデンシャルσｉｒ，２を伝播するが、これは、ｉがアルゴランドのラウンドｒのステップ２でメッセージを送る権利を実際に与えられていることを証明するものであり、当該ユーザｉの、このステップに適切なメッセージｍｉｒ，ｓは一時的に署名される。ステップ３〜７は図示していない。最後のステップ８で、図は、ラウンドｒの正式なブロックとしてＢｒに関して合意に達した、対応する選択されたユーザｂ，ｆおよびｘがブロックＢｒの自分自身の一時的な署名（合わせて、これらの署名がＢｒを認定する）および自分自身のクレデンシャルを伝播して、ステップ８で行為する権利が自分に与えられていることを証明することを示している。
【００３７】
図４は、マークル木およびその認証経路のうちの１つを模式的に示す。具体的には、図４．Ａは、深さ３の完全なマークル木を示す。ｘが長さ≦３のバイナリストリングによって表される場合、各ノードｘは、値ｖｘを格納する。ｘが長さ≦２を有する場合、ｖｘ＝Ｈ（ｖｘ０，ｖｘ１）である。図４．ａのマークル木について、図４．Ｂは値ｖ０１０の認証経路を示す。
【００３８】
図５は、深さ３の完全なバイナリツリー内で構築される、ブロックツリーで構築される最初の８個のブロックに対応するマークル木を模式的に示す。図５．ｉにおいて、整数によって記されるノードはマークル木Ｔｉに属す。ｉ（それぞれ、ｉ）によって記されるノードの内容は一時的なものである（それぞれ、永久的）。
【００３９】
具体性のためにのみ、我々の説明において、すべてのトランザクションが支払であると仮定し、アルゴランドを金融プラットフォームとしてのみ説明することに専念する。当業者は、アルゴランドがあらゆる種類のトランザクションも同様に扱うことができることを認識するであろう。
【００４０】
アルゴランドは非常にフレキシブルな設計を有し、多様な、ただし関係する方法で実施することができる。我々はそのフレキシビリティを、その一般的な設計の２つの可能な実施形態を詳述することによって例示する。かかる例示から、当業者は、あらゆる種類の他の実施態様も同様に導き出す方法を理解することができる。
【００４１】
本発明の理解を助け、その様々な部分の内部相互参照を可能にするために、その提示を、番号を振って見出しを付けたセクションに分けて整理する。最初のセクションは、詳細な実施形態のどちらにも共通である。
【００４２】
１  序論
マネーはますます仮想になってきている。現在、合衆国ドルの約８０％は台帳記入としてしか存在していないと見積もられている。他の金融商品もそれに倣ってきている。
【００４３】
起こり得るすべてのサイバー攻撃を受けず、普遍的に信頼のおける中央エンティティに頼ることができる理想的な社会では、マネーおよび他の金融取引は電子だけにできるであろう。残念ながら、そのような社会に我々は生きていない。したがって、ビットコイン等の非集中型暗号通貨およびイーサリアム（Ｅｔｈｅｒｅｕｍ）等の「スマートコントラクト」システムが提案されている。これらのシステムの核となるのが、支払およびコントラクトといった多様なトランザクションのシーケンスを、改ざん防止して信頼性をもって記録する共有台帳である。このような改ざん防止性を保証するために選ばれる技術がブロックチェーンである。ブロックチェーンは、暗号通貨、金融アプリケーション、およびインターネット・オブ・シングス等のアプリケーションの背後にある。ブロックチェーンベースの台帳を管理するためのいくつかの手法、すなわち、プルーフ・オブ・ワーク、プルーフ・オブ・ステーク、プラクティカル・ビザンチン・フォールト・トレランス、またはいくつかの組み合わせ、が提案されている。
【００４４】
しかし、現在、台帳は管理するのに非効率的であることがある。例えば、ビットコインのプルーフ・オブ・ワークのアプローチは膨大な量の計算を必要とし、無駄が多く、スケーラビリティが低い。加えて、事実上、ごく少数の手中に権力を集中させる。
【００４５】
そのため、我々は、現在の非集中型実施態様の非効率性と弱点とがない、信頼のおける侵すことのできない権限機関によって運営される集中型システムの便宜および効率を提供する、公開台帳を実施する新たな方法を提案したい。それまでに構築された台帳に基づいて、有効なトランザクションの次のブロックの構築を担当する検証者の集合を選ぶためにアルゴリズム的ランダムネス（ａｌｇｏｒｉｔｈｍｉｃ  ｒａｎｄｏｍｎｅｓｓ）を使用するので、我々は、我々のアプローチをアルゴランド（Ａｌｇｏｒａｎｄ）と呼ぶ。当然、我々は、このような選択がおそらく最後の最後まで改ざんや不測の事態を免れることを保証するが、最終的には例外なく不正がないこともまた保証する。
【００４６】
アルゴランドのアプローチは、原則的にも事実上でもユーザの異なるクラス（ビットコインの「マイナー」および「普通ユーザ」として）を生み出さないという意味で、極めて民主的である。アルゴランドでは、「すべての権力が全ユーザの集合にある」。
【００４７】
アルゴランドの、ある注目すべき特性は、その取引履歴がごく小さい確率でしか分岐しないことである（例、１兆分の１、すなわち、またはさらに１０−１８）。アルゴランドは、いくつかの法律上および政治上の問題にも対処することができる。
【００４８】
アルゴランドのアプローチは、ブロックチェーンに適用され、より一般的には、ブロックの改ざん防止シーケンスを生成するあらゆる方法に適用される。我々は、実際に、ブロックチェーンに代わる、またブロックチェーンよりも効率的な、独自の重要性があり得る新たな方法を提案する。
【００４９】
１．１  ビットコインの仮定および技術的な課題
ビットコインは非常に巧妙なシステムであり、後続の研究を大量に呼び起こしている。しかし、課題もある。その基になっている仮定と技術的な課題とを要約してみよう。これは実際に、ビットコイン等、プルーフ・オブ・ワークに基づく基本的にすべての暗号通貨に共通するものである。
【００５０】
この要約のためには、ビットコインでは、ユーザは電子署名スキームの複数の公開鍵を所有することができ、マネーは公開鍵に関連付けられており、支払は、ある公開鍵から別の公開鍵へ何らかの金額のマネーを移転する電子署名であることを思い出せば十分である。本質的に、ビットコインは処理されるすべての支払を、それぞれ複数の支払からなるブロックのチェーンＢ１，Ｂ２，．．．，に整理するので、任意の順番で選ばれて、その後に任意の順番でＢ２の支払がくる、等、Ｂ１のすべての支払が、有効な支払のシステムを構成する。各ブロックは、平均で、１０分ごとに生成される。
【００５１】
このブロックのシーケンスは、単一のブロックにおけるものであれ、いかなる変化も後続のすべてのブロックに行き渡らせ、支払履歴のあらゆる改変を発見しやすくすることを確実にするので、チェーンである。（後で述べるように、これは、各ブロックに前のブロックの暗号学的ハッシュを含むことによって実現される。）このようなブロック構造は、ブロックチェーンと呼ばれる。
【００５２】
仮定：計算力の誠実な過半数
ビットコインは、悪意のエンティティ（および協調的な悪意のエンティティの連合体）が、ブロックの生成に充てられる計算能力の過半数を支配しないと仮定している。このようなエンティティは、実際には、ブロックチェーンを変更することができ、そのため、好きなように、支払の履歴を書き換えることができるであろう。特に、支払
【数１】
2019519137.tif 000003
に、支払われる利益を得させた後、
【数２】
2019519137.tif 000004
の一切の痕跡を「消去する」ことができるであろう。
【００５３】
技術的課題１：計算の無駄な消費
ブロック生成に対するビットコインのプルーフ・オブ・ワークアプローチには、桁外れの量の計算が必要である。現在、システムにわずか数十万の公開鍵しかないが、上位５００の最もパワフルなスーパーコンピュータは、ビットコインのプレーヤから要求される総計算力のわずか１２．８％にしか対応できていない。万が一システムに参加するユーザが大幅に増えると、この計算の量は大きく増大するであろう。
【００５４】
技術的課題２：権力の集中
現在、途方もない量の計算が必要とされているため、普通のデスクトップ（ましてや携帯電話）を使用して新たなブロックを生成しようとするユーザはマネーを失うと考える。実際、普通のコンピュータを使用して新たなブロックを計算するためには、計算を行うために必要な電力の予想コストは、期待される報酬を超える。特別に構築したコンピュータのプール（「新たなブロックをマイニングすること」以外には何もしない）を使用しなければ、新たなブロックの生成によって利益を得ることは期待できないであろう。したがって、現在、事実上、互いに素の２つのユーザのクラスがある。支払のみを行う普通ユーザと、新たなブロックを探すことだけをする専用マイニングプールである。
【００５５】
そのため、現在の時点で、ブロック生成のための総計算力がわずか５つのプールにあるというのは驚くべきことではない。このような状況では、計算力の過半数が誠実であるという仮定には、説得力がなくなってくる。
【００５６】
技術的課題３：曖昧さ
ビットコインでは、ブロックチェーンは必ずしも一意ではない。実際、その最新の部分はしばしば分岐する。ブロックチェーンは、例えば、あるユーザによるとＢ１，．．．，Ｂｋ，Ｂ’ｋ＋１，Ｂ’ｋ＋２で、別のユーザによるとＢ１，．．．，Ｂｋ，Ｂ”ｋ＋１，Ｂ”ｋ＋２，Ｂ”ｋ＋３であるかもしれない。いくつかのブロックがチェーンに追加された後でしか、最初のｋ＋３ブロックが全ユーザについて同じになることを合理的に確信することができない。したがって、チェーンの最後のブロックに含まれる支払をすぐに信頼することはできない。ブロックがブロックチェーンにおいて十分に深くなるかどうか、また、そのため十分に安定するかどうかを待って確認する方が、より分別があることである。
【００５７】
別に、ビットコイン（脚注１参照）については、法執行および金融政策の課題も生じている。
【００５８】
脚注１
ビットコインの支払が提供する（疑似）匿名性は、マネーロンダリングおよび／または個人の犯罪者もしくはテロ組織の資金調達に悪用されるかもしれない。原則的に完璧な匿名性を提供する伝統的な銀行券または金の延棒は、同じ課題をもたらすとしても、これらの通貨の物理的存在が実質的にマネーの移転を鈍らせるので、法執行機関による監視をある程度可能にする。
「マネーを印刷」できることは、非常に基本的な国家権力の１つである。そのため、原則的に、独立して流通する通貨の大量採用は、この権力を減じるおそれがある。しかし、現在、ビットコインは政府の金融政策に対する驚異とはほど遠く、そのスケーラビリティの問題のために、絶対にそうならないであろう。
【００５９】
１．２  アルゴランド，簡潔な要約
設定
アルゴランドは、非常に厳しい設定でも機能する。簡単にいうと、
（ａ）非許可型環境および許可型環境。アルゴランドは、いかなる種類の審査も許可もなしに任意に多くのユーザがいつでもシステムに参加することを許される、完全な非許可型環境でも効率的かつセキュアに機能する。当然、アルゴランドは、許可型環境においてよりよく機能する。
（ｂ）非常に敵対的な環境。アルゴランドは、以下のことができる非常にパワフルな敵対者に耐える。
（１）非許可型環境において、システム内のマネーの２／３が誠実なユーザに属しているとして、敵対者が望む任意のユーザを、敵対者が望む任意の時点で即座に腐敗させること。（許可型環境では、マネーに関係なく、ユーザの２／３が誠実であれば十分である。）
（２）腐敗させたユーザ全員を完全に支配し、完全に協調させること。
（３）誠実なユーザによって送られる各メッセージｍが、ある時間λｍ以内にすべての（または十分多くの）誠実なユーザに届き、時間λｍがｍのサイズにのみ依存するとして、すべてのメッセージの配信のスケジュールを組むこと。
【００６０】
主な性質
パワフルな敵対者の存在に関わらず、アルゴランドでは、
・必要な計算量は最小限である。
本質的に、いかに多くのユーザがシステム内に存在しようとも、１，５００名のユーザのそれぞれが、たかだか数秒の計算を行わなければならない。
・新たなブロックはすぐに生成され、事実上、ブロックチェーンを絶対に離れない。
すなわち、アルゴランドのブロックチェーンは、無視できる確率でしか分岐しない（すなわち、１兆分の１未満、または１０−１８）。したがって、ユーザは、ブロックが出現するや否や、その新たなブロックに含まれる支払を信用することができる。
・すべての権力はユーザ自身にある。
アルゴランドは真に分散型のシステムである。具体的には、どのトランザクションが認められるかを管理することのできる外生的なエンティティ（ビットコインの「マイナー」のような）が存在しない。
【００６１】
アルゴランドの手法
１．新規かつ高速のビザンチン合意プロトコル
アルゴランドは、発明による暗号学的な、メッセージパッシングの、バイナリビザンチン合意（ＢＡ）プロトコルＢＡ★により新たなブロックを生成する。プロトコルＢＡ★はいくつかの追加の性質（これはすぐに述べる）を満たすだけでなく、非常に高速でもある。大雑把にいうと、そのバイナリ入力バージョンは３ステップループからなり、プレーヤｉが単一のメッセージｍｉを他のすべてのプレーヤに送る。完全な同期ネットワークで実行されると、プレーヤの２／３超が確率＞１／３で誠実であれば、各ループの後、プロトコルは合意に終わる。（プロトコルＢＡ★が、一切の弱化なくビザンチン合意の元の定義を満たすことを強調しておく。）
【００６２】
アルゴランドは、各新たなブロックに対して、我々の異なる通信モデルで、合意に達するためにこのバイナリＢＡプロトコルを利用する。合意されたブロックはさらに、適切な検証者の規定数の電子署名によって認定されて、ネットワークを通じて伝播される。
【００６３】
２．秘密暗号くじ
非常に高速であるが、プロトコルＢＡ★は、数百万のユーザによってプレイされるとき、さらなる高速化から利益を得るであろう。したがって、アルゴランドは、ＢＡ★のプレーヤを、全ユーザの集合のうちのはるかに小さい部分集合にするように選ぶ。異なる種類の権力集中の課題を避けるために、新たな各ブロックＢｒは、ＢＡ★の新たな実行を介して、選択された検証者ＳＶｒの個別の集合によって構築され、合意される。原則的に、このような集合を選択することは、Ｂｒを直接選択するのと同等に困難であろう。我々は、この潜在的な課題を、秘密暗号くじと名付ける新規なアプローチによって乗り切る。くじとは、資格のある個人の大きな集合からランダムに公務員を選出する慣習である。（くじは、何世紀にもわたり、例えば、アテネ、フィレンツェ、およびヴェネツィアの共和国によって実践された。現代の司法制度では、ランダムな選択は、陪審員の選出にしばしば使用される。ランダムサンプリングは、選挙についても提唱されている。）非集中型システムでは、当然、各検証者集合ＳＶｒのメンバーをランダムに選択するために必要なランダムコインを選ぶことには問題がある。したがって、各検証者集合を、全ユーザの母集団から、自動的（すなわち、メッセージの交換が必要ない）かつランダムであることが保証されるように選択するために、暗号法に頼る。同様に、新たなブロックＢｒの提案を担当するリーダーであるユーザと、リーダーによって提案されるブロックに関して合意に達することを担当する検証者集合ＳＶｒとを選択する。本発明によるシステムは、前のブロックの内容から推論可能である何らかの情報Ｑｒ−１を利用し、非常に強力な敵対者の存在があっても改ざんは不可能である。
【００６４】
３．数量（シード）Ｑｒ
新たなブロックＢｒの構築を担当するための次の検証者集合とリーダーとを自動的に判定するために、ブロックチェーン内の最後のブロックＢｒ−１を使用する。このアプローチの課題は、前のラウンドでわずかに異なる支払を選ぶだけで、パワフルな敵対者が次のリーダーに対して巨大な支配力を得ることである。敵対者がシステム内のプレーヤ／マネーの１／１０００だけを支配しただけでも、すべてのリーダーを悪意にすることが確実にできるであろう。（直観セクション４．１を参照。）この課題はすべてのプルーフ・オブ・ステークアプローチにとって中心的なものであり、我々の知る限りにおいて、現在まで、満足に解決されていない。
【００６５】
この課題に答えるために、我々は、個別かつ慎重に定義された数量Ｑｒを意図的に構築して継続的に更新するが、これはおそらく、パワフルな敵対者にとって予測不可能なだけでなく、当該敵対者による影響を受けない。アルゴランドは、秘密暗号くじを介して、Ｑｒから、ｒ番目のブロックの生成において特別な役割を果たすすべてのユーザを選択するため、Ｑｒをｒ番目のシードと呼ぶことがある。シードＱｒは、ブロックＢｒ−１から推論可能になる。
【００６６】
４．秘密のクレデンシャル
新たなブロックの構築を担当する検証者集合とリーダーとを選ぶために、その時点での最後のブロックＢｒ−１をランダムかつ曖昧さなく使用することは十分ではない。Ｂｒ−１はＢｒを生成する前に分かっていなければならないため、Ｂｒ−１から推論可能な、影響力を持つことができない最後の数量Ｑｒ−１も知らなければならない。したがって、ブロックＢｒの計算を担当する検証者とリーダーについてもそうである。このように、パワフルな敵対者は、当該検証者とリーダーとが認定するブロックを完全に支配するために、当該検証者およびリーダーがＢｒに関する何らかの議論に参加する前に、その全員を直ちに腐敗させるかもしれない。
【００６７】
この問題を防止するために、リーダー（および実際には検証者も）自分の役割を秘かに知るが、その役割を実際に有する全員に提供することが可能な適切なクレデンシャルを計算することができる。自分が次のブロックのリーダーであるとユーザが秘かに気づく場合、当該ユーザは、まず自分自身の提案される新たなブロックを秘密にアセンブルしてから、それを自分自身のクレデンシャルと一緒に広める（認定されることができるように）。このように、敵対者は、次のブロックのリーダーが誰かを直ちに気づいても、また、すぐにそのリーダーを腐敗させることができるとしても、敵対者が新たなブロックの選択に影響を及ぼすには遅すぎるだろう。実際、ウィキリークスが急速に広めたメッセージを力のある政府が元に戻すことができないのと同じく、敵対者はリーダーのメッセージを「取り消」すことはできない。
【００６８】
後で述べるように、我々は、リーダーの一意性を保証することも、また、リーダー自身を含めて、誰がリーダーであるかを皆が確信することを保証することもできない！  しかし、アルゴランドでは、曖昧さのない進行が保証される。
【００６９】
５．プレーヤ代替性
リーダーは、新たなブロックを提案した後、自分の仕事が済んだため、「死」んだ方が良い（そうでなければ敵対者によって腐敗させられる）。しかし、ＳＶｒの検証者の場合は、事はそれほど単純ではない。実際、十分に多くの署名で新たなブロックＢｒの認定を担当する検証者は、まずリーダーが提案したブロックに対してビザンチン合意を実行しなければならない。問題は、それがいかに効率的でも、ＢＡ★には複数のステップとそのプレーヤの＞２／３の誠実者を要することである。これは、効率上の理由で、ＢＡ★のプレーヤ集合が、全ユーザの集合の中からランダムに選択された小さな集合ＳＶｒを成すため、問題である。したがって、パワフルな敵対者は、全ユーザの１／３を腐敗させることができなくても、ＳＶｒの全メンバーを間違いなく腐敗させることができる！
【００７０】
幸いなことに、メッセージをピアツーピアで伝播することによって実行されるプロトコルＢＡ★がプレーヤ代替性であることをこれから証明する。この新規な要件は、このプロトコルが、そのステップのそれぞれが、全く新しい、ランダムに独立して選択されたプレーヤの集合によって実行されるとしても、正確かつ効率的にコンセンサスを取ることを意味する。したがって、数百万のユーザがいれば、ＢＡ★のステップに関連付けられているそれぞれ小さなプレーヤの集合は、ほぼ確実に次の集合と空の交わりを有する。
【００７１】
加えて、ＢＡ★の異なるステップのプレーヤの集合は、おそらく全く異なる濃度を有する。さらに、各集合のメンバーは誰が次のプレーヤの集合になるかを知らず、いかなる内部状態も秘かに渡さない。
【００７２】
代替可能プレーヤの性質は、我々が想定するダイナミックで非常にパワフルな敵対者を打ち負かすのに実際に極めて重要である。多数のコンテキストおよびアプリケーションにおいて代替可能プレーヤプロトコルが極めて重要であることを証明する、と考えている。具体的には、全プレーヤの小さな部分でも腐敗させることができ、より小さいサブプロトコルのプレーヤ全員を何の困難もなく腐敗させるダイナミックな敵対者とともに、プレーヤのより大きな母集団に埋め込まれる小さなサブプロトコルをセキュアに実行するためには、この代替可能プレーヤプロトコルが極めて重要になる。
【００７３】
追加の性質／手法：怠惰な誠実者
誠実なユーザは、自分の規定された命令に従うが、当該命令はオンラインであることを含み、プロトコルを実行する。アルゴランドは適度な計算および通信の要求事項のみを有するため、オンラインであることと「バックグラウンド」でプロトコルを実行することは大きな犠牲ではない。当然ながら、接続性が突然失われたり、または再起動する必要があったりすること等に起因する、誠実なプレーヤの中の少数の「不在」は自動的に黙認される（このような少数のプレーヤを一時的に悪意であると常にみなすことができるため）。しかし、指摘したいのは、アルゴランドが、誠実なユーザがほとんどの時間オフラインであるとする新たなモデルで機能するように単純に適応できる点である。我々の新たなモデルは、以下のように略式に紹介することができる。
【００７４】
怠惰な誠実者
大雑把にいうと、（１）プロトコルへの参加が求められるときに、自分の規定された命令のすべてに従い、（２）プロトコルへの参加を求められることは稀であり、かつ、参加要求が適切な事前の通知をもって行われる場合に、ユーザｉは、怠惰であるが誠実である。誠実さについてのこのような厳格ではない概念によって、我々は、我々が必要とするときには誠実な人がすぐに対応できることをなお一層確信することができ、アルゴランドは、これが当てはまる場合に、以下のことを保証する。すなわち、
「所与の時点で、参加するプレーヤの過半数が悪意でも、システムはセキュアに動作する。」
【００７５】
２  準備
２．１  暗号プリミティブ
理想的なハッシング
我々は、任意の長さのストリングを固定長のバイナリストリングにマッピングする、効率的に計算可能な暗号学的ハッシュ関数Ｈに依拠するものとする。長い伝統の後、我々は、Ｈを、本質的に各候補ストリングｓを選ばれた長さのランダムかつ独立して選択された（そして固定される）バイナリストリングＨ（ｓ）にマッピングする関数である、ランダムオラクルとしてモデル化する。
【００７６】
我々の説明する実施形態において、Ｈは２５６ビット長の出力を有する。実際、このような長さは、システムを効率的にするのに十分に短く、また、システムをセキュアにするのに十分に長い。例えば、我々はＨを衝突耐性にしたい。すなわち、Ｈ（ｘ）＝Ｈ（ｙ）になるような異なる２つのストリングであるｘとｙとを見つけにくくするべきである。Ｈが２５６ビット長の出力を持つランダムオラクルである場合、このようなストリングペアを見つけることは実に難しい。（ランダムで試して、誕生日のパラドックスに依拠しても、２２５６／２＝２１２８回の試行が必要だろう。）
【００７７】
電子署名
電子署名は、任意の秘密鍵を共有しなくても、ユーザに情報を互いに認証させる。電子署名スキームは、確率的キージェネレータＧ、署名アルゴリズムＳおよび検証アルゴリズムＶの３つの高速アルゴリズムからなる。
【００７８】
セキュリティパラメータを、十分に大きい整数ｋとすると、ユーザｉは、Ｇを使用して、ｋビットの鍵ペア（すなわち、ストリング）と、「公開」鍵ｐｋｉと対をなす「秘密」署名鍵ｓｋｉとを生成する。重大なことに、公開鍵はその対応する秘密鍵を「漏ら」さない。すなわち、ｐｋｉを知っているとしても、ｉ以外の誰も、天文学的な時間をかけなければｓｋｉを計算することはできない。
【００７９】
ユーザｉは、ｓｋｉを使用してメッセージに電子署名する。各候補メッセージ（バイナリストリング）ｍについて、ｉは、まず、ｍをハッシュ化してから、入力Ｈ（ｍ）およびｓｋｉにアルゴリズムＳを実行して、
【数３】
2019519137.tif 000005
（脚注２参照）のｋビットストリングを生成する。バイナリストリング
【数４】
2019519137.tif 000006
は、ｉによるｍへの（ｐｋｉに対する）電子署名と呼ばれ、公開鍵ｐｋｉがコンテキストから明確である場合は、より単純にｓｉｇｉ（ｍ）で表すことができる。
【００８０】
脚注２
Ｈは衝突耐性であるため、ｍに署名することによって異なるメッセージｍ’に「偶然に署名する」ことは実際的に不可能である。
【００８１】
ｐｋｉを知っている誰もがそれを使用して、ｉが生成した電子署名を検証することができる。具体的には、入力（（ａ）プレーヤｉの公開鍵ｐｋｉ、（ｂ）メッセージｍ、および（ｃ）ストリングｓ）、すなわち、ｉによるメッセージｍへの電子署名とされるものに対して、検証アルゴリズムＶは、ＹＥＳまたはＮＯのいずれかを出力する。
【００８２】
電子署名スキームから我々が要求する性質は次の通りである：
１．適法な署名は必ず検証される：ｓ＝ｓｉｇｉ（ｍ）であれば、Ｖ（ｐｋｉ，ｍ，ｓ）＝ＹＥＳであり、かつ、
２．電子署名は偽造しにくい：ｓｋｉを知らなければ、メッセージｍについて、Ｖ（ｐｋｉ，ｍ，ｓ）＝ＹＥＳになるようなストリングｓを見つけるための時間は天文学的に長い。
（強力なセキュリティ要件に従い、任意の他のメッセージの署名を取得できたとしてもこれは真実である。）
【００８３】
したがって、他の誰かが自分に代わってメッセージに署名することを防止するために、プレーヤｉは自分の署名鍵ｓｋｉを秘密にしておかなければならず（したがって、用語「秘密鍵」）、自分の署名するメッセージを誰かが検証できるようにするために、ｉは自分の鍵ｐｋｉを公開化することに関心を持つ（したがって、用語「公開鍵」）。
【００８４】
メッセージ検索可能性を有する署名
一般に、メッセージｍは、その署名ｓｉｇｉ（ｍ）から取り出すことはできない。概念上便利な「メッセージ検索可能性」の性質を満たす電子署名を仮想で取り扱うために（すなわち、署名者およびメッセージが署名から容易に計算可能であることを保証するために）、我々は次のように定義する。
【数５】
2019519137.tif 000007
および、ｐｋｉが明確な場合、
【数６】
2019519137.tif 000008
【００８５】
一意の電子署名
我々は、次の追加性質を満たす電子署名スキーム（Ｇ，Ｓ，Ｖ）も検討する。
【００８６】
３．一意性
次のようになるストリングｐｋ’，ｍ，ｓおよびｓ’は見つけにくい。
【数７】
2019519137.tif 000009
かつ
【数８】
2019519137.tif 000010
（一意性の性質は、公開鍵が適法に生成されていないストリングｐｋ’についてもあてはまることに留意されたい。しかし、具体的には、一意性の性質は、ある者が指定の鍵ジェネレータＧを使用して対となる秘密鍵ｓｋと一緒に公開鍵ｐｋを計算し、そうしてｓｋを知った場合、ｐｋに関する同じメッセージの２つの異なる電子署名を見つけることも本質的に不可能であるだろうことを含意する。）
【００８７】
備考
・一意の署名から検証可能なランダム関数まで
一意性の性質を有する電子署名スキームに関連し、マッピングｍ→Ｈ（ｓｉｇｉ（ｍ））は、一意にランダムに選択された２５６ビットのストリングである各候補ストリングｍと関連し、このマッピングの正当性は、署名ｓｉｇｉ（ｍ）があれば証明することができる。
【００８８】
すなわち、一意性の性質を満たす理想的なハッシングおよび電子署名スキームは、本質的に、検証可能なランダム関数（ＶＲＦ）の基本的な実施態様を提供する。
【００８９】
ＶＲＦは、特殊な種類の電子署名である。我々は、メッセージｍのｉのこのような特殊な署名を示すために、ＶＲＦｉ（ｍ）を書くことができる。一意性の性質を満たすことに加えて、検証可能なランダム関数は、十分にランダムであることを保証される出力を生成する。すなわち、ＶＲＦｉ（ｍ）は本質的にランダムであり、それが生成されるまで予測できない。対して、ＳＩＧｉ（ｍ）は、十分にランダムである必要はない。例えば、ユーザｉは、ＳＩＧｉ（ｍ）が（辞書式順序で）小さい（すなわち、その最初の数ビットを必ず０とすることができるであろう）ｋビットストリングに必ずなるように自分の公開鍵を選ぶことができる。しかし、Ｈは理想的なハッシュ関数であるため、Ｈ（ＳＩＧｉ（ｍ））は必ずランダムな２５６ビットのストリングになることに留意されたい。我々の好適な実施形態において、一意のランダム数である各メッセージｍと各ユーザｉとに厳密に関連付けることができるよう、一意性の性質を満たす電子署名のハッシュ化を広範に利用する。万が一ＶＲＦを用いてアルゴランドを実施しても、Ｈ（ＳＩＧｉ（ｍ））をＶＲＦｉ（ｍ）に置換することができる。具体的には、ユーザｉは、最初にＳＩＧｉ（ｍ）を計算してからＨ（ＳＩＧｉ（ｍ））を計算する必要がない（例えば、Ｈ（ＳＩＧｉ（ｍ））を数ｐと比較するために）。当該ユーザは、ＶＲＦｉ（ｍ）を直接計算することができるだろう。要するに、Ｈ（ＳＩＧｉ（ｍ））は、ＶＲＦｉ（ｍ）として、または、プレーヤｉによって容易に計算されるが他の誰にも予測できず、ｉとｍとに曖昧さなく関連付けられている十分にランダムな数として解釈することができることは理解されるべきである。
【００９０】
・電子署名の３つの異なるニーズ
アルゴランドでは、ユーザｉは次のことについて電子署名に依拠する。
（１）認証するｉ自身の支払
このアプリケーションでは、鍵は「長期」にすることができ（すなわち、多くのメッセージに署名するために長期間使用される）、普通署名スキームに由来する。
（２）ラウンドｒのいくつかのステップｓで行為する権利をｉが与えられていることを証明するクレデンシャルの生成
ここでは、鍵は長期であることができるが、一意性の性質を満たすスキームに由来しなければならない。
（３）自分が行為する各ステップでｉが送るメッセージの認証
ここでは、鍵は一時的でなければならない（すなわち、最初に使用した後破壊される）が、普通署名スキームに由来することができる。
【００９１】
・小コストでの単純化
単純化のために、我々は、各ユーザｉが単一の長期的な鍵を有することを想定する。したがって、このような鍵は、一意性の性質を有する署名スキームに由来しなければならない。このような単純さの計算コストは少ない。通例、実際に、一意の電子署名は、生成および検証のコストが普通署名よりもわずかに高いだけである。
【００９２】
２．２  理想化された公開台帳
アルゴランドは、理想化された公開台帳に基づいて、以下の支払システムに近づけることに努める。
【００９３】
１．初期ステータス
マネーは、個々の公開鍵に関連付けられている（ユーザによって内密に生成されて所有される）。ｐｋ１，．．．，ｐｋｊを初期の公開鍵とし、ａ１，．．．，ａｊをそのそれぞれのマネー単位の初期金額とすると、初期ステータスは次の通りであり、
【数９】
2019519137.tif 000011
は、システム内の共通知識であると想定される。
【００９４】
２．支払
ｐｋを現在ａ≧０マネー単位を有する公開鍵とし、ｐｋ’を別の公開鍵とし、ａ’を、ａより大きくない負ではない数とする。すると、（有効な）支払
【数１０】
2019519137.tif 000012
は、ｐｋに対し、ａ’の通貨単位のｐｋからｐｋ’への移転をいくつかの追加情報と一緒に明記する電子署名である。記号で表すと、
【数１１】
2019519137.tif 000013
である。上記式において、Ｉは、有用であるがセンシティブではないと見なされる任意の追加情報（例、時間情報および支払識別子）を表し、
【数１２】
2019519137.tif 000014
は、センシティブと見なされる任意の追加情報（例、支払の理由、場合によってはｐｋおよびｐｋ’の所有者のアイデンティティ等）を表す。
【００９５】
我々は、ｐｋ（またはその所有者）を支払人と呼び、ｐｋ’（またはその所有者）を受取人と呼び、ａ’を支払
【数１３】
2019519137.tif 000015
の金額と呼ぶ。
【００９６】
支払を介した自由参加
ユーザは、自分自身の公開／秘密鍵ペアを生成することによって、参加したいときにいつでもシステムに参加できることに留意されたい。従って、上記支払
【数１４】
2019519137.tif 000016
で出現する公開鍵ｐｋ’は、以前にマネーを「所有」したことのない、新たに生成された公開鍵であり得る。
【００９７】
３．マジック台帳
理想化されたシステムでは、すべての支払が有効であり、誰もが
【数１５】
2019519137.tif 000017
を確認できるように、すべての支払が「天に転記された（ｐｏｓｔｅｄ  ｏｎ  ｔｈｅ  ｓｋｙ）」支払の集合の改ざん防止リストＬに表示される。
【００９８】
各ブロックＰＡＹｒ＋１は、ブロックＰＡＹｒの出現以降に行われたすべての支払の集合からなる。理想的なシステムでは、新たなブロックは、固定（または有限）量の時間後に出現する。
【００９９】
考察
・より一般的な支払および未使用のトランザクション出力
より一般的には、公開鍵ｐｋが金額ａを所有する場合、ｐｋの有効な支払
【数１６】
2019519137.tif 000018
は、Σｊａ’ｊ≦ａである限り、鍵ｐｋ’１，ｐｋ’２，．．．，にそれぞれ金額ａ’１，ａ’２，．．．，を移転することができる。
【０１００】
ビットコインおよび同様なシステムでは、公開鍵ｐｋが所有するマネーは個別の金額に分けられ、ｐｋが行う支払
【数１７】
2019519137.tif 000019
は、このように分けられた金額ａの全体を移転しなければならない。ｐｋがａの一部分ａ’＜ａのみを別の鍵に移転したい場合、未使用のトランザクション出力である残高も、別の鍵に、場合によってはｐｋ自体に移転しなければならない。
【０１０１】
アルゴランドも、金額を分けた鍵を用いて機能する。しかし、アルゴランドの新規な態様に注目するために、支払およびそれに関連付けられている単一の金額を有する鍵の単純化した形態に専念することが概念的により単純である。
【０１０２】
・現在のステータス
理想化されたスキームは、システムの現在のステータスに関する（すなわち、各公開鍵がどれくらいのマネー単位を有するかに関する）情報を直接提供しない。この情報は、マジック台帳から推論可能である。
【０１０３】
理想的なシステムでは、アクティブユーザは、最新のステータス情報を継続的に格納および更新するか、そうでなければ、最初から、または当該情報を計算した最後の時点から、当該情報を再構築しなければならないであろう。（ただし、アルゴランドのユーザが現在のステータスを効率的に再構築することを可能にすべく、アルゴランドをどのように拡大するかを後で示す。）
【０１０４】
・セキュリティおよび「プライバシー」
電子署名は、誰も他のユーザの支払を偽造できないことを保証する。支払
【数１８】
2019519137.tif 000020
では、公開鍵および金額は隠されていないが、センシティブ情報
【数１９】
2019519137.tif 000021
は隠されている。実際、
【数２０】
2019519137.tif 000022
のみが
【数２１】
2019519137.tif 000023
に出現し、Ｈは理想的なハッシュ関数であるため、
【数２２】
2019519137.tif 000024
はランダムな２５６ビット値であり、したがって、
【数２３】
2019519137.tif 000025
が何であったかを導き出すには、それを単に推測する以上の良い方法はない。しかし、
【数２４】
2019519137.tif 000026
が何であったかを証明するためには（例、支払の理由を証明するために）、支払人は
【数２５】
2019519137.tif 000027
を明らかにするだけでよい。明らかにされた
【数２６】
2019519137.tif 000028
の正当性は、
【数２７】
2019519137.tif 000029
を計算し、それから得られた値を
【数２８】
2019519137.tif 000030
の最後の項と比較することによって検証することができる。実際、Ｈは衝突耐性であるため、
【数２９】
2019519137.tif 000031
であるような第２の値
【数３０】
2019519137.tif 000032
を見つけるのは難しい。
【０１０５】
２．３  基本的な概念および表記法
鍵、ユーザおよび所有者
特に明記されない限り、各公開鍵（略して「鍵」）は長期的なものであり、一意性の性質を有する電子署名スキームに関連するものである。公開鍵ｉは、既にシステムにある別の公開鍵ｊがｉに支払を行うと、システムに加入する。
【０１０６】
特徴付けのため、鍵は擬人化される。鍵ｉは「彼（ｈｅ）」と呼ばれ、ｉは正直である、ｉはメッセージを送受信する、等のように表現される。ユーザは鍵の同義語である。鍵をその持ち主である人から区別したい場合、それぞれ「デジタル鍵」および「所有者」という用語を使用する。
【０１０７】
非許可型システムと許可型システム
システムは、デジタル鍵がいつでも自由に加入し、所有者が複数のデジタル鍵を所有することができる場合に非許可型であり、それ以外は許可型である。
【０１０８】
一意の表現
アルゴランド内の各オブジェクトは一意の表現を有する。具体的には、各集合｛（ｘ，ｙ，ｚ，．．．）：ｘ∈Ｘ，ｙ∈Ｙ，ｚ∈Ｚ｝は、予め指定されたように順序付けされる。例えば、辞書式順序で最初にｘに、次にｙに、等。
【０１０９】
同一スピードのクロック
グローバルなクロックは存在しない。むしろ、各ユーザは自分自身のクロックを有する。ユーザのクロックは一切同期させる必要はない。しかし、ユーザのクロックはすべて同一スピードを有すると想定される。
【０１１０】
例えば、ユーザｉのクロックで午後１２時のとき、別のユーザｊのクロックでは午後２時３０分かもしれないが、ｉのクロックで１２時０１分になるとき、ｊのクロックでは２時３１分になる。すなわち、「１分はすべてのユーザにとって同じ（十分に、本質的に同じ）である」。
【０１１１】
ラウンド
アルゴランドは、ラウンドと呼ばれる論理ユニットｒ＝０，１，．．．，に整理される。
【０１１２】
我々は、ラウンドを示すために一貫して上付き文字を使用する。非数値数量Ｑ（例、ストリング、公開鍵、集合、電子署名、等）がラウンドｒを参照することを示すために、単にＱｒと書く。Ｑが（数として解釈できるバイナリストリングではなく）本物の数であるときに限り、Ｑ（ｒ）と書いて、記号ｒがＱの指数として解釈できないようにする。
【０１１３】
ラウンドｒ＞０（の始まり）で、全公開鍵の集合はＰＫｒであり、システムのステータスは次の通りである。
【数３１】
2019519137.tif 000033
上記式において、ａｉ（ｒ）は、公開鍵ｉが利用できるマネーの金額である。ＰＫｒはＳｒから推論可能であり、Ｓｒは各公開鍵ｉの他の成分も指定できることに留意されたい。
【０１１４】
ラウンド０の場合、ＰＫ０は初期公開鍵の集合であり、Ｓ０は初期ステータスである。ＰＫ０およびＳ０のどちらも、システムにおいて共通知識であると想定される。単純にするために、ラウンドｒの始まりで、ＰＫ１，．．．，ＰＫｒおよびＳ１，．．．，Ｓｒもそうする。
【０１１５】
ラウンドｒで、システムのステータスはＳｒからＳｒ＋１に移行する。記号で表すと、
【数３２】
2019519137.tif 000034
である。
【０１１６】
支払
アルゴランドにおいて、ユーザは継続的に支払を行う（また、サブセクション２．７で説明するようにそれを伝播する）。ユーザｉ∈ＰＫｒの支払
【数３３】
2019519137.tif 000035
は、理想的なシステムと同じフォーマットおよび意味論を有する。すなわち、
【数３４】
2019519137.tif 000036
である。
【０１１７】
支払
【数３５】
2019519137.tif 000037
は、（１）その金額ａがａｉ（ｒ）以下の場合、かつ、（２）ｒ’＜ｒの正式な支払集合ＰＡＹｒ’に出現していない場合、ラウンドｒで個々に有効である（略して、ラウンドｒ支払である）。（以下に説明するように、２番目の条件は、
【数３６】
2019519137.tif 000038
がまだ有効になっていないことを意味する。）
【０１１８】
ｉのラウンドｒ支払の集合は、その金額の総額がたかだかａｉ（ｒ）である場合に、集合的に有効である。
【０１１９】
支払集合
ラウンドｒ支払集合
【数３７】
2019519137.tif 000039
は、各ユーザｉについて、
【数３８】
2019519137.tif 000040
内のｉの支払（場合によっては、無い）が集合的に有効であるようなラウンドｒ支払の集合である。すべてのラウンドｒ支払集合の集合は
【数３９】
2019519137.tif 000041
である。ラウンドｒ支払集合
【数４０】
2019519137.tif 000042
は、
【数４１】
2019519137.tif 000043
のどの上位集合もラウンドｒ支払集合ではない場合に極大になる。
【０１２０】
我々は、支払
【数４２】
2019519137.tif 000044
はラウンドρ，
【数４３】
2019519137.tif 000045
も指定し、負ではないいくつかの一定の整数ｋについて、［ρ，ρ＋ｋ］以外のどのラウンドでも有効にできないことを実際に提案する（脚注３参照）。
【０１２１】
脚注３
これは、
【数４４】
2019519137.tif 000046
が「有効」になったかどうかのチェックを単純にする（すなわち、いくつかの支払集合ＰＡＹｒが
【数４５】
2019519137.tif 000047
を含むかどうかの判定を単純にする）。ｋ＝０のとき、
【数４６】
2019519137.tif 000048
かつ
【数４７】
2019519137.tif 000049
であれば、ｉは
【数４８】
2019519137.tif 000050
を再提出しなければならない。
【０１２２】
正式な支払集合
どのラウンドｒについても、アルゴランドは、ラウンドの正式な支払集合である単一の（場合によっては空の）支払集合ＰＡＹｒを（後で説明するやり方で）公開で選択する。（本質的に、ＰＡＹｒは、「実際に」起こったラウンドｒ支払を表す。）
【０１２３】
理想的なシステム（およびビットコイン）と同様に、（１）新たなユーザｊがシステムに入る唯一の方法は、所与のラウンドｒの正式な支払集合ＰＡＹｒに属す支払の受取人になることであり、（２）ＰＡＹｒは、現行のラウンドＳｒのステータスから、次のラウンドＳｒ＋１のステータスを判定する。記号にすると、
【数４９】
2019519137.tif 000051
具体的には、
１．ラウンドｒ＋１の公開鍵の集合ＰＫｒ＋１は、ＰＫｒと、初めてＰＡＹｒの支払で出現するすべての受取人の鍵の集合との和集合からなり、
２．ユーザｉがラウンドｒ＋１に所有するマネーａｉ（ｒ＋１）の金額は、ａｉ（ｒ）の総額、すなわち、前のラウンドでｉが所有したマネーの金額（
【数５０】
2019519137.tif 000052
の場合０）、およびＰＡＹｒの支払に従いｉに支払われた金額の総額である。
【０１２４】
要するに、理想的なシステムと同様に、各ステータスＳｒ＋１は前の支払履歴
【数５１】
2019519137.tif 000053
から推論可能である。
【０１２５】
２．４  ブロックおよび証明済みブロック
アルゴランド０では、ラウンドｒに対応するブロックＢｒは、ｒ自体、ラウンドｒの支払の集合ＰＡＹｒ、説明される数量
【数５２】
2019519137.tif 000054
、および前のブロックのハッシュＨ（Ｂｒ−１）を指定する。したがって、いくつかの固定ブロックＢ０から始まる従来のブロックチェーン
【数５３】
2019519137.tif 000055
を有する。
【０１２６】
アルゴランドでは、ブロックの真正性は、実際は個々の情報の「ブロック証明書」ＣＥＲＴｒによって保証され、これはＢｒを証明済みブロック
【数５４】
2019519137.tif 000056
に変える。そのためマジック台帳は、証明済みブロックのシーケンス
【数５５】
2019519137.tif 000057
によって実施される。
【０１２７】
考察
後で述べるように、ＣＥＲＴｒは、ＳＶｒのメンバーの過半数のものであるＨ（Ｂｒ）の電子署名の集合と、当該メンバーのそれぞれが実際にＳＶｒに所属していることの証明とを合わせたものからなる。当然、我々は、ブロック自体に証明書ＣＥＲＴｒを含むことができるだろうが、ＣＥＲＴｒを分けておく方が概念的により明解であると考える。
【０１２８】
ビットコインでは、各ブロックが特別な性質を満たさなければならず、すなわち、「暗号パズルの解を含まな」ければならず、そのため、ブロック生成が計算集約的になり、分岐は不可避であり、かつ、珍しいことではない。対して、アルゴランドのブロックチェーンには２つの主な利点がある。すなわち、アルゴランドのブロックチェーンは、最小限の計算で生成されることと、圧倒的に高い確率で分岐しないことである。各ブロックＢｒは、ブロックチェーンに入るや否や、安全に確定的になる。
【０１２９】
２．５  許容可能な故障確率
アルゴランドのセキュリティを分析するために、我々は、何かがうまくいかない（例、検証者集合ＳＶｒが誠実な過半数を持たない）ことを許容しても構わない確率Ｆを指定する。暗号学的ハッシュ関数Ｈの出力長の場合と同じく、Ｆもパラメータである。しかし、その場合と同じく、アルゴランドで、十分なセキュリティと十分な効率とを同時に享受することが実際に可能であることをより直観的に理解できるように、Ｆを具体的な値に設定することが便利だと考える。Ｆが望みどおりに設定することのできるパラメータであることを強調するために、第１および第２の実施形態で、我々はそれぞれ次のように設定する。
【数５６】
2019519137.tif 000058
および
【数５７】
2019519137.tif 000059
【０１３０】
考察
１０−１２は実際には１兆分の１未満であることに留意し、このようなＦの選択は我々のアプリケーションに適切であると考える。１０−１２は、敵対者が誠実なユーザの支払を偽造することのできる確率ではないことを強調させてほしい。すべての支払は電子署名され、したがって、正規の電子署名が使用される場合、支払を偽造する確率は１０−１２よりもはるかに低く、実際、本質的に０である。確率Ｆで許容しても構わない不都合なイベントは、アルゴランドのブロックチェーンが分岐することである。我々のＦの設定と１分の長いラウンドの場合、フォークがアルゴランドのブロックチェーンで起こるのは、１９０万年で（ほぼ）１回程度と稀であると予想されることに注意されたい。対して、ビットコインでは、フォークはかなり頻繁に起こる。
【０１３１】
より多くを要求する人は、Ｆをさらに低い値に設定するかもしれない。このために、我々の第２の実施形態では、Ｆを１０−１８に設定することを検討する。ブロックが毎秒生成されると仮定すると、１０１８は、ビッグバンから現在まで、今までに宇宙が経た推定秒数である。したがって、Ｆ＝１０−１８の場合、ブロックが１秒で生成されるとすると、宇宙の年齢でフォークを１回経験すると見込めるだろう。
【０１３２】
２．６  敵対的なモデル
アルゴランドは、非常に敵対的なモデルにおいてセキュアであるように設計される。説明しよう。
【０１３３】
誠実なユーザと悪意のユーザ
ユーザは、自分のプロトコル命令のすべてに従い、メッセージの送受信を完璧にすることが可能である場合、誠実である。ユーザは、自分の規定された命令から任意に逸脱できる場合、悪意である（すなわち、分散コンピューティングの専門用語で、ビザンチン）。
【０１３４】
敵対者
敵対者とは、本物のように擬人化されて、自分の望むどのユーザも、自分の望むいかなる時にでも直ちに悪意にすることのできる、効率的な（技術的に多項式時間）アルゴリズムである（腐敗させることのできるユーザ数に上限のみが課される）。
【０１３５】
敵対者は、すべての悪意のユーザを完全に支配し、完璧に協調させる。当該敵対者は、当該悪意のユーザのメッセージの送受信を含め、当該悪意のユーザの代わりにあらゆるアクションを取り、当該悪意のユーザを、その規定された命令から任意の方法で逸脱させることができる。または、メッセージを送受信する腐敗したユーザを単に隔離することができる。ｉの悪意は、敵対者がユーザｉに取ったアクションによって発生することがあるが、ユーザｉが悪意であることは他の誰にも自動的には分からないことを明確にさせてほしい。
【０１３６】
しかし、このパワフルな敵対者は、
・無限の計算力を持つわけではなく、無視できる確率を除き、誠実なユーザの電子署名をうまく偽造することはできず、
・誠実なユーザ間のメッセージ交換に一切干渉することはできない。
【０１３７】
また、敵対者の、誠実なユーザを攻撃できる能力は、次の仮定のうちの１つによって制限される。
【０１３８】
マネーの誠実な過半数
我々は、「マネーの誠実な過半数（ＨＭＭ）」の仮定の連続体を検討する。すなわち、負ではない各整数ｋおよび実数ｈ＞１／２について、
「ＨＨＭｋ＞ｈ：すべてのラウンドｒの誠実なユーザは、ラウンドｒ−ｋにおけるシステム内のすべてのマネーｈよりも大きな割合を占めた。」
【０１３９】
考察
悪意のユーザ全員が（まるで単一のエンティティの敵対者によって支配されるように）自分たちのアクションを完璧に協調させると仮定することは、かなり悲観的な仮説である。多すぎる個人の間での完璧な協調は、実現するのが難しい。多分、協調は悪意のプレーヤの個別の集団内でしか起こらないかもしれない。しかし、悪意のユーザが享受できる協調のレベルに関して確信することはできないので、用心に越したことはない。
【０１４０】
敵対者が、秘密裡に、ダイナミックに、かつ、直ちにユーザを腐敗させることができると仮定することも悲観的である。結局、現実的には、ユーザの操作を完全に支配するには多少時間がかかるはずである。
【０１４１】
例えば、仮定ＨＭＭｋ＞ｈは、（平均して）１ラウンドが１分で実施される場合、ｋ＝１２０であれば、所与のラウンドにおけるマネーの過半数は少なくとも２時間は誠実者の手元に残ることになり、ｋ＝１０，０００であれば少なくとも１週間になる。
【０１４２】
ＨＭＭの仮定と、前の計算力の誠実な過半数の仮定とは、計算力がマネーで買えることから、悪意のユーザがマネーのほとんどを所有している場合、悪意のユーザが計算力のほとんどを取得することができるという意味で関連していることに留意されたい。
【０１４３】
２．７  通信モデル
我々は、メッセージの伝播、すなわち「ピアツゥピアゴシップ」（脚注４参照）を唯一の通信手段にすることを想定し、伝播されるすべてのメッセージが、ほぼ全員の誠実なユーザに適時に到達すると仮定する。誠実なユーザによって伝播される各メッセージｍは、ｍの長さに依存する所与の時間量内に誠実なユーザ全員に到達すると本質的に仮定する。（実際には、ｍは、誠実なユーザの十分に高いパーセンテージに到達すれば十分である。）
【０１４４】
脚注４
本質的に、ビットコインと同様に、ユーザがメッセージｍを伝播する場合、初めてｍを受信するすべてのアクティブユーザｉは、自分がｍを転送する、適切に小さい数のアクティブユーザの「隣人」を、場合によっては隣人から受領確認を受信するまで、ランダムかつ独立して選択する。ｍの伝播は、初めてｍを受信するユーザがいなくなると終了する。
【０１４５】
３  従来の設定におけるＢＡプロトコルＢＡ★
既に強調したように、ビザンチン合意はアルゴランドの重要な構成要素である。実際、アルゴランドがフォークによる影響を受けないのは、このようなＢＡプロトコルを使用するからである。しかし、パワフルな敵対者に対してセキュアでいるために、アルゴランドは、新たなプレーヤ代替性の制約を満たすＢＡプロトコルに依拠しなければならない。加えて、アルゴランドが効率的であるために、このようなＢＡプロトコルは非常に効率的でなければならない。
【０１４６】
ＢＡプロトコルは、最初に、理想化された通信モデル、同期完全ネットワーク（ＳＣネットワーク）について定義された。このようなモデルは、ＢＡプロトコルのより単純な設計および分析を可能にする。したがって、このセクションでは、ＳＣネットワークの新たなＢＡプロトコルであるＢＡ★を紹介し、プレーヤ代替性の問題は完全に無視する。プロトコルＢＡ★は、個別の価値のある寄与分である。実際、今まで分かっている中で最も効率的な、ＳＣネットワーク用の暗号学的ＢＡプロトコルである。
【０１４７】
これを我々のアルゴランドプロトコル内で使用するために、ＢＡ★をわずかに変更して、我々の異なる通信モデルおよびコンテキストを考慮できるようにする。
【０１４８】
我々は、ＢＡ★が動作するモデルとビザンチン合意の概念とを思い出すことから始める。
【０１４９】
３．１  同期完全ネットワークおよび合致する敵対者
ＳＣネットワークでは、各整数時刻ｒ＝１，２，．．．に時を刻む共通のクロックがある。
【０１５０】
各偶数のタイムクリックｒで、各プレーヤｉは、自分自身を含めた各プレーヤｊに単一のメッセージｍｒｉ，ｊ（場合によっては空のメッセージ）を即座にかつ同時に送信する。各ｍｒｉ，ｊは、タイムクリックｒ＋１でプレーヤｊによって、送信者ｉのアイデンティティとともに正しく受信される。
【０１５１】
ここでも、通信プロトコルで、プレーヤは、自分の規定された命令のすべてに従う場合は誠実で、そうでない場合は悪意である。すべての悪意のプレーヤは敵対者によって完全に支配され、完璧に協調され、敵対者は、具体的には、悪意のプレーヤに宛てて送られたすべてのメッセージを直ちに受信し、当該悪意のプレーヤが送信するメッセージを選ぶ。
【０１５２】
敵対者は、自分が望む誠実なユーザを、自分が望む奇数のタイムクリックで直ちに悪意にすることができ、悪意のプレーヤの数に対し、考えられる上限ｔのみが課される。すなわち、敵対者は「誠実なユーザｉによって既に送信されたメッセージを妨害することはできず」、そうしたメッセージは通常通り配信される。
【０１５３】
敵対者は、各偶数ラウンドで、現時点では誠実なプレーヤが送信するメッセージを即座に見て、同じタイムチックで悪意のプレーヤが送信するメッセージを選ぶためにこの情報を即座に使用する追加能力も有する。
【０１５４】
３．２  ビザンチン合意の概念
ビザンチン合意の概念が初めて紹介されたのは、バイナリケースについて、すなわちすべての初期値が１ビットからなるときであったかもしれない。しかし、任意の初期値にすぐに拡張された。ＢＡプロトコルによって、我々は任意の値１を意味する。
【０１５５】
定義  ３．１．
同期ネットワークでは、
【数５８】
2019519137.tif 000060
をｎプレーヤプロトコルにし、そのプレーヤ集合はプレーヤｔ間の共通知識であり、ｔはｎ≧２ｔ＋１になるような正の整数である。特殊記号⊥を含まない値Ｖのすべての集合（それぞれ、Ｖ＝｛０，１｝）について、プレーヤのうちのたかだかｔ人が悪意であり、すべてのプレーヤｉが初期値ｖｉ∈Ｖから始まる実行において、すべての誠実なプレーヤｊが確率１で停止し、値ｏｕｔｉ∈Ｖ∪｛⊥｝を出力するので、少なくともσの確率で、以下の２つの条件を満たす場合、
【数５９】
2019519137.tif 000061
は、健全性σ∈（０，１）を有する任意の値（それぞれ、バイナリ）（ｎ，ｔ）ビザンチン合意プロトコルであるという。
１．合意：ｏｕｔｉ＝すべての誠実なプレーヤｉのｏｕｔになるようなｏｕｔ∈Ｖ∪｛⊥｝が存在する。
２．一貫性：プレーヤｉ全員について、ある値ｖ∈Ｖ，ｖｉ＝ｖの場合、ｏｕｔ＝ｖ。
我々は、ｏｕｔを
【数６０】
2019519137.tif 000062
の出力といい、各ｏｕｔｉをプレーヤのｉの出力という。
【０１５６】
３．３  ＢＡの記号＃
我々のＢＡプロトコルでは、プレーヤには、どれくらいの数のプレーヤが自分に所与のメッセージを所与のステップで送信したかを数えるよう要求される。したがって、送信されるかもしれない起こり得る各値ｖについて、
【数６１】
2019519137.tif 000063
（または、ｓが明確である場合、単に＃ｉ（ｖ））は、ｉがステップｓでｖを受信したプレーヤｊの数である。
【０１５７】
プレーヤｉが各プレーヤｊからまさしく１つのメッセージを受信することを思い出すと、プレーヤの数がｎの場合、すべてのｉおよびｓについて、
【数６２】
2019519137.tif 000064
である。
【０１５８】
３．４  新たなバイナリＢＡプロトコルＢＢＡ★
このセクションでは、プレーヤの３分の２よりも多くの誠実者に依拠し、かつ非常に高速な新たなバイナリＢＡプロトコル、ＢＢＡ★を提示する。悪意のプレーヤがどのようなことを行おうとも、その主なループの各実行は自明に実行されるだけでなく、１／３の確率でプレーヤを合意に至らせる。
【０１５９】
ＢＢＡ★では、各プレーヤは、一意署名性質を満たす電子署名スキームの、自分自身の公開鍵を有する。このプロトコルは同期完全ネットワークで実行されることが意図されるため、プレーヤｉが自分のメッセージのそれぞれに署名する必要はない。
【０１６０】
電子署名は、ステップ３で十分に一般的なランダムビットを生成するために使用される。（アルゴランドでは、電子署名は、他のすべてのメッセージを認証するためにも同様に使用される。）
【０１６１】
プロトコルは、最低限のセットアップ、すなわち、プレーヤの鍵とは独立した一般的なランダムストリングｒが必要である。（アルゴランドでは、ｒは実際には数量Ｑｒに置換される。）
【０１６２】
プロトコルＢＢＡ★は３ステップループであり、プレーヤがブール値を繰返し交換し、異なるプレーヤは異なる時点でこのループを出ることができる。プレーヤｉは、いくつかのステップで、特殊値０＊または特殊値１＊のいずれかを伝播し、それによって、プレーヤ全員に、将来のすべてのステップでｉから０および１をそれぞれ受信する「ふりをする」よう指示することによって、このループから出る。（別の言い方をすると、プレーヤｊが別のプレーヤｉから受信する最後のメッセージはビットｂであったと仮定する。すると、ｉからメッセージを受信しないステップでは、ｊは、ｉが自分にビットｂを送信したものとして行為する。）
【０１６３】
このプロトコルは、その３ステップループが何回実行されたかを表すカウンタγを使用する。ＢＢＡ★の始まりでは、γ＝０である。（γをグローバルカウンタとして考えてもよいが、実際にはループが実行される度に、各個々のプレーヤによって増やされる。）
【０１６４】
ｔが、悪意のプレーヤの考えられる最大数である場合、ｎ≧３ｔ＋１である。バイナリストリングｘは、そのバイナリ表現（先頭に０が付く場合あり）がｘである整数で識別され、ｌｓｂ（ｘ）はｘの最下位ビットを表す。
【０１６５】
プロトコルＢＢＡ★
（通信）ステップ１．［コインを０に固定するステップ］各プレーヤｉはｂｉを送信する。
１．１  ＃ｉ１（０）≧２ｔ＋１の場合、ｉはｂｉ＝０を設定し、０＊を送信し、ｏｕｔｉ＝０を出力して、停止する。
１．２  ＃ｉ１（１）≧２ｔ＋１の場合、ｉはｂｉ＝１を設定する。
１．３  それ以外は、ｉはｂｉ＝０を設定する。
【０１６６】
（通信）ステップ２．［コインを１に固定するステップ］各プレーヤｉはｂｉを送信する。
２．１  ＃ｉ２（１）≧２ｔ＋１の場合、ｉはｂｉ＝１を設定し、１＊を送信し、ｏｕｔｉ＝１を出力して、停止する。
２．２  ＃ｉ２（０）≧２ｔ＋１の場合、ｉはｂｉ＝０を設定する。
２．３  それ以外は、ｉはｂｉ＝１を設定する。
【０１６７】
（通信）ステップ３．［実際にコインを投げるステップ］各プレーヤｉはｂｉおよびＳＩＧｉ（ｒ，γ）を送信する。
３．１  ＃ｉ３（０）≧２ｔ＋１の場合、ｉはｂｉ＝０を設定する。
３．２  ＃ｉ３（１）≧２ｔ＋１の場合、ｉはｂｉ＝１を設定する。
３．３  それ以外は、Ｓｉ＝｛このステップ３でｉに正規のメッセージを送信したｊ∈Ｎ｝として、ｉは
【数６３】
2019519137.tif 000065
を設定し、１ずつγｉを増やし、ステップ１に戻る。
【０１６８】
定理３．１．
ｎ≧３ｔ＋１の場合は必ず、ＢＢＡ★は、健全性１のバイナリ（ｎ，ｔ）−ＢＡプロトコルである。
【０１６９】
定理３．１の証明は、ｈｔｔｐｓ：／／ｐｅｏｐｌｅ．ｃｓａｉｌ．ｍｉｔ．ｅｄｕ／ｓｉｌｖｉｏ／Ｓｅｌｅｃｔｅｄ−ＳｃｉｅｎｔｉｆｉｃＰａｐｅｒｓ／ＤｉｓｔｒｉｂｕｔｅｄＣｏｍｐｕｔａｔｉｏｎ／ＢＹＺＡＮＴＩＮＥＡＧＲＥＥＭＥＮＴＭＡＤＥＴＲＩＶＩＡＬ．１５ｐｄｆに掲載されている。
【０１７０】
３．５  段階的コンセンサスおよびプロトコルＧＣ
任意の値について、コンセンサスの概念はビザンチン合意よりもはるかに弱いことを思い出そう。
【０１７１】
定義３．２．
【数６４】
2019519137.tif 000066
を、全プレーヤの集合が共通知識で、各プレーヤｉが任意の初期値ｖ’ｉを秘かに知っているプロトコルとする。
【０１７２】
ｎ人のプレーヤのいるすべての実行において、そのうちのたかだかｔ人が悪意である場合、すべての誠実なプレーヤｉが以下の３つの条件を満たすように値段階ペア（ｖｉ，ｇｉ）の出力を停止する場合、
【数６５】
2019519137.tif 000067
は（ｎ，ｔ）−段階的なコンセンサスであるという。ここでｇｉ∈｛０，１，２｝である。
１．すべての誠実なプレーヤｉおよびｊについて、｜ｇｉ−ｇｊ｜≦１である。
２．すべての誠実なプレーヤｉおよびｊについて、ｇｉ，ｇｊ＞０⇒ｖｉ＝ｖｊである。
３．ある値ｖについてｖ’ｉ＝・・・＝ｖ’ｎ＝ｖの場合、すべての誠実なプレーヤｉについて、ｖｉ＝ｖ、かつ、ｇｉ＝２である。
【０１７３】
以下の２ステッププロトコルＧＣは、文献の段階的コンセンサスプロトコルである。セクション４．１のプロトコルアルゴランド’１のステップと整合させるために、ＧＣのステップをそれぞれ２および３と命名する。（実際、アルゴランド’１の最初のステップは、他の何か、すなわち、新ブロックの提案に関係する。）
【０１７４】
プロトコルＧＣ
ステップ２．各プレーヤｉは、ｖ’ｉを全プレーヤに送信する。
【０１７５】
ステップ３．各プレーヤｉは、＃ｉ２（ｘ）≧２ｔ＋１の場合、かつ、その場合にのみ、ストリングｘを全プレーヤに送信する。
【０１７６】
出力の判定．各プレーヤｉは、次の通り計算されたペア（ｖｉ，ｇｉ）を出力する。
・あるｘについて、＃ｉ３（ｘ）≧２ｔ＋１の場合、ｖｉ＝ｘ、かつ、ｇｉ＝２である。
・あるｘについて、＃ｉ３（ｘ）≧ｔ＋１の場合、ｖｉ＝ｘ、かつ、ｇｉ＝１である。
・それ以外は、ｖｉ＝⊥、かつ、ｇｉ＝０である。
【０１７７】
プロトコルＧＣは文献のプロトコルであるため、次の定理が成り立つことが分かっている。
【０１７８】
定理３．２．
ｎ≧３ｔ＋１の場合、ＧＣは（ｎ，ｔ）−段階的ブロードキャストプロトコルである。
【０１７９】
３．６  プロトコルＢＡ★
ここで、任意値ＢＡプロトコルＢＡ★を、バイナリＢＡプロトコルＢＢＡ★および段階的コンセンサスプロトコルＧＣにより説明する。以下、各プレーヤｉの初期値はｖ’ｉである。
【０１８０】
プロトコルＢＡ★
ステップ１および２．各プレーヤｉは、入力ｖ’ｉにＧＣを実行して、ペア（ｖｉ，ｇｉ）を計算する。
【０１８１】
ステップ３，．．．各プレーヤｉは、ｇｉ＝２の場合初期入力が０で、それ以外は１として、ＢＢＡ★を実行して、ビットｏｕｔｉを計算する。
【０１８２】
出力の判定．各プレーヤｉは、ｏｕｔｉ＝０の場合ｖｉを出力し、それ以外は⊥を出力する。
【０１８３】
定理３．３．
ｎ≧３ｔ＋１の場合は必ず、ＢＡ★は、健全性１の（ｎ，ｔ）−ＢＡプロトコルである。
【０１８４】
証明．まず、整合性を証明してから、合意を証明する。
整合性の証明
ある値ｖ∈Ｖについて、ｖ’ｉ＝ｖと仮定する。さらに、段階的コンセンサスの性質３によって、ＧＣの実行後、すべての誠実なプレーヤは（ｖ，２）を出力する。したがって、０は、ＢＢＡ★の実行の終了時のすべての誠実なプレーヤの初期ビットである。したがって、ＢＡ★の実行の終了時点で、バイナリビザンチン合意の合意性質によって、すべての誠実なプレーヤについてｏｕｔｉ＝０である。これは、ＢＡ★における各誠実なプレーヤｉの出力がｖｉ＝ｖであることを含意する。
【０１８５】
合意の証明
ＢＢＡ★がバイナリＢＡプロトコルであるため、次のいずれかである。
（Ａ）すべての誠実なプレーヤｉについてｏｕｔｉ＝１、または
（Ｂ）すべての誠実なプレーヤｉについてｏｕｔｉ＝０
【０１８６】
ケースＡでは、すべての誠実なプレーヤはＢＡ★で⊥を出力し、したがって合意が成り立つ。ここでケースＢを考えてみる。この場合、ＢＢＡ★の実行において、少なくとも１人の誠実なプレーヤｉの初期ビットは０である。（実際、すべての誠実なプレーヤの初期ビットが１だった場合、ＢＢＡ★の整合性の性質によって、すべての誠実者ｊについてｏｕｔｊ＝１になるであろう。）したがって、ＧＣの実行後、ｉは、ある値ｖについてペア（ｖ，２）を出力する。このように、段階的コンセンサスの性質１によって、すべての誠実なプレーヤｊについてｇｊ＞０である。したがって、段階的コンセンサスの性質２によって、すべての誠実なプレーヤｊについてｖｊ＝ｖである。これは、ＢＡ★の終了時点で、すべての誠実なプレーヤｊがｖを出力することを含意する。ケースＢでも合意は成り立つ。
【０１８７】
整合性および合意の両方が成り立つため、ＢＡ★は任意値ＢＡプロトコルである。
【０１８８】
プロトコルＢＡ★はゴシップネットワークでも機能し、実際、想定される非常に敵対的なモデルでアルゴランドがセキュアであるために極めて大事な、プレーヤ代替性の性質を満たす。
【０１８９】
ＢＢＡ★およびＢＡ★のプレーヤ代替性
ここで、プロトコルＢＡ★およびＢＢＡ★が、通信がピアツーピアゴシップを介するネットワークで実行されて、プレーヤ代替性を満たすようになぜ適応できるのかについての、いくつかの直観を提供しよう。具体的にするために、ネットワークは１千万人のユーザを有し、ＢＢＡ★（またはＢＡ★）の各ステップｘが１０，０００人のプレーヤの委員会によって実行され、当該プレーヤは、秘密暗号くじによりランダムに選択されて、したがってステップｘでメッセージを送信する権利を与えられていることを証明するクレデンシャルを有すると仮定する。所与のステップで送信された各メッセージはステップ数を明記し、その送信者によって電子署名され、その送信者がそのステップで話す権利を与えられていることを証明するクレデンシャルを含むと仮定する。
【０１９０】
まず、誠実なプレーヤのパーセンテージｈが２／３よりも十分に大きい（例、７５％）場合、圧倒的確率で、各ステップで選択される委員会は、必要な２／３の誠実な過半数を有する。
【０１９１】
加えて、総勢１０，０００人のランダムに選択される委員会が各ステップで変わることは、ＢＢＡ★またはＢＡ★のいずれについても、それが正当に機能することを邪魔しない。実際、いずれのプロトコルでも、ステップｓのプレーヤｉは、ステップｓ−１で当該プレーヤｉが所与のメッセージｍを一緒に受信した多数の人にしか反応しない。我々はゴシップネットワークにいるので、ステップｓ−１で送信されるすべてのメッセージは、（この直観のために、直ちに）ステップｓでプレイするために選択されたものを含め、全ユーザに到達する。ステップｓ−１で送信されるすべてのメッセージは、ステップ数を明記し、かつ、ステップｓ−１で話す許可が送信者に実際に与えられているというクレデンシャルを含む。したがって、ステップｓ−１でも偶然選択されていたかどうかに関係なく、ステップｓでプレイするよう選択されたユーザｉは、正当なステップｓ−１メッセージを一緒に受信した多数の人を正確にカウントすることが完璧にできる。当該ユーザｉがそれまでにすべてのステップをプレイしていたかどうかは全く問題ではない。全ユーザは「同じ立場に」あり、したがって他のユーザによって容易に代替することができる。
【０１９２】
４  アルゴランドの２つの実施形態
述べたように、非常に高次で、アルゴランドのラウンドは理想的には以下のように進行する。まず、ランダムに選択されたユーザであるリーダーが、新たなブロックを提案して、回付する。（このプロセスは、最初に少数の潜在的リーダーを選択し、次に、少なくともある程度の時間、１人の共通のリーダーが出現することを確保することを含む。）次に、ランダムに選択されたユーザの委員会が選択され、リーダーが提案したブロックに対してビザンチン合意に達する。（このプロセスは、ＢＡプロトコルの各ステップが、個別に選択された委員会によって実行されることを含む。）そして、合意されたブロックに、委員会メンバーの所与の閾値（ＴＨ）が電子署名する。新たなブロックがどれかを誰もが確信するように、これらの電子署名を伝播する。（これには、署名者のクレデンシャルを回付することと、新たなブロックのハッシュだけを認証することと、そのハッシュが明確にされたら、誰もが当該ブロックを知ることを保証されることを確実にすることを含む。）
【０１９３】
次の２つのセクションで、基本的なアルゴランドであるアルゴランド’１およびアルゴランド’２の設計の２つの実施形態を提示するが、これらはそれぞれ正規の誠実なユーザの過半数の仮定の下で機能する。セクション８に、「マネーの誠実な過半数」の仮定の下で機能するように、これらの実施形態をどのように採用するかを示す。
【０１９４】
アルゴランド’１は、委員会メンバーの＞２／３が誠実であることのみを想定する。加えて、アルゴランド’１では、ビザンチン合意に達するためのステップの数に、適切に高い数の上限を設けるので、合意は、固定数のステップ内で、圧倒的確率で達することが保証される（ただし、潜在的には、アルゴランド’２のステップよりも長い時間が必要である）。最後のステップでもまだ合意に達しない極稀なケースでは、委員会が空のブロックに合意し、これは必ず有効である。
【０１９５】
アルゴランド’２は、委員会の誠実なメンバーの数が必ず固定閾値ｔＨ以上であると想定する（このことは、圧倒的確率で委員会メンバーの少なくとも２／３が誠実であることを保証する）。加えて、アルゴランド’２は、任意の数のステップ（ただし、時間は潜在的にアルゴランド’１よりも短い）でビザンチン合意に達する。
【０１９６】
当業者は、これらの基本的な実施形態の多くの変型が導き出せることを認識するだろう。特に、アルゴランド’２があれば、ビザンチン合意に任意の数のステップで達することができるようにアルゴランド’１を修正するのは簡単である。
【０１９７】
いずれの実施形態も、下記の共通コア、記号、概念およびパラメータを共有する。
【０１９８】
４．１  共通コア
目的
理想的には、各ラウンドｒについて、アルゴランドは次の性質を満たすべきである。
１．完璧な正当性．すべての誠実なユーザは、同じブロックＢｒに合意する。
２．完全性１．確率１で、ブロックＢｒは、誠実なユーザによって選ばれている。
【０１９９】
（実際、悪意のユーザは、必ず、支払集合が自分の「友人」だけの支払を含むブロックを選ぶだろう。）
【０２００】
当然、完璧な正当性を保証するだけでは自明である。誰もが必ず、空である正式な支払集合ＰＡＹｒを選ぶ。しかし、この場合、システムの完全性は０になるだろう。残念ながら、完璧な正当性と完全性１の両方を保証することは、悪意のユーザの存在下では容易ではない。したがって、アルゴランドは、より現実的な目的を採用する。略式に、誠実なユーザの割合をｈとすると、アルゴランドの目標であるｈ＞２／３は、
「圧倒的確率で、ｈに近い完璧な正当性および完全性を保証する。」
【０２０１】
完全性よりも正当性を特別扱いするのは、合理的な選択のように思える。１ラウンドで処理されない支払は次で処理できるが、可能なら、フォークを避けるべきであるからだ。
【０２０２】
誘導されるビザンチン合意
しばらくの間、過度な時間および通信を無視すると、完璧な正当性は以下のように保証することができるであろう。ラウンドｒの始まりで、各ユーザｉは自分自身の候補ブロックＢｉｒを提案する。すると、全ユーザは、候補ブロックのうちの１つだけに関してビザンチン合意に達する。序論に従い、採用するＢＡプロトコルは２／３の誠実な過半数を必要とし、プレーヤ代替性である。そのステップのそれぞれは、ランダムに選択された、検証者の小さな集合によって実行することができ、検証者は内部変数を一切共有しない。
【０２０３】
残念ながら、このアプローチはあまり機能しない。誠実なユーザが提案する候補ブロックは、非常に高い確率で、互いに全く異なる。実際、各誠実なユーザは異なる支払を見る。したがって、異なる誠実なユーザによって見られた支払の集合が多数の重複を有していても、誠実なユーザ全員が、提案された同じブロックを構築することは考えにくい。したがって、ＢＡプロトコルの整合性の合意は決して結ばれることがなく、唯一の合意は、正しいブロックに関するものではなく⊥に関するものであり、したがって、⊥に関する合意に必ず至り得る。
【０２０４】
アルゴランド’は、この問題を次のように回避する。まず、ラウンドｒのリーダーｌｒが選択される。次に、ｌｒは自分自身の候補ブロック
【数６６】
2019519137.tif 000068
を伝播する。最後に、ユーザは、実際にｌｒから受信したブロックに関して合意に達する。ｌｒが誠実であれば必ず、完璧な正当性および完全性１の両方が成り立つため、アルゴランド’は、ｌｒがｈに近い確率で誠実であることを確実にする。
【０２０５】
リーダーの選択
アルゴランドでは、ｒ番目のブロックは次の形式である。
【数６７】
2019519137.tif 000069
【０２０６】
序論で既に述べたように、数量Ｑｒ−１は、非常にパワフルな敵対者によって本質的に操作できないように慎重に構築される。（本セクションにおいて、後で、なぜそうなるかについてのいくつかの直観を提供する。）ラウンドｒの始まりで、全ユーザは、それまでのブロックチェーンＢ０，．．．，Ｂｒ−１を知り、当該ブロックチェーンから、前のラウンドすべてのユーザの集合、すなわち、ＰＫ１，．．．，ＰＫｒ−１を推論する。ラウンドｒの潜在的リーダーは、次の式になるようなユーザｉである。
【数６８】
2019519137.tif 000070
【０２０７】
説明しよう。基となる電子署名スキームのメッセージ検索可能性の性質のために、数量Ｑｒ−１はブロックＢｒ−１から推論可能であることに留意されたい。また、基となる署名スキームは一意性の性質を満たす。したがって、ＳＩＧｉ（ｒ，１，Ｑｒ−１）は、ｉおよびｒに一意に関連付けられているバイナリストリングである。したがって、Ｈはランダムオラクルであるので、Ｈ（ＳＩＧｉ（ｒ，１，Ｑｒ−１））は、ｉおよびｒに一意に関連付けられているランダムな２５６ビット長のストリングである。Ｈ（ＳＩＧｉ（ｒ，１，Ｑｒ−１））の前の記号（「．」）は小数（我々のケースではバイナリ）点であるので、
【数６９】
2019519137.tif 000071
は、ｉおよびｒに一意に関連付けられている０から１までの間のランダムな２５６ビット数のバイナリ展開である。したがって、ｒｉがｐ以下である確率は本質的にｐである。
【０２０８】
確率ｐは、圧倒的（すなわち、１−Ｆ）確率で、少なくとも１人の潜在的検証者が誠実であるように選ばれる。（事実、ｐは、そのような確率が最小になるように選ばれる。）
【０２０９】
ｉの署名を計算することができるのはｉだけであるため、自分がラウンド１の潜在的検証者であるかどうかを判定できるのはｉだけであることに留意されたい。しかし、自分自身のクレデンシャル
【数７０】
2019519137.tif 000072
を明らかにすることによって、ｉは、ラウンドｒの潜在的検証者であることを誰に対しても証明することができる。
【０２１０】
リーダーｌｒは、ハッシュ化されたクレデンシャルが他のすべての潜在的リーダーｊのハッシュ化されたクレデンシャル、すなわち
【数７１】
2019519137.tif 000073
よりも小さい潜在的リーダーと定義される。
【０２１１】
悪意のｌｒは自分のクレデンシャルを明らかにしないかもしれないので、ラウンドｒの正当なリーダーは決して知られない可能性があること、また、ありそうもないタイを禁止すると、ｌｒが実際にラウンドｒの唯一のリーダーであることに留意されたい。
【０２１２】
最後に、重要な詳細を提起させてほしい。ユーザｉは、少なくともｋ回のラウンドの間システムに所属している場合にのみ、ラウンドｒの潜在的リーダー（ひいてはリーダー）になることができる。このことは、Ｑｒの操作不可能性および将来のすべてのＱ数量を保証する。事実、潜在的リーダーのうちの１人が実際にＱｒを判定する。
【０２１３】
検証者の選択
ラウンドｒの各ステップｓ＞１は、検証者の小さな集合ＳＶｒ，ｓによって実行される。ここでも、各検証者ｉ∈ＳＶｒ，ｓは、既にｒよりも前にシステムのｋ回のラウンドにいたユーザの中から、かつ、ここでも特殊な数量Ｑｒ−１を介して、ランダムに選択される。具体的には、ｉ∈ＰＫｒ−ｋは、次の式が成り立つ場合、ＳＶｒ，ｓの検証者である。
【数７２】
2019519137.tif 000074
【０２１４】
ここでも、ｉだけが自分がＳＶｒ，ｓに所属しているかどうかを知っているが、そうである場合、ｉは、自分のクレデンシャル
【数７３】
2019519137.tif 000075
を提示することによってそのことを証明できるであろう。検証者ｉ∈ＳＶｒ，ｓは、ラウンドｒのステップｓでメッセージｍｉｒ，ｓを送信し、このメッセージに自分のクレデンシャルσｉｒ，ｓを含めて、ｍｉｒ，ｓが適法なステップｓのメッセージであることを次のステップの検証者が認識できるようにする。
【０２１５】
確率ｐ’は、ＳＶｒ，ｓにおいて、＃ｇｏｏｄを誠実なユーザの数にし、＃ｂａｄを悪意のユーザの数にして、圧倒的確率で次の２つの条件が成り立つことを確保するように選ばれる。
実施形態アルゴランド’１の場合：
（１）＃ｇｏｏｄ＞２・＃ｂａｄ、かつ、
（２）＃ｇｏｏｄ＋４・＃ｂａｄ＜２ｎ、ここで、ｎはＳＶｒ，ｓの期待濃度である。
実施形態アルゴランド’２の場合：
（１）＃ｇｏｏｄ＞ｔＨ、かつ、
（２）＃ｇｏｏｄ＋２＃ｂａｄ＜２ｔＨ、ここで、ｔＨは指定の閾値である。
【０２１６】
上記条件は、十分に高い確率で、（ａ）ＢＡプロトコルの最後のステップで、新たなブロックＢｒに電子署名する少なくとも所与の数の誠実なプレーヤがいること、（ｂ）ラウンドあたり１ブロックだけが必要な署名数を有することができること、および、（ｃ）使用されたＢＡプロトコルは（各ステップで）所要の２／３の誠実な過半数を有することを含意する。
【０２１７】
ブロック世代の明確化
ラウンドｒのリーダーｌｒが誠実である場合、対応するブロックは次の形式である。
【数７４】
2019519137.tif 000076
上記式において、支払集合ＰＡＹｒは極大である。（全プレーヤは、定義上、集合的に有効であることを思い出していただきたい。）
【０２１８】
そうでなければ（すなわち、ｌｒが悪意である場合）、Ｂｒは、次の２つの可能な形式のうちの一方を有する。
【数７５】
2019519137.tif 000077
および
【数７６】
2019519137.tif 000078
【０２１９】
最初の形式において、ＰＡＹｒは（必ずしも極大ではない）支払集合であり、
【数７７】
2019519137.tif 000079
となり得る。さらに、ｉはラウンドｒの潜在的リーダーである。（ただし、ｉはリーダーｌｒではないかもしれない。ｌｒが自分のクレデンシャルを秘密にしておき、自分を明かさない場合には、実際にそうなるだろう。）
【０２２０】
２番目の形式は、ＢＡプロトコルのラウンドｒの実行時、すべての誠実なプレーヤがデフォルト値を出力するときに生じ、これは、我々のアプリケーションにおいては空のブロックＢεｒである。（定義上、ＢＡプロトコルの可能な出力は、総称的に⊥で表されるデフォルト値を含む。セクション３．２を参照のこと。）
【０２２１】
支払集合はどちらのケースでも空であるが、
【数７８】
2019519137.tif 000080
およびＢεｒは統語論的に異なるブロックであり、２つの異なる状況、それぞれ、「ＢＡプロトコルの実行時にすべてが十分にスムーズにいった」および「ＢＡプロトコルで何かがうまくいかなかったので、デフォルト値が出力された」が生じることに留意されたい。
【０２２２】
ここで、ブロックＢｒの世代がアルゴランド’のラウンドｒでどのように進行するのかを直観的に説明しよう。最初のステップで、各適格プレーヤ、すなわち、各プレーヤｉ∈ＰＫｒ−ｋは、自分が潜在的リーダーであるかどうかをチェックする。そうである場合、ｉは、それまでに自分が見てきた支払のすべておよび現行のブロックチェーンＢ０，．．．，Ｂｒ−１を使用して、最大支払集合ＰＡＹｉｒを秘密で準備し、候補ブロックＢｒ＝（ｒ，ＰＡＹｉｒ，ＳＩＧｉ（Ｑｒ−１），Ｈ（Ｂｒ−１））を秘密でアセンブルするよう求められる。すなわち、当該プレーヤｉはＢｉｒに、その第２成分として、ちょうど準備された支払集合を含めるだけでなく、その第３成分として、最後のブロックＢｒ−１の第３成分であるＱｒ−１の自分自身の署名も含める。最後に、当該プレーヤｉは、自分のラウンドｒステップ１メッセージｍｉｒ，１を伝播し、これには、（ａ）自分の候補ブロックＢｉｒ、（ｂ）自分の候補ブロックの自分の正規の署名（すなわち、Ｂｉｒのハッシュの署名）、および（ｃ）自分が本当にラウンドｒの潜在的検証者であることを証明する自分自身のクレデンシャルσｉｒ，１を含む。
【０２２３】
（誠実者ｉが自分のメッセージｍｉｒ，１を生成するまで、敵対者は、ｉが潜在的検証者であることの手がかりを持たないことに留意されたい。万が一誠実な潜在的リーダーを腐敗させることを望んでも、敵対者は、ランダムな誠実なプレーヤを腐敗させるのも同然である。しかし、一旦ｍｉｒ，１を見てしまえば、そこにｉのクレデンシャルが含まれているので、敵対者は、ｉを知り、腐敗させることができるであろう。だが、敵対者は、急速に伝播されるｍｉｒ，１がシステム内の全ユーザに到達するのを妨げることはできない。）
【０２２４】
第２ステップでは、選択された各検証者ｊ∈ＳＶｒ，２は、ラウンドのリーダーを識別しようとする。具体的には、ｊは、受信した正規のステップ１メッセージｍｉｒ，１に含まれるステップ１クレデンシャル
【数７９】
2019519137.tif 000081
を取得し、そのすべてをハッシュ化する、すなわち、
【数８０】
2019519137.tif 000082
を計算し、そのハッシュが辞書式順序で最小であるクレデンシャル
【数８１】
2019519137.tif 000083
を見つけ、ｌｊｒをラウンドｒのリーダーとみなす。
【０２２５】
検討される各クレデンシャルはＱｒ−１の電子署名であること、ＳＩＧｉ（ｒ，１，Ｑｒ−１）はｉとＱｒ−１とによって一意に判定されること、Ｈはランダムオラクルであること、したがって、各Ｈ（ＳＩＧｉ（ｒ，１，Ｑｒ−１）はラウンドｒの各潜在的リーダーｉに一意な、ランダムな２５６ビット長のストリングであることを思い出していただきたい。
【０２２６】
このことから、我々は、２５６ビットストリングＱｒ−１がそれ自体ランダムかつ独立して選択された場合、ラウンドｒのすべての潜在的リーダーのハッシュ化されたクレデンシャルもそうなるであろうと結論付けることができる。事実、すべての潜在的リーダーは十分に定義されているため、そのクレデンシャルも同様である（実際に計算されるかどうかは問わない）。さらに、ラウンドｒの潜在的リーダーの集合はラウンドｒ−ｋのユーザのランダムな部分集合であり、誠実な潜在的リーダーｉは、ｉのクレデンシャルを含む自分のメッセージｍｉｒを必ず正規に構築して伝播する。このように、誠実なユーザのパーセンテージがｈであるので、悪意の潜在的リーダーがどのようなことを行おうとも（例、自分自身のクレデンシャルを明らかにする、または隠す）、最小値の、ハッシュ化された潜在的リーダーのクレデンシャルは誠実なユーザに属し、当該誠実なユーザは必然的に、ラウンドｒのリーダーｌｒとして全員に識別される。したがって、２５６ビットストリングＱｒ−１がそれ自体ランダムかつ独立して選択される場合、まさしくｈの確率で、（ａ）リーダーｌｒは誠実であり、かつ、（ｂ）誠実なステップ２検証者ｊ全員についてｌｊ＝ｌｒである。
【０２２７】
現実には、ハッシュ化されたクレデンシャルは、確かに、ランダムに選択されるが、ランダムかつ独立して選択されないＱｒ−１に依存する。しかし、ラウンドのリーダーがｈに十分に近い確率ｈ’、すなわちｈ’＞ｈ２（１＋ｈ−ｈ２）で誠実であることを保証するのにＱｒ−１が十分に操作不可能であることが、慎重な分析により保証される。例えば、ｈ＝８０％であれば、ｈ’＞０．７４２４である。
【０２２８】
ラウンドのリーダーを識別したら（リーダーｌｒが誠実なときに検証者が正当に行う）、ステップ２検証者のタスクは、初期値として当該検証者がリーダーのブロックだと考えるものを使用して、ＢＡ★の実行を始めることである。実際には、必要な通信量を最小限にするために、検証者ｊ∈ＳＶｒ，２は、ビザンチンプロトコルへのその入力値ｖ’ｊとして、（ユーザｊがリーダーだと考える）ｌｒから実際に受信したブロックＢｊを使用するのではなく、リーダー、ただしそのブロックのハッシュ、すなわち、ｖ’ｊ＝Ｈ（Ｂｉ）を使用する。したがって、ＢＡプロトコルの終了時に、最後のステップの検証者は所望のラウンドｒブロックＢｒを計算するのではなく、Ｈ（Ｂｒ）を計算（認証および伝播）する。したがって、Ｈ（Ｂｒ）がＢＡプロトコルの最後のステップの十分に多くの検証者によって電子署名されるため、システム内のユーザは、Ｈ（Ｂｒ）が新たなブロックのハッシュであることを認識する。しかし、ユーザはブロックＢｒ自体も検索しなければならず（または、実行がかなり非同期であるため、待たなければならず）、これによりプロトコルは、敵対者がどのようなことをしようとも、実際に利用可能であることを確実にする。
【０２２９】
非同期性およびタイミング
アルゴランド’１およびアルゴランド’２は、有意な程度の非同期性を有する。そうするのは、敵対者が、伝播されるメッセージの配信の予定を組むことに大きな自由度を有するからである。加えて、ラウンドのステップの総数に上限を設けるかどうかを問わず、実際に取られるステップの数による分散寄与率がある。
【０２３０】
ユーザｉは、Ｂ０，．．．，Ｂｒ−１の証明書を知るや否や、Ｑｒ−１を計算して、ラウンドｒに対する作業を開始し、ラウンドｒの何らかのステップｓにおいて自分が潜在的リーダーかどうか、または検証者かどうかをチェックする。
【０２３１】
ｉはステップｓで行為しなければならないと仮定すると、上述の非同期性に鑑みて、ｉは、自分が行為する前に十分な情報を有することを確実にするために様々な戦略に頼る。
【０２３２】
例えば、当該ユーザｉは、前のステップの検証者から少なくとも所与の数のメッセージを受信するのを待つ（アルゴランド’１のときのように）か、または、前のステップの十分に多くの検証者のメッセージを受信することを確保するための十分な時間の間、待つ（アルゴランド’２のときのように）。
【０２３３】
シードＱｒおよびルックバックパラメータｋ
数量Ｑｒは、敵対者にとって十分に操作不可能にすれば足りるが、理想としては、ランダムかつ独立しているべきであることを思い出していただきたい。
【０２３４】
一見すると、Ｈ（ＰＡＹｒ−１）と同時に起こるようにＱｒ−１を選べるであろう。しかし、要素分析から、この選択メカニズム（脚注５参照）を悪意のユーザが利用できることが明らかになった。いくらかの追加の努力から、従来のブロック数量に基づく無数の他の代替物は、悪意のリーダーが非常に頻繁に出現するのを確実にするために敵対者が容易に悪用できることが分かる。我々は代わりに具体的かつ帰納的に我々の全く新しい数量Ｑｒを定義して、敵対者によって操作不可能であることを証明できるようにする。すなわち、
Ｂｒが空ブロックではない場合、
【数８２】
2019519137.tif 000084
であり、そうでなければ
【数８３】
2019519137.tif 000085
である。
【０２３５】
脚注５
我々は、ラウンドｒ−１の始めにいる。したがって、Ｑｒ−２＝ＰＡＹｒ−２は公開で知られ、敵対者は、自分が支配する潜在的リーダーが誰であるかを秘かに知る。敵対者がユーザの１０％を支配し、非常に高い確率で、悪意のユーザｗがラウンドｒ−１の潜在的リーダーであると仮定する。すなわち、Ｈ（ＳＩＧｗ（ｒ−２，１，Ｑｒ−２））が非常に小さいので、誠実な潜在的リーダーが実際にラウンドｒ−１のリーダーになるということはとても起こりそうにないと仮定する。（我々は秘密暗号くじメカニズムにより潜在的リーダーを選んだため、敵対者は誰が誠実な潜在的リーダーかを知らないことを思い出していただきたい。）そのため、敵対者は、自分が望む支払集合ＰＡＹ’を選び、それをラウンドｒ−１の正式な支払集合にさせるという羨ましい立場にいる。しかし、当該敵対者はさらに多くのことを行える。当該敵対者は、高い確率で、（＊）自分の悪意のユーザのうちの１人をラウンドｒのリーダーにもすることも確実にすることができるので、ＰＡＹｒが何になるかを自由に選択することができる。（等々。少なくともしばらくの間、すなわち、これらの高確率イベントが現実に起こる限り。）保証するために（＊）、敵対者は次のように行為する。ＰＡＹ’を、敵対者がラウンドｒ−１について好む支払集合にさせる。次に、当該敵対者はＨ（ＰＡＹ’）を計算して、いく人かの既に悪意のプレーヤｚについて、ＳＩＧｚ（ｒ，１，Ｈ（ＰＡＹ’））は特に小さいかどうか、すなわち、非常に高い確率でｚがラウンドｒのリーダーになるのに十分に小さいかどうかをチェックする。そうである場合には、当該敵対者はｗに、自分の候補ブロックをＢｉｒ−１＝（ｒ−１，ＰＡＹ’，Ｈ（Ｂｒ−２））にするように選ぶことを指示する。そうでなければ、当該敵対者は、他の２人の悪意のユーザｘおよびｙに、新たな支払
【数８４】
2019519137.tif 000086
を次から次に、いく人かの悪意のユーザｚについて（または、いく人かの固定ユーザｚについても）
【数８５】
2019519137.tif 000087
が特に小さくなるまで、生成を続けさせる。この実験は、程なくして終わるだろう。そして、この実験が終わると、敵対者はｗに、候補ブロック
【数８６】
2019519137.tif 000088
を提案するように求める。
【０２３６】
このようなＱｒの構築がなぜ機能するかの直観は、次の通りである。しばらくの間、Ｑｒ−１が真にランダムかつ独立して選択されると仮定する。その場合、Ｑｒはそのようになるだろうか？  ｌｒが誠実であるとき、答えは（大雑把にいうと）イエスである。そうなるのは、
【数８７】
2019519137.tif 000089
がランダム関数だからである。しかし、ｌｒが悪意のとき、ＱｒはＱｒ−１およびｌｒから一義的に定義されなくなる。Ｑｒについては、少なくとも２つの別々の値がある。１つは、
【数８８】
2019519137.tif 000090
になるように続き、もう１つはＨ（Ｑｒ−１，ｒ）である。まず、２つ目の選択肢はやや恣意的であるが、２つ目の選択肢が絶対的に義務的であることを論じさせてほしい。この理由は、悪意のｌｒが必ず、全く異なる候補ブロックを第２ステップの誠実な検証者に受信させることができるためである。（脚注６参照）一旦そうなると、ラウンドｒのＢＡプロトコルにより最終的に合意されたブロックがデフォルトになること、したがって、Ｑｒ−１の誰の電子署名も含まないことを確保するのは簡単である。しかし、システムは続けなければならず、このために、ラウンドｒのリーダーが必要である。このリーダーが自動的にかつオープンに選択される場合、敵対者は自明に当該リーダーを腐敗させる。同じプロセスで前のＱｒ−１によって選択される場合、ラウンドｒ＋１でｌｒが再びリーダーになる。我々は同じ秘密暗号くじメカニズムを使用するよう特に提案するが、新たなＱ数量、すなわちＨ（Ｑｒ−１，ｒ）に適用される。この数量をＨの出力にすることによって、出力がランダムであることを保証し、ｒをＨの第２入力として含むことによって、Ｈの他のすべての使用は単一入力または少なくとも３つの入力のいずれかを有するので、このようなＱｒが独立して選択されることを「保証する」。ここでも、我々の特定的な代替Ｑｒの選択肢は問題ではなく、問題なのはｌｒがＱｒについて２つの選択肢を有することであり、したがって当該ｌｒは、別の悪意のユーザを次のリーダーとする機会を２倍にすることができる。
【０２３７】
脚注６
例えば、単純にしておくために（ただし極度に）、「第２ステップの時間が終了しそうなとき」、ｌｒは異なる候補ブロックＢｉを各ユーザｉに直接電子メール送信することができるであろう。このように、誰がステップ２の検証者であろうとも、全く異なるブロックを受信したことになる。
【０２３８】
Ｑｒの選択肢は、悪意のｌｒを支配する敵対者についてはさらに数多くあり得る。例えば、ｘ，ｙおよびｚを、ラウンドｒの３人の悪意の潜在的リーダーとし、
【数８９】
2019519137.tif 000091
かつ、Ｈ（σｚｒ，１）が特に小さくなるようにする。すなわち、すべての誠実な潜在的リーダーのハッシュ化されたクレデンシャルよりもＨ（σｚｒ，１）が小さくなる可能性が十分になるように小さくする。そして、ｘに対して自分のクレデンシャルを隠すように求めることによって、敵対者には、ｙをラウンドｒ−１のリーダーにする可能性が十分にある。このことは、当該敵対者が、Ｑｒについての別の選択肢、すなわち、Ｈ（ＳＩＧｙ（Ｑｒ−１），ｒ）を有することを含意する。同様に、敵対者は、ｘおよびｙの両方に対してそのクレデンシャルを与えずにおくよう求めて、ｚをラウンドｒ−１のリーダーにさせるようにすることもでき、Ｑｒについての別の選択肢、すなわち、Ｈ（ＳＩＧｚ（Ｑｒ−１），ｒ）を得る。
【０２３９】
しかし、当然ながら、敵対者が誠実な潜在的ユーザの電子署名のハッシュを予測することができないので、これらおよび他の選択肢のそれぞれは、失敗する可能性がゼロではない。
【０２４０】
慎重なマルコフ連鎖のような分析から、ラウンドｒ−１で敵対者がたとえどのような選択肢を取ることを選ぶにしても、当該敵対者は、システム内に新たなユーザを投入することができない限り、誠実なユーザをラウンドｒ＋４０のリーダーにする確率をｈよりはるかに低くすることはできない。これが、ラウンドｒの潜在的リーダーを、ラウンドｒ−ｋに既に存在しているユーザにすることを我々が要求する理由である。これは、ラウンドｒ−ｋで、敵対者は誠実なユーザがラウンドｒのリーダーになる確率を大幅に改変することができないことを確実にする方法である。事実、敵対者がラウンドｒ−ｋからラウンドｒでシステムにどのようなユーザを加えようとも、彼らはラウンドｒの潜在的リーダー（ましてやリーダー）になるには不適格である。このため、ルックバックパラメータｋは、最終的にはセキュリティパラメータである。（ただし、セクション７で見るように、一種の「便利なパラメータ」になることもできる。）
【０２４１】
一時的な鍵
我々のプロトコルの実行は、無視できる確率を除き、フォークを生成することができないが、敵対者は、適法なブロックｒが生成された後で、ｒ番目のブロックでフォークを生成することはできるであろう。
【０２４２】
大まかにいうと、一旦Ｂｒが生成されると、敵対者は、ラウンドｒの各ステップの検証者が誰であるかを知ったことになる。そのため、当該敵対者は当該検証者全員を腐敗させ、当該検証者に新たなブロック
【数９０】
2019519137.tif 000092
を認定することを義務付けることができるであろう。この偽ブロックは適法なブロックの後でしか伝播させられないため、注意を払っているユーザは騙されないであろう（脚注７参照）。それでもなお
【数９１】
2019519137.tif 000093
は統語論的に正しいであろうが、我々は、製造されるのを防ぎたい。
【０２４３】
脚注７
大手ＴＶネットワークのニュースアンカーを腐敗させて、クリントン長官が直近の大統領選挙に勝ったことを示すニュース映画を制作して、今日放送することを考えてみる。我々のほとんどは、それがいたずらであることに気づくであろう。しかし、昏睡状態から覚めた誰かは騙される可能性がある。
【０２４４】
我々は、新ルールによってそのようにする。本質的に、ラウンドｒのステップｓの検証者集合ＳＶｒ，ｓのメンバーは、自分のメッセージに電子署名するために一時的な公開鍵ｐｋｉｒ，ｓを使用する。これらの鍵は１度しか使用できず、それに対応する秘密鍵ｓｋｉｒ，ｓは、一旦使用されると破壊される。このように、検証者が後に腐敗させられる場合、敵対者は、検証者が元々署名しなかった他のものに署名させることはできない。
【０２４５】
当然ながら、我々は、敵対者が新たな鍵
【数９２】
2019519137.tif 000094
を計算するのが不可能であることを確実にし、それがステップｓで使用するための検証者の正しい一時的な鍵ｉ∈ＳＶｒ，ｓであることを誠実なユーザに確信させなければならない。
【０２４６】
４．２  共通の記号、概念およびパラメータのまとめ
記号
・ｒ≧０：現在のラウンド番号。
【０２４７】
・ｓ≧１：ラウンドｒにおける現在のステップ番号。
【０２４８】
・Ｂｒ：ラウンドｒで生成されたブロック。
【０２４９】
・ＰＫｒ：ラウンドｒ−１の終わりまで、および、ラウンドｒの始まりにおける公開鍵の集合。
【０２５０】
・Ｓｒ：ラウンドｒ−１の終わりまで、および、ラウンドｒの始まりにおけるシステムのステータス（脚注８参照）。
【０２５１】
脚注８
同期しないシステムでは、「ラウンドｒ−１の終わり」および「ラウンドｒの始まり」という概念は慎重に定義する必要がある。数学的には、ＰＫｒおよびＳｒは初期ステータスＳ０およびブロックＢ１，．．．，Ｂｒ−１から計算する。
【０２５２】
・ＰＡＹｒ：Ｂｒに含まれる支払集合。
【０２５３】
・ｌｒ：ラウンドｒのリーダー。ｌｒはラウンドｒ支払集合ＰＡＹｒを選ぶ（そして、次のＱｒを判定する）。
【０２５４】
・Ｑｒ：ラウンドｒのシードで、ラウンドｒの終わりに生成され、ラウンドｒ＋１の検証者を選ぶために使用される数量（すなわち、バイナリストリング）。Ｑｒはブロックの支払集合とは独立しており、ｌｒが操作することはできない。
【０２５５】
・ＳＶｒ，ｓ：ラウンドｒのステップｓのために選ばれた検証者の集合。
【０２５６】
・ＳＶｒ：ラウンドｒのために選ばれた検証者の集合、ＳＶｒ＝∪ｓ≧１ＳＶｒ，ｓ。
【０２５７】
・ＭＳＶｒ，ｓおよびＨＳＶｒ，ｓ：それぞれ、ＳＶｒ，ｓにおける悪意の検証者の集合および誠実な検証者の集合。ＭＳＶｒ，ｓ∪ＨＳＶｒ，ｓ＝ＳＶｒ，ｓ、かつ、
【数９３】
2019519137.tif 000095
【０２５８】
・
【数９４】
2019519137.tif 000096
および
【数９５】
2019519137.tif 000097
：それぞれ、ｓ＞１の場合、各ＳＶｒ，１における潜在的リーダーの期待数、および各ＳＶｒ，ｓにおける検証者の期待数。
我々は、ｓ＞１の場合、ＳＶｒ，１には少なくとも１人の誠実なメンバーを必要とするが、各ＳＶｒ，ｓには少なくとも誠実なメンバーの過半数を必要とするため、ｎ１＜＜ｎであることに注意されたい。
【０２５９】
・ｈ∈（０，１）：２／３より大きい定数。ｈはシステムにおける誠実者の比率。すなわち、使用する仮定によって、各ＰＫｒにおける誠実なユーザまたは誠実なマネーの部分は少なくともｈである。
【０２６０】
・Ｈ：ランダムオラクルとしてモデル化された暗号学的ハッシュ関数。
【０２６１】
・⊥：Ｈの出力と同じ長さの特殊ストリング。
【０２６２】
・Ｆ∈（０，１）：許容される誤差確率を指定するパラメータ。確率≦Ｆは「無視できる」と見なされ、確率≧１−Ｆは「圧倒的」と見なされる。
【０２６３】
・ｐｈ∈（０，１）：ラウンドｒのリーダーｌｒが誠実である確率。理想的にはｐｈ＝ｈである。敵対者が存在するときは、ｐｈの値は分析によって判定される。
【０２６４】
・
【数９６】
2019519137.tif 000098
：ルックバックパラメータ。すなわち、ラウンドｒ−ｋはラウンドｒの検証者が選ばれるところである。すなわち、ＳＶｒ⊆ＰＫｒ−ｋ（脚注９参照）。
【０２６５】
脚注９
厳密にいうと、「ｒ−ｋ」は「最大｛０，ｒ−ｋ｝」であるべきである。
【０２６６】
・ｐ１∈（０，１）：ラウンドｒの最初のステップについて、ラウンドｒ−ｋのユーザは、確率
【数９７】
2019519137.tif 000099
でＳＶｒ，１に入るように選ばれる。
【０２６７】
・ｐ∈（０，１）：ラウンドｒの各ステップｓ＞１について、ラウンドｒ−ｋのユーザは、確率
【数９８】
2019519137.tif 000100
でＳＶｒ，ｓに入るように選ばれる。
【０２６８】
・ＣＥＲＴｒ：Ｂｒの証明書。ラウンドｒの正規の検証者からのＨ（Ｂｒ）のｔＨ署名の集合である。
【０２６９】
・
【数９９】
2019519137.tif 000101
は証明済みブロックである。
ユーザｉは、当該ユーザｉが証明済みブロックの両方の部分を所有している（かつ、検証がうまくいく）場合にＢｒを知る。異なるユーザが見るＣＥＲＴｒは異なるかもしれないことに留意されたい。
【０２７０】
・
【数１００】
2019519137.tif 000102
：ユーザｉがＢｒを知る（現地）時刻。アルゴランドプロトコルでは、各ユーザは自分自身のクロックを有する。異なるユーザのクロックは、同期させる必要はないが、同じ速度でなければならない。分析の目的でのみ、我々は基準クロックを考慮し、それに対するプレーヤの関連時刻を測定する。
【０２７１】
・αｉｒ，ｓおよびβｉｒ，ｓ：それぞれ、ユーザｉがラウンドｒのステップｓの実行を開始する（現地）時刻および終了する（現地）時刻。
【０２７２】
・Λおよびλ：本質的に、それぞれアルゴランドプロトコルのステップ１を実行するために必要な時間と他のステップに必要な時間とについての上限。
パラメータΛは、単一の１ＭＢブロックを伝播するために必要な時間に上限を設ける。
パラメータλは、ステップｓ＞１で検証者ごとに１つの小さなメッセージを伝播するために必要な時間に上限を設ける。
我々は、Λ≦４λと仮定する。
【０２７３】
概念
・検証者の選択
各ラウンドｒおよびステップｓ＞１について、
【数１０１】
2019519137.tif 000103
である。各ユーザｉ∈ＰＫｒ−ｋは、自分の長期鍵を使用して自分の署名を秘かに計算し、ｉ∈ＳＶｒ，ｓかどうかを決定する。ｉ∈ＳＶｒ，ｓの場合、ＳＩＧｉ（ｒ，ｓ，Ｑｒ−１）は、ｉの（ｒ，ｓ）クレデンシャルであり、簡潔にσｉｒ，ｓで表される。
ラウンドｒの最初のステップについて、ＳＶｒ，１およびσｉｒ，１は同様に定義され、ｐはｐ１に置換される。ＳＶｒ，１の検証者は潜在的リーダーである。
【０２７４】
・リーダーの選択
すべての潜在的リーダーｊ∈ＳＶｒ，１について、Ｈ（σｉｒ，１）≦Ｈ（σｊｒ，１）の場合、ユーザｉ∈ＳＶｒ，１は、ラウンドｒのリーダーである。２人のプレーヤのクレデンシャルのハッシュが比較される場合は必ず、起こりそうにないタイのイベントでは、プロトコルは必ず、潜在的リーダー（の長期公開鍵）に従って辞書式順序でタイをブレークする。
定義上、プレーヤｌｒのクレデンシャルのハッシュ値は、ＰＫｒ−ｋの全ユーザの中で最小でもある。潜在的リーダーは、他の潜在的リーダーのクレデンシャルを見なければ、自分がリーダーかどうかを秘かに決定することはできないことに留意されたい。
ハッシュ値はランダムで一様であるため、ＳＶｒ，１が空ではない場合、ｌｒは必ず存在し、少なくともｈの確率で誠実である。パラメータｎ１は、各ＳＶｒ，１が圧倒的確率で空ではないことを確保するのに十分に大きい。
【０２７５】
・ブロック構造
空ではないブロックは形式
【数１０２】
2019519137.tif 000104
をとり、空のブロックは、形式
【数１０３】
2019519137.tif 000105
をとる。
このラウンドで支払が発生していない場合、またはリーダーが悪意である場合には、空ではないブロックはまだ空の支払集合ＰＡＹｒを含んでいるかもしれないことに留意されたい。しかし、空ではないブロックは、ｌｒのアイデンティティであるそのクレデンシャル
【数１０４】
2019519137.tif 000106
および
【数１０５】
2019519137.tif 000107
は、すべて適時に明らかにされたことを含意する。プロトコルは、リーダーが誠実である場合、ブロックは圧倒的確率で空ではないことを保証する。
【０２７６】
・シードＱｒ
Ｂｒが空ではない場合、
【数１０６】
2019519137.tif 000108
であり、そうでなければ
【数１０７】
2019519137.tif 000109
である。
【０２７７】
パラメータ
・様々なパラメータ間の関係
−ラウンドｒの検証者および潜在的リーダーはＰＫｒ−ｋのユーザから選択され、ここで、ｋは、敵対者がラウンドｒ−ｋ−１に遡ってＱｒ−１をＦよりも良い確率で予測できないように選ばれる。そうでなければ、敵対者は、ラウンドｒ−ｋについて悪意のユーザを導入することができ、その全員が、ラウンドｒで潜在的リーダー／検証者になり、敵対者が望むいくつかのステップｓについて、ＳＶｒ，ｓに悪意のリーダーまたは悪意の過半数を持つことに成功する。
−各ラウンドｒのステップ１について、ｎ１は、圧倒的確率で
【数１０８】
2019519137.tif 000110
になるように選ばれる。
【０２７８】
・重要なパラメータの例示的な選択
−Ｈの出力は、２５６ビット長である。
−ｈ＝８０％、ｎ１＝３５。
−Λ＝１分、かつ、λ＝１５秒。
【０２７９】
・プロトコルの初期化
プロトコルは、ｒ＝０で時刻０で始まる。「Ｂ−１」または「ＣＥＲＴ−１」は存在しないので、統語論的に、Ｂ−１は、Ｑ−１を指定するその３番目の成分を持つ公開パラメータであり、全ユーザは、時刻０でＢ−１を知っている。
【０２８０】
５  アルゴランド’１
このセクションでは、次の仮定の下で機能するアルゴランド’の１つのバージョンを構築する。
「ユーザの誠実な過半数」の仮定：各ＰＫｒにおいてユーザの２／３超が誠実である。
セクション８では、上記仮定を、所望の「マネーの誠実な過半数」の仮定に置き換える方法を示す。
【０２８１】
５．１  追加の記号およびパラメータ
記号
・
【数１０９】
2019519137.tif 000111
：バイナリＢＡプロトコルの最大ステップ数で、３の倍数。
【０２８２】
・Ｌｒ≦ｍ／３：各試行が
【数１１０】
2019519137.tif 000112
の確率で１になり、たかだかｍ／３の試行がある場合、１を見るために必要なベルヌーイ試行の回数を表すランダム変数。すべての試行が失敗する場合、
【数１１１】
2019519137.tif 000113
になる。Ｌｒは、ブロックＢｒを生成するために必要な時間に上限を設けるために使用する。
【０２８３】
・
【数１１２】
2019519137.tif 000114
：プロトコルの終了条件に必要な署名数。
【０２８４】
・ＣＥＲＴｒ：Ｂｒの証明書。これは、ラウンドｒの正規の検証者からのＨ（Ｂｒ）のｔＨ署名の集合である。
【０２８５】
パラメータ
・様々なパラメータ間の関係。
−ラウンドｒの各ステップｓ＞１について、ｎは圧倒的確率で、
【数１１３】
2019519137.tif 000115
かつ
【数１１４】
2019519137.tif 000116
になるように選ばれる。
ｈの値が１に近づくほど、ｎは小さくなる必要がある。具体的には、チェルノフ限界（の変型）を使用して、所望の条件が圧倒的確率で成り立つことを確実にする。
−ｍは、圧倒的確率でＬｒ＜ｍ／３になるように選ばれる。
【０２８６】
・重要なパラメータの例示的な選択。
−Ｆ＝１０−１２。
−
【数１１５】
2019519137.tif 000117
、ｋ＝４０およびｍ＝１８０。
【０２８７】
５．２  アルゴランド’１での一時的な鍵の実装
既に述べたように、我々は、検証者ｉ∈ＳＶｒ，ｓが、使用後直ちに破壊する一時的な秘密鍵ｓｋｉｒ，ｓを使用して、一時的な公開鍵ｐｋｉｒ，ｓに関連し、ラウンドｒのステップｓの自分のメッセージｍｉｒ，ｓに電子署名することを望む。したがって、ｐｋｉｒ，ｓが実際にｉによるｍｉｒ，ｓの署名を検証するために使用する鍵であることをすべてのユーザが検証することができることを確保する効率的な方法が必要である。アイデンティティベースの署名スキームの（我々が知る限りにおいて）新たな用途によってこれを行う。
【０２８８】
高次で、このようなスキームでは、中央集権機関Ａが公開マスター鍵ＰＭＫおよび対応する秘密マスター鍵ＳＭＫを生成する。プレーヤＵのアイデンティティＵがあるとすると、Ａは、ＳＭＫにより、公開鍵Ｕに対する秘密署名鍵ｓｋＵを計算し、ｓｋＵをＵに秘かに与える。（実際、アイデンティティベースの電子署名スキームでは、ユーザＵの公開鍵はＵ自体である！）このように、Ａが電子署名の生成を可能にしたいユーザの秘密鍵の計算後にＡがＳＭＫを破壊して、計算した秘密鍵を保管しておかない場合、Ｕは、公開鍵Ｕに対するメッセージに電子署名することのできる唯一の人である。したがって、「Ｕの名前」を知る人は誰でも自動的にＵの公開鍵を知り、そのためＵの署名を（おそらく、これも公開マスター鍵ＰＭＫを使用して）検証することができる。
【０２８９】
我々のアプリケーションでは、権限機関Ａはユーザｉであり、すべての潜在的ユーザの集合Ｕは、例えば、Ｓ＝｛ｉ｝×｛ｒ’，．．．，ｒ’＋１０６｝×｛１，．．．，ｍ＋３｝において、ラウンドステップペア（ｒ，ｓ）と一致し、上記式において、ｒ’は所与のラウンドであり、ｍ＋３は、１ラウンド内に発生してもよいステップ数の上限である。このように、
【数１１６】
2019519137.tif 000118
は、ｉの署名
【数１１７】
2019519137.tif 000119
を見る人が誰でも、圧倒的確率で、ｒ’に続く最初の１００万ラウンドｒでそれを直ちに検証することができるにするものである。
【０２９０】
言い換えると、ｉは、まずＰＭＫおよびＳＭＫを生成する。次に、ｉは、ＰＭＫが任意のラウンドｒ∈［ｒ’，ｒ’＋１０６］のためのｉのマスター公開鍵であることを公表し、ＳＭＫを使用して各３つ組（ｉ，ｒ，ｓ）∈Ｓのための秘密鍵ｓｋｉｒ，ｓを秘かに生成して格納する。これが終了したら、ｉはＳＭＫを破壊する。自分がＳＶｒ，ｓの一部ではないとｉが判定する場合、ｉはｓｋｉｒ，ｓをそのままにしておいてもよい（プロトコルはｉがラウンドｒのステップｓでメッセージを認証することを要求していないため）。そうでなければ、ｉは、まず、ｓｋｉｒ，ｓを使用して、自分のメッセージｍｉｒ，ｓに電子署名してから、ｓｋｉｒ，ｓを破壊する。
【０２９１】
ｉは、最初にシステムに入るときに、自分の最初の公開マスター鍵を公表できることに留意されたい。すなわち、ｉをシステムに（ラウンドｒ’またはｒ’に近いラウンドで）参加させる同じ支払
【数１１８】
2019519137.tif 000120
が、ｉの要求により、任意のラウンドｒ∈［ｒ’，ｒ’＋１０６］のためのｉの公開マスター鍵がＰＭＫであることも、例えば、形式（ＰＭＫ，［ｒ’，ｒ’＋１０６］）ペアを含むことによって指定してもよい。
【０２９２】
また、ｍ＋３は１ラウンド内の最大ステップ数であるため、１ラウンドに１分かかると仮定すると、そのように生成される一時的な鍵の隠し場所はｉをほぼ２年間維持することにも留意されたい。同時に、これらの一時的な秘密鍵は、ｉが生成するのに長くなりすぎることもない。３２Ｂ鍵を持つ楕円曲線ベースのシステムを使用して、各秘密鍵は数マイクロ秒で計算される。したがって、ｍ＋３＝１８０であれば、１億８千万個のすべての秘密鍵を１時間未満で計算することができる。
【０２９３】
現行ラウンドがｒ’＋１０６に近づいてくると、次の１００万ラウンドを処理するために、ｉは新たな（ＰＭＫ’，ＳＭＫ’）ペアを生成し、一時的な鍵の次の隠し場所が何であるかを、例えば、ＳＩＧｉ（ＰＭＫ’，［ｒ’＋１０６＋１，ｒ’＋２・１０６＋１］）を、個別の「トランザクション」、または支払の一部であるいくつかの追加通知のいずれかとして、新たなブロックに進入させることによって通知する。そうすることによって、ｉは、自分がＰＭＫ’を使用して次の１００万ラウンドでｉの一時的な署名を検証することを全員に通知する。以降も同様。
【０２９４】
（この基本アプローチに従い、アイデンティティベースの署名を使用しなくても、一時的な鍵を実施するための他の方法は確かに可能であることに留意されたい。例えば、マークル木による（脚注１０参照）。）
【０２９５】
脚注１０
この方法では、ｉは、例えば、｛ｒ’，．．．，ｒ’＋１０６｝×｛１，．．．，ｍ＋３｝で、各ラウンドステップペア（ｒ，ｓ）の公開・秘密鍵のペア（ｐｋｉｒ，ｓ，ｓｋｉｒ，ｓ）を生成する。次に、これらの公開鍵を正規的に順序付けし、ｊ番目の公開鍵をマークル木のｊ番目のリーフに格納し、ルート値Ｒｉを計算し、これを公表する。ｉが鍵ｐｋｉｒ，ｓに関連するメッセージに署名したい場合、ｉは、実際の署名を提供するだけでなく、Ｒｉに関連するｐｋｉｒ，ｓの認証経路も提供する。この認証経路は、ｐｋｉｒ，ｓがｊ番目のリーフに格納されていることも証明することに注意されたい。このアイデアから、詳細の残りを容易に埋めることができる。
【０２９６】
一時的な鍵を実施するための他の方法は、例えば、マークル木により、確かに可能である。
【０２９７】
５．３  アルゴランド’１のステップとＢＡ★のステップとのマッチング
前述のように、アルゴランド’１の１ラウンドは、たかだかｍ＋３ステップを有する。
【０２９８】
ステップ１．
このステップでは、各潜在的リーダーｉは自分の候補ブロックＢｉｒを計算して、自分自身のクレデンシャルσｉｒ，１と一緒に伝播する。
【０２９９】
このクレデンシャルは明白にｉを識別することを思い出していただきたい。そうなるのは、
【数１１９】
2019519137.tif 000121
であるからである。
【０３００】
潜在的検証者ｉも、自分のメッセージの一部として、Ｈ（Ｂｉｒ）の自分の正規の電子署名を伝播する。支払またはクレデンシャルを処理するのではなく、ｉのこの署名は自分の一時的な公開鍵ｐｋｉｒ，１に関連する。すなわち、ｉは
【数１２０】
2019519137.tif 000122
を伝播する。
【０３０１】
我々の規約を考えると、ｉは、Ｂｉｒおよび
【数１２１】
2019519137.tif 000123
を伝播するのではなく、
【数１２２】
2019519137.tif 000124
を伝播したかもしれない。しかし、我々の分析では、我々は、
【数１２３】
2019519137.tif 000125
への明白なアクセス権を有する必要がある。
【０３０２】
ステップ２．
このステップでは、各検証者ｉは、ｌｉｒをそのハッシュ化されたクレデンシャルが最小である潜在的リーダーに、Ｂｉｒをｌｉｒによって提案されるブロックになるように設定する。効率のために、我々はＢｒに対して直接ではなく、Ｈ（Ｂｒ）に対して合意することを望むので、ｉは、初期値ｖ’ｉ＝Ｈ（Ｂｉｒ）で、ＢＡ★の最初のステップで伝播したであろうメッセージを伝播する。すなわち、ｉは、当然ながら、ｖ’ｉに一時的に署名した後にｖ’ｉを伝播する。（すなわち、正しい一時的な公開鍵、この場合ｐｋｉｒ，２に関連してそれに署名した後。）また当然、ｉは自分自身のクレデンシャルも伝送する。
【０３０３】
ＢＡ★の最初のステップは段階的コンセンサスプロトコルＧＣの第１ステップからなるので、アルゴランド’のステップ２はＧＣの第１ステップに対応する。
【０３０４】
ステップ３．
このステップでは、各検証者ｉ∈ＳＶｒ，２はＢＡ★の第２ステップを実行する。すなわち、各検証者は、ＧＣの第２ステップで送ったであろう同じメッセージを送る。ここでも、ｉのメッセージは一時的に署名されて、ｉのクレデンシャルが添付される。（今後、検証者が自分のメッセージに一時的に署名して自分のクレデンシャルも伝播することを述べるのを省略する。）
【０３０５】
ステップ４．
このステップでは、すべての検証者ｉ∈ＳＶｒ，４はＧＣの出力（ｖｉ，ｇｉ）を計算し、ＢＡ★の第３ステップで、すなわち、ｇｉ＝２の場合は初期ビット０で、そうでなければ１で、ＢＢＡ★の第１ステップで送ったであろう同じメッセージに一時的に署名して送る。
【０３０６】
ステップｓ＝５，．．．，ｍ＋２．
このようなステップは、もし到達した場合、ＢＡ★のステップｓ−１に対応し、したがってＢＢＡ★のステップｓ−３に対応する。
【０３０７】
我々の伝播モデルは十分に非同期であるため、このようなステップｓの中央では、ブロックＢｒが既に選ばれていることを検証者に証明する情報が検証者ｉ∈ＳＶｒ，ｓに届く可能性を考慮しなければならない。この場合、ｉはアルゴランド’のラウンドｒの自分自身の実行を停止し、自分のラウンド（ｒ＋１）の命令の実行を始める。
【０３０８】
したがって、検証者ｉ∈ＳＶｒ，ｓの命令は、ＢＢＡ★のステップｓ−３に対応する命令に加えて、ＢＢＡ★の実行が前のステップｓ’で中止されたかどうかをチェックすることを含む。ＢＢＡ★は、コインを０に固定するステップまたはコインを１に固定するステップでしか中止できないので、命令は、
Ａ（終了条件０）：ｓ’−２≡０  ｍｏｄ  ３、または
Ｂ（終了条件１）：ｓ’−２≡１  ｍｏｄ  ３
かどうかを区別する。
【０３０９】
事実、ケースＡでは、ブロックＢｒは空ではなく、したがって、追加の命令は、ｉが、その正規の証明書ＣＥＲＴｒと合わせて、Ｂｒを適切に再構築することを確実にするために必要である。ケースＢでは、ブロックＢｒは空であり、したがって、ｉは
【数１２４】
2019519137.tif 000126
を設定し、ＣＥＲＴｒを計算するように命令される。
【０３１０】
ｉが、ステップｓを実行している間に、ブロックＢｒが既に生成されたという証拠を見ない場合、ｉは、ＢＢＡ★のステップｓ−３で送ったであろう同じメッセージを送る。
【０３１１】
ステップｍ＋３．
ステップｍ＋３の間に、前のステップｓ’でブロックＢｒが既に生成されたことをｉ∈ＳＶｒ，ｍ＋３が見る場合、ｉは、ちょうど上で説明したように進める。
【０３１２】
そうでない場合、ＢＢＡ★のステップｍで送ったであろう同じメッセージを送るのではなく、ｉは、自分が所有している情報に基づいて、Ｂｒおよびそれに対応する証明書ＣＥＲＴｒを計算するように命令される。
【０３１３】
実際に、１ラウンドのステップの総数にｍ＋３の上限を設けることを思い出していただきたい。
【０３１４】
５．４  実際のプロトコル
ラウンドｒの各ステップｓで、検証者ｉ∈ＳＶｒ，ｓは、ｓ＝１のケースのＳＩＧｉ（Ｑｒ−１）だけでなく、自分のクレデンシャル
【数１２５】
2019519137.tif 000127
を生成するために、長期公開・秘密鍵ペアを使用することを思い出していただきたい。検証者ｉは、一時的な秘密鍵ｓｋｉｒ，ｓを使用して、自分の（ｒ，ｓ）メッセージｍｉｒ，ｓに署名する。簡潔にするために、ｒおよびｓが明白である場合、ラウンドｒのステップｓにおける値ｘのｉによる正規の一時的な署名を表すために、
【数１２６】
2019519137.tif 000128
ではなく、ｅｓｉｇｉ（ｘ）を書き、（ｉ，ｘ，ｅｓｉｇｉ（ｘ））を表すために、
【数１２７】
2019519137.tif 000129
の代わりにＥＳＩＧｉ（ｘ）を書く。
【０３１５】
ステップ１：ブロックの提案
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップ１を始める。
【０３１６】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，１かどうかをチェックする。
【０３１７】
・
【数１２８】
2019519137.tif 000130
の場合、ｉは自分自身のステップ１の実行をすぐに停止する。
【０３１８】
・ｉ∈ＳＶｒ，１の場合、すなわち、ｉが潜在的リーダーである場合、ｉは、それまでに当該ｉに伝播されてきたラウンドｒの支払を収集して、そこから最大支払集合ＰＡＹｉｒを計算する。次に、「候補ブロック」Ｂｉｒ＝（ｒ，ＰＡＹｉｒ，ＳＩＧｉ（Ｑｒ−１），Ｈ（Ｂｒ−１））を計算する。最後にメッセージｍｉｒ，ｓ＝（Ｂｉｒ，ｅｓｉｇｉ（Ｈ（Ｂｉｒ）），σｉｒ，１）を計算し、自分の一時的な秘密鍵ｓｋｉｒ，１を破壊してから、ｍｉｒ，１を伝播する。
【０３１９】
備考
実際上、ステップ１の大域的実行を短縮するために、（ｒ，１）メッセージを選択的に伝播することが重要である。すなわち、システム内の全ユーザｉについて、これまでに受信し検証が成功する第１（ｒ，１）メッセージに関し（脚注１１参照）、プレーヤｉはそれを通常通りに伝播する。プレーヤがｉを受信して検証が成功する他のすべての（ｒ，１）メッセージについては、それが含むクレデンシャルのハッシュ値が、当該プレーヤｉがそれまでに受信して検証が成功したすべての（ｒ，１）メッセージに含まれるクレデンシャルのハッシュ値の中で最も小さい場合に限り、それを伝播する。また、ジョルジオ・ブラコス（Ｇｅｏｒｇｉｏｓ  Ｖｌａｃｈｏｓ）が提案するように、各潜在的リーダーｉも自分のクレデンシャルσｉｒ，１を個別に伝播することが有用である。これらの小さなメッセージはブロックよりも高速で移動し、含まれるクレデンシャルが小さいハッシュ値を有する場合に、ｍｊｒ，１の適時の伝播を確実にするのに対し、ハッシュ値が大きいものはすぐに消失させる。
【０３２０】
脚注１１
すなわち、すべての署名が正当であり、ブロックおよびそのハッシュが両方とも有効である。ただし、ｉは、含まれる支払集合がその提案者にとって最大かどうかをチェックしない。
【０３２１】
ステップ２：段階的コンセンサスプロトコルＧＣの第１ステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップ２を始める。
【０３２２】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，２かどうかをチェックする。
【０３２３】
・
【数１２９】
2019519137.tif 000131
の場合、ｉは自分自身のステップ２の実行をすぐに停止する。
【０３２４】
・ｉ∈ＳＶｒ，２の場合、
【数１３０】
2019519137.tif 000132
の時間量を待った後で、ｉは次のように行為する。
【０３２５】
１．  それまでに受信し検証が成功した（ｒ，１）メッセージの一部であるすべてのクレデンシャルσｊｒ，１について、Ｈ（σｌｒ，１）≦Ｈ（σｊｒ，１）になるようなユーザｌを見つける（脚注１２参照）。
【０３２６】
脚注１２
本質的に、ユーザｉはラウンドｒのリーダーがユーザｌであることを秘かに決定する。
【０３２７】
２．  ｌから有効なメッセージｍｌｒ，１＝（Ｂｌｒ，ｅｓｉｇｌ（Ｈ（Ｂｌｒ）），σｌｒ，１）を受信した場合（脚注１３参照）、ｉは
【数１３１】
2019519137.tif 000133
を設定し、そうでなければ、ｉは
【数１３２】
2019519137.tif 000134
を設定する。
【０３２８】
脚注１３
ここでも、プレーヤｌの署名およびハッシュはすべて検証が成功し、ＢｌｒのＰＡＹｌｒはラウンドｒの有効な支払集合である。ただし、ｉは、ＰＡＹｌｒがｌにとって最大かどうかはチェックしない。
【０３２９】
３．  ｉは、メッセージ
【数１３３】
2019519137.tif 000135
を計算し（脚注１４参照）、自分の一時的な秘密鍵ｓｋｉｒ，２を破壊してから、ｍｉｒ，２を伝播する。
【０３３０】
脚注１４
メッセージｍｉｒ，２は、プレーヤｉがｖ’ｉを次のブロックのハッシュとみなす、または次のブロックを空だとみなすことを示す。
【０３３１】
ステップ３：ＧＣの第２ステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップ３を始める。
【０３３２】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，３かどうかをチェックする。
【０３３３】
・
【数１３４】
2019519137.tif 000136
の場合、ｉは自分自身のステップ３の実行をすぐに停止する。
【０３３４】
・ｉ∈ＳＶｒ，３の場合、
【数１３５】
2019519137.tif 000137
の時間量を待った後で、ｉは次のように行為する。
【０３３５】
１．  受信した有効なメッセージｍｊｒ，２すべての中で、一切の矛盾なく（脚注１５参照）、その２／３超が形式（ＥＳＩＧｊ（ｖ’），σｊｒ，２）であるような値ｖ’≠⊥が存在する場合、メッセージ
【数１３６】
2019519137.tif 000138
を計算する。そうでなければ、ｉは、
【数１３７】
2019519137.tif 000139
を計算する。
【０３３６】
脚注１５
すなわち、ｉは、ＥＳＩＧｊ（ｖ’）および異なるＥＳＩＧｊ（ｖ”）をそれぞれ含む２つの有効なメッセージをプレーヤｊから受信していない。ここで、またこれ以降、後で定義する終了条件を除き、誠実なプレーヤが所与の形式のメッセージを望む場合は必ず、互いに矛盾するメッセージは決してカウントされず、または有効と見なされない。
【０３３７】
２．  ｉは、自分の一時的な秘密鍵ｓｋｉｒ，３を破壊してから、ｍｉｒ，３を伝播する。
【０３３８】
ステップ４：ＧＣの出力およびＢＢＡ★の第１ステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップ４を始める。
【０３３９】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，４かどうかをチェックする。
【０３４０】
・
【数１３８】
2019519137.tif 000140
の場合、ｉは自分自身のステップ４の実行をすぐに停止する。
【０３４１】
・ｉ∈ＳＶｒ，４の場合、
【数１３９】
2019519137.tif 000141
の時間量を待った後で、ｉは次のように行為する。
【０３４２】
１．  ｖｉおよびｇｉ、ＧＣの出力を次のように計算する。
（ａ）受信した有効なメッセージｍｊｒ，３すべての中で、その２／３超が形式（ＥＳＩＧｊ（ｖ’），σｊｒ，３）であるような値ｖ’≠⊥が存在する場合、
【数１４０】
2019519137.tif 000142
および
【数１４１】
2019519137.tif 000143
を設定する。
（ｂ）そうでなければ、受信した有効なメッセージｍｊｒ，３すべての中で、その１／３超が形式（ＥＳＩＧｊ（ｖ’），σｊｒ，３）であるような値ｖ’≠⊥が存在する場合、
【数１４２】
2019519137.tif 000144
および
【数１４３】
2019519137.tif 000145
を設定する。（脚注１６参照）
（ｃ）それ以外の場合、
【数１４４】
2019519137.tif 000146
および
【数１４５】
2019519137.tif 000147
を設定する。
【０３４３】
脚注１６
ケース（ｂ）のｖ’は、存在する場合、一意でなければならないことは証明することができる。
【０３４４】
２．  ｂｉ、ＢＢＡ★の入力を次のように計算する。
ｇｉ＝２の場合
【数１４６】
2019519137.tif 000148
で、そうでない場合は
【数１４７】
2019519137.tif 000149
である。
【０３４５】
３．  メッセージ
【数１４８】
2019519137.tif 000150
を計算し、自分の一時的な秘密鍵ｓｋｉｒ，４を破壊してから、ｍｉｒ，４を伝播する。
【０３４６】
ステップｓ，５≦ｓ≦ｍ＋２，ｓ−２≡０  ｍｏｄ  ３：  ＢＢＡ★の、コインを０に固定するステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップｓを始める。
【０３４７】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，ｓかどうかをチェックする。
【０３４８】
・
【数１４９】
2019519137.tif 000151
の場合、ｉは自分自身のステップｓの実行をすぐに停止する。
【０３４９】
・ｉ∈ＳＶｒ，ｓの場合、ｉは次のように行為する。
−
【数１５０】
2019519137.tif 000152
の時間量が経過するまで待つ。
【０３５０】
−終了条件０：このような待機中の任意の時点で、
（ａ）５≦ｓ’≦ｓ，ｓ’−２≡０  ｍｏｄ  ３、すなわち、ステップｓ’がコインを０に固定するステップであり、
（ｂ）ｉは少なくとも
【数１５１】
2019519137.tif 000153
の有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖ），σｊｒ，ｓ’−１）を受信しており（脚注１７参照）、かつ、
（ｃ）ｉがｖ＝Ｈ（Ｂｊｒ）で有効なメッセージｍｊｒ，１＝（Ｂｊｒ，ｅｓｉｇｊ（Ｈ（Ｂｊｒ）），σｊｒ，１）を受信した、
ようなストリングｖ≠⊥およびステップｓ’が存在する場合、ｉは何も伝播せずに、自分自身のステップｓ（また、実際にはラウンドｒ）の実行をすぐに停止し、Ｂｒ＝Ｂｊｒを設定し、自分自身のＣＥＲＴｒをサブステップ（ｂ）のメッセージｍｊｒ，ｓ’−１の集合になるように設定する（脚注１８参照）。
【０３５１】
脚注１７
プレーヤｊからのこのようなメッセージは、プレーヤｉが１について署名するｊからのメッセージも受信した場合であってもカウントされる。終了条件１についても同様。分析で示されるように、これは、すべての誠実なユーザが時間λ以内に互いからＢｒを知ることを確保するために行われる。
【０３５２】
脚注１８
ユーザｉはここでＢｒを知り、自身のラウンドｒを終わらせる。当該ユーザｉはそれでも一般ユーザとしてメッセージの伝播を手伝うが、（ｒ，ｓ）検証者としては伝播を開始しない。具体的には、当該ユーザｉは自分のＣＥＲＴｒですべてのメッセージの伝播を手伝っているが、これは我々のプロトコルにとって十分である。ユーザｉはバイナリＢＡプロトコルについても
【数１５２】
2019519137.tif 000154
を設定するべきであるが、この場合ｂｉは一切必要ないことに留意されたい。すべての将来の命令についても同様。
【０３５３】
−終了条件１：このような待機中の任意の時点で、
（ａ’）６≦ｓ’≦ｓ，ｓ’−２≡１  ｍｏｄ  ３、すなわち、ステップｓ’がコインを１に固定するステップであり、かつ、
（ｂ’）ｉが少なくともｔＨの有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ’−１）を受信している（脚注１９参照）、
ようなステップｓ’が存在する場合、ｉは何も伝播せずに、自分自身のステップｓ（また、実際にはラウンドｒ）の実行をすぐに停止し、Ｂｒ＝Ｂεｒを設定し、自分自身のＣＥＲＴｒをサブステップ（ｂ’）のメッセージｍｊｒ，ｓ’−１の集合になるように設定する。
【０３５４】
脚注１９
この場合、ｖｊが何であるかは問題ではない。
【０３５５】
−そうでなければ、待機の終了時に、ユーザｉは次のことを行う。
ｖｉを、受信した有効なｍｊｒ，ｓ−１すべての第２成分でｖｊの過半数票になるように設定する。
ｉはｂｉを次のように計算する。
受信した有効なｍｊｒ，ｓ−１すべての２／３超が形式（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の場合、
【数１５３】
2019519137.tif 000155
を設定する。
そうでなければ、受信した有効なｍｊｒ，ｓ−１すべての２／３超が形式（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の場合、
【数１５４】
2019519137.tif 000156
を設定する。
そうでなければ、
【数１５５】
2019519137.tif 000157
を設定する。
メッセージ
【数１５６】
2019519137.tif 000158
を計算し、自分の一時的な秘密鍵ｓｋｉｒ，ｓを破壊してから、ｍｉｒ，ｓを伝播する。
【０３５６】
ステップｓ，６≦ｓ≦ｍ＋２，ｓ−２≡１  ｍｏｄ  ３：  ＢＢＡ★の、コインを１に固定するステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップｓを始める。
【０３５７】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，ｓかどうかをチェックする。
【０３５８】
・
【数１５７】
2019519137.tif 000159
の場合、ｉは自分自身のステップｓの実行をすぐに停止する。
【０３５９】
・ｉ∈ＳＶｒ，ｓの場合、ｉは次のように行為する。
−
【数１５８】
2019519137.tif 000160
の時間量が経過するまで待つ。
−終了条件０：コインを０に固定するステップと同じ命令。
−終了条件１：コインを０に固定するステップと同じ命令。
−そうでなければ、待機の終了時に、ユーザｉは次のことを行う。
ｖｉを、受信した有効なｍｊｒ，ｓ−１すべての第２成分でｖｊの過半数票になるように設定する。
ｉはｂｉを次のように計算する。
受信した有効なｍｊｒ，ｓ−１すべての２／３超が形式（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の場合、
【数１５９】
2019519137.tif 000161
を設定する。
そうでなければ、受信した有効なｍｊｒ，ｓ−１すべての２／３超が形式（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の場合、
【数１６０】
2019519137.tif 000162
を設定する。
そうでなければ、
【数１６１】
2019519137.tif 000163
を設定する。
メッセージ
【数１６２】
2019519137.tif 000164
を計算し、自分の一時的な秘密鍵ｓｋｉｒ，ｓを破壊してから、ｍｉｒ，ｓを伝播する。
【０３６０】
ステップｓ，７≦ｓ≦ｍ＋２，ｓ−２≡２  ｍｏｄ  ３：  ＢＢＡ★の、実際にコインを投げるステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップｓを始める。
【０３６１】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，ｓかどうかをチェックする。
【０３６２】
・
【数１６３】
2019519137.tif 000165
の場合、ｉは自分自身のステップｓの実行をすぐに停止する。
【０３６３】
・ｉ∈ＳＶｒ，ｓの場合、ｉは次のように行為する。
−
【数１６４】
2019519137.tif 000166
の時間量が経過するまで待つ。
−終了条件０：コインを０に固定するステップと同じ命令。
−終了条件１：コインを０に固定するステップと同じ命令。
−そうでなければ、待機の終了時に、ユーザｉは次のことを行う。
−ｖｉを、受信した有効なｍｊｒ，ｓ−１すべての第２成分でｖｊの過半数票になるように設定する。
ｉはｂｉを次のように計算する。
受信した有効なｍｊｒ，ｓ−１すべての２／３超が形式（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の場合、
【数１６５】
2019519137.tif 000167
を設定する。
そうでなければ、受信した有効なｍｊｒ，ｓ−１すべての２／３超が形式（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の場合、
【数１６６】
2019519137.tif 000168
を設定する。
そうでなければ、ＳＶｉｒ，ｓ−１を、有効なメッセージｍｊｒ，ｓ−１を受信した（ｒ，ｓ−１）検証者の集合にする。
【数１６７】
2019519137.tif 000169
を設定する。
メッセージ
【数１６８】
2019519137.tif 000170
を計算し、自分の一時的な秘密鍵ｓｋｉｒ，ｓを破壊してから、ｍｉｒ，ｓを伝播する。
【０３６４】
ステップｍ＋３：ＢＢＡ★の最後のステップ（脚注２０参照）
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、Ｂｒ−１を知るや否や、ラウンドｒの自分自身のステップｍ＋３を始める。
【０３６５】
脚注２０
圧倒的確率で、ＢＢＡ★はこのステップの前に終了しており、このステップを完全性のために明記する。
【０３６６】
・ユーザｉはＢｒ−１の第３成分からＱｒ−１を計算し、ｉ∈ＳＶｒ，ｍ＋３かどうかをチェックする。
【０３６７】
・
【数１６９】
2019519137.tif 000171
の場合、ｉは自分自身のステップｍ＋３の実行をすぐに停止する。
【０３６８】
・ｉ∈ＳＶｒ，ｍ＋３の場合、ｉは次のことを行う。
−
【数１７０】
2019519137.tif 000172
の時間量が経過するまで待つ。
−終了条件０：コインを０に固定するステップと同じ命令。
−終了条件１：コインを０に固定するステップと同じ命令。
−そうでなければ、待機の終了時に、ユーザｉは次のことを行う。
【数１７１】
2019519137.tif 000173
および
【数１７２】
2019519137.tif 000174
を設定する。
メッセージｍｉｒ，ｍ＋３＝（ＥＳＩＧｉ（ｏｕｔｉ），ＥＳＩＧｉ（Ｈ（Ｂｒ）），σｉｒ，ｍ＋３）を計算し、自分の一時的な秘密鍵ｓｋｉｒ，ｍ＋３を破壊してから、Ｂｒを認定するためにｍｉｒ，ｍ＋３を伝播する（脚注２１参照）。
【０３６９】
脚注２１
ステップｍ＋３からの証明書は、ＥＳＩＧｉ（ｏｕｔｉ）を含まなければならないわけではない。一様性のためにのみこれを含めている。証明書はこれで、どのステップで生成されようとも一様なフォーマットを有する。
【０３７０】
非検証者によるラウンドｒブロックの再構成
システム内の全ユーザｉのための命令：ユーザｉは、Ｂｒ−１を知るや否や、自分自身のラウンドｒを始め、ブロック情報を次のように待つ。
【０３７１】
−このような待機中の任意の時点で、
（ａ）ｓ’−２≡０  ｍｏｄ  ３で、５≦ｓ’≦ｍ＋３、
（ｂ）ｉが少なくともｔＨの有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖ），σｊｒ，ｓ’−１）を受信しており、かつ、
（ｃ）ｉがｖ＝Ｈ（Ｂｊｒ）で有効なメッセージｍｊｒ，１＝（Ｂｊｒ，ｅｓｉｇｊ（Ｈ（Ｂｊｒ）），σｊｒ，１）を受信した、
ようなストリングｖおよびステップｓ’が存在する場合、ｉは自分自身のラウンドｒの実行をすぐに停止し、Ｂｒ＝Ｂｊｒを設定し、自分自身のＣＥＲＴｒをサブステップ（ｂ）のメッセージｍｊｒ，ｓ’−１の集合になるように設定する。
【０３７２】
−このような待機中の任意の時点で、
（ａ’）ｓ’−２≡１  ｍｏｄ  ３で、６≦ｓ’≦ｍ＋３、かつ、
（ｂ’）ｉが少なくともｔＨの有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ’−１）を受信している、
ようなステップｓ’が存在する場合、ｉは自分自身のラウンドｒの実行をすぐに停止し、Ｂｒ＝Ｂεｒを設定し、自分自身のＣＥＲＴｒをサブステップ（ｂ’）のメッセージｍｊｒ，ｓ’−１の集合になるように設定する。
【０３７３】
−このような待機中の任意の時点で、ｉが少なくともｔＨの有効なメッセージｍｊｒ，ｍ＋３＝（ＥＳＩＧｊ（１），ＥＳＩＧｊ（Ｈ（Ｂεｒ）），σｊｒ，ｍ＋３）を受信している場合、ｉは自分自身のラウンドｒの実行をすぐに停止し、Ｂｒ＝Ｂεｒを設定し、自分自身のＣＥＲＴｒを１およびＨ（Ｂεｒ）のメッセージｍｊｒ，ｍ＋３の集合になるように設定する。
【０３７４】
５．５  アルゴランド’１の分析
分析で使用する各ラウンドｒ≧０について以下の記号を採用する。
・Ｔｒを、第１の誠実なユーザがＢｒ−１を知る時刻とする。
・Ｉｒ＋１を、間隔［Ｔｒ＋１，Ｔｒ＋１＋λ］とする。
【０３７５】
Ｔ０＝０はプロトコルの初期化によることに留意されたい。各ｓ≧１およびｉ∈ＳＶｒ，ｓについて、αｉｒ，ｓおよびβｉｒ，ｓはそれぞれプレーヤｉのステップｓの開始時刻および終了時刻であることを思い出していただきたい。また、各２≦ｓ≦ｍ＋３についてｔｓ＝（２ｓ−３）λ＋Λであることを思い出していただきたい。加えて、
【数１７３】
2019519137.tif 000175
および
【数１７４】
2019519137.tif 000176
とする。
【０３７６】
最後に、各試行が
【数１７５】
2019519137.tif 000177
の確率で１になり、たかだかｍ／３の試行がある場合、Ｌｒ≦ｍ／３は、１を見るために必要なベルヌーイ試行の回数を表すランダム変数であることを思い出していただきたい。すべての試行が失敗すると、
【数１７６】
2019519137.tif 000178
である。
【０３７７】
分析では、メッセージを伝播するために必要な時間に対して実際に無視できる程度であるため、計算時間を無視する。いずれにしても、やや大きいλおよびΛを使用することにより、計算時間を分析に直接組み入れることができる。以下の記述のほとんどは「圧倒的確率で」成り立つので、この事実については分析で繰返し強調しないこともある。
【０３７８】
５．６  主要定理
定理５．１．
以下の性質は、各ラウンドｒ≧０について、圧倒的確率で成り立つ。
１．すべての誠実なユーザが同じブロックＢｒに合意する。
２．リーダーｌｒが誠実である場合、ブロックＢｒはｌｒによって生成され、Ｂｒは、時刻
【数１７７】
2019519137.tif 000179
までにｌｒが受信した最大支払集合を含み、Ｔｒ＋１≦Ｔｒ＋８λ＋Λおよびすべての誠実なユーザが時間間隔Ｉｒ＋１でＢｒを知る。
３．リーダーｌｒが悪意の場合、Ｔｒ＋１≦Ｔｒ＋（６Ｌｒ＋１０）λ＋Λおよびすべての誠実なユーザが時間間隔Ｉｒ＋１でＢｒを知る。
４．Ｌｒについてｐｈ＝ｈ２（１＋ｈ−ｈ２）のとき、リーダーｌｒは少なくともｐｈの確率で誠実である。
【０３７９】
我々の主要定理を証明する前に、２つの注意点を述べよう。
【０３８０】
ブロック生成および真のレイテンシ
ブロックＢｒを生成する時間は、Ｔｒ＋１−Ｔｒと定義される。すなわち、ある誠実なユーザがＢｒを知った初めてのときと、ある誠実なユーザがＢｒ−１を知った初めてのときと、の差と定義される。ラウンドｒのリーダーが誠実である場合、性質２の我々の主要定理は、ｈ＞２／３の正確な値が何であろうと、Ｂｒを生成するまさにその時間が８λ＋Λ時間であることを保証する。リーダーが悪意の場合、ここでも、ｈの正確な値が何であろうと、性質３は、Ｂｒを生成する期待時間に、
【数１７８】
2019519137.tif 000180
によって上限が設けられることを含意する（脚注２２参照）。しかしながら、Ｂｒを生成する期待時間はｈの正確な値によって変わる。実際には、性質４によって、ｐｈ＝ｈ２（１＋ｈ−ｈ２）で、リーダーは少なくともｐｈの確率で誠実であり、したがって、
【数１７９】
2019519137.tif 000181
である。
たとえば、ｈ＝８０％の場合、
【数１８０】
2019519137.tif 000182
である。
【０３８１】
脚注２２
実際には、
【数１８１】
2019519137.tif 000183
である。
【０３８２】
定理５．１の証明．
性質１〜３を帰納法により証明する。当該性質１〜３がラウンドｒ−１について成り立つと仮定すると（一般性を損なうことなく、当該性質１〜３はｒ＝０のとき自動的に「ラウンド−１」について成り立つ）、ラウンドｒについてそれを証明する。
【０３８３】
Ｂｒ−１は帰納的仮説によって一意に定義されるので、ラウンドｒの各ステップｓについて集合ＳＶｒ，ｓが一意に定義される。ｎ１を選ぶことによって、圧倒的確率で
【数１８２】
2019519137.tif 000184
である。ここで、セクション５．７および５．８で証明される次の２つの補題を述べる。帰納法を通して、また２つの補題の証明において、ラウンド０の分析は帰納ステップとほぼ同じであり、これらが発生するときの違いを強調する。
【０３８４】
補題５．２．
［完全性の補題］  ラウンドｒ−１について性質１〜３が成り立つと仮定すると、リーダーｌｒが誠実な場合、圧倒的確率で、
・すべての誠実なユーザは、ｌｒによって生成され、時刻
【数１８３】
2019519137.tif 000185
までにｌｒによって受信された最大支払集合を含む同じブロックＢｒに合意し、かつ、
・Ｔｒ＋１≦Ｔｒ＋８λ＋Λであり、すべての誠実なユーザは時間間隔Ｉｒ＋１でＢｒを知る。
【０３８５】
補題５．３．
［健全性の補題］性質１〜３がラウンドｒ−１について成り立つと仮定すると、リーダーｌｒが悪意の場合、圧倒的確率で、すべての誠実なユーザは同じブロックＢｒに合意し、Ｔｒ＋１≦Ｔｒ＋（６Ｌｒ＋１０）λ＋Λであり、すべての誠実なユーザは時間間隔Ｉｒ＋１でＢｒを知る。
性質１〜３は、補題５．２および５．３をｒ＝０および帰納ステップに適用することによって成り立つ。最後に、性質４を、セクション５．９で証明される次の補題として再び述べる。
【０３８６】
補題５．４．
ｒの前の各ラウンドについて性質１〜３があるとすると、Ｌｒについてｐｈ＝ｈ２（１＋ｈ−ｈ２）で、少なくともｐｈの確率でリーダーｌｒは誠実である。
上記３つの補題を合わせると、定理５．１が成り立つ。
以下の補題は、帰納的仮説があるとして、ラウンドｒに関するいくつかの重要な性質を述べており、上記３つの補題の証明で使用される。
【０３８７】
補題５．５．
性質１〜３はラウンドｒ−１について成り立つと仮定する。ラウンドｒの各ステップｓ≧１および各誠実な検証者ｉ∈ＨＳＶｒ，ｓについて、次のことが分かっている。
（ａ）αｉｒ，ｓ∈Ｉｒであり、
（ｂ）プレーヤｉが時間量ｔｓ待っていた場合、ｒ＞０についてはβｉｒ，ｓ∈［Ｔｒ＋ｔｓ，Ｔｒ＋λ＋ｔｓ］で、ｒ＝０についてはβｉｒ，ｓ＝ｔｓであり、かつ、
（ｃ）プレーヤｉが時間量ｔｓ待っていた場合、ｉは、時刻βｉｒ，ｓまでに、すべてのステップｓ’＜ｓについて、すべての誠実な検証者ｊ∈ＨＳＶｒ，ｓ’によって送られたすべてのメッセージを受信している。
さらに、各ステップｓ≧３については、次のことが分かっている。
（ｄ）２人の異なるプレーヤｉ，ｉ’∈ＳＶｒ，ｓは存在せず、同じ長さの２つの異なる値ｖ，ｖ’は存在しないので、どちらのプレーヤも時間量ｔｓ待ち、プレーヤｉが受信するすべての有効なメッセージｍｊｒ，ｓ−１の２／３超がｖに関して署名しており、プレーヤｉ’が受信するすべての有効なメッセージｍｊｒ，ｓ−１の２／３超がｖ’に関して署名している。
【０３８８】
証明．
性質（ａ）は、プレーヤｉが時間間隔ＩｒでＢｒ−１を知り、すぐに自分自身のステップｓを始めるため、帰納的仮説から直接得られる。性質（ｂ）は（ａ）から直接得られる。プレーヤｉは行為する前に時間量ｔｓ待っているため、βｉｒ，ｓ＝αｉｒ，ｓ＋ｔｓである。ｒ＝０についてはαｉｒ，ｓ＝０であることに留意されたい。
【０３８９】
ここで、性質（ｃ）を証明する。ｓ＝２である場合、性質（ｂ）により、すべての検証者ｊ∈ＨＳＶｒ，１については、次式になる。
【数１８４】
2019519137.tif 000186
【０３９０】
各検証者ｊ∈ＨＳＶｒ，１は自分のメッセージを時刻βｉｒ，１に送り、メッセージはたかだかΛ時間内にすべての誠実なユーザに届き、時刻βｉｒ，ｓまでに、プレーヤｉは所望のようにＨＳＶｒ，１内のすべての検証者によって送られるメッセージを受信する。
【０３９１】
ｓ＞２の場合、ｔｓ＝ｔｓ−１＋２λである。性質（ｂ）により、すべてのステップｓ’＜ｓおよびすべての検証者ｊ∈ＨＳＶｒ，ｓ’について、次の式になる。
【数１８５】
2019519137.tif 000187
【０３９２】
各検証者ｊ∈ＨＳＶｒ，ｓ’は自分のメッセージを時刻βｊｒ，ｓ’に送り、メッセージはたかだかλ時間内にすべての誠実なユーザに届き、時刻βｉｒ，ｓまでに、プレーヤｉは、すべてのｓ‘＜ｓについて、ＨＳＶｒ，ｓ’内のすべての検証者によって送られるメッセージを受信する。したがって、性質（ｃ）は成り立つ。
【０３９３】
最後に、性質（ｄ）を証明する。検証者ｊ∈ＳＶｒ，ｓ−１は自分の一時的な秘密鍵を使用して、ステップｓ−１でたかだか２つのことに署名することに留意されたい。すなわち、ハッシュ関数の出力と同じ長さの値ｖｊと、また、ｓ−１≧４の場合はビットｂｊ∈｛０，１｝である。そのため我々は、補題の言明において、ｖおよびｖ’が同じ長さを有することを要求する。多くの検証者はハッシュ値ｖおよびビットｂの両方に署名したかもしれず、したがって、どちらも２／３の閾値を超える。
【０３９４】
矛盾を目的として、所望の検証者ｉ，ｉ’および値ｖ，ｖ’が存在すると仮定する。ＭＳＶｒ，ｓ−１内の何人かの悪意の検証者がｖおよびｖ’の両方に署名したかもしれないが、ＨＳＶｒ，ｓ−１内の各誠実な検証者は、そのうちの、たかだか一方にしか署名していない。性質（ｃ）によって、ｉおよびｉ’はともにＨＳＶｒ，ｓ−１内のすべての誠実な検証者によって送られたすべてのメッセージを受信している。
【０３９５】
ＨＳＶｒ，ｓ−１（ｖ）を、ｖに署名した誠実な（ｒ，ｓ−１）検証者の集合とし、ＭＳＶｉｒ，ｓ−１を、ｉが有効なメッセージを受信した悪意の（ｒ，ｓ−１）検証者の集合とし、ＭＳＶｉｒ，ｓ−１（ｖ）を、ｖに署名する有効なメッセージをｉが受信したＭＳＶｉｒ，ｓ−１の小集合とする。ｉおよびｖの要件により、次の式になる。
【数１８６】
2019519137.tif 000188
【０３９６】
まず、次のことを証明する。
【数１８７】
2019519137.tif 000189
【０３９７】
そうでないと仮定すると、パラメータ間の関係により、圧倒的確率で、
【数１８８】
2019519137.tif 000190
となり、したがって、
【数１８９】
2019519137.tif 000191
となって、不等式１と矛盾する。
【０３９８】
次に、不等式１によって、次の式になる。
【数１９０】
2019519137.tif 000192
【０３９９】
不等式２と組み合わせると、
【数１９１】
2019519137.tif 000193
となり、これは、次の式を含意する。
【数１９２】
2019519137.tif 000194
【０４００】
同様に、ｉ’およびｖ’の要件によって、次の式になる。
【数１９３】
2019519137.tif 000195
【０４０１】
誠実な検証者ｊ∈ＨＳＶｒ，ｓ−１は、自分のメッセージを伝播する前に自分の一時的な秘密鍵ｓｋｊｒ，ｓ−１を破壊するので、敵対者は、ｊが検証者であると知った後で、ｊが署名しなかった値のｊの署名を偽造することはできない。このように、上記２つの不等式は、矛盾｜ＨＳＶｒ，ｓ−１｜≧｜ＨＳＶｒ，ｓ−１（ｖ）｜＋｜ＨＳＶｒ，ｓ−１（ｖ’）｜＞｜ＨＳＶｒ，ｓ−１｜を含意する。したがって、所望のｉ，ｉ’，ｖ，ｖ’は存在せず、性質（ｄ）は成り立つ。
【０４０２】
５．７  完全性の補題
補題５．２．
［完全性の補題、書き換え］
ラウンドｒ−１について性質１〜３が成り立つと仮定すると、リーダーｌｒが誠実な場合、圧倒的確率で、
・すべての誠実なユーザは、ｌｒによって生成され、時刻
【数１９４】
2019519137.tif 000196
までにｌｒによって受信された最大支払集合を含む同じブロックＢｒに合意し、かつ、
・Ｔｒ＋１≦Ｔｒ＋８λ＋Λであり、すべての誠実なユーザは時間間隔Ｉｒ＋１でＢｒを知る。
【０４０３】
証明．
帰納的仮説および補題５．５によって、各ステップｓおよび検証者ｉ∈ＨＳＶｒ，ｓについて、αｉｒ，ｓ∈Ｉｒである。以下に、プロトコルをステップごとに分析する。
【０４０４】
ステップ１．
定義上、すべての誠実な検証者ｉ∈ＨＳＶｒ，１は、所望のメッセージｍｉｒ，１を時刻βｉｒ，１＝αｉｒ，１のときに伝播し、ここで、ｍｉｒ，１＝（Ｂｉｒ，ｅｓｉｇｉ（Ｈ（Ｂｉｒ）），σｉｒ，１）、Ｂｉｒ＝（ｒ，ＰＡＹｉｒ，ＳＩＧｉ（Ｑｒ−１），Ｈ（Ｂｒ−１））であり、ＰＡＹｉｒはｉが時刻αｉｒ，１までに見たすべての支払の中の最大支払集合である。
【０４０５】
ステップ２．
誠実な検証者ｉ∈ＨＳＶｒ，２を任意に決める。補題５．５によって、プレーヤｉが時刻βｉｒ，２＝αｉｒ，２＋ｔ２のときに待機を終えるとき、プレーヤｉは、
【数１９５】
2019519137.tif 000197
を含め、ＨＳＶｒ，１内の検証者によって送られたすべてのメッセージを受信している。ｌｒの定義上、クレデンシャルのハッシュ値が
【数１９６】
2019519137.tif 000198
よりも小さいＰＫｒ−ｋ内の別のプレーヤは存在しない。当然、敵対者は
【数１９７】
2019519137.tif 000199
が非常に小さいことを見た後にｌｒを腐敗させることはできるが、そのときまでに、プレーヤｌｒは自分の一時的な鍵を破壊して、メッセージ
【数１９８】
2019519137.tif 000200
を伝播してしまっている。このように、検証者ｉは自分自身のリーダーをプレーヤｌｒになるように設定する。したがって、時刻βｉｒ，２に、検証者ｉはｍｉｒ，２＝（ＥＳＩＧｉ（ｖ’ｉ），σｉｒ，２）を伝播し、ここで、
【数１９９】
2019519137.tif 000201
である。ｒ＝０のとき、唯一の違いは、範囲ではなく、βｉｒ，２＝ｔ２となることである。同様なことがその後のステップにも言えるので、改めてそれを強調しない。
【０４０６】
ステップ３．
誠実な検証者ｉ∈ＨＳＶｒ，３を任意に決める。補題５．５によって、プレーヤｉが時刻βｉｒ，３＝αｉｒ，３＋ｔ３のときに待機を終えるとき、プレーヤｉは、ＨＳＶｒ，２内の検証者によって送られたすべてのメッセージを受信している。
【０４０７】
パラメータ間の関係によって、圧倒的確率で、｜ＨＳＶｒ，２｜＞２｜ＭＳＶｒ，２｜である。さらに、誠実な検証者は矛盾するメッセージに署名しないので、敵対者は、誠実な検証者が自分の対応する一時的な秘密鍵を破壊してまった後は、誠実な検証者の署名を偽造することはできない。このように、ｉが受信した有効な（ｒ，２）メッセージのすべての２／３超は誠実な検証者からのものであり、矛盾なく、形式
【数２００】
2019519137.tif 000202
をとる。
【０４０８】
したがって、時刻βｉｒ，３で、プレーヤｉはｍｉｒ，３＝（ＥＳＩＧｉ（ｖ’），σｉｒ，３）を伝播し、ここで、
【数２０１】
2019519137.tif 000203
である。
【０４０９】
ステップ４．
誠実な検証者ｉ∈ＨＳＶｒ，４を任意に決める。補題５．５によって、プレーヤｉが時刻βｉｒ，４＝αｉｒ，４＋ｔ４のときに待機を終えるとき、プレーヤｉは、ＨＳＶｒ，３内の検証者によって送られたすべてのメッセージを受信している。ステップ３と同様に、ｉが受信した有効な（ｒ，３）メッセージのすべての２／３超は誠実な検証者からのものであり、形式
【数２０２】
2019519137.tif 000204
をとる。
【０４１０】
したがって、プレーヤｉは
【数２０３】
2019519137.tif 000205
、ｇｉ＝２およびｂｉ＝０を設定する。時刻βｉｒ，４＝αｉｒ，４＋ｔ４で、プレーヤｉは、
【数２０４】
2019519137.tif 000206
を伝播する。
【０４１１】
ステップ５．
誠実な検証者ｉ∈ＨＳＶｒ，５を任意に決める。補題５．５によって、プレーヤｉは、時刻αｉｒ，５＋ｔ５まで待っていた場合、ＨＳＶｒ，４内の検証者によって送られたすべてのメッセージを受信しているだろう。｜ＨＳＶｒ，４｜≧ｔＨであることに留意されたい（脚注２３参照）。また、ＨＳＶｒ，４内のすべての検証者は
【数２０５】
2019519137.tif 000207
について署名していることにも留意されたい。
【０４１２】
脚注２３
厳密にいうと、これは非常に高い確率で起こるが、必ずしも圧倒的ではない。しかし、この確率はプロトコルの実行時間に少し影響するものの、その正当性には影響を与えない。ｈ＝８０％のとき、確率１−１０−８で｜ＨＳＶｒ，４｜≧ｔＨになる。このイベントが発生しない場合、プロトコルは別の３ステップについて続行する。これが２ステップで発生しない確率は無視できる程度であるため、プロトコルはステップ８で終了する。すると、予想で、必要なステップ数はほぼ５である。
【０４１３】
｜ＭＳＶｒ，４｜＜ｔＨのとき、ＳＶｒ，４内のｔＨ検証者（必然的に悪意になるであろう）によって署名できたであろう
【数２０６】
2019519137.tif 000208
は存在せず、そのためプレーヤｉは、ｔＨの有効なメッセージ
【数２０７】
2019519137.tif 000209
を受信する前に停止しない。Ｔを、後者のイベントが発生するときの時刻とする。これらのメッセージのいくらかは悪意のプレーヤからのものであるかもしれないが、｜ＭＳＶｒ，４｜＜ｔＨであるため、そのうちの少なくとも１つはＨＳＶｒ，４内の誠実な検証者からのものであり、時刻Ｔｒ＋ｔ４の後に送られる。したがって、
【数２０８】
2019519137.tif 000210
であり、時刻Ｔまでに、プレーヤｉはメッセージ
【数２０９】
2019519137.tif 000211
も受信している。プロトコルの構築によって、プレーヤｉは時刻βｉｒ，５＝Ｔで何も伝播せずに停止し、
【数２１０】
2019519137.tif 000212
を設定し、自分自身のＣＥＲＴｒを０についての（ｒ，４）メッセージおよび受信した
【数２１１】
2019519137.tif 000213
の集合になるように設定する。
【０４１４】
ステップｓ＞５．
同様に、任意のステップｓ＞５および任意の検証者ｉ∈ＨＳＶｒ，ｓについて、プレーヤｉは、時刻αｉｒ，ｓ＋ｔｓまで待っていた場合、ＨＳＶｒ，４内の検証者によって送られたすべてのメッセージを受信しているだろう。同じ分析により、プレーヤｉは何も伝播せずに停止し、
【数２１２】
2019519137.tif 000214
を設定する（また、自分自身のＣＥＲＴｒを適切に設定する）。当然、悪意の検証者は停止しないこともあり、任意のメッセージを伝播するかもしれないが、｜ＭＳＶｒ，ｓ｜＜ｔＨであるため、帰納法により、他のｖ’が任意のステップ４≦ｓ’＜ｓ内のｔＨ人の検証者によって署名され得るはずがなく、したがって、誠実な検証者のみが０についてのｔＨ個の有効な（ｒ，４）メッセージおよび
【数２１３】
2019519137.tif 000215
を受信しているので停止する。
【０４１５】
ラウンドｒブロックの再構築
ステップ５の分析を、一般の誠実なユーザｉにほぼ何も変えずに適用する。実際、プレーヤｉは自分自身のラウンドｒを間隔Ｉｒで開始し、
【数２１４】
2019519137.tif 000216
についてｔＨ個の有効な（ｒ，４）メッセージを受信した時刻Ｔでのみ停止することになる。ここでも、これらのメッセージのうちの少なくとも１つは誠実な検証者からものであり、時刻Ｔｒ＋ｔ４の後で送られるので、プレーヤｉは時刻Ｔまでに
【数２１５】
2019519137.tif 000217
も受信している。したがって、プレーヤｉは、正規のＣＥＲＴｒで
【数２１６】
2019519137.tif 000218
を設定する。
【０４１６】
すべての誠実なユーザが自分のラウンドｒを時間間隔Ｉｒ＋１以内に終了することの証明のみが残っている。ステップ５の分析によって、すべての誠実な検証者ｉ∈ＨＳＶｒ，５は、αｉｒ，５＋ｔ５≦Ｔｒ＋λ＋ｔ５＝Ｔｒ＋８λ＋Λに、またはその前にＢｒを知っている。Ｔｒ＋１は最初の誠実なユーザｉｒがＢｒを知るときであるため、所望の通り次の式になる。
【数２１７】
2019519137.tif 000219
さらに、プレーヤｉｒがＢｒを知るとき、当該プレーヤｉｒは既に自分のＣＥＲＴｒ内でメッセージの伝播を助けている。プレーヤｉｒがそれを伝播する最初のプレーヤであった場合であっても、これらすべてのメッセージが時刻λ以内にすべての誠実なユーザによって受信されることに留意されたい。また、上記分析後、
【数２１８】
2019519137.tif 000220
になり、そのため、すべての誠実なユーザは時刻Ｔｒ＋１＋λまでに
【数２１９】
2019519137.tif 000221
を受信している。したがって、すべての誠実なユーザが、時間間隔Ｉｒ＋１＝［Ｔｒ＋１，Ｔｒ＋１＋λ］でＢｒを知る。
【０４１７】
最後に、ｒ＝０について、実際に、Ｔ１≦ｔ４＋λ＝６λ＋Λになる。すべてを組み合わせると、補題５．２は成り立つ。
【０４１８】
５．８  健全性の補題
補題５．３．
［健全性の補題、書き換え］
ラウンドｒ−１について性質１〜３が成り立つと仮定すると、リーダーｌｒが悪意の場合、圧倒的確率で、すべての誠実なユーザは同じブロックＢｒに合意し、Ｔｒ＋１≦Ｔｒ＋（６Ｌｒ＋１０）λ＋Λで、すべての誠実なユーザは時間間隔Ｉｒ＋１でＢｒを知る。
【０４１９】
証明  プロトコルの２つの部分、ＧＣおよびＢＢＡ★、を別々に検討する。
【０４２０】
ＧＣ
帰納的仮説および補題５．５によって、任意のステップｓ∈｛２，３，４｝および任意の誠実な検証者ｉ∈ＨＳＶｒ，ｓについて、プレーヤｉが時刻βｉｒ，ｓ＝αｉｒ，ｓ＋ｔｓで行為するとき、ステップｓ’＜ｓで、すべての誠実な検証者によって送られたすべてのメッセージを受信している。ステップ４について考えられる２つのケースを区別する。
【０４２１】
ケース１：
どの検証者ｉ∈ＨＳＶｒ，４もｇｉ＝２を設定しない。
この場合、定義上、すべての検証者ｉ∈ＨＳＶｒ，４についてｂｉ＝１である。すなわち、当該すべての検証者はバイナリＢＡプロトコルで１に関する合意から始める。当該すべての検証者は自分のｖｉに関して合意しないかもしれないが、これは、バイナリＢＡで述べる通り問題ではない。
【０４２２】
ケース２：
【数２２０】
2019519137.tif 000222
になるような検証者
【数２２１】
2019519137.tif 000223
が存在する。
この場合、次のことを証明する。
（１）全ｉ∈ＨＳＶｒ，４についてｇｉ≧１であり、
（２）全ｉ∈ＨＳＶｒ，４についてｖｉ＝ｖ’になるような値ｖ’が存在し、かつ、
（３）ｖ’＝Ｈ（Ｂｌｒ）になるような、ある検証者ｌ∈ＳＶｒ，１からの有効なメッセージｍｌｒ，１が存在する。
【０４２３】
実際、プレーヤ
【数２２２】
2019519137.tif 000224
は誠実で、
【数２２３】
2019519137.tif 000225
を設定するので、当該プレーヤが受信したすべての有効なメッセージｍｊｒ，３の２／３超は同じ値ｖ’≠⊥に関するものであり、当該プレーヤは
【数２２４】
2019519137.tif 000226
を設定済みである。補題５．５の性質（ｄ）によって、他の誠実な（ｒ，４）検証者ｉについて、ｉ’が受信したすべての有効なメッセージｍｊｒ，３の２／３超が同じ値ｖ”≠ｖ’に関するものであるということはあり得ない。したがって、ｉがｇｉ＝２を設定する場合、ｉは同じくｖ’についても＞２／３過半数を見ていなければならず、所望のように、ｖｉ＝ｖ’を設定しなければならない。
【０４２４】
ここで、ｇｉ＜２で任意の検証者ｉ∈ＨＳＶｒ，４を考える。補題５．５の性質（ｄ）の分析と同様に、プレーヤ
【数２２５】
2019519137.tif 000227
はｖ’について＞２／３過半数を見ているので、
【数２２６】
2019519137.tif 000228
を超える誠実な（ｒ，３）検証者がｖ’に署名している。ｉは時刻βｉｒ，４＝αｉｒ，４＋ｔ４までに誠実な（ｒ，３）検証者によるすべてのメッセージを受信しているため、特にｖ’について当該検証者から
【数２２７】
2019519137.tif 000229
を超えるメッセージを受信している。｜ＨＳＶｒ，３｜＞２｜ＭＳＶｒ，３｜であるため、ｉはｖ’について＞１／３過半数を見ている。したがって、プレーヤｉはｇｉ＝１を設定し、性質（１）は成り立つ。
【０４２５】
プレーヤｉは必ずｖｉ＝ｖ’を設定するのだろうか？  プレーヤｉがｖ”についても＞１／３過半数を見たような、異なる値ｖ”≠⊥が存在すると仮定する。これらのメッセージのうちのいくらかは悪意の検証者からのものかもしれないが、そのうちの少なくとも１つは、ある誠実な検証者ｊ∈ＨＳＶｒ，３からのものである。実際、｜ＨＳＶｒ，３｜＞２｜ＭＳＶｒ，３｜で、ｉはＨＳＶｒ，３からすべてのメッセージを受信しているため、ｉが有効な（ｒ，３）メッセージを受信した悪意の検証者の集合は、ｉが受信したすべての有効なメッセージの＜１／３に値する。
【０４２６】
定義上、プレーヤｊは、受信したすべての有効な（ｒ，２）メッセージの中うち、ｖ”について＞２／３過半数を見ていなければならない。しかし我々は、ｖ’について何人かの他の誠実な（ｒ，３）検証者が＞２／３過半数を見たことを既に知っている（当該他の検証者がｖ’に署名したため）。補題５．５の性質（ｄ）によって、これは起こり得ず、このような値ｖ”は存在しない。したがって、プレーヤｉは所望の通りｖｉ＝ｖ’を設定していなければならず、性質（２）が成り立つ。
【０４２７】
最後に、ｖ’について何人かの誠実な（ｒ，３）検証者が＞２／３過半数を見ているとすると、何人かの誠実な（ｒ，２）検証者（実際にはその半分より多く）がｖ’について署名し、自分のメッセージを伝播している。プロトコルの構築により、その誠実な（ｒ，２）検証者は、ｖ’＝Ｈ（Ｂｌｒ）であるプレーヤｌ∈ＳＶｒ，１から有効なメッセージｍｌｒ，１を受信していなければならず、したがって、性質（３）が成り立つ。
【０４２８】
ＢＢＡ★
ここでも２つのケースを区別する。
【０４２９】
ケース１  すべての検証者ｉ∈ＨＳＶｒ，４はｂｉ＝１になる。
【０４３０】
これは、ＧＣのケース１の後に起こる。｜ＭＳＶｒ，４｜＜ｔＨであるため、この場合、ＳＶｒ，５内の検証者は、ビット０についてｔＨ個の有効な（ｒ，４）メッセージを収集または生成することはできないであろう。したがって、ＨＳＶｒ，５内の誠実な検証者は、空ではないブロックＢｒを知っているため停止しないであろう。
【０４３１】
また、ビット１については少なくともｔＨ個の有効な（ｒ，４）メッセージがあるが、ｓ’＝５はｓ’−２≡１  ｍｏｄ  ３を満たさないので、ＨＳＶｒ，５内の誠実な検証者は、Ｂｒ＝Ｂεｒを知っているため停止しないであろう。
【０４３２】
代わりに、すべての検証者ｉ∈ＨＳＶｒ，５が時刻βｉｒ，５＝αｉｒ，５＋ｔ５で行為し、そのときまでに当該検証者は補題５．５の後にＨＳＶｒ，４によって送られたすべてのメッセージを受信している。したがって、プレーヤｉは１について＞２／３過半数を見ており、ｂｉ＝１を設定する。
【０４３３】
コインを１に固定するステップであるステップ６では、ｓ’＝５はｓ’−２≡０  ｍｏｄ  ３を満たすが、ビット０についてｔＨ個の有効な（ｒ，４）メッセージは存在せず、そのため、ＨＳＶｒ，６内の検証者は、空ではないブロックＢｒを知っているため停止しないであろう。しかし、ｓ’＝６のときは、ｓ’−２≡１  ｍｏｄ  ３で、ＨＳＶｒ，５からのビット１についての｜ＨＳＶｒ，５｜≧ｔＨ個の有効な（ｒ，５）メッセージが存在する。
【０４３４】
すべての検証者ｉ∈ＨＳＶｒ，６について、補題５．５の後に、時刻αｉｒ，６＋ｔ６で、またはその前に、プレーヤｉはＨＳＶｒ，５からすべてのメッセージを受信しており、そのためｉは何も伝播せずに停止して、Ｂｒ＝Ｂεｒを設定する。当該検証者ｉのＣＥＲＴｒは、当該検証者ｉが停止するときに受信したｔＨ個の有効な（ｒ，５）メッセージｍｊｒ，５＝（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，５）の集合である。
【０４３５】
次に、プレーヤｉを、ステップｓ＞６の誠実な検証者または一般の誠実なユーザ（つまり、非検証者）のいずれかにする。補題５．２の証明と同様に、プレーヤｉはＢｒ＝Ｂεｒを設定し、自分自身のＣＥＲＴｒを、自分が受信しているｔＨ個の有効な（ｒ，５）メッセージｍｊｒ，５＝（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，５）の集合に設定する。
【０４３６】
最後に、補題５．２と同様に、
【数２２８】
2019519137.tif 000230
で、Ｂｒを知っている最初の誠実なユーザｉが自分のＣＥＲＴｒで（ｒ，５）メッセージの伝播を助けたため、すべての誠実なユーザは時間間隔Ｉｒ＋１でＢｒを知っている。
【０４３７】
ケース２  
【数２２９】
2019519137.tif 000231
で検証者
【数２３０】
2019519137.tif 000232
は存在する。
【０４３８】
これは、ＧＣのケース２の後に起こり、より複雑なケースである。ＧＣの分析により、この場合、すべてのｉ∈ＨＳＶｒ，４についてｖｉ＝Ｈ（Ｂｌｒ）になるような有効なメッセージｍｌｒ，１が存在する。ＨＳＶｒ，４の検証者は、当該検証者のｂｉに関して合意しないかもしれないことに留意されたい。
【０４３９】
任意のステップｓ∈｛５，．．．，ｍ＋３｝で、検証者ｉ∈ＨＳＶｒ，ｓについて、補題５．５により、プレーヤｉは、時間ｔｓ待った場合、ＨＳＶｒ，４∪．．．∪ＨＳＶｒ，ｓ−１のすべての誠実な検証者によって送られたすべてのメッセージを受信しているだろう。
【０４４０】
ここで、次のイベントＥを検討する。すなわち、バイナリＢＡで初めて、あるプレーヤ
【数２３１】
2019519137.tif 000233
（悪意か誠実かを問わない）が何も伝播せずに停止するようなステップｓ＊≧５が存在する。「停止するような」という言葉を使用するのは、プレーヤｉ＊が悪意の場合、プロトコルに従って停止しないようなふりをし、敵対者が選んだメッセージを伝播するかもしれないという事実を強調するためである。
【０４４１】
また、プロトコルの構築により、次のいずれかになる。
（Ｅ，ａ）ｉ＊は、５≦ｓ’≦ｓ＊、かつ、ｓ’−２≡０  ｍｏｄ  ３で、同じｖおよびｓ’について少なくともｔＨ個の有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖ），σｊｒ，ｓ’−１）を収集または生成することができる、または、
（Ｅ．ｂ）ｉ＊は、６≦ｓ’≦ｓ＊、かつ、ｓ’−２≡１  ｍｏｄ  ３で、同じｓ’について少なくともｔＨ個の有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ’−１）を収集または生成することができる。
【０４４２】
誠実な（ｒ，ｓ’−１）メッセージは、すべての誠実な（ｒ，ｓ’）検証者がステップｓ’で待機を終える前に受信されるため、また敵対者は誠実なユーザより遅れることなくすべてを受信するため、一般性を損なうことなく、ｓ’＝ｓ＊、かつ、プレーヤｉ＊が悪意になる。我々が、Ｅ．ａの値ｖが有効なブロックのハッシュであることを要求しなかったことに留意されたい。これは、分析で明らかになるように、このサブイベントではｖ＝Ｈ（Ｂｌｒ）である。
【０４４３】
以下に、まず、イベントＥの後のケース２を分析し、次いでｓ＊の値が本質的にＬｒに従い分散されることを証明する（このように、パラメータの関係があるとすると、イベントＥは圧倒的確率でステップｍ＋３の前に起こる）。始めに、任意のステップ５≦ｓ＜ｓ＊について、すべての誠実な検証者ｉ∈ＨＳＶｒ，ｓは時間ｔｓ待って、受信した有効な（ｒ，ｓ−１）メッセージの過半数票になるようにｖｉを設定する。プレーヤｉは補題５．５の後のすべての誠実な（ｒ，ｓ−１）メッセージを受信しているため、および、ＨＳＶｒ，４内のすべての誠実な検証者はＧＣのケース２の後でＨ（Ｂｌｒ）に署名しているため、および、各ｓについて｜ＨＳＶｒ，ｓ−１｜＞２｜ＭＳＶｒ，ｓ−１｜であるため、帰納法により、プレーヤｉが
【数２３２】
2019519137.tif 000234
を設定したことになる。
【０４４４】
何も伝播せずに停止しないすべての誠実な検証者
【数２３３】
2019519137.tif 000235
について、同じことがいえる。ここで、ステップｓ＊を検討し、４つのサブケースを区別する。
【０４４５】
ケース２．１．ａ  イベントＥ．ａが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数２３４】
2019519137.tif 000236
が存在する。
【０４４６】
この場合、ｓ＊−２≡０  ｍｏｄ  ３になり、ステップｓ＊は、コインを０に固定するステップである。
【０４４７】
定義上、プレーヤｉ’は形式
【数２３５】
2019519137.tif 000237
の少なくともｔＨ個の有効な（ｒ，ｓ＊−１）メッセージを受信している。
【数２３６】
2019519137.tif 000238
内のすべての検証者はＨ（Ｂｌｒ）に署名しており、
【数２３７】
2019519137.tif 000239
であるため、ｖ＝（Ｂｌｒ）になる。
【０４４８】
ｉ’が０およびｖについて受信した（ｒ，ｓ＊−１）メッセージのうち少なくとも
【数２３８】
2019519137.tif 000240
は、時間
【数２３９】
2019519137.tif 000241
の後に
【数２４０】
2019519137.tif 000242
内の検証者によって送られるため、プレーヤｉ’は、それらの（ｒ，ｓ＊−１）メッセージを受信する時刻までにｍｌｒ，１を受信している。したがって、プレーヤｉ’は何も伝播せずに停止し、Ｂｒ＝Ｂｌｒを設定し、自分自身のＣＥＲＴｒを、自分が受信した０およびｖについての有効な（ｒ，ｓ＊−１）メッセージの集合になるように設定する。
【０４４９】
次に、任意の他の検証者
【数２４１】
2019519137.tif 000243
がＢｒ＝Ｂｌｒで停止し、またはｂｉ＝０を設定して（ＥＳＩＧｉ（０），ＥＳＩＧｉ（Ｈ（Ｂｌｒ）），σｉｒ，ｓ）を伝播していることを証明する。実際、ステップｓ＊は、ある検証者が何も伝播せずに停止するような初回であるため、ｔＨ人の（ｒ，ｓ’−１）検証者が１を署名したような、ｓ’−２≡１  ｍｏｄ  ３となるステップｓ’＜ｓ＊は存在しない。したがって、Ｂｒ＝Ｂεｒで停止する、
【数２４２】
2019519137.tif 000244
内の検証者はいない。
【０４５０】
また、ステップ｛４，５，．．．，ｓ＊−１｝のすべての誠実な検証者はＨ（Ｂｌｒ）に署名しているため、ｔＨ人の（ｒ，ｓ’−１）検証者が何らかのｖ”≠Ｈ（Ｂｌｒ）に署名したような、ｓ’−２≡０  ｍｏｄ  ３となるステップｓ’≦ｓ＊は存在しない。実際、｜ＭＳＶｒ，ｓ’−１｜＜ｔＨである。したがって、Ｂｒ≠ＢεｒおよびＢｒ≠Ｂｌｒで停止する、
【数２４３】
2019519137.tif 000245
内の検証者はいない。すなわち、プレーヤ
【数２４４】
2019519137.tif 000246
は、何も伝播せずに停止した場合、Ｂｒ＝Ｂｌｒを設定していなければならない。プレーヤ
【数２４５】
2019519137.tif 000247
は、時間ｔｓ待ち、時刻
【数２４６】
2019519137.tif 000248
でメッセージを伝播した場合、０およびｖについてそのうちの少なくとも
【数２４７】
2019519137.tif 000249
を含め、
【数２４８】
2019519137.tif 000250
からのすべてのメッセージを受信している。ｉは、１について＞２／３過半数を見ている場合、１について
【数２４９】
2019519137.tif 000251
より多くの有効な（ｒ，ｓ＊−１）メッセージを見ており、そのうちの
【数２５０】
2019519137.tif 000252
は誠実な（ｒ，ｓ＊−１）検証者からのものである。しかし、このことは
【数２５１】
2019519137.tif 000253
を含意し、パラメータの関係から得られる
【数２５２】
2019519137.tif 000254
の事実と矛盾する。したがって、ｉは１については＞２／３過半数を見ずに、ステップｓ＊がコインを０に固定するステップであるため、ｂｉ＝０を設定する。見てきたように、ｖｉ＝Ｈ（Ｂｌｒ）である。したがって、証明したかった通り、ｉは（ＥＳＩＧｉ（０），ＥＳＩＧｉ（Ｈ（Ｂｌｒ）），σｉｒ，ｓ）を伝播する。
【０４５１】
ステップｓ＊＋１について、プレーヤｉ’は時刻
【数２５３】
2019519137.tif 000255
で、またはその前に、自分のＣＥＲＴｒでメッセージの伝播を助けたため、
【数２５４】
2019519137.tif 000256
内のすべての誠実な検証者は、待機を終わらせるとき、またはそれ以前にビット０および値Ｈ（Ｂｌｒ）について少なくともｔＨ個の有効な（ｒ，ｓ＊−１）メッセージを受信している。さらに、
【数２５５】
2019519137.tif 000257
内の検証者は、ステップｓ＊の定義上、ｓ’−２≡１  ｍｏｄ  ３、かつ、６≦ｓ’≦ｓ＊＋１となる、ビット１について任意の他のｔＨ個の有効な（ｒ，ｓ＊−１）メッセージが存在しないため、その（ｒ，ｓ＊−１）メッセージを受信する前には停止しない。具体的には、ステップｓ＊＋１自体はコインを１に固定するステップであるが、１についてメッセージを伝播した
【数２５６】
2019519137.tif 000258
内の誠実な検証者はいないので、
【数２５７】
2019519137.tif 000259
である。このように、
【数２５８】
2019519137.tif 000260
内のすべての誠実な検証者は何も伝播せずに停止し、Ｂｒ＝Ｂｌｒを設定する。前述の通り、当該誠実な検証者は、所望の（ｒ，ｓ＊−１）メッセージを受信する前に、ｍｌｒ，１を受信している（脚注２４参照）。その後のステップのすべての誠実な検証者、および一般にすべての誠実なユーザについても同じことがいえる。具体的には、当該誠実なユーザは全員、時間間隔Ｉｒ＋１以内にＢｒ＝Ｂｌｒを知り、
【数２５９】
2019519137.tif 000261
である。
【０４５２】
脚注２４
ｌが悪意の場合、いく人かの誠実なユーザ／検証者がｍｌｒ，１のために望ましい証明書を受信するときにまだ当該ｍｌｒ，１を受信していないことを望んで、当該悪意のｌは、ｍｌｒ，１を遅れて送るかもしれない。しかし、検証者
【数２６０】
2019519137.tif 000262
は
【数２６１】
2019519137.tif 000263
および
【数２６２】
2019519137.tif 000264
を設定しているため、前述の通り、誠実な検証者ｉ∈ＨＳＶｒ，３の半分より多くがｖｉ＝Ｈ（Ｂｌｒ）を設定していることになる。これはさらに、誠実な検証者ｉ∈ＨＳＶｒ，２の半分より多くがｖｉ＝Ｈ（Ｂｌｒ）を設定しており、その（ｒ，２）検証者が全員ｍｌｒ，１を受信していることを含意する。具体的には、これら全（ｒ，２）検証者はそのステップ２の最後にｍｌｒ，１の伝播を助けている。それ以降、ｍｌｒ，１が残りの誠実なユーザに届くためかかる時間は、たかだかΛ時間である。すべての誠実なユーザが互いに時間λ以内にそのステップ２を停止し、検証者ｉ’がステップｓ＊≧５で停止するとき、最後の誠実な（ｒ，２）検証者が自分のステップ２を停止する時刻から、ｉ’が自分のステップｓ＊を停止する時刻まで、少なくともｔ４−ｔ２−λ−３λ時間が経過している。Λ≦４λのとき、ｍｌｒ，１が、ステップ２を停止する最後の人であった（ｒ，２）検証者によって当初伝播されたものであったとしても、すべての誠実なユーザは，
検証者ｖ’が停止した後のλ時間内にｍｌｒ，１を受信している。現実には、誠実な（ｒ，２）検証者のうちの半分より多くがｍｌｒ，１の伝播を助けているため、それがすべての誠実なユーザに届くための実際の時間はΛよりも短い。
【０４５３】
ケース２．１．ｂ：
イベントＥ．ｂが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数２６３】
2019519137.tif 000265
が存在する。
【０４５４】
この場合、ｓ＊−２≡１  ｍｏｄ  ３になり、ステップｓ＊は、コインを１に固定するステップである。分析はケース２．１．ａと同様であるため、多くの詳細を省略した。
【０４５５】
前述の通り、プレーヤｉ’は、形式
【数２６４】
2019519137.tif 000266
の少なくともｔＨ個の有効な（ｒ，ｓ＊−１）メッセージを受信していなければならない。ここでも、ｓ＊の定義上、少なくともｔＨ人の（ｒ，ｓ’−１）検証者が０および同じｖに署名している場合、ｓ’−２≡０  ｍｏｄ  ３となるステップ５≦ｓ’＜ｓ＊は存在しない。したがって、プレーヤｉ’は何も伝播せずに停止し、Ｂｒ＝Ｂεｒを設定し、自分自身のＣＥＲＴｒを、自分が受信したビット１についての有効な（ｒ，ｓ＊−１）メッセージの集合になるように設定する。
【０４５６】
さらに、任意の他の検証者
【数２６５】
2019519137.tif 000267
がＢｒ＝Ｂεｒで停止し、またはｂｉ＝１を設定して
【数２６６】
2019519137.tif 000268
を伝播している。プレーヤｉ’は、時刻
【数２６７】
2019519137.tif 000269
まで自分のＣＥＲＴｒで（ｒ，ｓ＊−１）メッセージの伝播を助けていたため、ここでも
【数２６８】
2019519137.tif 000270
内のすべての誠実な検証者は何も伝播せずに停止し、Ｂｒ＝Ｂεｒを設定する。同様に、すべての誠実なユーザは時間間隔Ｉｒ＋１以内にＢｒ＝Ｂεｒを知り、
【数２６９】
2019519137.tif 000271
である。
【０４５７】
ケース２．２．ａ：
イベントＥ．ａが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数２７０】
2019519137.tif 000272
は存在しない。
【０４５８】
この場合、プレーヤｉ＊は、敵対者が収集または生成することのできるｔＨ個の所望の（ｒ，ｓ＊−１）メッセージからなる有効な
【数２７１】
2019519137.tif 000273
を持つおそれがあるだろう。しかし、悪意の検証者はこれらのメッセージの伝播を助けられないので、誠実なユーザが時間λでそれを受信すると結論づけることはできない。事実、それらのメッセージのうちの
【数２７２】
2019519137.tif 000274
は、自分のメッセージを全く伝播せずに、それをステップｓ＊で悪意の検証者にしか送信しなかった悪意の（ｒ，ｓ＊−１）検証者からのものであるかもしれない。
【０４５９】
ケース２．１．ａと同様に、ここではｓ＊−２≡０  ｍｏｄ  ３で、ステップｓ＊は、コインを０に固定するステップであり、
【数２７３】
2019519137.tif 000275
内の（ｒ，ｓ＊−１）メッセージはビット０についてであり、ｖ＝Ｈ（Ｂｌｒ）となる。実際、すべての誠実な（ｒ，ｓ＊−１）検証者はｖに署名し、したがって敵対者は異なるｖ’についてｔＨ個の有効な（ｒ，ｓ＊−１）メッセージを生成することはできない。
【０４６０】
また、すべての誠実な（ｒ，ｓ＊）検証者は時間ｔｓ待っており、ここでも
【数２７４】
2019519137.tif 000276
であるため、ビット１について＞２／３過半数を見ない。このように、すべての誠実な検証者
【数２７５】
2019519137.tif 000277
は過半数票によってｂｉ＝０、ｖｉ＝Ｈ（Ｂｌｒ）を設定し、時刻
【数２７６】
2019519137.tif 000278
で
【数２７７】
2019519137.tif 000279
を伝播する。
【０４６１】
ここで、ステップｓ＊＋１（これは、コインを１に固定するステップである）の誠実な検証者を検討する。敵対者が実際に
【数２７８】
2019519137.tif 000280
のメッセージを誠実な検証者のいく人かに送り、当該誠実な検証者らを停止させる場合、ケース２．１．ａと同様に、すべての誠実なユーザは時間間隔Ｉｒ＋１以内にＢｒ＝Ｂｌｒを知り、
【数２７９】
2019519137.tif 000281
である。
【０４６２】
そうでなければ、ステップｓ＊＋１のすべての誠実な検証者は、時間
【数２８０】
2019519137.tif 000282
待った後、
【数２８１】
2019519137.tif 000283
から０およびＨ（Ｂｌｒ）についてのすべての（ｒ，ｓ＊）メッセージを受信しているが、これは、
【数２８２】
2019519137.tif 000284
であるため、＞２／３過半数になる。このように、
【数２８３】
2019519137.tif 000285
内のすべての検証者は、それに応じて０およびＨ（Ｂｌｒ）についての自分のメッセージを伝播する。
【数２８４】
2019519137.tif 000286
内の検証者は、ステップｓ＊＋１がコインを０に固定するステップではないため、Ｂｒ＝Ｂｌｒで停止しないことに留意されたい。
【０４６３】
ここで、ステップｓ＊＋２（これは実際にコインを投げるステップである）の誠実な検証者を検討する。敵対者が
【数２８５】
2019519137.tif 000287
のメッセージを誠実な検証者のいく人かに送り、当該誠実な検証者らを停止させる場合、ここでも、すべての誠実なユーザは時間間隔Ｉｒ＋１以内にＢｒ＝Ｂｌｒを知り、
【数２８６】
2019519137.tif 000288
である。
【０４６４】
そうでなければ、ステップｓ＊＋２のすべての誠実な検証者は、時間
【数２８７】
2019519137.tif 000289
待った後、
【数２８８】
2019519137.tif 000290
から０およびＨ（Ｂｌｒ）についてのすべての（ｒ，ｓ＊＋１）メッセージを受信しているが、これは＞２／３過半数になる。このように、その全員がそれに応じて０およびＨ（Ｂｌｒ）についての自分のメッセージを伝播する。すなわち、この場合は「コインを投げ」ない。ここでも、当該すべての検証者は、ステップｓ＊＋２がコインを０に固定するステップではないため、伝播せずに停止しないことに留意されたい。
【０４６５】
最後に、ステップｓ＊＋３（これは別の、コインを０に固定するステップである）の誠実な検証者について、当該誠実な検証者が本当に時間
【数２８９】
2019519137.tif 000291
待つ場合、その全員が
【数２９０】
2019519137.tif 000292
から０およびＨ（Ｂｌｒ）について少なくともｔＨ個の有効なメッセージを受信しているだろう。したがって、敵対者が
【数２９１】
2019519137.tif 000293
のメッセージを誠実な検証者のいずれかに送るかどうかを問わず、
【数２９２】
2019519137.tif 000294
のすべての検証者は、何も伝播せずに、Ｂｒ＝Ｂｌｒで停止する。敵対者がどのように行為するかによって、そのうちのいく人かが
【数２９３】
2019519137.tif 000295
の（ｒ，ｓ＊−１）メッセージからなる自分自身のＣＥＲＴｒを持ち、他の人は（ｒ，ｓ＊＋２）メッセージからなる自分自身のＣＥＲＴｒを持つかもしれない。いずれの場合も、すべての誠実なユーザは時間間隔Ｉｒ＋１以内にＢｒ＝Ｂｌｒを知り、
【数２９４】
2019519137.tif 000296
である。
【０４６６】
ケース２．２．ｂ：
イベントＥ．ｂが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数２９５】
2019519137.tif 000297
は存在しない。
【０４６７】
この場合の分析はケース２．１．ｂおよびケース２．２．ａと同様なため、多くの詳細を省略した。具体的には、
【数２９６】
2019519137.tif 000298
は、敵対者が収集または生成することのできる、ビット１についてのｔＨ個の所望の（ｒ，ｓ＊−１）メッセージからなり、ｓ＊−２≡１  ｍｏｄ  ３で、ステップｓ＊はコインを１に固定するステップであり、誠実な（ｒ，ｓ＊）検証者は０について＞２／３過半数を見ることができなかったであろう。
【０４６８】
したがって、すべての検証者
【数２９７】
2019519137.tif 000299
はｂｉ＝１を設定して、時刻
【数２９８】
2019519137.tif 000300
で
【数２９９】
2019519137.tif 000301
を伝播する。ケース２．２．ａと同様に、たかだかさらに３ステップで（すなわち、プロトコルがステップｓ＊＋３に到達し、これは別の、コインを１に固定するステップである）、すべての誠実なユーザは時間間隔Ｉｒ＋１以内にＢｒ＝Ｂεｒを知る。また、Ｔｒ＋１は、初めて誠実な検証者が伝播せずに停止することのできるときによって、
【数３００】
2019519137.tif 000302
、または
【数３０１】
2019519137.tif 000303
、または
【数３０２】
2019519137.tif 000304
のいずれかにすることができる。
【０４６９】
４つのサブケースを組み合わせると、すべての誠実なユーザは時間間隔Ｉｒ＋１以内にＢｒを知り、
ケース２．１．ａおよび２．１．ｂでは
【数３０３】
2019519137.tif 000305
、ならびに
ケース２．２．ａおよび２．２．ｂでは
【数３０４】
2019519137.tif 000306
である。
【０４７０】
ｓ＊に、ひいてはケース２のＴｒ＋１に、上限を設けることが残っており、実際にコインを投げるステップを、プロトコルで実際に何回実行するか、すなわち、いく人かの誠実な検証者が実際にコインを投げた回数、を検討することによってこれを行う。
【０４７１】
具体的には、実際にコインを投げるステップｓ’を任意に決め（すなわち、７≦ｓ’≦ｍ＋２、かつ、ｓ’−２≡２  ｍｏｄ  ３）、
【数３０５】
2019519137.tif 000307
とする。ここで、ｓ’＜ｓ＊と仮定しよう。そうでなければ、前述の考察に従いステップｓ’で誠実な検証者が実際にコインを投げないからである。
【０４７２】
ＳＶｒ，ｓ’−１の定義上、ｌ’のクレデンシャルのハッシュ値も、ＰＫｒ−ｋの全ユーザの中で最小である。ハッシュ関数はランダムオラクルであるため、理想としては、プレーヤｌ’は少なくともｈの確率で誠実である。後で示すように、敵対者がランダムオラクルの出力を予測し、確率を有利にしようと最善を尽くしても、プレーヤｌ’はなお、少なくともｐｈ＝ｈ２（１＋ｈ−ｈ２）の確率で誠実である。以下に、それが実際に起こる場合、すなわちｌ’∈ＨＳＶｒ，ｓ’−１を検討する。
【０４７３】
すべての誠実な検証者ｉ∈ＨＳＶｒ，ｓ’は時刻αｉｒ，ｓ’＋ｔｓ’までにＨＳＶｒ，ｓ’−１からすべてのメッセージを受信していることに留意されたい。プレーヤｉがコインを投げる必要がある場合（すなわち、プレーヤｉが、同じビットｂ∈｛０，１｝について＞２／３過半数を見ていない）、プレーヤｉはｂｉ＝ｌｓｂ（Ｈ（σｌ’ｒ，ｓ’−１））を設定する。ビットｂ∈｛０，１｝について＞２／３過半数を見た別の誠実な検証者ｉ’∈ＨＳＶｒ，ｓ’が存在する場合、補題５．５の性質（ｄ）により、ＨＳＶｒ，ｓ’内の誠実な検証者はビットｂ’≠ｂについて＞２／３過半数を見なかったであろう。確率１／２で、ｌｓｂ（Ｈ（σｌ’ｒ，ｓ’−１））＝ｂであるため、ＨＳＶｒ，ｓ’内のすべての誠実な検証者は、確率１／２でｂに関して合意に達する。当然、このような検証者ｉ’が存在しない場合、ＨＳＶｒ，ｓ’内のすべての誠実な検証者は、確率１でビットｌｓｂ（Ｈ（σｌ’ｒ，ｓ’−１））に合意する。
【０４７４】
ｌ’∈ＨＳＶｒ，ｓ’−１の確率を組み合わせると、ＨＳＶｒ，ｓ’内の誠実な検証者は、少なくとも
【数３０６】
2019519137.tif 000308
の確率でビットｂ∈｛０，１｝に関して合意に達することになる。さらに、前述の通りの過半数票に関する帰納法により、ＨＳＶｒ，ｓ’内のすべての誠実な検証者は、自分のｖｉの集合をＨ（Ｂｌｒ）に設定する。したがって、一旦ステップｓ’でｂに関して合意に達したら、Ｔｒ＋１は、ケース２．１．ａおよび２．１．ｂの分析に従い、ｂ＝０またはｂ＝１であるかどうかによって、
【数３０７】
2019519137.tif 000309
または
【数３０８】
2019519137.tif 000310
のいずれかである。
【０４７５】
具体的には、実際にコインを投げるステップはこれ以上実行されない。すなわち、このようなステップの検証者は、自分が検証者であることをなおもチェックし、したがって待つが、何も伝播せずに全員が停止する。したがって、ステップｓ＊の前に、実際にコインを投げるステップが実行される回数はランダム変数Ｌｒに従って分散される。Ｌｒに従って、ステップｓ’を、最後の実際にコインを投げるステップにすると、プロトコルの構築により、次の式になる。
【数３０９】
2019519137.tif 000311
【０４７６】
敵対者ができるだけＴｒ＋１を遅らせたい場合、敵対者はいつステップｓ＊を起こすべきだろうか？  敵対者が事前にＬｒの実現を知ると仮定することもできる。ｓ＊＞ｓ’の場合、誠実な検証者は既にステップｓ’で合意に達しているため、無駄である。確かに、この場合、ここでもｂ＝０かｂ＝１かによって、ｓ＊はｓ’＋１またはｓ’＋２になるであろう。しかし、これは実際にはケース２．１．ａおよび２．１．ｂであり、得られるＴｒ＋１はその場合と全く同じである。より正確には、
【数３１０】
2019519137.tif 000312
である。
【０４７７】
ｓ＊＜ｓ’−３の場合、すなわち、ｓ＊が、最後から２番目の実際にコインを投げるステップの前である場合、ケース２．２．ａおよび２．２．ｂの分析により、
【数３１１】
2019519137.tif 000313
である。
【０４７８】
すなわち、敵対者は、実際にＢｒに関する合意をより早く起こそうとしている。
ｓ＊＝ｓ’−２またはｓ’−１の場合、すなわち、ステップｓ’の直前の、コインを０に固定するステップまたはコインを１に固定するステップの場合、４つのサブケースの分析により、ステップｓ’の誠実な検証者は、伝播せずに停止しているため、または同じビットｂについて＞２／３過半数を見ているため、それ以上コインを投げることはない。そのため、次の式になる。
【数３１２】
2019519137.tif 000314
【０４７９】
要するに、ｓ＊が何であろうと、証明したかった通り、次の式になる。
【数３１３】
2019519137.tif 000315
最悪のケースは、ｓ＊＝ｓ’−１で、ケース２．２．ｂが起こる場合である。バイナリＢＡプロトコルのケース１および２を組み合わせると、補題５．３が成り立つ。
【０４８０】
５．９  シードＱｒのセキュリティおよび誠実なリーダの確率
補題５．４の証明が残っている。ラウンドｒの検証者はＰＫｒ−ｋから選択され、数量Ｑｒ−１に従って選ばれることを思い出していただきたい。ルックバックパラメータｋを導入する理由は、ラウンドｒ−ｋに戻って、敵対者が新たな悪意のユーザをＰＫｒ−ｋに追加することができる場合に、無視できる確率を除いて、数量Ｑｒ−１を敵対者が予測することができないことを確かにすることである。ハッシュ関数はランダムオラクルであり、Ｑｒ−１は、ラウンドｒの検証者を選択するときのその入力の１つであることに留意されたい。したがって、悪意のユーザがＰＫｒ−ｋにいかに追加されようとも、敵対者の観点から、その各人は、必要な確率ｐ（またはステップ１についてはｐ１）で、ラウンドｒのステップでも検証者に選択される。より正確には、次の補題となる。
【０４８１】
補題５．６．
ｋ＝Ｏ（ｌｏｇ１／２Ｆ）のとき、各ラウンドｒについて、敵対者は圧倒的確率で、ラウンドｒ−ｋに戻ってＱｒ−１をランダムオラクルに問い合わせなかった。
【０４８２】
証明．帰納法によって進める。各ラウンドγ−ｋについて、敵対者がラウンドγ−ｋに戻ってＱγ−１ランダムオラクルに問い合わせなかったと仮定する。（脚注２５参照）ラウンドｒ−ｋで敵対者が仕掛ける次の心理戦を検討し、Ｑｒ−１を予測してみる。
【０４８３】
脚注２５
ｋは小さな整数であり、一般性を損なうことなく、プロトコルの最初のｋラウンドは安全な環境で実行され、そのラウンドについて帰納的仮説が成り立つと仮定することができる。
【０４８４】
各ラウンドγ＝ｒ−ｋ，．．．，ｒ−１のステップ１で、特定のＱγ−１がランダムオラクルに問い合わされていないとすると、プレーヤｉ∈ＰＫγ−ｋをハッシュ値Ｈ（ＳＩＧｉ（γ，１，Ｑγ−１））に従って昇順に並べることによって、ＰＫγ−ｋに対しランダム順列を得る。定義上、リーダーｌγは順列の最初のユーザであり、確率ｈで誠実である。また、ＰＫγ−ｋが十分に大きい場合、任意の整数ｘ≧１について、順列の最初のｘユーザが全員悪意であるが（ｘ＋１）番目は誠実である確率は（１−ｈ）ｘｈである。
【０４８５】
ｌγが誠実である場合、
【数３１４】
2019519137.tif 000316
である。敵対者はｌγの署名を偽造することはできないので、Ｑγは敵対者の観点からランダムに均一に分散され、指数関数的に小さい確率を除き（脚注２６参照）、ラウンドｒ−ｋでＨに問い合わせがなされなかった。各Ｑγ＋１，Ｑγ＋２，．．．，Ｑｒ−１はそれぞれＨの出力で、Ｑγ，Ｑγ＋１，．．．，Ｑｒ−２は入力の１つになるので、これらはすべて敵対者にとってはランダムに見え、敵対者はラウンドｒ−ｋでＨにＱｒ−１を問い合わせることはできなかったであろう。
【０４８６】
脚注２６
すなわち、Ｈの出力の長さの指数関数。この確率はＦよりもはるかに小さいことに留意されたい。
【０４８７】
したがって、敵対者がラウンドｒ−ｋで良い確率でＱｒ−１を予測できる唯一のケースは、リーダーｌｒ−ｋ，．．．，ｌｒ−１が全員悪意であるときである。もう一度、ラウンドγ∈｛ｒ−ｋ，．．．，ｒ−１｝と、対応するハッシュ値によって導かれるＰＫγ−ｋに対するランダム順列とを検討する。あるｘ≧２について、順列の最初のｘ−１ユーザが全員悪意で、ｘ番目が誠実である場合、敵対者は、Ｑγについてｘ個の可能な選択肢を有する。：すなわち、プレーヤｉ（ｉは、最初のｘ−１悪意のユーザのうちの１人である）をラウンドγの実際のリーダーにすることによる、形式Ｈ（ＳＩＧｉ（Ｑγ−１，γ））、または、Ｂγ＝Ｂεγに強制することによる、Ｈ（Ｑγ−１，γ）、のいずれかである。そうでなければ、ラウンドγのリーダーは順列で最初の誠実なユーザになり、Ｑｒ−１は敵対者に予測できなくなってくる。
【０４８８】
敵対者は、Ｑγの上記ｘの選択肢のうちのどちらを追求すべきだろうか？  敵対者がこの質問に答えるのを助けるために、心理戦で、現実にそうであるよりも実際に、次のように敵対者をよりパワフルにする。まず、現実では、敵対者は誠実なユーザの署名のハッシュを計算することはできず、したがって、各Ｑγについて、Ｑγによって導かれるラウンドγ＋１のランダム順列の始めに悪意のユーザの数ｘ（Ｑγ）を決定することはできない。心理戦では、敵対者に数ｘ（Ｑγ）を自由に与える。次に、現実では、順列の最初のｘユーザを全員悪意にすることは、その署名のハッシュ値もｐ１未満にならなければならないので、全員がリーダーになることができることを必ずしも意味しない。心理戦におけるこの制約を無視し、敵対者をさらに有利にした。
【０４８９】
心理戦で、敵対者にとって最適な、
【数３１５】
2019519137.tif 000317
で表される選択肢は、ラウンドγ＋１のランダム順列の始めに、最長の悪意のユーザのシーケンスを生成するものであることは容易に分かる。実際、具体的なＱγがあれば、プロトコルはそれ以上Ｑγ−１に依存せず、敵対者はラウンドγ＋１の新たな順列にのみ集中することができ、これは、始まりの悪意のユーザの数について同じ分布を有する。したがって、各ラウンドγでは、前述の
【数３１６】
2019519137.tif 000318
は当該敵対者にＱγ＋１に対する最大数の選択肢を与え、そのため、後続のリーダーが全員悪意である確率を最大化する。
【０４９０】
したがって、心理戦では、敵対者はラウンドｒ−ｋからラウンドｒ−１までマルコフ連鎖を得られることになり、状態空間は｛０｝∪｛ｘ：ｘ≧２｝である。状態０は、現ラウンドγのランダム順列の最初のユーザが誠実であることを表し、したがって、敵対者はＱｒ−１を予測するゲームに負ける。そして、各状態ｘ≧２は、順列の最初のｘ−１ユーザが悪意であり、ｘ番目が誠実であることを表すため、敵対者はＱγについてｘ個の選択肢を有する。遷移確率Ｐ（ｘ，ｙ）は次の通りである。
【０４９１】
・Ｐ（０，０）＝１で、任意のｙ≧２についてＰ（０，ｙ）＝０。すなわち、順列の最初のユーザが誠実になってしまうと、敵対者はゲームに負ける。
【０４９２】
・任意のｘ≧２についてＰ（ｘ，０）＝ｈｘ。すなわち、確率ｈｘで、すべてのｘランダム順列はその最初のユーザを誠実にするので、敵対者は次のラウンドでゲームに負ける。
【０４９３】
・任意のｘ≧２およびｙ≧２について、Ｐ（ｘ，ｙ）は、Ｑγのｘ選択肢によって導かれるｘランダム順列の中で、そのうちのいくつかの始まりで悪意のユーザの最長シーケンスがｙ−１である、したがって敵対者が次のラウンドでＱγ＋１についてｙ選択肢を有する確率である。すなわち、
【数３１７】
2019519137.tif 000319
になる。
【０４９４】
状態０は、遷移行列Ｐにおける唯一の吸収状態であり、他のすべての状態ｘは、０になる正の確率を有することに留意されたい。我々は、圧倒的確率でマルコフ連鎖が０に収束するために必要なラウンド数ｋに上限を設けたいと思っている。すなわち、チェーンがどの状態で始まっても、圧倒的確率で、敵対者はゲームに負け、ラウンドｒ−ｋでＱｒ−１の予測に失敗する。
【０４９５】
２ラウンド後の遷移行列
【数３１８】
2019519137.tif 000320
を考えてみる。Ｐ（２）（０，０）＝１で、任意のｘ≧２についてＰ（２）（０，ｘ）＝０であることは簡単に分かる。任意のｘ≧２およびｙ≧２について、Ｐ（０，ｙ）＝０であるため、次の式になる。
【数３１９】
2019519137.tif 000321
【０４９６】
【数３２０】
2019519137.tif 000322
とすると、次の式になる。
【数３２１】
2019519137.tif 000323
また、
【数３２２】
2019519137.tif 000324
である。
【０４９７】
以下に、ｈが１になるとき、すなわち
【数３２３】
2019519137.tif 000325
が０になるときの
【数３２４】
2019519137.tif 000326
の限界を計算する。Ｐ（ｘ，ｙ）において
【数３２５】
2019519137.tif 000327
の最も高い次数は係数ｘで
【数３２６】
2019519137.tif 000328
であることに留意されたい。したがって、
【数３２７】
2019519137.tif 000329
になる。
【０４９８】
ｈが１に十分に近いとき（脚注２７参照）、任意のｘ≧２およびｙ≧２については次の式になる。
【数３２８】
2019519137.tif 000330
帰納法により、任意のｋ＞２について、
【数３２９】
2019519137.tif 000331
は、次のようになるものである。
・Ｐ（ｋ）（０，０）＝１で、任意のｘ≧２についてＰ（ｋ）（０，ｘ）＝１、かつ、
・任意のｘ≧２およびｙ≧２について、
【数３３０】
2019519137.tif 000332
【０４９９】
脚注２７
例えば、パラメータの特定の選択肢によって提案されるように、ｈ＝８０％。
【０５００】
Ｐ（ｘ，ｙ）≦１のとき、１−ｌｏｇ２Ｆラウンドの後、任意の状態ｘ≧２で始めて、任意の状態ｙ≧２になる遷移確率は無視できる。このような状態ｙは多数あるが、次の式になることは簡単に分かる。
【数３３１】
2019519137.tif 000333
【０５０１】
そのため、遷移行列Ｐの各行ｘは、ｙが十分に大きいとき、等比数列として、
【数３３２】
2019519137.tif 000334
の比で減少し、Ｐ（ｋ）についても同じことがいえる。したがって、ｋは十分に大きいが、任意のｘ≧２についてまだおよそｌｏｇ１／２Ｆ，Σｙ≧２Ｐ（ｋ）（ｘ，ｙ）＜Ｆである。すなわち、圧倒的確率で、敵対者はゲームに負け、ラウンドｒ−ｋでＱｒ−１の予測に失敗する。ｈ∈（２／３，１）について、より複雑な分析から、ｋ＝Ｏ（ｌｏｇＣＦ）をとると十分であるような、１／２よりやや大きい定数Ｃが存在することが証明される。したがって、補題５．６は成り立つ。
【０５０２】
補題５．４．（書き換え）
ｒの前の各ラウンドについて性質１〜３であれば、Ｌｒについてはｐｈ＝ｈ２（１＋ｈ−ｈ２）で、リーダーｌｒは少なくともｐｈの確率で誠実である。
【０５０３】
証明．
補題５．６に従い、敵対者は、無視できる確率を除き、ラウンドｒ−ｋに戻ってＱｒ−１を予測することはできない。これは、誠実なリーダーの確率が各ラウンドでｈであるという意味ではないことに留意されたい。実際、Ｑｒ−１であれば、ＰＫｒ−ｋのランダム順列の始めに存在する悪意のユーザの数によって、敵対者はＱに対して２つ以上の選択肢を有することがあり、そのため、ラウンドｒ＋１における悪意のリーダーの確率を高めることができる。ここでも、補題５．６のように、分析を簡潔にするために、ある非現実的なアドバンテージを敵対者に与えている。
【０５０４】
しかし、ラウンドｒ−ｋに戻って敵対者がＨに問い合わせなかった各Ｑｒ−１について、任意のｘ≧１について、確率（１−ｈ）ｘ−１ｈで、得られるＰＫｒ−ｋのランダム順列において、最初の誠実なユーザは位置ｘで発生する。ｘ＝１のとき、ラウンドｒ＋１における誠実なユーザの確率は実際にｈであるが、ｘ＝２のとき、敵対者はＱｒに対して２つの選択肢を有し、得られる確率はｈ２である。これら２つのケースを検討して初めて、ラウンドｒ＋１における誠実なリーダーの確率が、所望の通り少なくともｈ・ｈ＋（１−ｈ）ｈ・ｈ２＝ｈ２（１＋ｈ−ｈ２）になる。
【０５０５】
上記確率は、ラウンドｒ−ｋからラウンドｒまでのプロトコルのランダム性しか考慮していないことに留意されたい。ラウンド０からラウンドｒまでのすべてのランダム性を考慮する場合、Ｑｒ−１は敵対者にとってさらに予測できないものになり、ラウンドｒ＋１における誠実なリーダーの確率は、少なくともｈ２（１＋ｈ−ｈ２）である。ｒ＋１をｒに置換し、すべてを１ラウンド戻すと、リーダーｌｒは、所望の通り、少なくともｈ２（１＋ｈ−ｈ２）の確率で誠実である。
【０５０６】
同様に、各実際にコインを投げるステップｓで、そのステップの「リーダー」、すなわち、そのクレデンシャルが最小のハッシュ値を有するＳＶｒ，ｓ内の検証者は、少なくともｈ２（１＋ｈ−ｈ２）の確率で誠実である。したがって、Ｌｒについてｐｈ＝ｈ２（１＋ｈ−ｈ２）であり、補題５．４は成り立つ。
【０５０７】
６  アルゴランド’２
このセクションでは、次の仮定の下に機能するアルゴランド’のバージョンを構築する。
「ユーザの誠実な過半数の仮定」：各ＰＫｒのユーザの２／３超が誠実である。
セクション８では、上記仮定を、所望の「マネーの誠実な過半数」に置き換える方法を示す。
【０５０８】
６．１  アルゴランド’２の追加の記号およびパラメータ
記号
・
【数３３３】
2019519137.tif 000335
：圧倒的確率で１ラウンドで実際に取られるステップ数に対する、現実的な上限。（後で述べるように、パラメータμは、各ラウンドのためにユーザが事前に準備する一時的な鍵の数を制御する。）
【０５０９】
・Ｌｒ：各試行が
【数３３４】
2019519137.tif 000336
の確率で１になり、１を見るために必要なベルヌーイ試行の数を表すランダム変数。Ｌｒは、ブロックＢｒを生成するために必要な時間に上限を設けるために使用される。
【０５１０】
・ｔＨ：圧倒的確率（ｎおよびｐがあるとすると）で、ＳＶｒ，ｓ内に＞ｔＨの誠実な検証者がいるような、ラウンドｒのステップｓ＞１における誠実な検証者の数の下限。
【０５１１】
パラメータ
・様々なパラメータ間の関係。
−ラウンドｒの各ステップｓ＞１について、ｎは、圧倒的確率で、
【数３３５】
2019519137.tif 000337
かつ
【数３３６】
2019519137.tif 000338
になるように選ばれる。
上記２つの不等式は合わせて、｜ＨＳＶｒ，ｓ｜＞２｜ＭＳＶｒ，ｓ｜を含意する。すなわち、選択された検証者の中に２／３の誠実な過半数がいる。
ｈの値が１に近づくほど、ｎは小さくなる必要がある。具体的には、チェルノフ限界（の変型）を使用して、所望の条件が圧倒的確率で成り立つことを確実にする。
【０５１２】
・重要なパラメータの具体的な選択肢。
−  Ｆ＝１０−１８。
−  ｎ≒４０００、ｔＨ≒０．６９ｎ、ｋ＝７０。
【０５１３】
６．２  アルゴランド’２での一時的な鍵の実装
検証者ｉ∈ＳＶｒ，ｓが、使用後直ちに破壊する一時的な秘密鍵ｓｋｉｒ，ｓを使用して、一時的な公開鍵ｐｋｉｒ，ｓに関連し、ラウンドｒのステップｓの自分のメッセージｍｉｒ，ｓに電子署名をすることを思い出そう。ラウンドが取り得る可能なステップの数に所与の整数μによって上限が設けられる場合、実際に一時的な鍵をどのように取り扱うかは既に見てきた。例えば、アルゴランド’１で説明したように（μ＝ｍ＋３の場合）、ラウンドｒ’からラウンドｒ’＋１０６まで、自分の可能な一時的な鍵のすべてを取り扱うために、ｉはペア（ＰＭＫ，ＳＭＫ）を生成する。ここで、ＰＭＫはアイデンティティベースの署名スキームの公開マスター鍵であり、ＳＭＫはそれに対応する秘密マスター鍵である。ユーザｉは、ＰＭＫを公表し、各可能な一時的な公開鍵の秘密鍵を生成するためにＳＭＫを使用する（さらに、そうした後にＳＭＫを破壊する）。関連するラウンドのｉの一時的な公開鍵の集合はＳ＝｛ｉ｝×｛ｒ’，．．．，ｒ’＋１０６｝×｛１，．．．，μ｝である。（述べたように、ラウンドｒ’＋１０６が近づくと、ｉは自分のペア（ＰＭＫ，ＳＭＫ）を「リフレッシュ」する。）
【０５１４】
実際には、μが十分に大きい場合、アルゴランド’２のラウンドはμより多いステップを取らない。しかし、原則的に、あるラウンドｒについて、実際に取られるステップ数がμを超える可能性がわずかにある。これが起こると、ｉはラウンドｒについてμ個の秘密鍵しか事前に準備していないので、ｉは任意のステップｓ＞μについて自分のメッセージｍｉｒ，ｓに署名できなくなるであろう。また、前述したように、一時的な鍵の新たな隠し場所を準備して公表することはできないであろう。実際、そうするためには、ｉは新たなブロックに新たな公開マスターキーＰＭＫ’を挿入する必要があるだろう。しかし、万が一ラウンドｒがさらに多くのステップを取ったとしても、新たなブロックは生成されないだろう。
【０５１５】
ただし、解決策は存在する。例えば、ｉは、次の通り、ラウンドｒの最後の一時的な鍵ｐｋｉｒ，μを使用することができる。ラウンドｒについて、例えば、（１）別のマスター鍵ペア
【数３３７】
2019519137.tif 000339
を生成する、（２）このペアを使用して、ラウンドｒのステップμ＋１，．．．，μ＋１０６に対応する別の、例えば、１０６個の一時的な鍵
【数３３８】
2019519137.tif 000340
を生成する、（３）ｓｋｉｒ，μを使用して、ｐｋｉｒ，μに関連して、
【数３３９】
2019519137.tif 000341
（および、ｉ∈ＳＶｒ，μの場合、任意の（ｒ，μ）メッセージ）に電子署名する、および（４）
【数３４０】
2019519137.tif 000342
およびｓｋｉｒ，μを消去することによって、鍵ペアの別の隠し場所を生成する。ｓ∈｛１，．．．，１０６｝のとき、ｉがステップμ＋ｓで検証者になる場合、ｉは自分の新たな鍵
【数３４１】
2019519137.tif 000343
に関連して、自分の（ｒ，μ＋ｓ）メッセージｍｉｒ，μ＋ｓに電子署名する。当然、ｉのこの署名を検証するために、この公開鍵がｉの新たな公開マスター鍵
【数３４２】
2019519137.tif 000344
に対応することを他者が確信する必要がある。したがって、この署名に加えて、ｉはｐｋｉｒ，μに関連して、
【数３４３】
2019519137.tif 000345
の電子署名を伝送する。
【０５１６】
当然、ラウンドｒがさらに多くのステップの間続く場合、このアプローチは、必要な回数繰り返すことができる！  最後の一時的な秘密鍵を使用して新たなマスター公開鍵を認証し、したがって、ラウンドｒの一時的な鍵の別の隠し場所を認証する。以降も同様。
【０５１７】
６．３  実際のプロトコルアルゴランド’２
ラウンドｒの各ステップｓで、検証者ｉ∈ＳＶｒ，ｓは、ケースｓ＝１のＳＩＧｉ（Ｑｒ−１）だけでなく、自分のクレデンシャル
【数３４４】
2019519137.tif 000346
を生成するためにも長期公開秘密鍵ペアを使用することをもう一度思い出そう。検証者ｉは自分の一時的な鍵ペア（ｐｋｉｒ，ｓ，ｓｋｉｒ，ｓ）を使用して、要求され得る任意の他のメッセージｍに署名する。簡潔にするために、このステップでのｉによるｍの正規の一時的な署名を表すために、
【数３４５】
2019519137.tif 000347
ではなく、ｅｓｉｇｉ（ｍ）を書き、
【数３４６】
2019519137.tif 000348
の代わりにＥＳＩＧｉ（ｍ）を書く。
【０５１８】
ステップ１：  ブロックの提案
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、ＣＥＲＴｒ−１を持つや否やラウンドｒの自分のステップ１を始め、当該ＣＥＲＴｒ−１は、ｉがＨ（Ｂｒ−１）およびＱｒ−１を曖昧さなく計算できるようにする。
【０５１９】
・ユーザｉはＱｒ−１を使用して、ｉ∈ＳＶｒ，１かどうかをチェックする。
【数３４７】
2019519137.tif 000349
の場合、ステップ１についてｉは何もしない。
【０５２０】
・ｉ∈ＳＶｒ，１の場合、すなわち、ｉが潜在的リーダーである場合、ｉは次のことを行う。
（ａ）ｉが自分自身でＢ０，．．．，Ｂｒ−１を見てきた場合（どのＢｊ＝ＢεｊもＣＥＲＴｊでのそのハッシュ値から容易に導くことができ、そのため「見てきた」と想定される）、それまでに当該ｉに伝播されてきたラウンドｒの支払を収集して、そこから最大支払集合ＰＡＹｉｒを計算する。
（ｂ）ｉがまだすべてのＢ０，．．．，Ｂｒ−１を見ていない場合、ｉは
【数３４８】
2019519137.tif 000350
を設定する。
（ｃ）次に、ｉは自分の「候補ブロック」Ｂｉｒ＝（ｒ，ＰＡＹｉｒ，ＳＩＧｉ（Ｑｒ−１），Ｈ（Ｂｒ−１））を計算する。
（ｃ）最後に、ｉはメッセージｍｉｒ，１＝（Ｂｉｒ，ｅｓｉｇｉ，（Ｈ（Ｂｉｒ）），σｉｒ，１）を計算して、自分の一時的な秘密鍵ｓｋｉｒ，１を破壊してから、２つのメッセージｍｉｒ，１および（ＳＩＧｉ，（Ｑｒ−１），σｉｒ，１）を別々に、しかし同時に伝播する（脚注２８参照）。
【０５２１】
脚注２８
ｉがリーダーのとき、ＳＩＧｉ（Ｑｒ−１）は、他者がＱｒ＝Ｈ（ＳＩＧｉ（Ｑｒ−１），ｒ）を計算するのを許容する。
【０５２２】
選択的伝播
ステップ１およびラウンド全体の大域的実行を短縮するために、（ｒ，１）メッセージを選択的に伝播することが重要である。すなわち、システム内の全ユーザｊについて、以下のように伝播する。
【０５２３】
・いつか受信して検証に成功する最初の（ｒ，１）メッセージについて（脚注２９参照）、それがブロックを含むか、または単にＱｒ−１のクレデンシャルおよび署名であるかを問わず、プレーヤｊは通常通りそれを伝播する。
【０５２４】
脚注２９
すなわち、すべての署名が正当で、それが形式ｍｉｒ，１である場合、ブロックとそのハッシュの両方が有効である。ただし、ｊは、含まれる支払集合がｉにとって最大かどうかをチェックしない。
【０５２５】
・プレーヤｊが受信して検証に成功する他のすべての（ｒ，１）メッセージについて、当該メッセージが含むクレデンシャルのハッシュ値が、当該プレーヤｊがそれまでに受信し検証が成功したすべての（ｒ，１）メッセージに含まれるクレデンシャルのハッシュ値の中で最小である場合に限り、それを伝播する。
【０５２６】
・しかし、ｊが同じプレーヤｉから形式ｍｉｒ，１の２つの異なるメッセージを受信する場合（脚注３０参照）、ｉのクレデンシャルのハッシュ値がどのようなものであろうと、２つ目のものを破棄する。
【０５２７】
脚注３０
これは、ｉが悪意であることを意味する。
【０５２８】
選択的伝播では、各潜在的リーダーｉが自分のクレデンシャルσｉｒ，１をｍｉｒ，１とは別に伝播することが有用であることに留意されたい（脚注３１参照）。これらの小さなメッセージはブロックよりも高速で移動し、含まれるクレデンシャルが小さいハッシュ値を有する場合に、ｍｉｒ，１の適時の伝播を確実にするのに対し、ハッシュ値が大きいものはすぐに消失させる。
【０５２９】
脚注３１
これを提案したジョルジオ・ブラコスに感謝する。
【０５３０】
ステップ２：  段階的コンセンサスプロトコルＧＣの最初のステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、ＣＥＲＴｒ−１を持つや否やラウンドｒの自分のステップ２を始める。
【０５３１】
・ユーザｉは、最大時間量
【数３４９】
2019519137.tif 000351
待つ。待っている間、ｉは次のように行為する。
【０５３２】
１．  時間２λ待った後、それまでに受信して検証に成功した（ｒ，１）メッセージの一部であるすべてのクレデンシャルσｊｒ，１について、Ｈ（σｌｒ，１）≦Ｈ（σｊｒ，１）になるようなユーザｌを見つける（脚注３２参照）。
【０５３３】
脚注３２
本質的に、ユーザｉは、ラウンドｒのリーダーがユーザｌであることを秘かに決定する。
【０５３４】
２．  ＣＥＲＴｒ−１に含まれるハッシュ値Ｈ（Ｂｒ−１）にマッチするブロックＢｒ−１を受信した場合（脚注３３参照）、および、ｌから有効なメッセージｍｌｒ，１＝（Ｂｌｒ，ｅｓｉｇｌ（Ｂｌｒ）），σｌｒ，１）を受信した場合（脚注３４参照）、ｉは待機を停止し、
【数３５０】
2019519137.tif 000352
を設定する。
【０５３５】
脚注３３
当然、Ｂｒ−１＝Ｂεｒ−１であることをＣＥＲＴｒ−１が示す場合、ｉは、ＣＥＲＴｒ−１を持った瞬間に既にＢｒ−１を「受信」済みである。
【０５３６】
脚注３４
ここでも、プレーヤｌの署名およびハッシュは、すべて検証が成功し、Ｂｌｒ内のＰＡＹｌｒは、ラウンドｒについて有効な支払集合である。ただし、ｉは、ＰＡＹｌｒがｌにとって最大かどうかをチェックしない。Ｂｌｒが空の支払集合を含む場合、Ｂｌｒが有効かどうかを検証する前に、ｉがＢｒ−１を見る必要は実際にはない。
【０５３７】
３．  そうでなければ、時間ｔ２が経過したとき、ｉは
【数３５１】
2019519137.tif 000353
を設定する。
【０５３８】
４．  ｖ’ｉの値が設定されている場合、ｉはＣＥＲＴｒ−１からＱｒ−１を計算し、ｉ∈ＳＶｒ，２かどうかをチェックする。
【０５３９】
５．ｉ∈ＳＶｒ，２である場合、ｉはメッセージ
【数３５２】
2019519137.tif 000354
を計算し（脚注３５参照）、自分の一時的な秘密鍵ｓｋｉｒ，２を破壊してから、ｍｉｒ，２を伝播する。そうでなければ、ｉは何も伝播せずに停止する。
【０５４０】
脚注３５
メッセージｍｉｒ，２は、プレーヤｉがｖ’ｉの最初の成分を次のブロックのハッシュであるとみなす、または次のブロックを空だとみなすことを示す。
【０５４１】
ステップ３：  ＧＣの第２ステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、ＣＥＲＴｒ−１を持つや否やラウンドｒの自分のステップ３を始める。
【０５４２】
・ユーザｉは、最大時間量
【数３５３】
2019519137.tif 000355
待つ。待っている間、ｉは次のように行為する。
【０５４３】
１．  一切の矛盾なく、ｉが形式（ＥＳＩＧｊ（ｖ），σｊｒ，２）の少なくともｔＨ個の有効なメッセージｍｊｒ，２を受信したような値ｖが存在する場合（脚注３６参照）、待機を停止し、ｖ’＝ｖを設定する。
【０５４４】
脚注３６
すなわち、ｉは、ＥＳＩＧｊ（ｖ）および異なる
【数３５４】
2019519137.tif 000356
をそれぞれ含む２つの有効なメッセージをプレーヤｊから受信していない。ここで、またこれ以降、後で定義する終了条件を除き、誠実なプレーヤが所与の形式のメッセージを望む場合は必ず、互いに矛盾するメッセージは絶対にカウントされず、または有効とは見なされない。
【０５４５】
２．  そうでなければ、時間ｔ３が経過したとき、ｉはｖ’＝⊥を設定する。
【０５４６】
３．  ｖ’の値が設定されていた場合、ｉはＣＥＲＴｒ−１からＱｒ−１を計算し、ｉ∈ＳＶｒ，３かどうかをチェックする。
【０５４７】
４．  ｉ∈ＳＶｒ，３である場合、ｉはメッセージ
【数３５５】
2019519137.tif 000357
を計算し、自分の一時的な秘密鍵ｓｋｉｒ，３を破壊してから、ｍｉｒ，３を伝播する。そうでなければ、ｉは何も伝播せずに停止する。
【０５４８】
ステップ４：  ＧＣの出力およびＢＢＡ★の第１ステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、自分のステップ３を終えるや否やラウンドｒの自分のステップ４を始める。
【０５４９】
・ユーザｉは、最大時間量２λ待つ（脚注３７参照）。待っている間、ｉは次のように行為する。
【０５５０】
脚注３７
したがって、ｉがラウンドｒの自分のステップ１を始めたときからの最大総時間量は、
【数３５６】
2019519137.tif 000358
とすることができるであろう。
【０５５１】
１．  ｖｉおよびｇｉ、ＧＣの出力を次のように計算する。
【０５５２】
（ａ）ｉが少なくともｔＨ個の有効なメッセージｍｊｒ，３＝（ＥＳＩＧｊ（ｖ’），σｊｒ，３）を受信したような値ｖ’≠⊥が存在する場合、待機を停止し、
【数３５７】
2019519137.tif 000359
および
【数３５８】
2019519137.tif 000360
を設定する。
【０５５３】
（ｂ）ｉが少なくともｔＨ個の有効なメッセージｍｊｒ，３＝（ＥＳＩＧｊ（⊥），σｊｒ，３）を受信している場合、待機を停止し、
【数３５９】
2019519137.tif 000361
および
【数３６０】
2019519137.tif 000362
を設定する（脚注３８参照）。
【０５５４】
脚注３８
ステップ（ｂ）がプロトコル内であるかどうかはその正当性に影響を与えない。しかし、ステップ（ｂ）の存在は、十分に多くのステップ３検証者が「⊥に署名」した場合、ステップ４が２λより少ない時間で終了することを許す。
【０５５５】
（ｃ）そうでなければ、時間２λが経過したとき、ｉが少なくとも
【数３６１】
2019519137.tif 000363
個の有効なメッセージｍｊｒ，ｊ＝（ＥＳＩＧｊ（ｖ’），σｊｒ，３）を受信したような値ｖ’≠⊥が存在する場合、
【数３６２】
2019519137.tif 000364
および
【数３６３】
2019519137.tif 000365
を設定する（脚注３９参照）。
【０５５６】
脚注３９
この場合のｖ’は、存在する場合、一意でなければならないことは証明できる。
【０５５７】
（ｄ）  そうでなければ、時間２λが経過したとき、
【数３６４】
2019519137.tif 000366
および
【数３６５】
2019519137.tif 000367
を設定する。
【０５５８】
２．  値ｖｉおよびｇｉが設定されているとき、ｉは、ｂｉ、ＢＢＡ★の入力を次のように計算する。
ｇｉ＝２の場合
【数３６６】
2019519137.tif 000368
で、それ以外の場合は
【数３６７】
2019519137.tif 000369
である。
【０５５９】
３．  ｉは、ＣＥＲＴｒ−１からＱｒ−１を計算し、ｉ∈ＳＶｒ，４かどうかをチェックする。
【０５６０】
４．  ｉ∈ＳＶｒ，４である場合、ｉはメッセージ
【数３６８】
2019519137.tif 000370
を計算し、自分の一時的な秘密鍵ｓｋｉｒ，４を破壊してから、ｍｉｒ，４を伝播する。そうでなければ、ｉは何も伝播せずに停止する。
【０５６１】
ステップｓ，５≦ｓ≦ｍ＋２，ｓ−２≡０  ｍｏｄ  ３：  ＢＢＡ★の、コインを０に固定するステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、自分のステップｓ−１を終えるや否やラウンドｒの自分のステップｓを始める。
【０５６２】
・ユーザｉは、最大時間量２λ待つ（脚注４０参照）。待っている間、ｉは次のように行為する。
【０５６３】
脚注４０
したがって、ｉがラウンドｒの自分のステップ１を始めたときからの最大総時間量は、
【数３６９】
2019519137.tif 000371
とすることができるであろう。
【０５６４】
−終了条件０：任意の点で、次のようになるストリングｖ≠⊥およびステップｓ’が存在する場合、
（ａ）５≦ｓ’≦ｓ，ｓ’−２≡０  ｍｏｄ  ３、すなわち、ステップｓ’は、コインを０に固定するステップであり、
（ｂ）ｉは少なくともｔＨ個の有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖ），σｊｒ，ｓ’−１）を受信しており（脚注４１参照）、かつ、
（ｃ）ｉは、ｊがｖの第２成分のとき、有効なメッセージ（ＳＩＧｊ（Ｑｒ−１），σｊｒ，１）を受信している場合、
ｉは待機を停止し、自分によるステップｓ（実際にはラウンドｒの）の実行を、（ｒ，ｓ）検証者として何も伝播せずにすぐに終了し、Ｈ（Ｂｒ）をｖの最初の成分になるように設定する。さらに、自分自身のＣＥＲＴｒを、（ＳＩＧｊ（Ｑｒ−１），σｊｒ，１）とともに、ステップ（ｂ）のメッセージｍｊｒ，ｓ’−１の集合に設定する（脚注４２参照）。
【０５６５】
脚注４１
プレーヤｊからのこのようなメッセージは、プレーヤｉが１について署名するｊからのメッセージも受信している場合であってもカウントされる。終了条件１についても同様。分析で示しているように、このことは、すべての誠実なユーザが時間λ以内に互いにＣＥＲＴｒを知ることを確実にするためである。
【０５６６】
脚注４２
ユーザｉはこれでＨ（Ｂｒ）を知り、自分自身のラウンドｒを終わらせる。実際にブロックＢｒがユーザｉに伝播されるまで待つだけでよく、これにはいくらか追加の時間がかかるかもしれない。ユーザｉは一般ユーザとしてメッセージの伝播をなおも手伝うが、（ｒ，ｓ）検証者として伝播を開始しない。具体的には、自分のＣＥＲＴｒ内のすべてのメッセージの伝播を手伝っており、これは我々のプロトコルにとって十分である。ユーザｉはバイナリＢＡプロトコルについても
【数３７０】
2019519137.tif 000372
を設定するべきであるが、この場合ｂｉは一切必要ない。すべての将来の命令についても同様。
【０５６７】
−終了条件１：任意の点で、次のようになるステップｓ’が存在する場合、
（ａ’）６≦ｓ’≦ｓ，ｓ’−２≡１  ｍｏｄ  ３、すなわち、ステップｓ’は、コインを１に固定するステップであり、かつ、
（ｂ’）ｉは少なくともｔＨ個の有効なメッセージｍｊｒ，ｓ’−１＝（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ’−１）を受信している場合（脚注４３参照）、
ｉは待機を停止し、自分によるステップｓ（実際にはラウンドｒの）の実行を、（ｒ，ｓ）検証者として何も伝播せずにすぐに終了し、Ｂｒ＝Ｂεｒを設定する。さらに、自分自身のＣＥＲＴｒを、サブステップ（ｂ’）のメッセージｍｊｒ，ｓ’−１の集合になるように設定する。
【０５６８】
脚注４３
この場合、ｖｊが何であるかは問題ではない。
【０５６９】
−任意の時点で、形式（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の少なくともｔＨ個の有効なｍｊｒ，ｓ−１を受信している場合、待機を停止し、
【数３７１】
2019519137.tif 000373
を設定する。
【０５７０】
−任意の時点で、形式（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の少なくともｔＨ個の有効なｍｊｒ，ｓ−１を受信しているが、当該ユーザｉらが同じｖに合意しない場合、待機を停止し、
【数３７２】
2019519137.tif 000374
を設定する。
【０５７１】
−そうでなければ、時間２λが経過したとき、ｉは
【数３７３】
2019519137.tif 000375
を設定する。
【０５７２】
−値ｂｉが設定されているとき、ｉはＣＥＲＴｒ−１からＱｒ−１を計算し、ｉ∈ＳＶｒ，ｓかどうかをチェックする。
【０５７３】
−  ｉ∈ＳＶｒ，ｓである場合、ｉはメッセージ
【数３７４】
2019519137.tif 000376
を計算し（ｖｉは、ステップ４でｉが計算した値である）、自分の一時的な秘密鍵ｓｋｉｒ，ｓを破壊してから、ｍｉｒ，ｓを伝播する。そうでなければ、ｉは何も伝播せずに停止する。
【０５７４】
ステップｓ，６≦ｓ≦ｍ＋２，ｓ−２≡１  ｍｏｄ  ３：  ＢＢＡ★の、コインを１に固定するステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、自分のステップｓ−１を終えるや否やラウンドｒの自分のステップｓを始める。
【０５７５】
・ユーザｉは、最大時間量２λ待つ。待っている間、ｉは次のように行為する。
【０５７６】
−終了条件０：コインを０に固定するステップと同じ命令。
【０５７７】
−終了条件１：コインを０に固定するステップと同じ命令。
【０５７８】
−任意の時点で、形式（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１の少なくともｔＨ個の有効なｍｊｒ，ｓ−１を受信している場合、待機を停止し、
【数３７５】
2019519137.tif 000377
を設定する（脚注４４参照）。
【０５７９】
脚注４４
１について署名するｔＨ個の有効な（ｒ，ｓ−１）メッセージを受信することが、終了条件１を意味するであろうことに留意されたい。
【０５８０】
−そうでなければ、時間２λが経過したとき、ｉは
【数３７６】
2019519137.tif 000378
を設定する。
【０５８１】
−値ｂｉが設定されているとき、ｉはＣＥＲＴｒ−１からＱｒ−１を計算し、ｉ∈ＳＶｒ，ｓかどうかをチェックする。
【０５８２】
−ｉ∈ＳＶｒ，ｓである場合、ｉはメッセージ
【数３７７】
2019519137.tif 000379
を計算し（ｖｉは、ステップ４でｉが計算した値である）、自分の一時的な秘密鍵ｓｋｉｒ，ｓを破壊してから、ｍｉｒ，ｓを伝播する。そうでなければ、ｉは何も伝播せずに停止する。
【０５８３】
ステップｓ，７≦ｓ≦ｍ＋２，ｓ−２≡２  ｍｏｄ  ３：  ＢＢＡ★の、実際にコインを投げるステップ
全ユーザｉ∈ＰＫｒ−ｋのための命令：ユーザｉは、自分のステップｓ−１を終えるや否やラウンドｒの自分のステップｓを始める。
【０５８４】
・ユーザｉは、最大時間量２λ待つ。待っている間、ｉは次のように行為する。
【０５８５】
−終了条件０：コインを０に固定するステップと同じ命令。
【０５８６】
−終了条件１：コインを０に固定するステップと同じ命令。
【０５８７】
−任意の時点で、形式（ＥＳＩＧｊ（０），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の少なくともｔＨ個の有効なｍｊｒ，ｓ−１を受信している場合、待機を停止し、
【数３７８】
2019519137.tif 000380
を設定する。
【０５８８】
−任意の時点で、形式（ＥＳＩＧｊ（１），ＥＳＩＧｊ（ｖｊ），σｊｒ，ｓ−１）の少なくともｔＨ個の有効なｍｊｒ，ｓ−１を受信している場合、待機を停止し、
【数３７９】
2019519137.tif 000381
を設定する。
【０５８９】
−そうでなければ、時間２λが経過したとき、ＳＶｉｒ，ｓ−１を有効なメッセージｍｊｒ，ｓ−１を受信した（ｒ，ｓ−１）検証者の集合として、ｉは
【数３８０】
2019519137.tif 000382
を設定する。
【０５９０】
−値ｂｉが設定されているとき、ｉはＣＥＲＴｒ−１からＱｒ−１を計算し、ｉ∈ＳＶｒ，ｓかどうかをチェックする。
【０５９１】
−ｉ∈ＳＶｒ，ｓである場合、ｉはメッセージ
【数３８１】
2019519137.tif 000383
を計算し（ｖｉは、ステップ４でｉが計算した値である）、自分の一時的な秘密鍵ｓｋｉｒ，ｓを破壊してから、ｍｉｒ，ｓを伝播する。そうでなければ、ｉは何も伝播せずに停止する。
【０５９２】
備考
原則として、サブセクション６．２で検討したように、プロトコルは、あるラウンドで多くのステップを任意に取ることができる。述べたように、これが起こる場合、ｓ＞μのときユーザｉ∈ＳＶｒ，ｓは、事前に生成した一時的な鍵の隠し場所を使い果たしており、一時的な鍵の「カスケード」によって自分の（ｒ，ｓ）メッセージｍｉｒ，ｓを認証しなければならない。したがって、ｉのメッセージは少し長くなり、これらの長くなったメッセージの伝送には少し多くの時間がかかる。したがって、所与のラウンドのそのように多くのステップの後、パラメータλの値は自動的にやや大きくなる。（しかし、一旦新たなブロックが生成されて、新たなラウンドが始まれば、元のλに戻る。）
【０５９３】
非検証者によるラウンドｒの再構築
システム内の全ユーザｉのための命令：  ユーザｉは、ＣＥＲＴｒ−１を持つや否や自分のラウンドｒを始める。
【０５９４】
・ｉは、プロトコルの各ステップの命令に従い、すべてのメッセージの伝播に参加するが、その検証者ではない場合、ステップの伝播は開始しない。
【０５９５】
・ｉは、あるステップで終了条件０または終了条件１のいずれかに入ることによって、自分のラウンドｒを、対応するＣＥＲＴｒを使って終了する。
【０５９６】
・それ以降、ｉは、そのハッシュＨ（Ｂｒ）がＣＥＲＴｒによってピン留めされている実際のブロックＢｒを受信するのを待ちながら（それを既に受信していない限り）、自分のラウンドｒ＋１を始める。ここでも、Ｂｒ＝ＢεｒであることをＣＥＲＴｒが示す場合、ｉは、ＣＥＲＴｒを持った瞬間にＢｒを知る。
【０５９７】
６．４  アルゴランド’１の分析
アルゴランド’２の分析は、アルゴランド’１の分析から容易に導き出せる。本質的に、アルゴランド’２では、圧倒的確率で、（ａ）すべての誠実なユーザは同じブロックＢｒに合意する。新たなブロックのリーダーは、少なくともｐｈ＝ｈ２（１＋ｈ−ｈ２）の確率で誠実である。
【０５９８】
７  オフラインである誠実なユーザの取り扱い
述べたように、誠実なユーザは、オンラインであること、およびプロトコルを実行することを含め、自分の規定された命令のすべてに従う。誠実なユーザに対して要求する計算および帯域幅がかなり少量であるため、これは、アルゴランドでは大きな負担ではない。しかし、アルゴランドは、非常に多数の誠実なユーザがオフラインであることが許容される２つのモデルで機能するように簡単に修正できることを指摘したい。
【０５９９】
この２つのモデルを考察する前に、誠実なユーザの割合が９５％であった場合、アルゴランドは、代わりにｈ＝８０％であると仮定してもなお、すべてのパラメータの設定を実行することができるだろうということを指摘したい。したがって、アルゴランドは、誠実なプレーヤのうちのたかだか半数がオフラインになることを選んでも（実際、「常習的不在」の主なケースである）、適切に機能し続けるであろう。事実、任意の時点で、オンラインのプレーヤの少なくとも８０％は誠実であるだろう。
【０６００】
継続的参加から怠惰な誠実者へ
述べたように、アルゴランド’１およびアルゴランド’２は、ルックバックパラメータｋを選ぶ。ここで、適切に大きいｋを選ぶことで継続的参加要件を取り除けるということを示そう。この要件は、極めて重要な性質、すなわち、基となるＢＡプロトコルＢＢＡ★が正規の誠実な過半数を有すること、を確保する。ここで、この性質を満たす代替の魅力的な方法を怠惰な誠実者がいかに提供するかを説明しよう。
【０６０１】
ユーザｉは、（１）プロトコルへの参加を求められるときに、自分の規定された命令のすべてに従い、（２）プロトコルへの参加を求められることは極稀（例えば週に１回）にしかなく、かつ、参加要求が適切な事前の通知をもって行われ、参加するときはかなりの報酬を潜在的に受け取る場合に、怠惰であるが誠実であることを思い出そう。
【０６０２】
アルゴランドをこのようなプレーヤで機能させるには、「かなり早期のラウンドで既にシステムにいたユーザの中から、現行ラウンドの検証者を選ぶ」だけで十分である。実際、ラウンドｒの検証者はラウンドｒ−ｋのユーザから選ばれ、数量Ｑｒ−１に基づいて選択が行われることを思い出そう。１週は約１０，０００分からなることに留意し、１ラウンドに（例、平均で）約５分かかると仮定すると、１週は約２，０００ラウンドを有する。そう仮定すると、ある時点で、ユーザｉは、自分の時間を予定し、翌週に自分が検証者になるかどうかを知りたい。ここで、プロトコルはラウンドｒ−ｋ−２，０００内のユーザからラウンドｒの検証者を選び、Ｑｒ−２，００１に基づいて選択が行われる。ラウンドｒで、プレーヤｉは既にＱｒ−２，０００，．．．，Ｑｒ−１の値を知っている。なぜなら、これらが実際にブロックチェーンの一部であるからである。さらに、１〜２，０００までの各Ｍについて、ｉは、
【数３８２】
2019519137.tif 000384
の場合に、かつ、その場合に限り、ｉはラウンドｒ＋Ｍのステップｓの検証者である。
【０６０３】
したがって、当該プレーヤｉが次の２，０００ラウンドで検証者として行為するために呼び出されることになるかどうかをチェックするためには、ｉは、Ｍ＝１〜２，０００および各ステップｓについてσｉＭ，ｓ＝ＳＩＧｉ（ｒ＋Ｍ，ｓ，Ｑｒ＋Ｍ−２，００１）を計算して、そのうちのいくつかについて、．Ｈ（σｉＭ，ｓ）≦ｐかどうかをチェックしなければならない。電子署名の計算に１ミリ秒かかる場合、この全体の動作を当該ｉが行うのに約１分かかる計算になる。これらのラウンドのいずれにおいても当該ｉが検証者として選択されない場合、当該ｉは、「誠実な分別」をもってオフラインになることができる。継続的に参加した場合、本質的に、当該ｉは、いずれにしても次の２，０００ラウンドの０ステップを実質的に取ったことになるであろう！  代わりに、当該ｉは、これらのラウンドのうちの１ラウンドの検証者として選択される場合、正規のラウンドで誠実な検証者として行為するために（例、必要なすべての情報を得ることによって）準備する。
【０６０４】
そのように行為することによって、怠惰であるが誠実な潜在的検証者ｉは、メッセージの伝播への参加の機会を逃すだけである。しかし、メッセージの伝播は通例ロバストである。また、最近伝播された支払の支払人および受取人は、自分の支払に何が起こるのかを見るためにオンラインであると期待され、したがって、当該支払人および受取人が誠実である場合に、メッセージの伝播に参加するであろう。
【０６０５】
８  「マネーの誠実な過半数」を伴うプロトコルアルゴランド’
ここで、最後に、ユーザの誠実な過半数の仮定を、はるかに意味深い「マネーの誠実な過半数」の仮定に置き換える方法を示す。基本的な考えは、（プルーフ・オブ・ステーク風に）「ｉが所有するマネーの金額に比例する重み（つまり、決定権）によって、ＳＶｒ，ｓに所属しているユーザｉ∈ＰＫｒ−ｋを選択すること」である（脚注４５参照）。
【０６０６】
脚注４５
継続的参加と置き換えるために、ＰＫｒ−ｋ−２，０００というべきである。単純にするために、いずれにしても連続的参加を要求したいと望む人はいるかもしれないので、１少ないパラメータを表すのに、以前と同様にＰＫｒ−ｋを使用する。
【０６０７】
ＨＭＭの仮定により、その金額をラウンドｒ−ｋで所有するべきか、またはラウンドｒ（の始まり）で所有するべきかを選ぶことができる。我々が継続的参加を嫌がらないと仮定すると、我々は、後者の選択肢を選ぶ。（継続的参加を除くためなら、前者の選択肢を選ぶであろう。より適切にいうと、ラウンドｒ−ｋ−２，０００で所有されるマネーの金額のため。）
【０６０８】
この考えを実施するには沢山の方法がある。最も単純な方法は、各鍵にマネーのたかだか１単位を保有させてから、ａｉ（ｒ）＝１になるように、ＰＫｒ−ｋからランダムにｎ人のユーザｉを選択することであろう。
【０６０９】
次に最も単純な実施態様
次に最も単純な実施態様は、各公開鍵が、ある固定Ｍについて、マネーＭの最高金額を所有するよう要求することであろう。値Ｍは、１つの鍵が、例えば、ｋラウンドの２以上のステップの検証者集合に属す確率を無視できる程度にするように、システム内のマネーの総額に対して十分に小さくする。そして、ラウンドｒでマネーの金額ａｉ（ｒ）を所有する鍵ｉ∈ＰＫｒ−ｋが、
【数３８３】
2019519137.tif 000385
である場合、ＳＶｒ，ｓに属すように選ばれる。そして、すべてが前と同様に進行する。
【０６１０】
より複雑な実施態様
最後の実施態様は、「システムの金持ちの参加者に多くの鍵を所有させた」。
以下に述べる代替実施態様は、ステータスの概念を一般化し、各ユーザｉをＫ＋１コピー（ｉ，ｖ）からなると見なし、そのそれぞれが独立して検証者であるように選択され、ラウンドｒのステップｓで自分自身の一時的な鍵（ｐｋｉ，ｖｒ，ｓ，ｓｋｉ，ｖｒ，ｓ）を所有することになる。Ｋの値は、ラウンドｒのｉによって所有されるマネーの金額ａｉ（ｒ）に依存する。
ここで、このようなシステムがどのように機能するかをより詳細に見ていこう。
【０６１１】
コピー数
ｎを、各検証者集合の目標とする期待濃度とし、ａｉ（ｒ）を、ラウンドｒでユーザｉが所有するマネーの金額とする。Ａｒを、ラウンドｒでＰＫｒ−ｋのユーザが所有するマネーの総額、すなわち、
【数３８４】
2019519137.tif 000386
とする。
【０６１２】
ｉがＰＫｒ−ｋ内のユーザである場合、ｉのコピーは（ｉ，１），．．．，（ｉ，Ｋ＋１）であり、ここで、
【数３８５】
2019519137.tif 000387
である。
【０６１３】
例．
ｎ＝１，０００、Ａｒ＝１０９、ａｉ（ｒ）＝３７０万とする。すると、
【数３８６】
2019519137.tif 000388
である。
【０６１４】
検証者およびクレデンシャル
ｉを、Ｋ＋１コピーを有するＰＫｒ−ｋ内のユーザとする。
【０６１５】
各ｖ＝１，．，．，Κについて、コピー（ｉ，ｖ）は自動的にＳＶｒ，ｓに属す。すなわち、ｉのクレデンシャルは
【数３８７】
2019519137.tif 000389
であるが、対応する条件は、．Η（σｉ，ｖｒ，ｓ）≦１になり、常に真である。
【０６１６】
コピー（ｉ，Ｋ＋１）について、ラウンドｒの各ステップｓは、ｉが
【数３８８】
2019519137.tif 000390
であるかどうかをチェックする。もしそうなら、コピー（ｉ，Ｋ＋１）はＳＶｒ，ｓに属す。これを証明するために、ｉは次のクレデンシャルを伝播する。
【数３８９】
2019519137.tif 000391
【０６１７】
例．
前の例と同様に、ｎ＝１Ｋ、ａｉ（ｒ）＝３７０万、Ａｒ＝１Ｂ、そしてｉは４つのコピー（ｉ，１），．．．，（ｉ，４）を有するとする。すると、最初の３つのコピーは自動的にＳＶｒ，ｓに属す。４番目のコピーについては、概念的に、アルゴランド’は独立してバイアスコインを転がし、それが表になる確率は０．７である。コピー（ｉ，４）は、コイントスが表である場合、かつ、その場合にのみ選択される。
【０６１８】
（当然、この出願においてこれまでずっと行ってきたように、このバイアスコインフリップは、ｉが自分の結果を証明できるように、ハッシュ化、署名および比較によって実施される。）
【０６１９】
通常通りのビジネス
検証者がどのように選択され、当該検証者のクレデンシャルがラウンドｒの各ステップでどのように計算されるかを説明してきたが、ラウンドの実行は既に説明したものと似ている。
【０６２０】
９  フォーク
フォークの確率を１０−１２または１０−１８まで減じて、それが発生する可能性がほとんどない中で、当該フォークを取り扱う必要は実際上ない。しかし、アルゴランドは、プルーフ・オブ・ワークの有無を問わず、様々なフォークの解決手順を採用することもできる。
【０６２１】
１０  ブロックおよびステータス情報のための新たな構造
このセクションは、すべてのブロックの改ざん防止性を保証し続けるブロックを構築するより良い方法を提案するだけでなく、個々のブロックの内容を証明し、より一般的には、ブロックチェーン全体を審査することなく、関心のある特定の数量を計算するためにブロックを使用する、より効率的な方法を可能にもする。
【０６２２】
ブロックチェーンの改ざん防止性
ブロックチェーンを作るために、ブロックＢｒは次の高次構造を有することを思い出そう（脚注４６参照）。
【数３９０】
2019519137.tif 000392
【０６２３】
脚注４６
アルゴランドではラウンドを示すために上付き記号を使用することを思い出そう。しかし、このセクションは全体としてブロックチェーンに充てられており、そのため、ｒ番目のブロックは、アルゴランドの意味でのｒ番目のラウンドに対応しないことがある。すなわち、上記「ｒ」は単なるブロック番号であり、明確にするためにブロックＢｒに含まれる。
また、ブロックの上記一般構造は概念的なものである。例えば、ビットコインでは、Ｂｒは、対応する計算問題を解いた人であるブロック構築者の電子署名を含むことができる。アルゴランドでは、Ｂｒの認証、すなわち、マッチング証明書ＣＥＲＴＸは別に提供することができる。しかし、Ｂｒの一体的な一部として提供することもできるであろう。この後者の場合、有効な証明書が多数あるかもしれないため、ラウンドｒのリーダーｌｒは、すべてのラウンドｒ検証者への自分のメッセージの中に、前のラウンドの出力のための有効な証明書も含めて、各ラウンドｒの証明書が何であるかに関しても合意に達するようにする。
【０６２４】
上記において、ＩＮＦＯｒは、ｒ番目のブロック内で保護したい情報である。アルゴランドの場合、ＩＮＦＯｒは、ＰＡＹｒ、数量Ｑｒ−１のブロックリーダーの署名等を含む。
【０６２５】
ブロックチェーンのよく知られた基本的な性質は、そのブロックのそれぞれの内容を改ざん防止にすることである。すなわち、過去のブロックを改変するには、最後のブロックも変えなければならない。この性質を、かいつまんで以下に挙げておく。
【０６２６】
最新のブロックをＢｌａｓｔとし、誰かがＢｒを別の（「不正な」）ブロック
【数３９１】
2019519137.tif 000393
に置き換えると仮定する。すると、Ｈは衝突耐性であるため、
【数３９２】
2019519137.tif 000394
は、圧倒的確率で、Ｈ（Ｂｒ）とは異なる。したがって、ブロックチェーンのブロック内の情報
【数３９３】
2019519137.tif 000395
、すなわち、
【数３９４】
2019519137.tif 000396
をどのように選ぼうとも、ここでもＨの衝突耐性のために、
【数３９５】
2019519137.tif 000397
となる。この不等式は伝播することは事実である。すなわち、
【数３９６】
2019519137.tif 000398
がＢｒ＋２とは異なる。以降も同様であるので、最終的には、
【数３９７】
2019519137.tif 000399
となる。
【０６２７】
ブロックチェーンの個々のブロックの非効率的な検証可能性
ブロックチェーン全体は知らないが、Ｂｚがその中の正当なブロックであることを知っている人、Ｘ、を考えてみる。すると、上記基本的な性質により、ある人はこのような人に対して、ｒがｚよりも小さい場合、任意の個々のブロックＢｒも正当であることを証明することができる。すなわち、ある人は、「証拠」として、中間ブロックのすべてＢｒ＋１，．．．，Ｂｚ−１をＸに提供し、ＸはさらにＨを使用してｒから先、ｚ番目のブロックを再構築するまでブロックチェーンを再生成し、自分が知っているブロックＢｚと一致するかどうかをチェックする。そうなる場合、ＸはＢｒの正当性を確信する。実際、このように一見適法そうな証明を見つけることができる人は誰でも、実際上は発見するのは不可能な、ハッシュ関数Ｈでの衝突も見つけたはずである。
【０６２８】
このような検証可能性の有用性を確認するために、以下の例を考えてみる。ブロックチェーンがビットコインまたはアルゴランド等の支払システムによって生成されると仮定して、Ｘを訴訟事件の裁判官とし、被告は、係争中の支払Ｐを２年前に原告に対して実際に行ったことをＸに対して証明することを望んでいる。裁判官がチェーンの正当な最後のブロック、または少なくとも十分に最近の正当なブロックＢｚを取得することができると仮定するのが合理的であるため、被告が行わなければならない「すべてのこと」は、裁判官に証拠Ｂｒ＋１，．．．，Ｂｚ−１を提出することであり、裁判官はそれから、証拠が釈明通りであることを検証する。当然、問題はこのような証拠がおそらくかなり長いことである。
【０６２９】
ブロックツリー
過去の個々のブロックの正確な内容を効率的に証明できる能力はかなり基本的なことであるため、我々は、新たなブロック構造を展開する。これらの構造では、ブロックチェーンと同様に、ブロックシーケンス全体の完全性は、はるかに短い値ｖによって簡潔に保証される。この値は、シーケンスの最後のブロックではない。それにもかかわらず、ブロックチェーンの基本的な性質は維持される。ブロックのうちの１つにおける変更は、ｖにおける変更を引き起こす。
【０６３０】
新たな構造の利点は、ｖがあるとして、ｎをシーケンスの現在のブロック数とすると、各個々のブロックの内容は非常に効率的に証明することができる点である。例えば、新たなブロック構造の特定の実施形態であるブロックツリーでは、それまでに生成されたブロックの総数がｎである場合、各ブロックは、わずか
【数３９８】
2019519137.tif 000400
バイトの情報を提供するだけで証明することができる。
【０６３１】
これは実際に非常に簡潔な証明である。毎分１個のブロックを生成するシステムにおいて、それから、２千年運用した後は、
【数３９９】
2019519137.tif 000401
である。したがって、各個々のブロックの内容を証明するには１ＫＢ（１，０００バイト）未満で十分である。（２０億年後には２ＫＢ未満で十分であり、本質的に永久でも４ＫＢで十分である。）また、このような証明は非常に効率的に検証される。
【０６３２】
効率的なステータス
別の効率性の問題が、ビットコイン、より一般的にはブロックチェーンに基づく支払システム、に影響を与える。すなわち、システムのステータス（すなわち、どの鍵が所与の時刻に何を所有するか）を再構築するには、（その時点までの）支払履歴全体を取得しなければならず、それは、行われる支払回数が非常に多い場合にはおそらく実行が困難である。
このような必要なものを得るためにも、ブロックツリーを使用する。
【０６３３】
以下に挙げる、はるか昔の概念を適切に修正することによって、ブロックツリーを構築する。
【０６３４】
１０．１  マークル木
マークル木とは、ｎ個の既知の値ｖ０，．．．，ｖｎ−１を１つの値ｖによって認証し、各値ｖｉの真正性を個々にかつ効率的に検証できるようにする方法である。
【０６３５】
単純にするために、ｎは２の累乗ｎ＝２ｋであると仮定して、各値が別々のｋビットストリングｓによって一意に識別されるようにする。そして、深さｋの完全なバイナリツリーに特定の値を格納することによってマークル木Ｔを概念的に構成し、そのノードは、長さ≦ｋのバイナリストリングを使用して一意に名付けられている。
【０６３６】
ルートはεと名付けられ、空のストリングである。内部ノードがｓと名付けられる場合、ｓの左の子はｓ０と名付けられ（すなわち、ｓを０と連結させることによって得られるストリング）、右の子はｓ１と名付けられる。それから、マークル木Ｔを構成するために、各整数ｉ∈｛０，．．．，ｎ−１｝を識別し、そのバイナリｋビット展開とともに、考えられる０を先頭に付けて、各値ｖｉをリーフｉに格納する。この後、木をマークル化し、すなわち、次のように、ボトムアップ方式で（すなわち、まず深さｋ−１の全ノードの内容を選んでから、次に深さｋ−２の全ノードの内容を選ぶ。以降も同様）、Ｔの、他のすべてのノードに格納する。ｖｓ０およびｖｓ１がそれぞれノードｓの左の子および右の子に格納される場合、２５６ビット値
【数４００】
2019519137.tif 000402
をノードｓに格納する。このプロセスの終わりに、ルートは２５６ビット値νεを含むことになる。
【０６３７】
深さ３および８個のリーフを有するマークル木を図１．Ａに示す。
【０６３８】
ここで、ｖεが分かっている、または電子署名されていると仮定して、各元の値ｖｉをｖεに関連してどのように認証できるかを示そう。
【０６３９】
ノードｘから始まりルートに到達する（最短）経路Ｐを考えてみる。すると、ｘの内容ｖｘの認証経路はＰ内のノードの兄弟の内容のシーケンスであり、ノードｓ０の兄弟はノードｓ１であり、またその逆も同様である。したがって、深さｋのツリーのリーフ値の認証経路はｋ−１値からなる。例えば、図１．Ａのマークル木では、リーフ０１０からルートまでの経路はＰ＝０１０，０１，０，εであり、ルートは兄弟を持たないため、ｖ０１０の認証経路はｖ０１１，ｖ００，ｖ１である。図１．Ａのマークル木の経路Ｐおよびｖ０１０の認証経路を、図１．Ｂに図示する。
【０６４０】
各ｖｉをｉ番目のリーフに格納し、特定のストリングｅ（空（ｅｍｐｔｙ）に因む）を残りのすべてのリーフに格納し、さらにノードの残りを通常のやり方で埋めることによってｎ＜２ｋの値ｖ０，・・・，ｖｎ−１を認証するマークル木を有するために、２ｋ個のリーフを有する完全なバイナリツリーを使用することができる。得られるマークル木は（事実上）ｎ個のリーフを持っている（他のすべてのリーフが空であるため）（脚注４７参照）。
【０６４１】
脚注４７
ハッシュ関数Ｈが
【数４０１】
2019519137.tif 000403
になるようにすると仮定して、内容がｅである任意のノードより下のマークル木のノードをすべて「刈り込む」こともできる。
【０６４２】
ルート値νεに関連し、その認証経路があるとして、ｖ１（の真正性）を検証するために、リーフｉからルートまでの経路内のノードの内容を再構築してから、最後に再構築される値が実際にνεであるかどうかをチェックする。すなわち、認証経路がｘ１，．．．，ｘｋ−１である場合、まずｖ１およびｘ１を一緒に正しい順序でＨハッシュ化する、すなわち、ｉの最後のビットが０の場合、ｙ２＝Ｈ（ｖ１，ｘ１）を計算し、そうでない場合はｙ２＝Ｈ（ｘ１，ｖ１）を計算する。それから、ｙ２およびｘ２を一緒に正しい順序でＨハッシュ化する。値ｙｋを計算し、それをｖεと比較するまで、同様に行う。ｙｋ＝ｖεの場合、かつ、その場合に限り、値ｖ１は認証される。
【０６４３】
このような検証が機能する理由は、ここでも、Ｈが衝突耐性であるからである。実際に、リーフまたはノードに当初格納されていた値のうちの１つのビットを変更するだけで、圧倒的確率で、親に格納されている値も変更される。この変更は上までずっと広まり、その結果、ルートの値は既知の値ｖεとは異なることになる。
【０６４４】
１０．２  ブロックツリー
述べてきたように、マークル木は、１つの値、つまりルートに格納されている値ｖεによって、任意の、および任意に多くの既知の値を効率的に認証する。実際、マークル木の１つのルート内容によってｋ個の値ｖ０，．．．，ｖｋ−１を認証するためには、まず、木の最初のｋ個のリーフに格納するためにｖ０，．．．，ｖｋ−１を知り、他の適切なノードにｅを格納してから、ルート値を含む、木の中の他のすべてのノードの内容を計算しなければならない。
【０６４５】
マークル木は、ビットコインで所与のブロックの支払を認証するために使用されている。実際、所与のブロックを構築するときには、ブロックに入れるための支払は既に選択済みである。
【０６４６】
ただし、増え続けるブロックチェーンを認証するためにマークル木を使用することは、どのブロックを認証するべきかが事前には分からないため、さらに難しい。
【０６４７】
しかし、我々は、個々のブロックの効率的な証明可能性を可能にする新たなブロック構造を得るために、どのようにして新規な方法でマークル木を使用するかを示す。我々の好適なこのような構造、ブロックツリーを例示しよう。
【０６４８】
ブロックツリーの保証
ブロックツリーは、ブロックのシーケンスＢ０，Ｂ１，．．．．のそれぞれに含まれる情報を保護する。この重要な性質は、ブロックチェーンと同様、前のブロックのハッシュを各ブロックにも格納することでは得られない。しかし、各ブロックは何らかの短い保護情報も格納して、所与のブロックＢｒの前のブロックＢｉの内容に加えられた変更がＢｒの保護情報も変更させることを保証する。ブロックツリーのこの保証は、ブロックチェーンが提供するものに匹敵する。主な利点は、新たな保護情報により、ブロックＢｒの保護情報を知る誰かに対して、ＢｉとＢｒとの間のすべてのブロックを処理しなくても、任意のブロックＢｉの正確な内容を証明できることである。ブロックの数がとてつもなく多い可能性がある（またはそのようになる可能性がある）ため、これは大きな利点である。
【０６４９】
ブロックツリーのブロック構造
ブロックツリーでは、ブロックＢｉは以下の形式を有する。
【数４０２】
2019519137.tif 000404
上記式において、ＩＮＦＯｒは、ブロックＢｒ内の、セキュアである必要がある情報を表し、ＳｒはＢｒの保護情報を表す。
【０６５０】
ブロックツリーの我々の好適な実施形態において、保護情報Ｓｒの情報は、実際にはかなり簡潔である。これは
【数４０３】
2019519137.tif 000405
２５６ビットストリングのシーケンス、すなわち、それぞれ３２バイトの
【数４０４】
2019519137.tif 000406
ストリングから構成される。ほとんどの実用的なアプリケーションでは、２４０は千兆よりも大きいため、
【数４０５】
2019519137.tif 000407
であることに注意されたい。
【０６５１】
以下に、ブロックツリーのためだけにＳｒの情報を明記する。当業者は、それを、本質的に同一の保証で、多様な他のブロック構造に容易に一般化できることを認識するであろうが、そのすべては本発明の範囲内である。
【０６５２】
ブロックツリーにおけるブロックの生成
簡潔にするために、ＩＮＦＯｒ＝ｖｒに設定しよう。概念上、２ｋが候補値ｖｒの数に上限を設けるように、深さｋの完全なバイナリツリーＴから始める。値ｖ０，ｖ１．．．もそうなので、ブロックは順に生成される。新たな値ｖｉが生成されると、概念的にいうと、マークル木Ｔｉを構築するために、当該値ｖｉはＴのリーフｉに格納され、その後、様々なストリングが計算されてＴのノードに格納される。これらのストリングのうちの１つが、特殊なストリングｅである。（Ｔｉのノードｘに出現するとき、ストリングｅは、Ｔｉに属すｘの子孫が存在しないことを意味し、
【数４０６】
2019519137.tif 000408
であると仮定する。）
【０６５３】
最初の値ｖ０が生成されて、リーフ０に格納されると、Ｔ０はＴの（そのように埋められた）ノード０と一致する。事実、こうしたＴ０は基本のマークル木である。その深さは
【数４０７】
2019519137.tif 000409
であり、そのルートはＲ０＝０であり、その最初の深さ０のリーフ（また、実際、その唯一のリーフおよびノードに）ｖ０を格納する。
【０６５４】
ｉ＋１ｓｔの値ｖｉが生成されて、Ｔのリーフｉに格納されたとき（場合によっては、既にそこでストリングｅを置き換える）、マークル木Ｔｉは、前のマークル木Τｉ−１から次のように構築される。（帰納的な仮説により、Τｉ−１は深さが
【数４０８】
2019519137.tif 000410
で、ルートがＲｉ−１、それぞれ値ｖ０，．．．，ｖ１を格納するｉ深さ
【数４０９】
2019519137.tif 000411
のリーフを有する。
【０６５５】
リーフｉがＲｉ−１の子孫の場合、Ｒｉ＝Ｒｉ−１とし、そうでなければＲｉをＲｉ−１の親とする。Ｐは、リーフｉからノードＲｉまでのＴの（最短）経路とする。Ｐ内のすべてのノードｊについて、その兄弟のｊ’が空の場合、ｊ’に特殊なストリングｅを格納する。最後に、ｖｓ０およびｖｓ１がそれぞれｓの左の子および右の子に格納される値の場合、Ｐ内の各ノードについて、リーフｉ（除く）からノードＲｉ（含む）の順に、値ｖｓ＝Ｈ（ｖｓ０，ｖｓ１）をｓに格納する。そのように計算された値をそのノードに格納する、ＲｉをルートとするＴの部分木がマークル木であることを確認するのは簡単である。このマークル木はＴｉである。
【０６５６】
最初の空の完全なバイナリツリーＴが深さ３を有する場合について、最初の８連続のマークル木の構成を図２に合成する。特に、各下位図２．ｉは、マークル木Ｔｉを、そのノードのそれぞれに、特殊なストリングｅ（「そのノードより下のＴｉは空である」ことを意味する）、または数ｊ∈｛０，．．．，ｉ−１｝（マークル木Ｔｊを構築するときに、ノードの内容が最後に変更されたことを意味する）のいずれかを記して強調する。どれほど多くのマークル木を構築できたとしてもＴｊで最後に変更されたノードの内容はそれ以上変わらないことを強調するために、ｊを太字で書く。
【０６５７】
これを踏まえて、新たなブロックＢｉを次のように生成する。ｉ番目のブロック内の保護したい情報ＩＮＦＯｉを選んだ後、ｖｉ＝ＩＮＦＯｉをＴのリーフｉに格納し、マークル木Ｔｉを構築し、
【数４１０】
2019519137.tif 000412
を設定する。上記式において、ＲｉはＴｉのルートであり、ａｕｔｈｉはＴｉにおけるｖｉの認証経路である。すると、新たなブロックは、
【数４１１】
2019519137.tif 000413
になる。Ｓｉは実際には
【数４１２】
2019519137.tif 000414
ストリングから構成されることに注意されたい。ａｕｔｈｉの各ストリング、したがってＳｉ内のすべてのストリングは実際には２５６ビット長であり、リーフｉにｖｉを格納するのではなく、代わりにＨ（ｖｉ）を格納することができる。
ブロックツリーによるセキュリティおよび証明可能性
【０６５８】
誰かがブロックＢｒを知り、前のブロックＢｉの情報ＩＮＦＯｉを正確に知りたがっていると仮定する。マークル木のシーケンスΤ０，Τ１，．．．を構築するとき、各木は部分木として前のものを含むことに留意されたい。事実、前のリーフの内容はそのままで、最後に埋められたものの右側の最初のリーフに新たな値が挿入されるので、各木Ｔｘのリーフは各後続木Ｔｙの最初のｘ＋１リーフである。したがって、ＩＮＦＯｉは、ｒ番目のリーフがＩＮＦＯｒを含み、ルート値ＲｒがブロックＢｒのセキュリティ情報であるＳｒの最初の成分である、マークル木Ｔｒのｉ番目のリーフの内容である。
【０６５９】
Ｂｒを知る誰かは、ＳｒおよびＲｒも知っていることに留意されたい。したがって、このような「人」に対して、ＩＮＦＯｉがブロックＢｉの情報であることを証明するには、ある人がマークル木Ｔｒ内のＩＮＦＯｉの認証経路をその誰かに提供すれば十分である。事実、このような認証情報は容易にチェックできるが、容易に偽造することはできないことを既に確認している！
【０６６０】
このような認証経路は
【数４１３】
2019519137.tif 000415
値から構成され（Ｔｒは深さｄ＋１を有するため）、それぞれ３２バイトからなる（Ｈが３２バイトの出力を生成するため）。このように、Ｂｒに関連してＢｉの内容を証明することは非常に容易である。述べたように、ほとんどの実用的なアプリケーションではｄ＜４０である。
【０６６１】
容易に入手可能な情報からのブロックの構築可能性
ブロックＢｉの一部である構造情報Ｓｉを構築するためには、マークル木Ｔｉ全体からの情報が必要になるように思えるだろう。結局、リーフｉに格納されるＩＮＦＯｉ、したがって値ｖｉは容易に入手可能であるが、ｖｉの認証経路ａｕｔｈｉは前の木のノードの内容を含み、これは原則的には容易に入手することはできない。Ｓｉを構築するためにＴｉ−１全体を入手しなければならない場合、新たなブロックＢｉを構築することはあまりに効率的ではないかもしれない。
【０６６２】
しかし、まさしくブロックチェーンの特質において、各Ｂｉは、前のブロックＢｉ−１および選ばれた情報ＩＮＦＯｉから自明に計算できることに留意されたい。実際、Ｓｉ内の各ストリングは、次のうちの１つである。すなわち、
（ａ）Ｈ（ＩＮＦＯｉ）、
（ｂ）固定ストリングｅ、
（ｃ）Ｓｉのストリング、および、
（ｄ）上記タイプの所定の形態のストリングでハッシュ化することによって得られるストリング。
【０６６３】
図３は、太い境界線で、ブロックツリーの最初の８ブロックを構築するために、その内容がＳｉ＝（Ｒｉ，ａｕｔｈｉ）を計算するのに十分なノードを強調表示している。特に、各下位図３．ｉは、その内容がＳｉを生成するのに十分なノードを強調表示している。強調表示される各ノードにはさらにａ、ｂまたはｃを記して、それがタイプ（ａ）、（ｂ）または（ｃ）であることを示している。ルートＲｉを含むタイプ（ｄ）のノードにはマーキングをしていない。
【０６６４】
要するに、ブロックツリーベースのシステムでは、ブロックの生成は非常に効率的である。
【０６６５】
１０．３  ステータス情報の効率的な管理
ブロックツリーは、アルゴランド等の支払システムを含め、あらゆる種類のアプリケーションにおいてブロックのセキュアな取扱いを改善する。しかし、このようなシステムには、改善から大きな利益が得られるであろう別の側面、すなわち、ステータス情報がある。
【０６６６】
効率的なステータス情報のニーズ
ラウンドｒの正式なステータスは、各現行の公開鍵ｘについて、ｘが所有する金額、および場合によっては追加情報Ｓｒ＝．．．，（ｘ，ａｘ（ｒ），．．．），．．．を明記するタプルのリストからなることを思い出そう。システム内の鍵が所有するマネーの金額は動的に変化するので、それをできるだけ効率的に追跡し続ける必要がある。
【０６６７】
今までのところ、ビットコインと同様に（そのステータス情報はかなり異なるが）、現行のステータスは、認証されるのではなく、支払の認証済み履歴から推論される。ブロックツリーは、ラウンドｒでステータスＳｒを証明できる能力を保証するわけではない。実際には、ブロックツリーにより、Ｂｒの前のブロックＢｉの支払集合ＰＡＹｉは、Ｂｒに関連して効率的に証明できるであろう。しかし、ステータスＳｒを証明するためには、一般に、Ｂｒの前のすべてのブロックの支払集合を証明可能に得るべきであろう。そのため、Ｓｒを知らないか、またはそれを知っているが、その現行の値の確固たる証拠を受け取りたい他のユーザまたはエンティティに証明者Ｐが証明するための、効率的な方法が必要である。
【０６６８】
具体的には、このような方法は、新たなユーザ、またはしばらくオフラインでいたユーザにとって、現行のシステムのステータスに追い付くことを容易かつセキュアにするであろう。
【０６６９】
ここで、このような方法のステータスツリーを提供しよう。
【０６７０】
ステータスツリー：  第１の方法
ステータスツリーＳＴｒは、ラウンドｒ−１の終わりに、ＰがステータスＳｒの値を効率的に証明することを可能にする特殊な情報構造である。
【０６７１】
実際、ＳＴｒは、全ユーザのステータスを証明しなくても（ましてやブロックシーケンス全体Ｂ０，．．．，Ｂｒ−１を提供しなくても）、Ｐが、任意の候補ユーザｉ∈ＰＫｒについて、ラウンドｒの始めにｉが所有している正確な金額ａｉｒを効率的に証明することを可能にする。事実、その人達が以前にマネーを持っていたことを確認するには、例えば、その人達と交渉を開始するには、あるユーザにとって、ごく少数のユーザ（例えば、当該あるユーザが支払を受けると考える人達）のステータスを正確に知ることが重要であろう。ユーザｉにとって、自分自身のａｉｒの値の証拠を受け取ることは、例えば、借入をするため、交渉で真剣に受け取られるため、または発注を出すために、さらに有用であろう。
【０６７２】
まず、Ｐが、ブロックシーケンスＢ０，．．．，Βｒ−１の全体を知っており、少なくともユーザおよびエンティティのグループによって広く信頼されていると仮定する。この場合、Ｐは次のことを行う。
【０６７３】
・支払集合シーケンスＰＡＹ０，．．．，ＰＡＹｒ−１を取得（例、検索）し、
・ユーザの集合ＰＫｒを計算し、
・少なくともｎｒ＝｜ＰＫｒ｜のリーフを有するマークル木Ｔｒを構築し、当該マークル木Ｔｒの最初のｎ個のリーフはｎ人のユーザ全員のステータス情報を格納し、各リーフは１人のユーザの情報を格納する（他のリーフは、もしあれば、リーフが「空」であることを意味する特殊なストリングｅを格納してもよい）し、および、
・好ましくは電子署名されているＴｒのルート値Ｒｒを、少なくとも別のエンティティに利用できるようにする。
【０６７４】
次に、あるユーザｘ∈ＰＫｒのステータスについて誰かがＰに尋ねる任意のときに、ｌｘがｉのステータス情報を格納している場合、Ｐはその人に、リーフｌｘに格納されている値の、Ｔｒにおける認証経路を提供する。
【０６７５】
重要なことに、Ｒｒを計算し電子署名した後で、Ｐは、あるユーザのステータスに関する問い合わせに回答するために、もはやそこにいる必要はない。実際に、同様にＴｒを知る任意の他のエンティティＰ’が、エンティティＶからの、ｘに関する問い合わせに回答できるであろう。事実、Ｐ’は、同じ電子署名されたルート値Ｒｒ、ｘに関するステータス情報、およびＰがＶに提供したであろう後者の情報の同じ認証経路をＶに提供できるであろう。したがって、ＶがＰを信用している場合、たとえＶがＰ’を信用していなくても、Ｐ’によって提供される回答を検証することができる。事実、報告される認証経路がマークル木ＴｒのルートＲｒに関連してｘのステータスが正当であることを保証するので、また、ＲｒはＰによって電子署名されるので、Ｖは、ｘに関するステータス情報の真正性を検証することができる。Ｖは、Ｐを信用している限り、Ｐ’を信用する必要はない。
【０６７６】
このように、Ｐは、Ｒｒの自分の電子署名を公表して（または別のエンティティＰ’に利用できるようにして）、証明可能な形で、他者（Ｐ’）にステータスの質問に回答させてもよい。
【０６７７】
ここで、この第１の方法の以下の性質を強調しておきたい。
【０６７８】
１．  （「良いニュース」）
Ｐは、各ラウンドｒで一からＴｒを計算する必要がない。
【０６７９】
実際、ユーザｘ∈ＰＫｒのステータスがどこに保管されているかは問題ではないため、前のマークル木Ｔｒ−１を計算し保管していれば、Ｐは、新たなブロックＢｒの支払集合ＰＡＹｒを知った後に、Ｔｒ−１からＴｒを計算することができる。本質的に、ＰＡＹｒがｋ個の支払を有する場合、Ｐはたかだか２ｋ人のユーザのステータス情報（すなわち、ＰＡＹｒにおける各支払の支払人および受取人のステータス情報）を更新し、たかだかｋ人の新たなユーザのステータス情報を初めて挿入すればよい（単純にするためにのみ、ＰＡＹｒにおける各支払は、たかだかもう１人のユーザをシステムに導入することができると仮定する）。
【０６８０】
ブロックツリーの場合と同様に、各新たなユーザのステータスは、次の空のリーフに挿入することができる。さらに、Ｐが既存ユーザｉのステータスを更新する度に、Ｐは、ｉのステータスを格納しているリーフからルートまでの経路で内容のみを変更する必要がある。この経路は、ｎ＝｜ＰＫｒ｜の場合、たかだか
【数４１４】
2019519137.tif 000416
の長さで、たかだかハッシュと同じだけの数を必要とする。本質的に、新たに追加される各ユーザにも同じことがいえる。ユーザの数ｎは非常に大きいかもしれないが、ｋ、すなわち、所与のラウンドで取引するユーザの数はおそらく小さいであろうことに留意されたい。また、Ｔｒ−１からＴｒを更新するには、
【数４１５】
2019519137.tif 000417
ハッシュのみが必要である。このことは、一からＴｒを計算するよりも実に有利であり、一から行うと、ほぼｎ個のハッシュが必要になる。
【０６８１】
２．  （「悪いニュース」）ユーザ
【数４１６】
2019519137.tif 000418
に関して尋ねられる場合、Ｐ／Ｐ’は、
【数４１７】
2019519137.tif 000419
を証明することはできない。
【０６８２】
実際、あるＶがラウンドｒでユーザｘのステータスに関して尋ねる場合、ＰおよびＰ’はいずれも、ｘがそのラウンドでシステムにいなかったためにｘに関するステータス情報が存在しないことを、Ｖに対して容易に証明することはできない。
【０６８３】
ＰまたはＰ’は、Ｔｒの各リーフｌの内容をＶに具体的に述べることができる。この大域的情報から、Ｖは、（ａ）ｘのステータスを含むリーフがないかどうかをチェックし、（ｂ）これらのリーフの内容に対応するマークル木のルート値を再構築し、および（ｃ）そのように計算した値が、Ｐによって電子署名されたルート値Ｒｒと一致するかどうかをチェックすることができる。しかし、このような大域的情報は非常に大きく、伝送するのが簡単ではないかもしれない。
【０６８４】
（少なくともまだ）存在していないユーザに関する問い合わせに対して信用できる回答を容易に提供できないことは問題ではないだろう。（例、ユーザの総数が大きすぎないため。）この場合、第１の方法でうまくいく。しかし、万が一それが問題になるなら、我々は別の方法を提案する。
【０６８５】
ステータスツリー：第２の方法
ここでも、ＰがブロックシーケンスＢ０，．．．，Ｂｒ−１の全体を知っていると仮定する。すると、第２の方法では、Ｐは次のことを行う。
【０６８６】
・支払集合シーケンスＰＡＹ０，．．．，ＰＡＹｒ−１を検索し、
・ユーザの集合ＰＫｒを計算し、
・すべてのユーザｉ∈ＰＫｒのステータス情報（ｉ，ａｉｘ）を計算し、
・ｎ個のステータス情報ペアを最初のエントリーに従って（例、そのユーザの辞書式順序に従って）順序付けし、
・第１リーフがＰＫｒ内の第１ユーザのステータス情報を含み、第２リーフが第２ユーザのステータスを含む等のマークル木Ｔｒを構築し（追加リーフは、もしあれば、ストリングｅを含む）、および、
・Ｔｒのルート値Ｒｒに電子署名し、この署名を利用できるようにする。
【０６８７】
この第２の方法は、別の（必ずしも信頼されていない）エンティティＰ’が個々のユーザのステータスに関する質問に確実に回答することを可能にし続けるが、性質１および２に関連する点を「覆す」ことに留意されたい。すなわち、以下の通り。
【０６８８】
１’．（「悪いニュース」）
これまでのようにＴｒ−１を使用してＴｒを容易に構築するのは簡単ではない。
【０６８９】
そうなるのは、ここでは、Ｔｒのリーフはユーザに従って順序付けされたユーザのステータス情報を含み、新たなユーザを挿入することが問題をはらむことになるためである。１人の新たなユーザを、例えば、リーフの中央に挿入する必要がある場合、リーフの半分の内容を変更しなければならない。
【０６９０】
２’．（「良いニュース」）
ＰまたはＰ’は、ユーザ
【数４１８】
2019519137.tif 000420
が実際にＰＫｒに所属していないことを証明することができる。
【０６９１】
ラウンドｒでシステムにいなかったユーザｘのステータスに関してＶが尋ねる場合、信頼されていないＰ’でも、Ｐによって認証されたルート値Ｒｒに関連して、２つの連続するリーフの内容の認証経路を提供することができ、ｉ’＜ｉ＜ｉ”になるように、一方はユーザｉ’に関するステータス情報を格納し、他方は別のユーザｉ”のステータス情報を格納している。
【０６９２】
Ｖは、２つの認証経路が２つの連続するリーフの内容のものであると実際に判定できることに留意されたい。そうなるのは、同じ値へハッシュ化する２つの異なるストリングを見つけることは実際上不可能であるため、２つのストリングａおよびｂがあるとすると、Ｈ（ａ，ｂ）≠Ｈ（ｂ，ａ）になる。したがって、ｈ＝Ｈ（ａ，ｂ）とすると、ｈは、「ａの後にｂがくる」ハッシュであり、その逆ではない、と判定することができる。このことは、マークル木Ｔｒにおいては、値ｖｘの認証経路は、値ｖｘが何であるかだけでなく、それがＴｒのリーフｘに格納されていることも含意する。
【０６９３】
例えば、図１．Ｂを考えてみる。そのマークル木では、値ｖ０１０の認証経路は（ｖ０１１，ｖ００，ｖ１）である。その認証経路を使用してｖ０１０を検証するためには、次のハッシュ化を順に計算し、
（ａ）ｈ１＝Ｈ（ｖ０１０，ｖ０１１）、
（ｂ）ｈ２＝Ｈ（ｖ００，ｈ１）、
（ｃ）ｈ３＝Ｈ（ｈ１，ｖ１）、
次に、ｈ３が実際にルート値ｖεと一致するかどうかをチェックする。
【０６９４】
Ｈ（ｘ，ｙ）≠Ｈ（ｙ，ｘ）であるので、
ハッシュ化（ａ）は、ｖ０１０が、どのようなノードがｈ１を格納していても、その０子に格納されていることを証明し、
ハッシュ化（ｂ）は、ｈ１が、どのようなノードがｈ２を格納していても、その１子に格納されていることを証明し、
ハッシュ化（ｃ）は、ｈ２が、どのようなノードがｈ３を格納していても、その０子に格納されていることを証明することに留意されたい。
【０６９５】
したがって、ｈ３がルートで格納されていることをチェックしたので、Ｖ０１０はリーフ０１０に格納されていなければならず、これは実際にそうである。
【０６９６】
したがって、Ｖが、Ｐが各ユーザｉ∈ＰＫｒについて、ｉの形成時のステータスをＴｒのｉ番目のリーフに格納したことを信用し、さらに、あるリーフがユーザｉ’＜ｉのステータス情報を含むという証明、および次のリーフがユーザｉ”＞ｉのステータス情報を含むという証明を確認する場合、Ｖは、
【数４１９】
2019519137.tif 000421
であるということを安全に結論づけることができる。
【０６９７】
（また、こうした認証経路は多くの値を共有することがあり、したがって、両方の認証経路の全体をＶに伝送する必要はないことにも留意されたい。）
【０６９８】
性質１’は問題ではないかもしれない。（例、Ｐは一からＴｒを完璧に構築することができるため。）これが該当する場合、第２の方法でうまくいく。
【０６９９】
そうでなければ、Ｐが、Ｔｒ−１からＴｒを容易に構築すること、および、ユーザ
【数４２０】
2019519137.tif 000422
が実際にＰＫｒに所属していないことを容易に証明すること、の両方を可能にする方法が必要である。
【０７００】
ここで、この方法を提供する。
【０７０１】
ステータスツリー：第３の方法
探索木は、概念上、順序集合からの値をバイナリ（単純化のためにのみ！）ツリーのノードに動的に格納するデータ構造であることを思い出そう。通例、このようなツリーでは、ノードは１つの値を含む（または空である）。このようなデータ構造によって動的にサポートされる動作には、所与の値ｖの挿入、削除および探索を含む。（値ｖが存在しない場合には、例えば、返信される回答が⊥であるため、そのことも判定することができる。）
【０７０２】
最初に、探索木は空のルートのみから構成される。削除される値よりも挿入される値が多くなると、ツリーが成長する。ｎ個のノードがあるバイナリツリーの深さはせいぜいｌｏｇ  ｎであり（ツリーがいっぱいの場合にこうなる）、また、たかだかｎ−１（ツリーが経路である場合にこうなる）である。しかし、探索木の深さが小さいことは保証されていない。最悪の場合、ｎ個の特定のノードを特定の順序で挿入すると、結果として、探索木が深さｎからなることがある。
【０７０３】
「平衡」探索木は、現在格納されている値の数がｎである場合、木の深さが短い、すなわち、ｎの対数であることを保証する。ｎ個のノードのある平衡探索木では、前述した３つの動作のそれぞれを、２つの値の比較、２つのノードの内容の交換、またはノードの親／右の子／左の子の内容を調べること等の、Ｏ（ｌｏｇ  ｎ）基本ステップで行うことができる。
【０７０４】
平衡探索木のいくつかの例が今までに知られている。特によく知られている例が、ＡＶＬおよびＢツリーである。いくつかの例では、値はツリーのリーフにのみ格納することができる（対して、他のすべてのノードは、所与の値を本当にツリーに格納できる場合に当該所与の値を位置付けることのできる「指向性情報」を含む。）他の例では、値は任意のノードに格納することができる。以下に、より一般的なケース、および、単純化のみを目的として、平衡探索木の操作が周知かつ決定論的アルゴリズムであることを仮定する。
【０７０５】
しばらくの間、ＰＫｒの全ユーザのステータス情報を取得した証明者Ｐが、ラウンドｒの平衡ステータスツリーＴｒを一から構築したいと仮定する。すると、当該証明者Ｐは次のように行為する。
【０７０６】
・Ｐは、ｎ＝｜ＰＫｒ｜のノードを有する平衡探索木Ｔｒを構築し、ユーザをＰＫｒに格納する。
最悪の場合、各挿入はＯ（ｌｏｇ  ｎ）基本ステップを取るため、この操作はたかだかＯ（ｎ  ｌｏｇ  ｎ）基本ステップを取ることに留意されたい。（実際、Ｐは、ユーザをＴｒに挿入する前に当該ユーザをＰＫｒで順序付けることによって、追加の効率をいくらか得たいかもしれない）。
【０７０７】
・Ｐは、Ｔｒにおいて、格納されている各ユーザｉを、ｉ’のステータス情報に置き換える：（ｉ，ａｉｘ）。
すなわち、Ｐは、ＰＫｒ内のユーザのステータス情報をＴｒに格納し、ユーザｉに関するステータス情報に関して挿入／削除／探索のすべてを、ユーザｉに関する挿入／削除／探索を介して行うことができるようにする。
（言い換えると、Ｔｒは、そのノードに格納される最初のエントリーを介して探索可能な平衡木である。）
【０７０８】
・Ｐは、リーフのないすべてのノードがちょうど２つの子を持つようにＴｒを「完了する」。
バイナリツリーでは、各ノードはたかだか２つの子を有する。したがって、リーフのないノードｘは１つしか子を持てないであろう。一般性を損なうことなく、これをｘの左の子ｘ０と仮定する。この場合、Ｐは概念上、右の子ｘ１にｘを与え、そこにストリングｅを格納する。
【０７０９】
・Ｐは、Ｔｒの各ノードｘにハッシュ値ｈｖｘを関連付けるので、リーフから上方に計算される。
ｘがリーフである場合、ｈｖｘは、ｘに格納されている値ｖｘのハッシュである、すなわちｈｖｘ＝Ｈ（ｖｘ）である。
ｘが、値ｖｘを格納している深さｄのノードである場合、ｈｖｘ＝Ｈ（ｈｖｘ０，ｈｖｘ１，Ｈ（ｖｘ））である。
最終的にＴｒのルートεに関連付けられているハッシュ値は、
【数４２１】
2019519137.tif 000423
である。
【０７１０】
・ＰはＲｒに電子署名する。
【０７１１】
そのように得られたツリーＴｒを、マークル平衡探索木と呼ぶ。このようなＴｒは平衡探索木であり、したがって、Ｔｒで探索／挿入／削除のアルゴリズムが機能する。同時に、Ｔｒは一般化されたマークル木であるが、それでもなおマークル木である。通常のマークル木は、情報値、すなわち、保護する必要のある値をリーフのみに格納し、内部のノードには、保護値、すなわち、木を「保護する」ために使用されるハッシュ値のみを格納する。マークル木Ｔｒは、各ノードｘに、ｖｘで表される情報値と、ｈｖｘで表される保護値との両方を格納する。
【０７１２】
ルート保護値Ｒｒに関連し、情報値ｖｘが実際に何であるかの証明は、ｈｖｘ０、ｈｖｘ１、Ｈ（ｖｘ）、およびｘからＴｒのルートまでの経路内のノードの兄弟であるすべてのノードｙの値ｈｖｙから（ボトムアップ順で）なる認証経路を含む。
【０７１３】
ここで、Ｐが一からＴｒを計算する必要がないことを示そう。実際、Ｐは前のラウンドのマークル平衡探索木Ｔｒ−１が利用できると仮定する。すると、新たなブロックＢｒの取得後、Ｐは、Ｂｒの支払集合ＰＡＹｒ内の各支払
【数４２２】
2019519137.tif 000424
について次のように行為する。
【０７１４】
【数４２３】
2019519137.tif 000425
が、既存ユーザが所有する金額を修正する場合、Ｐは、それが格納されているノードｘのそのユーザのステータス情報を更新し、さらに、ツリーをマークル化し直す。これは、ｘからルートまでの経路に沿ったｈｖｙの値の再計算を単に伴うだけであり、したがって、ｎがユーザの数である場合、たかだか
【数４２４】
2019519137.tif 000426
ハッシュの再計算である。
【０７１５】
【数４２５】
2019519137.tif 000427
が、マネーの初期金額ａｉを有する新たなユーザｉを参加させる場合、Ｐは、Ｔｒにステータス情報（ｉ，αｉｒ）を挿入する。Ｔｒは平衡探索木であるため、これにはＯ（ｌｏｇ  ｎ）基本ステップしか伴わず、たかだか対数的に多いノードにしか影響しない。その後、Ｐはツリーをマークル化し直す。
【０７１６】
Ｔｒの構築後、Ｐは、Ｒｒの自分の電子署名を公表するか、または、Ｐ’を信用することもあればしないこともある様々な検証者Ｖからの問い合わせを取り扱うＰ’にそれを与える。
【０７１７】
ユーザｉに関するＶの問い合わせに回答するために、Ｐ’は次のように行為する。
【０７１８】
・Ｐ’は、Ｔｒでユーザｉを探索するのと同じアルゴリズムを実行する。
この探索は、Ｔｒの、たかだかＯ（ｌｏｇ  ｎ）ノードの内容の検索に関わり、検索された各内容は、その内容が次に検索される必要のあるノードを決定する。
【０７１９】
・アルゴリズムがノードｘの内容ｖｘを検索する場合は必ず、Ｐ’は、Ｒｒに関連して、ｖｘの証明を提供する。
【０７２０】
したがって、Ｖは、Ｐ’によって提供されるすべてのノードｘの内容が正当であることをチェックするために、ＰによるＲｒの電子署名と、受け取った証明とを使用することができる。したがって、Ｖは事実上マークル木Ｔｒで同じ探索アルゴリズムを実行し、ｉ∈ＰＫｒである場合、ユーザｉのステータス情報を正確に検索する。そうでなければ、
【数４２６】
2019519137.tif 000428
である場合（すなわち、探索アルゴリズムが記号⊥／ストリングｅを返す場合）、Ｖは、ｉがＰＫｒのユーザではなかったことを確信する。
【０７２１】
アルゴランドにおける、信用あるＰの実現
多くの人によって信頼される個人の証明者Ｐがいない場合、それを「構築」することが重要になってくる。
【０７２２】
アルゴランドでは、ラウンドｒのすべてのステップｓで、ＳＶｒ，ｓ内の検証者の（重み付けした）過半数が誠実であることを確信させられることに留意されたい。したがって、ここで我々は、検証者がＰのタスクを実行できることを確実にする！
【０７２３】
より正確には、以下の通りである。
【０７２４】
・ブロックの他のフィールドに加えて、（例、前述した３つの方法のいずれかを使用して）ラウンドｒの潜在的検証者ｉもステータスツリーＴｒを生成する。当該潜在的検証者はｉ通例それまでのブロックチェーンＢ０，．．．，Ｂｒ−１を知っているので、容易にこれを行うことができることに留意されたい。
【０７２５】
・ｉは、Ｔｒのルート値Ｒｒも含むブロックＢｉｒを提案する。
例えば、Ｂｉｒ＝（ｒ，ＰＡＹｒ，ＳＩＧｉ（Ｑｒ−１），Ｒｒ，Ｈ（Ｂｒ−１））。
【０７２６】
・検証者（具体的には、ラウンドｒの第２ステップの検証者）は、ラウンドの、リーダーによって提案されるブロックが有効かどうかをチェックし、これには第４成分、すなわち、ステータスツリーＴｒのルート値Ｒｒ、が有効かどうかのチェックも含む。
実際、これらの検証者はそれまでのブロックシーケンスＢ０，．．．，Ｂｒ−１を知っているため、身元確認されたリーダーによって提案されるブロックが採用されると仮定すると、ステータス情報がラウンドｒ後にどうなるかを判定することができる。
【０７２７】
・ＢＡ合意に達した後、ラウンドｒの正式なブロックは正当なルート値Ｒｒを含み、また、Ｂｒは正規のクレデンシャルを有する十分に多くの検証者によって電子署名されているので、Ｂｒの証明書もＲｒを認定する。
新たな正式なブロックは空、すなわちＢｒ＝Ｂεｒであるかもしれないことに留意されたい。このような空のブロックは次の形式をとり、
【数４２７】
2019519137.tif 000429
新たなブロックが空のブロックであるときには全ユーザのステータス情報が変化しないということに対応する。
【０７２８】
要するに、ＰによるＲｒの電子署名はＢｒの証明書によって置き換えられる。いずれにしてもＲｒは認証されるので、信用されていない証明者Ｐ’でも、前と同様、Ｒｒに関連して、ラウンドｒですべてのユーザｉのステータス情報を証明することができるであろう。
【０７２９】
新たなブロックが生成されるときにそれを適時に知る人であれば誰でも、採用されたステータスツリーが「容易に更新可能な」タイプであるときは必ず、前のＴｒ−１からより容易にＴｒを構築することができる。
【０７３０】
１１  代理検証者および潜在的検証者
代理検証者
ユーザｉがＳＶｒ，ｓのメンバーとして選択される確率は、他のユーザがｉに「投票する」マネーに基づくこともできる（例、ここでも、当該マネーに比例して）。ユーザＵは、通常通り、自分が行う支払の授受のすべてを支配し続けたいかもしれない。しかし、当該ユーザＵは、リーダーおよび／または検証者として行為する権利および義務を別のユーザｉに委任したいかもしれない。この場合、またこの目的のためにのみ、このようなユーザＵは、ｉを、リーダー／検証者に用の自分の代理人にしたいことを示すことがある。ユーザＵは、実際に、リーダー／検証者としての義務を１人または複数人のユーザｉに委託するかもしれない。しばらくの間、かつ、一般性を損なうことなく、Ｕが、リーダーおよび検証者用に１人の代理人ｉを持つことを選択すると仮定しよう。
【０７３１】
Ｕがラウンドｒで自分の代理人としてｉを選任するためには、いくつかの（好ましくは、電子署名された）方法がある。例えば、追加の仕組みを導入しないように（それは排除されない）、当該Ｕは、ｉに対する支払Ｐによって（例、Ｐの非センシティブフィールドＩを使用して）、または別のユーザに対する支払Ｐ’によってそうすることができる。このような支払ＰまたはＰ’が一旦ブロックＢｒの支払集合ＰＡＹｒに挿入されると、コミュニティ全体がＵの選択を実現し、ｉがＵの代理人として行為することが有効となる。
【０７３２】
Ｕがラウンドｒで自分の代理人としてｉを選ぶ場合、この選択は、Ｕが以前に行ったいかなる選択にも優先し、ｉは、Ｕが異なる選択をするまでＵの代理人であり続けることが好ましい（脚注４８参照）。ユーザＵは、システムに加入するまさにその瞬間から自分の代理人としてｉを選任することもできる。例えば、Ｕが別のユーザからの支払
【数４２８】
2019519137.tif 000430
を介してシステムに加入することを予定する場合、Ｕはそのユーザに対して、Ｕが自分の代理人としてｉを選択することを示すＵの署名を
【数４２９】
2019519137.tif 000431
に含めるよう求めることができる。
【０７３３】
脚注４８
当然、ここで、また他の場所でも、曖昧さおよびタイは、ある所定の方法でブレークされる。例えば、Ｕが自分のマネー全額を潜在的検証者ｉに投票することを示すＵの署名と、ｉが自分のマネーの全額を異なる潜在的検証者ｊに投票することを示す別の署名とをＰＡＹｒが含む場合、Ｕの代理人の選択は無視されるか、または代わりに、対応する署名入りのステートメントが、ｊに対応するものに（例えば、辞書式順序で）先行する場合、Ｕは事実上ｉを選ぶ。
【０７３４】
Ｕ（また、場合によっては他のユーザ）によってｉにそのように投票されたマネーと、ｉが直接所有するマネーは、平等に処理されることができる。例えば、検証者が、ラウンドｘで所有されるマネーに従ってＰＫｘ内のユーザから選択されることになった場合、Ｕ（および、自分のマネーを代理人に「投票」することを選んだ他の全ユーザ）は、この選択の目的上は０のマネーを有すると見なされたであろうが、ｉが選択される元となったマネーはａｉｘ＋ＶＭｉｘであろう。ここでａｉｘは、ｉがラウンドｘで個人的に所有しているマネーであり、ＶＭｉｘは、ラウンドｘでｉに（全ユーザによって）「投票された」マネーの総額である。例えば、Ｕがそのラウンドでｉに自分のマネーを投票する唯一のユーザである場合、ＶＭｉｘ＝ａＵｘである。ラウンドｘでｉに自分のマネーを投票するユーザの集合がＳであった場合、ＶＭｉｘ＝Σｊ∈Ｓａｊｘである。当然、ｉが所有するマネーと、ラウンドｘでｉに投票されるマネーとに従ってｉを選択する１つの方法は、
【数４３０】
2019519137.tif 000432
の確率で、秘密暗号くじによってｉを選択することからなる。
【０７３５】
ｉが直接所有するマネーを、ｉに投票されるマネーとは別に処理することも可能である。例えば、ｉは、ｃが所与の係数である場合、マネーの金額ａｉｘ＋ｃ・ＶＭｉｘに従って選ばれることができるであろう。例えば、ｃ＝０．５のとき、ｉが直接所有するマネーは、当該ｉに投票されるマネーの２倍に上る。
【０７３６】
ユーザＵが、自分の所有するマネーの一部のみをｉに投票することも可能である。例えば、Ｕは、自分のマネーの３／４のみをｉに投票することを選び、ＳＶｒ，ｓに自分自身を選択するために重要な残高を有する。この場合、Ｕは、ＶＭｉｘに０．７５ａＵｘしか貢献せず、Ｕは、確率０．２５ａＵｘでＳＶｒ，ｓに選択される。
【０７３７】
ユーザｉがＳＶｒ，ｓに属する選択がなされる結果として当該ユーザｉに提供される報酬がある場合があり、ｉは、自分のマネーの一部を当該ｉに投票したユーザと、その報酬を分け合うことができる。例えば、ｉがブロックのリーダーになる場合、当該ｉは報酬Ｒを受領するかもしれない。この場合、この報酬の一部はＵに対応するかもしれない。例えば、Ｕがｉに投票するマネーがｍである場合、ｉがＵに支払うＲの部分は、
【数４３１】
2019519137.tif 000433
のようになるかもしれない。
【０７３８】
ユーザが代理人を選んで変更できるということは、代理人を誠実であり続けさせる役に立つであろう。例えば、Ｕが、自分のマネーをｉに投票するが、ｉがブロックＢｒのリーダーであるときにはいつであれ、ＰＡＹｒの支払集合があまりに頻繁に空である、または「乏しい」と疑う場合、Ｕは自分の代理人を変更することができる。
【０７３９】
普通ユーザＵも、自分のマネーの異なる割合を複数の代理人の各人に投票して、複数の代理人を指定することができる。当然、所定の手続きを使用して、Ｕが、自分が実際に持っているよりも多くのマネーを投票することを防止する。
【０７４０】
代理人を選ぶ別の方法は、ユーザＵが個別の公開・秘密電子署名ペア（ｐｋ’Ｕ，ｓｋ’Ｕ）を生成し、ｐｋ’Ｕに、リーダー／検証者の選択のためにＵを代表する権限を移譲することである（例、ブロックチェーン内のブロックに入る電子署名による）。すなわち、ｐｋ’ＵはＵの代わりに支払を行うことはできない（事実、ｐｋ’Ｕはマネーを直接有することはできない）が、Ｕの代わりにリーダーまたは検証者として行為することができ、Ｕが関連するラウンドｘで所有するマネーに応じて、リーダー／検証者として選択されることができる。例えば、ｐｋ’Ｕは
【数４３２】
2019519137.tif 000434
の確率で選択されることができる。（これは、Ｕが自分のリーダー／検証者としてのすべての権利／権限を委任することを仮定しているが、当然、前述したように、Ｕは自分の権利／権限の一部のみを委任することができる。）自分の代わりに別のユーザまたはエンティティｉにリーダー／検証者を務めることを委任するために、Ｕはｉにｓｋ’Ｕを与える。このことは、ｐｋ’Ｕが「稼ぐ」かもしれない報酬をＵとｉとの間で（どのように決定された比率であっても）分割する方法を非常に明確にする。なぜなら、前述したように、Ｕにｉの選択確率に貢献させるのではなく、直接選択されるのはｐｋ’Ｕ自体だからである。
【０７４１】
Ｕは、自分で（ｐｋ’Ｕ，ｓｋ’Ｕ）を生成する必要はないことに留意されたい。例えば、ｉが（ｐｋ’Ｕ，ｓｋ’Ｕ）を生成し、Ｕが自分の代理人としてｉを選びたい場合に、署名するためにＵにｐｋ’Ｕを与えることができる。
【０７４２】
具体的には、ユーザＵは、自分の代理人として、銀行ｉを、前述したアプローチのいずれかで選ぶことができる。代理人を選ぶことの１つの利点は、典型的なユーザよりも代理人の方がはるかに高速でセキュアな通信ネットワークを有する可能性があることである。すべての普通ユーザが正規の代理人を選ぶ（または選ぶよう要求された）場合、ブロックの生成ははるかに高速化するであろう。そして、ブロックは普通ユーザがアクセス権を有するネットワークで伝播されることもできる。そうでなければ、ｉがＵを代理する場合、当該ｉは、Ｕに新たなブロックを直接与えるか、または、Ｕが関心を抱いている支払がブロックチェーンに入った証拠をＵに与えることができる。
【０７４３】
潜在的検証者
これまでは、アルゴランドで、各ユーザｉが、あるラウンドｒの検証者またはリーダーとして選択されることができるということであった。しかし、当業者によって、上記の点は制約ではないと容易に認識できる。実際、アルゴランドは、非許可でいつでも参加し、通常通り支払の授受（より一般的にはトランザクション）を行うことのできる集団ユーザと、ラウンドのリーダーと検証者とがその中から選択される、特殊クラスの潜在的検証者とを有することができる。これら２つの集合は重複することが可能であり（その場合、少なくとも一部の潜在的検証者は支払の授受を行うこともできる）、または別々であることが可能である（その場合、潜在的検証者は、選択された場合、リーダーまたは検証者としてのみ行為することができる）。ある意味では、前のセクションで述べたようにアルゴランドでは、各ユーザが潜在的検証者である。アルゴランドは、２つの別々のマネーの金額を有するユーザまたは潜在的検証者ｉも有する場合があり、そのうちの一方のみが、ｉがリーダーまたは検証者として選択されるために重要である。
【０７４４】
潜在的検証者のクラスは許可型にすることができる。この場合、潜在的な検証者の所与の集合Ｓの中から検証者／リーダーｉを選択する確率は、ｉが所有するマネーの金額に依存する必要はない。例えば、ｉは、均一な確率の暗号くじによってＳから選択することができる。
【０７４５】
代わりに、すべての潜在的検証者は常に選択することができる（および／または、そのうちの１人のみがラウンドリーダーとして選択される）。この場合、当該すべての潜在的検証者は、プロトコルＢＡ★を使用して新たなブロックに関して合意に達することができ、またはより一般的には、当該すべての潜在的検証者は、効率的であってかつ好ましくはプレーヤ代替性のプロトコルを使用することもできる。
【０７４６】
１２  許可型アルゴランド
このセクションでは、プライバシーとトレーサビリティとのバランスをとり、新たな種類のインセンティブを可能にし、銀行または他の外部エンティティに新しい非支配型の役割を与える、アルゴランドの許可型バージョンを論じる。この許可型バージョンは、以下に挙げる伝統的な概念に依拠する。
【０７４７】
１２．１  電子証明書
システムにユーザを登録する権限を有する、ある当事者Ｒの公開鍵ｐｋが、公開で知られていると仮定する。すると、ユーザｉの身元を確認し、公開鍵ｐｋｉが本当にｉに属していることを検証した後、Ｒは、電子署名Ｃｉを発行して、ｐｋｉがシステムの適法な公開鍵であるだけでなく、ｉに関する何らかの適切な追加情報ｉｎｆｏｉが成り立つことも証明してもよい。この場合、証明書は、本質的に次の形式である。
【数４３３】
2019519137.tif 000435
【０７４８】
ｉｎｆｏｉに明記される情報は、かなり多様であってもよい。例えば、システム内のｉの役割、および／または証明書の発行日を明記することができる。失効日、すなわち、それより後はＣｉに依拠してはならない日を明記することもあるかもしれない。このような日が明記されていない場合、Ｃｉは無期限である。証明書は、別の用途でも別の形でも長く使用されてきた。
【０７４９】
１２．２  （無期限）証明書を有するアルゴランド
アルゴランドでは、各ユーザｉ∈ＰＫｒが、適切なエンティティＲ（例、予め指定された集合内の銀行）によって発行される電子署名Ｃｉを有することを要求されることがある。ラウンドｒの支払
【数４３４】
2019519137.tif 000436
を別のユーザｊに行う場合、ｉは、
【数４３５】
2019519137.tif 000437
に添えてＣｉおよび／またはＣｊを転送するか、または
【数４３６】
2019519137.tif 000438
自体にそのうちの一方または両方を含めることができる。すなわち、記号では、
【数４３７】
2019519137.tif 000439
になる。
【０７５０】
後者の実践を仮定すると、
・支払
【数４３８】
2019519137.tif 000440
は、その支払人とその受取人の双方の証明書も含む場合に限り、あるラウンドで有効と見なされ、したがってＰＡＹｒに加わることができる。
また、証明書に失効日ｒ＝［ｔ１，ｔ２］がある場合、ｔ２は、最も早い失効日よりも小さくなければならない。
・同時に、このような支払がＰＡＹｒに属する場合、それに対応するマネーの移転は無条件に実行される。
【０７５１】
無期限証明書の役割
ユーザｉの証明書Ｃｉが一旦失効するか、またはその失効前に（ｉが「財務的に健全な状態」である限り）、Ｒは、Ｃよりも失効日が先の、新たな証明書Ｃ’ｉを発行することができる。
【０７５２】
したがって、この場合、Ｒはｉのマネーに対して大きな支配力を有する。私的な使用のためにそれを没収することはできない（そうするにはｉの電子署名を偽造できなくてはならないため）が、ｉがそれを消費するのを防止することができる。実際、Ｃｉの失効日後のラウンドｒでは、ｉの支払はＰＡＹｒに加わることはできない。
【０７５３】
Ｒのこの権限は、適切なエンティティＥ（例えば、政府）の、ユーザの従来の銀行口座を凍結する権限に対応することに留意されたい。実際、従来の環境では、こうしたＥがｉのマネーを着服することもあるだろう。
【０７５４】
暗号通貨の主な魅力は、任意のエンティティＥがユーザをそのマネーから切り離すことがまさしく不可能であることである。したがって、すべての証明書が無期限であるアルゴランドの証明書ベースのバージョンで、この不可能性が保たれ続けることを強調したい。実際、ラウンドｒで別のユーザｊに支払を行いたいユーザｉは常に、ｊに対するラウンドｒの支払
【数４３９】
2019519137.tif 000441
に無期限証明書ＣｉおよびＣｊを含めることができ、ラウンドのリーダーｌｒが誠実な場合、
【数４４０】
2019519137.tif 000442
はＰＡＹｒに表示される。要するに、
「無期限証明書は、ユーザをそのマネーから切り離すために使用することはできないが、他の目的を達成するためには実際に非常に価値がある。」
【０７５５】
１２．３  （無期限）証明書による違法活動の防止
従来の小切手により行われる支払の支払人および受取人は、小切手を持つ誰によっても容易に身元を確認できる。したがって、小切手はマネーロンダリングまたは他の違法活動にとって理想的ではない。正規の登録機関によって発行される電子証明書をアルゴランドで使用して、ある所与のエンティティのみが、適切な状況に限り、ｉが望む支払をｉが行うことを妨げずに、所与の公開鍵ｐｋｉの所有者ｉの身元を確認することができることを確実にすることができるであろう。簡単な例を挙げてみよう。
【０７５６】
システム内には、複数の登録権限機関があるかもしれない。具体性のためにのみ、それを認可銀行とし、その公開鍵は別の上位の権限機関（その公開鍵は一般に知られている）によって一般に知られており（または、場合によっては証明書チェーンによって認定されている）、Ｇを、政府と呼ばれる特別なエンティティとする。
【０７５７】
電子公開鍵の所有者としてシステムに参加するために、ｉは、認可銀行のうちの１行から証明書Ｃｉを得る必要がある。それを得るために、公開・秘密署名ペア（ｐｋｉ，ｓｋｉ）を生成した後、ｉは認可銀行Ｂにｐｋｉの証明書の発行を依頼する。このような証明書を発行するために、Ｂは、何らかの識別情報ＩＤｉを作成するために、ｉの身元確認をすることを要求される（脚注４９参照）。そして、ＢはＨ（ＩＤｉ）を計算し、（好ましくは）それを証明書の別のフィールドにする。例えば、追加情報を無視して、Ｂは次の式を計算してｉに与える。
【数４４１】
2019519137.tif 000443
【０７５８】
脚注４９
「突っ込んで」いうと、こうしたＩｉは、ｉの氏名と住所、ｉの写真、ｉの同意書の電子署名（デジタルであった場合）を含んでもよく、または、ｉは自分の署名入りの同意書と一緒に写真に写ることができ、さらに、Ｉｉに入れるために写真をデジタル化する。銀行は、自行自体の保護および同様にｉの保護のために、Ｉｉが本当に正当であることの証拠となるｉの署名も取得して保管することもできる。
【０７５９】
Ｈはランダムオラクルであるため、誰も、Ｃｉから所有者のアイデンティティを取り出すことはできない。銀行だけが、ｐｋｉの所有者がｉであることを知っている。しかし、政府が、例えば、支払
【数４４２】
2019519137.tif 000444
の支払人を調査したい場合、関連する証明書Ｃｉと、Ｃｉを発行した銀行Ｂとの両方を
【数４４３】
2019519137.tif 000445
から検索し、さらに、然るべき権限（例、裁判所命令）によって、ｉの正当な識別情報ＩＤｉを作るようＢに求めるかまたは強制する。
【０７６０】
Ｈは衝突耐性であるため、銀行は、証明書に元々挿入されていたものとは異なる識別情報ＩＤ’ｉを明らかにすることはできないことに留意されたい。代替的に、Ｈ（ＩＤｉ）の代わりに、暗号法の用語で、ＩＤｉへの「コミットメント」を使用すれば十分である。
【０７６１】
ある具体的な代替案は、Ｃｉに、ＩＤｉの暗号Ｅ（ＩＤｉ）を、好ましくは一意に解読可能な秘密鍵または公開鍵暗号化スキームＥを使用して格納することである。具体的には、ＩＤｉは、銀行Ｂのみが知る鍵を用いて暗号化することができる。記号で表すと、Ｅ（ＩＤｉ）＝ＥＢ（ＩＤｉ）である。このように、政府は識別情報ＩＤｉを取り出すためにＢの助けを必要とする。
【０７６２】
代替的に、Ｅは、公開鍵暗号化スキームとすることもでき、ＩＤｉは、（対応する復号化鍵を知る唯一のものである）政府の公開鍵を使用して暗号化することもできる。記号で表すと、Ｅ（ＩＤｉ）＝ＥＧ（ＩＤｉ）である。この場合、政府はＩＤｉの取り出しにＢの助けを必要としない。実際、すべての支払の支払人および受取人のアイデンティティは、Ｇにとって透過的である。しかし、ＩＤｉからＥＧ（ＩＤｉ）を計算した政府と銀行とを除き、他の誰もＥＧ（ＩＤｉ）からＩＤｉを知ることはできない。また、暗号ＥＧ（ＩＤｉ）が確率論的である場合、ｐｋｉの所有者ｉが誰かを正しく言い当てた人でも、おそらく自分の推測を確認することはできないであろう。
【０７６３】
ｐｋｉに対応する秘密鍵ｓｋｉを知っているのはｉだけであるため、証明書Ｃｉが一旦発行されたら、ＢおよびＧのいずれも、ｉの電子署名に対する支配力を有さないことを強調しておく。加えて、
【数４４４】
2019519137.tif 000446
のみが
【数４４５】
2019519137.tif 000447
の一部であるため、ＢおよびＧのいずれも、ｉの支払
【数４４６】
2019519137.tif 000448
のセンシティブ情報
【数４４７】
2019519137.tif 000449
を理解することはできない。最後に、ランダムに選択された検証者でない限り、ＢおよびＧはいずれも、支払
【数４４８】
2019519137.tif 000450
の処理に関わらない。
【０７６４】
要するに、ユーザのプライバシーを完全に犠牲にしなくても、ビットコイン様のシステムに関して述べた法執行の懸念が解消する。実際、ＢとＧとを除き、ｉは、銀行、商店、ユーザ等の他の誰かに対する、ビットコインおよび同様のシステムで享受するのと同じ（疑似）匿名性を享受し続ける。
【０７６５】
最後に、より高度な暗号技術を使用することによって、適切な状況下でのユーザのトレーサビリティを維持しながら、ユーザのプライバシーを高めることも可能である（脚注５０参照）。
【０７６６】
脚注５０
例えば、最後のシナリオに注目すると、ｉが銀行Ｂから証明書Ｃｉ＝ＳＩＧＢ（Ｂ，ｐｋｉ，ＥＧ（ＩＤｉ））を一旦取得したら、異なる公開ｐｋ’ｉについて、ｉは別の証明書Ｃ’ｉ＝ＳＩＧＢ（Ｂ，ｐｋ’ｉ，Ｅ’Ｇ（ＩＤｉ））を取得することも可能であり、それについてＢは、ＩＤｉがＥ’Ｇ（ＩＤｉ）を復号化したものであることをもはや知らない。
【０７６７】
１２．４  銀行の新たな役割
アルゴランドにおける鍵の認定が、銀行の新たな役割である。銀行Ｂがその顧客のために容易に行うことのできる役割である。実際、Ｂは既に当該顧客を非常によく知っており、通例、彼らと随時コミュニケーションを取っている。顧客の中の一人の鍵ｉを認定することによって、Ｂは、単純だが価値ある（そして、場合によっては金銭的に報酬が得られる）サービスを行う。
【０７６８】
アルゴランドにおいて銀行Ｂが持ち得る別の役割は、顧客ｉによって正規に権限を与えられたＢは、ｉの従来の銀行口座から、ｉがアルゴランドに所有する電子鍵ｐｋｉにマネーを移転することができることである。（実際、Ｂおよび他のすべての銀行は「同じ為替レートで」そうしており、アルゴランドは、国の通貨を基盤とした、非常に分散された、便利かつ自己規制された支払システムとして使用することができる。）銀行Ｂがマネーをｐｋｉに移転するための１つの方法は、Ｂがアルゴランドに所有する電子鍵ｐｋＢからｐｋｉに支払を行うことである。実際、銀行はその顧客よりも簡単に、国の通貨を公開取引所でアルゴランドに変換することができる（脚注５１参照）。
【０７６９】
脚注５１
さらに一歩踏み込むと、政府はアルゴランドにおいてマネーを印刷することも許される場合があり、それを、特に銀行に移転することもでき、または銀行が十分に規制されている場合には、一定のパラメータ内でアルゴランドマネーを生成することを銀行に許す場合がある。
【０７７０】
最後に、銀行は多くの場合信頼されているため、自分が行う支払を完全に管理するユーザｉは、当該ユーザｉの検証のインセンティブをＢと共有して、自分の代わりに検証者として行為することを銀行Ｂに委託することを望むかもしれない（脚注５２参照）。
【０７７１】
脚注５２
まさにそれを行うための「代理人」メカニズムは、付録「？？」に記載している。そのセクションは、特別に構築された通信ネットワークを用いたアルゴランドの実施態様に充てられている。しかし、そこに記載されている委託メカニズムは、基礎となるネットワークがどのようなものであろうとも採用することができる可能性がある。
【０７７２】
１２．５  小売店のみからの報酬
登録権限機関が銀行であるかどうかを問わず、また法執行の懸念が処理されているかどうかを問わず、アルゴランドの許可型展開は、所与の鍵ｐｋｉが商店に属していることを（例、その証明書Ｃｉ内で）識別することを可能にする。
【０７７３】
クレジットカードでの支払を現在受け付けている商店は、クレジットカード会社に対して支払わなければならない取引手数料を既に受け入れている。したがって、当該商店は、（数日ではなく数分以内に、また、はるかに議論の余地のない方法で支払われる方を好むことに加えて、）クレジットカードシステムの、通例、より高い取引手数料を支払うよりも、アルゴランドで１％の手数料を支払う方を好むかもしれない。
【０７７４】
したがって、証明書ベースのアルゴランドは次のことを確実にすることができる。
（１）全員が、商店に行われる支払の小さな割合のみの報酬を与え、なおかつ、
（２）検証者には、他のすべての支払も同様に処理することへのインセンティブが与えられる。
【０７７５】
例えば、Ａ’を、ＰＡＹｒの支払で小売店に支払われる総額とすると、最高潜在的報酬Ｒ’を計算できるであろう（例、Ｒ’＝１％Ａ’）。しかし、リーダーおよび検証者はまとめて金額全体Ｒ’を受け取るのではなく、ＰＡＹｒでの全支払の総数（または総額、もしくはそれらの組み合わせ）に連動して増えるＲ’の一部のみを受け取る。例えば、非常に単純にして、ＰＡＹｒでの支払の総数がｍである場合、分配される実際の報酬はＲ’（１−１／ｍ）となる。前と同様、これは、各小売店に支払われた金額から、一部である１％（１−１／ｍ）を差し引き、差し引かれたこの金額を、選ばれた公式に従ってリーダーと検証者との間で分割することによって自動的に行うことができる。
【０７７６】
１３  変型
いくつか考えられる、アルゴランドの変型を論じてみる。
【０７７７】
１３．１  代替的な検証者選択メカニズム
これまで、アルゴランドは、規定された誠実な過半数をＳＶｒが有することを確認して、前のラウンドに依存する数量から、リーダーｌｒおよび検証者集合ＳＶｒを自動的に選択するものであった。しかし、検証者およびリーダーを選択する代替方法を指摘したい。
【０７７８】
このような方法の１つは、当然、暗号プロトコルにより全ユーザによって実行される。しかし、このアプローチは、システム内のユーザ数が多い場合には遅くなるかもしれない。したがって、２種類の代替メカニズム、すなわち、連鎖型、自然ベース、および信用できる第三者を考えてみよう。（これらのメカニズムを、既に述べたものと混合することもできる。）
【０７７９】
連鎖型メカニズム
各ＳＶｒが誠実な過半数を有すると帰納的に仮定すると、ＳＶｒ自体（またはより一般的にはｒまでのラウンドの検証者の一部）にラウンドｒの検証者集合および／またはリーダーを選択させることができるであろう。例えば、複数者によるセキュア計算によってそうすることができるであろう。誠実な過半数を有するように初期の検証者集合が選ばれると仮定すると、ブートストラッピングに頼る。すなわち、各検証者集合の誠実な過半数は、次の検証者集合の誠実な過半数を含意する。検証者集合は全ユーザの集合に対して小さいため、そのメンバーは、この選択を非常に素早く実施することができる。
【０７８０】
ここでも、各ラウンドについて、検証者集合およびリーダーを決定論的に導く、十分に長いランダムなストリングを選択すれば十分である。
【０７８１】
自然ベースのメカニズム
所与のラウンドｒの検証者集合ＳＶｒおよびリーダーｌｒは、ラウンドｒに関連付けられているランダム値ｖｒから、予め決められたやり方で、規定のユーザの集合ＰＶｒ−ｋから選択することができる。具体的には、ｖｒは、自然かつ公開のランダム値としてもよい。これによって、我々は、これが任意の所与の個人ではとても制御することができない、ランダムプロセスの広く利用できる結果であることを意味する。例えば、ｖｒは、所与の時刻（例、ラウンドｒの始まり、もしくは前のラウンドの所与の時刻）における様々な都市の気温、または所与の証券取引所で所与の時刻に売買される所与の有価証券の株数、等から構成してもよい。
【０７８２】
自然かつ公開のランダム値は十分に長くないことがあるため、
【数４４９】
2019519137.tif 000451
を設定するよりも、代わりに
【数４５０】
2019519137.tif 000452
を設定することもでき、既に述べたように、Ｈ（ｖｒ）を適切な擬似ランダム的に伸ばす必要がある。
【０７８３】
受託者ベースのメカニズム
ＳＶｒを選択する代替アプローチは、そのうちの少なくとも１人が誠実であることを保証するように選択された、１つまたは複数の特別なエンティティである、受託者に関わる。受託者は、支払集合ＰＡＹｒの構築には関わることはできないが、検証者集合ＳＶｒおよび／またはリーダーｌｒを選ぶことができる。
【０７８４】
最も単純な受託者ベースのメカニズムは、当然、１受託者のものである。受託者Ｔが１人しかいない場合、当該受託者は必然的に誠実である。したがって、当該受託者はラウンドｒでＳＶｒ（またはＳＶｒがそこから導かれた十分にランダムなストリングｓｒ）を自明に選択し、電子署名し、利用できるようにすることができる。
【０７８５】
これは単純なメカニズムであるが、Ｔに非常に大きな信頼を置く。それほどではないにしても当該Ｔを信頼するために、Ｔは、自分だけが生成することができ、ラウンドｒによって一意に決定された１つのストリングｓｒ、例えば、ｓｒ＝ＳＩＧＴ（ｒ）、を利用できるようにすることができる。さらに、すべてのユーザは、ＳＶｒがそこから導かれたランダムストリング、Ｈ（ＳＩＧＴ（ｖｒ））を計算することができる。
【０７８６】
このように、Ｔは、集合ＳＶｒを支配する権限を持たない。本質的に、当該Ｔは自己裁量で１つの戦略的決定を有する。すなわち、ＳＩＧＴ（ｒ）を利用できるようにするかどうかである。したがって、Ｔが誠実に行為しているかどうかをチェックすること、ひいては適切な賞罰を用いてＴが誠実に行為することを確実にすることは、より簡単である。
【０７８７】
このアプローチの問題は、予測不可能性（の欠如）である。実際、Ｔは、かなり前もってＳＩＧＴ（ｒ）を計算しておき、それを秘かに誰かに明らかにするかもしれず、そのため、その誰かは将来のラウンドの検証者集合を知り、そのメンバーを攻撃するかまたは腐敗させるのに十分な時間を有する。
【０７８８】
この問題を避けるために、セキュアなハードウェアに依拠することができる。本質的に、適切なラウンドで正規の電子署名を出力するプログラムと合わせて、Ｔを、「外部に」公開鍵を投稿させ、対となる秘密鍵を「内部に」閉じ込める、改ざん防止装置にすることができる。このアプローチは、当然、セキュアなハードウェアの内部で展開されるプログラムが、事前に将来の署名を漏洩するための秘密の命令を有さないことを確信する必要がある。
【０７８９】
別のアプローチは、各ラウンドｒに関連付けられている自然公開ランダム値ｖｒを使用することである。例えば、Ｔは、ＳＩＧＴ（ｖｒ）を利用できるようにするよう求められることがある。このように、将来のラウンドｒの値ｖｒは誰にも分からないため、Ｔは、事前に漏洩するための電子署名を有さない。
【０７９０】
しかし、Ｔが依然として漏洩する可能性がある唯一のものは、Ｔ自身の秘密署名鍵である。この潜在的な問題に対処するためには、ｋ人の受託者に依拠することができる。そのうちの適切な過半数が誠実であることを確実にするよう当該受託者を選ぶことができた場合、当該受託者は、各ラウンドｒでＳＶｒを選ぶために、複数者によるセキュア計算を間違いなく使用することができる。信頼性には劣るがより単純にすると、各ラウンドｒで、各受託者ｉに、ｒに一意に関連付けられているとともにｉだけが生成することのできる１つのストリングを利用することができるようにさせ、次いで、すべてのこのようなストリングについてＳＶｒを計算することができる。例えば、各受託者ｉは、ＳＩＧｉ（ｒ）を利用できるようにして、検証者集合ＳＶｒを導くランダムなストリングｓｒ＝Ｈ（ＳＩＧ１（ｒ），．．．，ＳＩＧｋ（ｒ））を計算できるようにすることができるであろう。このアプローチで我々は、各電子署名ＳＩＧｉ（ｒ）が生成されることを確実にするための賞罰に依拠し、シーケンスｓ１，ｓ２，．．．が依然として予測不可能なままであることを確実にするために、たとえ１人の受託者ｉであっても、その誠実さに依拠することがあるかもしれない。
【０７９１】
扱いにくいのは、当然ながら、必要なストリングを「利用できる」ようにする部分である。伝播プロトコルに依拠した場合、悪意の受託者は、混乱を生じさせるために故意に遅らせてその伝播を開始するかもしれない。そのため、受託者ベースのメカニズムは、「保証されたブロードキャストチャネル」の存在、すなわち、あるユーザがメッセージｍを受信すると、他の皆が同じｍを受信することを当該ユーザが保証されるような、メッセージの送信方法に依拠しなければならない。
【０７９２】
最後に、各ラウンドでセキュアな計算を使用するのではなく、セキュアな計算事前処理ステップを使用することができる。このステップはシステムの始めに、誠実な過半数を有するように選択された受託者の集合によって取られる。このステップは、場合によっては複数の計算段階によって、各受託者ｉについて公開値ｐｖおよび秘密値ｖｉを生成する。この初期計算にはいくらか時間がかかるかもしれないが、各ラウンドｒに必要な計算は自明とすることができるであろう。例えば、各ラウンドｒについて、各受託者ｉは、自分の秘密値ｖｉを使用して、（好ましくは電子署名された）１つの再構築ストリングｓｉｒを生成して伝播し、正当な再構築ストリングの過半数を含むストリングの任意の集合Ｓｒがあるとすると、誰もがＳＶｒ（またはＳＶｒがそこから導かれるランダム値）を曖昧さなく構築することができるようにする。このアプローチの危険性は、当然、固定された受託者の集合は、より攻撃を受けやすく、または腐敗されやすいおそれがあることである。
【０７９３】
１３．２  より高度な暗号ツール
アルゴランドは、より高度な暗号ツールからも利益を受けることができる。具体的には、以下の通りである。
【０７９４】
１．  統合可能な署名
しばしば、アルゴランドでは、データＤのうちの数個が複数者によって電子署名されなければならない。よりコンパクトな認証済み記録を生成するために、組み合わせ可能な電子署名を使用することができる。このような署名では、複数の公開鍵、例えば、ΡΚ１、ＰＫ２およびＰＫ３を１つの公開鍵ＰＫ＝ΡΚ１，２，３に統合することができるであろう。また、異なる公開鍵に関連した同じデータＤの署名は、対応する統合された公開鍵に関連して、１つの署名に統合することができる。例えば、ＳＩＧ１（Ｄ）、ＳＩＧ２（Ｄ）およびＳＩＧ３（Ｄ）は１つの電子署名ｓ＝ＳＩＧ１，２，３（Ｄ）に変換することができるであろうが、これは、公開鍵ＰＫ１，２，３に関連して、誰によっても検証することができる。関連する公開鍵の識別子のコンパクトな記録、我々の例では、集合｛１，２，３｝にはｓを添付することができるので、誰でも素早くΡΚ１、ＰＫ２およびＰＫ３を収集してＰＫ＝ＰＫ１，２，３を計算し、ＰＫに基づいてＤの署名ｓを検証することができる。
【０７９５】
これにより、複数の関係する伝播を単一の伝播にすることができる。本質的に、伝播プロトコルの間に、ユーザが、記録｛１，２，３｝とともにＳＩＧ１，２，３（Ｄ）、および記録｛４，５｝とともにＳＩＧ４，５（Ｄ）を受信したと仮定する。すると、当該ユーザはＳＩＧ１，２，３，４，５（Ｄ）および記録｛１，２，３，４，５｝を伝播するのと同じである。
【０７９６】
２．  ツリーハッシュアンドサイン
署名が複数のデータを認証する場合、署名された項目のリスト全体を維持または送信しなければならないよりも、１つのデータの署名だけを抽出できる方が便利であろう。例えば、プレーヤは、認証されたＰＡＹｒ全体ではなく、所与の支払Ｐ∈ＰＡＹｒの認証記録を維持したいかもしれない。このために、まず、各支払Ｐ∈ＰＡＹｒを個別のリーフに格納するマークル木を生成し、それからルートに電子署名することができる。この署名は、項目Ｐおよびその認証経路とともに、本質的にＰ単独の代替署名である。
【０７９７】
３．  配達証明付き電子メール
後者の処理方法の１つの利点は、プレーヤが、ｌへの支払を配達証明付き電子メール（脚注５３参照）によって、好ましくは送信者匿名で送信し、ｌが意図的にその支払の一部をＰＡＹｌｒに含めないことにした場合に、ｌを罰する助けになり得る受信確認（レシート）を得られるようになることである。
【０７９８】
脚注５３
例えば、米国特許第５６６６４２０号の軽量配達証明付き電子メールによる。
【０７９９】
１４  適用範囲
本明細書で説明するシステムのソフトウェア実装は、コンピュータ可読媒体に格納されるとともに１つまたは複数のプロセッサで実行される、実行可能コードを含むことができる。コンピュータ可読媒体は、非一時的なものとすることができ、コンピュータハードドライブ、ＲＯＭ、ＲＡＭ、フラッシュメモリ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、フラッシュドライブ、ＳＤカード、および／もしくは、例えばユニバーサルシリアルバス（ＵＳＢ）インタフェースを有する他のドライブなどの携帯コンピュータ記憶媒体、ならびに／または実行可能コードを格納しプロセッサで実行することができる任意の他の適切な有形もしくは非一時的コンピュータ可読媒体もしくはコンピュータメモリであってもよい。本明細書で説明するシステムは、任意の適切なオペレーティングシステムとの関係で使用してもよい。
【０８００】
本発明の他の実施形態は、本明細書で開示する本発明の明細または実施を考慮することで当業者には明らかになるであろう。明細および実施例は例示的なものとしてのみ見なされ、本発明の真の範囲および精神は以下の請求項によって示されることが意図される。
【図１】
2019519137.tif 000453
【図２】
2019519137.tif 000454
【図３】
2019519137.tif 000455
【図４】
2019519137.tif 000456
【図５】
2019519137.tif 000457
【国際調査報告】
2019519137.tif 000458
2019519137.tif 000459
2019519137.tif 000460