(57)【要約】  取引がブロックに編成されている取引システム内で、主体に先行ブロックから量Ｑを決定させ、Ｑ及び主体に一意に関連付けられたストリングＳを計算すべく主体に秘密鍵を使用させ、主体にＳ自身、Ｓの関数、及び／又はＳのハッシュ値のうち一つである量ＴをＳから計算させ、主体にＴが所与の特性を有するか否かを判定させ、Ｔが所与の特性を有する場合、主体にＢrのハッシュ値Ｈにデジタル署名させ、Ｓ、Ｂr及びＨのデジタル署名されたバージョンを利用可能にさせることにより、先行ブロックのシーケンス、Ｂ0，．．．，Ｂr-1に関して、有効な取引の新規ブロックＢｒが構築され、Ｂrはラウンドｒの異なるステップで提案されてよく、且つラウンドｒ内で複数回再提案されてよく、主体は、主体がＢを受信しているか否かとは独立して、ブロックＢのハッシュ値Ｈを検証することができる。
2021507629.tif 000002
【特許請求の範囲】
【請求項１】
主体が、充分な数の検証者のデジタル署名により証明されたブロックのシーケンスに取引が編成されている取引システムを管理する方法であって、
前記主体が、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関して、証明済みのｒ番目のブロックＢrが存在しなければ新規の有効な取引を含むブロックＢ’のハッシュを提案するステップと、
前記主体が、ｒ番目のブロックＢrが充分な数の他の主体により検証されていれば前記ブロックＢrのハッシュを提案するステップとを含む方法。
【請求項２】
前記主体によりブロックが証明されるのは、前記ブロックの取引の確認、及び前記ブロックを構築及び拡散する権限を有する主体により前記ブロックが構築及び拡散されたことの確認に応答する場合だけである、請求項１に記載の方法。
【請求項３】
前記主体が、ハッシュ値にデジタル署名して前記ハッシュ値のデジタル署名されたバージョンを提供することによりハッシュ値を提案し、前記主体が、前記ハッシュ値のデジタル署名されたバージョンを他の主体を含むネットワークに拡散する、請求項１に記載の方法。
【請求項４】
証明済みのｒ番目のブロックＢrが存在しない場合、前記主体がブロックＢ’にもデジタル署名して拡散する、請求項３に記載の方法。
【請求項５】
前記主体が、先行ブロックから量Ｑを決定して、Ｑに一意に関連付けられたストリングＳを計算すべく秘密鍵を用いて、Ｓ自身、Ｓの関数、及びＳのハッシュ値のうち少なくとも１つである量ＴをＳから計算し、前記主体が、Ｔが所与の特性を有するか否かを判定することによりハッシュ値を提案するか否かを判定する、請求項１に記載の方法。
【請求項６】
Ｓが前記主体の秘密鍵を用いたＱの署名であり、ＴがＳのハッシュであって、Ｔが所与の閾値を下回ればＴが所与の特性を有している、請求項５に記載の方法。
【請求項７】
前記主体が、複数の主体のネットワークの一部であり、前記複数の主体の特定の１個がブロックＢrを構築して拡散する、請求項１に記載の方法。
【請求項８】
ｒ番目のブロックＢrが、少なくとも所定数の主体が個々に前記ｒ番目のブロックＢrに対応するハッシュ値を証明する指標を前記主体が受信していれば、前記主体により証明されていると判定される、請求項７に記載の方法。
【請求項９】
所定数の主体が個々にｒ番目のブロックＢrを証明した旨の指標を前記主体が受信したことに応答して、前記主体が、前記ブロックのシーケンスに追加的なブロックを追加し始めるためにｒを増分する、請求項８に記載の方法。
【請求項１０】
前記複数の主体の特定の１個が、所定数の主体の個々によりリーダーとして選出されている、請求項７に記載の方法。
【請求項１１】
前記ｒ番目のブロックＢrが前記主体により証明可能であると判定できるのは、特定の一主体が前記ｒ番目のブロックＢrに対応するハッシュ値を前記所定数の主体の各々に提供した旨の指標を少なくとも所定数の主体が個々に受信した旨の指標を前記主体が受信した場合である、請求項１０に記載の方法。
【請求項１２】
主体が、証明されるブロックのシーケンスに取引が編成されている取引システムを管理する方法であって、
前記主体が、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関して、新規の有効な取引に基づいてブロックを生成した別の主体からブロックＢrのハッシュ値を受信するステップと、
前記主体が、充分な数の他の主体が前記別の主体から前記ブロックＢrのハッシュ値を受信した旨を提示したこと及び前記ハッシュ値が前記ブロックＢrに対して有効であることに応答して前記ブロックＢrを証明するステップと、
前記主体が、前記別の主体から前記ブロックＢrのハッシュ値を受信した旨を提示する前記他の主体の数が不充分であることに応答して、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関する新規の有効な取引に基づいて新規ブロックＢ’であってＢrとは異なるＢ’を生成するステップと、
前記主体が、所定数の主体が個々にｒ番目のブロックＢrを証明した旨、又は所定数の主体が個々に新規ブロックＢ’を証明した旨の指標を前記主体が受信したことに応答して、前記ブロックのシーケンスに追加的なブロックを追加し始めるためにｒを増分するステップとを含む方法。
【請求項１３】
前記ブロックがデジタル署名により証明される、請求項１２に記載の方法。
【請求項１４】
新規ブロックが、以前に提案されたブロックを所定数の主体が個々に証明した旨の指標を受信するまで異なる主体により提案される、請求項１２に記載の方法。
【請求項１５】
前記主体が、前記ハッシュ値が前記ブロックＢrに対して有効でないことに応答して新規ブロックを生成すべきである旨の指標を提供する、請求項１２に記載の方法。
【請求項１６】
前記主体が、充分な数の他の主体が新規ブロックを生成すべきである旨の指標を提供していることに応答して、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関して、新規の有効な取引に基づいて新規ブロックＢ’を生成する、請求項１５に記載の方法。
【請求項１７】
前記主体が、充分な数の他の主体が他の主体からブロックＢrのハッシュ値を受信した旨を提示し、且つハッシュ値がブロックＢrに対して有効であることに応答して、ブロックＢrのハッシュ値を拡散すべきである旨の指標を提供する、請求項１２に記載の方法。
【請求項１８】
主体が、取引がブロックに編成されていて、ブロックがデジタル署名の組により証明される取引システム内で新規ブロックＢrにアクセスすることなく、所与のブロックのシーケンス、Ｂ0，．．．，Ｂr-1に関して、取引の前記新規ブロックＢrの提案されたハッシュ値を検証する方法であって、
前記主体に先行ブロックから量Ｑを決定させるステップと、
前記主体にＱのデジタル署名Ｓを計算させるステップと、
前記主体にＳ自身、Ｓの関数、及びＳのハッシュ値のうち少なくとも１つである量ＴをＳから計算させるステップと、
前記主体にＴが所与の特性を有するか否かを判定させるステップと、
Ｔが前記所与の特性を有する場合、主体に、提案されたハッシュ値が前記新規ブロックＢrに対応するか否かの確認とは独立に、前記新規ブロックＢrの提案されたハッシュ値を検証させるステップとを含む方法。
【請求項１９】
前記主体が、前記新規ブロックＢrを受信する前に、前記新規ブロックＢrの提案されたハッシュ値を拡散する、請求項１８に記載の方法。
【請求項２０】
非一時的コンピュータ可読媒体で提供され、請求項１〜１９のいずれか１項に記載の方法を実行する実行可能コードを含む、コンピュータソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１７年１２月１９日出願の米国仮特許出願第６２／６０７，５５８号「ＦＡＳＴＥＲ  ＢＹＺＡＮＴＩＮＥ  ＡＧＲＥＥＭＥＮＴ  ＩＮ  ＰＲＯＰＡＧＡＴＩＯＮ  ＮＥＴＷＯＲＫＳ  ＷＩＴＨ  ＞２／３  ＨＯＮＥＳＴ  ＭＡＪＯＲＩＴＹ」、２０１８年２月２０日出願の米国仮特許出願第６２／６３２，９４４号「ＡＬＧＯＲＡＮＤ」、２０１８年３月１５日出願の米国仮特許出願第６２／６４３，３３１号「ＩＮＣＥＮＴＩＶＥＳ  ＡＮＤ  ＴＲＡＮＳＡＣＴＩＯＮ  ＦＥＥＳ  ＩＮ  ＡＬＧＯＲＡＮＤ」、２０１８年１２月１０日出願の米国仮特許出願第６２／７７７，４１０号「ＶＩＲＴＵＡＬ  ＢＬＯＣＫＣＨＡＩＮ  ＰＲＯＴＯＣＯＬＳ  ＦＯＲ  ＦＡＩＲ  ＥＬＥＣＴＲＯＮＩＣ  ＥＸＣＨＡＮＧＥ」、及び２０１８年１２月１２日出願の米国仮特許出願第６２／７７８，４８２号「ＶＩＲＴＵＡＬ  ＢＬＯＣＫＣＨＡＩＮ  ＰＲＯＴＯＣＯＬＳ  ＦＯＲ  ＦＡＩＲ  ＥＬＥＣＴＲＯＮＩＣ  ＥＸＣＨＡＮＧＥ」の優先権を主張するものであり、その全てを本明細書に参照により引用している。
【０００２】
本出願は電子取引の分野に関し、特に分散型公開台帳、処理ブロックのシーケンスの内容のセキュリティ保証、及び電子支払いの検証の分野に関する。
【背景技術】
【０００３】
ブロックチェーンは、ブロックの拡張可能なシーケンスＢ1，Ｂ2，．．．，からなり、各ブロックは多くの取引、１つ前のブロックのハッシュ、及び他のデータ、例えばブロックの指数、時間情報等からなる。ブロックチェーンの有用な特性は、（Ｐ１）各指数１、２、．．．に対応する一意なブロックが存在すること、（Ｐ２）システムの全ユーザーが最終的に全ブロックの内容を知ること、（Ｐ３）誰もブロックの内容又は順序を変更することができないこと、及び（Ｐ４）有効な取引は全て最終的にチェーン内のあるブロックに入れられることである。
【０００４】
ユーザーはメッセージにデジタル署名することができ、従って各ユーザーは少なくとも１個の公開鍵及び対応する秘密鍵を有している。ブロックチェーンでは一般に、公開鍵は知られているが、それを有するユーザーは必ずしも知られていない。従って、公開鍵と所有者を同一視することができる。
【０００５】
いくつかのブロックチェーンシステムでは、システム内の充分多数のユーザーのデジタル署名によりブロックを証明する必要がある。いくつかのシステムにおいて、このような証明するユーザーは固定されたユーザーの集合に属する。他のいくつかのシステムにおいて、ユーザーは動的に変化する集合に属する。これが好適であるのは、特に集合が動的であるだけでなく予測不可能である場合、動的に変化する集合を敵対者が唆すのがより困難になるからである。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
検証可能だが予測不可能な方法でユーザーの集合を選択する特に効果的な仕方は、参照により本明細書に引用される公開ＰＣＴ特許出願ＰＣＴ／ＵＳ２０１７／０３１０３７号に記述されている暗号抽選技術である。ここで、ユーザーｉは、入力ｓ及びｒ、並びに他の入力及びその他データ（例：ある整数ｋが与えられて、ユーザーがブロックｒの少なくともｋブロック前でシステムに関与した事実）を用いて、自身の秘密鍵を介して、ｉが実行する計算の結果に基づいて、ブロック番号ｒを生成する間に、あるステップｓで行動する権限を与えられたユーザーの集合に属している。例えば、ｉの計算は、そのような入力にｉのデジタル署名
【数１】
2021507629.tif 000003
を行い、
【数２】
2021507629.tif 000004
をハッシングし、及びハッシュが所与の閾値ｔより小さいか否かを調べることが必要であり得る。（実際、他の任意のストリングと同様に、ハッシュされた値は、いずれかの標準的な方法で数値として解釈することができる。）そうであれば、
【数３】
2021507629.tif 000005
はブロックｒに関するステップｓに対するｉの信任値であると定義される。このような信任値は、ｉが実際に（好適には署名付き）メッセージ
【数４】
2021507629.tif 000006
すなわち、ラウンドｒのステップｓ、すなわちブロックｒの生成を意図した処理において自身の投票メッセージを生成する権限があることを誰に対しても証明する。実際、ｉのデジタル署名は誰でも確認することができ、且つ誰でも所与の値をハッシュすることができ、次いで、結果が実際に所与の数よりも小さい（又は等しい）か否かを確認することができる。
【０００７】
ブロックチェーンは、メッセージ（例：ブロック、取引、投票メッセージ、デジタル署名等）を拡散することで機能する。典型的に、但し非排他的に、メッセージはピアツーピア方式で、又はリレーを介して雑談することにより拡散される。いくつかのブロックチェーンシステムは、拡散ネットワークに対し、全ての正直なユーザーにより拡散されたメッセージが有限な遅延時間内に他の正直なユーザーに配信されることを保証することを要求する。いくつかのブロックチェーンシステムは更に、ユーザーが同期的にメッセージを拡散できるように、ユーザーが（ほぼ）時刻を合わされたシステムクロックを有していること要求する。例えば、ユーザーがＥＳＴ（東部標準時刻）１１：２０：００ａｍでブロック１００を生成するステップ２に進み、ステップの投票メッセージがＥＳＴ１１：２０：０５ａｍまでに配信され、次いでユーザーはブロック１００のステップ３へ進む。Ａｌｇｏｒａｎｄにより課されるより緩い、従って好適な要件は、ユーザーの時計が（ほぼ）同じ速度であるが、各時計が示す実際の時刻は互いに任意の時間異なっていてよい。ユーザーは、自身が拡散ネットワークから受信したメッセージに基づいてブロックｒを生成する自身のステップｓを開始し、受信したメッセージ及びステップを開始した時点から自身の時計が進んだ時間に基づいて終了する。
【０００８】
拡散ネットワークが上述の要件を満たす場合、Ａｌｇｏｒａｎｄは、ブロックチェーンが正常に機能するのを敵対者が妨害できないようにする（特性Ｐ１〜Ｐ４の実現を含む）ことを保証する。しかしこれは、敵対者が拡散ネットワーク自体を攻撃しないことに依存する。このような攻撃は、充分に多くのユーザーに対するメッセージ配信の有限な遅延を妨害するために敵対者が行い得る任意の企み、例えばユーザーを同じサイズの２つのグループに分けて、グループ間のメッセージ配信チャンネルを管理することにより、グループ１からあるユーザーにより拡散されたメッセージがグループ２の任意のユーザーに到達するまで無期限の遅延を生じさせ得ることも含んでいる。
【０００９】
従って、上述の要件を弱めて、且つ公知の分散型アプローチの非効率性及び危険性から免れたブロックチェーン及び電子マネーシステムを提供することが望まれる。
【課題を解決するための手段】
【００１０】
本明細書に記述するシステムによれば、主体が、充分な数の検証者のデジタル署名により証明されたブロックのシーケンスに取引が編成されている取引システムを管理するものであり、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関して、証明済みのｒ番目のブロックＢrが存在しなければ新規の有効な取引を含むブロックＢ’のハッシュを主体が提案することにより、及びｒ番目のブロックＢrが充分な数の他の主体により検証されていればブロックＢrのハッシュを主体が提案することにより管理を行う。主体によりブロックが証明できるのは、ブロックの取引の確認、及びブロックを構築及び拡散する権限を有する主体によるブロックの構築及び拡散の確認に応答する場合だけであってよい。主体は、ハッシュ値にデジタル署名してハッシュ値のデジタル署名されたバージョンを提供することによりハッシュ値を提案することができ、且つ主体は、ハッシュ値のデジタル署名されたバージョンを他の主体を含むネットワークに拡散することができる。証明済みのｒ番目のブロックＢrが存在しない場合、主体はブロックＢ’にもデジタル署名して拡散することができる。主体は、先行ブロックから量Ｑを決定して、Ｑに一意に関連付けられたストリングＳを計算すべく秘密鍵を用いて、Ｓ自身、Ｓの関数、及び／又はＳのハッシュ値である量ＴをＳから計算することができ、主体はまた、Ｔが所与の特性を有するか否かを判定することによりハッシュ値を提案するか否かを判定することができる。Ｓは主体の秘密鍵を用いたＱの署名であってよく、ＴはＳのハッシュであってよく、Ｔは、Ｔが所与の閾値を下回れば所与の特性を有していてよい。主体は、複数の主体のネットワークの一部であってよく、複数の主体の特定の１個がブロックＢrを構築して拡散してよい。ｒ番目のブロックＢrは、少なくとも所定数の主体が個々にｒ番目のブロックＢrに対応するハッシュ値を証明する指標を主体が受信していれば、主体により証明されていると判定することができる。主体は、所定数の主体が個々にｒ番目のブロックＢrを証明した旨の指標を主体が受信したことに応答して、ブロックのシーケンスに追加的なブロックを追加し始めるためにｒを増分することができる。複数の主体の特定の１個が、所定数の主体の個々によりリーダーとして選出されてよい。ｒ番目のブロックＢrが主体により証明可能であると判定できるのは、特定の一主体がｒ番目のブロックＢrに対応するハッシュ値を所定数の主体の各々に提供した旨の指標を少なくとも所定数の主体が個々に受信した旨の検証を主体が受信した場合である。
【００１１】
本明細書に記述するシステムによれば更に、主体が、証明されたブロックのシーケンスに取引が編成されている取引システムを管理するものであり、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関して、主体が、新規の有効な取引に基づいてブロックを生成した別の主体からブロックＢrのハッシュ値を受信し、主体が、充分な数の他の主体が別の主体からブロックＢrのハッシュ値を受信した旨を提示したこと及びハッシュ値がブロックＢrに対して有効であることに応答してブロックＢrを証明し、主体が、別の主体からブロックＢrのハッシュ値を受信した旨を提示する他の主体の数が不充分であることに応答して、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関する新規の有効な取引に基づいて新規ブロックＢ’であってＢrとは異なるＢ’を生成し、主体が、所定数の主体が個々にｒ番目のブロックＢrを証明した旨、又は所定数の主体が個々に新規ブロックＢ’を証明した旨の指標を主体が受信したことに応答して、ブロックのシーケンスに追加的なブロックを追加し始めるためにｒを増分することにより管理を行う。ブロックはデジタル署名により証明されてよい。新規ブロックは、以前に提案されたブロックを所定数の主体が個々に証明した旨の指標を受信するまで、異なる主体の１つにより提案されてよい。主体は、ハッシュ値がブロックＢrに対して有効でないことに応答して新規ブロックを生成すべきである旨の指標を提供することができる。主体は、充分な数の他の主体が新規ブロックを生成すべきである旨の指標を提供していることに応答して、証明済みブロックのシーケンスＢ0，．．．，Ｂr-1に関して、新規の有効な取引に基づいて新規ブロックＢ’を生成することができる。主体は、充分な数の他の主体が他の主体からブロックＢrのハッシュ値を受信した旨を提示し、且つハッシュ値がブロックＢrに対して有効であることに応答して、ブロックＢrのハッシュ値を拡散すべきである旨の指標を提供することができる。
【００１２】
本明細書に記述するシステムによれば更に、主体が、取引がブロックに編成されていて、ブロックがデジタル署名の組により証明される取引システム内で、新規ブロックＢrにアクセスすることなく、所与のブロックのシーケンス、Ｂ0，．．．，Ｂr-1に関して、取引の新規ブロックＢrの提案されたハッシュ値を検証するものであり、主体に先行ブロックから量Ｑを決定させ、主体にＱのデジタル署名Ｓを計算させ、主体にＳ自身、Ｓの関数、及び／又はＳのハッシュ値である量ＴをＳから計算させ、主体にＴが所与の特性を有するか否かを判定させ、Ｔが所与の特性を有する場合、主体に、提案されたハッシュ値が新規ブロックＢrに対応するか否かの確認とは独立に、新規ブロックＢrの提案されたハッシュ値を検証させることにより検証を行う。主体は、新規ブロックＢrを受信する前に、新規ブロックＢrの提案されたハッシュ値を拡散することができる。
【００１３】
本明細書に記述するシステムによれば更に、取引がブロックに編成されている取引システムにおいて、先行ブロックのシーケンスＢ0、Ｂ1，．．．，Ｂr-1に関して、有効な取引の新規ブロックＢrを構築するものであり、主体に先行ブロックから量Ｑを決定させ、主体にＱに一意に関連付けられたストリングＳを計算すべく秘密鍵を使用させ、主体にＳ自身、Ｓの関数、及び／又はＳのハッシュ値である量ＴをＳから計算させ、主体にＴが所与の特性を有するか否かを判定させ、Ｔが所与の特性を有する場合、主体にＢrのハッシュ値Ｈを計算させ、Ｈにデジタル署名させ、Ｓ、Ｂr及びＨのデジタル署名されたバージョンを他者が利用できるようにさせることにより構築が行われる。秘密鍵は、主体の公開鍵に対応する秘密署名鍵であってよく、Ｓは主体によるＱのデジタル署名である。Ｔは、ある数のバイナリ展開であってよく、Ｔが所与の数ｐ未満ならば所与の特性を満たす。Ｓは、ＢrからＳを推論可能にすることにより利用可能にすることができる。各ユーザーは、取引システムの残高を有していてよく、ｐは各ユーザーの残高に応じてユーザー毎に異なっていてよい。
【００１４】
本明細書に記述するシステムによれば更に、先行ブロックのシーケンスＢ0，．．．，Ｂr-1に関してデータストリングｍを検証すべくブロックチェーンシステム内でユーザーの部分集合を選択するステップは、ユーザーの少なくとも一部に先行ブロックから量Ｑを決定させるステップと、ユーザーの少なくとも一部にＱのデジタル署名Ｓ及び他の情報を計算させるステップと、ユーザーの少なくとも一部にデジタル署名のハッシュ値を決定させるステップと、ユーザーの少なくとも一部にハッシュ値を所定の閾値と比較させるステップと、ユーザーの部分集合に他の情報と共にｍにデジタル署名させて、ハッシュ値がユーザーの各々の部分集合の所定の閾値を下回ることに応答してＳ及びｍのデジタル署名されたバージョンを他者が利用できるようにするステップとを含んでいる。ハッシュ値が所定の閾値を下回る場合、デジタル署名を信任することができる。各ユーザーは取引システムに残高を有していてよく、所定の閾値は各ユーザーの残高に応じてユーザー毎に異なっていてよい。各ユーザーの所定の閾値は、ユーザーの部分集合が最小数のユーザーを含むように選択されていてよい。データストリングｍは新規ブロックＢrのハッシュ値であってよい。データストリングｍは、ｍの信任された署名の少なくとも所与の数により検証することができる。
【００１５】
本明細書に記述するシステムによれば更に、先行ブロックのシーケンスＢ0，．．．，Ｂr-1に関して、新規ブロックＢrを証明すべくブロックチェーンシステム内でユーザーの部分集合を選択するステップは、ユーザーの少なくとも一部に先行ブロックから量Ｑを決定させるステップと、ユーザーの少なくとも一部にＱのデジタル署名Ｓ及び他の情報を計算させるステップと、ユーザーの少なくとも一部にデジタル署名のハッシュ値を決定させるステップと、ユーザーの少なくとも一部にハッシュ値を所定の閾値と比較させるステップと、ハッシュ値がユーザーの各々の部分集合の所定の閾値を下回ることに応答してユーザーの部分集合にＢrがＢ0，．．．，Ｂr-1に対して有効であると判定させるステップと、ユーザーの部分集合に他の情報と共にＢrのハッシュ値Ｈにデジタル署名させて、Ｓ及びＨのデジタル署名されたバージョンを他者が利用できるようにするステップとを含んでいる。特定の一ユーザーが新規ブロックＢrにデジタル署名できるのは、特定一ユーザーが新規ブロックＢrで提供された情報を検証する場合だけである。各ユーザーは、取引システムに残高を有していてよく、所定の閾値は各ユーザーの残高に応じてユーザー毎に異なっていてよい。各ユーザーの所定の閾値は、ユーザーの部分集合が最小数のユーザーを含むように選択されていてよい。ブロックＢrは、Ｂ0，．．．，Ｂr-1に関してＢrが有効であると判定したユーザーから少なくとも所与の数のＨの信任された署名により証明されていてよい。
【００１６】
本明細書に記述するシステムによれば更に、非一時的コンピュータ可読媒体で提供されるコンピュータソフトウェアは、本明細書に記述する任意のステップを実行する実行可能コードを含んでいる。
【００１７】
本発明は、新規ブロックの証明の安全確保のための拡散ネットワークのメッセージ配信遅延要件を省略する。新規ブロックが最初に用意（例えば少なくとも一部のユーザーより提案、拡散、及び／又は合意）され、次いで証明される。新たに構築されたブロック、新規ブロックのハッシュ値、及び／又は信任された署名を所望の時間間隔内に受信したユーザーは、新規ブロックの検証及び／又は証明に進む。しかし、ネットワークに拡散されたメッセージが無期限に遅延する可能性があっても、新規ブロックの証明が望まれる。ブロックＢの証明は、特定の有益な特性がブロックに適用できることを保証する。典型的な主特性は、ブロックＢの用意を関与していないか又は視認しなかったユーザーであっても、Ｂがブロックチェーンに追加されていること、又はＢがブロックチェーンのｒ番目のブロックであることさえもユーザーが確認できるようにする。別の有益な特性（往々にして仕上げと称する）は、ソフトフォークに起因して、たとえブロックチェーンプロトコルが実行される通信ネットワークが分割されていたとしても、Ｂがブロックチェーンから消失しないことを保証する。ネットワークの分割によりユーザーが複数のグループに分かれてしまい、あるグループから拡散されたメッセージが他のグループのユーザーに到達しない恐れがある。分割は無制限の時間経過後に解決されることがあり、その後ネットワークは再び、有限な遅延後のメッセージ配信を保証する。
【００１８】
ブロックＢが任意の仕方で、且つ任意のステップ数で用意されていると仮定する。ブロックが適切に用意されていることを認識するには、時間及び労力並びに様々な断片的証拠の検証を要する。Ｂの証明は、有効な信任値を有する所与の数のユーザーのデジタル署名を含んでいる。このようなＢの証明は、そのような署名を行ったユーザーがＢの用意に関与又は視認したことを証明する。少なくとも、証明のデジタル署名の１個が正直なユーザーによりなされていれば、Ｂが適切に用意されていることをそのユーザーが確認していることを証明する。
【００１９】
本明細書に記述するシステムにおいて、先行ブロックＢ0，．．．，Ｂr-1に関してブロックＢの１つがブロックチェーン内のｒ番目のブロックとして適切に用意されている証拠をユーザーが集めている間、ユーザーは、システム内でＢの証明書が生成されていない証拠を有していれば、Ｂ0，．．．，Ｂr-1に関してブロックチェーン内のｒ番目のブロックとして新規ブロックＢ’を構築及び提案することができる。ユーザーは、先行ブロックから量Ｑを決定し、Ｑに一意に関連付けられたストリングＳを秘密鍵を用いて計算し、Ｓ自身、Ｓの関数、及び／又はＳのハッシュ値である量ＴをＳから計算し、Ｔが所与の特性を有するか否かを判定して、Ｔが所与の特性を有する場合、Ｂ’のハッシュ値Ｈ’を計算し、Ｈ’にデジタル署名を行って、Ｓ、Ｂ’及びＨ’のデジタル署名されたバージョンを他者が利用できるようにすることにより、Ｂ’を提案する。秘密鍵は、主体の公開鍵に対応する秘密署名鍵であってよく、Ｓは主体によるＱのデジタル署名である。Ｔは、ある数のバイナリ展開であってよく、Ｔが所与の数ｐ未満ならば所与の特性を満たす。Ｓは、Ｂ’からＳを推論可能にすることにより利用可能にすることができる。各ユーザーは、取引システムの残高を有していてよく、ｐは各ユーザーの残高に応じてユーザー毎に異なっていてよい。
【００２０】
本明細書に記述するシステムにおいて、先行ブロックＢ0，．．．，Ｂr-1に関してブロックＢの１つがブロックチェーン内のｒ番目のブロックとして適切に用意されている証拠をユーザーが集めている間、ユーザーは、システム内でＢの証明書が生成されている可能性はあるが自身には利用可能になっていない証拠を有していれば、ブロックチェーン内のｒ番目のブロックとしてＢを再提案することができる。ユーザーは、Ｂ自身を受信していないが、Ｂのハッシュ値を検証している有効な証明書と共に所与の数のユーザーのデジタル署名を受信したことでＢを再提案することができる。ユーザーは、先行ブロックから量Ｑを決定し、Ｑに一意に関連付けられたストリングＳを秘密鍵を用いて計算し、Ｓ自身、Ｓの関数、及び／又はＳのハッシュ値である量ＴをＳから計算し、Ｔが所与の特性を有するか否かを判定して、Ｔが所与の特性を有する場合、Ｂのハッシュ値Ｈにデジタル署名を行って、Ｓ及びＨのデジタル署名されたバージョンを他者が利用できるようにすることにより、Ｂを再提案することができる。秘密鍵は、主体の公開鍵に対応する秘密署名鍵であってよく、Ｓは主体によるＱのデジタル署名である。Ｔは、ある数のバイナリ展開であってよく、Ｔが所与の数ｐ未満ならば所与の特性を満たす。Ｓは、Ｂ’からＳを推論可能にすることにより利用可能にすることができる。各ユーザーは、取引システムの残高を有していてよく、ｐは各ユーザーの残高に応じてユーザー毎に異なっていてよい。
【００２１】
新規ブロックの提案及び既存ブロックの再提案は、ブロックチェーンのｒ番目のブロックを生成する間に無制限な回数生起して異なるユーザーにより実行することができる。ブロックＢは、異なるステップから生成された複数の証明書を有していてよい。しかし、ブロックチェーンのｒ番目のブロックを生成する間、１個のみのブロックに証明書が付与され、従ってユーザーによりブロックチェーンのｒ番目のブロックとみなされる。
【００２２】
本明細書に記述するシステムの効率は以下の事実に由来する。第一に、ユーザーｉは、ユーザーがＢ自身を受信できる前にブロックＢのハッシュ値を検証及び／又は再提案することができる。第２に、以前にｒ番目のブロックとして提案されたブロックＢがシステムで生成された証明書を有しない証拠を全てのユーザーが集め得る前に、新規ブロックＢ’をｒ番目のブロックとして提案することができる。実際、あるユーザーがそのような証拠を集めたならば直ちにＢ’を提案することができる。第３に、以前にブロックチェーンのｒ番目のブロックとして提案されたブロックＢは、システム内でＢの証明書が生成されていたかもしれないが全員が利用できるようになっていなかった証拠を全てのユーザーが集めてしまう前に再提案することができる。実際、あるユーザーがそのような証拠を集めたならば直ちにＢを再提案することができる。
【００２３】
証拠は、データストリングｍを検証すべく適切に形成された信任された署名の組を含んでいてよい。異なる目的の証拠は異なる数の署名を含んでいてよい。本明細書に記述するシステムのセキュリティは、ユーザーが自身の署名のハッシュ値を、異なるデータストリングを検証した時点と比較する際の所定の閾値の適当な選択、及び異なる目的の証拠を形成するのに充分な数の署名の適切な選択に由来する。例えば、ｐをシステム内の悪意のあるユーザーの最大割合とする。典型的に、悪意のあるユーザーは少数派、例えばｐ＜１／３である。従って所定の閾値ｔ及びブロックの証明書を形成するのに充分な署名の数ｎは、充分に高い確率で、（ａ）任意の可能なブロック値Ｂに対して、Ｂの証明書を形成する正直なｎ以上のユーザーの信任された署名があり、（ｂ）Ｂの任意の証明書において、信任された署名の２／３超が正直なユーザーのものであるように選択されていてよい。
【００２４】
本明細書に記述するシステムは、ブロックチェーン内で短期鍵が用いられているか否かは不可知である。ユーザーが新規ブロックを提案、既存ブロックを再提案、又はデータストリングを検証する際に、ユーザーは信任された署名を生成すべく長期秘密鍵を用いる場合があり、その場合、鍵はシステムの寿命が尽きるまで繰り返し使用可能であり、又はユーザーは１個の鍵が１回しか使用されない短期秘密鍵を使用でき、或いはユーザーは長期鍵と短期鍵の組み合わせたものを用いてもよい。
【００２５】
本明細書に記述するシステムの一部として、ユーザーｉは、ブロックの生成に関与するための信任された署名だけでなく、重み付きの信任された署名（本質的に票数に紐付けられた信任された署名）を有していてよい。実際、ブロックの生成に関与するためのｉの信任された署名の重みは、ｉがシステムに保有する金額に依存してよい。実際、全てのユーザーがブロックの生成に関与するための所定の１個の閾値ｔを有するのではなく、各ユーザーｉは、ｉの金額が多いほど高い自身の閾値ｔiを有していてよい。またユーザーｉは異なる仕方、例えば新規ブロックの提案、ブロックの再提案、又は特定の形式のデータストリングｍの検証によりブロックの生成に関与するための異なる閾値を有していてよい。説明を簡潔にすべく、但し非限定的に、重みｎの信任された署名を有するユーザーｉを、各々が（重み−１）の信任された署名を有するｎ人のユーザーとして扱い、本システムの説明を続けることにする。
【００２６】
以下、従来のＡｌｇｏｒａｎｄシステムを手短に概説した後で、一切の限定を意図することなく、Ａｌｇｏｒａｎｄに基づく好適な実施形態の一例を示す。
【００２７】
本明細書に記述するシステムの実施形態について、以下に簡単に説明する図面の各図に従ってより詳細に説明する。
【図面の簡単な説明】
【００２８】
【図１】本明細書に記述するシステムの一実施形態によるネットワーク及びコンピューティングステーションの模式図である。
【図２】Ａｌｇｏｒａｎｄシステムの第１ステップの模式的及び概念的要約であり、取引の新規ブロックを提案している。
【図３】Ａｌｇｏｒａｎｄシステム内の新規ブロックの合意書及び証明の模式的且つ概念的要約である。
【図４】図４ａ、図４ｂは、マークル木及びそのノードの１個に含まれる値への認証経路を示す模式図である。
【図５】ブロック木に構築された先頭８ブロックに対応する８個のマークル木を示す模式図である。
【図６】本明細書に記述するシステムの一実施形態による分割されたネットワークの模式図及びコンピューティングステーションである。
【発明を実施するための形態】
【００２９】
本明細書に記述するシステムは、取引情報を検証及び／又は拡散する計算の実行に単独で責任を負う主体が存在しないように取引の検証及び拡散を配信する機構を提供する。逆に、関与する各々の主体が、検証可能且つ信頼できる仕方で取引を拡散すべく計算の実行を分担する。
【００３０】
図１を参照すると、ダイアグラム２０で、インターネット等のデータネットワーク２４に接続された複数のコンピューティングワークステーション２２ａ〜２２ｃを示している。ワークステーション２２ａ〜２２ｃは、本明細書の他の箇所でより詳細に記述しているように、分散取引拡散及び検証を提供すべくネットワーク２４を介して互いに通信する。本システムは、ワークステーション２２ａ〜２２ｃが互いに通信可能である前提で、本明細書に記述する機能を提供可能な任意の数のワークステーションを収容することができる。ワークステーション２２ａ〜２２ｃは各々、本明細書の他の箇所でより詳細に記述しているように、本システムの他のワークステーションの全てに取引を拡散し、且つ取引を検証すべく独立して処理を実行することができる。
【００３１】
図２に、Ａｌｇｏｒａｎｄシステムにおけるラウンドｒの第１ステップを模式的且つ概念的に要約しており、選択された数人のユーザーの各々が、ｒ番目のブロックに対して自身の候補を提案する。具体的には、ステップはシステム内のユーザーａ，．．．，ｚが独立に秘密の暗号抽選処理を受けることから始まり、暗号抽選処理はどのユーザーがブロックを提案すべく選択されたかを決定し、各々の選択されたユーザーは、ブロックを生成する資格が自身に与えられたことを証明する信任値を非公開に計算する。ユーザーｂ、ｄ、及びｈだけがブロックを提案すべく選択されており、各人の計算された信任値は
【数５】
2021507629.tif 000007
及び
【数６】
2021507629.tif 000008
である。各々の選択されたユーザーｉは、自身の提案されたブロック
【数７】
2021507629.tif 000009
をアセンブルし、これに短期署名（すなわち、後述するように短期鍵を用いてデジタル署名）して、自身の信任値と共にネットワークに拡散する。ラウンドのリーダーは、信任値が最も小さいハッシュを有する選択されたユーザーである。図は、リーダーがユーザーｄであることを示す。従って、自身の提案されたブロック
【数８】
2021507629.tif 000010
は、バイナリ合意プロトコルへの入力として与えられるものである。
【００３２】
図３に、提案されたブロックを公式なｒ番目のブロック（Ｂr）として合意及び証明するＡｌｇｏｒａｎｄの方法を模式的且つ概念的に要約している。Ａｌｇｏｒａｎｄの第１ステップが新規ブロックの提案を含んでいるため、この処理は第２ステップから始まる。このステップは実際、Ａｌｇｏｒａｎｄの好適なビザンチン合意プロトコルＢＡ*の第１ステップに一致している。このプロトコルの各ステップは、秘密の暗号抽選（本図に示さず）により無作為に選択されたプレーヤーの異なる「委員会」により実行される。従って、各ステップを実行すべく選択されたユーザーは完全に異なっていてよい。ＢＡ*のステップ数は変化し得る。図３は、７ステップすなわちＡｌｇｏｒａｎｄのステップ２〜Ａｌｇｏｒａｎｄのステップ８を含むＢＡ*の実行を示している。ステップ２を実行すべく選択されたユーザーはａ、ｅ、及びｑである。各ユーザーｉ∈｛ａ，ｅ，ｑ｝は、ｉが実際にＡｌｇｏｒａｎｄのラウンドｒのステップ２でメッセージを送る資格を有していることを証明する自身の信任値
【数９】
2021507629.tif 000011
及びステップに適していて短期署名された自身のメッセージ
【数１０】
2021507629.tif 000012
をネットワークに拡散する。ステップ３〜７は図示していない。最後のステップ８において、図は、対応する選択されたユーザーｂ、ｆ、及びｘがラウンドｒの公式ブロックとしてＢrの合意に達しており、ブロックＢrの自身の短期署名（これらの署名は共にＢrを証明する）及びステップ８で行動する資格を有していることを証明する自身の信任値を拡散する様子を示す。
【００３３】
図４に、マークル木及びその認証経路の１個を模式的に示す。具体的には、図４Ａは、深さ３の完全マークル木を示す。各ノードｘは値ｖxを保存し、ｘは長さが３以下のバイナリストリングで表される。ｘの長さが２以下ならばｖx＝Ｈ（ｖx0，ｖx1）である。図４ａのマークル木に対して、図４Ｂは値ｖ010の認証経路を示す。
【００３４】
図５に、深さ３の完全２進木内に構築されたブロック木に構築された最初の８ブロックに対応するマークル木を模式的に示す。図５、ｉにおいて、整数で印が付けられたノードがマークル木Ｔiに属する。ｉ（又は太字のｉ）と印が付けられたノードの内容は一時的（又は永続的）である。
【００３５】
本明細書における記述は支払い取引に注目しており、且つ本明細書におけるシステムを資金プラットフォームとして記述している。当業者には、本明細書に記述するシステムがあらゆる種類の取引を同様に扱うことができることが理解されよう。
【００３６】
本明細書に記述するシステムは、極めて柔軟な設計がなされており、各種の、但し関連した仕方で実装することができる。本システムの柔軟性をその一般的な設計で可能な２つの実施形態を詳述することにより示す。当業者にはそこから他のあらゆる種類の実装を同様に導く仕方が理解できよう。
【００３７】
本発明の理解を容易にすべく、且つ様々な部分の内部相互参照に可能にすべく、本発明を、番号と見出しを付けた節に編成して提示する。第１節は、詳細な実施形態の両方に共通である。
【００３８】
１．序
資金は益々仮想化されている。今日米ドルの約８０％が台帳エントリとしてのみ存在すると推定されている。他の金融ツールもこれに追随している。
【００３９】
起こり得るあらゆるサイバー攻撃に耐性を有していて普遍的に信用できる中心的主体を頼ることができる理想的な世界において、資金及び他の金融取引は専ら電子的に行われ得る。残念ながら、我々はこのような世界に住んでいない。従って、ビットコイン等の分散化された暗号通貨、及びイーサリアム等の「スマート契約」システムが提案されている。これらのシステムの中心に、支払い及び契約等の広範な一連の取引を改ざん防止された仕方で確実に記録する共有台帳がある。このような改ざん防止を保証するために選択される技術としてブロックチェーンがある。ブロックチェーンは、暗号通貨、金融アプリケーション、及びモノのインターネット等のアプリケーションの背後にある。ブロックチェーンに基づいて台帳を管理するいくつかの技術、すなわちプルーフオブワーク、プルーフオブステーク、実用的ビザンチンフォールトトレランス、又はこれらのいずれかの組み合わせが提案されている。
【００４０】
しかし現時点では、台帳は管理が非効率的な場合がある。例えば、ビットコインのプルーフオブワークアプローチは膨大な量の計算を必要とし、無駄が多く、且つスケーリング性に欠ける。また、実際に極めて少数の者の権力を集中させてしまう。
【００４１】
従って、現在の分散された実装の非効率性及び弱点を排除した、信用でき且つ不可侵な権威者により実行される集中化されたシステムの利便性及び効率を実現する公開台帳を実装する新たな方法を推奨したい。発明者のアプローチをＡｌｇｏｒａｎｄと称するが、その理由は、これまで構築された台帳に基づいて、アルゴリズム的無作為性を利用して有効な取引の次のブロックの構築を担当する検証者の集合を選択するからである。当然ながら、このような選択が不正操作に耐性を有し、且つ最後の瞬間まで予測不可能であることが証明されているだけでなく、究極的に普遍的に透明性を有していることを保証する。
【００４２】
Ａｌｇｏｒａｎｄのアプローチは、原理的にも実態的にも（ビットコインにおける「採掘者」と「一般ユーザー」のような）異なる階級のユーザーを設定しない、という意味で完全に民主的である。Ａｌｇｏｒａｎｄでは「全ての権力は全てのユーザーの集合に存在する」。
【００４３】
Ａｌｇｏｒａｎｄの顕著な特性の１つは、取引履歴が極めて小さい確率（例：１兆分の１、すなわち１０-18程度）でも分岐し得ることである。Ａｌｇｏｒａｎｄはまた、いずれかの法的及び政治的な懸念に対応することができる。
【００４４】
Ａｌｇｏｒａｎｄアプローチは、ブロックチェーンに、より一般的にはブロックの改ざん防止シーケンスを生成する任意の方法に適用される。実際、我々は別途注目されてよいブロックチェーンの代替策として、より効率的な新たな方法を提案した。
【００４５】
１．１  ビットコインの仮定及び技術的課題
ビットコインは、極めて巧妙なシステムであって、後続する膨大な研究を惹起した。それにもかかわらず問題を含んでいる。ビットコインと同様にプルーフオブワークに基づく全ての暗号通貨が基本的に実際に共有している、基礎をなす仮定及び技術的課題を以下に要約する。
【００４６】
この要約に際して、ビットコインではユーザーがデジタル署名スキームの複数の公開鍵を有し得ること、資金が公開鍵に紐付けられていること、及び支払いがある公開鍵から別の公開鍵へある金額を送金するデジタル署名であることを想起すれば充分である。本質的に、ビットコインは、各々が複数の支払いを含むブロックの連鎖Ｂ1，Ｂ2，．．．における全ての処理対象の支払いが、任意の順序でなされるＢ1の全ての支払い、続いて任意の順序でなされるＢ2の支払い等が一連の有効な支払いを構成するように編成する。各ブロックは平均１０分毎に生成される。
【００４７】
上述のブロックシーケンスがチェーンをなしている理由は、いずれかの変化が、たとえ単一ブロックで生じても全ての後続ブロックに拡散することを保証し、それにより、支払い履歴に加えられたいかなる変更も認識し易くするために構築されるためである。（これは以下で述べるように、各ブロックに１つ前のブロックの暗号ハッシュを含めることにより実現される。）このようなブロック構造をブロックチェーンと称する。
【００４８】
仮定：大部分の正直な計算能力  ビットコインでは、いかなる悪意のある主体（又は協調した悪意のある主体の連合）もブロック生成に割かれた大部分の計算能力を制御することはないと仮定している。このような主体は実際、ブロックチェーンを改ざんし、従って望みのままに支払い履歴を書き直すことができる。特に、支払い
【数１１】
2021507629.tif 000013
に、支払いの対価を得させ、次いで
【数１２】
2021507629.tif 000014
の痕跡を全て「消去」させることができる。
【００４９】
技術的課題１：計算の無駄  ブロック生成へのビットコインのプルーフオブワークアプローチは格別な計算量を必要とする。現在、システム内には数十万個の公開鍵しかない状況で、上位５００の最も強力なスーパーコンピュータは、ビットコインプレーヤーが必要とするトータルの計算能力の僅か１２．８％パーセントしか集中することができない。有意に多数のユーザーがシステムに参加したならば、この計算量は大幅に増大しよう。
【００５０】
技術的課題２：権力の集中  今日、必要とされる計算量が過大であるため、ユーザーが通常のデスクトップ（携帯電話は論外）を用いて新規ブロックの生成を試みたならば資金を失うと予想される。実際、通常のコンピュータで新規ブロックを計算する場合、計算への電力供給に必要な電気の予想コストは期待される報酬を上回る。（「新規ブロックのマイニング」以外は何もしない）特別に構築されたコンピュータのプールを用いるだけで、新規ブロックを生成することにより利益が得られると期待する人もいよう。従って今日、事実上、２つの分断されたユーザーのクラス、すなわち支払いだけを行う通常のユーザー、及び新規ブロックの探索だけに特化したマイニングプールがある。
【００５１】
従って、最近、ブロック生成用の全計算能力がたった５つのプールに割かれているのは驚くべきことではない。このような状況において、大部分の計算能力が正直であるという仮定は信用できなくなる。
【００５２】
技術的課題３：曖昧さ  ビットコインにおいて、ブロックチェーンは必ずしも一意ではない。実際、ビットコインの最後の部分はしばしば分岐する。すなわちブロックチェーンは、例えば、あるユーザーによれば
【数１３】
2021507629.tif 000015
、また別のユーザーによれば
【数１４】
2021507629.tif 000016
であってよい。数ブロックがチェーンに追加された後にのみ、最初のｋ＋３ブロックが全てのユーザーにとって同じであると、合理的に確信することができる。従って、チェーンの最終ブロックに含まれる支払いを直ちに信頼することはできない。ブロックチェーン内でブロックが充分に深く、従って充分に安定しているか否かをよく確認することがより賢明であろう。
【００５３】
これとは別に、ビットコインに関して司法及び通貨政策面での懸念も持ち上がっている。
（脚注１：ビットコイン支払いが提供する（疑似）匿名性が資金洗浄及び／又は犯罪者或いはテロリスト組織への融資に悪用され得る。原理的に完全な匿名性を提供する従来の紙幣又は金の延べ棒も同じ問題を生起するが、これらの通貨は物理的に資金の送金が遅くなるため、司法当局によりある程度の監視が可能になる。
「現金を印刷する」能力は国家の極めて基本的な権力の１つである。従って原理的に、独立に流通する通貨を大量に使用することでこの権力が削減され得る。しかし現在、ビットコインは政府の金融政策を脅かすものからは程遠く、また、スケーラビリティ問題のため永久にそうならないであろう。）
【００５４】
１．２  Ａｌｇｏｒａｎｄの簡潔な説明
設定  Ａｌｇｏｒａｎｄは極めて厳しい設定で機能する。要するに、
（ａ）許可不要及び許可が必要な環境。Ａｌｇｏｒａｎｄは全く許可不要な環境でも効率的且つ安全に機能し、任意の多くのユーザーが一切審査や許可を受けることなく随時システムに参加することができる。無論、Ａｌｇｏｒａｎｄは許可が必要な環境では更によく機能する。
（ｂ）極めて敵対的な環境。Ａｌｇｏｒａｎｄは、以下を行い得る極めて強力な敵対者に対抗できる。
（１）許可不要な環境においてシステムの資金の２／３が正直なユーザーのものである前提で、狙ったユーザーを好きなときに即座に唆すことができる。（許可が必要な環境において、資金に依らず、ユーザーの２／３が正直であれば充分である。）
（２）唆したユーザー全員を完全に支配して完璧に協調させ、
（３）全てのメッセージの発信をスケジューリングする。（ただし、正直なユーザーが送った各メッセージｍが、ｍの大きさだけに依存する時間λm内に全ての（又は、充分に多くの）正直なユーザーに届いた場合）。
【００５５】
主要な特性  強力な敵対者が存在するにもかかわらず、Ａｌｇｏｒａｎｄでは、
・必要な計算量が最小である。本質的に、システム内にユーザーが何人いたとしても、１５００人のユーザーの各々は、最大でも数秒の計算を実行すれば済む。
・新規ブロックが素早く生成され、事実上ブロックチェーンから決して消滅しない。すなわち、Ａｌｇｏｒａｎｄのブロックチェーンは、無視できる（すなわち、１兆分の１すなわち１０-18未満の）確率でしか分岐しないことができる。従ってユーザーは、ブロックが出現したならば直ちに、新規ブロックに含まれる支払いを信頼することができる。
・全ての権限はユーザー自身にある。Ａｌｇｏｒａｎｄは真に分散システムである。特に、どの取引が認識されるかを支配できる（ビットコインの「採掘者」のような）外部の主体が存在しない。
【００５６】
Ａｌｇｏｒａｎｄの技術
１．新規且つ高速なビザンチン合意プロトコル。Ａｌｇｏｒａｎｄは、本発明の暗号、メッセージ通過、バイナリビザンチン合意（ＢΑ）プロトコル（ＢＡ*）を介して新規ブロックを生成する。プロトコルＢＡ*は、（以下に述べる）いくつかの追加的な特性を満たすだけでなく、極めて高速でもある。要約すれば、そのバイナリ入力バージョンは、プレーヤーｉが他の全てのプレーヤーに単一のメッセージｍiを送る３ステップのループを含んでいる。完全且つ同期化されたネットワークで実行され、プレーヤーの２／３超が正直であり、各ループの後で１／３超の確率でプロトコルは合意に達する。（プロトコルＢＡ*が一切弱められることなくビザンチン合意本来の定義を満たすことを強調する。）
【００５７】
Ａｌｇｏｒａｎｄは、異なる通信モデルにおいて、このバイナリＢＡプロトコルを利用して各新規ブロックで合意に達する。合意されたブロックは次いで、所定数の適当な検証者のデジタル署名を介して証明され、ネットワークを介して拡散される。
【００５８】
２．秘密暗号抽選。極めて高速ではあるが、プロトコルＢＡ*は数百万ユーザーにより実行されたならば更に速度が向上する。従って、Ａｌｇｏｒａｎｄは、ＢＡ*のプレーヤーを全ユーザーの集合よりもはるかに小さい部分集合となるように選択する。異なる種類の権力の集中課題を避けるため、各新規ブロックＢrは、選択された検証者ＳＶrの別の集合によるＢＡ*の新たな実行を介して構築されて合意に達する。原則として、このような集合の選択は、直接Ｂrを選択するのと同程度に困難であり得る。秘密の暗号抽選と称する新たなアプローチにより、この潜在的な問題に対処する。抽選は、資格のある個人の大きい集合から無作為に役員を選択する仕方である。（抽選は、例えばアテネ、フィレンツェ、及びベニス共和国により数世紀にわたり実施されてきた。現代の司法制度において、しばしば無作為な選択を用いて陪審員を選択している。ランダムサンプリングは選挙においても提唱されてきた。）分散システムでは無論、各々の検証者集合ＳＶrのメンバーを無作為に選択するのに必要な無作為なコインを選択することは問題を含んでいる。従って、全ユーザーの母集団から、自動的（すなわち、メッセージ交換を一切必要としない）且つ無作為であることが保証された仕方で、各々の検証者集合を選択するために暗号を利用する。同様に、新規ブロックＢrを提案する役割を担うユーザーすなわちリーダー、及びリーダーが提案したブロックで合意に達する役割を担う検証者集合ＳＶrを選択する。本発明のシステムは、１つ前のブロックの内容から導出可能であって、たとえ極めて強い敵対者が存在しても不正操作が不可能ないずれかの情報Ｑr-1を利用する。
【００５９】
３．量（シード）Ｑr。次の検証者集合及び新規ブロックＢrを構築する役割を担うリーダーを自動的に決定するためにブロックチェーンの最終ブロックＢr-1を用いる。このアプローチの問題は、前のラウンドで僅かに異なる支払いを選択するだけで、強力な敵対者が次のリーダーを相当程度支配可能になることである。敵対者がシステム内のプレーヤー／資金の１／１０００を制御するだけで、確実に全てのリーダーを悪意のある者にすることができる。（直観的説明の節４．１参照）この問題は、全てのプルーフオブステークアプローチの中心にあり、知られる限り、現時点まで満足に解決されていない。
【００６０】
この問題に対処すべく、強力な敵対者にとって予測不可能なだけでなく、影響を及ぼし得ないことが確実な、注意深く定義された別々の量Ｑrを意図的に構築して常に更新する。ｒ番目のブロックの生成に特別の役割を果たす全てのユーザーをＡｌｇｏｒａｎｄが秘密の暗号抽選を介して選択するＱrから来ているため、Ｑrをｒ番目のシードと称することにする。シードＱrはブロックＢr-1から導出可能である。
【００６１】
４．秘密の信任値。検証者集合及び新規ブロック（Ｂr）を構築する役割を担うリーダーを選択するには、現在の最終ブロックＢr-1を無作為且つ曖昧さ無しに用いることは充分でない。Ｂrを生成する前にＢr-1が既知でなければならないため、Ｂr-1から導出可能な影響を及ぼさない最後の量Ｑr-1もまた既知でなければならない。従って、検証者及びブロックＢｒを計算する役割を担うリーダーもそうである。従って、強力な敵対者は直ちに、検証者及びリーダーが証明するブロックを完全に制御すべくＢrに関するいずれかの議論に加わる前に全員を唆す恐れがある。
【００６２】
この問題を防止すべく、リーダーは（実際は検証者も）自身の役割を非公開に知るが、実際にその役割を担う誰に対しても証明力を有する適切な信任値を計算することができる。ユーザーが、自分が次ブロックのリーダーであることを非公開に理解したならば最初に、自身の提案された新規ブロックを非公開にアセンブルし、次いで自身の信任値と共に（証明可能なように）拡散する。このように、敵対者は次ブロックのリーダーが誰であるかが直ちに分かり、且つ敵対者が直ちにリーダーを唆すことができるが、敵対者が新規ブロックの選択に影響を及ぼすには遅すぎる。実際、敵対者は、強力な政府であってもウィキリークスがウイルス的に拡散したメッセージを瓶に戻すことができないのと同様に、リーダーのメッセージを「呼び戻す」ことができない。
【００６３】
以下で分かるように、リーダー自身を含め、リーダーが１人であることも、誰がリーダーであるかを皆が確実に知っていることも保証できない。しかしＡｌｇｏｒａｎｄでは曖昧ではない進展が保証される。
【００６４】
５．プレーヤーの代替可能性。リーダーは、新規ブロックを提案した後は仕事が終わったので、「退場」した方がよい（さもなければ敵対者に唆される。）しかしＳＶrの検証者にとって、ものごとはさほど単純ではない。実際、充分に多くの署名を有する新規ブロックＢrを証明する役割を担う検証者は最初に、リーダーが提案したビザンチン合意をブロックで実行しなければならない。問題は、如何に効率的であってもＢＡ*は複数のステップを要し、且つ２／３を超えるプレーヤーが正直であることを要することである。これが問題である理由は、効率性のため、ＢＡ*のプレーヤー集合は、全ユーザーの集合から無作為に選択した小さい集合ＳＶrを含んでいるからである。従って、強力な敵対者は、全ユーザーの１／３を唆すことはできないものの、ＳＶrの全メンバーを確実に唆すことができる！
【００６５】
幸い、ピアツーピア方式でメッセージを拡散することにより実行されるプロトコルＢＡ*がプレーヤーを代替可能であることが証明される。この新たな要件は、たとえ各々のステップが全く新たな、無作為且つ独立に選択されたプレーヤーの集合により実行されるとしても、プロトコルが正当且つ効率的にコンセンサスに達することを意味する。従って、数百万ユーザーがいる状況で、ＢＡ*のステップに関連付けられたプレーヤーの各々の小さい集合と次の集合との共通集合は、空である可能性が高い。
【００６６】
加えて、ＢＡ*の異なるステップのプレーヤーの集合は、恐らく、全く異なる濃度を有していよう。更に、各集合のメンバーは次のプレーヤー集合が誰であるかを知らず、内部状態を非公開に渡すことはない。
【００６７】
代替可能プレーヤー特性は実際、想像し得る能動的且つ極めて強力な敵対者を打ち負かすために必須である。代替可能プレーヤープロトコルが、多くのコンテキスト及びアプリケーションで必須であることが分かるものと考える。特に、代替可能プレーヤーは、全プレーヤーの小さい割合でさえ唆すことができ、より小さいサブプロトコルで全プレーヤーを唆すことが困難でない能動的な敵対者と共にプレーヤーのより大きな世界に埋め込まれた小さいサブプロトコルを安全に実行するために必須である。
【００６８】
追加的特性／技術：怠慢な正直さ  正直なユーザーは、オンラインであってプロトコルを実行することを含む、自身への所定の指示に従う。Ａｌｇｏｒａｎｄは控えめな計算及び通信要件しか有していないため、オンラインであってプロトコルを「バックグラウンド」で実行することはさほどの負荷ではない。無論、突然接続が切断されたか又はリブートが必要になったことに起因して生じたような、正直なプレーヤーのうち少数の「不在者」は自動的に許容される（そのような少数のプレーヤーが一時的に悪意者であると常に考えることができるため）。しかし、Ａｌｇｏｒａｎｄは、正直なユーザーが通常はオフラインである新たなモデルで機能すべく簡単に適合できることを指摘しておく。新たなモデルは以下のように非公式に導入することができる。
【００６９】
怠慢な正直さ。大雑把に言えば、ユーザーｉは、（１）プロトコルに参加するよう求められたときに自身の全ての所定の指示に従う場合、及び（２）ごく稀に、且つ適当な事前通告を以てプロトコルに参加するよう頼まれた場合に、怠慢だが正直である。
【００７０】
そのような正直さの緩和された概念により、正直な人々は必要とされた際に近くにいると確信してよく、そのような場合Ａｌｇｏｒａｎｄは次のことを証明する、
所与の時点で、関与しているプレーヤーの大多数に悪意があったとしても、システムは安全に動作する。
【００７１】
２  準備事項
２．１  暗号プリミティブ
理想的ハッシング。  任意の長さのストリングを固定長のバイナリストリングに写像する効率的に計算可能な暗号ハッシュ関数Ｈを信頼しよう。長年の慣習に従い、本質的に各々の可能なストリングｓを無作為且つ独立に選択（次いで固定）された任意の長さのバイナリストリングＨ（ｓ）に写像する関数である無作為なオラクルとしてＨをモデル化する。
【００７２】
記述する実施形態において、Ｈは長さが２５６ビットの出力を有している。実際、このような長さは、システムを効率的にするのに充分短く、且つシステムを安全にするのに充分長い。例えば、Ｈに衝突耐性を持たせたい。すなわち、Ｈ（ｘ）＝Ｈ（ｙ）となる２個の異なるストリングｘ及びｙを見つけるのが困難でなければならない。Ｈが長さ２５６ビットの出力を有する無作為なオラクルである場合、そのようなストリングのペアを見つけることは実際に困難である。（無作為に試行すれば、誕生日のパラドックスに従い２256/2＝２128回の試行が必要である。）
【００７３】
デジタル署名。  デジタル署名は、ユーザーが秘密鍵を一切共有することなく互いに情報を認証できるようにする。デジタル署名スキームは３個の高速アルゴリズム、すなわち確率的鍵生成器Ｇ、署名アルゴリズムＳ、及び検証アルゴリズムＶを含んでいる。
【００７４】
充分に大きい整数であるセキュリティパラメータｋを与えられれば、ユーザーｉはＧを用いてｋビット鍵（すなわちストリング）のペア、すなわち「公開」鍵ｐｋi及び該当する「秘密」署名鍵ｓｋiを生成する。公開鍵は対応する秘密鍵を決して「裏切らない」。すなわち、ｐｋiに関する知識が与えられても、ｉ以外は誰もｓｋiを天文学的時間より短い時間で計算することはできない。
【００７５】
ユーザーｉはｓｋiを用いてメッセージにデジタル署名を行う。各々の可能なメッセージ（バイナリストリング）ｍに対して、ｉは最初にｍをハッシュし、次いで入力Ｈ（ｍ）及びｓｋiに対してアルゴリズムＳを実行して、ｋビットストリングを生成する。
【数１５】
2021507629.tif 000017
（脚注２：Ｈは衝突弾性を有しているため、ｍに署名することにより、ある者が異なるメッセージｍ’に「偶然署名する」ことは実際には不可能である。）
【００７６】
バイナリストリング
【数１６】
2021507629.tif 000018
は（ｐｋiに対する）ｍへのｉのデジタル署名と称され、公開鍵ｐｋiがコンテキストから明らかな場合、単にｓｉｇi（ｍ）と表記することができる。
【００７７】
ｐｋiを知る者は誰でもこれを用いて、ｉにより生成されたデジタル署名を確認することができる。具体的には、（ａ）プレーヤーｉの公開鍵ｐｋi、（ｂ）メッセージｍ、及び（ｃ）ストリングｓ、すなわちメッセージｍへのｉの推定されたデジタル署名が入力されたならば、検証アルゴリズムＶはＹＥＳ又はＮＯを出力する。
【００７８】
デジタル署名スキームから必要とする特性は以下の通りである。
１．合法的署名が常に検証される：ｓ＝ｓｉｇi（ｍ）ならばＶ（ｐｋi，ｍ，ｓ）＝ＹＥＳ、及び
２．デジタル署名は偽造が困難：ｓｋiに関する知識がなければ、ｉが決して署名していないメッセージｍに対してＶ（ｐｋi，ｍ，ｓ）＝ＹＥＳであるようなストリングｓを見つけるには天文学的に長い時間を要する。
（強いセキュリティ要件に従い、たとえ他の任意のメッセージの署名が得られてもこれは真である。）
【００７９】
従って、プレーヤーｉは、自身の代理で他の誰かがメッセージに署名するのを防止すべく、自身の署名鍵ｓｋiを秘密（用語「秘密鍵」の所以）にし続けなければならず、自身が署名するメッセージを誰でも検証できるように、ｉは自身の鍵ｐｋiを公開する（用語「公開鍵」の所以）ことに関心がある。
【００８０】
メッセージ検索可能な署名  一般に、メッセージｍは自身の署名ｓｉｇi（ｍ）から検索できない。概念的に便利な「メッセージ検索可能性」特性を満たすデジタル署名を実質的に扱うため（すなわち、署名者とメッセージが署名から容易に計算可能であることを保証すべく、以下を定義する。
ｐｋiが明らかならば、
【数１７】
2021507629.tif 000019
。
【００８１】
一意なデジタル署名。  また、以下の追加的な特性を満たすデジタル署名スキーム（Ｇ，Ｓ，Ｖ）を考える。
【００８２】
３．一意性。以下のようなストリングｐｋ’、ｍ、ｓ、及びｓ’を見つけるのは困難である。
ｓ≠ｓ’且つＶ（ｐｋ’，ｍ，ｓ）＝Ｖ（ｐｋ’，ｍ，ｓ’）＝１
（一意性特性は合法的に生成された公開鍵ではないストリングｐｋ’の場合も成立する点に注意されたい。しかし特に、一意性特性が示唆するのは、指定された鍵生成器Ｇを用いて公開鍵ｐｋを合致する秘密鍵ｓｋと共に計算し、従ってｓｋを知ったならば、ｐｋに対して同じメッセージになされた２個の異なるデジタル署名を見つけるのは本質的に不可能な点である。）
【００８３】
注記
・一意な署名から検証可能なランダム関数へ。一意性特性を有するデジタル署名スキームに関して、写像ｍ→Ｈ（ｓｉｇi（ｍ））は各々の可能なストリングｍに、一意且つ無作為に選択された２５６ビットのストリングを関連付け、この写像の正しさは、署名ｓｉｇi（ｍ）が与えられたならば証明可能である。
【００８４】
すなわち、一意性特性を満たしている理想的なハッシング及びデジタル署名スキームは本質的に、検証可能なランダム関数（ＶＲＦ）の基本的実装を行う。
【００８５】
ＶＲＦは特別の種類のデジタル署名である。メッセージｍへのｉのこのような特別の署名をＶＲＦi（ｍ）と表記できる。一意性特性を満たすことに加え、検証可能なランダム関数は、充分に無作為であることが保証された出力を生成する。すなわち、ＶＲＦi（ｍ）は本質的に無作為であって、生成されるまで予測不可能である。対照的に、ＳＩＧi（ｍ）は充分に無作為である必要はない。例えば、ユーザーｉは、ＳＩＧi（ｍ）が常にｋビットストリングであるように、すなわち（辞書編成順に）小さくなる（すなわち冒頭の数ビットが常に０であり得る）ように自身の公開鍵を選択することができる。しかし、Ｈが理想的なハッシュ関数であるため、Ｈ（ＳＩＧi（ｍ））は常に無作為な２５６ビットストリングになる点に注意されたい。好適な実施形態において、各メッセージｍ及び各ユーザーｉに一意な乱数を正確に関連付けることが可能であるように一意性特性を満たすハッシングデジタル署名を拡張的に用いる。ＶＲＦと共にＡｌｇｏｒａｎｄを実装したならば、Ｈ（ＳＩＧi（ｍ））をＶＲＦi（ｍ）で代替することができる。特に、ユーザーｉは、最初にＳＩＧi（ｍ）、次いでＨ（ＳＩＧi（ｍ））を（順に、例えばＨ（ＳＩＧi（ｍ））を数ｐと比較するために）計算する必要がない。ユーザーは直接ＶＲＦi（ｍ）を計算してもよい。要するに、Ｈ（ＳＩＧi（ｍ））をＶＲＦｉ（ｍ）、又はプレーヤーｉにより容易に計算されるが、他の誰にも予測不可能であって、ｉ及びｍに明確に関連付けられた充分に無作為な数であると解釈できる点を理解されたい。
【００８６】
・デジタル署名に対する３つの異なるニーズ。Ａｌｇｏｒａｎｄでは、ユーザーｉは以下を行うべくデジタル署名を信頼する。
（１）ｉ自身の支払いの認証。本アプリケーションにおいて、鍵は「長期」（すなわち、長期間にわたり多くのメッセージに署名するために用いる）であって、通常の署名スキームによるものであってよい。
（２）ｉがラウンドｒのいずれかのステップｓで行動する資格を有していることを証明する信任値の生成。ここで、鍵は長期であってよいが、一意性特性を満たすスキームによるものでなければならない。
（３）ｉが行動する各ステップで送るメッセージの認証。ここで、鍵は短期的で（すなわち、最初に使用された後で破壊され）なければならないが、通常の署名スキームによるものであってよい。
【００８７】
・低コストの簡素化。説明を簡潔にすべく、各ユーザーｉが単一の長期鍵を有しているものと仮定する。従って、このような鍵は一意性特性を有する署名スキームによるものでなければならない。このような簡素性は計算コストが小さい。典型的に、一意なデジタル署名は実際、通常の署名よりも生成及び検証が僅かに高価である。
【００８８】
２．２  理想化された公開台帳
Ａｌｇｏｒａｎｄは、理想化された公開台帳に基づいて以下の支払いシステムを模倣しようとする。
【００８９】
１．初期状態。資金は、個別公開鍵（秘密裡に生成されてユーザーにより所有）に紐付けられている。ｐｋ1，．．．ｐｋjを初期公開鍵、及びａ1，．．．ａjをそれら各々の初期資金単位金額とすれば、初期状態は、
Ｓ0＝（ｐｋ1，ａ1），．．．，（ｐｋj，ａj）
であり、システムで共通の知識とする。
【００９０】
２．支払い。ｐｋを現在ａ≧０の資金単位を有する公開鍵、ｐｋ’を別の公開鍵、ａ’をａ以下の非負数とする。このとき、（有効な）支払い
【数１８】
2021507629.tif 000020
はｐｋに対するデジタル署名であって、いずれかの追加的な情報と共に、ｐｋからｐｋ’へのａ’資金単位の送金を指定している。次式、
【数１９】
2021507629.tif 000021
において、Ｉは、有用であるが感度は高くないと考えられる任意の追加的な情報（例：時間情報及び支払い識別子）を表し、Ｉは感度が高いと考えられる任意の追加的な情報（例：支払い理由、恐らくはｐｋ及びｐｋ’の所有者の属性等）である。
【００９１】
ｐｋ（又はその所有者）を支払人、各ｐｋ’（又はその所有者）を受取人、ａ’を支払い
【数２０】
2021507629.tif 000022
の金額と称する。
【００９２】
支払いを介した自由参加。ユーザーは自身の公開／秘密鍵ペアを生成することにより、いつでも好きなときにシステムに参加できることに注意されたい。従って、上述の支払い
【数２１】
2021507629.tif 000023
に出現する公開鍵ｐｋ’は、これまで一切資金を「所有していない」新たに生成された公開鍵であってよい。
【００９３】
３．マジック台帳。理想化されたシステムにおいて、全ての支払いは有効であって、誰でも見られるように「一般公開された」支払いの集合の改ざん防止されたリストＬに出現する。
Ｌ＝ＰＡＹ1，ＰＡＹ2，．．．，
【００９４】
各ブロックＰＡＹr+1は、ブロックＰＡＹrの出現以来なされた全ての支払いの集合を含んでいる。理想的なシステムにおいて、新規ブロックは、一定の（又は有限の）時間経過後に出現する。
【００９５】
議論
・より一般的な支払い及び未使用取引出力。より一般的に、公開鍵ｐｋがある金額ａを有していれば、ｐｋの有効な支払い
【数２２】
2021507629.tif 000024
は、
【数２３】
2021507629.tif 000025
である限り、金額
【数２４】
2021507629.tif 000026
の各々を鍵
【数２５】
2021507629.tif 000027
へ送金することができる。
【００９６】
ビットコイン及び同様のシステムにおいて、公開鍵ｐｋが所有する資金は別々の金額に分離され、ｐｋによりなされた支払い
【数２６】
2021507629.tif 000028
は、このように分離された金額ａの全額を送金しなければならない。ｐｋがａの一部ａ’＜ａだけを別の鍵に送金したい場合、残高すなわち未使用取引出力も別の鍵、恐らくｐｋ自身に送金しなければならない。
【００９７】
Ａｌｇｏｒａｎｄはまた、分割された金額を有する鍵により機能する。しかし、Ａｌｇｏｒａｎｄの新規態様に着目するには、より単純な支払い形式及び単一の金額が紐付けられた鍵に専念する方が、概念的により簡単である。
【００９８】
・現状。理想化されたスキームは、システムの現状に関する情報（すなわち、各公開鍵がどれくらいの資金単位を有しているか）を直接提供しない。この情報は、マジック台帳から導出可能である。
【００９９】
理想的なシステムにおいて、能動的なユーザーは常に最新の状態情報を保存及び更新するが、さもなければ情報を一から、又は最後に計算したときから再構築しなければならない。（しかし、以下でユーザーが効率的に現状を再構築できるようにすべくＡｌｇｏｒａｎｄを拡張する仕方を示す。）
【０１００】
・セキュリティ及び「プライバシー」。デジタル署名は、誰も他のユーザーの支払いを偽造できないことを保証する。支払い
【数２７】
2021507629.tif 000029
において、公開鍵と金額は隠されないが、機密情報Ｉは隠される。実際、Ｈ（Ｉ）だけが
【数２８】
2021507629.tif 000030
に出現し、Ｈは理想的なハッシュ関数であるため、Ｈ（Ｉ）は無作為な２５６ビット値であり、従って、Ｉが何であったかについて推測する以外に分かる方法がない。しかし、Ｉが何であったかを証明する（例：支払いの理由を証明するため）には支払人はＩを明かすだけでよい。明かされたＩの正確さは、Ｈ（Ｉ）を計算して、結果的に得られた値を
【数２９】
2021507629.tif 000031
の最後の項目と比較することにより検証できる。実際、Ｈは衝突耐性を有しているため、Ｈ（Ｉ）＝Ｈ（Ｉ’）となるような第２の値Ｉ’を見つけるのは難しい。
【０１０１】
２．３  基本概念及び表記
鍵、ユーザー、及び所有者  別途指定しない限り、各公開鍵（略して「鍵」）は長期且つ一意性特性を有するデジタル署名スキームに関係している。公開鍵ｉは、既にシステムに存在する別の公開鍵ｊがｉに支払いを行う際にシステムに参加する。
【０１０２】
個性のため、鍵を擬人化する。鍵ｉを「彼」と称し、ｉは正直であり、ｉがメッセージ等を送受信するものとする。ユーザーは鍵と同義語である。鍵と、それが属する人を区別したい場合、各々用語「デジタル鍵」及び「所有者」を用いる。
【０１０３】
許可不要及び許可が必要なシステム。デジタル鍵がいつでも参加でき、且つ所有者が複数のデジタル鍵を所有できる場合、システムは許可不要であり、逆の場合は許可が必要である。
【０１０４】
一意な表現  Ａｌｇｏｒａｎｄの各オブジェクトは一意な表現を有している。特に、各集合｛（ｘ，ｙ，ｚ，．．．）：ｘ∈Ｘ，ｙ∈Ｙ，ｚ∈Ｚ．．．｝は指定された仕方で、例えば、辞書編成順に先頭がｘ、次いでｙのように順序付けられている。
【０１０５】
同速度の時計  世界共通の時計は存在しない。むしろ、各ユーザーは自身の時計を有している。ユーザーの時計は一切同期化される必要がない。しかし、全員が同じ速度であると仮定する。
【０１０６】
例えば、ユーザーｉの時計で午後１２時のとき、別のユーザーｊの時計では午後２：３０であってよいが、ｉの時計で１２：０１のとき、ｊの時計では２：３１である。すなわち、「全てのユーザーにとって１分は同じ（充分に、本質的に同じ）である」。
【０１０７】
ラウンド  Ａｌｇｏｒａｎｄは、ラウンドと呼ばれる論理ユニットｒ＝０，１，．．．に編成されている。
【０１０８】
ラウンドを示すために常に上付き文字を用いる。非数値量Ｑ（例：ストリング、公開鍵、集合、デジタル署名等）がラウンドｒを指すことを示すために、単にＱrを書く。Ｑが（数として解釈可能なバイナリストリングではなく）真に数である場合のみＱ(r)と書くことで記号ｒがＱの指数と解釈されないようにする。
【０１０９】
ラウンドｒ＞０（の開始時点）で、全ての公開鍵の集合がＰＫrであり、システム状態は
【数３０】
2021507629.tif 000032
であり、
【数３１】
2021507629.tif 000033
は公開鍵ｉが使える資金の量である。ＰＫrがＳrから導出可能であってＳrはまた各公開鍵ｉの他の要素を指定する場合があることに注意されたい。
【０１１０】
ラウンド０において、ＰＫ0は初期公開鍵の集合であり、Ｓ0は初期状態である。ＰＫ0及びＳ0は共にシステムで共通の知識とする。説明を簡潔にすべく、ラウンドｒの開始時点で、ＰＫ1，．．．，ＰＫr及びＳ1，．．．Ｓrも同様である。
【０１１１】
ラウンドｒにおいて、システム状態はＳrからＳr+1に遷移する。数式的には以下の通りである。
Ｒｏｕｎｄ  ｒ：Ｓr→Ｓr+1
【０１１２】
支払い  Ａｌｇｏｒａｎｄでは、ユーザーは常に支払いを行う（及び分節２．７に記述するように拡散する）。ユーザーｉ∈ＰＫrの支払い
【数３２】
2021507629.tif 000034
は、理想的なシステムと同じ形式及び意味を有している。すなわち
【数３３】
2021507629.tif 000035
。
【０１１３】
支払い
【数３４】
2021507629.tif 000036
は、（１）金額ａが
【数３５】
2021507629.tif 000037
以下であり、且つ（２）いかなる公式の支払集合ＰＡＹr’（ｒ’＜ｒ）にも出現しない場合に、（ラウンドｒ支払いを縮めた）ラウンドｒで個々に有効である。（後述するように、第２の条件は
【数３６】
2021507629.tif 000038
が既に有効になっていないことを意味する。
【０１１４】
金額の合計が最大でも
【数３７】
2021507629.tif 000039
である場合、ラウンドｒ支払いの集合は包括的に有効である。
【０１１５】
支払集合  ラウンドｒ支払集合Ｐは、各ユーザーｉに対して、Ｐにおけるｉの支払い（恐らく皆無）が包括的に有効であるようなラウンドｒ支払いの集合である。全てのラウンドｒ支払集合の集合は
【数３８】
2021507629.tif 000040
である。Ｐの上位集合がラウンドｒ支払集合でない場合、ラウンドｒ支払集合Ｐは最大である。
【０１１６】
実際、支払い
【数３９】
2021507629.tif 000041
はラウンドρも指定し、
【数４０】
2021507629.tif 000042
、ある一定の非負整数ｋに対して［ρ，ρ＋ｋ］の外側のラウンドでは有効になり得ないことを示唆する。
（脚注３：これにより
【数４１】
2021507629.tif 000043
が「有効」になったか否かの確認が簡素化される（すなわち、ある支払集合ＰＡＹrが
【数４２】
2021507629.tif 000044
を含むか否かの判定が簡素化される）。ｋ＝０のとき、
【数４３】
2021507629.tif 000045
及び
【数４４】
2021507629.tif 000046
ならば、ｉは
【数４５】
2021507629.tif 000047
を再送信しなければならない。）
【０１１７】
公式支払集合  ラウンドｒ毎に、Ａｌｇｏｒａｎｄは、単一の（恐らく空の）支払集合ＰＡＹr、すなわちラウンドの公式支払集合を（以下に記述する仕方で）公けに選択する。（本質的に、ＰＡＹrは「実際に」生じたラウンドｒ支払いを表す。）
【０１１８】
理想的なシステム（及びビットコイン）と同様に、（１）新規ユーザーｊがシステムに参加する唯一の方法は、所与のラウンドｒの公式支払集合ＰＡＹrに属している支払いの受取人になることであり、（２）ＰＡＹrは、現在のラウンドＳrの状態から次のラウンドＳr+1の状態を判定する。数式的には次式の通りである。
ＰＡＹr：Ｓr→Ｓr+1
【０１１９】
具体的には、
１．ラウンドｒ＋１の公開鍵の集合ＰＫr+1は、ＰＫrと、ＰＡＹrの支払いに初めて出現した全ての受取人鍵の集合との和集合であり、
２．ユーザーｉがラウンドｒ＋１で所有している資金量
【数４６】
2021507629.tif 000048
は、ａi（ｒ）すなわちｉが前のラウンドで所有していた資金量
2021507629.tif 000049
ＰＡＹrの支払いに従いｉに支払われた金額の合計である。
【０１２０】
要するに、理想的なシステムと同様に、各状態Ｓr+1は以前の支払い履歴から導出可能である：
ＰＡＹ0，．．．，ＰＡＹr
【０１２１】
２．４  ブロック及び証明されたブロック
Ａｌｇｏｒａｎｄ0では、ラウンドｒに対応するブロックＢrは、ｒ自体、ラウンドｒの支払いの集合ＰＡＹr、以下に説明する量
【数４７】
2021507629.tif 000050
、及び１つ前のブロックＨ（Ｂr-1）のハッシュを指定する。従って、固定されたあるブロックＢ0から始めて、従来のブロックチェーンが得られる。
【数４８】
2021507629.tif 000051
【０１２２】
Ａｌｇｏｒａｎｄでは、ブロックの真正性は、Ｂrを証明済みブロック
【数４９】
2021507629.tif 000052
に変換する別の情報「ブロック証明」ＣＥＲＴrにより実際に保証される。マジック台帳は従って、以下のような証明済みブロックのシーケンスにより実装される。
【数５０】
2021507629.tif 000053
【０１２３】
議論  以下で分かるように、ＣＥＲＴrは、これらのメンバーの各々が実際にＳＶrに属する旨の証明と共に、Ｈ（Ｂr）、ＳＶrの大部分のメンバーへのデジタル署名の集合から構成される。無論、証明ＣＥＲＴrをブロック自体に含めることができるが、別々にしておいた方が概念的に明瞭であることが分かる。）
【０１２４】
ビットコインでは各ブロックは特別の特性を満たす、すなわち「暗号パズルの解を含んでいる」必要があるため、ブロック生成の計算負荷が高くなると共に、分岐は避けられず稀でなくなる。対照的に、Ａｌｇｏｒａｎｄのブロックチェーンは、主な利点が２つある。すなわち最小限の計算で生成され、且つ極端に高い確率では分岐しない。各ブロックＢiは、ブロックチェーンに参加したならば直ちに安全に最終である。
【０１２５】
２．５  受容可能な失敗確率
Ａｌｇｏｒａｎｄのセキュリティを解析すべく、何かがおかしい（例：検証者集合ＳＶrの大多数が正直でない）ことを受け入れようとする確率Ｆを指定する。暗号ハッシュ関数Ｈの出力長の場合と同様に、Ｆもパラメータである。しかし、その場合と同様に、Ａｌｇｏｒａｎｄでは充分なセキュリティで充分な効率を同時に得ることが実際に可能であるという事実をより直観的に把握できるように、Ｆを具体的な値に設定することが有用であると考える。Ｆが望み通りに設定できるパラメータであることを強調すべく、第１及び第２の実施形態で各々以下のように設定することができる。
Ｆ＝１０-12及びＦ＝１０-18
【０１２６】
議論  １０-12が実際に１兆分の１未満であることに注意すれば、このようなＦの選択は発明者らのアプリケーションに充分であると考えられる。１０-12は、敵対者が正直なユーザーの支払いを偽造できる確率ではないことを強調しよう。全ての支払いはデジタル署名され、従って適切なデジタル署名を用いた場合、支払いを偽造する確率は１０-12よりもはるかに小さく、実際にはほぼ０である。確率Ｆならば許容し得る悪い事象はＡｌｇｏｒａｎｄのブロックチェーン分岐である。発明者らによるＦの設定及び１分間にわたるラウンドにおいて、Ａｌｇｏｒａｎｄのブロックチェーンに分岐が生じるのは（概ね）１９０万年に一度程度の稀さであることに注意されたい。対照的に、ビットコインでは分岐は極めて頻繁に生じる。
【０１２７】
より欲張りな人は、Ｆをより低い値に設定することができる。このため、第２の実施形態でＦを１０-18に設定することを考える。ブロックが毎秒生成されると仮定すれば、１０18はビッグバンから現在まで宇宙が存在した推定秒数であることに注意されたい。従って、Ｆ＝１０-18として、ブロックが１秒で生成される場合、分岐を観測するために宇宙の年齢ほど待たねばならない。
【０１２８】
２．６  敵対的モデル
Ａｌｇｏｒａｎｄは、極めて敵対的なモデルで安全であるように設計されている。以下に説明する。
【０１２９】
正直な及び悪意のあるユーザー  あるユーザーが正直であるのは、自身の全てのプロトコル命令に従い、メッセージの送受信を完全に行える場合である。ユーザーに悪意（すなわち、分散コンピューティングの用語でビザンチン）があるのは、自身の所定の命令から自在に逸脱できる場合である。
【０１３０】
敵対者  敵対者とは、望みのユーザーをいつでも（唆すことができるユーザーの数の上限だけに制約される）悪意のある者にする、分かり易く擬人化された効率的（技術的に多項式時間）なアルゴリズムである。
【０１３１】
敵対者は、全ての悪意のあるユーザーを完全に支配して完璧に協調させる。敵対者は、ユーザーの全てのメッセージの送受信を含む全ての行動をユーザーになり代わって行い、任意の仕方でユーザーを所定の命令から逸脱させることができる。又は、敵対者は単にメッセージを送受信している唆されたユーザーを孤立させることができる。敵対者がユーザーｉにさせた行動によりｉの悪意が露見する場合があるものの、ユーザーｉに悪意のあることは他の誰にも自動的には分からないことを明言しよう。
【０１３２】
しかしこの強力な敵対者は、
・無限の計算能力を有しておらず、無視できる確率でしか正直なユーザーのデジタル署名を偽造することができず、
・正直なユーザー同士のメッセージ交換にいかなる仕方でも干渉することができない。
【０１３３】
更に、正直なユーザーを攻撃する能力は、以下の仮定の１つにより制約される。
【０１３４】
資金の大部分が正直  資金の大部分が正直（ＨＭＭ）という仮定の連続体を考える。すなわち、各々の非負整数ｋ及び実数ｈ＞１／２に対して次式が成り立つ。
ＨＨＭk＞ｈ：毎ラウンドｒにおける正直なユーザーが、ラウンドｒ−ｋでシステムにあった全資金のｈより大きい割合を所有していた。
【０１３５】
議論。  全ての悪意のあるユーザーが行動を完全に協調（あたかも単一の主体すなわち敵対者により支配されているかの如く）させるものと仮定するのは却って悲観的な仮説である。余りにも大勢を完全に協調させるのは困難である。恐らく、悪意のあるプレーヤーの別々のグループ内でしか協調は生じない。しかし、悪意のあるユーザーが享受できる協調のレベルについて確信が持てないため、後悔するよりも安全な方がよいであろう。
【０１３６】
敵対者が非公開に、動的に、及び直ちにユーザーを唆せると仮定することもまた悲観的である。つまり、現実的にはユーザーの行動を完全に支配するには、ある程度の時間を要する。
【０１３７】
ＨＭＭk＞ｈという仮定は、１ラウンドが（平均）１分で実行されたならば、所与のラウンドで、ｋ＝１２０ならば少なくとも２時間、ｋ＝１０，０００ならば少なくとも１週間は資金の大部分が正直なユーザーの手元に残るであろうことを示唆する。
【０１３８】
ＨＭＭ仮定及び先の大部分の正直な計算能力は、計算能力は金で買えるので、悪意のあるユーザーは資金の大部分を所有していれば大部分の計算能力を得ることができるという意味で関連していることに注意されたい。
【０１３９】
２．７  通信モデル
メッセージ拡散、すなわち「ピアツーピアゴシップ」を通信の唯一の手段と考え、全ての拡散されたメッセージが適時にほぼ全ての正直なユーザーに届くと仮定する。（脚注４：本質的に、ビットコインと同様に、ユーザーがメッセージｍを拡散した際に、最初にｍを受信している全ての能動的なユーザーｉが、適当な少ない数の能動的なユーザー、すなわちｍの転送先である自身の「隣人」を、恐らくユーザーから承認を受信するまで無作為且つ独立に選択する。ｍの拡散が終了するのは、初めてどのユーザーもｍを受信しなかったときである。）本質的に、正直なユーザーにより拡散された各メッセージｍは、ｍの長さに依存する所与の時間内に全ての正直なユーザーに届くものと仮定する。（実際にはｍは正直なユーザーの充分に高い割合に達すれば充分である。）
【０１４０】
３  従来の設定におけるＢＡプロトコルＢＡ*
既に強調したように、ビザンチン合意はＡｌｇｏｒａｎｄの主要な要素である。実際、Ａｌｇｏｒａｎｄが分岐に影響を受けないのは、そのようなＢＡプロトコルを用いるからである。しかし、強力な敵対者から保護するために、Ａｌｇｏｒａｎｄは新規プレーヤーの代替可能制約を満たすＢＡプロトコルに依存しなければならない。また、Ａｌｇｏｒａｎｄが効率的であるためには、このようなＢＡプロトコルは極めて効率的でなければならない。
【０１４１】
ＢＡプロトコルは当初、理想化された通信モデル、すなわち完全同期ネットワーク（ＳＣネットワーク）に対して定義された。このようなモデルにより、ＢＡプロトコルの設計及び解析を簡素化することができる。従って、本節では、ＳＣネットワーク用に新たなＢＡプロトコル、すなわちＢＡ*を導入し、プレーヤー代替可能性の問題を完全に無視する。プロトコルＢＡ*は、別々の値の寄与である。実際、これまで知られている最も効率的なＳＣネットワーク用の暗号ＢＡプロトコルである。
【０１４２】
Ａｌｇｏｒａｎｄプロトコル内で用いるため、異なる通信モデル及びコンテキストを考慮すべくＢＡ*を変更する。
【０１４３】
ＢＡ*が動作するモデル及びビザンチン合意の概念を想起することから始める。
【０１４４】
３．１  完全同期ネットワーク及び該当敵対者
ＳＣネットワークにおいて、各積分時刻ｒ＝１、２，．．．で刻時する共通のクロックがある。
【０１４５】
各々の偶数時刻クリックｒにおいて、各プレーヤーｉは即時且つ同時に、自身を含む各プレーヤーｊに単一のメッセージ
【数５１】
2021507629.tif 000054
（恐らく空メッセージ）を送る。各メッセージ
【数５２】
2021507629.tif 000055
は、プレーヤーｊが時刻ｒ＋１で送信者ｉの属性と共に正しく受信される。
【０１４６】
再び、通信プロトコルにおいて、プレーヤーは、所定の指示の全てに従うならば正直であり、さもなければ悪意がある。全ての悪意のあるプレーヤーは完全に支配されていて、特に、悪意のあるプレーヤー宛の全てのメッセージを直ちに受信して、送るメッセージを選択する敵対者により完全に協調させられる。
【０１４７】
敵対者は、望みの奇数時刻で、狙った正直なユーザーを直ちに悪意のある者に変えることができ、悪意のあるプレーヤー数の可能な上限ｔにしか制約されない。すなわち、敵対者は、通常通り配信されるであろう「正直なユーザーｉにより既に送られたメッセージに干渉することはできない」。
【０１４８】
敵対者はまた、各偶数ラウンドにおいて、正直なプレーヤーが現在送っているメッセージを即時に見て、その情報を即時に用いて悪意のあるプレーヤーが同時刻に送るメッセージを選択する追加的な能力を有している。
【０１４９】
３．２  ビザンチン合意の概念
ビザンチン合意の概念は当初、バイナリの場合、すなわち全ての初期値がビットからなる場合について導入されたかもしれない。しかし、間もなく任意の初期値まで拡張された。ＢＡプロトコルを、任意の値の場合を意味するものとする。
【０１５０】
定義３．１．同期ネットワークにおいて、Ｐを、プレーヤー集合をプレーヤー同士が共通に知っているｎプレーヤープロトコルとし、ｔをｎ≧２ｔ＋１であるような正整数とする。Ｐを、健全性σ∈（０，１）を有する任意の値（又はバイナリ）（ｎ，ｔ）ビザンチン合意プロトコルと呼ぶのは、特別の記号⊥を含んでいない値Ｖの全ての集合に対して（又はＶ＝｛０，１｝に対して）、プレーヤーのうち最大でもｔ人が悪意を有し、且つ全てのプレーヤーｉが初期値ｖi∈Ｖから始まる実行において、全ての正直なプレーヤーｊが確率１で停止し、少なくとも確率σで、以下の２つの条件を満たすように値ｏｕｔi∈Ｖ∪｛⊥｝を出力する場合である。
１．合意：ｏｕｔ∈Ｖ∪｛⊥｝が存在し、全ての正直なプレーヤーｉに対してｏｕｔi＝ｏｕｔとなる。
２．整合性：ある値ｖ∈Ｖに対して、全てのプレーヤーｉについてｖi＝ｖならば、ｏｕｔ＝ｖである。
【０１５１】
ｏｕｔをＰの出力と称し、各ｏｕｔiをプレーヤーｉの出力と称する。
【０１５２】
３．３  ＢＡ表記＃
ＢＡプロトコルにおいて、プレーヤーは、所与のステップで何人のプレーヤーが自身にメッセージを送ったかカウントすることが求められる。従って、送られ得る各々の可能な値ｖに対して、
【数５３】
2021507629.tif 000056
（又はｓが明らかな場合は単に＃i（ｖ））が、ｉがステップｓでｖを受信したプレーヤーｊの数である。
【０１５３】
プレーヤーｉが各プレーヤーｊからちょうど１個のメッセージを受信することを想起して、プレーヤー数がｎである場合、全てのｉ及びｓに対して
【数５４】
2021507629.tif 000057
である。
【０１５４】
３．４  新規バイナリＢＡプロトコルＢＢＡ*
本節において、３分の２以上のプレーヤーの正直さに依存して、極めて高速である新たなバイナリＢＡプロトコル（ＢＢＡ*）を提示する。悪意のあるプレーヤーが何をしようと、主ループの各々の実行は、機械的に実行されるだけでなく、プレーヤーを確率１／３で合意に達せさせる。
【０１５５】
ＢＢＡ*において、各プレーヤーは、一意な署名特性を満たすデジタル署名スキームの自身の公開鍵を有している。本プロトコルは完全同期ネットワークで動作すべく意図されているため、プレーヤーｉが自身の各メッセージに署名する必要はない。
【０１５６】
デジタル署名を用いて、ステップ３で充分に一般的なランダムビットを生成する。（Ａｌｇｏｒａｎｄでは、デジタル署名を用いて他の全てのメッセージも認証する。）
【０１５７】
プロトコルは最小限の設定、すなわちプレーヤーの鍵から独立した一般的な無作為なストリングｒを要する。（Ａｌｇｏｒａｎｄでは、ｒは実際には量Ｑrで代替される。）
【０１５８】
プロトコルＢＢＡ*は３ステップループであり、プレーヤーは繰り返しブール値を交換し、異なるプレーヤーが異なる時点でループを出ることができる。プレーヤーｉは、あるステップで、特別の値０*又は特別の値１*を拡散して、全てのプレーヤーに、将来の全てステップで各々がｉから０及び１を受信する「振りをする」ように指示することによりループを出る。（換言すれば、プレーヤーｊが別のプレーヤーｉから受信した最後のメッセージがビットｂであったと仮定する。すると、ｉから一切メッセージを受信しない任意のステップで、ｊはあたかもｉが自身にビットｂを送ったかのように振る舞う。）
【０１５９】
プロトコルは、３ステップループが何回実行されたか表すカウンタγを用いる。ＢＢＡ*の開始時点でγ＝０である。（γを大域的カウンタとみなすこともできるが、実際にはループが実行される都度個々のプレーヤーにより増分される。）
【０１６０】
ｎ≧３ｔ＋１が存在し、ｔは悪意のあるプレーヤーの可能な最大数である。バイナリストリングｘを、（先頭が０であり得る）バイナリ表現がｘである整数とし、ｌｓｂ（ｘ）はｘの最下位ビットを表す。
【０１６１】
プロトコルＢＢＡ*
（通信）ステップ１．［コインが０に固定されたステップ］各プレーヤーｉはｂiを送る。
１．１
【数５５】
2021507629.tif 000058
ならばｉはｂi＝０を設定、０＊を送信、ｏｕｔi＝０を出力、次いで停止する。
１．２
【数５６】
2021507629.tif 000059
ならばｉはｂi＝１を設定する。
１．３  さもなければ、ｉはｂi＝０を設定する。
【０１６２】
（通信）ステップ２．［コインが１に固定されたステップ］各プレーヤーｉはｂiを送る。
２．１
【数５７】
2021507629.tif 000060
ならばｉはｂi＝１を設定、１＊を送信、ｏｕｔi＝１を出力、次いで停止する。
２．２
【数５８】
2021507629.tif 000061
ならばｉはｂi＝０を設定する。
２．３  さもなければ、ｉはｂi＝１を設定する。
【０１６３】
（通信）ステップ３．［コインを本当に投げたステップ］各プレーヤーｉはｂi及びＳＩＧi（ｒ，γ）を送信する。
３．１
【数５９】
2021507629.tif 000062
ならばｉはｂi＝０を設定する。
３．２
【数６０】
2021507629.tif 000063
ならばｉはｂi＝１を設定する。
３．３  さもなければ、Ｓi＝｛ｊ∈Ｎ（ステップ３で正当なメッセージをｉに送った者）｝として、ｉは
【数６１】
2021507629.tif 000064
を設定し、γiを１増分して、ステップ１に戻る。
【０１６４】
定理３．１．  ｎ≧３ｔ＋１である都度、ＢＢＡ*は健全性１を有するバイナリ（ｎ，ｔ）ＢＡプロトコルである。
【０１６５】
定理３．１の証明は、ｈｔｔｐｓ：／／ｐｅｏｐｌｅ．ｃｓａｉｌ．ｍｉｔ．ｅｄｕ／ｓｉｌｖｉｏ／ＳｅｌｅｃｔｅｄＳｃｉｅｎｔｉｆｉｃＰａｐｅｒｓ／ＤｉｓｔｒｉｂｕｔｅｄＣｏｍｐｕｔａｔｉｏｎ／ＢＹＺＡＮＴＩＮＥＡＧＲＥＥＭＥＮＴＭＡＤＥＴＲＩＶＩＡＬ．１５  ｐｄｆで見ることができる。
【０１６６】
３．５  等級化コンセンサス及びプロトコルＧＣ
任意の値に対して、ビザンチン合意よりもはるかに弱いコンセンサスの概念を想起しよう。
【０１６７】
定義３．２．  Ｐを、全てのプレーヤーの集合が共通知識であって、各プレーヤーｉが任意の初期値
【数６２】
2021507629.tif 000065
を非公開に知っているプロトコルとする。
【０１６８】
Ｐを（ｎ，ｔ）等級化コンセンサスプロトコルであると言うのは、ｎ人のうち最大でもｔ人が悪意を有しているプレーヤーによる全ての実行において、全ての正直なプレーヤーｉが、以下の３つの条件を満たすべく値の序列のペア（ｖi，ｇi）の出力を停止する場合であり、ここで（ｇi∈｛０，１，２｝）であり、
１．全ての正直なプレーヤーｉ及びｊに対して、｜ｇi−ｇj｜≦１
２．全ての正直なプレーヤーｉ及びｊに対して、ｊ，ｇi，ｇj＞０⇒ｖi＝ｖj
３．ある値ｖに対して
【数６３】
2021507629.tif 000066
ならば、全ての正直なプレーヤーｉに対してｖi＝ｖ且つｇi＝２である。
【０１６９】
以下のツーステッププロトコルＧＣは、文献で公知の等級化コンセンサスプロトコルである。４．１節のプロトコル
【数６４】
2021507629.tif 000067
のステップに合致させるべく、ＧＣのステップを各々２及び３と呼ぶ。（実際、
【数６５】
2021507629.tif 000068
の第１ステップは、他の事項、すなわち新規ブロックの提案に関する。）
【０１７０】
プロトコルＧＣ
ステップ２．各プレーヤーｉは全てのプレーヤーに
【数６６】
2021507629.tif 000069
を送信する。
ステップ３．各プレーヤーｉは、全てのプレーヤーに
【数６７】
2021507629.tif 000070
の場合に、且つこの場合にのみ、ストリングｘを送る。
出力判定。各プレーヤーｉは、次式のように計算されるペア（ｖi，ｇi）を出力する：
・あるｘに対して、
【数６８】
2021507629.tif 000071
ならば、ｖi＝ｘ且つｇi＝２
・あるｘに対して、
【数６９】
2021507629.tif 000072
ならば、ｖi＝ｘ且つｇi＝１
・さもなければ、ｖi＝⊥且つｇi＝０
【０１７１】
プロトコルＧＣが文献で公知のプロトコルであるため、以下の定理が成立することは既知である。
【０１７２】
定理３．２．  ｎ≧３ｔ＋１ならば、ＧＣは（ｎ，ｔ）等級化ブロードキャストプロトコルである。
【０１７３】
３．６  プロトコルＢＡ*
ここでバイナリＢＡプロトコルＢＢＡ*及び等級化コンセンサスプロトコルＧＣを介した任意値ＢＡプロトコルＢＡ*を説明する。以下、各プレーヤーｉの初期値は
【数７０】
2021507629.tif 000073
である。
【０１７４】
プロトコルＢＡ*
ステップ１及び２．  各プレーヤーｉは、
【数７１】
2021507629.tif 000074
が入力されたならばＧＣを実行してペア（ｖi，ｇi）を計算する。
ステップ３，．．．  各プレーヤーｉは、ｇi＝２ならば初期入力を０として、さもなければ初期入力を１としてＢＢＡ*を実行してビットｏｕｔiを計算する。
【０１７５】
出力判定。  各プレーヤーｉは、ｏｕｔi＝０ならばｖiを、さもなければ⊥を出力する。
【０１７６】
定理３．３．  ｎ≧３ｔ＋１である都度、ＢＡ*は健全性１を有する（ｎ，ｔ）ＢＡプロトコルである。
【０１７７】
証明。最初に整合性、次いで合意を証明する。
【０１７８】
整合性の証明。ある値ｖに対して、
【数７２】
2021507629.tif 000075
と仮定する。次いで、等級化コンセンサスの特性３により、ＧＣの実行後、全ての正直なプレーヤーが（ｖ，２）を出力する。従って、ＢＢＡ*の実行の終了時点で全ての正直なプレーヤーの初期ビットは０である。従って、ＢＡ*の実行終了時点で、バイナリビザンチン合意の合意特性により、全ての正直なプレーヤーに対してｏｕｔi＝０である。これはＢＡ*における各々の正直なプレーヤーｉの出力がｖi＝ｖであることを意味する。□
【０１７９】
合意の証明。  ＢＢＡ*がバイナリＢＡプロトコルであるため、
（Ａ）全ての正直なプレーヤーｉに対してｏｕｔi＝１、又は
（Ｂ）全ての正直なプレーヤーｉに対してｏｕｔi＝０である。
【０１８０】
ケースＡにおいて、ＢＡ*で全ての正直なプレーヤーは⊥を出力し、従って合意が成立する。ここでケースＢを考える。この場合、ＢＢＡ*の実行において、少なくとも１人の正直なプレーヤーｉの初期ビットは０である。（実際、全ての正直なプレーヤーの初期ビットが１であったならば、ＢＢＡ*の整合性特性により、全ての正直なｊに対してｏｕｔj＝１が得られよう。）従って、ＧＣの実行後、ｉはある値ｖに対してペア（ｖ，２）を出力する。従って、等級化コンセンサスの特性１により、全ての正直なプレーヤーｊに対してｇj＞０である。従って、等級化コンセンサスの特性２により、全ての正直なプレーヤーｊに対してｖj＝ｖである。これは、ＢＡ*の終了時点で全ての正直なプレーヤーｊがｖを出力することを示唆する。従ってＢのケースでも合意が成立する。□
【０１８１】
整合性と合意が共に成立するため、ＢＡ*は任意値ＢＡプロトコルである。■
【０１８２】
プロトコルＢＡ*は、ゴシッピングネットワークでも動作し、実際、認識された極めて敵対的なモデルでＡｌｇｏｒａｎｄが安全であるために必須のプレーヤー代替可能性特性を満たしている。
【０１８３】
ＢＢＡ*及びＢＡ*のプレーヤー代替可能性  ここでプロトコルＢＡ*及びＢＢＡ*が、通信がプレーヤー代替可能性を満たすピアツーピアゴシップを介して行われるネットワークでの実行に適合可能である理由を若干直観的に説明しよう。具体性を持たせるべく、ネットワークが１０Ｍ人のユーザーを有し、ＢＢＡ*（又はＢＡ*）の各ステップｘが、秘密の暗号抽選を介して無作為に選択され、ステップｘでメッセージを送る資格を有していることを証明する証明を有する１０，０００人のプレーヤーの集団により実行されるものと仮定する。所与のステップで送られた各メッセージがステップ番号を特定し、送信者によりデジタル署名されていて、自身の送信者がそのステップで話す資格を有していることを証明する証明を含むものと仮定する。
【０１８４】
最初に、正直なプレーヤーの割合ｈが２／３よりも充分に大きい（例：７５％）場合、圧倒的な確率で、各ステップで選択された委員会が、必要な２／３の正直な大多数を有している。
【０１８５】
また、１０，０００人強の無作為に選択された委員会が各ステップで変化するという事実はＢＢＡ*又はＢＡ*のいずれの正当な動作も妨げない。実際、いずれのプロトコルにおいても、プレーヤーｉはステップｓで、ステップｓ−１において所与のメッセージｍを受信した回数に反応するだけである。ゴシッピングネットワークにいるため、ステップｓ−１で送られた、ステップｓで動作すべく選択されたものを含む、全てのメッセージが（直観的であるために直ちに）全てのユーザーに届く。更に、ステップｓ−１で送られた全てのメッセージがステップ番号を指定しており、送信者がステップｓ−１で話す権限が実際に与えられた旨の信任値を含んでいる。従って、送信者がステップｓ−１でも選択されたか否かに依らず、ステップｓで行動すべく選択されたユーザーｉは、自身が正当なステップｓ−１のメッセージを受信した回数を完全に正しくカウントすることができる。ユーザーｉがそれまで全てのステップを実行していたか否かは全く重要でない。全てのユーザーは「同じ船に乗って」おり、従って簡単に他のユーザーで代替できる。
【０１８６】
４  Ａｌｇｏｒａｎｄの２つの実施形態
極めて高いレベルで議論したように、Ａｌｇｏｒａｎｄの１ラウンドは以下のように理想的に進行する。第一に、無作為に選択されたユーザー、すなわちリーダーが新規ブロックを提案して循環させる。（この処理は最初に数人の潜在的リーダーを選択し、次いで、少なくともある程度の時間にわたり、単一の共通リーダーが出現することを保証するステップを含む。）第２に、無作為に選択されたユーザーの委員会が選択され、リーダーが提案したブロックに対してビザンチン合意に達する。（処理は、ＢＡプロトコルの各ステップが別途選択された委員会により実行されることを含んでいる。）同意に達したブロックは次いで、委員会メンバーの所与の閾値（ＴH）によりデジタル署名される。これらのデジタル署名は、どれが新規ブロックであるかを誰でも確信できるように拡散される。（これは、署名者の信任値を循環させて、新規ブロックのハッシュだけを認証して、そのハッシュが明らかになれば全員がブロックを学習できることを保証するステップを含む。）
【０１８７】
次の２個の節において、適切な「ユーザーの大多数は正直」仮定の下で各々機能する基本Ａｌｇｏｒａｎｄ設計の２つの実施形態
【数７３】
2021507629.tif 000076
及び
【数７４】
2021507629.tif 000077
を提示する。節７において、これらの実施形態を「資金の大部分が正直」仮定の下で採用する仕方を示す。
【０１８８】
【数７５】
2021507629.tif 000078
は委員の２／３超が正直であることを認識するだけである。また、
【数７６】
2021507629.tif 000079
において、ビザンチン合意に達するまでのステップ数は、適切に大きい数を上限としているため、一定数のステップ内で合意に達することが圧倒的な確率で保証されている（しかし、
【数７７】
2021507629.tif 000080
のステップよりも潜在的に長い時間を要する）。最後のステップまで未だ合意に達していない遠隔ケースにおいて、委員会は常に有効である空ブロックについて合意する。
【０１８９】
【数７８】
2021507629.tif 000081
は、委員会の正直なメンバーの人数が常に一定の閾値ｔH以上である（圧倒的な確率で、委員会メンバーの少なくとも２／３が正直であることを保証する）ことを想定している。また、
【数７９】
2021507629.tif 000082
は任意のステップ数で（しかし潜在的に
【数８０】
2021507629.tif 000083
よりも短い時間で）ビザンチン合意に達することができる。
【０１９０】
当業者には、これらの基本的実施形態の多くの変型例を導出できることが理解されよう。特に、
【数８１】
2021507629.tif 000084
を前提として、任意のステップ数でビザンチン合意に到達できるように
【数８２】
2021507629.tif 000085
を変更することは容易である。
【０１９１】
両方の実施形態は、以下の共通核、表記、概念、及びパラメータを共有している。
【０１９２】
４．１  共通核
目的  理想的には、各ラウンドｒに対して、Ａｌｇｏｒａｎｄは以下の特性を満たす必要がある。
１．完全な正しさ。全ての正直なユーザーが同一ブロックＢrについて同意する。
２．完全性１。確率１で、正直なユーザーによりブロックＢrが選択されている。
（実際、悪意のあるユーザーは常に、自身の「友人」の支払いだけを含む支払集合を有するブロックを選択することができる。）
【０１９３】
無論、完全な正しさだけを保証するのはたやすい。全員が常に公式支払集合ＰＡＹrが空になるように選択する。しかしこの場合、システムの完全性は０である。残念ながら、悪意のあるユーザーが存在するならば完全な正しさと完全性１の両方を保証することは容易でない。従ってＡｌｇｏｒａｎｄはより現実的な目的を採用する。非公式に、正直なユーザーの割合をｈ、但しｈ＞２／３、と表記すれば、Ａｌｇｏｒａｎｄの目標は、
圧倒的な確率で、完全な正しさ及びｈに近い完全性を保証することである。
【０１９４】
完全性よりも正しさを優先させることは合理的な選択に思える。１ラウンドで処理されなかった支払いは次のラウンドで処理できるが、可能ならば分岐を避けるべきである。
【０１９５】
導かれたビザンチン合意  過剰な時間及び通信を一時的に無視すれば、完全な正しさを以下のように保証することができる。ラウンドｒの開始時点で、各ユーザーｉは自身の候補ブロック
【数８３】
2021507629.tif 000086
を提案する。次いで、全てのユーザーが、候補ブロックのうち１個だけについてビザンチン合意に達する。発明者らの導入から、採用したＢＡプロトコルは２／３の正直な大多数を必要とし、プレーヤーは代替可能である。各々ステップは無作為に選択された、内部変数を一切共有しない検証者の小さい集合により実行することができる。
【０１９６】
残念ながら、上述のアプローチは全くうまくいかない。その理由は、正直なユーザーが提案する候補ブロックは互いに全く異なる可能性が極めて高いからである。実際、各々の正直なユーザーは異なる支払いを見る。従って、異なる正直なユーザーが見た支払いの集合の多くが重なり合っているにもかかわらず、全ての正直なユーザーが同じブロックを提案する可能性は低い。従って、ＢＡプロトコルの整合性に関する合意は決して強制ではなく、合意１だけであり、従って、合意に達するのは良いブロックに関してではなく、常に⊥に関してである。
【０１９７】
Ａｌｇｏｒａｎｄ’はこの問題を以下のように回避する。最初に、ラウンドｒのリーダーｌrが選択される。次いで、ｌrは自身の候補ブロック
【数８４】
2021507629.tif 000087
を拡散する。最後に、ユーザーはｌrから実際に受信するブロックに関して合意に達する。ｌrが正直であるときは常に完全な正しさと完全性１の両方が成立するため、Ａｌｇｏｒａｎｄ’はｌrがｈに近い確率で正直であることを保証する。
【０１９８】
リーダー選択  Ａｌｇｏｒａｎｄにおいて、ｒ番目のブロックは以下の形式である。
【数８５】
2021507629.tif 000088
【０１９９】
序で既に述べたように、量Ｑr-1は、極めて強力な敵対者により本質的に不正操作が不可能なように注意深く構築されている。（本節の後半でその理由について直観的に説明する。）ラウンドｒの開始時点で、全てのユーザーはそれまでのブロックチェーンＢ0，．．．，Ｂr-1を知っており、そこから全ての先行ラウンドのユーザーの集合、すなわちＰＫ1，．．．，ＰＫr-1を導出する。ラウンドｒの潜在的リーダーは下記を満たすようなユーザーｉである。
．Ｈ（ＳＩＧi（ｒ，１，Ｑr-1））≦ｐ
【０２００】
以下に説明する。基礎となるデジタル署名スキームのメッセージ検索可能性特性により、量Ｑr-1はブロックＢr-1から導出可能であるため、ことに注意されたい。更に、基礎となる署名スキームは一意性特性を満たす。従って、ＳＩＧi（ｒ，１，Ｑr-1）はｉ及びｒに一意に関連付けられたバイナリストリングである。従って、Ｈは無作為オラクルであるため、Ｈ（ＳＩＧi（ｒ，１，Ｑr-1））はｉ及びｒに一意に関連付けられた無作為な長さ２５６ビットのストリングである。Ｈ（ＳＩＧi（ｒ，１，Ｑr-1））の前の記号「．」は（このケースではバイナリの）小数点であるため、
【数８６】
2021507629.tif 000089
は、ｉ及びｒに一意に関連付けられた０〜１の間の無作為な２５６ビットの数のバイナリ拡張である。従って、ｒiがｐ以下である確率は本質的にｐである。
【０２０１】
確率ｐは、少なくとも１個の潜在的検証者が圧倒的な（すなわち１−Ｆ）確率で正直であるように選択される。（実際、ｐはそのような最小確率となるように選択される。）
【０２０２】
ｉが自身の署名を計算できる唯一のユーザーであるため、自身がラウンド１の潜在的検証者である否かを判定できるのはｉだけであることに注意されたい。しかし、自身の信任値
【数８７】
2021507629.tif 000090
を明かすことにより、ｉはラウンドｒの潜在的検証者であることを誰に対しても証明することができる。
【０２０３】
リーダーｌrは、自身のハッシュされた信任値が、他の全ての潜在的リーダーｊのハッシュされた信任値よりも小さい潜在的リーダーであると定義される。すなわち
【数８８】
2021507629.tif 000091
が成り立つ。
【０２０４】
悪意のあるｌrは自身の信任値を明かさないかもしれないため、ラウンドｒの正当なリーダーが知られることは決してなく、且つ極めて稀な同点を禁止しているので、ｌrが実際にラウンドｒの唯一のリーダーである。
【０２０５】
最後に、最後だが重要な詳細について述べる。ユーザーｉがラウンドｒの潜在的リーダー（従ってリーダー）であり得るのは、少なくともｋラウンドにわたりシステムに属した場合だけである。これにより、Ｑrの不正操作防止及び全ての将来のＱ量が保証される。実際、潜在的リーダーのうち１人が実際にＱrを決定することになる。
【０２０６】
検証者選択  ラウンドｒの各ステップｓ＞１が検証者の小さい集合ＳＶr,sにより実行される。再び、各々の検証者はｉ∈ＳＶr,sはｒ以前のラウンドでシステムｋに既に存在していたユーザーの中から、再び特別の量Ｑr-1を介して無作為に選択される。具体的には次式が成立すればｉ∈ＰＫr-kがＳＶr,sの検証者である。
．Ｈ（ＳＩＧi（ｒ，ｓ，Ｑr-1））≦ｐ’
【０２０７】
再び、自身がＳＶr,sに属しているか否かを知っているのはｉだけであるが、これが事実ならば、ｉは自身の信任値
【数８９】
2021507629.tif 000092
を示すことにより証明することができた。検証者ｉ∈ＳＶr,sはラウンドｒのステップｓでメッセージ
【数９０】
2021507629.tif 000093
を送り、このメッセージは、次ステップでの検証者ｆが
【数９１】
2021507629.tif 000094
が合法的なステップｓのメッセージであると認識できるようにすべく、自身の信任値
【数９２】
2021507629.tif 000095
を含んでいる。
【０２０８】
確率ｐ’は、ＳＶr,sにおいて、＃ｇｏｏｄを正直なユーザーの数、＃ｂａｄを悪意のあるユーザーの数とすれば、圧倒的確率で以下の２つの条件が成立することを保証すべく選択されている。
【０２０９】
【数９３】
2021507629.tif 000096
の実施形態の場合、
（１）＃ｇｏｏｄ＞２・＃ｂａｄ、及び
（２）＃ｇｏｏｄ＋４・＃ｂａｄ＜２ｎ、但しｎはＳＶr,sの期待濃度である。
【０２１０】
【数９４】
2021507629.tif 000097
の実施形態の場合、
（１）＃ｇｏｏｄ＞ｔH、及び
（２）＃ｇｏｏｄ＋２＃ｂａｄ＜２ｔH、但しｔHは指定された閾値である。
【０２１１】
これらの条件は、充分に高い確率で、（ａ）ＢＡプロトコルの最後のステップにおいて、少なくとも所与の数の正直なプレーヤーが新規ブロックＢrにデジタル署名し、（ｂ）１ラウンド毎に１個のブロックだけが必要な数の署名を有していてよく、（ｃ）使用したＢＡプロトコルが（各ステップで）必要とされる２／３の正直な大多数を有していることを意味する。
【０２１２】
ブロック生成の明確化  ラウンドｒのリーダーｌrが正直ならば、対応するブロックは以下の形式であり、
【数９５】
2021507629.tif 000098
ここで、支払集合ＰＡＹrは最大である。（全ての支払集合が定義から全体として有効であることを想起されたい。）
【０２１３】
さもなければ（すなわちｌrに悪意があれば）、Ｂrは以下の２つの可能な形式のうち１つを有している。
【数９６】
2021507629.tif 000099
【０２１４】
第１の形式において、ＰＡＹrは（必ずしも最大限ではない）支払集合であり、ＰＡＹr＝φであってよく、ｉはラウンドｒの潜在的リーダーである。（しかし、ｉはリーダーｌrでないことがある。これは実際にｌrが自身の信任値を秘匿したまま自身を明かさない場合に起きる。）
【０２１５】
第２の形式が生じるのは、ＢＡプロトコルのラウンドｒの実行に際して、全ての正直なプレーヤーが、アプリケーションで空ブロック
【数９７】
2021507629.tif 000100
である既定値を出力するときである。（定義から、ＢＡプロトコルの可能な出力は、一般に⊥と表記される既定値を含んでいる。節３．２を参照されたい。）
【０２１６】
両方のケースで支払集合が空であるにもかかわらず、Ｂr＝（ｒ，φ，ＳＩＧi（Ｑr-1），Ｈ（Ｂr-1））と
【数９８】
2021507629.tif 000101
は構文的に異なるブロックであって、２つの異なる状況で生じることに注意されたい。すなわち各々、「全てがＢＡプロトコルの実行で充分にスムーズに進行した」、及び「ＢＡプロトコルで何かまずいことが起きて既定値が出力された」。
【０２１７】
ここでブロックＢrの生成がＡｌｇｏｒａｎｄ’のラウンドｒでどのように進むかを直観的に説明する。最初の１ステップにおいて、各々の資格のあるプレーヤー、すなわち各プレーヤーｉ∈ＰＫr-kは自身が潜在的リーダーであるか否かを確認する。そうであれば、ｉは、自身がこれまで行った全ての支払いと現在のブロックチェーンＢ0，．．．，Ｂr-1を用いて最大限の支払集合
【数９９】
2021507629.tif 000102
を非公開に用意するよう求められ、非公開に自身の候補ブロック
【数１００】
2021507629.tif 000103
を構築する。すなわち、プレーヤーｉは
【数１０１】
2021507629.tif 000104
に第２の要素としてちょうど用意された支払集合を含めるだけでなく、第３の要素として自身の署名Ｑr-1、すなわち最終ブロックＢr-1の第３の要素も含める。最後に、プレーヤーｉは、自身のラウンドｒのステップ１のメッセージ
【数１０２】
2021507629.tif 000105
を拡散し、メッセージには（ａ）自身の候補ブロック
【数１０３】
2021507629.tif 000106
、（ｂ）自身の候補ブロックの自身の適当な署名（すなわち、
【数１０４】
2021507629.tif 000107
のハッシュの自身の署名、及び（ｃ）自身が実際にラウンドｒの潜在的検証者であることを証明する自身の信任値
【数１０５】
2021507629.tif 000108
が含まれる。
【０２１８】
（正直なｉが自身のメッセージ
【数１０６】
2021507629.tif 000109
を生成するまで、敵対者はｉが潜在的検証者であるとの手掛かりを有していない点に注意されたい。敵対者は、正直な潜在的リーダーを唆そうと欲したならば、正直なプレーヤーを無作為に唆す必要があろう。しかし、敵対者が
【数１０７】
2021507629.tif 000110
を見たならば、ｉの信任値を含んでいるため、ｉを知って唆すことができるものの、ウイルス的に拡散された
【数１０８】
2021507629.tif 000111
がシステム内の全てのユーザーに届くのを防ぐことはできない。）
【０２１９】
第２ステップにおいて、各々の選択された検証者ｊ∈ＳＶr,2はラウンドのリーダーを識別しようとする。具体的には、ｊは、自身が受信した正当なステップ１のメッセージ
【数１０９】
2021507629.tif 000112
に含まれるステップ１の信任値
【数１１０】
2021507629.tif 000113
を取り、それらの全てをハッシュ、すなわち
【数１１１】
2021507629.tif 000114
を計算し、ハッシュが辞書編成順に最小である信任値
【数１１２】
2021507629.tif 000115
を見つけて、
【数１１３】
2021507629.tif 000116
がラウンドｒのリーダーであるとみなす。
【０２２０】
考慮する各信任値がＱr-1のデジタル署名であること、ＳＩＧi（ｒ，１，Ｑr-1）がｉ及びＱr-1により一意に決定され、Ｈは無作為なオラクルである、従って各Ｈ（ＳＩＧi（ｒ，１，Ｑr-1）はラウンドｒの各潜在的リーダーｉに一意な無作為の長さ２５６ビットのストリングであることを想起されたい。
【０２２１】
上記から、２５６ビットストリングＱr-1自体が無作為且つ独立に選択されていれば、ラウンドｒの全ての潜在的リーダーのハッシュされた信任値も同様であろう。実際、全ての潜在的リーダーは明確であり、それらの信任値（実際に計算されているか否かに依らず）も同様である。更に、ラウンドｒの潜在的リーダーの集合は、ラウンドｒ−ｋのユーザーの無作為な部分集合であり、正直な潜在的リーダーｉは、ｉの信任値を含む自身のメッセージ
【数１１４】
2021507629.tif 000117
を常に適切に構築して拡散する。従って、正直なユーザーの割合はｈであるため、悪意のある潜在的リーダーが何をしようと（例：自身の信任値を明かすか又は隠す）、最小のハッシュされた潜在的リーダーの信任値は、ラウンドｒのリーダーｌrであることが必然的に全員に識別されている正直なユーザーのものである。従って、２５６ビットストリングＱr-1自体が無作為且つ独立に選択されていれば、正確に確率ｈで（ａ）リーダーｌrは正直であり、（ｂ）全ての正直なステップ２での検証者ｊに対してｌj＝ｌrである。
【０２２２】
実際には、ハッシュされた信任値は確かに無作為に選択されているが、無作為且つ独立に選択されなかったＱr-1に依存する。しかし、注意深い解析により、Ｑr-1が、あるラウンドのリーダーが、ｈに充分近い確率ｈ’すなわちｈ’＞ｈ2（１＋ｈ−ｈ2）で正直であることを保証できる程度に充分に不正操作ができないことが保証される。例えば、ｈ＝８０％ならばｈ’＞．７４２４である。
【０２２３】
ラウンドのリーダーを識別（リーダーｌrが正直な場合は正しく行われる）したならば、ステップ２検証者のタスクは、リーダーのブロックであると信じる初期値を用いてＢＡ*の実行を開始することである。実際、必要な通信量を最小化すべく、検証者ｊ∈ＳＶr,2は、ビザンチンプロトコルへの自身の入力値
【数１１５】
2021507629.tif 000118
として、しかしリーダー以外、及びブロックのハッシュすなわち
【数１１６】
2021507629.tif 000119
以外、ｌj（リーダーと見なされるユーザーｊ）から実際に受信したブロックＢjを使用しない。従って、ＢＡプロトコルの終了時点で、最後のステップの検証者は、所望のラウンドｒブロックＢrを計算せず、Ｈ（Ｂr）を計算（認証及び拡散）する。従って、Ｈ（Ｂr）はＢＡプロトコルの最後のステップの充分に多くの検証者によりデジタル署名されているため、システムのユーザーはＨ（Ｂr）が新規ブロックのハッシュであることが分かる。しかし、システムのユーザーはまた、敵対者が何をしようとも、実際に使用可能であることをプロトコルが保証するブロックＢr自体を検索（又は、実行は全く非同期であるため待機）しなければならない。
【０２２４】
非同期性及びタイミング
【数１１７】
2021507629.tif 000120
及び
【数１１８】
2021507629.tif 000121
は顕著な非同時性を有している。その理由は、拡散されているメッセージの配信を敵対者がスケジューリングする大きな自由度を有しているためである。また、１ラウンドにおけるステップの総数に上限が設定されているか否かに依らず、実際に行われたステップの数により寄与に分散がある。
【０２２５】
Ｂ0，．．．，Ｂr-1の証明を知ったならば直ちに、ユーザーｉはＱr-1を計算してラウンドｒで行動を開始し、ラウンドｒのあるステップｓで自身が潜在的リーダーであるか、又は検証者であるかを確認する。
【０２２６】
ｉがステップｓで行動しなければならないと仮定すれば、上述の非同時性の観点から、ｉは行動する前に充分な情報を有していることを確信すべく各種の戦略に依存する。
【０２２７】
例えば、ｉは、（
【数１１９】
2021507629.tif 000122
のように）前のステップの検証者から少なくとも所与の数のメッセージを受信するまで待つか、又は（
【数１２０】
2021507629.tif 000123
のように）前のステップの充分に多くの検証者のメッセージを受信することを確信すべく充分な時間待つことができる。
【０２２８】
シードＱr及び見直しパラメータｋ  理想的には、量Ｑrは、敵対者による不正操作が充分に防止されているだけで充分であるにもかかわらず、無作為且つ独立しているべきであることを想起されたい。
【０２２９】
一見したところ、Ｑr-1をＨ（ＰＡＹr-1）に対応するように選択することができる。しかし、基本的な解析により、悪意のあるユーザーはこの選択機構を悪用できることが分かる。（脚注５：発明者らはラウンドｒ−１の開始時点にいる。従って、Ｑr-2＝ＰＡＹr-2は公知であり、敵対者は、誰が自身の支配する潜在的リーダーであるかを非公開に知っている。敵対者がユーザーの１０％を支配し、且つ極めて高い確率で悪意のあるユーザーｗがラウンドｒ−１の潜在的リーダーであると仮定する。すなわち、Ｈ（ＳＩＧw（ｒ−２，１，Ｑr-2））が小さいため、正直な潜在的リーダーが実際にラウンドｒ−１のリーダーである可能性は極めて低いと仮定する。（秘密の暗号抽選機構を介して潜在的リーダーを選択するため、敵対者は誰が正直な潜在的リーダーであるかを知らないことを想起されたい。）敵対者は従って、所望の支払集合ＰＡＹ’を選択してラウンドｒ−１の公式支払集合にできる羨望的立場にある。しかし、敵対者はさらに多くのことができる。敵対者はまた、高い確率で、（＊）敵対者がどのようなＰＡＹrでも自由に選択できるように、悪意のあるユーザーの１人がラウンドｒのリーダーにもなることを保証できる。（以下同様。少なくとも長期間、すなわち、これらの高確率事象が実際に生起する限り。）これを保証すべく（＊）、敵対者は以下のように行動する。ＰＡＹ’を敵対者がラウンドｒ−１で好む支払集合とする。次いで、敵対者はＨ（ＰＡＹ’）を計算して、既に悪意のあるプレーヤーｚにとってＳＩＧz（ｒ，１，Ｈ（ＰＡＹ’））が特に小さいか否か、すなわち極めて高い確率でｚがラウンドｒのリーダーになるのに充分小さいか否かを確認する。これが当てはまるならば、敵対者はｗに、候補ブロックが
【数１２１】
2021507629.tif 000124
になるような選択をするように命令する。さもなければ、敵対者は、悪意のあるユーザーｚ（又はある固定されたユーザーｚでもよい）にとって
【数１２２】
2021507629.tif 000125
も特に小さくなるまで、他の２人の悪意のあるユーザーｘ及びｙに、互いに新規の支払い
【数１２３】
2021507629.tif 000126
を生成させ続ける。この実験は、極めて突然に停止する。停止したならば、敵対者はｗに候補ブロック
【数１２４】
2021507629.tif 000127
を提案するように頼む。）ある追加的な成果は、悪意のあるリーダーが極めて頻繁に現れることを保証すべく従来のブロック量に基づく他の多くの代替策が敵対者により容易に利用できることを示している。発明者らはその代わりに、敵対者による不正操作が不可能であることを証明できるように全く新たな量Ｑrを具体的且つ誘導的に定義する。すなわち、次式が成り立つ。
Ｂrが空ブロックでなければ
【数１２５】
2021507629.tif 000128
、空ブロックであれば
【数１２６】
2021507629.tif 000129
【０２３０】
Ｑrの上述の構造が機能する理由を以下に直観的に説明する。Ｑr-1が真に無作為且つ独立に選択されたものと一時的に仮定する。Ｑrもそうであろうか？ｌrが正直であれば答えは（大まかに言うと）ｙｅｓである。その理由は、
【数１２７】
2021507629.tif 000130
がランダム関数であるからである。しかしｌrに悪意のある場合、ＱrはＱr-1とｌrから一意に定義されない。Ｑrには少なくとも２個の別々の値がある。一方は
【数１２８】
2021507629.tif 000131
であり続け、他方はＨ（Ｑr-1，ｒ）である。第２の選択が多少任意であっても、第２の選択は絶対的に必須であることを最初に論じよう。その理由は、悪意のあるｌrは常に、全く異なる候補ブロックを第２ステップの正直な検証者に受信させることができるからである。（脚注６：例えば、説明を簡潔に（しかし極端に）保つべく、「第２ステップの時間が満了しそうなときに」ｌrは各ユーザーｉに異なる候補ブロックＢiを直接電子メールで送ることができる。こうすれば、誰がステップ２の検証者であろうと、全く異なるブロックを受信するであろう。）一旦そうなれば、ラウンドｒのＢＡプロトコルを介して最終的に合意に達したブロックが既定のものとなり、従ってＱr-1の誰のデジタル署名も含まないようにすることを保証するのは容易である。しかし、システムは継続せねばならず、このためラウンドｒのリーダーが必要である。リーダーが自動的且つ公開された仕方で選択されたならば、敵対者は言うまでもなくリーダーを唆す。同じ処理を介して前のＱr-1で選択されたならば、ｌrは再びラウンドｒ＋１でリーダーとなる。具体的に同じであるが新たなＱ量、すなわちＨ（Ｑr-1，ｒ）に適用する秘密暗号抽選機構の使用を提案する。量をＨの出力とすることで出力が無作為であることが保証され、ｒをＨの第２の入力として含めることで、Ｈの他の全ての使用が単一入力又は少なくとも３入力を有している状態で、そのようなＱrが独立に選択されたことを「保証」する。再び、代替的なＱrの特定の選択は重要でなく、重要なのはｌrがＱrについて２つの選択肢を有し、従って悪意のある別のユーザーを次のリーダーにできるチャンスを２倍にできることである。
【０２３１】
Ｑrに対する任意選択は、悪意のあるｌrを支配する敵対者にとってより多いであろう。例えば、ｘ、ｙ及びｚを、
【数１２９】
2021507629.tif 000132
であるようなラウンドｒの３人の悪意のある潜在的リーダーとし、
【数１３０】
2021507629.tif 000133
が特に小さいとする。すなわち、
【数１３１】
2021507629.tif 000134
は全ての正直な潜在的リーダーのハッシュされた信任値よりも小さくなる好機がある。次いで、ｘに自身の信任値を隠すよう求めることにより、敵対者にはｙをラウンドｒ−１のリーダーにする好機がある。これは、敵対者にはＱrに対して別の任意選択肢すなわちＨ（ＳＩＧy（Ｑr-1），ｒ）があることを示唆する。同様に、敵対者は、ｚがラウンドｒ−１のリーダーになり、Ｑrに対して別の任意選択肢すなわちＨ（ＳＩＧz（Ｑr-1），ｒ）が得られるように、ｘとｙに信任値を明かさないよう求めることができる。
【０２３２】
しかしながら、言うまでもなく敵対者は正直な潜在的ユーザーのデジタル署名のハッシュを予測できないため、これら及び他の任意選択肢の各々が失敗する可能性はゼロではない。
【０２３３】
注意深い、マルコフ連鎖的解析により、敵対者がラウンドｒ−１でどのような任意選択を行っても、敵対者は、システムに新規ユーザーを投入できない限り、正直なユーザーがラウンドｒ＋４０のリーダーになる確率をｈよりも大幅に低下させることはできない。これが、ラウンドｒの潜在的リーダーがラウンドｒ−ｋで既に存在しているユーザーであることを要求する理由である。これは、ラウンドｒ−ｋで敵対者が、正直なユーザーがラウンドｒのリーダーになる確率を大幅に変えられないようにする１つの方法である。実際、敵対者がラウンドｒ−ｋからｒの間にシステムにどのようなユーザーを加えたとしても、ラウンドｒの潜在的リーダーに（より強い理由からリーダーに）なるには不適格である。従って、見直しパラメータｋは最終的にセキュリティパラメータである。（但し、節？？で見られるように、一種の「便利なパラメータ」でもあり得る。）
【０２３４】
短期鍵  発明者らのプロトコルの実行は無視できる確率を除いて分岐を生成できないが、敵対者は合法的ブロックｒが生成された後のｒ番目のブロックで分岐を生成することができた。
【０２３５】
大まかに言えば、Ｂrが生成されたならば、敵対者はラウンドｒの各ステップの検証者が誰であるか知っている。敵対者は従って、検証者全員を唆して新規ブロック
【数１３２】
2021507629.tif 000135
の証明を強いることができる。偽造ブロックは合法的ブロックの後でしか拡散できないため、注意を払っていたユーザーは騙されないであろう。（脚注７：主要なテレビネットワークのニュースアンカーを唆して、クリントン国務長官が直近の大統領選挙に勝利した様子を示すニュース映像を今日作成及び放送したとしよう。大多数の人はこれをデタラメと認識するであろう。だが昏睡から覚めた誰かが騙されるかもしれない。）にもかかわらず、
【数１３３】
2021507629.tif 000136
は構文的には正しく、その生成の防止が望まれる。
【０２３６】
新たな規則をその手段とする。本質的に、ラウンドｒのステップｓの検証者集合ＳＶr,sのメンバーは、短期公開鍵
【数１３４】
2021507629.tif 000137
を用いて自身のメッセージにデジタル署名する。これらの鍵は、使い捨てであり、対応する秘密鍵
【数１３５】
2021507629.tif 000138
は１回使えば破壊される。このようにして、後で検証者が唆された場合、敵対者は検証者が当初署名しなかったものには一切署名を強制することができない。
【０２３７】
当然、敵対者が新たな鍵
【数１３６】
2021507629.tif 000139
の計算が不可能であることを保証して、これがステップｓで使用する検証者ｉ∈ＳＶr,sの正当な短期鍵であることを正直なユーザーに納得させなければならない。
【０２３８】
４．２  表記、概念、及びパラメータの一般的概要
表記
・ｒ≧０：現在のラウンド番号。
・ｓ≧１：ラウンドｒの現在のステップ番号。
・Ｂr：ラウンドｒで生成されたブロック。
・ＰＫr：ラウンドｒ−１の終了までの、及びラウンドｒの開始時点での公開鍵の集合。
・Ｓr：ラウンドｒ−１の終了までの、及びラウンドｒの開始時点でのシステム状態。（脚注８：同期的でないシステムにおいて、「ラウンドｒ−１の終了」及び「ラウンドｒの開始」の表記は注意深く定義する必要がある。数学的には、ＰＫr及びＳrは、初期状態Ｓ0及びブロックＢ1，．．．，Ｂr-1から計算される。）
・ＰＡＹr：Ｂrに含まれる支払集合。
・ｌr：ラウンドｒのリーダー。ｌrはラウンドｒの支払集合ＰＡＹrを選択（及び次のＱrを決定）する。
・Ｑr：ラウンドｒのシード、すなわちラウンドｒの終了時に生成されてラウンドｒ＋１の検証者の選択に用いられる量（すなわちバイナリストリング）。Ｑrはブロック内支払集合からは独立していて、ｌrにより不正操作することはできない。
・ＳＶr,s：ラウンドｒのステップｓのために選択される検証者の集合。
・ＳＶr：ラウンドｒのために選択される検証者の集合であり、ＳＶr＝∪s≧1ＳＶr,s。
・ＭＳＶr,s及びＨＳＶr,s：各々ＳＶr,sで悪意のある検証者の集合及び正直な検証者の集合。ＭＳＶr,s∪ＨＳＶr,s＝ＳＶr,s且つＭＳＶr,s∩ＨＳＶr,s＝φ。
・
【数１３７】
2021507629.tif 000140
及び
【数１３８】
2021507629.tif 000141
：各々ＳＶr,1の潜在的リーダーの人数の期待値、及びＳＶr,sの検証者の人数の期待値、但しｓ＞１。
ｎ１＜＜ｎであることに注意されたい。その理由は、ＳＶr,1で少なくとも１個の正直なメンバー、但しｓ＞１に対して各ＳＶr,sの正直なメンバーの少なくとも多数を必要とするからである。
・ｈ∈（０，１）：２／３よりも大きい定数。ｈはシステムの正直さの比である。すなわち、用いる仮定に依存するが、各ＰＫrにおける正直なユーザー又は正直な資金の割合は少なくともｈである。
・Ｈ：無作為オラクルとしてモデル化された暗号ハッシュ関数。
・⊥：Ｈの出力と同じ長さの特別のストリング。
・Ｆ∈（０，１）：許容されるエラー確率を指定するパラメータ。確率≦Ｆは「無視できる」とみなされ、確率≧１−Ｆは「圧倒的」とみなされる。
・ｐh∈（０，１）：ラウンドｒのリーダーｌrが正直である確率。理想的にはＰh＝ｈ。敵対者が存在するならば、ｐhの値は解析で決定される。
・
【数１３９】
2021507629.tif 000142
：見直しパラメータ。すなわち、ラウンドｒ−ｋは、ラウンドｒの検証者を選択するラウンドであり、ＳＶr⊆ＰＫr-k。（脚注９：厳密には、「ｒ−ｋ」は「ｍａｘ｛０，ｒ−ｋ｝」であるべきである。）
・ｐ１∈（０，１）：ラウンドｒの第１ステップに対して、ラウンドｒ−ｋのユーザーが確率
【数１４０】
2021507629.tif 000143
でＳＶr,1に存在するように選択される。
・ｐ∈（０，１）：ラウンドｒの各ステップｓ＞１に対して、ラウンドｒ−ｋのユーザーが確率
【数１４１】
2021507629.tif 000144
でＳＶr,sに存在するように選択される。
・ＣＥＲＴr：Ｂrへの証明。ラウンドｒにおける適切な検証者からのＨ（Ｂr）のｔH署名の集合である。
・
【数１４２】
2021507629.tif 000145
は証明されたブロックである。
ユーザーｉがＢrを知るのは、証明されたブロックの両方の部分を得た（且つ検証に成功した）場合である。異なるユーザーが見るＣＥＲＴrは異なり得る点に注意されたい。
・
【数１４３】
2021507629.tif 000146
：ユーザーｉがＢrを知る（ローカル）時間。Ａｌｇｏｒａｎｄプロトコルでは各ユーザーは自身の時計を有している。異なるユーザーの時計は同期している必要はないが、同じ速度を有していなければならない。解析目的のためのみ、基準クロックを考え、これに関するプレーヤーの時間を測定する。
・
【数１４４】
2021507629.tif 000147
及び
【数１４５】
2021507629.tif 000148
：各々ユーザーｉがラウンドｒのステップｓの実行を開始及び終了する（ローカル）時刻。
・Λ及びλ：本質的に、それぞれ、Ａｌｇｏｒａｎｄプロトコルのステップ１の実行に要する時間及び他の任意のステップの実行に要する時間の上限。
パラメータΛは単一の１ＭＢのブロックを拡散する時間の上限。
パラメータλはステップｓ＞１の検証者毎に１個の小さいメッセージを拡散する時間の上限。
Λ≦４λと仮定する。
【０２３９】
概念
・検証者選択。
各ラウンドｒ及びステップｓ＞１に対して
【数１４６】
2021507629.tif 000149
である。各ユーザーｉ∈ＰＫr-kは自身の長期の鍵を用いて非公開に自身の署名を計算してｉ∈ＳＶr,sであるか否かを判定する。ｉ∈ＳＶr,sならばＳＩＧi（ｒ，ｓ，Ｑr-1）はｉの（ｒ，ｓ）信任値であり、簡潔に
【数１４７】
2021507629.tif 000150
と表記する。
ラウンドｒの第１ステップにおいて、ＳＶr,1と
【数１４８】
2021507629.tif 000151
は、ｐをｐ1で置換して同様に定義される。ＳＶr,1の検証者が潜在的リーダーである。
【０２４０】
・リーダー選択。
ユーザーｉ∈ＳＶr,1は、全ての潜在的リーダーｊ∈ＳＶr,1に対して
【数１４９】
2021507629.tif 000152
ならばラウンドｒのリーダーであり、ｌrと表記する。２人のプレーヤーの信任値のハッシュが、極めて稀な同点の場合、比較される都度、プロトコルは常に、潜在的リーダーの（長期公開鍵）に従い辞書編成順にタイブレークする。
定義により、プレーヤーｌrの信任値のハッシュ値もまた、ＰＫr-kの全てのユーザーの中で最も小さい。潜在的リーダーは、他の潜在的リーダーの信任値を見ることなく、自身がリーダーであるか否かを非公開に決めることができない点に注意されたい。
ハッシュ値は無作為に一様であるため、ＳＶr,1が空でなければ、ｌrは常に存在し、少なくとも確率ｈで正直である。パラメータｎ1は、各ＳＶr,1が圧倒的確率で非空であることを保証すべく充分に大きい。
【０２４１】
・ブロック構造。
非空ブロックは
【数１５０】
2021507629.tif 000153
の形式であり、空ブロックは
【数１５１】
2021507629.tif 000154
の形式である。
ラウンドで支払いが生じなければ、又はリーダーに悪意があれば、非空ブロックは依然として空の支払集合ＰＡＹrを含んでいてよい点に注意されたい。しかし、非空ブロックとは、ｌrの属性、信任値
【数１５２】
2021507629.tif 000155
、及び
【数１５３】
2021507629.tif 000156
が全て適時に明かされていることを示唆する。プロトコルは、リーダーが正直ならば圧倒的確率でブロックが非空であることを保証する。
【０２４２】
・シードＱr。
Ｂrが非空ならば
【数１５４】
2021507629.tif 000157
、さもなければ
【数１５５】
2021507629.tif 000158
である。
【０２４３】
パラメータ
・各種パラメータ同士の関係。
−  ラウンドｒの検証者及び潜在的リーダーがＰＫr-kのユーザーから選択され、ｋは、敵対者がＦより高い確率でラウンドｒ−ｋ−１に戻ってＱr-1を予測できないように選択される。さもなければ、敵対者はラウンドｒ−ｋに悪意のあるユーザーを招き入れることができ、その全員がラウンドｒの潜在的リーダー／検証者になって、敵対者が望むいくつかのステップｓでＳＶr,sに悪意のあるリーダー又は悪意のある大多数を有することに成功する。
−  各ラウンドｒのステップ１において、ｎ1は、圧倒的確率でＳＶr、1≠φであるように選択される。
・重要なパラメータの選択例。
−  Ｈの出力は長さ２５６ビットである。
−  ｈ＝８０％、ｎ1＝３５。
−  Λ＝１分及びλ＝１５秒。
・プロトコルの初期化。
プロトコルは、時刻０でｒ＝０を以て始まる。「Ｂ-1」又は、「ＣＥＲＴ-1」が存在しないため、構文的にＢ-1は第３の要素がＱ-1を指定する公開パラメータであり、全てのユーザーは時刻０におけるＢ-1を知っている。
【０２４４】
５
【数１５６】
2021507629.tif 000159
本節では、以下の仮定の下で機能する、Ａｌｇｏｒａｎｄ’のバージョンを構築する。
【０２４５】
ユーザーの大多数は正直という仮定：各ＰＫrのユーザーの２／３超は正直である。
【０２４６】
節７において、上述の仮定を、望ましい資金の大部分が正直という仮定で置換する仕方を示す。
【０２４７】
５．１  追加的な表記及びパラメータ
表記
・
【数１５７】
2021507629.tif 000160
：バイナリＢＡプロトコルにおけるステップの最大数であって３の倍数。
・Ｌr≦ｍ／３：各々の試行が確率
【数１５８】
2021507629.tif 000161
で１であって最大ｍ／３回の試行がある場合に１を得るまでに要するベルヌーイ試行の回数を表す確率変数。全ての試行が失敗したならば
【数１５９】
2021507629.tif 000162
である。ＬrはブロックＢrの生成に要する時間に上限を設けるために用いられる。
・
【数１６０】
2021507629.tif 000163
：プロトコルの終了条件で必要とされる署名の数。
・ＣＥＲＴr：Ｂrへの証明。ラウンドｒにおける正当な検証者からのＨ（Ｂr）のｔH個の署名の集合である。
【０２４８】
パラメータ
・各種のパラメータ同士の関係。
−  ラウンドｒの各ステップｓ＞１に対して、ｎは圧倒的確率で下記のように選択される。
｜ＨＳＶr,s｜＞２｜ＭＳＶr,s｜且つ｜ＨＳＶr,s｜＋４｜ＭＳＶr,s｜＜２ｎ
ｈの値が１に近いほど、ｎは小さくなければならない。特に、圧倒的確率で所望の状態が保たれることを保証すべくチャーノフ境界（の変型例）を用いる。
−  ｍは、圧倒的確率でＬr＜ｍ／３であるように選択される。
・重要なパラメータの選択例。
−  Ｆ＝１０-12。
−  ｎ≒１５００、ｋ＝４０且つｍ＝１８０。
【０２４９】
５．２
【数１６１】
2021507629.tif 000164
における短期鍵の実装
既に述べたように、検証者ｉ∈ＳＶr,sが、使用後直ちに破壊する短期秘密鍵
【数１６２】
2021507629.tif 000165
を用いて、短期公開鍵
【数１６３】
2021507629.tif 000166
に関して、ラウンドｒでステップｓの自身のメッセージ
【数１６４】
2021507629.tif 000167
にデジタル署名することが望ましい。従って、
【数１６５】
2021507629.tif 000168
が実際に
【数１６６】
2021507629.tif 000169
に対するｉの署名の検証に用いられる鍵であることを全てのユーザーが検証できることを保証する、効率的な方法が必要である。属性に基づく署名スキームを（知識の及ぶ限りで）新たに用いることでこれを行う。
【０２５０】
高いレベルでは、このようなスキームにおいて、中央当局Ａは公開マスター鍵ＰＭＫ、及び対応する秘密マスター鍵ＳＭＫを生成する。プレーヤーＵの属性Ｕが与えられると、ＡはＳＭＫを介して公開鍵Ｕに対する秘密署名鍵ｓｋUを計算して、ＵにｓｋUを非公開に与える。（実際、属性に基づくデジタル署名スキームにおいて、ユーザーＵの公開鍵はＵ自身である！）このため、Ａが、デジタル署名を生成可能にしたいが、計算された秘密鍵を一切保持したくないユーザーの秘密鍵を計算した後でＳＭＫを破壊したならば、Ｕは公開鍵Ｕに関してメッセージにデジタル署名することができる唯一のユーザーとなる。従って、「Ｕの名前」を知る者は誰でも自動的にＵの公開鍵を知り、従ってＵの署名を検証することができる（恐らく、公開マスター鍵ＰＭＫも使用して）。
【０２５１】
発明者のアプリケーションにおいて、当局Ａはユーザーｉであり、全ての可能なユーザーＵの集合は、例えばＳ＝｛ｉ｝×｛ｒ’，．．．，ｒ’＋１０6｝×｛１，．．．，ｍ＋３｝におけるラウンドステップペア（ｒ，ｓ）と一致し、ｒ’は所与のラウンド、ｍ＋３は１ラウンド内に生起し得るステップ数の上限である。これにより、
【数１６７】
2021507629.tif 000170
であるため、ｉの署名
【数１６８】
2021507629.tif 000171
を見ている全員が、ｒ’に続く最初の１００万ラウンドｒについて、圧倒的確率で直ちにこれを検証することができる。
【０２５２】
換言すれば、ｉは最初にＰＭＫ及びＳＭＫを生成する。次いでｉは、ＰＭＫが任意のラウンドｒ∈［ｒ’，ｒ’＋１０6］のｉのマスター公開鍵であることを公表し、ＳＭＫを用いて各３つ組（ｉ、ｒ、ｓ）∈Ｓに対する秘密鍵
【数１６９】
2021507629.tif 000172
を非公開に生成して保存する。これが行われたならばＳＭＫを破壊する。自身がＳＶr,sの一部でないと判定したならば、ｉは（プロトコルがラウンドｒのステップｓのいかなるメッセージの認証を求めないため）
【数１７０】
2021507629.tif 000173
を放置し得る。さもなければ、ｉは最初に
【数１７１】
2021507629.tif 000174
を用いて自身のメッセージ
【数１７２】
2021507629.tif 000175
にデジタル署名を行い、次いで
【数１７３】
2021507629.tif 000176
を破壊する。
【０２５３】
ｉが最初にシステムに参加した際に自身の最初の公開マスター鍵を公表できることに注意されたい。すなわち、（ラウンドｒ’又はｒ’に近いラウンドで）ｉをシステムに参加させる同じ支払い
【数１７４】
2021507629.tif 000177
はまた、ｉの求めに従い、例えば（ＰＭＫ，［ｒ’，ｒ’＋１０6］）の形式のペアを含めることにより、任意のラウンドｒ∈［ｒ’，ｒ’＋１０6］用のｉの公開マスター鍵がＰＭＫであることを指定し得る。
【０２５４】
また、１ラウンドに１分かかると仮定すれば、ｍ＋３が１ラウンドにおけるステップの最大数であるため、そのように生成されたｉの短期鍵の退避場所が約２年間保持されることに注意されたい。同時に、これらの短期秘密鍵をｉが生成するのにさほど長い時間かからない。３２Ｂ個の鍵を有する楕円曲線に基づくシステムを用いて、各々の秘密鍵は数マイクロ秒で計算される。従って、ｍ＋３＝１８０であれば、全ての１８０Ｍ個の秘密鍵を１時間未満で計算することができる。
【０２５５】
現在のラウンドがｒ’＋１０6に近づいている場合、ｉは次の１００万ラウンドを扱うために新規ペア（ＰＭＫ’，ＳＭＫ’）を生成して、例えば、ＳＩＧi（ＰＭＫ’，［ｒ’＋１０6＋１，ｒ’＋２・１０6＋１］）を別々の「取引」として又は支払いの一部であるいずれかの追加的な情報として新規ブロックに入力させることにより、自身の短期鍵の次の退避場所がどこであるかを通知する。こうすることで、ｉは次の１００万ラウンドにおけるｉの短期署名を検証するためにＰＭＫ’を用いる必要があることを全員に通知する。以下同様。
（上述の基本的アプローチに従い、属性に基づく署名を用いることなく短期鍵を実装する他の方法が確かに可能であることに注意されたい。例えばマークル木を介して可能である。）（脚注１０：本方法において、ｉは、例えば｛ｒ’，．．．，ｒ’＋１０6｝×｛１，．．．，ｍ＋３｝における各ラウンドステップペア（ｒ，ｓ）の公開秘密鍵ペア
【数１７５】
2021507629.tif 000178
を生成する。次いでこれらの公開鍵を正準的に順序付けて、ｊ番目の公開鍵をマークル木のｊ番目の葉に保存し、ルート値Ｒiを計算して公表する。鍵
【数１７６】
2021507629.tif 000179
に対するメッセージに署名したい場合、ｉは実際の署名だけでなく、Ｒiに対する
【数１７７】
2021507629.tif 000180
の認証経路も提供する。この認証経路もまた、
【数１７８】
2021507629.tif 000181
がｊ番目の葉に保存されていることを証明することに注意されたい。この考えから、他の詳細事項も容易に想到されよう。）
【０２５６】
短期鍵を実装する他の方法も、例えばマークル木を介して、もちろん可能である。
【０２５７】
５．３
【数１７９】
2021507629.tif 000182
のステップとＢＡ*のステップのマッチング
上述のように、
【数１８０】
2021507629.tif 000183
の１ラウンドは最大ｍ＋３ステップを有している。
【０２５８】
ステップ１。本ステップにおいて、各々の潜在的リーダーｉは自身の候補ブロック
【数１８１】
2021507629.tif 000184
を自身の信任値
【数１８２】
2021507629.tif 000185
と共に計算して拡散する。
【０２５９】
この信任値が明示的にｉを識別することを想起されたい。その理由は
【数１８３】
2021507629.tif 000186
だからである。
潜在的検証者ｉはまた、自身のメッセージの一部として、
【数１８４】
2021507629.tif 000187
の自身の適当なデジタル署名も拡散する。支払い又は信任値を扱わないため、ｉのこの署名は自身の短期公開鍵
【数１８５】
2021507629.tif 000188
と関連している。すなわち
【数１８６】
2021507629.tif 000189
を拡散する。
【０２６０】
慣例を前提として、
【数１８７】
2021507629.tif 000190
及び
【数１８８】
2021507629.tif 000191
を拡散するのではなく、ｉは
【数１８９】
2021507629.tif 000192
を拡散することができた。しかし、発明者らの解析では
【数１９０】
2021507629.tif 000193
への明示的なアクセスを有する必要がある。
【０２６１】
ステップ２。本ステップにおいて、各検証者ｉは、ハッシュされた信任値が最も小さい潜在的リーダーとして
【数１９１】
2021507629.tif 000194
を、及び
【数１９２】
2021507629.tif 000195
が提案するブロックとして
【数１９３】
2021507629.tif 000196
を設定する。効率の観点から、直接Ｂrにではなく、Ｈ（Ｂr）に同意したいため、ｉは、初期値を
【数１９４】
2021507629.tif 000197
としてＢＡ*の第１ステップで拡散したであろうメッセージを拡散する。すなわち、
【数１９５】
2021507629.tif 000198
を、無論それに短期署名した後で、拡散する。（すなわち、この場合は
【数１９６】
2021507629.tif 000199
である正当な短期公開鍵に関して署名した後で。）
無論、ｉは自身の信任値も送信する。
【０２６２】
ＢＡ*の第１ステップが、等級化コンセンサスプロトコルＧＣの第１ステップを含んでいるため、Ａｌｇｏｒａｎｄ’のステップ２はＧＣの第１ステップに対応している。
【０２６３】
ステップ３。本ステップにおいて、各検証者ｉ∈ＳＶr,2はＢＡ*の第２ステップを実行する。すなわち、ＧＣの第２ステップで送ったであろうものと同じメッセージを送る。再び、ｉのメッセージは短期署名されており、ｉの信任値が伴っている。（以後、検証者が短期的に自身のメッセージに署名すると共に自身の信任値を拡散するとの表現を割愛する。）
【０２６４】
ステップ４。本ステップにおいて、全ての検証者ｉ∈ＳＶr,4は、ＧＣ（vi，ｇi）の出力を計算し、ＢＡ*の第３ステップで、すなわちＢＢＡ*の第１ステップで、ｇi＝２ならば初期ビットを０、さもなければ１として送ったであろうものと同じメッセージに短期署名して送る。
【０２６５】
ステップｓ＝５，．．．，ｍ＋２。このようなステップは、仮に到達したならば、ＢＡ*のステップｓ−１に、従ってＢＢＡ*のステップｓ−３に対応している。
【０２６６】
発明者らの拡散モデルは充分に非同期であるため、このようなステップｓの途中で、ブロックＢrが既に選択されていることを証明する情報が検証者ｉ∈ＳＶr,sに到達している可能性を考慮しなければならない。この場合、ｉはＡｌｇｏｒａｎｄ’のラウンドｒの自身の実行を停止して、自身のラウンド（ｒ＋１）命令の実行を開始する。
【０２６７】
従って、ＢＢＡ*のステップｓ−３に対応する命令に加えて、検証者ｉ∈ＳＶr,sの命令は、ＢＢＡ*の実行が前のステップｓ’で停止されたか否かの確認を含んでいる。ＢＢＡ*が停止できるのはコインが０に固定されたステップ又はコインが１に固定されたステップだけであるため、命令は以下を区別する。
Ａ（終了条件０）：ｓ’−２≡０ｍｏｄ３、又は
Ｂ（終了条件１）：ｓ’−２≡１ｍｏｄ３。
【０２６８】
実際に、ケースＡにおいて、ブロックＢrは非空であり、従って、ｉが適切な証明ＣＥＲＴrと共にＢrを適切に再構築することを保証するには追加的な命令が必要である。ケースＢにおいて、ブロックＢrは空であり、従ってｉは
【数１９７】
2021507629.tif 000200
を設定して、ＣＥＲＴrを計算するよう命令される。
【０２６９】
ステップｓを実行する間、ブロックＢrが既に生成されたいかなる証拠もｉが認識しなければ、ｉはＢＢＡ*のステップｓ−３で送ったであろうものと同じメッセージを送る。
【０２７０】
ステップｍ＋３。ステップｍ＋３の実行中に、ブロックＢrが前のステップｓ’で既に生成されていたことをｉ∈ＳＶr,m+3が認識したならば、正に上で述べたように進行する。
【０２７１】
さもなければ、ＢＢＡ*のステップｍで送っていたであろうものと同じメッセージを送るのではなく、ｉは、自身が有する情報に基づいて、Ｂr及び対応する証明ＣＥＲＴrを計算するよう命令される。
【０２７２】
実際、１ラウンドの合計ステップ数の上限をｍ＋３としたことを想起されたい。
【０２７３】
５．４  実際のプロトコル
ラウンドｒの各ステップｓで、検証者ｉ∈ＳＶr,sが自身の長期公開鍵及び秘密鍵のペアを用いて、ケースｓ＝１でのＳＩＧi（Ｑr-1）と共に自身の信任値
【数１９８】
2021507629.tif 000201
を生成することを想起されたい。検証者ｉは、自身の短期秘密鍵
【数１９９】
2021507629.tif 000202
を用いて自身の（ｒ，ｓ）メッセージ
【数２００】
2021507629.tif 000203
に署名する。説明を簡潔にすべく、ｒとｓが明らかな場合、ラウンドｒのステップｓにおける値ｘのｉの適切な短期署名を表記するのに
【数２０１】
2021507629.tif 000204
ではなくｅｓｉｇi（ｘ）と書き、（ｉ，ｘ，ｅｓｉｇi（ｘ））を表記するのに
【数２０２】
2021507629.tif 000205
ではなくＥＳＩＧi（ｘ）と書く。
【０２７４】
ステップ１：ブロック提案
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉは、Ｂr-1を知ったならば直ちにラウンドｒの自身のステップ１を開始する。
・ユーザーｉはＢr-lの第３の要素からＱr-1を計算してｉ∈ＳＶr,1であるか否かを確認する。
2021507629.tif 000206
・ｉ∈ＳＶr,1、すなわちｉが潜在的リーダーならば、それまで自身に拡散してきたラウンドｒの支払いを回収し、それらから最大限の支払集合
【数２０３】
2021507629.tif 000207
を計算する。次に、自身の「候補ブロック」
【数２０４】
2021507629.tif 000208
を計算する。最後に、メッセージ
【数２０５】
2021507629.tif 000209
を計算して、自身の短期秘密鍵
【数２０６】
2021507629.tif 000210
を破壊し、次いで
【数２０７】
2021507629.tif 000211
を拡散する。
【０２７５】
注記。実際には、ステップ１の大域的実行を短縮するには、（ｒ−１）メッセージを選択的に拡散することが重要である。すなわち、システム内の全てのユーザーｉ毎に、プレーヤーｉは最初に受信して検証に成功した（脚注１１：すなわち、全ての署名は正当であって、ブロックとそのハッシュは両方とも有効であるが、ｉは含まれた支払集合が提案者にとって最大であるか否かを確認しない。）（ｒ−１）メッセージを通常の通りに拡散する。プレーヤーｉが受信して検証に成功した他の全ての（ｒ−１）メッセージの場合、含まれる信任値のハッシュ値が、それまで受信して検証に成功した全ての（ｒ−１）メッセージに含まれる信任値のハッシュ値の最も小さいものである場合にだけ拡散する。更に、Ｇｅｏｒｇｉｏｓ  Ｖｌａｃｈｏｓが提言するように、各々の潜在的リーダーｉは、自身の信任値
【数２０８】
2021507629.tif 000212
もまた別個に拡散することが有用である。これらの小さいメッセージはブロックより速く移動し、含まれる信任値が小さいハッシュ値を有している
【数２０９】
2021507629.tif 000213
の適時な拡散を保証する一方、大きいハッシュ値を有するものを素早く消失させる。
【０２７６】
ステップ２：等級化コンセンサスプロトコルＧＣの第１ステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＢr-1を知ったならば直ちにラウンドｒの自身のステップ２を開始する。
・ユーザーｉはＢr-1の第３の要素からＱr-1を計算してｉ∈ＳＶr,2であるか否かを確認する。
2021507629.tif 000214
・ｉ∈ＳＶr,2ならば、ある長さの時間
【数２１０】
2021507629.tif 000215
待機した後でｉは以下のように行動する。
１．これまで受信して検証に成功した（ｒ，ｌ）メッセージの一部である全ての信任値
【数２１１】
2021507629.tif 000216
に対して
【数２１２】
2021507629.tif 000217
であるようなユーザーｌを見つける。（脚注１２：本質的に、ユーザーｉは、ラウンドｒのリーダーがユーザーｌであると非公開に決定する。）
２．ｉがｌから有効なメッセージ
【数２１３】
2021507629.tif 000218
を受信していれば、ｉは
【数２１４】
2021507629.tif 000219
を、さもなければ
【数２１５】
2021507629.tif 000220
を設定する。（脚注１３：再び、プレーヤーｌの署名及びハッシュは全て検証に成功しており、
【数２１６】
2021507629.tif 000221
における
【数２１７】
2021507629.tif 000222
はラウンドｒの有効な支払集合であるが、ｉは
【数２１８】
2021507629.tif 000223
がｌに対して最大であるか否かを確認しない。）
３．ｉは、メッセージ
【数２１９】
2021507629.tif 000224
を計算して、自身の短期秘密鍵
【数２２０】
2021507629.tif 000225
を破壊し、次いで
【数２２１】
2021507629.tif 000226
を拡散する。（脚注１４：メッセージ
【数２２２】
2021507629.tif 000227
は、プレーヤーｉが
【数２２３】
2021507629.tif 000228
を次ブロックのハッシュであるとみなすか、又は次ブロックが空であるとみなすかを通知する。）
【０２７７】
ステップ３：ＧＣの第２ステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＢr-1を知ったならば直ちにラウンドｒの自身のステップ３を開始する。
・ユーザーｉはＢr-1の第３の要素からＱr-1を計算してｉ∈ＳＶr,3であるか否かを確認する。
2021507629.tif 000229
・ｉ∈ＳＶr,3ならば、ある長さの時間
【数２２４】
2021507629.tif 000230
待機した後でｉは以下のように行動する。
１．値ｖ’≠⊥が存在して、受信した全ての有効なメッセージ
【数２２５】
2021507629.tif 000231
のうち、２／３よりも多くが
【数２２６】
2021507629.tif 000232
の形式で一切矛盾しない（脚注１５：すなわち、プレーヤーｊから、ＥＳＩＧj（ｖ’）及び異なるＥＳＩＧj（ｖ”）を各々含む２個の有効なメッセージを受信していない。これ以降、後で定義する終了条件を除き、正直なプレーヤーが所与の形式のメッセージを望む都度、互いに矛盾するメッセージは決してカウントされず、有効ともみなされない。）ならば、メッセージ
【数２２７】
2021507629.tif 000233
を計算する。さもなければ
【数２２８】
2021507629.tif 000234
を計算する。
２．ｉは自身の短期秘密鍵
【数２２９】
2021507629.tif 000235
を破壊し、次いで
【数２３０】
2021507629.tif 000236
を拡散する。
【０２７８】
ステップ４：ＧＣの出力及びＢＢＡ*の第１ステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＢr-1を知ったならば直ちにラウンドｒの自身のステップ４を開始する。
・ユーザーｉはＢr-1の第３の要素からＱr-1を計算してｉ∈ＳＶr,4であるか否かを確認する。
2021507629.tif 000237
・ｉ∈ＳＶr,4ならば、ある長さの時間
【数２３１】
2021507629.tif 000238
待機した後でｉは以下のように行動する。
１．ｖi及びｇi、すなわちＧＣの出力を以下のように計算する。
（ａ）値ｖ’≠⊥が存在して、受信した全ての有効なメッセージ
【数２３２】
2021507629.tif 000239
のうち、２／３よりも多くが
【数２３３】
2021507629.tif 000240
の形式であるならば
【数２３４】
2021507629.tif 000241
及び
【数２３５】
2021507629.tif 000242
を設定する。
（ｂ）さもなければ、値ｖ’≠⊥が存在して、受信した全ての有効なメッセージ
【数２３６】
2021507629.tif 000243
のうち、１／３よりも多くが
【数２３７】
2021507629.tif 000244
の形式であるならば
【数２３８】
2021507629.tif 000245
及び
【数２３９】
2021507629.tif 000246
を設定する。（脚注１６：ケース（ｂ）のｖ’が存在するならば、一意でなければならないことが証明できる。）
（ｃ）さもなければ、
【数２４０】
2021507629.tif 000247
及び
【数２４１】
2021507629.tif 000248
を設定する。
２．ｂiすなわちＢＢＡ*の入力を以下のように計算する。
ｇi＝２ならば
【数２４２】
2021507629.tif 000249
、さもなければ
【数２４３】
2021507629.tif 000250
３．メッセージ
【数２４４】
2021507629.tif 000251
を計算して、自身の短期秘密鍵
【数２４５】
2021507629.tif 000252
を破壊し、次いで
【数２４６】
2021507629.tif 000253
を拡散する。
【０２７９】
ステップｓ，５≦ｓ≦ｍ＋２，ｓ−２≡０ｍｏｄ３：ＢＢＡ*のコインが０に固定されたステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＢr-1を知ったならば直ちにラウンドｒの自身のステップｓを開始する。
・ユーザーｉはＢr-1の第３の要素からのＱr-1を計算してｉ∈ＳＶr,sであるか否かを確認する。
2021507629.tif 000254
・ｉ∈ＳＶr,sならば、ｉは以下のように行動する。
−  ある長さの時間
【数２４７】
2021507629.tif 000255
が経過するまで待機する。
−  終了条件０：このように待機する間の任意の時点でストリングｖ≠⊥が存在し、及び以下のようなステップｓ’すなわち、
（ａ）５≦ｓ’≦ｓ，ｓ’−２≡０ｍｏｄ３、すなわちステップｓ’はコインが０に固定されたステップであり、
（ｂ）ｉは少なくとも
【数２４８】
2021507629.tif 000256
個の有効なメッセージ
【数２４９】
2021507629.tif 000257
を受信しており（脚注１７：プレーヤーｊからのそのようなメッセージは、たとえプレーヤーｉがｌに署名しているｊからもメッセージを受信していた場合であってもカウントされる。終了条件１と同様の事項。解析に示すように、これは時間λ内に全ての正直なユーザーが互いからＢrを区別することを保証するために行われる。）、
（ｃ）ｉは１個の有効なメッセージ
【数２５０】
2021507629.tif 000258
但し
【数２５１】
2021507629.tif 000259
を受信している
が存在するならば、ｉは何も拡散することなく直ちにステップｓ（及び実際にはラウンドｒ）の自身の実行を停止して、
【数２５２】
2021507629.tif 000260
を設定し、自身のＣＥＲＴrをサブステップ（ｂ）のメッセージ
【数２５３】
2021507629.tif 000261
の集合となるように設定する（脚注１８：ユーザーｉは現在Ｂrを知っており、自身のラウンドｒは終了する。ユーザーｉは依然として一般ユーザーとしてメッセージの拡散を支援するが、（ｒ，ｓ）検証者としては一切拡散を開始しない。特に、自身のＣＥＲＴrで全てのメッセージの拡散を支援しており、これはプロトコルにとって充分である。ユーザーｉはバイナリＢＡプロトコルに対して
【数２５４】
2021507629.tif 000262
も設定しなければならないが、いずれにせよｂiはこの場合必要とされないことに注意されたい。全ての将来的な命令についても同様である。）
−  終了条件１：このように待機する間の任意の時点で、以下のようなステップｓ’すなわち、
（ａ’）６≦ｓ’≦ｓ，ｓ’−２≡１ｍｏｄ３、すなわちステップｓ’はコインが１に固定されたステップであり、
（ｂ’）ｉは少なくともｔH個の有効なメッセージ
【数２５５】
2021507629.tif 000263
を受信している（脚注１９：この場合、ｖjが何であろうとかまわない。）
が存在するならば、ｉは何も拡散することなく直ちにステップｓ（及び実際にはラウンドｒ）の自身の実行を停止して、
【数２５６】
2021507629.tif 000264
を設定し、自身のＣＥＲＴrをサブステップ（ｂ’）のメッセージ
【数２５７】
2021507629.tif 000265
の集合となるように設定する。
−  さもなければ、待機終了時点でユーザーｉは以下を実行する。
受信した全ての有効な
【数２５８】
2021507629.tif 000266
の第２の要素におけるｖjの多数票になるようにｖiを設定する。
【０２８０】
以下のようにｂiを計算する。
受信した全ての有効な
【数２５９】
2021507629.tif 000267
の２／３より多くが
【数２６０】
2021507629.tif 000268
の形式であれば、
【数２６１】
2021507629.tif 000269
を設定する。
さもなければ、受信した全ての有効な
【数２６２】
2021507629.tif 000270
の２／３より多くが
【数２６３】
2021507629.tif 000271
の形式であれば、
【数２６４】
2021507629.tif 000272
を設定する。
さもなければ
【数２６５】
2021507629.tif 000273
を設定する。
【０２８１】
メッセージ
【数２６６】
2021507629.tif 000274
を計算して、自身の短期秘密鍵
【数２６７】
2021507629.tif 000275
を破壊し、次いで
【数２６８】
2021507629.tif 000276
を拡散する。
【０２８２】
ステップｓ、６≦ｓ≦ｍ＋２，ｓ−２≡１ｍｏｄ３：ＢＢＡ*のコインが１に固定されたステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＢr-1を知ったならば直ちにラウンドｒの自身のステップｓを開始する。
・ユーザーｉはＢr-1の第３の要素からのＱr-1を計算してｉ∈ＳＶr,sであるか否かを確認する。
2021507629.tif 000277
・ｉ∈ＳＶr,sならば、ｉは以下を実行する。
−  ある長さの時間
【数２６９】
2021507629.tif 000278
が経過するまで待機する。
−  終了条件０：コインが０に固定されたステップと同じ命令。
−  終了条件１：コインが０に固定されたステップと同じ命令。
−  さもなければ、待機終了時点でユーザーｉは以下を実行する。
受信した全ての有効な
【数２７０】
2021507629.tif 000279
の第２の要素におけるｖjの多数票になるようにｖiを設定する。
【０２８３】
以下のようにｂiを計算する。
受信した全ての有効な
【数２７１】
2021507629.tif 000280
の２／３より多くが
【数２７２】
2021507629.tif 000281
の形式であれば、
【数２７３】
2021507629.tif 000282
を設定する。
さもなければ、受信した全ての有効な
【数２７４】
2021507629.tif 000283
の２／３より多くが
【数２７５】
2021507629.tif 000284
の形式であれば、
【数２７６】
2021507629.tif 000285
を設定する。
さもなければ
【数２７７】
2021507629.tif 000286
を設定する。
【０２８４】
メッセージ
【数２７８】
2021507629.tif 000287
を計算して、自身の短期秘密鍵
【数２７９】
2021507629.tif 000288
を破壊し、次いで
【数２８０】
2021507629.tif 000289
を拡散する。
【０２８５】
ステップｓ，７≦ｓ≦ｍ＋２，ｓ−２≡２ｍｏｄ３：ＢＢＡ*のコインを本当に投げたステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＢr-1を知ったならば直ちにラウンドｒの自身のステップｓを開始する。
・ユーザーｉはＢr-1の第３の要素からのＱr-1を計算してｉ∈ＳＶr,sであるか否かを確認する。
2021507629.tif 000290
・ｉ∈ＳＶr,sならば、ｉは以下を実行する。
−  ある長さの時間
【数２８１】
2021507629.tif 000291
が経過するまで待機する。
−  終了条件０：コインが０に固定されたステップと同じ命令。
−  終了条件１：コインが０に固定されたステップと同じ命令。
−  さもなければ、待機終了時点でユーザーｉは以下を実行する。
受信した全ての有効な
【数２８２】
2021507629.tif 000292
の第２の要素におけるｖjの多数票になるようにｖiを設定する。
【０２８６】
以下のようにｂiを計算する。
受信した全ての有効な
【数２８３】
2021507629.tif 000293
の２／３より多くが
【数２８４】
2021507629.tif 000294
の形式であれば、
【数２８５】
2021507629.tif 000295
を設定する。
さもなければ、受信した全ての有効な
【数２８６】
2021507629.tif 000296
の２／３より多くが
【数２８７】
2021507629.tif 000297
の形式であれば、
【数２８８】
2021507629.tif 000298
を設定する。
さもなければ、
【数２８９】
2021507629.tif 000299
を、有効なメッセージ
【数２９０】
2021507629.tif 000300
を受信した送信元である（ｒ，ｓ−１）検証者の集合とする。
【数２９１】
2021507629.tif 000301
を設定する。
【０２８７】
メッセージ
【数２９２】
2021507629.tif 000302
を計算して、自身の短期秘密鍵
【数２９３】
2021507629.tif 000303
を破壊し、次いで
【数２９４】
2021507629.tif 000304
を拡散する。
【０２８８】
ステップｍ＋３：ＢＢＡ*の最後のステップ
（脚注２０：圧倒的な確率でＢＢＡ*が本ステップの前に終了しているが、完全性を求めて本ステップを指定する。）
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＢr-1を知ったならば直ちにラウンドｒの自身のステップｍ＋３を開始する。
・ユーザーｉはＢr-1の第３の要素からのＱr-1を計算してｉ∈ＳＶr,m+3であるか否かを確認する。
2021507629.tif 000305
・ｉ∈ＳＶr,m+3ならば、ｉは以下を実行する。
−  ある長さの時間
【数２９５】
2021507629.tif 000306
が経過するまで待機する。
−  終了条件０：コインが０に固定されたステップと同じ命令。
−  終了条件１：コインが０に固定されたステップと同じ命令。
−  さもなければ、待機終了時点でユーザーｉは、以下を実行する。
【数２９６】
2021507629.tif 000307
及び
【数２９７】
2021507629.tif 000308
を設定する。
メッセージ
【数２９８】
2021507629.tif 000309
を計算して、自身の短期秘密鍵
【数２９９】
2021507629.tif 000310
を破壊し、次いで
【数３００】
2021507629.tif 000311
を拡散してＢrを証明する。（脚注２１：ステップｍ＋３からの証明はＥＳＩＧi（ｏｕｔi）を含んでいなくてもよい。これを含めるのは均一性のためだけである。証明は現在、どのステップで生成されたかに依らず均一な形式を有している。）
【０２８９】
非検証者によるラウンドｒブロックの再構築
システム内の全てのユーザーｉへの命令：ユーザーｉはＢr-1を知ったならば直ちに自身のラウンドｒを開始し、以下のようなブロック情報を待つ。
−  このように待機する間の任意の時点で、ストリングｖ、及び以下のようなステップｓ’すなわち
（ａ）５≦ｓ’≦ｍ＋３但しｓ’−２≡０ｍｏｄ３
（ｂ）ｉは、少なくともｔH個の有効なメッセージ
【数３０１】
2021507629.tif 000312
を受信しており、
（ｃ）ｉは１個の有効なメッセージ
【数３０２】
2021507629.tif 000313
但し
【数３０３】
2021507629.tif 000314
を受信している
が存在するならば、ｉは直ちにラウンドｒの自身の実行を停止して、
【数３０４】
2021507629.tif 000315
を設定し、自身のＣＥＲＴrをサブステップ（ｂ）のメッセージ
【数３０５】
2021507629.tif 000316
の集合となるように設定する。
【０２９０】
−  このように待機する間の任意の時点で、以下のようなステップｓ’すなわち、
（ａ’）６≦ｓ’≦ｍ＋３但しｓ’−２≡１ｍｏｄ３
（ｂ’）ｉは少なくともｔH個の有効なメッセージ
【数３０６】
2021507629.tif 000317
を受信している
が存在するならば、ｉは直ちにラウンドｒの自身の実行を停止して、
【数３０７】
2021507629.tif 000318
を設定し、自身のＣＥＲＴrをサブステップ（ｂ’）のメッセージ
【数３０８】
2021507629.tif 000319
の集合となるように設定する。
【０２９１】
−  このように待機する間の任意の時点で、ｉが少なくともｔH個の有効なメッセージ
【数３０９】
2021507629.tif 000320
を受信していれば、ｉは直ちにラウンドｒの自身の実行を停止して、
【数３１０】
2021507629.tif 000321
を設定し、自身のＣＥＲＴrを、１及び
【数３１１】
2021507629.tif 000322
へのメッセージ
【数３１２】
2021507629.tif 000323
の集合となるように設定する。
【０２９２】
６
【数３１３】
2021507629.tif 000324
本節では、以下の仮定の下で機能する、Ａｌｇｏｒａｎｄ’のバージョンを構築する。
【０２９３】
ユーザーの大多数は正直という仮定：各ＰＫrのユーザーの２／３より多くは正直である。
【０２９４】
節７において、上述の仮定を、望ましい資金の大部分が正直という仮定で置換する仕方を示す。
【０２９５】
６．１
【数３１４】
2021507629.tif 000325
の追加的な表記及びパラメータ
表記
・
【数３１５】
2021507629.tif 000326
：圧倒的確率で１ラウンドに実際に実行されるステップ数に対する現実的な上限。（以下に述べるように、パラメータμはユーザーが各ラウンドで予め用意する短期鍵の数を制御する。）
・Ｌr：各々の試行が確率
【数３１６】
2021507629.tif 000327
で１である場合に１を得るまでに要するベルヌーイ試行の回数を表す確率変数。ＬrはブロックＢrの生成に要する時間に上限を設けるために用いられる。
・ｔH：ラウンドｒのステップｓ＞１における正直な検証者の数の下限であって、圧倒的な確率（ｎ及びｐは所与）で、ＳＶr,sに＞ｔH人の正直な検証者がいる。
【０２９６】
パラメータ
・各種のパラメータ同士の関係。
−  ラウンドｒの各ステップｓ＞１に対して、ｎは圧倒的確率で下記のように選択される。
｜ＨＳＶr,s｜＞ｔH且つ｜ＨＳＶr,s｜＋２｜ＭＳＶr,s｜＜２ｔH
【０２９７】
上述の２個の不等式を合わせて｜ＨＳＶr,s｜＞２｜ＭＳＶr,s｜、すなわち、選択された検証者中に２／３の正直な大多数がいることを示唆する点に注意されたい。
【０２９８】
ｈの値が１に近いほど、ｎは小さくなければならない。特に、圧倒的確率で所望の状態が保たれることを保証すべくチャーノフ境界（の変型例）を用いる。
【０２９９】
・重要なパラメータの選択例。
−  Ｆ＝１０-18。
−ｎ≒４０００、ｔH≒０．６９ｎ、ｋ＝７０。
【０３００】
６．２
【数３１７】
2021507629.tif 000328
における短期鍵の実装
検証者ｉ∈ＳＶr,sが、使用後直ちに破壊する短期秘密鍵
【数３１８】
2021507629.tif 000329
を用いて、短期公開鍵
【数３１９】
2021507629.tif 000330
に関して、ラウンドｒのステップｓの自身のメッセージ
【数３２０】
2021507629.tif 000331
にデジタル署名することを想起されたい。１ラウンドに実行可能なステップの数が所与の整数μに制限されている場合に実際に短期鍵を扱う仕方について見てきた。例えば、
【数３２１】
2021507629.tif 000332
（但しμ＝ｍ＋３）でラウンドｒ’〜ラウンドｒ’＋１０6まで自身の可能な短期鍵を扱うことを説明したように、ｉはペア（ＰＭＫ，ＳＭＫ）を生成し、ＰＭＫは識別子に基づく署名スキームの公開マスター鍵、ＳＭＫは対応する秘密マスター鍵である。ユーザーｉはＰＭＫを公開して、ＳＭＫを用いて、各々の可能な短期公開鍵の秘密鍵を生成（及びその後でＳＭＫを破壊）する。関連ラウンドに対するｉの短期公開鍵の組はＳ＝｛ｉ｝×｛ｒ’，．．．，ｒ’＋１０6｝×｛１，．．．，μ｝である。（上述のように、ラウンドｒ’＋１０６が近づくにつれて、ｉは自身のペア（ＰＭＫ，ＳＭＫ））を「更新する」。）
【０３０１】
実際、μが充分に大きい場合、
【数３２２】
2021507629.tif 000333
のラウンドはμステップより多くは実行されない。しかし、原理的に、あるラウンドｒでは実際に実行されるステップの数がμを上回る可能性が僅かにある。これが生じた場合、ｉはラウンドｒに対してμ個の秘密鍵しか予め用意していないため、どのステップｓ＞μにおいても自身のメッセージ
【数３２３】
2021507629.tif 000334
に署名することができないであろう。更に、上述のように、短期鍵の新たな退避場所を用意して公開できないであろう。実際、そうするには、新規ブロックに新規な公開マスター鍵ＰＭＫ’を挿入する必要があろう。しかし、ラウンドｒがより多くのステップを実行したとしても新規ブロックは生成されないであろう。
【０３０２】
しかし、解決策は存在する。例えば、ｉは以下のようにラウンドｒの最後の短期鍵
【数３２４】
2021507629.tif 000335
を用いることができる。ラウンドｒに対して、例えば（１）別のマスター鍵のペア
【数３２５】
2021507629.tif 000336
を生成することにより、（２）ペアを用いて別の、例えばラウンドｒのステップμ＋１，．．．，μ＋１０6に対応する１０6個の短期鍵
【数３２６】
2021507629.tif 000337
を生成することにより、（３）
【数３２７】
2021507629.tif 000338
を用いて
【数３２８】
2021507629.tif 000339
に対して、
【数３２９】
2021507629.tif 000340
（及びｉ∈ＳＶr,μの場合任意の（ｒ，μ）メッセージ）にデジタル署名することにより、及び（４）
【数３３０】
2021507629.tif 000341
と
【数３３１】
2021507629.tif 000342
を消去することにより、鍵ペアの別の退避場所を生成する。ステップμ＋ｓ（ｓ∈｛１，．．．，１０6｝）においてｉが検証者になった場合、ｉは、自身の新たな鍵
【数３３２】
2021507629.tif 000343
に対して自身の（ｒ，μ＋ｓ）メッセージ
【数３３３】
2021507629.tif 000344
にデジタル署名する。無論、ｉの署名を検証には、公開鍵がｉの新たな公開マスター鍵
【数３３４】
2021507629.tif 000345
に対応することを他者が確認する必要がある。従って、この署名に加えて、ｉは、
【数３３５】
2021507629.tif 000346
に対する自身のデジタル署名
【数３３６】
2021507629.tif 000347
を送信する。
【０３０３】
無論、このアプローチは、ラウンドｒがより多くのステップにわたり継続するようであれば必要な回数だけ反復することができる！最後の短期秘密鍵を用いて新規マスター公開鍵、従ってラウンドｒに対する短期鍵の別の退避場所を認証する。以下同様。
【０３０４】
６．３  実際のプロトコル
【数３３７】
2021507629.tif 000348
ラウンドｒの各ステップｓで、検証者ｉ∈ＳＶr,sが自身の長期公開鍵及び秘密鍵のペアを用いて、ケースｓ＝１でのＳＩＧi（Ｑr-1）と共に自身の信任値
【数３３８】
2021507629.tif 000349
を生成することを想起されたい。検証者ｉは、自身の短期鍵ペア
【数３３９】
2021507629.tif 000350
を用いて、必要とされ得る他の任意のメッセージｍに署名する。説明を簡潔にすべく、ステップにおけるｍのｉの適切な短期署名を表記するのに
【数３４０】
2021507629.tif 000351
ではなくｅｓｉｇi（ｍ）と書き、
【数３４１】
2021507629.tif 000352
の代わりにＥＳＩＧi（ｍ）と書く。
【０３０５】
ステップ１：ブロック提案
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉは、ＣＥＲＴr-1を得たならば直ちにラウンドｒの自身のステップ１を開始し、これによりｉはＨ（Ｂr-1）及びＱr-1を曖昧さ無しに計算することができる。
・ユーザーｉはＱr-1を用いてｉ∈ＳＶr,1であるか否かを確認する。
2021507629.tif 000353
・ｉ∈ＳＶr,1、すなわちｉが潜在的リーダーならば、以下を行う。
（ａ）ｉ自身がＢ0，．．．，Ｂr-1を見たならば（任意の
【数３４２】
2021507629.tif 000354
をＣＥＲＴjにおけるそのハッシュ値から容易に導くことができ、従って「見た」と仮定される）、それまで自身へ拡散されてきたラウンドｒ支払いを回収して、それらから最大支払集合
【数３４３】
2021507629.tif 000355
を計算する。
（ｂ）ｉが未だＢ0，．．．，Ｂr-1の全てを見ていなければ、
【数３４４】
2021507629.tif 000356
を設定する。
（ｃ）次に、ｉは自身の「候補ブロック」
【数３４５】
2021507629.tif 000357
を計算する。
（ｃ）最後に、ｉはメッセージ
【数３４６】
2021507629.tif 000358
を計算して、自身の短期秘密鍵
【数３４７】
2021507629.tif 000359
を破壊し、次いで２個のメッセージ
【数３４８】
2021507629.tif 000360
及び
【数３４９】
2021507629.tif 000361
を別々に、但し同時に拡散する（脚注２２：ｉがリーダーである場合、ＳＩＧi（Ｑr-1）は他者がＱr＝Ｈ（ＳＩＧi（Ｑr-1），ｒ）を計算することを許す）。
【０３０６】
選択的拡散
ステップ１の大域的実行及びラウンド全体を短縮するには、（ｒ，１）メッセージが選択的に拡散されることが重要である。すなわち、システムの全てのユーザーｊに対して、
・これまでに受信して、ブロックを含んでいるか又はＱr-1の信任値及び署名に過ぎないかの検証に成功した（脚注２３：すなわち、全ての署名が正しく、且つ
【数３５０】
2021507629.tif 000362
の形式であれば、ブロック及びハッシュの両方が有効であるが、含まれる支払集合がｉにとって最大であるか否かをｊは確認しない）最初の（ｒ，１）メッセージの場合、プレーヤーｊがこれを通常通りに拡散する。
・プレーヤーｊが受信して検証に成功した他の全ての（ｒ，１）メッセージの場合、プレーヤーｊがこれを拡散するのは、含まれる信任値のハッシュ値が、これまで受信し検証に成功した全ての（ｒ，１）メッセージに含まれる信任値のハッシュ値のうち最小のものである場合だけである。
・しかし、ｊが
【数３５１】
2021507629.tif 000363
の形式である２個の異なるメッセージを同一プレーヤーｉから受信した場合（脚注２４：これはｉが悪意を有していることを意味する）、ｉの信任値のハッシュ値が何であろうと第２のメッセージを破棄する。
【０３０７】
選択的拡散の下で、各々の潜在的リーダーｉが自身の証明書
【数３５２】
2021507629.tif 000364
を
【数３５３】
2021507629.tif 000365
とは別個に拡散することが有用である（脚注２５：これを提言したＧｅｏｒｇｉｏｓ  Ｖｌａｃｈｏｓに感謝する）ことに注意されたい。これらの小さいメッセージはブロックより速く移動し、含まれる信任値は小さいハッシュ値を有している
【数３５４】
2021507629.tif 000366
の適時な拡散を保証する一方、大きいハッシュ値を有するものを素早く消失させる。
【０３０８】
ステップ２：等級化コンセンサスプロトコルＧＣの第１ステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＣＥＲＴr-1を得たならば直ちにラウンドｒの自身のステップ２を開始する。
・ユーザーｉは最長時間
【数３５５】
2021507629.tif 000367
だけ待機する。待機する間、ｉは以下のように行動する。
１．時間２λだけ待機した後で、これまで受信して検証に成功した（ｒ，１）メッセージの一部である全ての信任値
【数３５６】
2021507629.tif 000368
に対して
【数３５７】
2021507629.tif 000369
であるようなユーザーｌを見つける（脚注２６：本質的に、ユーザーｉは、ラウンドｒのリーダーがユーザーｌであると非公開に決定する）。
２．ＣＥＲＴr-1に含まれるハッシュ値Ｈ（Ｂr-1）に合致するブロックＢr-1を受信していて（脚注２７：無論、ＣＥＲＴr-1が
【数３５８】
2021507629.tif 000370
を示していれば、ｉはＣＥＲＴr-1を得た瞬間において既にＢr-1を「受信している」。）、且つｌから有効なメッセージ
【数３５９】
2021507629.tif 000371
を受信していれば（脚注２８：再び、プレーヤーｌの署名及びハッシュは全て検証が成功しており、
【数３６０】
2021507629.tif 000372
内の
【数３６１】
2021507629.tif 000373
はラウンドｒに対する有効な支払集合であるが、ｉは
【数３６２】
2021507629.tif 000374
がｌにとって最大であるか否かは確認しない。
【数３６３】
2021507629.tif 000375
が空の支払集合を含む場合、ｉは
【数３６４】
2021507629.tif 000376
が有効であるか否かを検証する前にＢr-1を実際に見る必要が無い）、ｉは待機を停止して
【数３６５】
2021507629.tif 000377
を設定する。
３．さもなければ、時間ｔ2が経過したとき、ｉは
【数３６６】
2021507629.tif 000378
を設定する。
４．
【数３６７】
2021507629.tif 000379
の値が設定されていれば、ｉはＣＥＲＴr-1からＱr-1を計算してｉ∈ＳＶr,2であるか否かを確認する。
５．ｉ∈ＳＶr,2である場合、ｉはメッセージ
【数３６８】
2021507629.tif 000380
を計算し（脚注２９：メッセージ
【数３６９】
2021507629.tif 000381
は、プレーヤーｉが
【数３７０】
2021507629.tif 000382
の第１成分が次のブロックのハッシュであると考えている、又は次のブロックが空であると考えている旨を通知する）、自身の短期秘密鍵
【数３７１】
2021507629.tif 000383
を破壊し、次いで
【数３７２】
2021507629.tif 000384
を拡散する。さもなければｉは何も拡散せずに停止する。
【０３０９】
ステップ３：ＧＣの第２ステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉはＣＥＲＴr-1を得たならば直ちにラウンドｒの自身のステップ３を開始する。
・ユーザーｉは最長時間
【数３７３】
2021507629.tif 000385
だけ待機する。待機する間、ｉは以下のように行動する。
１．
【数３７４】
2021507629.tif 000386
の形式で一切矛盾しない（脚注３０：すなわち、各々がＥＳＩＧj（ｖ）及び異なる
【数３７５】
2021507629.tif 000387
を含む２個の有効なメッセージをプレーヤーｊから受信していない。これ以降、後で定義する終了条件を除いて、正直なプレーヤーが所与の形式のメッセージを望む都度、互いに矛盾するメッセージは決してカウントされず、また有効ともみなされない。）少なくともｔH個の有効なメッセージ
【数３７６】
2021507629.tif 000388
を受信しているような値ｖが存在するならば、待機を停止してｖ’＝ｖを設定する。
２．さもなければ、時間ｔ3が経過したとき、ｖ’＝⊥を設定する。
３．ｖ’の値が設定されていれば、ｉはＣＥＲＴr-1からＱr-1を計算してｉ∈ＳＶr,3であるか否かを確認する。
４．ｉ∈ＳＶr,sである場合、ｉはメッセージ
【数３７７】
2021507629.tif 000389
を計算して、自身の短期秘密鍵
【数３７８】
2021507629.tif 000390
を破壊し、次いで
【数３７９】
2021507629.tif 000391
を拡散する。さもなければｉは何も拡散せずに停止する。
【０３１０】
ステップ４：ＧＣの出力及びＢＢＡ*の第１ステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉは自身のステップ３を終了したならば直ちにラウンドｒの自身のステップ４を開始する。
・ユーザーｉは最長時間２λだけ待機する（脚注３１：従って、ｉがラウンドｒの自身のステップ１を開始してからの合計最長時間は
【数３８０】
2021507629.tif 000392
であってよい）。待機する間、ｉは以下のように行動する。
１．ｖi及びｇi、ＧＣの出力を以下のように計算する。
（ａ）少なくともｔH個の有効なメッセージ
【数３８１】
2021507629.tif 000393
を受信しているような値ｖ’≠⊥が存在するならば、待機を停止して
【数３８２】
2021507629.tif 000394
及び
【数３８３】
2021507629.tif 000395
を設定する。
（ｂ）少なくともｔH個の有効なメッセージ
【数３８４】
2021507629.tif 000396
を受信していれば、待機を停止して
【数３８５】
2021507629.tif 000397
及び
【数３８６】
2021507629.tif 000398
を設定する（脚注３２：ステップ（ｂ）がプロトコル内に存在するか否かは、その正確さに影響しない。しかし、ステップ（ｂ）の存在により、充分に多くのステップ３検証者が「署名された⊥」を有していれば、ステップ４を２λよりも短い時間で終了することができる）。
（ｃ）さもなければ、時間２λが経過したとき、少なくとも
【数３８７】
2021507629.tif 000399
個の有効なメッセージ
【数３８８】
2021507629.tif 000400
を受信したような値ｖ’≠⊥が存在すれば、
【数３８９】
2021507629.tif 000401
及び
【数３９０】
2021507629.tif 000402
を設定する（脚注３３：この場合、ｖ’が存在するならば一意でなければならないことが証明できる）。
（ｄ）さもなければ、時間２λが経過したとき、
【数３９１】
2021507629.tif 000403
及び
【数３９２】
2021507629.tif 000404
を設定する。
２．値ｖi及びｇiが設定されている場合、ｉはｂi、ＢＢＡ*の入力を以下のように計算する。ｇi＝２ならば
【数３９３】
2021507629.tif 000405
、さもなければ
【数３９４】
2021507629.tif 000406
３．ｉはＣＥＲＴr-1からＱr-1を計算してｉ∈ＳＶr,4であるか否かを確認する。
４．ｉ∈ＳＶr,4である場合、メッセージ
【数３９５】
2021507629.tif 000407
を計算し、自身の短期秘密鍵
【数３９６】
2021507629.tif 000408
を破壊して、
【数３９７】
2021507629.tif 000409
を拡散する。さもなければ、ｉは何も拡散せずに停止する。
【０３１１】
ステップｓ，５≦ｓ≦ｍ＋２，ｓ−２≡０ｍｏｄ３：ＢＢＡ*のコインが０に固定されたステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉは、自身のステップｓ−１を終了したならば直ちにラウンドｒの自身のステップｓを開始する。
・ユーザーｉは最長時間２λだけ待機する（脚注３４：従って、ｉがラウンドｒの自身のステップ１を開始してからの合計最長時間は
【数３９８】
2021507629.tif 000410
であってよい）。待機する間、ｉは以下のように行動する。
−  終了条件０：任意の時点でストリングｖ≠⊥が存在し、及び以下のようなステップｓ’、すなわち
（ａ）５≦ｓ’≦ｓ，ｓ’−２≡０ｍｏｄ３、すなわちステップｓ’は、コインが０に固定されたステップであり、
（ｂ）ｉは少なくともｔH個の有効なメッセージ
【数３９９】
2021507629.tif 000411
を受信しており（脚注３５：プレーヤーｊからのそのようなメッセージは、たとえプレーヤーｉが、１に署名しているｊからもメッセージを受信していたとしてもカウントされる。終了条件１と同様の事項。解析に示すように、これは全ての正直なユーザーが互いからのＣＥＲＴrを時間λ内に知ることを保証するためである。）
（ｃ）ｉは有効なメッセージ
【数４００】
2021507629.tif 000412
を受信しており、ｊはｖの第２成分である、
が存在するならば、ｉは待機を停止し、（ｒ，ｓ）検証者として何も拡散せずに直ちに自身のステップｓ（実際にはラウンドｒ）の実行を終了し、Ｈ（Ｂr）をｖの第１成分に設定して、
【数４０１】
2021507629.tif 000413
と共に自身のＣＥＲＴrをステップ（ｂ）のメッセージ
【数４０２】
2021507629.tif 000414
の集合となるように設定する（脚注３６：ユーザーｉは現在Ｈ（Ｂr）を知っていて、自身のラウンドｒが終了する。ユーザーｉはブロックＢrが実際に自身へ拡散されるまで待つだけでよいが、これにはある程度の追加的な時間がかかる場合がある。ユーザーｉは依然一般ユーザーとしてメッセージの拡散を支援するが、（ｒ，ｓ）検証者としては一切の拡散を開始しない。特に、自身のＣＥＲＴr内の全てのメッセージの拡散を支援しており、本プロトコルには充分である。ユーザーｉはまた、バイナリＢＡプロトコルのために
【数４０３】
2021507629.tif 000415
を設定すべきであるが、本ケースではいずれにせよｂiは必要とされていない。全ての将来の命令でも同様である。）
−  終了条件１：任意の時点で以下のようなステップｓ’すなわち
（ａ’）６≦ｓ’≦ｓ，ｓ’−２≡１ｍｏｄ３、すなわちステップｓ’は、コインが１に固定されたステップであり、
（ｂ’）ｉは少なくともｔH個の有効なメッセージ
【数４０４】
2021507629.tif 000416
を受信しており（脚注３７：このケースではｖｊが何であるかは問題でない。）
が存在するならば、ｉは待機を停止し、（ｒ，ｓ）検証者として何も拡散せずに直ちに自身のステップｓ（実際にはラウンドｒ）の実行を終了し、
【数４０５】
2021507629.tif 000417
を設定し、自身のＣＥＲＴrをサブステップ（ｂ’）のメッセージ
【数４０６】
2021507629.tif 000418
の集合として設定する。
−  任意の時点で
【数４０７】
2021507629.tif 000419
の形式の少なくともｔH個の有効な
【数４０８】
2021507629.tif 000420
を受信していたならば、待機を停止して、
【数４０９】
2021507629.tif 000421
を設定する。
−  任意の時点で、
【数４１０】
2021507629.tif 000422
の形式の少なくともｔH個の有効な
【数４１１】
2021507629.tif 000423
を受信していたが、それらは同一のｖについて合意しない場合、待機を停止して
【数４１２】
2021507629.tif 000424
を設定する。
−  さもなければ、時間２λが経過したとき、ｉは
【数４１３】
2021507629.tif 000425
を設定する。
−  値ｂiが設定されていれば、ｉはＣＥＲＴr-1からＱr-1を計算してｉ∈ＳＶr,sであるか否かを確認する。
−  ｉ∈ＳＶr,sである場合、ｉはメッセージ
【数４１４】
2021507629.tif 000426
を計算し、但しｖiはステップ４で計算した値であり、自身の短期秘密鍵
【数４１５】
2021507629.tif 000427
を破壊して、
【数４１６】
2021507629.tif 000428
を拡散する。さもなければ、ｉは何も拡散せずに停止する。
【０３１２】
ステップｓ，６≦ｓ≦ｍ＋２，ｓ−２≡１ｍｏｄ３：ＢＢＡ*のコインが１に固定されたステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉは自身のステップｓ−１を終了したならば直ちにラウンドｒの自身のステップｓを開始する。
・ユーザーｉは最長時間２λだけ待機する。待機する間、ｉは以下のように行動する。
−  終了条件０：コインが０に固定されたステップと同じ命令。
−  終了条件１：コインが０に固定されたステップと同じ命令。
−  任意の時点で
【数４１７】
2021507629.tif 000429
の形式の少なくともｔH個の有効な
【数４１８】
2021507629.tif 000430
を受信していれば、待機を停止して、
【数４１９】
2021507629.tif 000431
を設定する。（脚注３８：１に署名しているｔH個の有効な（ｒ，ｓ−１）メッセージの受信が終了条件１を意味することに注意されたい。）
−  さもなければ、時間２λが経過したとき、ｉは
【数４２０】
2021507629.tif 000432
を設定する。
−  値ｂiが設定されていれば、ｉはＣＥＲＴr-1からＱr-1を計算してｉ∈ＳＶr,sであるか否かを確認する。
−  ｉ∈ＳＶr,sである場合、ｉはメッセージ
【数４２１】
2021507629.tif 000433
を計算し、但しｖiはステップ４で計算した値であり、自身の短期秘密鍵
【数４２２】
2021507629.tif 000434
を破壊して、
【数４２３】
2021507629.tif 000435
を拡散する。さもなければ、ｉは何も拡散せずに停止する。
【０３１３】
ステップｓ，７≦ｓ≦ｍ＋２，ｓ−２≡２ｍｏｄ３：ＢＢＡ*のコインを本当に投げたステップ
全てのユーザーｉ∈ＰＫr-kへの命令：ユーザーｉは自身のステップｓ−１を終了したならば直ちにラウンドｒの自身のステップｓを開始する。
・ユーザーｉは最長時間２λだけ待機する。待機する間、ｉは以下のように行動する。
−  終了条件０：コインが０に固定されたステップと同じ命令。
−  終了条件１：コインが０に固定されたステップと同じ命令。
−  任意の時点で
【数４２４】
2021507629.tif 000436
の形式の少なくともｔH個の有効な
【数４２５】
2021507629.tif 000437
を受信していれば、待機を停止して、
【数４２６】
2021507629.tif 000438
を設定する。
−  任意の時点で
【数４２７】
2021507629.tif 000439
の形式の少なくともｔH個の有効な
【数４２８】
2021507629.tif 000440
を受信していれば、待機を停止して、
【数４２９】
2021507629.tif 000441
を設定する。
−  さもなければ、時間２λが経過したとき、
【数４３０】
2021507629.tif 000442
を、自身が有効なメッセージ
【数４３１】
2021507629.tif 000443
を受信した（ｒ，ｓ−１）人の検証者の集合とすれば、ｉは
【数４３２】
2021507629.tif 000444
を設定する。
−  値ｂiが設定されていれば、ｉはＣＥＲＴr-1からＱr-1を計算してｉ∈ＳＶr,sであるか否かを確認する。
−  ｉ∈ＳＶr,sである場合、ｉはメッセージ
【数４３３】
2021507629.tif 000445
を計算し、但しｖiはステップ４で計算した値であり、自身の短期秘密鍵
【数４３４】
2021507629.tif 000446
を破壊して、
【数４３５】
2021507629.tif 000447
を拡散する。さもなければ、ｉは何も拡散せずに停止する。
【０３１４】
注記。原理的に、分節６．２で考察したように、プロトコルはあるラウンドで任意に多くのステップを実行することができる。これが生起した場合、上述のように、ユーザーｉ∈ＳＶr,s（ｓ＞μ）は、予め生成された短期鍵の自身の退避場所を使い果たしており、短期鍵の「カスケード」により自身の（ｒ，ｓ）メッセージ
【数４３６】
2021507629.tif 000448
を認証しなければならない。従って、ｉのメッセージは若干長くなり、これらのより長いメッセージの送信に若干多くの時間を要する。従って、所与のラウンドをそのように多くのステップ実行した後で、パラメータλの値は自動的に若干増加する。（しかし、新規ブロックが生成されて新ラウンドが開始されれば元のλに戻る。）
【０３１５】
非検証者によるラウンドｒブロックの再構築
システム内の全てのユーザーｉへの命令：ユーザーｉはＣＥＲＴr-1を得たならば直ちに自身のラウンドｒを開始する。
・ｉはプロトコルの各ステップの命令に従い、全てのメッセージを拡散するが、自身がその検証者でなければステップ内で一切拡散を開始しない。
・ｉは、対応するＣＥＲＴrと共に、あるステップに終了条件０又は終了条件１を入れることにより自身のラウンドｒを終了する。
・以降、ＣＥＲＴrによりハッシュＨ（Ｂr）が絞り込まれた実際のブロックＢrの受信を待機（自身が既に受信していなければ）する間、自身のラウンドｒ＋１を開始する。再び、ＣＥＲＴrが
【数４３７】
2021507629.tif 000449
を示す場合、ｉは、自身がＣＥＲＴrを得た瞬間、Ｂrを知っている。
【０３１６】
７  資金の大部分が正直であるプロトコルＡｌｇｏｒａｎｄ’
ここで、最後に、ユーザーの大多数は正直という仮定を、より意味のある資金の大部分が正直という仮定で代替する仕方を示す。（プルーフオブステークの意味で）基本的な考えは、「ｉが所有する資金量に比例する重み（すなわち決定力）でＳＶr,sに属するようにユーザーｉ∈ＰＫr-kを選択する」ことである。（脚注３９：継続的参加を代替すべくＰＫr-k-2,000と言うべきである。説明を簡潔にすべく、いずれにせよ人は継続的参加を望む可能性があるため、パラメータを１個減らすために以前のようにＰＫr-kを用いる。）
【０３１７】
ＨＭＭ仮定により、量がラウンドｒ−ｋ又はラウンドｒ（の開始時点）で所有されるべきか否かを選択することができる。継続的参加を気にしないと仮定すれば、後者の選択を優先する。（継続的参加を除外する場合、前者の選択を優先したであろう。換言すれば、ラウンドｒ−ｋ−２，０００で所有されていた資金量を優先したであろう。）
【０３１８】
上述の考えを実行する多くの仕方がある。最も簡単なのは、各々の鍵に高々１単位の資金を保有させ、次いで
【数４３８】
2021507629.tif 000450
となるようにＰＫr-kから無作為にｎ人のユーザーｉを選択することである。
【０３１９】
二番目に簡単な方式
二番目に簡単な方式は、公開鍵が最大資金量Ｍ（Ｍはある固定値）を所有することを要求することであろう。値Ｍは、システム内の総資金量と比較して充分に小さいため、ある鍵が、例えばｋラウンド内で１ステップより多くの検証者集合に属している確率は無視できる。次いで、
【数４３９】
2021507629.tif 000451
ならば、ラウンドｒで資金量
【数４４０】
2021507629.tif 000452
を所有する鍵ｉ∈ＰＫr-kがＳＶr,sに属するように選択される。
そして全てが以前と同様に進行する。
【０３２０】
より複雑な方式
最後の方式は「システム内の豊かな参加者に多くの鍵を所有することを強制」するものである。
【０３２１】
後述する代替的な方式は、状態の概念を一般化して、各ユーザーｉがＫ＋１個の複製（ｉ，ｖ）からなり、その各々が独立に検証者として選択されていて、各々がラウンドｒのステップｓで自身の短期鍵
【数４４１】
2021507629.tif 000453
を有していると考える。値Ｋは、ラウンドｒでｉが所有す資金量
【数４４２】
2021507629.tif 000454
に依存する。
【０３２２】
以下、このようなシステムがどのように機能するかを詳細に述べる。
【０３２３】
複製の数  各検証者集合の目標とする期待濃度をｎとし、ラウンドｒでユーザーｉが所有する資金量を
【数４４３】
2021507629.tif 000455
とする。ラウンドｒでＰＫr-kにおいてユーザーが所有する総資金量をＡrとする、すなわち、
【数４４４】
2021507629.tif 000456
である。
【０３２４】
ｉがＰＫr-kにおけるユーザーであるならば、ｉの複製は（ｉ，１），．．．，（ｉ，Ｋ＋１）であり、ここで
【数４４５】
2021507629.tif 000457
である。
【０３２５】
例  ｎ＝１，０００，Ａr＝１０9、及び
【数４４６】
2021507629.tif 000458
＝３７０万とする。従って、
【数４４７】
2021507629.tif 000459
である。
【０３２６】
検証者及び信任値  ｉを、Ｋ＋１個の複製を伴うＰＫr-kのユーザーとする。
ｖ＝１，．．．，Ｋの各々に対して、複製（ｉ，ｖ）は自動的にＳＶr,sに属する。すなわち、ｉの信任値は
【数４４８】
2021507629.tif 000460
であるが、対応する条件は
【数４４９】
2021507629.tif 000461
となって、常に真である。
【０３２７】
複製（ｉ，Ｋ＋１）に対して、ラウンドｒの各ステップｓで、ｉは
【数４５０】
2021507629.tif 000462
であるか否かを確認する。
【０３２８】
そうであれば、複製（ｉ，Ｋ＋１）はＳＶr,sに属する。これを証明するために、ｉは信任値
【数４５１】
2021507629.tif 000463
を拡散する。
【０３２９】
例  先の例と同様に、ｎ＝１Ｋ、
【数４５２】
2021507629.tif 000464
＝３．７Ｍ、Ａr＝１Ｂとし、ｉは４個の複製（ｉ，１），．．．，（ｉ，４）を有している。次いで、最初の３個の複製は自動的にＳＶr,sに属する。４番目のものに対して、概念的に、Ａｌｇｏｒａｎｄ’は、表が出る確率が０．７であるバイアスが掛かったコインを独立に転がす。複製（ｉ，４）が選択されるのはコイントスで表が出た場合に限られる。
【０３３０】
（無論、このバイアスが掛かったコイン投げは、ｉが自身の結果を証明できるようにすべく、本出願を通じて行ってきたように、ハッシング、署名、及び比較により行われる。）
【０３３１】
通常のビジネス  検証者がどのように選択されるか、及びその信任値がラウンドｒの各ステップでどのように計算されるかについて説明してきたが、１ラウンドの実行は既に説明したものと同様である。
【０３３２】
８  ネットワーク分割が無い仮定でのＡｌｇｏｒａｎｄ
本質的に、Ａｌｇｏｒａｎｄではブロックはラウンドで生成される。ラウンドｒにおいて、
（１）適切に信任されたリーダーが新規ブロックを提案し、次いで
（２）適切に信任されたユーザーが、数ステップにわたり、提案されたブロックで適切なビザンチン合意（ＢＡ）プロトコルを実行する。
【０３３３】
好適なＢＡプロトコルは、ＢＡ*である。ブロック提案ステップはステップ１と考えられるため、ＢＡ*のステップは２，３，．．．である。
【０３３４】
システム内のユーザーから無作為に選択された適切なユーザーｉだけがラウンドｒのステップｓでメッセージ
【数４５３】
2021507629.tif 000465
を送る権限を有している。Ａｌｇｏｒａｎｄが極めて高速且つ安全である理由は、そのようなユーザーｉが、自身が話す権限を有しているか否かを確認するからである。そうであるならば、ユーザーｉは実際に証明、すなわち信任値を取得する。ラウンドｒのステップｓで自身の話す順番である場合、ｉはネットワーク内で自身の信任値
【数４５４】
2021507629.tif 000466
及び自身のデジタル署名されたメッセージ
【数４５５】
2021507629.tif 000467
の両方を拡散する。信任値は他のユーザーに、メッセージ
【数４５６】
2021507629.tif 000468
を考慮に入れるべきであることを証明する。
【０３３５】
ユーザーｉがラウンドｒのステップｓで話す権限を有するため必要条件は、当人が数ラウンド前から既にシステムに存在することである。具体的には、ラウンドｒのｋラウンド前であり、ｋは「見直し」パラメータと称するパラメータである。すなわち、ラウンドｒで話す権限を有するために、全ての公開鍵／ユーザーの集合が既にラウンドｒ−ｋでシステムに存在する状況で、ｉはＰＫr-kに属していなければならない。（ユーザーは、自身の公開鍵で識別可能である。）この条件は、ブロックチェーンから導き出せるという意味で検証が容易である。
【０３３６】
他の条件は
Ｈ（ＳＩＧi（ｒ，ｓ，Ｑr-1））＜ｐ
であり、ここでｐはＳＶr,s内での検証者、すなわちラウンドｒのステップｓで話す権限を有するユーザーの集合の期待人数を制御する所与の確率である。この条件が満たされるならば、ｉの信任値は
【数４５７】
2021507629.tif 000469
で定義される。
【０３３７】
無論、自身がＳＶr,sに属するか否かを推察できるのはｉだけである。他の全てのユーザーは、ｉの秘密署名鍵に関する知識を欠いているため、そのことに関して全く分からない。しかし、ｉ∈ＳＶr,sであるならば、ｉは、ここまでのブロックチェーンを前提に自身の信任値
【数４５８】
2021507629.tif 000470
を拡散することにより、これは誰にでもあてはまることを提示することができる。実際（１）Ｑr-1は、充分多くのブロック前には本質的に予測不可能であるものの、以前のブロックＢr-1から容易に計算可能であること、及び（２）誰でもｉのデジタル署名を（システム内での長期鍵に対して）検証することができることを想起されたい。
【０３３８】
これまでのＡｌｇｏｒａｎｄのバージョンでは、新規ブロックはラウンドｒ−すなわちステップ１において一度だけ提案されることを想起されたい。ＢＡプロトコルは、これらのブロック（又は空ブロック）の１個に対してユーザーにコンセンサスに達せさせ、ラウンドｒで既に提案された新規ブロック又は再提案ブロックを更に提案することはしない。ネットワークが分割されておらず、且つメッセージを拡散する際の時間上限が満たされる場合、ユーザーは効率的且つ安全にコンセンサスに達する。
【０３３９】
９  ネットワーク分割に耐性を有するＡｌｇｏｒａｎｄ
Ａｌｇｏｒａｎｄの新規実施形態であって、ネットワーク分割が無いという仮定をなくすＡｌｇｏｒａｎｄ２について述べる。ユーザーの大多数は正直（ＨＭＵ）という仮定の下で、新たなプロトコルを提示する。節７と同じ方式を用いて、ＨＭＵ仮定を資金の大部分が正直（ＨＭＭ）という仮定で代替することができる。
【０３４０】
９．１  通信モデル
ネットワークが分割されないと場合、小さいメッセージが全ての正直なユーザーに拡散するのは時間λを要し、複数のブロックは以前と同様に全ての正直なユーザーに拡散するのに時間Λを要する。ネットワークがユーザーの複数のグループに分割されている場合、敵対者は、あるグループからユーザーにより拡散されたメッセージｍが他のグループのユーザーに配信されるか否か、他のグループの誰がｍを受信するか、及びいつｍを受信するかを判定する。ネットワーク分割を解決するには、将来の無制限な時間を要し得、分割されている間に拡散されたメッセージは、分割が解決された後で全てのユーザーに配信される。説明を簡潔にすべく、但し限定を意図することなく、ネットワーク分割の間に拡散されたメッセージが、分割が解決された直後に全てのユーザーに配信されるものと仮定する新規実施形態を記述する。例えば、ネットワーク分割が時刻ｔ1〜時刻ｔ2まで持続し、Ｍを分割の間に拡散されるメッセージの集合とすれば、全てのユーザーは時刻ｔ2までにＭ内のメッセージを受信する。当業者には、本明細書に記述するシステムが、Ｍ内のメッセージが全てのユーザーに到達するのに一定の時間を要する、又はそれらを受信したユーザーにより再拡散される他の状況を扱えることが理解されよう。
【０３４１】
９．２  パラメータの選択
予想される委員会のサイズｎ及び閾値ｔHが以下の条件に従い選択されている。ＰＫをユーザーの集合、ＨＰＫ及びＭＰＫを各々正直なユーザー及び悪意のあるユーザーの集合とする。ＨＰＫ1をＨＰＫの半分のサイズである任意の部分集合とする。各ユーザーｉ∈ＰＫが確率
【数４５９】
2021507629.tif 000471
で独立且つ無作為に選択されている場合、ＨＳＶ1及びＭＳＶを各々ＨＰＫ1及びＭＰＫからの選択された集合とする。従って圧倒的確率で
｜ＨＳＶ1｜＋｜ＭＳＶ｜＜ｔH
である。
【０３４２】
更に、ＨＳＶをＨＰＫからの選択されたものの集合とする。従って圧倒的確率で、
｜ＨＳＶ｜≧ｔH
である。
【０３４３】
上の２条件が｜ＨＳＶ｜＞２｜ＭＳＶ｜を示唆する点に注意されたい。
【０３４４】
例えば、ｈ＝８０％であってＰＫが充分に大きい場合、ｎ＝３，５００及びｔH＝２，６２５を選択することができる。
【０３４５】
９．３  一般的構造
ラウンド。  プロトコルはラウンド毎に１ブロックを生成する。１ラウンドは期間１，２，．．．を含み、１期間はステップ１，２，．．．を含んでいる。任意の時刻で、各ユーザーｉは、正確に一対のラウンド−期間で動作している。特に、ｒ．ｐを用いてラウンドｒの期間ｐを示す。
【０３４６】
期間１のステップ１において、ユーザーは新規ブロックを提案する。後続期間のステップ１において、ユーザーは新規ブロックを提案するか又は先行期間で提案されたブロックを再提案する。
【０３４７】
委員会。  期間ｒ．ｐの各ステップｓは、ＳＶr,p,sと表記する、暗号化された自己選択より選択された委員会を有している。ｋと表記する、節４．１と同じ見直しパラメータを用いる。例えば、ｋ＝７０である。ｉ∈ＰＫr-kであるならば、ユーザーｉはラウンドｒ委員会で選択される資格がある。各期間のステップ１の委員会は期待サイズｎ1（例：３５）を有し、他の全ての委員会は期待サイズｎを有している。ステップ１の委員会メンバーは潜在的リーダーと称される。
【０３４８】
説明を簡潔にすべく、但し限定を意図することなく、各期間のステップ１以外の全てのステップに対して同じ期待委員会サイズｎを有する新規実施形態を本明細書において記述する点に注意されたい。当業者には、異なる委員会が異なるサイズを有していることが理解され、他のあらゆる種類の実装方式を導く仕方が認識されよう。
【０３４９】
鍵。  暗号化された自己選択の全ての信任値が、一意な署名を用いるデジタル署名スキーム用のユーザーの長期鍵により署名され、ブロック内で指定される乱数シードＱrも同様である。他の全てのメッセージは、対応するステップの短期鍵を用いて署名される。一般に、鍵を指定せずに、ＳＩＧi（ｍ）を用いてメッセージｍに対するユーザーｉの署名を表記する。
【０３５０】
説明を簡潔にすべく、但し限定を意図することなく、本明細書において短期鍵を用いる新規実施形態を記述する点に注意されたい。当業者には、Ａｌｇｏｒａｎｄの既存のバージョンで紹介した技術の利用を含む、メッセージ信任されたブロックチェーンを有する他の実装方式を導く仕方が理解されよう。
【０３５１】
定義９．１．  信任値：ラウンドｒ、期間ｐ及びステップｓにおけるユーザーｉの信任値
【数４６０】
2021507629.tif 000472
はＳＩＧi（Ｑr-1，ｒ，ｐ，ｓ）である。
あるステップにおいて委員会メンバーは、ステップでの自身のメッセージと共に自身の対応する信任値を常に拡散しており、信任値の拡散には明示的に言及しない。
【０３５２】
定義９．２．  リーダー：期間ｒ．ｐにおけるリーダーｌr.pは、ユーザー
【数４６１】
2021507629.tif 000473
である。
ユーザーｉが期間ｒ．ｐにおける自身のリーダーｌi,r.pを識別した場合、ｉはｌi,r.pをユーザー
【数４６２】
2021507629.tif 000474
として設定し、ここでＳiはｉが有効な信任値を受信した潜在的リーダーの集合である。
【０３５３】
定義９．３．  有効なブロック：ラウンドｒ中に提案されたブロックを有効であると宣言するのは、その全ての取引がブロックＢ0，Ｂ1，．．．，Ｂr-1に関して有効であり、且つそれにより指定されるシードＱrがプロトコルの規則に従う場合に限る。
【０３５４】
投票メッセージ。  委員会メンバーは３種類の投票メッセージを生成する。
【０３５５】
定義９．４．  証明票：期間ｒ．ｐにおける値ｖに対するユーザーｉの証明票は、署名ＳＩＧi（ｖ，“ｃｅｒｔ”，ｒ．ｐ）である。
ユーザーｉがＳＩＧi（ｖ，“ｃｅｒｔ”，ｒ．ｐ）を拡散する場合、ユーザーｉは期間ｒ．ｐにおいて値ｖに証明投票すると言う。
【０３５６】
定義９．５．  ソフト票：期間ｒ．ｐにおける値ｖに対するユーザーｉのソフト票は、署名ＳＩＧi（ｖ，“ｓｏｆｔ”，ｒ．ｐ）である。
ユーザーｉがＳＩＧi（ｖ，“ｓｏｆｔ”，ｒ．ｐ）を拡散する場合、ユーザーｉは期間ｐにおいて値ｖにソフト投票すると言う。
【０３５７】
定義９．６．  次回票：期間ｒ．ｐ及びステップｓにおける値ｖに対するユーザーｉの次回票は、署名ＳＩＧi（ｖ，“ｎｅｘｔ”，ｒ．ｐ．ｓ）である。
ユーザーｉがＳＩＧi（ｖ，“ｎｅｘｔ”，ｒ．ｐ．ｓ）を拡散する場合、ユーザーｉは値ｖに次回投票すると言う。（脚注４０：各期間において、ソフト票は１ステップだけで生成され、証明票も同様である。従って、対応するステップを指定する必要がない。次回票は複数のステップで生成されてよいため、ステップ番号を指定する必要がある。）
【０３５８】
投票される値ｖは、ハッシュ関数Ｈの範囲内の値であるか、又は同じ長さであるがＨの範囲外の特別な記号⊥である。（脚注４１：本稿におけるブロック構造はＡｌｇｏｒａｎｄの既存のバージョンと同一であり、ブロックＢのヘッダすなわちＨｅａｄｅｒ（Ｂ）が実際の支払集合を除くＢの全内容を含んでいる。元のプロトコルと同様に、ユーザーが実際のブロックＢrを見る前にラウンドｒ＋１を開始できるようにすべく、潜在的リーダーに、ハッシュと共に彼らが提案するブロックのヘッダも拡散するように依頼することができる。この場合、ｖ及び⊥は、可能なハッシュヘッダペアと同じ長さである。以下のプロトコルの記述においてヘッダを無視する。）
【０３５９】
タイマー。  各ユーザーｉはタイマーｃｌｏｃｋiを保持しており、新たな期間を開始する都度０に再設定する。ｉが同一期間に残留する限り、ｃｌｏｃｋiはカウントし続ける。ユーザーの個々のタイマーは、同期又はほぼ同期されている必要がない。唯一の要件は、同じ速度を有することである。
【０３６０】
９．４  実際のプロトコルＡｌｇｏｒａｎｄ２
以下のプロトコルにおいて、異なる期間からのブロック及び潜在的なリーダーの信任値が節５と同様に選択的に拡散される。
【０３６１】
ラウンドｒ、期間１
以下は一般的なユーザーｉに対する期間１の命令である。ユーザーｉが特定のステップの委員会に存在しない場合、依然としてステップで自身の票を計算するが、拡散はしない。
【０３６２】
ユーザーｉが自身のラウンドｒを開始した瞬間に、期間１を開始してｃｌｏｃｋiを０に再設定する。
【０３６３】
ステップ１：［ブロック提案］  ｃｌｏｃｋi＝０のとき、ユーザーｉは以下を実行する。
・ｉが潜在的リーダーであるならば、自身の提案されたシード
【数４６３】
2021507629.tif 000475
を定義すべく自身の署名ＳＩＧi（Ｑr-1，ｒ）を含む自身の提案されたブロック
【数４６４】
2021507629.tif 000476
を用意する（脚注４２：すなわち、
【数４６５】
2021507629.tif 000477
である。）
【数４６６】
2021507629.tif 000478
を拡散し、直後にブロック自身も拡散する。
【０３６４】
ステップ２：［フィルタリングステップ］  ｃｌｏｃｋi＝２λのときユーザーｉは以下を実行する。
・自身のリーダーｌi,r.pを認識して、自身のリーダーが提案したブロックハッシュにソフト投票する。（脚注４３：ｉがソフト投票する前に実際のブロックを見ている必要はない。）
【０３６５】
ステップ３：［証明ステップ］
【数４６７】
2021507629.tif 000479
とする。ｃｌｏｃｋi∈（２λ，Ｔ）のとき、ユーザーｉは以下を実行する。
・ｉがＨ（Ｂ）に対するｔH個のソフト票と共に有効なブロックＢを見たならば、ｉはＨ（Ｂ）に証明投票する。
【０３６６】
ステップ４：［第１の仕上げステップ］  ｃｌｏｃｋi＝Ｔのときユーザーｉは以下を実行する。
・ｉがステップ３でいずれかの値ｖに証明投票していれば（脚注４４：ｉがＳＶr,1,3に存在しない場合、自身の票を拡散せずに、証明投票されたいずれかのｖを「自身のために」依然として有している可能性がある。）、ｖに次回投票し、
・さもなければ、⊥に次回投票する。
【０３６７】
ステップ５：［第２の仕上げステップ］  ｃｌｏｃｋi∈［Ｔ，Ｔ＋Ｌ）のとき（Ｌは例えば５０Λ）ユーザーｉは以下を実行する。（脚注４５：敵対者が動的にユーザーを唆すことができない場合、本プロトコルの許可されたバージョンと同様に、時刻∞までステップ５を続け、以降のステップを実行しなければ充分である。将来のステップは、たとえ敵対者がステップ４及びステップ５の全てのメッセージを横取りして、ステップ４及びステップ５の委員会メンバー全員を唆して彼ら分割の後で自身のメッセージを再送信できないようにしても、分割が解決された後でプロトコルが復旧することを保証すべく用いられる。Ｌが小さいほど、最悪のケースでも分割の解決速度の向上に役立つ一方、Ｌが大きいほど、分割が解決されたならば再拡散する必要があるメッセージの量が減る。）
・ｉがＨ（Ｂ）に対するｔH個のソフト票と共に有効なブロックＢを見たならば、ｉはＨ（Ｂ）に次回投票する。
【０３６８】
ステップ  ｓ≧６：［連続的仕上げステップ］
・ｓが偶数ならば、ｃｌｏｃｋi＝Ｔ＋（ｓ−４）Ｌ／２のときｉはステップ４と同様に同じ投票命令に従う。
・さもなければ（すなわちｓが奇数）、ｃｌｏｃｋi∈［Ｔ＋（ｓ−５）Ｌ／２，Ｔ＋（ｓ−３）Ｌ／２）のとき、ｉはステップ５と同じ投票命令に従う。
【０３６９】
期間ｒ、期間ｐ≧２
以下は一般的なユーザーｉに対する期間ｐ命令である。再び、ユーザーｉが特定のステップの委員会に存在しない場合、依然としてステップで自身の票を計算するが、拡散はしない。
【０３７０】
ユーザーｉは、期間ｐ−１の同じステップｓでいずれかの値ｖ（⊥に等しい可能性がある）に対するｔH個の次回票を受信した瞬間に、且つ期間ｐ’＞ｐを未だ開始していない場合のみ期間ｐを開始する。ユーザーｉは、期間ｐの開始値
【数４６８】
2021507629.tif 000480
をｖに設定する。ｉが期間ｐを開始した瞬間に、以前の全て期間を終了してｃｌｏｃｋiを０に再設定する。
【０３７１】
ステップ１：［ブロック提案］  ユーザーｉが潜在的リーダーである場合、ｃｌｏｃｋi＝０のとき以下を実行する。
・ｉが期間ｐ−１の同じステップｓで⊥に対するｔH個の次回票を見ている場合（脚注４６：極端なケースでは、ユーザーｉは期間ｐ−１において、⊥に対するｔH個の次回票及びいずれかのｖ≠⊥に対するｔH個の次回票を同時に見る場合がある。ｉはこの場合、自身の開始値を⊥又はｖのいずれかに設定することができるが、ブロック提案ステップは常に⊥を優先する。）、ｉは自身の提案されたシード
【数４６９】
2021507629.tif 000481
をＨ（Ｑr-1，ｒ）として定義する新規ブロック
【数４７０】
2021507629.tif 000482
を提案する。（脚注４７：すなわち、期間ｐ≧２で新たに提案されたブロックがあたかもそのリーダーを欠いているようであり、Ｂrが空のブロックである場合、対応するシードＱrは元のＡｌｇｏｒａｎｄプロトコルと同様に定義される。）ｉは
【数４７１】
2021507629.tif 000483
を拡散し、直後にブロック自身も拡散する。
・さもなければ（すなわち、ｉは、期間ｐ−１の同じ期間ｓにおいていずれかのｖ≠⊥に対するｔH個の次回票を受信しただけであり、
【数４７２】
2021507629.tif 000484
である）、ｉは
【数４７３】
2021507629.tif 000485
を拡散することによりこれを提案する。（脚注４８：この場合、充分に多くの正直なユーザーが、ｖ＝Ｈ（Ｂ）である有効なブロックＢを見ているため、ｉ自身がＢを見ている必要はない。）
【０３７２】
ステップ２：［フィルタリングステップ］  ｃｌｏｃｋi＝２λのときユーザーｉは以下を実行する。
・ｉが同じ期間ｐ−１のステップｓで⊥に対するｔH個の次回票を見ている場合（脚注４９：これらの票がｉの時間（０、２λ］内にｉに到達し得るため、ｉの開始値が必ずしも⊥とは限らない点に注意されたい。）、ｉは期間ｐにおける自身のリーダーｌi,pを識別して、ｌi,pが提案した値ｖに対してソフト投票する。
・さもなければ（すなわち、ｉは、期間ｐ−１の同じステップｓにおいてｖ≠⊥に対するｔH個の次回票を受信しただけであり、
【数４７４】
2021507629.tif 000486
である）、ｉは
【数４７５】
2021507629.tif 000487
をソフト投票する。
【０３７３】
ステップ３：［証明ステップ］  ｃｌｏｃｋi∈（２λ，Ｔ），Ｔ＝Λ＋λのときユーザーｉは以下を実行する。
・ｉがＨ（Ｂ）に対するｔH個のソフト票と共に有効なブロックＢを見たならば、ｉはＨ（Ｂ）に証明投票する。
【０３７４】
ステップ４：［第１の仕上げステップ］  ｃｌｏｃｋi＝Ｔのときユーザーｉは以下を実行する。
・ｉがステップ３でいずれかの値ｖに証明投票していればｖに次回投票する。
・ｉが期間ｐ−１の同じステップｓで⊥に対するｔH個の次回票を見ていた場合、⊥に次回投票する。
・さもなければ
【数４７６】
2021507629.tif 000488
に次回投票する。
【０３７５】
ステップ５．１：［第２の仕上げステップ］  ｃｌｏｃｋi∈［Ｔ，Ｔ＋Ｌ）のときユーザーｉは以下を実行する。
・ｉがＨ（Ｂ）に対するｔH個のソフト票と共に有効なブロックＢを見たならば、ｉはＨ（Ｂ）に次回投票する。
【０３７６】
ステップ５．２：［第２の仕上げステップ］  ｃｌｏｃｋi∈［Ｔ，Ｔ＋Ｌ）のときユーザーｉは以下を実行する。（脚注５０：ステップ５．１及び５．２は異なる委員会を有するように異なるステップとされている。）
・ｉがステップ３で証明投票しておらず、且つ期間ｐ−１の同じステップｓで⊥に対するｔH個の次回票を見たならば、ｉは⊥に次回投票する。
【０３７７】
ステップｓ≧６：［連続的仕上げステップ］
・ｓが偶数ならば、ｃｌｏｃｋi＝Ｔ＋（ｓ−４）Ｌ／２のときｉはステップ４と同様に同じ投票命令に従う。
・さもなければ（すなわちｓが奇数）、ｃｌｏｃｋi∈［Ｔ＋（ｓ−５）Ｌ／２，Ｔ＋（ｓ−３）Ｌ／２）のときｉはステップ５．１及び５．２と同じ投票命令に従う。
【０３７８】
ラウンド変更
全てのユーザーｉ∈ＰＫへの命令：
・ｉがラウンドｒで動作中の任意の時点で、ｉがストリングｖ≠⊥及び期間ｒ’．ｐ（ｒ’≧ｒ）を見た結果、
−  ｉが期間ｒ’．ｐでｖの少なくともｔH個の証明票を受信していて（脚注５１：たとえプレーヤーｉも、同じ期間で異なる値に対して証明投票しているｊからメッセージを受信していたとしても、プレーヤーｊからの証明票はカウントされる。解析に示すように、これは全ての正直なユーザーが互いに時間λ以内にＣＥＲＴを知ることを保証するためである。）、且つ
−  ｉがｖに対応するブロックヘッダを受信しているならば（脚注５２：ヘッダはシード
【数４７７】
2021507629.tif 000489
を定義し、先に述べたように、厳密に言えばヘッダはｖ自身の一部である。）、
ｉは期間ｒ’．ｐにおいてｖに証明投票し（脚注５３：ｉは受信したｔH個の証明票の拡散を既に支援しているため、理論的解析のためにｉが自身の票を拡散する必要はない。しかし、
【数４７８】
2021507629.tif 000490
の場合にｉに自身の票を拡散することで、他のユーザーが実際により早く証明を見ることができる。）、自身の
【数４７９】
2021507629.tif 000491
をｖの証明票の集合として設定して、ラウンドｒ’＋  １を開始する。
【０３７９】
図６を参照すると、ダイアグラム２０’に、インターネット等のデータネットワークの第１の部分２４’に接続された第１の複数の計算ワークステーション２２ａ〜２２ｃ、及びデータネットワークの第２の部分２４”に接続された第２の複数の計算ワークステーション２２ａ’〜２２ｃ’を示す。ワークステーション２２ａ〜２２ｃはネットワークの第１の部分２４’を介して互いに通信し、ワークステーション２２ａ’〜２２ｃ’はネットワークの第２の部分２４”を介して互いに通信する。しかし、図１のダイアグラム２０とは異なり、ネットワークが分割メカニズム２６により第１の部分２４’と第２の部分２４”に分割されているため、ワークステーション２２ａ〜２２ｃは、ワークステーション２２ａ’〜２２ｃ’とは通信しない。分割メカニズム２６は、ネットワークの部分２４’と２４”の間の通信を抑制する任意の機構であってよい。分割メカニズム２６が敵対者により意図的にネットワーク内に挿入され得ること、又は停電又はネットワーク切替エラーを等の自然又は人為的現象により生じた予期しないネットワーク中断により生起し得る点に注意されたい。本明細書に記述するシステムにおいて、ワークステーション２２ａ〜２２ｃ、２２ａ’〜２２ｃ’の各々が上述のステップを実行するが、第１の複数のワークステーション２２ａ〜２２ｃは第２の複数のワークステーション２２ａ’〜２２ｃ’とは通信しない。すなわち、各々の主体２２ａ〜２２ｃは取引システムを部分２４’内で局所的に管理する一方、各々の主体２２ａ’〜２２ｃ’は取引システムを部分２４”内で局所的に管理する。高々部分２４’、２４”の一方だけが、証明されたブロックを生成するのに充分なユーザー（主体）を有している。分割メカニズム２６が除去されて、部分２４’、２４”が（図１に関して上で述べたネットワーク２４のような）単一ネットワークに収束した後で、ワークステーション２２ａ〜２２ｃ、２２ａ’〜２２ｃ’の全てが互いに通信して、チェーンの同じ位置（ブロック）で動作を再開することが可能になる。分割メカニズム２６が除去された後で、主体２２ａ〜２２ｃ、２２ａ’〜２２ｃ’の各々が、主体２２ａ〜２２ｃ、２２ａ’〜２２ｃ’の全てが互いに通信するネットワーク内で単一の取引システムを管理する。
【０３８０】
解析。  ネットワークが分割されていたとしても新規実施形態は安全なままである。すなわち、各ラウンドｒで高々１ブロックが証明される。高レベルで、その理由は、正直なユーザーはラウンドｒの各期間で高々１回しか証明投票せず、且つ委員会サイズｎ及び閾値ｔHの選択により各期間ｒ．ｐでは有効なブロックＢの高々１個のハッシュ値Ｈ（Ｂ）しか証明を得れないことが保証されるからである。異なる方向から解釈すれば、期間ｒ．ｐが、Ｂ0，．．．，Ｂr-1に関して１個の有効なブロックＢに対してｔH個の証明票、及び別の有効なブロックＢ’に対してｔH個の証明票を生成したと仮定すると、ｎ及びｔHの選択条件は、少なくとも１人の正直なユーザーがＢ及びＢ’の両方のハッシュ値に証明投票したことを示唆するように選択され、これは正直なユーザーが期間ｒ．ｐでは高々１回しか証明投票しないという事実と矛盾する。
【０３８１】
ある期間ｒ．ｐにおいて有効なブロックＢが証明、すなわち、少なくとも自身のハッシュ値Ｈ（Ｂ）に対してｔH個の証明票を取得したなれば、将来の全ての期間ｐ’＞ｐ（それらに到達するとして）において、Ｂは期間ｒ．ｐ’内に証明を取得できる唯一のブロックである。実際、正直なユーザーは、ｒ．ｐでＨ（Ｂ）に証明投票していたならば、期間ｒ．ｐで⊥に対して次回投票しない。従って、ｎ及びｔＨの同じ選択により、期間ｒ．ｐのどのステップｓ≧４においても、⊥又は他の任意の値ｖ≠Ｈ（Ｂ）に対してｔH個の次回票は生じない。従って正直なユーザーが期間ｒ．（ｐ＋１）に移動するのはＨ（Ｂ）に対する少なくともｔH個の次回票を受信した場合だけである。従って、Ｈ（Ｂ）は、期間ｒ．（ｐ＋１）のステップ１で（再）提案される唯一の値、正直なユーザーが期間ｒ．（ｐ＋１）のステップ２でソフト投票する唯一の値、従って結果的に期間ｒ．（ｐ＋１）のステップ３で証明投票し、且つ同期間のステップｓ≧４で次回投票する唯一の値となる。帰納的な議論により、同じことが全ての連続的な期間に成り立つ。
【０３８２】
ネットワークが分割されている場合、Ｂが期間ｒ．ｐに証明を取得していたとしても、正直なユーザーが証明を取得することを意味しない。実際、ネットワーク分割がされている間、敵対者はシステム内でメッセージがどのように配信されるかを制御する。敵対者は例えば、証明票以外の全てのメッセージは適切に配信できるが、あるグループのユーザーから他のグループに証明票が配信できないようにする恐れがある。にもかかわらず、Ｂが証明を取得したことは、充分な人数の正直なユーザーがＢに証明投票して、他には次回投票しないことを示唆し、他の任意のブロックが期間ｒ．ｐ及びあらゆる将来の期間にわたり証明されることを阻害する。
【０３８３】
新規実施形態の効率は２つの部分に由来する。第一に、ネットワークが分割されていない場合、ｒ番目のブロックに関するコンセンサスに迅速に到達する。実際、期間ｒ．１のステップ１のリーダーが正直ならば、全ての正直なユーザーは直ちに自身の提案されたブロックＢに証明投票し（Ｂは期間ｒ．ｐのステップ３の後で証明を取得している）、その後全ての正直なユーザーはラウンドｒを終了する。
【０３８４】
同様に、ラウンドｒが期間ｐ≧２に到達し、且つ期間ｐのリーダーｌが正直ならば、ｌにより新たに提案された又は再提案されたブロックはステップ３で証明され、全ての正直なユーザーはその後ラウンドｒを終了する。その理由は、ｌが、期間ｐ−１からの⊥に対するｔH個の次回票を見ており、且つ新規ブロックを提案していたならば、これらの次回票は時間λ内に全ての正直なユーザーに到達して全てｌの提案に対してソフト投票するであろう。さもなければ、ｌは期間ｐ−１からの有効なブロックＢのハッシュＨ（Ｂ）に対するｔH個の次回票しか見ておらず、Ｈ（Ｂ）を再提案していた。全ての正直なユーザーの期間ｐの開始値は⊥又はＨ（Ｂ）のいずれかであり、いずれの場合にせよＨ（Ｂ）に対してソフト投票する。その理由は、前者の場合はリーダーの提案に従っており、後者の場合は自身の開始値に投票しているからである。
【０３８５】
更に、ある有効なブロックＢに対する証明が期間ｒ．ｐに生成されたならば、全ての正直なユーザーはその直後にラウンドｒを終了する。その理由は、Ｂに対して少なくともｔH個の証明票が正直なユーザーから来たならば、全て正直なユーザーは時間λ内にそれらを受信して、Ｂがｒ番目のブロックであるラウンドｒを終了するからである。Ｂに対するｔH個の証明票の任意の集合が少なくとも１人の悪意のあるユーザーで含んでいれば、悪意のあるユーザーは、自身の証明票を送らないことを選択し、正直なユーザーが直ちにＢの証明を受信しないであろう。しかし、ｎ及びｔHの選択は、Ｂに対する証明が少なくとも１人の正直なユーザーｉを含み、ｉはＢに対して証明投票する前にｔH個のソフト票を受信していることが保証する。ｉがこれらのソフト票を拡散しており、且つネットワークが分割されていないため、全ての正直なユーザーはこれらを時間λ内に受信してステップ５．１でＨ（Ｂ）に対して次回投票するであろう。従って、全ての正直なユーザーは、期間ｒ．（ｐ＋１）のリーダーが正直であるか否かに依らず、開始値Ｈ（Ｂ）により期間ｒ．（ｐ＋１）を開始し、期間ｒ．（ｐ＋１）のステップ２でこれに対してソフト投票するであろう。その結果、正直なユーザーはステップ３でＨ（Ｂ）に対して証明投票し、現在Ｂは正直なユーザーからの証明を有しており、全ての正直なユーザーはこれらを受信して時間λ内にラウンドｒを終了するであろう。
【０３８６】
新規実施形態で用いるシードＱr及び暗号抽選の選択は、元のＡｌｇｏｒａｎｄプロトコルと同様に、ラウンドｒの各期間ｐが高い確率で正直なリーダーを有することを保証し、ネットワーク分割が無い場合の新規実施形態に関する、省略していた詳細な解析を以下に行う。
【０３８７】
第２に、ネットワーク分割が解決された後で、プロトコルは復旧して迅速にコンセンサスに到達しよう。実際、分割中に何人かの正直なユーザーがラウンドｒのブロックＢに対して証明を受信していて、ラウンドｒ＋１に移動した場合、分割が解決されたならば全ての正直なユーザーはＢに対するそのような証明を受信してラウンドｒ＋１に移動する。更に、ｐを、分割中に正直なユーザーｉが到達したラウンドｒ＋１における最遠期間とする。すると、ｉが期間（ｒ＋１）．ｐに移動できるようにした全ての次回票は分割が解決された後で他の正直なユーザーに到達し、彼らもまた期間の（ｒ＋１）．ｐに移動するであろう。プロトコルは次いで、ネットワーク分割が無い場合と同じ解析に従いそこから通常通り継続する。分割中にラウンドｒからラウンドｒ＋１まで移動する正直なユーザーが存在しなければ、全ての正直なユーザーは同じラウンドである恐らく異なる期間にいる。この場合、ｐを、分割中に正直なユーザーｉが到達したラウンドｒにおける最遠期間とする。同様に、分割が解決された後で、ｉが期間ｒ．ｐに移動できるようにした全ての次回票は他の正直なユーザーに到達し、それらは期間ｒ．ｐにも移動する。再び、プロトコルはそこから通常通り継続する。
【０３８８】
要約すれば、ネットワークが分割されていたとしても、新規実施形態は安全であってソフト分岐しない。ネットワークが分割されていない場合、ブロックを効率的に生成し、ネットワーク分割が解決された後で迅速に復旧する。
【０３８９】
１０  範囲
本明細書に記述する機構が、検証等の特定の目的でユーザーの部分集合を一般に検証可能な仕方で無作為に選択することが望ましい他のブロックチェーンシステムに適用できる点に注意されたい。従って、本明細書に記述するシステムは他のブロックチェーンスキーム、例えばイーサリアム又はライトコイン或いは通貨とは直接関係がないブロックチェーンスキームにも適合させることができる。
【０３９０】
本明細書に記述するシステムは、全文を参照により本明細書に引用している２０１７年５月４日出願のＰＣＴ／米国特許出願公開第２０１７／０３１０３７号、２０１７年８月１７日出願の米国特許出願第１５／５５１，６７８号、２０１８年１０月２４日出願の米国特許出願第１６／０９６，１０７号、２０１８年９月２８日出願のＰＣＴ／米国特許出願公開第２０１８／０５３３６０号、２０１８年１０月４日出願のＰＣＴ／米国特許出願公開第２０１８／０５４３１１号、２０１８年２月２０日出願の米国特許出願第６２／６３２，９４４号、２０１８年３月１５日出願の米国特許出願第６２／６４３，３３１号、２０１８年１２月１０日出願の米国特許出願第６２／７７７，４１０号、及び２０１８年１２月１２日出願の米国特許出願第６２／７７８，４８２号のいずれか又は全てに開示された機構に適用すべく、及びこれらと組み合わせるべく適合させることができる。
【０３９１】
本明細書に記述するシステムのソフトウェア実装は、計算機可読媒体に保存され、１つ以上のプロセッサにより実行される実行可能コードを含んでいてよい。計算機可読媒体は非一時的でよく、コンピュータハードドライブ、ＲＯＭ、ＲＡＭ、フラッシュメモリ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、フラッシュドライブ、ＳＤカード等の可搬コンピュータ記憶媒体及び／又は例えばユニバーサルシリアルバス（ＵＳＢ）インターフェースを備えた他のドライブ、及び／又は実行コードが保存されてプロセッサにより実行可能な、他の適切な有形又は非一時的計算機可読媒体或いはコンピュータメモリであってよい。本明細書に記述するシステムは任意の適当なオペレーティングシステムと組み合わせて用いられてよい。
【０３９２】
本発明の他の実施形態は、本明細書に開示する本発明の仕様の実施を考慮することにより当業者に明らかになろう。仕様及び実施例は例示目的に過ぎず、本発明の真の範囲及び趣旨は以下の請求項により示されるものとする。
【図１】
2021507629.tif 000492
【図２】
2021507629.tif 000493
【図３】
2021507629.tif 000494
【図４．Ａ】
2021507629.tif 000495
【図４．Ｂ】
2021507629.tif 000496
【図５】
2021507629.tif 000497
【図６】
2021507629.tif 000498
【国際調査報告】
2021507629.tif 000499