Algorand: Ampliando Acordos Bizantinos para Criptomoedas

著 Jing Chen and Silvio Micali · 2017

概要

公開台帳は、誰でも読み取って拡張できる改ざん防止された一連のデータです。 公開台帳には無数の魅力的な用途があります。一目瞭然で、あらゆる種類のセキュリティを確保できます。 トランザクション (タイトル、販売、支払いなど) を発生した正確な順序で記録します。 公開台帳は汚職を防止するだけでなく、非常に高度なアプリケーションを可能にします。 暗号通貨とsmart contract。彼らは民主主義社会のあり方に革命を起こそうとしている 動作します。ただし、現在実装されているように、拡張性が低く、潜在力を発揮できません。 Algorand は、公開台帳を実装するための真に民主的で効率的な方法です。 以前とは異なり プルーフ・オブ・ワークに基づく実装では、必要な計算量はごくわずかです。 圧倒的に高い確率で「フォーク」しない取引履歴を生成します。 Algorand は、(斬新で超高速な) メッセージ パッシング ビザンチン協定に基づいています。 具体的にするために、Algorand をマネープラットフォームとしてのみ説明します。

Resumo

Um livro-razão público é uma sequência de dados inviolável que pode ser lida e aumentada por qualquer pessoa. Os livros-razão públicos têm usos inúmeros e atraentes. Eles podem proteger, à vista de todos, todos os tipos de transações —como títulos, vendas e pagamentos— na ordem exata em que ocorrem. Os livros-razão públicos não apenas reduzem a corrupção, mas também permitem aplicações muito sofisticadas — como criptomoedas e smart contracts. Eles irão revolucionar a forma como uma sociedade democrática opera. No entanto, tal como estão actualmente implementados, eles têm uma fraca escalabilidade e não conseguem atingir o seu potencial. Algorand é uma forma verdadeiramente democrática e eficiente de implementar um livro-razão público. Ao contrário do anterior implementações baseadas em prova de trabalho, requer uma quantidade insignificante de computação e gera um histórico de transações que não será “fork” com probabilidade extremamente alta. Algorand é baseado em um acordo bizantino de transmissão de mensagens (novo e super rápido). Para ser mais concreto, descreveremos Algorand apenas como uma plataforma monetária.

導入

お金はますます仮想化しています。米国の約80%と推定されています。 現在のドルは台帳エントリ [5] としてのみ存在します。他の金融商品もこれに追随している。 理想的な世界では、普遍的に信頼される中心的存在である免疫を頼りにすることができます。 あらゆる可能性のあるサイバー攻撃に対して、金銭やその他の金融取引は電子的にのみ行われる可能性があります。 残念ながら、私たちはそのような世界に住んでいません。したがって、分散型暗号通貨、 Bitcoin [29]、および Ethereum などの「smart contract」システムが [4] として提案されています。 で これらのシステムの中心は、一連の取引を確実に記録する共有台帳です。 ∗これは、2 番目の著者 [24] による ArXiv 論文のより正式な (および非同期) バージョンです。 それ自体は、ゴルブノフとミカリ [18] のそれに基づいています。 Algorand のテクノロジーは以下の対象です 特許出願: US62/117,138 US62/120,916 US62/142,318 US62/218,817 US62/314,601 PCT/US2016/018300 US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931支払いや契約などさまざまな情報を改ざん防止された方法で。 選ばれるテクノロジー このような改ざん防止性を保証するものは blockchain です。 ブロックチェーンは次のようなアプリケーションの背後にあります。 暗号通貨 [29]、金融アプリケーション [4]、モノのインターネット [3]。いくつかのテクニック blockchain ベースの台帳を管理することが提案されています: プルーフ・オブ・ワーク [29]、プルーフ・オブ・ステーク [2]、 実用的なビザンチン フォールト トレランス [8]、またはその組み合わせ。 ただし、現在のところ、台帳の管理は非効率的である可能性があります。たとえば、Bitcoin の proof-of-work ([14] の元の概念に基づく) アプローチは膨大な量の計算を必要とし、無駄が多い [1] はスケーリングが不十分です。さらに、事実上、ごく少数の手に権力が集中している。 したがって、私たちは、以下を提供する公開台帳を実装する新しい方法を提案したいと考えています。 信頼できる不可侵の機関によって運営される集中システムの利便性と効率性。 現在の分散型実装の非効率性と弱点。私たちのアプローチを Algorand、これまでに構築された台帳に基づいてアルゴリズムのランダム性を使用して選択するため、 有効なトランザクションの次のブロックの構築を担当する一連の検証者。当然のことながら、 私たちは、そのような選択が操作の影響を受けないことが証明されており、実際に行われるまでは予測できないことを保証します。 それは最後の瞬間だけでなく、最終的には普遍的に明らかであるということでもあります。 Algorand のアプローチは、原理的にも事実上もそうではないという意味で、非常に民主的です。 さまざまなクラスのユーザーを作成します (Bitcoin では「マイナー」と「一般ユーザー」)。 Algorand では「すべて 権限はすべてのユーザーの集合にあります。」 Algorand の注目すべき特性の 1 つは、そのトランザクション履歴が非常に小さいものだけでフォークされる可能性があることです。 確率(たとえば、1兆分の1、つまり10−18)。 Algorand は、いくつかの法的問題にも対処できます そして政治的な懸念。 Algorand アプローチは、blockchain に適用され、より一般的には、あらゆる生成方法に適用されます。 改ざん防止された一連のブロック。私たちは実際に、および に代わる新しい方法を提案しました。 blockchains よりも効率的です。これは独立した関心事かもしれません。 1.1 Bitcoin の仮定と技術的問題 Bitcoin は非常に独創的なシステムであり、その後の大量の研究に影響を与えました。それでも、それは も問題があります。その根底にある前提と技術的問題をまとめてみましょう。 実際には、Bitcoin のような、proof-of-work に基づく基本的にすべての暗号通貨によって共有されます。 この概要については、Bitcoin で、ユーザーは複数の公開鍵を所有できることを思い出していただくだけで十分です。 デジタル署名スキームの、お金は公開鍵に関連付けられている、そして支払いは ある公開鍵から別の公開鍵にいくらかの金額を転送するデジタル署名。本質的には、 Bitcoin は、処理されたすべての支払いを一連のブロック B1、B2、... に整理します。 。 .、それぞれは複数で構成されます B1 のすべての支払いが任意の順序で行われ、続いて B2 の支払いが任意の順序で行われるような支払い、 などは、一連の有効な支払いを構成します。各ブロックは平均して 10 分ごとに生成されます。 この一連のブロックはチェーンです。これは、あらゆる変更が確実に行われるように構造化されているためです。 単一のブロック内で後続のすべてのブロックに浸透するため、変更を発見しやすくなります。 支払い履歴。 (後で説明するように、これは各ブロックに暗号化を含めることによって実現されます。 このようなブロック構造は、blockchain と呼ばれます。 仮定: 計算能力の正直な過半数 Bitcoin は悪意がないことを前提としています エンティティ (または調整された悪意のあるエンティティの連合体) が、計算の大部分を制御します。 ブロック生成に専念する電力。実際、そのようなエンティティは blockchain を変更できます。支払い履歴を好き勝手に書き換えます。特に、支払い\(\wp\)を行うことができます。 支払われた給付金を受け取り、その後、\(\wp\)の痕跡をすべて「消去」します。 技術的問題 1: 計算上の無駄 Bitcoin の proof-of-work をブロックするアプローチ 生成には膨大な量の計算が必要です。現在、わずか数百人ですが、 システム内に数千の公開鍵があり、上位 500 の最も強力なスーパーコンピュータだけが集めることができます。 Bitcoin プレーヤーに必要な総計算能力のわずか 12.8% に過ぎません。これ 大幅に多くのユーザーがシステムに参加すると、計算量が大幅に増加します。 技術課題2:電力の集中 今日は、あまりにも量が多かったので、 計算が必要な場合、ユーザーは通常のデスクトップ (ましてやデスクトップ) を使用して新しいブロックを生成しようとします。 携帯電話)、損失が予想されます。実際、通常のコンピュータで新しいブロックを計算するには、 計算に必要な電力の予想コストが、予想される報酬を超えています。 特別に構築されたコンピューター (「新しいブロックをマイニングする」以外のことは何もしない) のプールのみを使用します。 新しいブロックを生成することで利益が期待できるかもしれません。したがって、今日では事実上、次の 2 つが存在します。 ユーザーの分離したクラス: 支払いのみを行う通常のユーザーと、特殊なマイニング プール 新しいブロックのみを検索します。 したがって、最近の時点で、ブロックの総計算能力が 世代はわずか 5 つのプール内にあります。このような状況では、大多数の 正直なところ、計算能力の信頼性は低くなります。 技術的問題 3: あいまいさ Bitcoin では、blockchain は必ずしも一意である必要はありません。確かに その最新部分はフォークすることがよくあります。blockchain は、たとえば、B1 である可能性があります。 。 。 、Bk、B' k+1、B' k+2、によると 1 人のユーザーと B1、. 。 。 、Bk、B'' k+1、B'' k+2、B'' 別のユーザーによれば、k+3。いくつかのブロックが完了した後でのみ、 チェーンに追加された場合、最初の k + 3 ブロックが同じであると合理的に確信できますか すべてのユーザーのために。したがって、最後のブロックに含まれる支払いにすぐに依存することはできません。 チェーン。ブロックが十分に深くなるかどうかを待って確認する方が賢明です。 blockchain であるため、十分に安定しています。 これとは別に、Bitcoin に関して法執行機関と金融政策に関する懸念も提起されています。1 1.2 Algorand、要約すると 設定 Algorand は非常に厳しい環境で動作します。簡単に言うと、 (a) 許可のない環境と許可された環境。 Algorand は、たとえ 完全に許可のない環境では、任意の数のユーザーが参加できます。 いかなる審査や許可も必要とせず、いつでもシステムを利用できます。もちろん、Algorand は機能します 許可された環境ではさらに優れています。 1Bitcoin の支払いによって提供される (擬似) 匿名性は、マネーロンダリングや資金調達に悪用される可能性があります。 犯罪者やテロ組織のこと。従来の紙幣や金の延べ棒は、原則として完璧な品質を提供します。 匿名性も同様の課題を引き起こすはずですが、これらの通貨の現物性により、お金の動きが大幅に遅くなります。 法執行機関によるある程度の監視を可能にするため。 「お金を印刷する」能力は、国民国家の非常に基本的な権限の 1 つです。したがって、原則として、大規模な 独立変動通貨の採用により、この力が抑制される可能性があります。ただし、現時点では Bitcoin は実現には程遠いです。 政府の金融政策に対する脅威ではありますが、その拡張性の問題により、決して脅威にならない可能性があります。(b) 非常に敵対的な環境。 Algorand は非常に強力な敵に耐えます。 (1) 必要なときに、必要なユーザーを即座に破損させます。 許可のない環境では、システム内のお金の 2/3 は正直なユーザーに属します。 (で 許可された環境では、お金に関係なく、ユーザーの 2/3 が正直であれば十分です。) (2) すべての破損したユーザーを完全に制御し、完全に調整します。そして (3) 各メッセージが誠実なユーザーによって送信された場合に限り、すべてのメッセージの配信をスケジュールします。 時間 \(\lambda\)m 以内に正直なユーザーの 95% に到達します。これは m のサイズのみに依存します。 主な特性 強力な敵の存在にもかかわらず、Algorand • 必要な計算量は最小限です。基本的に、ユーザーの数に関係なく、 システム内に存在する場合、1500 人のユーザーはそれぞれ、せいぜい数秒間実行する必要があります。 計算。 • 新しいブロックは 10 分以内に生成され、事実上、blockchain から離れることはありません。 例えば、予想では、第1の実施形態におけるブロックを生成する時間はより短い。 Λ + 12.4\(\lambda\) よりも優れています。ここで、Λ は、ピアツーピアのゴシップでブロックを伝播するのに必要な時間です。 選択するブロック サイズに関係なく、\(\lambda\) は 1,500 個の 200Blong メッセージを伝播する時間です。 (真の分散型システムでは、Λ は本質的に固有のレイテンシであるため、 Algorand ブロック生成の制限要因はネットワーク速度です。) 2 番目の実施形態には次のような特徴があります。 実際に実験的に (? によって) テストされており、ブロックが 40 秒未満で生成されることが示されています。 秒。 さらに、Algorand の blockchain は無視できる確率 (つまり、1 未満) でのみフォークする可能性があります。 1 兆単位)、したがってユーザーは、ブロックが完了するとすぐに、新しいブロックに含まれる支払いを中継することができます。 ブロックが表示されます。 • すべての権限はユーザー自身にあります。 Algorand は真の分散システムです。特に、 どのトランザクションを制御できる外部エンティティ (Bitcoin の「マイナー」など) は存在しません。 認識されています。 Algorand のテクニック。 1. 新しい高速ビザンチン協定プロトコル。 Algorand は次の方法で新しいブロックを生成します 新しい暗号化、メッセージ パッシング、バイナリ ビザンチン協定 (BA) プロトコル、BA⋆。プロトコル BA⋆は、いくつかの追加特性 (これについてはすぐに説明します) を満たすだけでなく、非常に高速です。 大まかに言えば、そのバイナリ入力バージョンは 3 ステップのループで構成されており、プレイヤー i が単一のメッセージを送信します。 他のプレイヤー全員にメッセージを送ります。完全な同期ネットワークで実行され、さらに多くの機能が追加されます。 プレイヤーの 2/3 が正直である場合、確率は 1/3 以上で、各ループの後、プロトコルは次のように終了します。 合意。 (プロトコル BA⋆ がビザンチン協定の元の定義を満たしていることを強調します) ピーズ、ショスタコ、ランポート [31] の、弱体化なし。) Algorand は、このバイナリ BA プロトコルを利用して、さまざまなコミュニケーションで合意に達します。 新しいブロックごとにモデルを作成します。合意されたブロックは、規定の数の認証を介して認証されます。 適切な検証者のデジタル署名が含まれ、ネットワークを通じて伝播されます。 2. 暗号の分類。非常に高速ですが、BA⋆プロトコルはさらに多くの利点をもたらします。 何百万ものユーザーがプレイした場合の速度。したがって、Algorand は BA⋆の選手を選出します。すべてのユーザーのセットのはるかに小さいサブセット。異種の権力集中を避けるために この問題では、新しいブロック Br はそれぞれ、BA⋆ の新たな実行を通じて構築され、合意されます。 選択された検証者の別のセット、SV r による。原則として、そのようなセットを選択するのは次のような困難になる可能性があります。 Br を直接選択します。私たちは、この潜在的な問題を、次のようなアプローチと呼んでいます。 Maurice Herlihy の洞察力に富んだ提案、暗号ソート。仕分けというのは、 資格のある大規模な集団から無作為に役人を選択する[6]。 (仕分け練習をしました 何世紀にもわたって、たとえばアテネ、フィレンツェ、ヴェネツィアの共和国によって。現代の司法では システムでは、陪審員を選ぶためにランダムな選択がよく使用されます。最近ではランダムサンプリングも行われています David Chaum [9] によって選挙について提唱されました。) 分散型システムでは、もちろん、 各検証者セットSV r のメンバーをランダムに選択するために必要なランダムコインには問題があります。 したがって、すべてのユーザーの母集団から各検証セットを選択するために暗号化に頼ります。 自動(つまり、メッセージ交換を必要としない)かつランダムであることが保証された方法で。 本質的には、暗号化関数を使用して、前のブロックから自動的に決定します。 Br-1、新しいブロック Br の提案を担当するユーザー、リーダー、および検証者セット SV r、 リーダーが提案したブロックについて合意に達するよう請求する。悪意のあるユーザーが影響を与える可能性があるため、 Br−1 の構成(たとえば、その支払いの一部を選択することによって)を特別に構築して使用します。 r 番目のブロックのリーダーと検証子セット SV r が確かに正しいことを証明するための追加入力 ランダムに選ばれます。 3. 数量 (シード) Qr.次の目的で、blockchain の最後のブロック Br−1 を使用します。 新しいブロックの構築を担当する次の検証者セットとリーダーを自動的に決定します Br.このアプローチの課題は、わずかに異なる支払いを選択するだけで、 前のラウンドでは、私たちの強力な敵対者が次のリーダーに対する驚異的なコントロールを獲得しました。たとえ彼が システム内のプレイヤー/資金の 1/1000 のみを管理しているだけで、彼はすべてのリーダーが確実に行動できるようにすることができました。 悪意のある。 (直感セクション 4.1 を参照してください。) この課題は、すべての proof-of-stake アプローチの中心です。 そして、私たちの知る限りでは、これまでのところ、この問題は十分に解決されていません。 この課題に対処するために、私たちは意図的に別の、慎重に構築し、継続的に更新しています。 定義された量 Qr は、おそらく予測できないだけでなく、影響を与えることもできません。 強力な敵。 Algorand が選択するのは Qr からであるため、Qr を r 番目のシードと呼ぶことがあります。 秘密の暗号ソートを介して、 r番目のブロック。 4. 秘密暗号による分類と秘密資格情報。検証者セットと担当リーダーを選択するために、現在の最後のブロック Br-1 をランダムかつ明確に使用します。 新しいブロック Br を構築するだけでは十分ではありません。 Br−1 は Br を生成する前に既知である必要があるため、 Br-1 に含まれる影響のない最後の量 Qr-1 も既知でなければなりません。したがって、 は検証者であり、ブロック Br の計算を担当するリーダーです。したがって、私たちの強力な敵は、 彼らがBrについて議論する前に、即座に彼ら全員を堕落させるかもしれない。 彼らが認証するブロックを完全に制御します。 この問題を防ぐために、リーダー (実際には検証者も) は自分たちの役割を密かに知りますが、 実際にその役割を担っているすべての人に証明できる適切な資格情報を計算します。いつ ユーザーは、自分が次のブロックのリーダーであることを内密に認識し、最初に密かに自分のブロックを組み立てます。 彼自身が新しいブロックを提案し、それを自分のブロックと一緒に(認証できるように)広めます。 資格情報。この方法では、敵対者は次のリーダーが誰であるかをすぐに認識します。 ブロックはあり、彼はすぐに彼を堕落させることができますが、敵対者にとっては遅すぎるでしょう。 新しいブロックの選択に影響します。確かに、彼はもうリーダーのメッセージを「コールバック」することはできません強力な政府がウィキリークスによってウイルス的に拡散されたメッセージを瓶に戻すよりも。 これから説明するように、リーダーの独自性を保証することはできませんし、誰がリーダーであるかを誰もが確信できるわけでもありません。 リーダー自身も含めてです!ただし、Algorand では、明確な進捗が保証されます。 5. 選手の交代可能性。新しいブロックを提案した後、リーダーは「死ぬ」(あるいは死ぬ)のも同然かもしれない。 敵対者によって破壊されました)、彼の仕事は終わったからです。しかし、SV r の検証者にとっては、状況はそれほど変わりません。 シンプル。確かに、十分な数の署名を持つ新しいブロック Br の認証を担当しており、 彼らはまずリーダーが提案したブロックに関してビザンチン協定を締結しなければならない。問題は、 どんなに効率的であっても、BA⋆には複数のステップと、プレイヤーの 2/3 以上の誠実さが必要です。 これは問題です。効率上の理由から、BA⋆ のプレーヤー セットは小さなセット SV r から構成されているからです。 すべてのユーザーのセットの中からランダムに選択されます。したがって、私たちの強力な敵は、たとえそれができないとしても、 全ユーザーの 1/3 が破損しているため、SV r のすべてのメンバーが破損している可能性があります。 幸いなことに、ピアツーピア方式でメッセージを伝播することによって実行されるプロトコル BA⋆ は、プレーヤーの置き換えが可能であることが証明されます。この新しい要件は、プロトコルが正しく、 各ステップがまったく新しいランダムな方法で実行された場合でも、効率的に合意に達します。 独立して選ばれたプレイヤーのセット。したがって、何百万ものユーザーがいる場合、それぞれの小さなプレイヤーのセットは BA のステップに関連付けられている⋆は、おそらく次のセットとの空の交差があります。 さらに、BA⋆の異なるステップのプレイヤーのセットは、おそらくまったく異なるものになるでしょう。 基数。さらに、各セットのメンバーは、次のセットのプレーヤーが誰になるかを知りません。 内部状態を密かに渡してはなりません。 ダイナミックで非常に強力なプレーヤーを倒すには、プレーヤーの交換可能特性が実際に非常に重要です 私たちが想定している敵。私たちは、プレーヤー交換プロトコルが多くの分野で重要になると信じています。 コンテキストとアプリケーション。特に、小さなサブプロトコルを安全に実行するために重要になります。 より大きなプレイヤーの世界に組み込まれたダイナミックな敵は、 全プレイヤーのほんの一部ですが、小規模なプレイヤー全員を堕落させるのは難しいことではありません。 サブプロトコル。 追加の特性/テクニック: 怠惰な正直さ 正直なユーザーは自分の規定に従います これには、オンラインになってプロトコルを実行することが含まれます。以来、Algorand にはささやかなものしかありません 計算と通信の要件、オンラインであり、「中で」プロトコルを実行している 「背景」は大きな犠牲ではありません。もちろん、誠実なプレイヤーの中にもいくつかの「不在」はあります。 接続が突然失われたり、再起動が必要になったりする場合は、自動的に許容されます (理由は、 このような少数のプレイヤーは一時的に悪意があると常に考えることができます)。ただし、次のことを指摘しておきます。 Algorand は、新しいモデルで動作するように簡単に適応できます。そのモデルでは、正直なユーザーが ほとんどの時間はオフラインです。当社の新モデルは次のように非公式に紹介されます。 怠惰な正直さ。大まかに言えば、ユーザー i は、(1) 決められたことをすべて守っている場合、怠け者だが正直であると言えます。 指示、プロトコールへの参加を求められたとき、および (2) 参加を求められたとき プロトコルに従うことはまれであり、適切な事前通知が必要です。 正直さについてこのように緩やかな概念があると、正直な人は誠実であるという確信がさらに高まるかもしれません。 必要なときにいつでもすぐに利用できるようにし、Algorand がそのような場合に保証します。 システムは、特定の時点で次のような場合でも安全に動作します。 参加プレイヤーの大半は悪意のあるプレイヤーです。1.3 密接に関連する作品 Proof-of-Work アプローチ (引用された [29] や [4] など) は、私たちのアプローチとはまったく直交しています。も同様です メッセージ パッシング ビザンチン協定または実用的なビザンチン フォールト トレランスに基づくアプローチ (引用された [8] のように)。実際、これらのプロトコルはすべてのユーザー間で実行できず、 私たちのモデルでは、適切な少数のユーザー セットに制限します。実際、私たちの強力な敵は、 実際に BA プロトコルを実行する責任を負う小規模なセットに関与するすべてのユーザーが即座に破損します。 私たちのアプローチは、ユーザーの「力」という意味で、プルーフ・オブ・ステーク [2] に関連していると考えることができます。 ブロックの構築は、システム内で所有するお金に比例します(「言う」のとは対照的に) 彼らが「エスクロー」に預けたお金)。 私たちの論文に最も近い論文は、Pass と Shi [30] の Sleepy Consensus Model です。を避けるために、 proof-of-work アプローチでは大量の計算が必要となるため、彼らの論文が依存しています (親切にも クレジット) Algorand の秘密の暗号ソート。この重要な側面が共通しているため、いくつかの 私たちの論文間には大きな違いがあります。特に、 (1) 設定は許可のみです。対照的に、Algorand もパーミッションレス システムです。 (2) 彼らはnakamoto スタイルのプロトコルを使用しているため、blockchain は頻繁にフォークします。とはいえ proof-of-work を省略し、彼らのプロトコルでは、秘密裏に選ばれたリーダーが、その期間を延長するよう求められています。 最長有効 (よりリッチな意味で) blockchain。したがって、フォークは避けられず、それが完了するまで待つ必要があります。 ブロックはチェーンの十分に「深い」ところにあります。 確かに、敵と協力して目的を達成するには 適応的な破損が発生する可能性があるため、ブロックの深さがポリ(N)である必要があります。ここで、Nは システム内のユーザーの総数。ブロックが生成されると仮定しても、次の点に注意してください。 1 分以内に、N = 100 万人のユーザーがいる場合、約 200 万年待たなければなりません。 ブロックが深さ N 2 になるまで、ブロックが深さ N になるまで約 2 年かかります。対照的に、 Algorand の blockchain は、敵対者が破損しているにもかかわらず、無視できる確率でのみフォークします ユーザーは即座に適応的に機能し、その新しいブロックはすぐに信頼できます。 (3) 個別のビザンチン協定は扱っていない。 ある意味、彼らは保証するだけです 「増大する一連の価値観に関する最終的な合意」。彼らのプロトコルは状態レプリケーションプロトコルです。 BA のものよりも重要であり、関心のある個別の値についてビザンチン合意に達するために使用することはできません。 対照的に、Algorand は、必要に応じて 1 回だけ使用して、何百万ものユーザーが迅速に 特定の関心のある値についてビザンチン合意に達する。 (4) 弱く同期されたクロックが必要です。つまり、すべてのユーザーの時計がわずかな時間だけずれています。 δ。対照的に、Algorand では、クロックは (本質的に) 同じ「速度」を持つだけで済みます。 (5) 彼らのプロトコルは、怠け者だが正直なユーザー、または大多数の正直なオンライン ユーザーに対して機能します。 彼らは、正直なユーザーが一斉にオフラインになるという問題を提起した Algorand を親切に称賛しています。 それに応じて怠惰な正直モデルを提唱します。彼らのプロトコルは怠惰な環境で機能するだけではありません 正直モデルだけでなく、敵対者がどのユーザーを選択するかという、敵対的眠気モデルでもあります。 オンライン ユーザーの大多数が常に正直であれば、どれがオンラインでどれがオフラインであるかが決まります。2 2 彼らの論文の元のバージョンでは、実際には、敵対的スリーピー モデルにおけるセキュリティのみが考慮されていました。 の 彼らのバージョンに先行する Algorand のオリジナル バージョンも、特定の過半数が オンライン プレーヤーは常に正直ですが、怠惰な正直モデルを支持して、考慮から明示的に除外されています。 (たとえば、ある時点で誠実なユーザーの半数がオフラインになることを選択した場合、大多数のユーザーは オンラインは悪意のあるものである可能性が非常に高いです。したがって、これが起こらないようにするために、敵対者は自分の攻撃のほとんどを強制する必要があります。 破損したプレイヤーもオフラインになりますが、これは明らかに彼自身の利益に反します。) 過半数を獲得したプロトコルに注目してください。 オンラインのユーザーの大多数が常に悪意を持っている場合、怠け者だが正直なプレイヤーが問題なく動作します。これはそうです、なぜなら 十分な数の正直なプレイヤーは、まれな時点で重要な存在になることを知っていて、選出するだろう。 そのような瞬間にオフラインになってはなりませんし、敵対者が誰を攻撃しているのかわからないため、敵対者によってオフラインに強制されることもできません。 正直なプレイヤーは重要かもしれない。(6) 単純な正直な多数決が必要である。対照的に、Algorand の現在のバージョンでは、 2/3の正直な過半数。 私たちに近いもう 1 つの論文は、Ouroboros: A Provively Secure Proof-of-Stake Blockchain Protocol です。 Kiayias、Russell、David、Oliynykov [20] 著。彼らのシステムも私たちのシステムの後に登場しました。それも 暗号ソートを使用して、証明可能な方法で作業証明を不要にします。しかし、彼らの このシステムもまた、ナカモト スタイルのプロトコルであり、フォークが避けられず、頻繁に発生します。 (ただし、彼らのモデルでは、ブロックはスリーピーコンセンサスモデルほど深くする必要はありません。) さらに、 彼らのシステムは次の仮定に依存しています。著者自身の言葉を借りれば、「(1) ネットワークは高度に同期性が高く、(2) 選択された関係者の大多数は必要に応じて利用可能です。 各エポックに参加する、(3) 利害関係者が長期間オフラインにならない、 (4) 破損の適応性は、ラウンド単位で線形に測定される小さな遅延の影響を受けます。 セキュリティパラメータ。」対照的に、Algorand は、圧倒的な確率でフォークがなく、 これら 4 つの仮定のいずれにも依存しません。特に、Algorand では、敵対者は次のことが可能です。 彼が制御したいユーザーを瞬時に破壊します。

Introdução

O dinheiro está se tornando cada vez mais virtual. Estima-se que cerca de 80% dos Estados Unidos dólares hoje existem apenas como entradas contábeis [5]. Outros instrumentos financeiros estão a seguir o exemplo. Num mundo ideal, em que pudéssemos contar com uma entidade central de confiança universal, imunes a todos os ataques cibernéticos possíveis, o dinheiro e outras transações financeiras poderiam ser exclusivamente eletrónicas. Infelizmente, não vivemos num mundo assim. Conseqüentemente, criptomoedas descentralizadas, como como Bitcoin [29], e sistemas “smart contract”, como Ethereum, foram propostos [4]. Em o coração desses sistemas é um livro-razão compartilhado que registra de forma confiável uma sequência de transações, ∗Esta é a versão mais formal (e assíncrona) do artigo ArXiv do segundo autor [24], um artigo em si baseado no de Gorbunov e Micali [18]. As tecnologias de Algorand são objeto do seguinte pedidos de patente: US62/117.138 US62/120.916 US62/142.318 US62/218.817 US62/314.601 PCT/US2016/018300 US62/326.865 62/331.654 US62/333.340 US62/343.369 US62/344.667 US62/346.775 US62/351.011 US62/653.482 US62/352.195 US62/363.970 US62/369.447 US62/378.753 US62/383.299 US62/394.091 US62/400.361 US62/403.403 US62/410.721 US62/416.959 US62/422.883 US62/455.444 US62/458.746 US62/459.652 US62/460.928 US62/465.931tão variados quanto pagamentos e contratos, de forma inviolável. A tecnologia escolhida para garantir tal inviolabilidade é o blockchain. Blockchains estão por trás de aplicativos como criptomoedas [29], aplicações financeiras [4] e Internet das Coisas [3]. Várias técnicas para gerenciar livros contábeis baseados em blockchain foram propostos: prova de trabalho [29], prova de aposta [2], tolerância prática a falhas bizantinas [8], ou alguma combinação. Atualmente, no entanto, os livros contábeis podem ser ineficientes de gerenciar. Por exemplo, Bitcoin de proof-of-work abordagem (baseada no conceito original de [14]) requer uma grande quantidade de computação, é um desperdício e escala mal [1]. Além disso, concentra de facto o poder em muito poucas mãos. Desejamos, portanto, propor um novo método para implementar um livro público que ofereça a conveniência e eficiência de um sistema centralizado administrado por uma autoridade confiável e inviolável, sem as ineficiências e fraquezas das atuais implementações descentralizadas. Chamamos nossa abordagem Algorand, porque usamos aleatoriedade algorítmica para selecionar, com base no livro-razão construído até agora, um conjunto de verificadores encarregados de construir o próximo bloco de transações válidas. Naturalmente, garantimos que tais seleções sejam comprovadamente imunes a manipulações e imprevisíveis até no último minuto, mas também que, em última análise, sejam universalmente claros. A abordagem de Algorand é bastante democrática, no sentido de que nem em princípio nem de facto cria diferentes classes de usuários (como “mineradores” e “usuários comuns” em Bitcoin). Em Algorand “todos o poder reside no conjunto de todos os usuários”. Uma propriedade notável de Algorand é que seu histórico de transações pode bifurcar-se apenas com valores muito pequenos probabilidade (por exemplo, um em um trilhão, isto é, ou mesmo 10-18). Algorand também pode abordar algumas questões legais e preocupações políticas. A abordagem Algorand aplica-se a blockchains e, mais geralmente, a qualquer método de geração uma sequência de blocos inviolável. Na verdade, propusemos um novo método - alternativo e mais eficiente do que blockchains— que pode ser de interesse independente. 1.1 Suposição e problemas técnicos de Bitcoin Bitcoin é um sistema muito engenhoso e inspirou muitas pesquisas subsequentes. Ainda assim, também é problemático. Vamos resumir a sua suposição subjacente e os problemas técnicos - que na verdade, são compartilhados por essencialmente todas as criptomoedas que, como Bitcoin, são baseadas em proof-of-work. Para este resumo, basta lembrar que, em Bitcoin, um usuário pode possuir múltiplas chaves públicas de um esquema de assinatura digital, que o dinheiro está associado a chaves públicas e que um pagamento é um assinatura digital que transfere alguma quantia de dinheiro de uma chave pública para outra. Essencialmente, Bitcoin organiza todos os pagamentos processados em uma cadeia de blocos, B1, B2, . . ., cada um consistindo de múltiplos pagamentos, de modo que todos os pagamentos de B1, efetuados em qualquer ordem, seguidos pelos de B2, em qualquer ordem, etc., constituem uma sequência de pagamentos válidos. Cada bloco é gerado, em média, a cada 10 minutos. Esta sequência de blocos é uma cadeia, pois está estruturada de forma a garantir que qualquer alteração, mesmo em um único bloco, se infiltra em todos os blocos subsequentes, facilitando a detecção de qualquer alteração de o histórico de pagamentos. (Como veremos, isto é conseguido incluindo em cada bloco um código criptográfico hash do anterior.) Essa estrutura de bloco é referida como blockchain. Suposição: Maioria Honesta do Poder Computacional Bitcoin assume que nenhum mal-intencionado entidade (nem uma coalizão de entidades maliciosas coordenadas) controla a maioria dos recursos computacionais poder dedicado à geração de blocos. Tal entidade, de fato, seria capaz de modificar o blockchain,e assim reescrever o histórico de pagamentos, como desejar. Em particular, poderia fazer um pagamento \(\wp\), obter os benefícios pagos e então “apagar” qualquer vestígio de \(\wp\). Problema Técnico 1: Resíduos Computacionais Abordagem de Bitcoin proof-of-work para bloquear a geração requer uma quantidade extraordinária de computação. Atualmente, com apenas algumas centenas milhares de chaves públicas no sistema, os 500 supercomputadores mais poderosos só conseguem reunir apenas 12,8% do poder computacional total exigido dos jogadores Bitcoin. Isto a quantidade de computação aumentaria muito, caso um número significativamente maior de usuários ingressasse no sistema. Problema Técnico 2: Concentração de Poder Hoje, devido à quantidade exorbitante de cálculo necessário, um usuário, tentando gerar um novo bloco usando um desktop comum (sem falar em um celular), espera perder dinheiro. Na verdade, para calcular um novo bloco com um computador comum, o custo esperado da eletricidade necessária para alimentar o cálculo excede a recompensa esperada. Somente usando pools de computadores especialmente construídos (que não fazem nada além de “minerar novos blocos”), pode-se pode esperar obter lucro gerando novos blocos. Assim, hoje existem, de facto, dois classes distintas de usuários: usuários comuns, que apenas fazem pagamentos, e pools de mineração especializados, que apenas procuram novos blocos. Portanto, não deveria ser surpresa que, recentemente, o poder computacional total para blocos geração está dentro de apenas cinco grupos. Nessas condições, a suposição de que a maioria dos o poder computacional é honesto torna-se menos credível. Problema Técnico 3: Ambiguidade Em Bitcoin, blockchain não é necessariamente único. Na verdade sua última parte frequentemente se bifurca: o blockchain pode ser —digamos— B1, . . . , Bk, B' k+1, B′ k+2, de acordo com um usuário e B1, . . . , Bk, B'' k+1, B'' k+2, B'' k+3 de acordo com outro usuário. Somente depois de vários blocos terem sido adicionado à cadeia, podemos ter certeza razoável de que os primeiros k + 3 blocos serão os mesmos para todos os usuários. Assim, não se pode confiar desde já nos pagamentos contidos no último bloco de a corrente. É mais prudente esperar e ver se o bloco se torna suficientemente profundo no blockchain e, portanto, suficientemente estável. Separadamente, também foram levantadas preocupações de aplicação da lei e de política monetária sobre Bitcoin.1 1.2 Algorand, em poucas palavras Configuração Algorand funciona em ambientes muito difíceis. Resumidamente, (a) Ambientes sem permissão e com permissão. Algorand funciona de forma eficiente e segura, mesmo em um ambiente totalmente sem permissão, onde muitos usuários podem ingressar arbitrariamente no sistema a qualquer momento, sem qualquer verificação ou permissão de qualquer tipo. Claro, Algorand funciona ainda melhor em um ambiente permitido. 1O (pseudo) anonimato oferecido pelos pagamentos Bitcoin pode ser utilizado indevidamente para lavagem de dinheiro e/ou financiamento de indivíduos criminosos ou organizações terroristas. Notas tradicionais ou barras de ouro, que em princípio oferecem perfeita anonimato, deveriam representar o mesmo desafio, mas a fisicalidade destas moedas desacelera substancialmente o fluxo de dinheiro transferências, de modo a permitir algum grau de monitorização por parte das agências de aplicação da lei. A capacidade de “imprimir dinheiro” é um dos poderes básicos de um Estado-nação. Em princípio, portanto, a enorme a adopção de uma moeda flutuante independente pode restringir este poder. Atualmente, porém, Bitcoin está longe de ser uma ameaça às políticas monetárias governamentais e, devido aos seus problemas de escalabilidade, poderá nunca o ser.(b) Ambientes muito adversários. Algorand resiste a um Adversário muito poderoso, que pode (1) corromper instantaneamente qualquer usuário que desejar, a qualquer momento que desejar, desde que, de forma ambiente sem permissão, 2/3 do dinheiro do sistema pertence ao usuário honesto. (Em um ambiente permitido, independentemente do dinheiro, basta que 2/3 dos usuários sejam honestos.) (2) controlar totalmente e coordenar perfeitamente todos os usuários corrompidos; e (3) programar a entrega de todas as mensagens, desde que cada mensagem seja enviada por um usuário honesto atinge 95% dos usuários honestos dentro de um tempo \(\lambda\)m, que depende apenas do tamanho de m. Propriedades Principais Apesar da presença do nosso poderoso adversário, em Algorand • A quantidade de cálculo necessária é mínima. Essencialmente, não importa quantos usuários estejam presente no sistema, cada um dos mil e quinhentos usuários deve realizar no máximo alguns segundos de computação. • Um novo bloco é gerado em menos de 10 minutos e, de fato, nunca sairá do blockchain. Por exemplo, na expectativa, o tempo para gerar um bloco na primeira modalidade é menor do que Λ + 12,4\(\lambda\), onde Λ é o tempo necessário para propagar um bloco, em uma fofoca ponto a ponto moda, não importa o tamanho do bloco escolhido, e \(\lambda\) é o tempo para propagar 1.500 mensagens de 200Blong. (Uma vez que num sistema verdadeiramente descentralizado, Λ é essencialmente uma latência intrínseca, em Algorand o fator limitante na geração de blocos é a velocidade da rede.) A segunda modalidade tem na verdade foi testado experimentalmente ( por ?), indicando que um bloco é gerado em menos de 40 segundos. Além disso, blockchain de Algorand pode bifurcar apenas com probabilidade insignificante (ou seja, menos de um em um trilhão), e assim os usuários podem contar com os pagamentos contidos em um novo bloco assim que o bloco aparece. • Todo o poder reside nos próprios usuários. Algorand é um sistema verdadeiramente distribuído. Em particular, não existem entidades exógenas (como os “mineradores” em Bitcoin), que podem controlar quais transações são reconhecidos. Técnicas de Algorand. 1. Um novo e rápido protocolo de acordo bizantino. Algorand gera um novo bloco via um novo protocolo de acordo bizantino (BA) binário, criptográfico e de passagem de mensagens, BA⋆. Protocolo BA⋆não apenas satisfaz algumas propriedades adicionais (que discutiremos em breve), mas também é muito rápido. Grosso modo, sua versão de entrada binária consiste em um loop de 3 etapas, no qual um jogador i envia um único mensagem mi para todos os outros jogadores. Executado em rede completa e síncrona, com mais mais de 2/3 dos jogadores sendo honestos, com probabilidade > 1/3, após cada loop o protocolo termina em acordo. (Enfatizamos que o protocolo BA⋆ satisfaz a definição original do acordo bizantino de Pease, Shostak e Lamport [31], sem quaisquer enfraquecimentos.) Algorand aproveita este protocolo BA binário para chegar a um acordo, em nossas diferentes comunicações modelo, em cada novo bloco. O bloco acordado é então certificado, através de um número prescrito de assinatura digital dos verificadores apropriados e propagada pela rede. 2. Classificação criptográfica. Embora muito rápido, o protocolo BA⋆ se beneficiaria com mais velocidade quando jogado por milhões de usuários. Assim, Algorand escolhe os jogadores da BA⋆para seremum subconjunto muito menor do conjunto de todos os usuários. Para evitar um tipo diferente de concentração de poder problema, cada novo bloco Br será construído e acordado, através de uma nova execução de BA⋆, por um conjunto separado de verificadores selecionados, SV r. Em princípio, selecionar tal conjunto pode ser tão difícil quanto selecionando Br diretamente. Atravessamos este problema potencial através de uma abordagem que denominamos, abrangendo a sugestão perspicaz de Maurice Herlihy, classificação criptográfica. Sortição é a prática de selecionar funcionários aleatoriamente de um grande conjunto de indivíduos elegíveis [6]. (A classificação foi praticada ao longo dos séculos: por exemplo, pelas repúblicas de Atenas, Florença e Veneza. No sistema judicial moderno sistemas, a seleção aleatória é frequentemente usada para escolher os júris. A amostragem aleatória também foi recentemente defendido para as eleições por David Chaum [9].) Num sistema descentralizado, é claro, escolher o moedas aleatórias necessárias para selecionar aleatoriamente os membros de cada conjunto de verificadores SV r é problemático. Recorremos assim à criptografia para selecionar cada conjunto de verificadores, da população de todos os usuários, de uma forma garantidamente automática (ou seja, sem necessidade de troca de mensagens) e aleatória. Em essência, usamos uma função criptográfica para determinar automaticamente, a partir do bloco anterior Br−1, um usuário, o líder, encarregado de propor o novo bloco Br, e o conjunto verificador SV r, em cobrar para chegar a um acordo sobre o bloco proposto pelo líder. Como usuários mal-intencionados podem afetar composição de Br−1 (por exemplo, escolhendo alguns de seus pagamentos), construímos e usamos especialmente entradas adicionais para provar que o líder do r-ésimo bloco e o conjunto verificador SV r são de fato escolhido aleatoriamente. 3. A Quantidade (Semente) Qr. Usamos o último bloco Br−1 em blockchain para determinar automaticamente o próximo conjunto de verificadores e líder responsável pela construção do novo bloco Ir. O desafio desta abordagem é que, ao escolher apenas um pagamento ligeiramente diferente no rodada anterior, nosso poderoso Adversário ganha um tremendo controle sobre o próximo líder. Mesmo que ele controlava apenas 1/1000 dos jogadores/dinheiro no sistema, ele poderia garantir que todos os líderes fossem malicioso. (Veja a Seção Intuição 4.1.) Este desafio é central para todas as abordagens proof-of-stake, e, tanto quanto sabemos, não foi, até agora, resolvido de forma satisfatória. Para enfrentar esse desafio, construímos propositalmente e atualizamos continuamente um relatório separado e cuidadosamente quantidade definida, Qr, que provavelmente é, não apenas imprevisível, mas também não influenciável, pelos nossos adversário poderoso. Podemos nos referir a Qr como a r-ésima semente, pois é de Qr que Algorand seleciona, através de triagem criptográfica secreta, todos os usuários que desempenharão um papel especial na geração do quarto bloco. 4. Classificação criptográfica secreta e credenciais secretas. Usando de forma aleatória e inequívoca o último bloco atual, Br−1, para escolher o conjunto de verificadores e o líder responsável da construção do novo bloco, Br, não é suficiente. Como Br−1 deve ser conhecido antes de gerar Br, a última quantidade não-influenciável Qr−1 contida em Br−1 também deve ser conhecida. Assim, então são os verificadores e o líder encarregados de calcular o bloco Br. Assim, nosso poderoso Adversário pode corromper imediatamente todos eles, antes que se envolvam em qualquer discussão sobre Br, de modo a obter controle total sobre o bloco que certificam. Para evitar este problema, os líderes (e também os verificadores) aprendem secretamente sobre o seu papel, mas podem computar uma credencial adequada, capaz de provar a todos que de fato desempenham esse papel. Quando um usuário percebe secretamente que ele é o líder do próximo bloco, primeiro ele monta secretamente seu próprio novo bloco proposto e, em seguida, divulga-o (para que possa ser certificado) juntamente com o seu próprio credencial. Desta forma, embora o Adversário perceba imediatamente quem é o líder do próximo bloco é, e embora ele possa corrompê-lo imediatamente, será tarde demais para o Adversário influenciar a escolha de um novo bloco. Na verdade, ele não pode mais “revogar” a mensagem do líderdo que um governo poderoso pode colocar de volta na garrafa uma mensagem espalhada de forma viral pelo WikiLeaks. Como veremos, não podemos garantir a singularidade do líder, nem que todos tenham certeza de quem é o líder. é, incluindo o próprio líder! Mas, em Algorand, um progresso inequívoco será garantido. 5. Substituibilidade do Jogador. Depois de propor um novo bloco, o líder pode muito bem “morrer” (ou ser corrompido pelo Adversário), porque seu trabalho está cumprido. Mas, para os verificadores em SV r, as coisas são menos simples. Com efeito, estando encarregado de certificar o novo bloco Br com um número suficiente de assinaturas, eles devem primeiro conseguir um acordo bizantino sobre o bloco proposto pelo líder. O problema é que, não importa quão eficiente seja, BA⋆requer múltiplas etapas e a honestidade de > 2/3 de seus jogadores. Isto é um problema porque, por razões de eficiência, o conjunto de jogadores de BA⋆consiste no pequeno conjunto SV r selecionado aleatoriamente entre o conjunto de todos os usuários. Assim, o nosso poderoso Adversário, embora incapaz de corromper 1/3 de todos os usuários, certamente pode corromper todos os membros do SV r! Felizmente provaremos que o protocolo BA⋆, executado pela propagação de mensagens ponto a ponto, é substituível pelo jogador. Este novo requisito significa que o protocolo corretamente e atinge consenso de forma eficiente, mesmo que cada uma de suas etapas seja executada por um método totalmente novo e aleatório. e conjunto de jogadores selecionados independentemente. Assim, com milhões de usuários, cada pequeno conjunto de jogadores associado a um passo de BA⋆provavelmente possui interseção vazia com o próximo conjunto. Além disso, os conjuntos de jogadores de diferentes etapas do BA⋆provavelmente terão cardinalidades. Além disso, os membros de cada conjunto não sabem quem será o próximo conjunto de jogadores. ser, e não passar secretamente por nenhum estado interno. A propriedade do jogador substituível é realmente crucial para derrotar o dinâmico e muito poderoso Adversário que imaginamos. Acreditamos que os protocolos de jogadores substituíveis serão cruciais em muitos contextos e aplicações. Em particular, eles serão cruciais para executar pequenos subprotocolos com segurança inserido em um universo maior de jogadores com um adversário dinâmico, que, sendo capaz de corromper até mesmo uma pequena fração do total de jogadores, não tem dificuldade em corromper todos os jogadores no menor subprotocolo. Uma propriedade/técnica adicional: honestidade preguiçosa Um usuário honesto segue o que lhe foi prescrito instruções, que incluem estar online e executar o protocolo. Desde então, Algorand tem apenas modesto exigência de computação e comunicação, estar online e rodando o protocolo “no histórico” não é um grande sacrifício. Claro, algumas “ausências” entre jogadores honestos, como aqueles devido à perda repentina de conectividade ou à necessidade de reinicialização, são automaticamente tolerados (porque sempre podemos considerar esses poucos jogadores como temporariamente maliciosos). Destaquemos, porém, que Algorand pode ser simplesmente adaptado para funcionar em um novo modelo, no qual usuários honestos sejam off-line na maior parte do tempo. Nosso novo modelo pode ser apresentado informalmente da seguinte maneira. Honestidade preguiçosa. Grosso modo, um usuário i é preguiçoso, mas honesto se (1) seguir todas as instruções prescritas. instruções, quando ele for solicitado a participar do protocolo, e (2) ele for solicitado a participar ao protocolo apenas raramente e com um aviso prévio adequado. Com uma noção tão relaxada de honestidade, podemos estar ainda mais confiantes de que as pessoas honestas serão à mão quando precisarmos deles, e Algorand garantimos que, quando for o caso, O sistema funciona de forma segura mesmo que, num determinado momento, a maioria dos jogadores participantes são maliciosos.1.3 Trabalho intimamente relacionado As abordagens de prova de trabalho (como as citadas [29] e [4]) são bastante ortogonais às nossas. Assim são os abordagens baseadas no acordo bizantino de passagem de mensagens ou na tolerância prática a falhas bizantinas (como o citado [8]). Na verdade, estes protocolos não podem ser executados entre o conjunto de todos os utilizadores e não podem, em nosso modelo, fique restrito a um conjunto adequadamente pequeno de usuários. Na verdade, nosso poderoso adversário, meu corromper imediatamente todos os usuários envolvidos em um pequeno conjunto encarregado de realmente executar um protocolo BA. Nossa abordagem poderia ser considerada relacionada à prova de aposta [2], no sentido de que o “poder” dos usuários na construção de blocos é proporcional ao dinheiro que possuem no sistema (em oposição a —digamos— para o dinheiro que colocaram em “escrow”). O artigo mais próximo do nosso é o Sleepy Consensus Model of Pass e Shi [30]. Para evitar o computação pesada necessária na abordagem proof-of-work, seu artigo se baseia (e gentilmente créditos) Classificação criptográfica secreta de Algorand. Com este aspecto crucial em comum, vários existem diferenças significativas entre nossos artigos. Em particular, (1) Sua configuração é apenas permitida. Por outro lado, Algorand também é um sistema sem permissão. (2) Eles usam um protocolo estilo Nakamoto e, portanto, seus blockchain se bifurcam com frequência. Embora dispensando proof-of-work, em seu protocolo um líder selecionado secretamente é solicitado a alongar o válido mais longo (em um sentido mais rico) blockchain. Assim, os garfos são inevitáveis e é preciso esperar que o bloco está suficientemente “profundo” na cadeia. Na verdade, para atingir seus objetivos com um adversário capazes de corrupções adaptativas, eles exigem que um bloco seja poli(N) profundo, onde N representa o número total de usuários no sistema. Observe que, mesmo assumindo que um bloco poderia ser produzido em um minuto, se houvesse N = 1 milhão de usuários, seria necessário esperar cerca de 2 milhões de anos para um bloco para se tornar N 2 de profundidade, e por cerca de 2 anos para um bloco se tornar N-profundo. Em contraste, O blockchain de Algorand bifurca-se apenas com probabilidade insignificante, mesmo que o Adversário corrompa usuários imediatamente e de forma adaptativa, e seus novos blocos podem ser imediatamente confiáveis. (3) Eles não tratam de acordos bizantinos individuais. De certa forma, eles apenas garantem “eventual consenso sobre uma sequência crescente de valores”. O protocolo deles é de replicação de estado, em vez do que um BA, e não pode ser usado para chegar a um acordo bizantino sobre um valor individual de juros. Por outro lado, Algorand também pode ser usado apenas uma vez, se desejado, para permitir que milhões de usuários acessem rapidamente chegar a um acordo bizantino sobre um valor específico de juros. (4) Eles exigem relógios fracamente sincronizados. Ou seja, todos os relógios dos usuários são adiantados por um pequeno intervalo de tempo δ. Por outro lado, em Algorand, os relógios precisam apenas ter (essencialmente) a mesma “velocidade”. (5) Seu protocolo funciona com usuários preguiçosos, mas honestos, ou com a maioria honesta dos usuários online. Eles gentilmente creditam Algorand por levantar a questão de usuários honestos ficarem off-line em massa e por apresentando o modelo de honestidade preguiçosa em resposta. O protocolo deles não funciona apenas nos preguiçosos modelo de honestidade, mas também em seu modelo adversário sonolento, onde um adversário escolhe quais usuários estão on-line e quais estão off-line, desde que, em todos os momentos, a maioria dos usuários on-line seja honesta.2 2A versão original do seu artigo, na verdade, considerava apenas a segurança no seu modelo adversário sonolento. O versão original de Algorand, que precede a deles, também explicitamente prevista assumindo que uma determinada maioria do os jogadores online são sempre honestos, mas excluíram-no explicitamente de consideração, em favor do modelo de honestidade preguiçosa. (Por exemplo, se em algum momento metade dos usuários honestos optar por ficar off-line, então a maioria dos usuários on-line pode muito bem ser malicioso. Assim, para evitar que isso aconteça, o Adversário deveria forçar a maior parte de seus jogadores corrompidos também fiquem off-line, o que claramente vai contra o seu próprio interesse.) Observe que um protocolo com maioria de jogadores preguiçosos, mas honestos, funciona muito bem se a maioria dos usuários on-line for sempre mal-intencionada. Isto é assim, porque um número suficiente de jogadores honestos, sabendo que serão cruciais em algum momento raro, elegerá não ficar off-line nesses momentos, nem podem ser forçados a ficar off-line pelo Adversário, já que ele não sabe quem é o jogadores honestos e cruciais podem ser.(6) Eles exigem uma maioria simples e honesta. Por outro lado, a versão atual de Algorand requer uma maioria honesta de 2/3. Outro artigo próximo de nós é Ouroboros: um protocolo Blockchain de prova de participação comprovadamente seguro, por Kiayias, Russell, David e Oliynykov [20]. Além disso, o sistema deles apareceu depois do nosso. Também usa classificação criptográfica para dispensar prova de trabalho de maneira comprovável. No entanto, seus O sistema é, novamente, um protocolo do estilo Nakamoto, no qual as bifurcações são inevitáveis e frequentes. (No entanto, em seu modelo, os bloqueios não precisam ser tão profundos quanto o modelo de consenso sonolento.) Além disso, seu sistema baseia-se nas seguintes suposições: nas palavras dos próprios autores, “(1) o a rede é altamente síncrona, (2) a maioria das partes interessadas selecionadas está disponível conforme necessário para participar em cada época, (3) as partes interessadas não permanecem off-line por longos períodos de tempo, (4) a adaptabilidade das corrupções está sujeita a um pequeno atraso que é medido em rodadas lineares em o parâmetro de segurança.” Por outro lado, Algorand é, com grande probabilidade, livre de bifurcação e não se baseia em nenhuma dessas quatro suposições. Em particular, em Algorand, o Adversário é capaz de corromper instantaneamente os usuários que ele deseja controlar.

準備事項

2.1 暗号化プリミティブ 理想的なハッシュ。 効率的に計算可能な暗号関数 hash を使用します。 任意の長さの文字列を固定長のバイナリ文字列にマッピングします。長い伝統を受け継ぎ、私たちはモデルを作ります。 H はランダムな oracle であり、基本的には考えられる各文字列 s をランダムにマッピングする関数です。 選択した長さの独立して選択された (そして固定された) バイナリ文字列 H(s)。 この論文では、H の出力は 256 ビット長です。確かに、そのような長さは、 システムの効率性と、システムを安全にするのに十分な長さ。たとえば、H に衝突耐性を持たせたいとします。つまり、H(x) = H(y) となる 2 つの異なる文字列 x と y を見つけるのは難しいはずです。 H が 256 ビット長の出力を持つランダムな oracle である場合、そのような文字列のペアを見つけることは実際に 難しい。 (誕生日のパラドックスに頼ってランダムに試すと、2256/2 = 2128 が必要になります。 試練。) デジタル署名。 デジタル署名により、ユーザーは相互に情報を認証できます。 秘密鍵を一切共有せずに。 デジタル署名スキームは 3 つの高速な構成で構成されます。 アルゴリズム: 確率的鍵生成 G、署名アルゴリズム S、および検証アルゴリズム V。 十分に大きな整数であるセキュリティ パラメータ k が与えられると、ユーザー i は G を使用して次のペアを生成します。 k ビット鍵 (つまり、文字列): 「公開」鍵 pki と、対応する「秘密」署名鍵 Ski です。重要なのは、 公開鍵は、対応する秘密鍵を「裏切る」ことはありません。つまり、pki の知識があったとしても、いいえ 私以外の 1 人は、天文学的な時間未満でスキーを計算できます。 ユーザー i は、ski を使用してメッセージにデジタル署名します。考えられる各メッセージ (バイナリ文字列) m、i について、最初に hashes m を実行し、入力 H(m) と Ski に対してアルゴリズム S を実行して、k ビット文字列を生成します。 sigpki(m) \(\triangleq\) S(H(m)、スキー板) .3 3 H は衝突耐性があるため、1 つに署名することによって別の署名に「誤って署名」することは事実上不可能です。 メッセージm'。バイナリ文字列 sigpki(m) は、m (pki を基準とした) の i のデジタル署名と呼ばれ、次のようになります。 公開鍵 pki がコンテキストから明らかな場合は、より簡単に sigi(m) で表されます。 pki を知っている人は誰でも、i によって生成されたデジタル署名を検証するためにそれを使用できます。具体的には、 入力 (a) プレーヤー i の公開鍵 pki、(b) メッセージ m、および (c) 文字列 s、つまり i の主張 メッセージ m のデジタル署名に対して、検証アルゴリズム V は YES または NO を出力します。 デジタル署名スキームに必要なプロパティは次のとおりです。 1. 正当な署名は常に検証されます。s = sigi(m) の場合、V (pki, m, s) = Y ES;そして 2. デジタル署名は偽造が困難です。スキーの知識がなければ、そのような文字列を見つけるのに時間がかかります。 i によって署名されていないメッセージ m の場合、V (pki, m, s) = Y ES は天文学的な長さになります。 (Goldwasser、Micali、Rivest [17] の強力なセキュリティ要件に従って、これは当てはまります たとえ他のメッセージの署名を取得できたとしても。) したがって、他の人が自分に代わってメッセージに署名することを防ぐために、プレーヤー i は自分のメッセージを保持しなければなりません。 署名キー スキー シークレット (そのため「秘密キー」という用語)、および誰でもメッセージを検証できるようにするため 彼は署名していますが、私は彼の鍵 pki (そのため「公開鍵」という用語が使われています) を公開することに興味があります。 一般に、メッセージ m は、その署名 sigi(m) からは取得できません。実質的に取引するために 概念的に便利な「検索可能性」特性を満たすデジタル署名を使用します(つまり、 署名者とメッセージが署名から簡単に計算できることを保証します。 SIGpki(m) = (i, m, sigpki(m)) そして SIGi(m) = (i, m, sigi(m)) (pki がクリアの場合)。 ユニークなデジタル署名。 また、次を満たすデジタル署名スキーム (G、S、V ) も考慮します。 次の追加プロパティ。 3. 独自性。次のような文字列 pk'、m、s、s' を見つけるのは困難です。 s̸= s′ そして V (pk', m, s) = V (pk', m, s') = 1。 (一意性プロパティは、正当に生成されていない文字列 pk' にも当てはまります。 公開鍵。 ただし、特に、一意性のプロパティは、次のことを意味します。 公開鍵 pk と一致する秘密鍵 sk を計算するために鍵生成器 G を指定し、 したがって、SK は、2 つの異なるデジタルを見つけることも本質的に不可能であることを知っていました。 pk に関連する同じメッセージの署名。) 備考 • 固有の署名から検証可能なランダム関数まで。 デジタルと比較して 一意性プロパティを持つ署名スキーム、マッピング m \(\to\) H(sigi(m)) に関連付けられます。 考えられる各文字列 m、ランダムに選択された一意の 256 ビット文字列、およびこの正確性 マッピングは、署名 sigi(m) が与えられると証明できます。 つまり、本質的に一意性プロパティを満たす理想的な hashing およびデジタル署名スキームです。 導入されたように、検証可能なランダム関数の基本的な実装を提供します。 ミカリ、ラビン、ヴァダン [27]。 (元の実装は必然的により複雑でしたが、 なぜなら、彼らは理想的なhashingに依存していなかったからです。)• デジタル署名に対する 3 つの異なるニーズ。 Algorand では、ユーザーはデジタルに依存しています の署名 (1) i 自身の支払いを認証する。このアプリケーションでは、キーは「長期」(つまり、 長期間にわたって多くのメッセージに署名する)、通常の署名スキームから来ています。 (2) i がラウンド r のいくつかのステップで行動する資格があることを証明する資格情報を生成する。ここで、 キーは長期にわたる可能性がありますが、一意性プロパティを満たすスキームから取得する必要があります。 (3) i が行動する各ステップで送信するメッセージを認証する。 ここで、キーは 一時的 (つまり、最初の使用後に破棄される) ですが、通常の署名スキームに由来する可能性があります。 • 低コストの簡素化。簡単にするために、各ユーザー i が単一の長期キーを持つことを想定しています。したがって、そのようなキーは、一意性を持つ署名スキームから取得されなければなりません。 財産。このような単純さにより、計算コストは​​小さくなります。通常、実際、ユニークなデジタル 署名は、通常の署名よりも作成および検証に若干のコストがかかります。 2.2 理想的な公開台帳 Algorand は、理想的な公開台帳に基づいて、次の支払いシステムを模倣しようとしています。 1. 初期ステータス。お金は個々の公開鍵 (非公開で生成され、 ユーザーが所有します)。 pk1、. 。 。 、pkjが初期公開鍵であり、a1、. 。 。 、aj それぞれの 初期金額単位の場合、初期ステータスは次のようになります。 S0 = (pk1, a1), . 。 。 、 (pkj、aj) 、 それはシステム内の常識であると考えられています。 2. 支払い。 pk を現在 \(\geq\)0 の通貨単位を持つ公開鍵とし、pk' を別の公開鍵とします。 key、および a' は a 以下の非負の数です。したがって、(有効な) 支払い \(\wp\) はデジタルです。 pk を基準として、pk から pk' への a' 通貨単位の移動を指定する署名 いくつかの追加情報とともに。記号では、 \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), ここで、I は、有用ではあるが機密ではないとみなされる追加情報を表します (例: 時間) 情報および支払い識別子)、および機密とみなされる追加情報(例: 支払いの理由、場合によってはPKとPK'の所有者の身元など)。 pk (またはその所有者) を支払者、各 pk' (またはその所有者) を受取人、a' を受取人と呼びます。 お支払い金額\(\wp\)。 支払いによる無料参加。ユーザーはいつでも好きなときにシステムに参加できることに注意してください。 独自の公開鍵/秘密鍵ペアを生成します。したがって、以下に現れる公開鍵 pk' は、 上記の支払い\(\wp\)は、お金を「所有」したことのない新しく生成された公開鍵である可能性があります。 前に。 3. 魔法の台帳。理想化されたシステムでは、すべての支払いは有効であり、改ざん防止された状態で表示されます。 誰でも見られるように「空に掲載」された一連の支払いのリスト L 個: L = PAY 1、PAY 2、. 。 。 、各ブロック PAY r+1 は、ブロックの出現以降に行われたすべての支払いのセットで構成されます。 支払い r.理想的なシステムでは、一定 (または有限) 時間が経過すると、新しいブロックが表示されます。 議論。 • より一般的な支払いと未使用のトランザクション出力。 より一般的には、公開鍵の場合、 pk が金額 a を所有している場合、pk の有効な支払い\(\wp\)により金額 a' を転送できます。 1、a' 2、。 。 、、 それぞれキー pk' に 1、PK' 2、。 。 .、Pである限り じゃぁ j \(\leq\) a。 Bitcoin および同様のシステムでは、公開鍵 pk が所有するお金は別個に分離されます。 金額、および pk によって行われた支払い \(\wp\) は、そのような分離された金額 a を全額送金しなければなりません。 pk が a の a' < a の部分のみを別のキーに転送したい場合は、 別のキー (場合によっては pk 自体) への、未使用のトランザクション出力のバランス。 Algorand は、分離された量を持つキーでも機能します。ただし、そこに集中するためには、 Algorand には新しい側面があるため、よりシンプルな支払い形式に固執するほうが概念的には簡単です および単一の金額が関連付けられたキー。 • 現在のステータス。理想化されたスキームは、現在の状況に関する情報を直接提供しません。 システムのステータス (つまり、各公開鍵がどのくらいの通貨単位を持っているか)。この情報 マジックレジャーから推測可能です。 理想的なシステムでは、アクティブなユーザーが最新のステータス情報を継続的に保存および更新し、 そうしないと、最初から、または最後に作成したものから再構築する必要があります。 それを計算しました。 (このペーパーの次のバージョンでは、Algorand を拡張して、 ユーザーが現在のステータスを効率的に再構築できるようになります。) • セキュリティと「プライバシー」。 デジタル署名により、誰も支払いを偽造できないことが保証されます。 別のユーザー。支払い \(\wp\) では、公開キーと金額は隠されませんが、機密情報は隠されません。 情報は私です。実際、\(\wp\) には H(I) のみが表示され、H は理想的な hash 関数であるため、H(I) はランダムな 256 ビット値であるため、自分が以下よりも優れていたことを把握する方法はありません。 単に推測するだけです。それでも、私が何であるかを証明するために(たとえば、支払いの理由を証明するために)、 支払者は I を明らかにするだけでよい。明らかにされた I の正しさは、H(I) を計算することによって検証できる。 そして、結果の値を\(\wp\)の最後の項目と比較します。実際、H は衝突耐性があるため、 H(I) = H(I') となる 2 番目の値 I' を見つけるのは困難です。 2.3 基本的な概念と表記法 キー、ユーザー、所有者 特に指定がない限り、各公開キー (略して「キー」) は長期にわたり、一意性特性を持つデジタル署名スキームに関連付けられます。公開鍵 i が結合します すでにシステム内にある別の公開鍵 j が i に支払いを行うとき、システム。 色については、鍵を擬人化します。キー i を「彼」と呼び、私は正直である、送信すると言う ユーザーはキーと同義です。キーを区別したいとき 所有者を表す場合、それぞれ「デジタル キー」と「所有者」という用語を使用します。 許可のないシステムと許可されたシステム。 デジタルキーが無料であれば、システムはパーミッションレスです いつでも参加でき、所有者は複数のデジタルキーを所有できます。それ以外の場合は許可されています。ユニークな表現 Algorand の各オブジェクトには固有の表現があります。特に、 各集合 {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, ... 。 .} は、事前に指定された方法で順序付けされます。例: first 辞書順に x に、次に y にというように。 同速度クロック グローバル クロックはありません。むしろ、各ユーザーが独自のクロックを持っています。ユーザークロック いかなる方法でも同期する必要はありません。ただし、それらはすべて同じ速度であると仮定します。 たとえば、ユーザー i の時計では午後 12 時ですが、時計によれば午後 2 時 30 分である可能性があります。 他のユーザー j の時計ですが、i の時計では 12:01 になるはずですが、i の時計では 2:31 になります。 Jの時計に。つまり、「1 分はどのユーザーにとっても同じ (十分に、本質的に同じ)」ということです。 ラウンド Algorand は、論理単位 r = 0、1、... で構成されます。 。 .、ラウンドと呼ばれます。 私たちはラウンドを示すために一貫して上付き文字を使用します。非数値量 Q であることを示すには (文字列、公開鍵、セット、デジタル署名など) はラウンド r を指します。単純に Qr と書きます。 Q が (数値として解釈可能なバイナリ文字列ではなく) 本物の数値である場合にのみ、 シンボル r が Q の指数として解釈されないように、Q(r) と書きます。 ラウンド r > 0 (の開始時) では、すべての公開鍵のセットは PKr で、システムのステータスは次のようになります。 シニア = n 私、a(r) 私、。 。 。  : i \(\in\)PKro 、 ここで、a(r) 私は は公開鍵 i に利用できる金額です。 PKr は次から推定できることに注意してください。 Sr であり、その Sr は各公開鍵 i の他のコンポーネントを指定することもできます。 ラウンド 0 の場合、PK0 は初期公開鍵のセット、S0 は初期ステータスです。 PK0 と S0 はシステムの常識であると想定されます。簡単にするために、ラウンド r の開始時は次のようになります。 PK1、. 。 。 、PKrおよびS1、. 。 。 、Sr. ラウンド r では、システムのステータスが Sr から Sr+1 に遷移します。象徴的には、 ラウンド r: Sr −→ Sr+1。 支払い Algorand では、ユーザーは継続的に支払いを行います (そして、その支払いを方法で広めます) セクション 2.7 で説明されています)。ユーザー i \(\in\)PKr の支払い \(\wp\) は、同じ形式とセマンティクスを持ちます。 理想的なシステムのように。つまり、 \(\wp\)= SIGi(i, i', a, I, H(I)) 。 支払い \(\wp\) は、(1) その金額が次の場合にラウンド r (略してラウンド R 支払い) で個別に有効になります。 a は a(r) 以下です i 、および (2) r' < r の場合、公式の給与セット PAY r' には表示されません。 (以下で説明するように、2 番目の条件は、\(\wp\) がまだ有効になっていないことを意味します。 i のラウンド r 支払いのセットは、その金額の合計が最大でも a(r) である場合、集合的に有効です。 私は。 給与セット ラウンド r ペイセット P は、各ユーザー i に対して次のようなラウンド r 支払いのセットです。 P の i のうち (おそらくなし) は、集合的に有効です。すべてのラウンド r のペイセットのセットは PAY(r) です。ラウンドR ペイセット P のスーパーセットがラウンド r ペイセットでない場合、ペイセット P は最大になります。 実際に、支払い \(\wp\) がラウンド \(\rho\) 、 \(\wp\)= SIGi(\(\rho\), i, i', a, I, H(I)) を指定することを提案します。 また、一部の固定非負整数 k については、[\(\rho\), \(\rho\) + k] の外側のどの丸でも有効ではありません。4 4これにより、\(\wp\)が「有効」になったかどうかのチェックが簡素化されます(つまり、何らかのペイセットが有効かどうかの判断が簡素化されます) PAY r には\(\wp\)が含まれます。 k = 0、\(\wp\)= SIGi(r, i, i′, a, I, H(I)) 、および \(\wp\)/\(\in\)PAY r の場合、i は \(\wp\) を再送信する必要があります。公的給与セット ラウンド r ごとに、Algorand が (後述する方法で) 公的に選択します。 単一の(おそらく空の)ペイセット、PAY r、ラウンドの公式ペイセット。 (本質的に、PAY r は 「実際に」起こったラウンドアール支払い。) 理想的なシステム (および Bitcoin) と同様、(1) 新しいユーザー j がシステムに入る唯一の方法 所定のラウンド r の公式給与セット PAY r に属する支払いの受取人となること。そして (2) PAY r は、現在のラウンド Sr のステータスから次のラウンド Sr+1 のステータスを決定します。 象徴的に言えば、 PAY r : Sr −→Sr+1。 具体的には、 1. ラウンド r + 1 の公開鍵のセット、PKr+1 は、PKr の和集合とすべての公開鍵のセットで構成されます。 PAY r の支払いで初めて表示される受取人キー。そして 2. 金額 a(r+1) 私は ユーザー i がラウンド r + 1 で所有するものは、ai(r) の合計です。 前回のラウンドで私が所有していた金額 (i ̸\(\in\)PKr の場合は 0)— と金額の合計 PAY r の支払いに従って i に支払われます。 まとめると、理想的なシステムと同様に、Sr+1 の各ステータスは以前の支払い履歴から推定できます。 支払い 0、. 。 。 、ペイr。 2.4 ブロックと実証済みのブロック Algorand0 では、ラウンド r に対応するブロック Br は以下を指定します。 r 自体。一連の支払い ラウンドr、PAY r;量 Qr (後述)、および前のブロック H(Br−1) の hash。 したがって、ある固定ブロック B0 から開始して、従来の blockchain が得られます。 B1 = (1, PAY 1, Q0, H(B0)), B2 = (2, PAY 2, Q1, H(B1)), B3 = (3, PAY 3, Q2, H(B2)), 。 。 。 Algorand では、ブロックの信頼性は実際には別の情報によって保証されます。 「ブロック証明書」CERT r。Br を証明済みブロック Br に変換します。したがって、マジックレジャーは、 実証済みのブロックのシーケンスによって実装されます。 B1、B2、. 。 。 ディスカッション これから説明するように、CERT r は、H(Br) のデジタル署名のセットで構成されています。 SV r のメンバーの大多数、およびそれらのメンバーのそれぞれが実際に所属していることの証明 SVrへ。もちろん、証明書 CERT r をブロック自体に含めることもできますが、 概念的には分離しておいたほうがすっきりします)。 Bitcoin では、各ブロックは特別なプロパティを満たす必要があります。つまり、「 暗号パズル」により、ブロック生成の計算量が増加し、フォークの両方が避けられなくなります。 そして珍しくありません。対照的に、Algorand の blockchain には 2 つの主な利点があります。 最小限の計算で済み、圧倒的に高い確率でフォークしません。各ブロック Bi は blockchain に入るとすぐに安全に最終的になります。2.5 許容可能な失敗確率 Algorand の安全性を分析するには、確率 F を指定します。 何かが間違っていることを受け入れる(たとえば、検証者セット SV r が正当な多数派を持たない)。 暗号化 hash 関数 H の出力長の場合と同様、F もパラメーターです。 しかし、この場合と同様に、より直観的に理解するために、F を具体的な値に設定すると便利であることがわかります。 Algorand では、同時に十分なセキュリティを享受することが確かに可能であるという事実の把握 そして十分な効率性。 F が必要に応じて設定できるパラメータであることを強調するために、最初に それぞれ設定した第2の実施形態 F = 10−12 そして F = 10−18 。 ディスカッション 10−12 は実際には 1 兆分の 1 未満であることに注意してください。 私たちのアプリケーションでは F の選択が適切です。 10−12 は確率ではないことを強調しましょう。 これにより、敵対者は誠実なユーザーの支払いを偽造することができます。すべての支払いはデジタルで行われます したがって、適切なデジタル署名が使用されている場合、支払いが偽造される可能性は次のとおりです。 10−12 よりもはるかに低く、実際には本質的に 0 です。私たちが喜んで許容する悪い出来事 確率 F では、Algorand の blockchain がフォークします。 F と 1 分間のラウンドでは、Algorand の blockchain でフォークが発生する頻度は低いと予想されます。 (およそ) 190 万年に 1 回。対照的に、Bitcoin では、フォークが頻繁に発生します。 より要求の厳しい人は、F をより低い値に設定する場合があります。この目的のために、第2の実施形態では、 F を 10−18 に設定することを検討します。なお、ブロックが毎秒生成されると仮定すると、1018 ビッグバンから現在まで、宇宙がこれまでにかかった推定秒数 時間。したがって、F = 10−18 の場合、ブロックが 1 秒以内に生成される場合、その経過時間は次のようになります。 宇宙にフォークが見えます。 2.6 敵対的モデル Algorand は、非常に敵対的なモデルでも安全になるように設計されています。説明しましょう。 正直なユーザーと悪意のあるユーザー ユーザーは、プロトコルの指示をすべて遵守する場合、誠実であると言えます。 メッセージの送受信が完全に可能です。ユーザーは悪意のあるユーザーです (例: Byzantine、 分散コンピューティングの用語)、規定された指示から任意に逸脱できる場合。 敵対者 敵対者は、色で擬人化された効率的な (技術的には多項式時間の) アルゴリズムであり、いつでも、望むユーザーを即座に悪意のあるものにすることができます (主題) 破壊できるユーザー数の上限のみ)。 敵対者は、すべての悪意のあるユーザーを完全に制御し、完全に調整します。彼はあらゆる行動を起こす すべてのメッセージの送受信を含め、ユーザーに代わって、ユーザーが本来の目的から逸脱できるようにすることができます。 決められた指示を恣意的な方法で行うこと。または、単に破損したユーザーが送信しているものを隔離することもできます。 そしてメッセージを受信しています。ユーザー i が悪意があることを他の誰も自動的に学習しないことを明確にしましょう。 ただし、i の悪意は、敵対者が彼にとらせた行動によって明らかになる可能性があります。 しかし、この強力な敵は、 • 無制限の計算能力を持たないため、デジタル暗号化をうまく偽造することができません。 無視できる可能性を除いて、正直なユーザーの署名。そして• 正直なユーザー間のメッセージ交換にいかなる形でも干渉することはできません。 さらに、正直なユーザーを攻撃する彼の能力は、次の仮定のいずれかによって制限されます。 正直にお金の大部分を占める Honest Majority of Money (HMM) の連続体を考慮します。 仮定: つまり、非負の整数 k および実数 h > 1/2 について、 HHMk > h: すべてのラウンドで正直なユーザーは、r で全資金のうち h より大きい割合を所有していました。 ラウンド r −k のシステム。 議論。 すべての悪意のあるユーザーが自分の行動を完全に調整していると仮定します (あたかも制御されているかのように) 単一の存在、つまり敵対者による)はかなり悲観的な仮説です。完璧なコーディネートも 多くの人にとって達成は困難です。おそらく調整は別々のグループ内でのみ行われます 悪意のあるプレイヤーの。ただし、悪意のあるユーザーの調整のレベルについては確信が持てないため、 楽しめるかも知れませんが、後悔するよりは安全を確保した方が良いでしょう。 敵対者が密かに、動的に、即座にユーザーを破壊できると仮定すると、 悲観的。結局のところ、現実的には、ユーザーの操作を完全に制御するには時間がかかるはずです。 HMMk > h という仮定は、たとえば、ラウンド (平均) が実装された場合に次のことを意味します。 つまり、1 分以内に、特定のラウンドの資金の大部分が正当な手に残ることになります。 k = 120 の場合は少なくとも 2 時間、k = 10,000 の場合は少なくとも 1 週間。 HMM の仮定と以前のコンピューティング能力の正直多数に注意してください。 計算能力はお金で買えるので、仮定は次のような意味で関連しています。 悪意のあるユーザーが資金の大部分を所有している場合、彼らはコンピューティング能力の大部分を手に入れることができます。 2.7 コミュニケーションモデル 私たちは、メッセージの伝播、つまり「ピアツーピアのゴシップ」5が唯一の手段であると想定しています。 コミュニケーション。 一時的な仮定: ネットワーク全体でのメッセージのタイムリーな配信。 のために この文書の大部分では、伝播されたすべてのメッセージがほぼすべての誠実なユーザーに届くと想定しています。 タイムリーに。この仮定は、ネットワークを扱うセクション 10 で削除します。 自然発生または敵対的に誘発されたパーティション。 (これから見ていきますが、私たちは仮定するだけです ネットワークの接続された各コンポーネント内でのメッセージのタイムリーな配信。) (ネットワーク全体で) 伝播されたメッセージのタイムリーな配信をキャプチャする具体的な方法の 1 つは次のとおりです。 以下: すべての到達可能性 \(\rho\) > 95% およびメッセージ サイズ \(\mu\) \(\in\)Z+ に対して、次のような \(\lambda\) \(\rho\),\(\mu\) が存在します。 正直なユーザーが時間 t にμバイトのメッセージ m を伝播すると、 そして、時間 t + \(\lambda\) \(\rho\),μ までに、m は正直なユーザーの少なくとも一部 \(\rho\) に到達します。 5本質的に、Bitcoin のように、ユーザーがメッセージ m を伝播すると、すべてのアクティブ ユーザー i が初めて m を受信します。 適切な少数のアクティブなユーザー、つまり「隣人」をランダムかつ独立して選択し、そのユーザーに m を転送します。 おそらく彼が彼らから承認を受け取るまで。 m の伝播は、ユーザーが受信しない場合に終了します。 初めてのメートル。ただし、上記のプロパティは、別のユーザー/デポジトリなどによって最新の blockchain を取得するメカニズムを明示的かつ個別に想定しない限り、Algorand プロトコルをサポートできません。 実際、新しいブロック Br を構築するには、適切な検証者のセットがタイムリーにラウンド R を受信する必要があるだけではありません。 メッセージだけでなく、Br-1 と他のすべての以前のメッセージを知るために、前のラウンドのメッセージも表示されます。 ブロック。Br での支払いが有効かどうかを判断するために必要です。 以下の 代わりに仮定で十分です。 メッセージ伝播 (MP) の仮定: すべての \(\rho\) > 95% および \(\mu\) \(\in\)Z+ に対して、 \(\lambda\) \(\rho\),\(\mu\) が存在します。 つまり、すべての時間 t と、t −\(\lambda\) \(\rho\),μ より前に正直なユーザーによって伝播されたすべての μ バイトのメッセージ m について、 m は、時刻 t までに、正直なユーザーの少なくとも一部 \(\rho\) によって受信されます。 プロトコル Algorand ' は、実際には少数のユーザー (つまり、 Algorand ' のラウンドの指定されたステップで、(小さい) 規定サイズの別個のメッセージを伝播します。 そして、これらの指示を実行するために必要な時間を制限する必要があります。 MPを充実させることでこれを実現します 以下のような仮定。 すべての n、\(\rho\) > 95%、および \(\mu\) \(\in\)Z+ に対して、すべての時間 t およびすべての \(\mu\) バイトについて、次のような \(\lambda\)n,\(\rho\),\(\mu\) が存在します。 メッセージm1、. 。 。 、mn、それぞれは、t−\(\lambda\)n、\(\rho\)、μ、m1、. 。 。 、mn が受信され、 時間 t までに、正直なユーザーの少なくとも一部 \(\rho\) によって。 注記 • 上記の仮定は意図的に単純ですが、本稿で必要以上に強力でもあります。6 • 簡単にするために、\(\rho\) = 1 と仮定するため、\(\rho\) についての言及は省略します。 • 私たちは、彼が MP の仮定に違反しない限り、敵対者は次のように悲観的に仮定します。 すべてのメッセージの配信を完全に制御します。特に正直者には気付かれずに ユーザー、敵対者は、どの正直なプレイヤーがどのメッセージをいつ受け取るかを任意に決定できます。 そして彼が望むあらゆるメッセージの配信を恣意的に加速させます。7

Preliminares

2.1 Primitivos criptográficos Hashing ideal. Contaremos com uma função criptográfica hash eficientemente computável, H, que mapeia cadeias arbitrariamente longas em cadeias binárias de comprimento fixo. Seguindo uma longa tradição, modelamos H como um oracle aleatório, essencialmente uma função que mapeia cada string s possível para um aleatório e string binária selecionada independentemente (e então fixa), H(s), do comprimento escolhido. Neste artigo, H tem saídas longas de 256 bits. Na verdade, esse comprimento é curto o suficiente para tornar o sistema eficiente e longo o suficiente para torná-lo seguro. Por exemplo, queremos que H seja resistente a colisões. Ou seja, deveria ser difícil encontrar duas strings diferentes x e y tais que H(x) = H(y). Quando H é um oracle aleatório com saídas longas de 256 bits, encontrar qualquer par de strings é de fato difícil. (Tentar aleatoriamente e confiar no paradoxo do aniversário exigiria 2.256/2 = 2.128 testes.) Assinatura digital. As assinaturas digitais permitem que os usuários autentiquem informações entre si sem compartilhar nenhuma chave secreta. Um esquema de assinatura digital consiste em três algoritmos: um gerador de chave probabilística G, um algoritmo de assinatura S e um algoritmo de verificação V. Dado um parâmetro de segurança k, um número inteiro suficientemente alto, um usuário i usa G para produzir um par de Chaves de k bits (ou seja, strings): uma chave “pública” pki e uma chave de assinatura “secreta” correspondente ski. Crucialmente, um a chave pública não “trai” sua chave secreta correspondente. Ou seja, mesmo com conhecimento de pki, não outro além de mim é capaz de calcular esqui em menos de um tempo astronômico. O usuário i usa ski para assinar mensagens digitalmente. Para cada mensagem possível (string binária) m, primeiro hashes m e então executa o algoritmo S nas entradas H(m) e ski para produzir a string de k bits sigpki(m) \(\triangleq\)S(H(m), esqui) .3 3Como H é resistente a colisões, é praticamente impossível que, ao assinar m, alguém “assine acidentalmente” uma mensagem diferente mensagem m'.A string binária sigpki(m) é chamada de assinatura digital de i de m (relativa a pki) e pode ser denotado mais simplesmente por sigi(m), quando a chave pública pki está clara no contexto. Qualquer pessoa que conheça o pki pode usá-lo para verificar as assinaturas digitais produzidas pelo i. Especificamente, em insere (a) a chave pública pki de um jogador i, (b) uma mensagem m e (c) uma string s, ou seja, i é alegado assinatura digital da mensagem m, o algoritmo de verificação V produz SIM ou NÃO. As propriedades que exigimos de um esquema de assinatura digital são: 1. Assinaturas legítimas são sempre verificadas: Se s = sigi(m), então V (pki, m, s) = Y ES; e 2. Assinaturas digitais são difíceis de falsificar: sem conhecimento de esqui, é hora de encontrar uma string como essa. que V (pki, m, s) = Y ES, para uma mensagem m nunca assinada por i, é astronomicamente longo. (Seguindo os fortes requisitos de segurança de Goldwasser, Micali e Rivest [17], isso é verdade mesmo que se possa obter a assinatura de qualquer outra mensagem.) Assim, para evitar que qualquer outra pessoa assine mensagens em seu nome, um jogador deve manter o seu assinando a chave secreta de esqui (daí o termo “chave secreta”) e para permitir que qualquer pessoa verifique as mensagens ele assina, tenho interesse em divulgar sua chave pki (daí o termo “chave pública”). Em geral, uma mensagem m não é recuperável a partir da sua assinatura sigi(m). Para negociar virtualmente com assinaturas digitais que satisfaçam a propriedade de “recuperabilidade” conceitualmente conveniente (ou seja, para garantir que o signatário e a mensagem sejam facilmente computáveis a partir de uma assinatura, definimos SIGpki(m) = (i, m, sigpki(m)) e SIGi(m) = (i, m, sigi(m)), se pki estiver claro. Assinatura digital exclusiva. Consideramos também esquemas de assinatura digital (G, S, V ) que satisfazem a seguinte propriedade adicional. 3. Singularidade. É difícil encontrar strings pk′, m, s e s′ tais que ̸= s′ e V (pk′, m, s) = V (pk′, m, s′) = 1. (Observe que a propriedade de exclusividade também é válida para strings pk′ que não são geradas legitimamente chaves públicas. Em particular, porém, a propriedade de unicidade implica que, se alguém usasse a propriedade gerador de chave especificado G para calcular uma chave pública pk junto com uma chave secreta correspondente sk, e, portanto, sabia que sk, seria essencialmente impossível também para ele encontrar dois dispositivos digitais diferentes. assinaturas de uma mesma mensagem relativa a pk.) Observações • De assinaturas exclusivas a funções aleatórias verificáveis. Em relação a um digital esquema de assinatura com a propriedade de exclusividade, o mapeamento m \(\to\) H(sigi(m)) associa-se a cada string m possível, uma string única de 256 bits selecionada aleatoriamente e a exatidão disso o mapeamento pode ser provado dada a assinatura sigi(m). Ou seja, esquema ideal de hashing e assinatura digital que satisfaz a propriedade de exclusividade essencialmente fornecer uma implementação elementar de uma função aleatória verificável, conforme introduzida e por Micali, Rabin e Vadhan [27]. (Sua implementação original era necessariamente mais complexa, já que eles não dependiam do hashing ideal.)• Três necessidades diferentes para assinaturas digitais. Em Algorand, um usuário depende de recursos digitais assinaturas para (1) Autenticação dos próprios pagamentos do i. Nesta aplicação, as chaves podem ser de “longo prazo” (ou seja, usadas para assinar muitas mensagens durante um longo período de tempo) e vêm de um esquema de assinatura comum. (2) Gerar credenciais provando que i tem o direito de agir em alguma etapa s de uma rodada r. Aqui, as chaves podem ser de longo prazo, mas devem vir de um esquema que satisfaça a propriedade de exclusividade. (3) Autenticar a mensagem que envio em cada etapa em que atua. Aqui, as chaves devem ser efêmero (ou seja, destruído após seu primeiro uso), mas pode vir de um esquema de assinatura comum. • Uma simplificação de pequeno custo. Para simplificar, imaginamos que cada usuário i tenha uma única chave de longo prazo. Conseqüentemente, tal chave deve vir de um esquema de assinatura com a exclusividade propriedade. Essa simplicidade tem um pequeno custo computacional. Normalmente, na verdade, digital único as assinaturas são um pouco mais caras para produzir e verificar do que as assinaturas comuns. 2.2 O livro-razão público idealizado Algorand tenta imitar o seguinte sistema de pagamento, baseado em um livro-razão público idealizado. 1. O Status Inicial. O dinheiro está associado a chaves públicas individuais (geradas de forma privada e propriedade dos usuários). Deixando pk1, . . . , pkj são as chaves públicas iniciais e a1, . . . , e seus respectivos quantias iniciais de unidades monetárias, então o status inicial é S0 = (pk1, a1), . . . , (pkj, aj) , que é assumido como conhecimento comum no sistema. 2. Pagamentos. Seja pk uma chave pública atualmente com \(\geq\)0 unidades monetárias, pk′ outra chave pública chave, e a′ um número não negativo não maior que a. Então, um pagamento (válido) \(\wp\)é um pagamento digital assinatura, relativa a pk, especificando a transferência de a′ unidades monetárias de pk para pk′, juntamente com algumas informações adicionais. Em símbolos, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), onde I representa qualquer informação adicional considerada útil, mas não sensível (por exemplo, tempo informações e um identificador de pagamento) e qualquer informação adicional considerada sensível (por exemplo, o motivo do pagamento, possivelmente as identidades dos proprietários do pk e do pk′, e assim por diante). Referimo-nos a pk (ou seu proprietário) como pagador, a cada pk′ (ou seu proprietário) como beneficiário e a a′ como o valor do pagamento \(\wp\). Adesão gratuita por meio de pagamentos. Observe que os usuários podem ingressar no sistema quando quiserem, gerando seus próprios pares de chaves pública/secreta. Assim, a chave pública pk′ que aparece em o pagamento \(\wp\)acima pode ser uma chave pública recém-gerada que nunca “possuíu” nenhum dinheiro antes. 3. O Livro Mágico. No Sistema Idealizado, todos os pagamentos são válidos e aparecem em formato inviolável lista L de conjuntos de pagamentos “postados no céu” para que todos possam ver: L = PAGUE 1, PAGUE 2, . . . ,Cada bloco PAY r+1 consiste no conjunto de todos os pagamentos efetuados desde o aparecimento do bloco PAGAR R. No sistema ideal, um novo bloco aparece após um período de tempo fixo (ou finito). Discussão. • Pagamentos mais gerais e resultados de transações não gastas. De forma mais geral, se uma chave pública pk possui um valor a, então um pagamento válido \(\wp\)of pk pode transferir os valores a′ 1, uma' 2, . . ., respectivamente às chaves pk′ 1, pk' 2, . . ., desde que P eu' j \(\leq\)a. Em Bitcoin e sistemas similares, o dinheiro pertencente a um pacote de chave pública é segregado em valores, e um pagamento \(\wp\)feito por pk deve transferir esse valor segregado em sua totalidade. Se pk deseja transferir apenas uma fração a′ < a de a para outra chave, então ele também deve transferir a fração saldo, a saída da transação não gasta, para outra chave, possivelmente o próprio pk. Algorand também funciona com chaves com valores segregados. Contudo, para focar no aspectos novos de Algorand, é conceitualmente mais simples manter nossas formas de pagamento mais simples e chaves com um único valor associado a elas. • Status atual. O Esquema Idealizado não fornece diretamente informações sobre o atual status do sistema (ou seja, sobre quantas unidades monetárias cada chave pública possui). Esta informação é dedutível do Magic Ledger. No sistema ideal, um usuário ativo armazena e atualiza continuamente as informações de status mais recentes, ou ele teria que reconstruí-lo, seja do zero, ou desde a última vez que ele calculou. (Na próxima versão deste artigo, aumentaremos Algorand para permitir seu usuários reconstruam o status atual de maneira eficiente.) • Segurança e “Privacidade”. As assinaturas digitais garantem que ninguém pode falsificar um pagamento outro usuário. Em um \(\wp\) de pagamento, as chaves públicas e o valor não ficam ocultos, mas sim o sensível informação que eu sou. Na verdade, apenas H(I) aparece em \(\wp\), e como H é uma função hash ideal, H(I) é um valor aleatório de 256 bits e, portanto, não há como descobrir o que eu era melhor do que simplesmente adivinhando. No entanto, para provar o que eu era (por exemplo, para provar o motivo do pagamento), o o pagador pode apenas revelar I. A exatidão do I revelado pode ser verificada calculando H(I) e comparando o valor resultante com o último item de \(\wp\). Na verdade, como H é resiliente a colisões, é difícil encontrar um segundo valor I′ tal que H(I) = H(I′). 2.3 Noções e notações básicas Chaves, usuários e proprietários A menos que especificado de outra forma, cada chave pública (“chave” para abreviar) é de longo prazo e relativa a um esquema de assinatura digital com a propriedade de exclusividade. Uma chave pública que eu juntei o sistema quando outra chave pública j já no sistema faz um pagamento para i. Para a cor, personificamos as chaves. Referimo-nos a uma chave i como “ele”, dizemos que sou honesto, que envio e recebe mensagens, etc. Usuário é sinônimo de chave. Quando queremos distinguir uma chave de a quem pertence, utilizamos respectivamente os termos “chave digital” e “proprietário”. Sistemas sem permissão e com permissão. Um sistema não tem permissão se uma chave digital for gratuita aderir a qualquer momento e um proprietário pode possuir várias chaves digitais; e é permitido, caso contrário.Representação Única Cada objeto em Algorand possui uma representação única. Em particular, cada conjunto {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} é ordenado de uma maneira pré-especificada: por exemplo, primeiro lexicograficamente em x, depois em y, etc. Relógios da mesma velocidade Não existe um relógio global: cada usuário tem seu próprio relógio. Relógios do usuário não precisa ser sincronizado de forma alguma. Assumimos, no entanto, que todos eles têm a mesma velocidade. Por exemplo, quando são 12h de acordo com o relógio de um usuário i, podem ser 14h30 de acordo com o relógio de outro usuário j, mas quando for 12h01 de acordo com o relógio de i, serão 2h31 de acordo para o relógio de j. Ou seja, “um minuto é igual (suficientemente, essencialmente igual) para todos os usuários”. Rodadas Algorand está organizado em unidades lógicas, r = 0, 1, . . ., chamadas rodadas. Usamos consistentemente sobrescritos para indicar rodadas. Para indicar que uma quantidade não numérica Q (por exemplo, uma string, uma chave pública, um conjunto, uma assinatura digital, etc.) refere-se a uma rodada r, simplesmente escrevemos Qr. Somente quando Q for um número genuíno (em oposição a uma sequência binária interpretável como um número), faça escrevemos Q(r), de modo que o símbolo r não possa ser interpretado como o expoente de Q. No (início de uma) rodada r > 0, o conjunto de todas as chaves públicas é PKr e o status do sistema é Sr = n eu, um (r) eu,. . .  : eu \(\in\)PKro , onde um(r) eu é a quantidade de dinheiro disponível para a chave pública i. Observe que PKr é dedutível de Sr, e esse Sr também pode especificar outros componentes para cada chave pública i. Para a rodada 0, PK0 é o conjunto de chaves públicas iniciais e S0 é o status inicial. Tanto PK0 quanto S0 são considerados de conhecimento comum no sistema. Para simplificar, no início da rodada r, então são PK1, . . . , PKr e S1, . . . , Sr. Numa rodada r, o status do sistema transita de Sr para Sr+1: simbolicamente, Rodada r: Sr −→Sr+1. Pagamentos Em Algorand, os usuários realizam pagamentos continuamente (e os divulgam na forma descrito na subseção 2.7). Um pagamento \(\wp\)de um usuário i \(\in\)PKr tem o mesmo formato e semântica como no Sistema Ideal. Ou seja, \(\wp\)= SIGi(i, i′, a, I, H(I)) . O pagamento \(\wp\)é individualmente válido em uma rodada r (é um pagamento redondo, para abreviar) se (1) seu valor a é menor ou igual a a(r) i, e (2) não aparece em nenhum conjunto de pagamentos oficial PAY r′ para r′ < r. (Conforme explicado abaixo, a segunda condição significa que \(\wp\) ainda não entrou em vigor. Um conjunto de pagamentos redondos de i é coletivamente válido se a soma de seus valores for no máximo a(r) eu. Conjuntos de pagamentos Um conjunto de pagamentos redondo P é um conjunto de pagamentos redondos tais que, para cada usuário i, os pagamentos de i em P (possivelmente nenhum) são coletivamente válidos. O conjunto de todos os conjuntos de pagamentos da rodada r é PAY(r). Um round-r payset P é máximo se nenhum superconjunto de P for um payset round-r. Na verdade, sugerimos que um pagamento \(\wp\)também especifica uma rodada \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , e não pode ser válido em qualquer rodada fora de [\(\rho\), \(\rho\) + k], para algum inteiro não negativo fixo k.4 4Isso simplifica a verificação se \(\wp\)se tornou “eficaz” (ou seja, simplifica a determinação se algum conjunto de salários PAGAR r contém \(\wp\). Quando k = 0, se \(\wp\)= SIGi(r, i, i′, a, I, H(I)) e \(\wp\)/\(\in\)PAY r, então devo reenviar \(\wp\).Pagamentos oficiais Para cada rodada r, Algorand seleciona publicamente (da maneira descrita mais adiante) um único conjunto de pagamentos (possivelmente vazio), PAY r, o conjunto de pagamentos oficial da rodada. (Essencialmente, PAY r representa os pagamentos redondos que “realmente” aconteceram.) Assim como no Sistema Ideal (e Bitcoin), (1) a única maneira de um novo usuário j entrar no sistema deve ser o destinatário de um pagamento pertencente ao conjunto de pagamentos oficial PAY r de uma determinada rodada r; e (2) PAY r determina o status da próxima rodada, Sr+1, daquele da rodada atual, Sr. Simbolicamente, PAGAR r: Sr −→Sr+1. Especificamente, 1. o conjunto de chaves públicas da rodada r + 1, PKr+1, consiste na união de PKr e no conjunto de todos chaves de beneficiário que aparecem, pela primeira vez, nos pagamentos de PAY r; e 2. a quantidade de dinheiro a(r+1) eu que um usuário i possui na rodada r + 1 é a soma de ai(r) - ou seja, o quantidade de dinheiro que possuo na rodada anterior (0 se i̸\(\in\)PKr) - e a soma das quantias pago a i de acordo com os pagamentos de PAY r. Em suma, tal como no Sistema Ideal, cada estado Sr+1 é dedutível do histórico de pagamentos anteriores: PAGUE 0, . . . , PAGUE R. 2.4 Blocos e Blocos Comprovados Em Algorand0, o bloco Br correspondente a uma rodada r especifica: o próprio r; o conjunto de pagamentos de rodada r, PAGAR r; uma quantidade Qr, a ser explicada, e o hash do bloco anterior, H(Br−1). Assim, partindo de algum bloco fixo B0, temos um blockchain tradicional: B1 = (1, PAGUE 1, Q0, H(B0)), B2 = (2, PAGUE 2, Q1, H(B1)), B3 = (3, PAGUE 3, Q2, H(B2)), . . . Em Algorand, a autenticidade de um bloco é na verdade comprovada por uma informação separada, um “certificado de bloco” CERT r, que transforma Br em um bloco comprovado, Br. O livro mágico, portanto, é implementado pela sequência dos blocos comprovados, B1, B2, . . . Discussão Como veremos, o CERT r consiste em um conjunto de assinaturas digitais para H(Br), aquelas de um maioria dos membros do SV r, juntamente com uma prova de que cada um desses membros pertence efectivamente para SV r. Poderíamos, é claro, incluir os certificados CERT r nos próprios blocos, mas conceitualmente mais limpo para mantê-lo separado.) Em Bitcoin cada bloco deve satisfazer uma propriedade especial, ou seja, deve “conter uma solução de um crypto puzzle”, o que torna a geração de blocos computacionalmente intensiva e bifurcações inevitáveis e não raro. Por outro lado, blockchain de Algorand tem duas vantagens principais: é gerado com cálculo mínimo e não será bifurcado com probabilidade extremamente alta. Cada bloco Bi é final com segurança assim que entrar em blockchain.2,5 Probabilidade de falha aceitável Para analisar a segurança de Algorand especificamos a probabilidade, F, com a qual estamos dispostos a aceitar que algo dê errado (por exemplo, que um conjunto verificador SV r não tenha uma maioria honesta). Como no caso do comprimento de saída da função criptográfica hash H, também F é um parâmetro. Mas, como nesse caso, achamos útil definir F para um valor concreto, de modo a obter uma estimativa mais intuitiva. compreensão do fato de que é de fato possível, em Algorand, desfrutar simultaneamente de segurança suficiente e eficiência suficiente. Para enfatizar que F é um parâmetro que pode ser definido conforme desejado, na primeira e segundas modalidades, definimos respectivamente F = 10−12 e F = 10−18 . Discussão Observe que 10-12 é, na verdade, menos que um em um trilhão, e acreditamos que tal a escolha de F é adequada em nossa aplicação. Vamos enfatizar que 10−12 não é a probabilidade com o qual o Adversário pode falsificar os pagamentos de um usuário honesto. Todos os pagamentos são digitalmente assinado e, portanto, se as assinaturas digitais adequadas forem usadas, a probabilidade de falsificar um pagamento é muito inferior a 10-12 e é, na verdade, essencialmente 0. O evento ruim que estamos dispostos a tolerar com probabilidade F é que as bifurcações de Algorand blockchain. Observe que, com nossa configuração de F e rodadas de um minuto, espera-se que uma bifurcação ocorra no blockchain de Algorand tão raramente quanto (aproximadamente) uma vez em 1,9 milhões de anos. Por outro lado, em Bitcoin, bifurcações ocorrem com bastante frequência. Uma pessoa mais exigente pode definir F para um valor mais baixo. Para este fim, em nossa segunda modalidade consideramos definir F como 10−18. Observe que, supondo que um bloco seja gerado a cada segundo, 1018 é o número estimado de segundos que o Universo levou até agora: desde o Big Bang até o presente tempo. Assim, com F = 10−18, se um bloco for gerado em um segundo, deve-se esperar para a idade de o Universo para ver uma bifurcação. 2.6 O modelo adversário Algorand foi projetado para ser seguro em um modelo muito adversário. Deixe-nos explicar. Usuários honestos e maliciosos Um usuário é honesto se seguir todas as instruções do protocolo e é perfeitamente capaz de enviar e receber mensagens. Um usuário é malicioso (ou seja, bizantino, no linguagem da computação distribuída) se ele puder desviar-se arbitrariamente de suas instruções prescritas. O Adversário O Adversário é um algoritmo eficiente (tecnicamente em tempo polinomial), personificado pela cor, que pode imediatamente tornar malicioso qualquer usuário que ele quiser, a qualquer hora que ele quiser (sujeito apenas para um limite superior ao número de usuários que ele pode corromper). O Adversário controla totalmente e coordena perfeitamente todos os usuários maliciosos. Ele realiza todas as ações em seu nome, incluindo receber e enviar todas as suas mensagens, e pode permitir que eles se desviem de suas instruções prescritas de maneira arbitrária. Ou ele pode simplesmente isolar um usuário corrompido enviando e recebimento de mensagens. Deixe-nos esclarecer que ninguém mais fica sabendo automaticamente que um usuário i é malicioso, embora a maldade de i possa transparecer nas ações que o Adversário o faz tomar. Este poderoso adversário, no entanto, • Não possui poder computacional ilimitado e não consegue forjar com sucesso o digital assinatura de um usuário honesto, exceto com probabilidade insignificante; e• Não poderá interferir de forma alguma nas trocas de mensagens entre usuários honestos. Além disso, sua capacidade de atacar usuários honestos é limitada por uma das seguintes suposições. Honestidade Maioria do Dinheiro Consideramos um continuum de Maioria Honesta de Dinheiro (HMM) suposições: ou seja, para cada inteiro não negativo k e h real > 1/2, HHMk > h: os usuários honestos em cada rodada r possuíam uma fração maior que h de todo o dinheiro em o sistema na rodada r −k. Discussão. Supondo que todos os usuários mal-intencionados coordenem perfeitamente suas ações (como se fossem controlados por uma única entidade, o Adversário) é uma hipótese bastante pessimista. Coordenação perfeita entre também muitos indivíduos é difícil de alcançar. Talvez a coordenação só ocorra dentro de grupos separados de jogadores maliciosos. Mas, como não se pode ter certeza sobre o nível de coordenação dos usuários mal-intencionados podemos aproveitar, é melhor prevenir do que remediar. Presumir que o Adversário possa corromper secreta, dinâmica e imediatamente os usuários também é pessimista. Afinal, de forma realista, assumir o controle total das operações de um usuário deve levar algum tempo. A suposição HMMk > h implica, por exemplo, que, se uma rodada (em média) for implementada em um minuto, então, a maior parte do dinheiro em uma determinada rodada permanecerá em mãos honestas por pelo menos duas horas, se k = 120, e pelo menos uma semana, se k = 10.000. Observe que as suposições do HMM e a maioria honesta anterior do poder de computação suposições estão relacionadas no sentido de que, uma vez que o poder computacional pode ser comprado com dinheiro, se usuários mal-intencionados possuírem a maior parte do dinheiro, eles poderão obter a maior parte do poder de computação. 2.7 O modelo de comunicação Prevemos que a propagação de mensagens — isto é, “fofoca entre pares”5 — seja o único meio de comunicação. Suposição temporária: entrega oportuna de mensagens em toda a rede. Para na maior parte deste artigo assumimos que toda mensagem propagada atinge quase todos os usuários honestos em tempo hábil. Removeremos essa suposição na Seção 10, onde tratamos de redes partições, sejam de ocorrência natural ou induzidas adversamente. (Como veremos, apenas assumimos entrega oportuna de mensagens dentro de cada componente conectado da rede.) Uma maneira concreta de capturar a entrega oportuna de mensagens propagadas (em toda a rede) é o seguinte: Para toda alcançabilidade \(\rho\) > 95% e tamanho de mensagem \(\mu\) \(\in\)Z+, existe \(\lambda\) \(\rho\),\(\mu\) tal que, se um usuário honesto propagar uma mensagem m de \(\mu\) bytes no tempo t, então m atinge, no tempo t + \(\lambda\) \(\rho\),\(\mu\), pelo menos uma fração \(\rho\) dos usuários honestos. 5Essencialmente, como em Bitcoin, quando um usuário propaga uma mensagem m, todo usuário ativo recebe m pela primeira vez, seleciona aleatoriamente e de forma independente um número adequadamente pequeno de usuários ativos, seus “vizinhos”, para os quais ele encaminha m, possivelmente até que ele receba um reconhecimento deles. A propagação de m termina quando nenhum usuário recebe m pela primeira vez.A propriedade acima, no entanto, não pode suportar nosso protocolo Algorand, sem prever explícita e separadamente um mecanismo para obter o blockchain mais recente - por outro usuário/depositório/etc. Na verdade, para construir um novo bloco Br, não apenas um conjunto adequado de verificadores deve receber atempadamente rodadas-r mensagens, mas também as mensagens das rodadas anteriores, para conhecer o Br−1 e todos os outros blocos, o que é necessário para determinar se os pagamentos em Br são válidos. O seguinte suposição, em vez disso, é suficiente. Suposição de propagação de mensagens (MP): Para todo \(\rho\) > 95% e \(\mu\) \(\in\)Z+, existe \(\lambda\) \(\rho\),\(\mu\) tal que, para todos os tempos t e todas as mensagens de \(\mu\) bytes m propagadas por um usuário honesto antes de t −\(\lambda\) \(\rho\), \(\mu\), m é recebido, no tempo t, por pelo menos uma fração \(\rho\) dos usuários honestos. O protocolo Algorand ′ na verdade instrui cada um de um pequeno número de usuários (ou seja, os verificadores de um dada etapa de uma rodada em Algorand ′, para propagar uma mensagem separada de tamanho (pequeno) prescrito, e precisamos limitar o tempo necessário para cumprir essas instruções. Fazemo-lo enriquecendo o MP suposição da seguinte forma. Para todo n, \(\rho\) > 95% e \(\mu\) \(\in\)Z+, existe \(\lambda\)n,\(\rho\),\(\mu\) tal que, para todos os tempos t e todos \(\mu\)-byte mensagens m1, . . . , mn, cada um propagado por um usuário honesto antes de t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , mn são recebidos, no tempo t, por pelo menos uma fração \(\rho\) dos usuários honestos. Nota • A suposição acima é deliberadamente simples, mas também mais forte do que o necessário em nosso artigo.6 • Para simplificar, assumimos \(\rho\) = 1 e, portanto, deixamos de mencionar \(\rho\). • Presumimos pessimistamente que, desde que não viole a suposição do MP, o Adversário controla totalmente a entrega de todas as mensagens. Em particular, sem ser notado pelos honestos usuários, o Adversário pode decidir arbitrariamente qual jogador honesto recebe qual mensagem quando, e acelerar arbitrariamente a entrega de qualquer mensagem que desejar.7

従来の設定における BA プロトコル BA⋆

すでに強調したように、ビザンチン協定は Algorand の重要な要素です。確かに、それは通ります Algorand がフォークの影響を受けないような BA プロトコルの使用。ただし、私たちの攻撃に対して安全を確保するために、 強力な敵対者 Algorand は、新しいプレーヤーの置き換え可能性を満たす BA プロトコルに依存する必要があります 制約。さらに、Algorand を効率的にするには、そのような BA プロトコルが非常に効率的である必要があります。 BA プロトコルは、同期完全な理想的な通信モデルのために最初に定義されました。 ネットワーク (SC ネットワーク)。このようなモデルにより、BA プロトコルの設計と分析がより簡単になります。 6正直なパーセンテージ h と許容可能な失敗確率 F が与えられると、Algorand は上限 N を計算します。 ステップ内の検証者のメンバーの最大数まで。したがって、MP 仮定は n \(\leq\) N の場合にのみ成立する必要があります。 さらに、前述したように、MP の仮定は、他のメッセージがどれだけ多くても一緒に伝播される可能性があります。 mjさん。ただし、Algorand でわかるように、メッセージは基本的に重複しない時間で伝播されます。 間隔。その間、単一のブロックが伝播されるか、最大 N 個の検証者が小さなブロック (例: 200B) を伝播します。 メッセージ。したがって、MP の仮定をより弱い、しかしより複雑な方法で言い直すことができます。 7たとえば、彼は正直なプレイヤーが送信したメッセージをすぐに知ることができます。したがって、悪意のあるユーザー i' は、 正直なユーザー i と同時にメッセージを伝播するように求められますが、常に以下に基づいて自分のメッセージ m' を選択できます。 メッセージ m は実際に i によって伝播されます。この能力は、分散計算の用語で言えば、ラッシングに関連しています。 文学。したがって、このセクションでは、SC ネットワーク用の新しい BA プロトコル BA⋆ を導入し、 選手の入れ替え可能性の問題。プロトコル BA⋆ は別の値の貢献です。 実際、これは、これまでに知られている SC ネットワーク用の最も効率的な暗号化 BA プロトコルです。 Algorand プロトコル内で使用するには、異なるものを考慮して BA⋆を少し変更します。 通信モデルとコンテキスト。ただし、セクション X で、BA⋆がどのように使用されるかを強調するようにしてください。 実際のプロトコル Algorand 内。 まず、BA⋆が動作するモデルとビザンチン協定の概念を思い出すことから始めます。 3.1 同期の完全なネットワークと一致する敵対者 SC ネットワークには共通のクロックがあり、整数時間 r = 1、2、... ごとに時を刻みます。 。 。 偶数の時間に r をクリックするたびに、各プレーヤー i は単一のメッセージを瞬時に同時に送信します。 メッセージミスター i,j (おそらく空のメッセージ) を各プレイヤー j (自分自身を含む) に送信します。各氏 i、jが受信されます 同時に、プレイヤー j が送信者 i の身元とともに r + 1 をクリックします。 繰り返しますが、通信プロトコルでは、規定されたすべてに従えば、プレーヤーは正直です。 指示、それ以外の場合は悪意があります。すべての悪意のあるプレイヤーは完全に制御され、完璧に制御されます 敵対者によって調整され、特に、次の宛先のすべてのメッセージを即座に受信します。 悪意のあるプレーヤーを攻撃し、彼らが送信するメッセージを選択します。 敵対者は、悪意のある誠実なユーザーをいつでも、いつでもすぐにクリックさせることができます。 彼は、悪意のあるプレイヤーの数の可能な上限にのみ従うことを望んでいます。つまり、 敵対者は「正直なユーザー i によってすでに送信されたメッセージを妨害することはできません」。 通常通り配達されました。 敵対者は、各偶数ラウンドで瞬時に、 現在正直なプレイヤーが送信するメッセージを収集し、この情報を即座に使用して選択します。 悪意のあるプレイヤーが同時に送信するメッセージもチェックされます。 備考 • 敵対勢力。上記の設定は非常に敵対的です。実際、ビザンチン協定では 文学では、多くの設定がそれほど敵対的ではありません。ただし、さらに敵対的な設定もあります。 敵対者が、正直なプレイヤーから送信されたメッセージを見た後、私を攻撃する場合も考慮されます。 任意のタイミングで「r」をクリックすると、これらすべてのメッセージをネットワークから即座に消去できます。 破損した私は、r をクリックするときに悪意のある私が送信するメッセージを選択して、それらに送信してもらいます 通常通り配達されました。敵対者の予想される力は、私たちの設定で彼が持っているものと一致します。 • 物理的な抽象化。想定される通信モデルは、より物理的なモデルを抽象化したものです。 ここでは、プレーヤーの各ペア (i、j) が個別のプライベート通信回線 li、j によってリンクされます。 つまり、他の誰も、送信されたメッセージに関する情報を挿入したり、干渉したり、取得したりすることはできません。 リー、ジェイ。敵対者が li,j にアクセスする唯一の方法は、i または j を破壊することです。 • プライバシーと認証。 SC ネットワークでは、メッセージのプライバシーと認証が保証されます 仮定によります。対照的に、私たちの通信ネットワークでは、メッセージが伝播されます。 ピアツーピアでは、認証はデジタル署名によって保証され、プライバシーは存在しません。 したがって、プロトコル BA⋆を設定に採用するには、交換される各メッセージにデジタル署名が必要です (送信された状態をさらに特定します)。幸いなことに、私たちが提供する BA プロトコルは、 メッセージのプライバシーを必要としない Algorand での使用を検討してください。3.2 ビザンチン協定の概念 ビザンチン協定の概念は、ピーズ・ショスタクとランポート [31] によって導入されました。 バイナリの場合、つまり、すべての初期値がビットで構成される場合。しかし、すぐに延長されました 任意の初期値に設定します。 (Fischer [16] および Chor および Dwork [10] の調査を参照してください。) BA による プロトコルとは、任意の値のプロトコルを意味します。 定義 3.1.同期ネットワークでは、P を n プレーヤー プロトコルとし、そのプレーヤー セットは共通です。 t は、n \(\geq\) 2t + 1 となる正の整数です。 P は 任意の値 (それぞれバイナリ) (n, t) - 健全性 \(\sigma\) \(\in\)(0, 1) を持つビザンチン合意プロトコル 特殊記号 \(\bot\) を含まないすべての値 V のセットについて (それぞれ、V = {0, 1} の場合)、 最大でも t 人のプレイヤーが悪意を持っており、すべてのプレイヤーが 初期値 vi \(\in\)V 、すべての正直なプレイヤー j は確率 1 で停止し、outi \(\in\)V \(\cup\){\(\bot\)} の値を出力します。 少なくとも \(\sigma\) の確率で、次の 2 つの条件を満たすようにします。 1. 同意: すべての正直なプレイヤー i に対して outi = out となる out \(\in\)V \(\cup\){\(\bot\)} が存在します。 2. 一貫性: ある値 v \(\in\)V について、すべての正直なプレイヤーに対して vi = v の場合、out = v になります。 out を P の出力と呼び、各 outi をプレーヤー i の出力と呼びます。 3.3 BA 表記番号 BA プロトコルでは、プレイヤーは何人のプレイヤーが自分に特定のメッセージを送信したかを数える必要があります。 与えられたステップ。したがって、送信される可能性のある値 v ごとに、

s

i(v) (または、s がクリアの場合は単に #i(v)) は、i がステップ s で v を受け取ったプレイヤー j の数です。 プレーヤー i が各プレーヤー j からちょうど 1 つのメッセージを受信することを思い出してください。 プレイヤーが n の場合、すべての i と s に対して P v#s i(v) = n。 3.4 バイナリ BA プロトコル BBA⋆ このセクションでは、より多くの正直さに依存する新しいバイナリ BA プロトコル、BBA⋆ を紹介します。 プレイヤーの 3 分の 2 よりも多く、非常に高速です。悪意のあるプレイヤーが何をしようとも、 メインループが実行されるたびに、プレイヤーは確率 1/3 で一致します。 各プレーヤーは、一意の署名を満たすデジタル署名スキームの独自の公開鍵を持っています。 財産。このプロトコルは同期完全ネットワーク上で実行されることを目的としているため、 プレイヤーにメッセージのそれぞれに署名してもらう必要があります。 デジタル署名は、ステップ 3 で十分に共通なランダム ビットを生成するために使用されます。(Algorand では、 デジタル署名は、他のすべてのメッセージの認証にも同様に使用されます。) このプロトコルには最小限のセットアップが必要です。つまり、プレイヤーの意思とは独立した共通のランダム文字列 r です。 キー。 (Algorand では、r は実際には数量 Qr に置き換えられます。) プロトコル BBA⋆ は 3 ステップのループであり、プレイヤーはブール値を繰り返し交換し、 異なるプレイヤーが異なるタイミングでこのループを終了する可能性があります。プレイヤー i は伝播することでこのループを終了します。 あるステップで、特別な値 0 または特別な値 1 のいずれかが与えられ、それによってすべてのプレイヤーに次のように指示されます。 「ふり」すると、将来のすべてのステップで i からそれぞれ 0 と 1 を受け取ります。 (別の言い方: 仮定するプレーヤー j が別のプレーヤー i から受け取った最後のメッセージはビット b でした。その後、どの段階でも この場合、彼は i からメッセージを何も受け取らず、j はあたかも私が彼にビット b を送信したかのように動作します。) このプロトコルは、3 ステップのループが実行された回数を表すカウンター \(\gamma\) を使用します。 BBA⋆ の開始時、\(\gamma\) = 0。 (\(\gamma\) はグローバルカウンターと考えるかもしれませんが、実際には増加します) ループが実行されるたびに、各プレイヤーが実行します)。 n \(\geq\) 3t + 1 が存在します。ここで、t は悪意のあるプレーヤーの最大可能数です。バイナリ 文字列 x は、バイナリ表現 (先頭に 0 が付く可能性あり) が x である整数で識別されます。 lsb(x) は x の最下位ビットを示します。 プロトコルBBA⋆ (コミュニケーション) ステップ 1. [Coin-Fixed-To-0 Step] 各プレイヤー i は、bi を送信します。 1.1 #1の場合 i (0) \(\geq\)2t + 1 の場合、i は bi = 0 に設定し、0* を送信し、outi = 0 を出力します。 そして停止します。 1.2 #1 の場合 i (1) \(\geq\)2t + 1 の場合、i は bi = 1 に設定されます。 1.3 それ以外の場合、i は bi = 0 を設定します。 (コミュニケーション) ステップ 2. [Coin-Fixed-To-1 Step] 各プレイヤー i は、bi を送信します。 2.1 #2の場合 i (1) \(\geq\)2t + 1 の場合、i は bi = 1 に設定されます。 1∗ を送信します。 出力 outi = 1、 そして停止します。 2.2 #2の場合 i (0) \(\geq\)2t + 1 の場合、bi = 0 を設定します。 2.3 それ以外の場合、i は bi = 1 に設定されます。 (通信) ステップ 3. [コインを実際に投げるステップ] 各プレイヤー i は、bi と SIGi(r, \(\gamma\)) を送信します。 3.1 #3 の場合 i (0) \(\geq\)2t + 1 の場合、i は bi = 0 に設定されます。 3.2 #3 の場合 i (1) \(\geq\)2t + 1 の場合、i は bi = 1 に設定されます。 3.3 それ以外の場合、Si = {j \(\in\)N このステップ 3 で i に適切なメッセージを送信した人 } とすると、 i は bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))) を設定します。 \(\gamma\)i を 1 増加させます。そしてステップ1に戻ります。 定理3.1。 n \(\geq\)3t + 1 の場合、BBA⋆ は健全性 1 のバイナリ (n, t)-BA プロトコルです。 定理 3.1 の証明は [26] で与えられます。私たちの設定への適応性とプレーヤーの置き換え可能性 プロパティは斬新です。 歴史的発言 確率的バイナリ BA プロトコルは、Ben-Or によって最初に提案されました。 非同期設定 [7]。プロトコル BBA⋆ は、公開鍵設定に合わせて、 Feldman と Micali のバイナリ BA プロトコル [15]。彼らのプロトコルは、予想通りに機能したのは初めてでした。 一定のステップ数。プレイヤー自身が共通のコインを実装することで機能しましたが、 Rabin によって提案された概念で、外部の信頼できるパーティ [32] を通じて実装されました。3.5 段階的コンセンサスとプロトコル GC 任意の値について、ビザンチンの合意よりもはるかに弱い合意の概念を思い出してみましょう。 定義 3.2. P を、すべてのプレーヤーの集合が共通の知識であるプロトコルとします。 プレイヤー i は任意の初期値 v' を個人的に知っています 私。 n 人のプレイヤーによるすべての実行において、 そのほとんどが悪意のあるものであるため、すべての正直なプレイヤーは値とグレードのペア (vi、gi) の出力を停止します。 ここで、gi \(\in\){0, 1, 2} として、次の 3 つの条件を満たすようにします。 1. すべての正直なプレイヤー i と j に対して、 |gi −gj| \(\leq\)1。 2. すべての正直なプレイヤー i と j の場合、gi、gj > 0 ⇒vi = vj。 3. v'の場合 1 = \(\cdots\) = v' ある値 v については n = v、すべての正直なプレイヤー i については vi = v および gi = 2 となります。 歴史的メモ 段階的コンセンサスの概念は、単に段階的コンセンサスの概念から派生したものです。 十字軍の概念を強化することによって、[15] にフェルドマンとミカリによって提案された放送 Dolev [12] によって導入され、Turpin と Coan [33] によって洗練された合意。8 [15] では、著者らは、3 ステップ (n, t) で等級分けされたブロードキャスト プロトコル、グレードキャストも提供しました。 n≧3t+1。 n > 2t+1 のより複雑な (n, t) 段階ブロードキャスト プロトコルが後に発見されました。 カッツとクー [19] 著。 次の 2 ステップ プロトコル GC は、グレードキャストの最後の 2 ステップで構成されており、次のように表されます。 表記。この事実を強調し、セクション 4.1 のプロトコル Algorand の手順と一致させるために、次のようにします。 2 と 3 はそれぞれ GC のステップに名前を付けます。 プロトコル GC ステップ 2. 各プレイヤー i は v' を送信します プレイヤーの皆様へ。 ステップ 3. #2 の場合にのみ、各プレイヤー i がすべてのプレイヤーに文字列 x を送信します。 i (x) ≧ 2t + 1。 出力の決定。各プレーヤー i は、次のように計算されたペア (vi, gi) を出力します。 • ある x について #3 の場合 i (x) \(\geq\)2t + 1 の場合、vi = x および gi = 2 となります。 • ある x について #3 の場合 i (x) \(\geq\)t + 1 の場合、vi = x および gi = 1 となります。 • それ以外の場合、vi = \(\bot\)かつ gi = 0。 定理3.2。 n \(\geq\)3t + 1 の場合、GC は (n, t) 等級のブロードキャスト プロトコルです。 この証明は、[15] のプロトコル グレードキャストの証明の直後に続くため、省略されています。9 8 本質的に、段階的放送プロトコルでは、(a) すべてのプレーヤーの入力が、著名なプレーヤーの ID になります。 追加のプライベート入力として任意の値 v を持つ送信者であるプレーヤー、および (b) 出力は次の条件を満たす必要があります。 段階的コンセンサスの同じ特性 1 と 2 に加えて、次の特性 3': 送信者が正直であれば、vi = v、および すべての正直なプレイヤー i の場合、gi = 2。 9実際、彼らのプロトコルでは、ステップ 1 で、送信者は自分のプライベート値 v をすべてのプレーヤーに送信し、各プレーヤーに私が送信できるようにします。 v' i は、ステップ 1 で送信者から実際に受け取った値で構成されます。3.6 プロトコルBA⋆ ここで、バイナリ BA プロトコル BBA⋆ を介した任意値 BA プロトコル BA⋆ と、 段階的コンセンサス プロトコル GC。以下、各プレイヤー i の初期値は v' 私。 プロトコルBA⋆ ステップ 1 と 2。各プレーヤー i は、入力 v' で GC を実行します。 i、ペア (vi, gi) を計算するため。 ステップ3、. 。 。各プレイヤー i は、gi = 2 の場合は初期入力 0、それ以外の場合は 1 で BBA⋆ を実行します。 ビットoutiを計算するために。 出力の決定。各プレイヤー i は、outi = 0 の場合は vi を出力し、それ以外の場合は \(\bot\) を出力します。 定理3.3。 n \(\geq\)3t + 1 の場合、BA⋆ は健全性 1 の (n, t)-BA プロトコルです。 証拠。まず一貫性を証明し、次に一致を証明します。 一貫性の証明。ある値 v \(\in\)V 、 v' について仮定します。 i = v. 次に、次の性質 3 により、 段階的コンセンサス。GC の実行後、すべての正直なプレイヤーが (v, 2) を出力します。したがって、0は BBA⋆ の実行終了時のすべての正直なプレイヤーの最初のビット。したがって、本契約により、 バイナリ ビザンチン協定の特性、BA⋆ の実行終了時、すべての正直者に対して outi = 0 選手たち。これは、BA⋆ における各正直なプレイヤー i の出力が vi = v であることを意味します。 ✷ 同意の証明。 BBA⋆はバイナリBAプロトコルであるため、次のいずれかです。 (A) すべての正直なプレイヤー i に対して outi = 1、または (B) すべての正直なプレイヤー i に対して outi = 0。 ケース A では、すべての正直なプレイヤーが \(\bot\)in BA⋆ を出力するため、合意が成立します。ここでケース B を考えてみましょう。 この場合、BBA⋆ の実行では、少なくとも 1 人の正直なプレイヤー i の初期ビットは 0 です。 すべての正直なプレイヤーの初期ビットが 1 であった場合、BBA⋆ の Consistency プロパティにより、次のようになります。 すべての正直な j について outj = 1。) したがって、GC の実行後、i はいくつかのペア (v, 2) を出力します。 値 v。したがって、段階的コンセンサスの特性 1 により、すべての正直なプレイヤー j について gj > 0 となります。したがって、 段階的コンセンサスの特性 2、すべての正直なプレーヤーの vj = v j。これは、次のことを意味します。 BA⋆、すべての正直なプレイヤー j は v を出力します。したがって、合意はケース B にも当てはまります。 ✷ 一貫性と一致性の両方が成立するため、BA⋆は任意の値のBAプロトコルです。 歴史的メモ Turpin と Coan は、n \(\geq\)3t+1 の場合、任意の 2 値 (n, t)-BA が成り立つことを最初に示しました。 プロトコルは、任意の値の (n, t)-BA プロトコルに変換できます。リダクション任意値 段階的コンセンサスを介したビザンチン協定からバイナリビザンチン協定への移行は、よりモジュール化されており、 Algorand プロトコル Algorand ' の分析がよりクリーンになり、簡素化されます。 Algorand で使用するための BA⋆の一般化 Algorand は、すべての通信が経由の場合でも機能します。 うわさ話。ただし、従来の使い慣れた通信ネットワークで表示されているにもかかわらず、 従来技術との比較を容易にし、理解を容易にするため、プロトコル BA⋆works うわさ話ネットワークでも。実際、Algorand の詳細な実施形態では、それを提示します。 ゴシップネットワークに直接。また、プレーヤーの交換可能性を満たしていることも指摘します。 これは、想定される非常に敵対的なモデルで Algorand を安全にするために重要です。

うわさ通信ネットワークで動作する BA プレーヤーで置き換え可能なプロトコルはすべて、 本発明のAlgorandシステム内で安全に使用される。特にミカリとヴァイクンタナタン BA⋆は、単純に大多数の正直なプレイヤーに対しても非常に効率的に動作するように拡張しました。それ プロトコルも Algorand で使用できます。

O protocolo BA BA⋆ em um ambiente tradicional

Como já enfatizado, o acordo bizantino é um ingrediente chave de Algorand. Na verdade, é através o uso de um protocolo BA que Algorand não seja afetado por bifurcações. No entanto, para estarmos seguros contra os nossos Adversário poderoso, Algorand deve contar com um protocolo BA que satisfaça a nova capacidade de substituição do jogador restrição. Além disso, para que Algorand seja eficiente, tal protocolo BA deve ser muito eficiente. Os protocolos BA foram definidos pela primeira vez para um modelo de comunicação idealizado, síncrono completo redes (redes SC). Tal modelo permite um projeto e análise mais simples de protocolos BA. 6Dada a porcentagem honesta h e a probabilidade de falha aceitável F, Algorand calcula um limite superior, N, ao número máximo de membros dos verificadores em uma etapa. Assim, a suposição de MP só precisa ser válida para n \(\leq\)N. Além disso, como afirmado, a suposição de MP é válida, não importa quantas outras mensagens possam ser propagadas ao lado o mj. Como veremos, entretanto, em Algorand as mensagens são propagadas em tempo essencialmente não sobreposto intervalos, durante os quais um único bloco é propagado, ou no máximo N verificadores propagam um pequeno (por exemplo, 200B) mensagem. Assim, poderíamos reafirmar o pressuposto do MP de uma forma mais fraca, mas também mais complexa. 7Por exemplo, ele pode aprender imediatamente as mensagens enviadas por jogadores honestos. Assim, um usuário malicioso i′, que é solicitado a propagar uma mensagem simultaneamente com um usuário honesto i, pode sempre escolher sua própria mensagem m′ com base em a mensagem m realmente propagada por i. Essa habilidade está relacionada à pressa, no jargão da computação distribuída literatura.Assim, nesta seção, apresentamos um novo protocolo BA, BA⋆, para redes SC e ignorando a questão da substituibilidade do jogador. O protocolo BA⋆é uma contribuição de valor separado. Na verdade, é o protocolo BA criptográfico mais eficiente para redes SC conhecido até agora. Para usá-lo em nosso protocolo Algorand, modificamos BA⋆ um pouco, de modo a levar em conta nossos diferentes modelo de comunicação e contexto, mas certifique-se, na seção X, de destacar como BA⋆é usado dentro do nosso protocolo real Algorand ′. Começamos por relembrar o modelo em que BA⋆opera e a noção de acordo bizantino. 3.1 Redes Síncronas Completas e Adversários Correspondentes Em uma rede SC, existe um relógio comum, marcando a cada tempo integral r = 1, 2, . . . A cada clique par em r, cada jogador i envia instantânea e simultaneamente um único mensagem senhor i,j (possivelmente a mensagem vazia) para cada jogador j, incluindo ele mesmo. Cada senhor i,j é recebido naquele momento clique em r + 1 do jogador j, junto com a identidade do remetente i. Novamente, num protocolo de comunicação, um jogador é honesto se seguir todas as instruções prescritas. instruções e malicioso de outra forma. Todos os jogadores maliciosos são totalmente controlados e perfeitamente coordenado pelo Adversário, que, em particular, recebe imediatamente todas as mensagens dirigidas a jogadores maliciosos e escolhe as mensagens que eles enviam. O Adversário pode imediatamente tornar malicioso qualquer usuário honesto que ele quiser, a qualquer momento, clicar ele deseja, sujeito apenas a um possível limite máximo para o número de jogadores mal-intencionados. Isto é, o Adversário “não pode interferir nas mensagens já enviadas por um usuário honesto i”, o que será entregue normalmente. O Adversário também tem a capacidade adicional de ver instantaneamente, em cada rodada par, o mensagens que os jogadores atualmente honestos enviam e usam instantaneamente essas informações para escolher as mensagens que os jogadores maliciosos enviam ao mesmo tempo são marcadas. Observações • Poder Adversário. A configuração acima é muito contraditória. Na verdade, no acordo bizantino literatura, muitos ambientes são menos antagônicos. No entanto, algumas configurações mais adversárias também foi considerado, onde o Adversário, após ver as mensagens enviadas por um jogador honesto, em um determinado momento clique em r, tem a capacidade de apagar todas essas mensagens da rede, imediatamente corrupto i, escolha a mensagem que o agora malicioso i envia na hora clique em r, e faça com que eles entregue normalmente. O poder previsto do Adversário corresponde ao que ele tem em nosso cenário. • Abstração Física. O modelo de comunicação previsto abstrai um modelo mais físico, em que cada par de jogadores (i, j) está ligado por uma linha de comunicação separada e privada li,j. Ou seja, ninguém mais pode injetar, interferir ou obter informações sobre as mensagens enviadas. li, j. A única maneira de o Adversário ter acesso a li,j é corromper i ou j. • Privacidade e Autenticação. Nas redes SC a privacidade e a autenticação das mensagens são garantidas por suposição. Por outro lado, na nossa rede de comunicação, onde as mensagens são propagadas ponto a ponto, a autenticação é garantida por assinaturas digitais e a privacidade é inexistente. Assim, para adotar o protocolo BA⋆ ao nosso cenário, cada mensagem trocada deverá ser assinada digitalmente (identificando ainda o estado para o qual foi enviado). Felizmente, os protocolos BA que usamos considere usar em Algorand não requer privacidade de mensagem.3.2 A noção de um acordo bizantino A noção de acordo bizantino foi introduzida por Pease Shostak e Lamport [31] para o caso binário, isto é, quando todo valor inicial consiste em um bit. No entanto, foi rapidamente prorrogado para valores iniciais arbitrários. (Veja as pesquisas de Fischer [16] e Chor e Dwork [10].) Por um BA protocolo, queremos dizer um de valor arbitrário. Definição 3.1. Em uma rede síncrona, seja P um protocolo de n jogadores, cujo conjunto de jogadores é comum conhecimento entre os jogadores, t um número inteiro positivo tal que n \(\geq\)2t + 1. Dizemos que P é um valor arbitrário (respectivamente, binário) (n, t) - Protocolo de acordo bizantino com solidez \(\sigma\) \(\in\) (0, 1) se, para cada conjunto de valores V que não contém o símbolo especial \(\bot\) (respectivamente, para V = {0, 1}), em um execução em que no máximo t dos jogadores são maliciosos e em que cada jogador i começa com um valor inicial vi \(\in\)V , todo jogador honesto j para com probabilidade 1, gerando um valor outi \(\in\)V \(\cup\){\(\bot\)} de modo a satisfazer, com probabilidade pelo menos \(\sigma\), as duas condições seguintes: 1. Acordo: Existe out \(\in\)V \(\cup\){\(\bot\)} tal que outi = out para todos os jogadores honestos i. 2. Consistência: se, para algum valor v \(\in\)V , vi = v para todos os jogadores honestos, então out = v. Referimo-nos a out como saída de P e a cada outi como saída do jogador i. 3.3 A notação BA # Em nossos protocolos BA, um jogador é obrigado a contar quantos jogadores lhe enviaram uma determinada mensagem em um determinado passo. Assim, para cada valor possível v que possa ser enviado,

s

eu(v) (ou apenas #i(v) quando s estiver limpo) é o número de jogadores j dos quais i recebeu v na etapa s. Lembrando que um jogador i recebe exatamente uma mensagem de cada jogador j, se o número de jogadores é n, então, para todos i e s, P v#s eu(v) = n. 3.4 O Protocolo Binário BA BBA⋆ Nesta seção apresentamos um novo protocolo BA binário, BBA⋆, que depende da honestidade de mais mais de dois terços dos jogadores e é muito rápido: não importa o que os jogadores maliciosos possam fazer, cada execução de seu loop principal faz com que os jogadores concordem com a probabilidade 1/3. Cada jogador tem sua própria chave pública de um esquema de assinatura digital que satisfaz a assinatura única. propriedade. Como este protocolo se destina a ser executado em rede completa síncrona, não há necessidade de um jogador assinar cada uma de suas mensagens. Assinaturas digitais são usadas para gerar um bit aleatório suficientemente comum na Etapa 3. (Em Algorand, assinaturas digitais também são usadas para autenticar todas as outras mensagens.) O protocolo requer uma configuração mínima: uma string aleatória comum r, independente da posição dos jogadores. chaves. (Em Algorand, r é na verdade substituído pela quantidade Qr.) O protocolo BBA⋆é um loop de 3 etapas, onde os jogadores trocam repetidamente valores booleanos e diferentes jogadores podem sair deste ciclo em momentos diferentes. Um jogador i sai deste loop propagando, em alguma etapa, um valor especial 0∗ou um valor especial 1∗, instruindo assim todos os jogadores a “fingir” que recebem respectivamente 0 e 1 de i em todas as etapas futuras. (Alternativamente dito: assumirque a última mensagem recebida por um jogador j de outro jogador i foi um pouco b. Então, em qualquer passo em que ele não recebe nenhuma mensagem de i, j age como se eu tivesse enviado a ele o bit b.) O protocolo utiliza um contador \(\gamma\), representando quantas vezes seu loop de 3 etapas foi executado. No início do BBA⋆, \(\gamma\) = 0. (Pode-se pensar em \(\gamma\) como um contador global, mas na verdade é aumentado por cada jogador individual toda vez que o loop é executado.) Existem n \(\geq\)3t + 1, onde t é o número máximo possível de jogadores maliciosos. Um binário a string x é identificada com o inteiro cuja representação binária (com possíveis 0s iniciais) é x; e lsb(x) denota o bit menos significativo de x. Protocolo BBA⋆ (Comunicação) Etapa 1. [Coin-Fixed-To-0 Step] Cada jogador envia bi. 1.1 Se #1 i (0) \(\geq\)2t + 1, então i define bi = 0, envia 0∗, gera outi = 0, e PARA. 1.2 Se #1 i (1) \(\geq\)2t + 1, então, então i define bi = 1. 1.3 Caso contrário, i define bi = 0. (Comunicação) Etapa 2. [Coin-Fixed-To-1 Step] Cada jogador envia bi. 2.1 Se #2 i (1) \(\geq\)2t + 1, então i define bi = 1, envia 1∗, saídas outi = 1, e PARA. 2.2 Se #2 i (0) \(\geq\)2t + 1, então defino bi = 0. 2.3 Caso contrário, i define bi = 1. (Comunicação) Etapa 3. [Etapa da Moeda Genuinamente Invertida] Cada jogador i envia bi e SIGi(r, \(\gamma\)). 3.1 Se #3 i (0) \(\geq\)2t + 1, então i define bi = 0. 3.2 Se #3 i (1) \(\geq\)2t + 1, então i define bi = 1. 3.3 Caso contrário, deixando Si = {j \(\in\)N que enviou i uma mensagem adequada nesta etapa 3}, i define bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); aumenta \(\gamma\)i em 1; e retorna ao Passo 1. Teorema 3.1. Sempre que n \(\geq\)3t + 1, BBA⋆é um protocolo binário (n, t)-BA com solidez 1. Uma prova do Teorema 3.1 é dada em [26]. Sua adaptação ao nosso ambiente e sua capacidade de substituição do jogador propriedade são novos. Observação histórica Protocolos BA binários probabilísticos foram propostos pela primeira vez por Ben-Or em configurações assíncronas [7]. O protocolo BBA⋆é uma nova adaptação, para nossa configuração de chave pública, do protocolo BA binário de Feldman e Micali [15]. Seu protocolo foi o primeiro a funcionar da maneira esperada. número constante de etapas. Funcionou fazendo com que os próprios jogadores implementassem uma moeda comum, uma noção proposta por Rabin, que a implementou por meio de uma parte externa confiável [32].3.5 Consenso Graduado e Protocolo GC Recordemos, para valores arbitrários, uma noção de consenso muito mais fraca do que o acordo bizantino. Definição 3.2. Seja P um protocolo no qual o conjunto de todos os jogadores é de conhecimento comum, e cada jogador i conhece em particular um valor inicial arbitrário v′ eu. Dizemos que P é um protocolo de consenso com classificação (n, t) se, em cada execução com n jogadores, em a maioria dos quais são maliciosos, todo jogador honesto pára de produzir um par de valor-grau (vi, gi), onde gi \(\in\){0, 1, 2}, de modo a satisfazer as três condições a seguir: 1. Para todos os jogadores honestos i e j, |gi −gj| \(\leq\)1. 2. Para todos os jogadores honestos i e j, gi, gj > 0 ⇒vi = vj. 3. Se v′ 1 = \(\cdots\) =v′ n = v para algum valor v, então vi = v e gi = 2 para todos os jogadores honestos i. Nota Histórica A noção de consenso graduado é simplesmente derivada daquela de consenso graduado. transmitido, apresentado por Feldman e Micali em [15], ao fortalecer a noção de um cruzado acordo, conforme introduzido por Dolev [12], e refinado por Turpin e Coan [33].8 Em [15], os autores também forneceram um protocolo de transmissão graduado em 3 etapas (n, t), gradecast, para n \(\geq\)3t+1. Um protocolo de transmissão graduado (n, t) mais complexo para n> 2t + 1 foi encontrado posteriormente por Katz e Koo [19]. O seguinte protocolo GC de duas etapas consiste nas duas últimas etapas do gradecast, expressas em nosso notação. Para enfatizar este fato, e para corresponder às etapas do protocolo Algorand ′ da seção 4.1, nós nomeie respectivamente 2 e 3 as etapas do GC. Protocolo GC Passo 2. Cada jogador envia v′ eu para todos os jogadores. Etapa 3. Cada jogador i envia a todos os jogadores a string x se e somente se #2 eu(x) \(\geq\)2t + 1. Determinação de saída. Cada jogador i gera o par (vi, gi) calculado da seguinte forma: • Se, para algum x, #3 i (x) \(\geq\)2t + 1, então vi = x e gi = 2. • Se, para algum x, #3 eu (x) \(\geq\)t + 1, então vi = x e gi = 1. • Caso contrário, vi = \(\bot\) e gi = 0. Teorema 3.2. Se n \(\geq\)3t + 1, então GC é um protocolo de transmissão com classificação (n, t). A prova segue imediatamente aquela da classificação do protocolo em [15] e, portanto, é omitida.9 8Em essência, num protocolo de transmissão gradual, (a) a entrada de cada jogador é a identidade de um distinto jogador, o remetente, que tem um valor arbitrário v como uma entrada privada adicional, e (b) as saídas devem satisfazer o mesmas propriedades 1 e 2 do consenso graduado, mais a seguinte propriedade 3′: se o remetente for honesto, então vi = v e gi = 2 para todos os jogadores honestos i. 9Na verdade, no protocolo deles, na etapa 1, o remetente envia seu próprio valor privado v para todos os jogadores, e cada jogador i deixa v' consisto no valor que ele realmente recebeu do remetente na etapa 1.3.6 O Protocolo BA⋆ Descrevemos agora o protocolo BA de valor arbitrário BA⋆por meio do protocolo BA binário BBA⋆e o protocolo de consenso graduado GC. Abaixo, o valor inicial de cada jogador i é v′ eu. Protocolo BA⋆ Etapas 1 e 2. Cada jogador i executa GC, na entrada v′ i, para calcular um par (vi, gi). Etapa 3, . . . Cada jogador i executa BBA⋆ - com entrada inicial 0, se gi = 2, e 1 caso contrário - então como calcular o bit outi. Determinação de saída. Cada jogador i gera vi, se outi = 0, e \(\bot\)caso contrário. Teorema 3.3. Sempre que n \(\geq\)3t + 1, BA⋆é um protocolo (n, t)-BA com solidez 1. Prova. Primeiro provamos a consistência e depois a concordância. Prova de consistência. Suponha que, para algum valor v \(\in\)V , v′ i = v. Então, pela propriedade 3 de consenso graduado, após a execução do GC, todos os jogadores honestos produzem (v, 2). Assim, 0 é a parte inicial de todos os jogadores honestos no final da execução do BBA⋆. Assim, pelo Acordo propriedade do acordo bizantino binário, ao final da execução de BA⋆, outi = 0 para todos os honestos jogadores. Isto implica que a saída de cada jogador honesto i em BA⋆é vi = v. ✷ Prova de acordo. Como BBA⋆é um protocolo BA binário, (A) outi = 1 para todo jogador honesto i, ou (B) outi = 0 para todos os jogadores honestos i. No caso A, todos os jogadores honestos produzem \(\bot\)em BA⋆ e, portanto, o acordo é válido. Considere agora o caso B. Em neste caso, na execução de BBA⋆, o bit inicial de pelo menos um jogador honesto i é 0. (Na verdade, se inicial de todos os jogadores honestos fosse 1, então, pela propriedade Consistência do BBA⋆, teríamos outj = 1 para todos os j honestos.) Assim, após a execução do GC, i gera o par (v, 2) para alguns valor v. Assim, pela propriedade 1 do consenso graduado, gj > 0 para todos os jogadores honestos j. Assim, por propriedade 2 do consenso graduado, vj = v para todos os jogadores honestos j. Isto implica que, no final do BA⋆, todo jogador honesto j produz v. Assim, o acordo também é válido no caso B. ✷ Como tanto a Consistência quanto o Acordo são válidos, BA⋆é um protocolo BA de valor arbitrário. Nota Histórica Turpin e Coan foram os primeiros a mostrar que, para n \(\geq\)3t+1, qualquer binário (n, t)-BA O protocolo pode ser convertido em um protocolo de valor arbitrário (n, t)-BA. O valor arbitrário de redução O acordo bizantino para o acordo bizantino binário via consenso gradual é mais modular e mais limpo e simplifica a análise do nosso protocolo Algorand Algorand ′. Generalizando BA⋆para uso em Algorand Algorand funciona mesmo quando toda a comunicação é via fofocando. Contudo, embora apresentado numa rede de comunicação tradicional e familiar, por assim dizer para permitir uma melhor comparação com o estado da técnica e uma compreensão mais fácil, o protocolo BA⋆works também em redes de fofoca. Na verdade, em nossas concretizações detalhadas de Algorand, iremos apresentá-lo diretamente para redes de fofocas. Devemos também salientar que satisfaz a substituibilidade do jogador propriedade que é crucial para que Algorand esteja seguro no modelo muito adversário previsto.

Qualquer protocolo substituível por jogador BA trabalhando em uma rede de comunicação de fofoca pode ser empregado com segurança dentro do sistema inventivo Algorand. Em particular, Micali e Vaikunthanatan estenderam o BA⋆ para trabalhar de forma muito eficiente também com uma maioria simples de jogadores honestos. Isso o protocolo também pode ser usado em Algorand.

Algorand の 2 つの実施形態

説明したように、非常に高いレベルで、Algorand のラウンドは理想的には次のように進行します。まず、ランダムに 選ばれたユーザー、つまりリーダーが新しいブロックを提案し、回覧します。 (このプロセスには最初に 潜在的なリーダーを数人選び、少なくともかなりの時間は、 単一の共通リーダーが出現します。) 次に、ランダムに選択されたユーザーの委員会が選択され、 指導者が提案したブロックに関してビザンチン合意に達する。 (このプロセスには次のことが含まれます) BA プロトコルの各ステップは、個別に選択された委員会によって実行されます。) 合意されたブロック その後、委員会メンバーの指定されたしきい値 (TH) によってデジタル署名されます。これらのデジタル署名 が回覧されるため、どれが新しいブロックであるかが全員に保証されます。 (これには、 署名者の資格情報を確認し、新しいブロックの hash だけを認証して、全員が hash が明確になると、ブロックを学習することが保証されます。) 次の 2 つのセクションでは、Algorand、Algorand の 2 つの実施形態を示します。 1 と Algorand 」 2、 それは大多数の正直なユーザーの想定の下で動作します。セクション 8 では、これらを採用する方法を示します。 実施形態は、金銭の正直な多数派の仮定の下で機能する。 Algorand 」 1 は、委員会メンバーの 3 分の 2 以上が正直であることのみを想定しています。さらに、 Algorand 」 1、ビザンチン合意に達するためのステップ数は適切な上限に制限されている そのため、短期間で圧倒的な確率で合意に達することが保証されます。 固定ステップ数 (ただし、Algorand のステップよりも時間がかかる可能性があります) 2)。で 最後の段階までにまだ合意に達していないリモートケースでは、委員会は次の点で合意する。 空のブロック。常に有効です。 Algorand 」 2 は、委員会の誠実なメンバーの数が常に 2 よりも多いことを想定しています。 または固定しきい値 tH に等しい (これにより、圧倒的な確率で、少なくとも 委員会メンバーの 2/3 は正直です)。さらに、Algorand 」 2 ビザンチン協定により、 任意のステップ数で到達します (ただし、Algorand よりも短い時間で到達する可能性があります) 1)。 これらの基本的な実施形態の多くの変形を導き出すことは容易である。特に、次のことを考えると簡単です。 Algorand 」 2、Algorand を変更します 1 任意の方法でビザンチン協定に達することができるようにするため ステップ数。 両方の実施形態は、以下の共通のコア、表記法、概念、およびパラメータを共有する。 4.1 共通のコア 目的 理想的には、各ラウンド r について、Algorand は次の特性を満たします。 1. 完璧な正しさ。すべての正直なユーザーは同じブロック Br に同意します。 2. 完全性 1. 確率 1 では、Br のペイセット、PAY r は最大になります。10 10 ペイセットは有効な支払いを含むように定義されており、正直なユーザーは有効な支払いのみを行うように定義されているため、 PAY r には、すべての誠実なユーザーの「現在未払い」の支払いが含まれます。もちろん、完全な正しさを保証するだけでは簡単ではありません。誰もが常に公式を選択します。 ペイセット PAY r を空にします。ただし、この場合、システムの完全性は 0 になります。残念ながら、 完全な正確性と完全性の両方を保証すること 1 は、悪意のあるものが存在する場合には容易ではありません。 ユーザー。したがって、Algorand はより現実的な目標を採用しています。非公式に、h をパーセンテージを表すものとします。 正直なユーザーの割合、h > 2/3、Algorand の目標は 圧倒的な確率で、h に近い完全な正確性と完全性を保証します。 完全性よりも正確さを優先するのは合理的な選択であるように思えます。支払いは次の方法で処理されません。 あるラウンドは次のラウンドで処理できますが、可能であればフォークは避けるべきです。 主導されたビザンチン協定 完全な正確性は次のように保証されます。初めに ラウンド r では、各ユーザー i が自分の候補ブロック Br を構築します。 i 、その後、すべてのユーザーが Byzantine に到達します 1 つの候補ブロックについての合意。紹介のとおり、採用されている BA プロトコルには次のものが必要です。 2/3 の正直な多数派であり、プレーヤーは交代可能です。その各ステップは小規模で実行できます。 内部変数を共有しない、ランダムに選択された検証者のセット。 残念ながら、このアプローチには完全性の保証はありません。それはそうです、なぜなら候補者は 正直なユーザーのブロックは、おそらく互いにまったく異なります。したがって、最終的には、 合意されたブロックは、常に最大ではないペイセットを持つブロックである可能性があります。実際には、常にそうである可能性があります。 空のブロック、B\(\varepsilon\)、つまりペイセットが空のブロック。デフォルトの空のものでも構いません。 Algorand ' は、次のようにこの完全性の問題を回避します。まず、ラウンド r のリーダー \(\ell\)r を選択します。 次に、\(\ell\)r は自身の候補ブロック Br を伝播します。 \(\ell\)r.最終的にユーザーはブロックについて合意に達します 実際には\(\ell\)rから受け取ります。なぜなら、\(\ell\)r が正直であるときはいつでも、完全な正確性と完全性が保たれるからです。 1 両方が成り立つ場合、 Algorand ' は、\(\ell\)r が h に近い確率で正直であることを保証します。 (リーダーがいるとき 悪意がある場合、合意されたブロックが空のペイセットを持つブロックであるかどうかは気にしません。結局のところ、 悪意のあるリーダー\(\ell\)r は常に悪意を持って Br を選択する可能性があります \(\ell\)r を空のブロックにして、正直に言うと それを伝播させて、正直なユーザーに空のブロックへの同意を強制します。) リーダーの選択 Algorand では、r 番目のブロックは Br = (r, PAY r, Qr, H(Br−1) の形式になります。 冒頭ですでに述べたように、量 Qr−1 は次のように注意深く構築されます。 私たちの非常に強力な敵によって本質的に操作することはできません。 (このセクションの後半で、 これが当てはまる理由については、直感的に理解してください。) ラウンド r の開始時に、すべてのユーザーは次のことを知っています。 blockchain これまでのところ、B0、. 。 。 , Br−1、そこから彼らは前のすべてのラウンドのユーザーのセットを推定します。 は、PK1、 です。 。 。 、PKr−1。ラウンド r の潜在的なリーダーは、次のようなユーザー i です。 .H シギ r、1、Qr−1 \(\leq\)p 。 説明しましょう。 量 Qr−1 はブロック Br−1 の一部であるため、その基礎となることに注意してください。 署名スキームは一意性プロパティ SIGi を満たします r、1、Qr−1 一意のバイナリ文字列です i と r に関連付けられます。したがって、H はランダムな oracle であるため、H シギ r、1、Qr−1 はランダムな 256 ビットです i と r に一意に関連付けられた長い文字列。記号「。」 Hさんの前で シギ r、1、Qr−1 です 小数点 (この場合は 2 進数)、つまり ri \(\triangleq\).H シギ r、1、Qr−1 のバイナリ展開です i と r に一意に関連付けられた 0 から 1 までの 256 ビットのランダムな数。したがって、その確率は、 ri が p 以下であることは、本質的に p です。 (私たちの潜在的なリーダーの選択メカニズムは、 Micali と Rivest [28] の少額決済スキームからインスピレーションを得たものです。) 確率 p は、圧倒的な (つまり 1 −F) 確率で、少なくとも 1 つの確率が得られるように選択されます。 潜在的な検証者は正直です。 (実際であれば、p はそのような確率が最小になるように選択されます。)i は自分自身の署名を計算できる唯一の人であるため、i だけが実行できることに注意してください。 彼がラウンド 1 の潜在的な検証者であるかどうかを判断します。ただし、彼自身の資格を明らかにすることで、 \(\sigma\)r 私\(\triangleq\)SIGi r、1、Qr−1 、私はラウンド r の潜在的な検証者であることを誰にでも証明できます。 リーダー \(\ell\)r は、hash された資格情報が、 他のすべての潜在的なリーダー j の hashed 資格情報: つまり、H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j)。 悪意のある\(\ell\)r は自分の資格情報を明らかにしない可能性があるため、ラウンド r の正しいリーダーは、 決して知られることはなく、ありそうもない関係を除けば、\(\ell\)r がラウンド r の唯一のリーダーであることは確かです。 最後に、最後に重要な詳細を取り上げましょう。ユーザー i は潜在的なリーダーになる可能性があります (したがって、 ラウンド r のリーダー)は、彼が少なくとも k ラウンドの間システムに属していた場合に限ります。これにより保証されます Qr と将来のすべての Q 量の操作不可能性。実際、潜在的なリーダーの一人は、 実際にQrを決定します。 検証者の選択 ラウンド r の各ステップ s > 1 は、小さな検証者のセット SV r,s によって実行されます。 繰り返しますが、各検証者 i \(\in\)SV r,s は、システム k ラウンドに既に参加しているユーザーの中からランダムに選択されます。 r の前に、そして再び特殊量 Qr−1 を介して。具体的には、次の場合、i \(\in\)PKr−k は SV r,s の検証子です。 .H シギ r、s、Qr−1 \(\leq\)p' 。 もう一度言いますが、彼がSV r,sに属しているかどうかは私だけが知っていますが、もしこれが事実である場合、彼は次のようにしてそれを証明できるでしょう。 彼の資格 \(\sigma\)r,s を提示する 私は \(\triangleq\)H(シギ r、s、Qr−1 )。検証者 i \(\in\)SV r,s がメッセージ mr,s を送信します。 私は、で ラウンド r のステップ s、このメッセージには彼の資格情報 \(\sigma\)r,s が含まれます i 、検証者を有効にするため 次のステップで、ミスターのことを認識します。 私は は正当なステップメッセージです。 確率 p' は、SV r,s において #good を 正直なユーザーと #bad 悪意のあるユーザーの数では、圧倒的な確率で次のような結果になります。 という2つの条件が成立します。 実施形態 Algorand の場合 1: (1) #良い > 2 \(\cdot\) #悪い および (2) #good + 4 \(\cdot\) #bad < 2n、n は SV r,s の予想されるカーディナリティです。 実施形態 Algorand の場合 2: (1) #good > thH および (2) #good + 2#bad < 2tH、ここで tH は指定されたしきい値です。 これらの条件は、十分に高い確率で、(a) BA の最後のステップで、 プロトコルに従うと、新しいブロック Br にデジタル署名する正直なプレイヤーが少なくとも一定数存在します。 (b) 必要な数の署名を持つことができるのはラウンドごとに 1 つのブロックのみ、および (c) 使用される BA プロトコルは(各ステップで)必要な 2/3 の正直な過半数を持っています。 ブロック生成の明確化 ラウンド r リーダー \(\ell\)r が正直であれば、対応するブロックは という形です Br = r、PAY r、SIG\(\ell\)r Qr−1 、H Br−1 、 ここで、ペイセット PAY r は最大です。 (すべてのペイセットは、定義上、集合的に有効であることを思い出してください。) それ以外の場合 (つまり、\(\ell\)r が悪意のある場合)、Br は次の 2 つの可能な形式のいずれかになります。 Br = r、ペイ、r、SIGi Qr−1 、H Br−1 そして Br = Br \(\varepsilon\) \(\triangleq\) r、\(\emptyset\)、Qr−1、H Br−1 。最初の形式では、PAY r は (必ずしも最大ではない) ペイセットであり、PAY r = \(\emptyset\) となる可能性があります。そして私は ラウンドrのリーダー候補。 (ただし、私はリーダーではないかもしれません。) \(\ell\)r は自分の資格を秘密にし、自分自身を明らかにしません。) 2 番目の形式は、BA プロトコルのラウンド R 実行において、すべての正直なプレイヤーが デフォルト値、つまり空のブロック Br を出力します。 私たちのアプリケーションでは\(\varepsilon\)です。 (定義上、可能性があるのは、 BA プロトコルの出力には、一般に \(\bot\) で示されるデフォルト値が含まれます。セクション 3.2 を参照してください。) どちらの場合もペイセットは空ですが、Br = r、\(\emptyset\)、SIGi Qr−1 、H Br−1 そしてBr \(\varepsilon\) は構文的に異なるブロックであり、2 つの異なる状況で発生します。それぞれ、「すべて」 BA プロトコルの実行は十分にスムーズに進みました」、および「プロトコルで何か問題が発生しました」 BAプロトコルであり、デフォルト値が出力されました。」 ここで、 Algorand ' のラウンド r でブロック Br の生成がどのように進行するかを直感的に説明しましょう。 最初のステップでは、各適格なプレーヤー、つまり各プレーヤー i \(\in\)PKr−k が、自分が潜在的なプレーヤーであるかどうかを確認します。 リーダー。これが事実である場合、私は、彼がこれまでに見たすべての支払いを使用して尋ねられます。 現在のblockchain、B0、. 。 。 , Br−1、最大支払いセット PAY r を密かに準備します。 私は、そして密かに 候補ブロック Br = を組み立てます。 r、支払いr 私、シギ Qr−1 、H Br−1 。つまり、彼はそうするだけでなく、 Brに含める i 、その 2 番目のコンポーネントとして、準備されたばかりのペイセットですが、また、その 3 番目のコンポーネントとして、 最後のブロック Br-1 の 3 番目のコンポーネントである Qr-1 の彼自身の署名。最後に、彼は自分の考えを広めます。 ラウンド R ステップ 1 メッセージ、mr,1 i 、これには (a) 彼の候補ブロック Br が含まれます。 i 、(b) 彼の適切な署名 彼の候補者ブロックの署名 (つまり、Br の hash の署名) i 、および (c) 彼自身の資格情報 \(\sigma\)r,1 私は証明します 彼が確かにラウンド R の潜在的な検証者であることを。 (正直な私がメッセージを提出するまで注意してください、mr,1 私、敵対者は私が 潜在的な検証者。彼が正直な潜在的な指導者を堕落させたいのであれば、敵対者も同様にそうするかもしれない。 腐敗したランダムな正直なプレイヤー。しかし、ひとたびミスター1を見ると、 i には i の資格情報が含まれているため、 敵対者は i を破壊することを知っており、破壊する可能性がありますが、mr,1 を防ぐことはできません。 i はウイルスによって伝播され、から システム内のすべてのユーザーに到達します。) 2 番目のステップでは、選択された各検証者 j \(\in\)SV r,2 がラウンドのリーダーを識別しようとします。 具体的には、j はステップ 1 の資格情報 \(\sigma\)r,1 を取得します。 i1、. 。 。 、\(\sigma\)r,1 に、適切なステップ 1 メッセージ mr,1 に含まれています 私は 彼は受け取りました。 hashes、つまり H を計算します  \(\sigma\)r,1 i1  、。 。 。 、H  \(\sigma\)r,1 で  ;資格情報を見つけて、 \(\sigma\)r,1 \(\ell\)j 、その hash は辞書編集上最小です。 \(\ell\)rを考慮します j がラウンド r のリーダーになります。 考慮される各資格情報は Qr-1 のデジタル署名であることを思い出してください。 r、1、Qr−1 です i と Qr−1 によって一意に決定され、H はランダム oracle であるため、各 H(SIGi r、1、Qr−1 は、ラウンド r の潜在的な各リーダー i に固有のランダムな 256 ビット長の文字列です。 このことから、256 ビット文字列 Qr−1 自体がランダムかつ独立して存在する場合、次のように結論付けることができます。 選択されると、ラウンド r の潜在的なリーダー全員の hash された資格情報が取得されます。実際、すべて 潜在的なリーダーは明確に定義されており、その資格情報(実際に計算されたものであるかどうかにかかわらず)も同様です。 ではありません)。さらに、ラウンド r の潜在的なリーダーのセットは、ラウンドのユーザーのランダムなサブセットです。 r −k、そして誠実な潜在的なリーダーである私は、常に彼のメッセージを適切に構築し、広めます、mr 私、 これには i の資格情報が含まれています。したがって、正直なユーザーの割合は h であるため、 悪意のある潜在的なリーダーが行う可能性があるもの (例: 自分の資格情報を明らかにしたり隠したり)、最低限の hashed 潜在的リーダー資格情報は誠実なユーザーに属し、必然的に全員が識別します ラウンドrのリーダー\(\ell\)rになる。したがって、256 ビット文字列 Qr−1 自体がランダムであり、 独立に選択され、確率は正確に h (a) リーダー \(\ell\)r は正直であり、(b) リーダー \(\ell\)r はすべてのリーダー \(\ell\)j = \(\ell\)r 正直なステップ 2 検証者 j. 実際には、hash された資格情報はランダムに選択されますが、Qr-1 に依存します。無作為かつ独立して選択されたものではありません。ただし、分析では Qr−1 が ラウンドのリーダーが確率に対して誠実であることを保証するために十分に操作不可能である h' は h に十分に近い、つまり h' > h2(1 + h −h2) です。たとえば、h = 80% の場合、h' > .7424 になります。 ラウンドのリーダーを特定したら (リーダーが正直であれば、これは正しく行われます)、 ステップ 2 検証者のタスクは、彼らが信じているものを初期値として使用して BA の実行を開始することです。 リーダーのブロックになります。実は、必要な通信量を最小限に抑えるために、 検証者 j \(\in\)SV r,2 は、入力値 v' として使用しません。 j をビザンチン プロトコルに変換するブロック Bj 彼は実際に \(\ell\)j (ユーザー j がリーダーであると信じている) から受け取りましたが、リーダーではありますが、 そのブロックの hash、つまり v' j = H(Bi)。したがって、BA プロトコルが終了すると、検証者は 最後のステップでは、目的のラウンド r ブロック Br を計算するのではなく、計算 (認証と 伝播) H(Br)。したがって、H(Br) は十分に多くの検証者によってデジタル署名されているため、 BA プロトコルの最後のステップで、システム内のユーザーは、H(Br) が新しいプロトコルの hash であることに気づきます。 ブロック。ただし、実行は完全に非同期なので、取得する (または待機する) 必要もあります。 Br 自体をブロックします。敵対者が何であれ、プロトコルによって実際に利用可能であることが保証されます。 できるかもしれない。 非同期とタイミング Algorand 」 1 と Algorand 」 2 にはかなりの程度の非同期性があります。 これは、敵対者がメッセージの配信スケジュールを大幅に自由に設定できるためです。 伝播した。さらに、ラウンド内の総ステップ数に上限があるかどうかに関係なく、 分散は、実際に実行されたステップ数によって決まります。 B0 の証明書を知るとすぐに、. 。 。 、Br−1、ユーザー i が Qr−1 を計算し、作業を開始します。 ラウンド r で、彼が潜在的なリーダーであるか、ラウンド r のいくつかのステップで検証者であるかをチェックします。 議論された非同期性を考慮して、ステップ s で行動しなければならないと仮定すると、さまざまな依存します。 行動する前に十分な情報を確実に得られるようにするための戦略。 たとえば、彼は、検証者から少なくとも指定された数のメッセージを受信するのを待つかもしれません。 前のステップに進むか、メッセージが十分に受信されることを確認するために十分な時間を待ちます。 前のステップの多くの検証者。 シード Qr とルックバック パラメータ k 理想的には、Qr の量は次のとおりであることを思い出してください。 ランダムで独立していますが、それらは十分に操作不可能であれば十分です。 敵対者。 一見すると、H と一致するように Qr−1 を選択できます。 PAY r−1 したがって、次のことは避けてください。 Br-1 で Qr-1 を明示的に指定します。ただし、基本的な分析により、悪意のあるユーザーが この選択メカニズムを利用してください。11 追加の努力により、他の無数の 11ラウンド r −1 の開始点にいます。したがって、Qr−2 = PAY r−2 は公に知られており、敵対者は非公開です。 彼がコントロールする潜在的なリーダーが誰であるかを知っています。 敵対者がユーザーの 10% を制御していると仮定します。 非常に高い確率で、悪意のあるユーザー w がラウンド r -1 の潜在的なリーダーである可能性があります。つまり、次のように仮定します H SIGw r−2、1、Qr−2 非常に小さいため、誠実な潜在的なリーダーが実際にリーダーになる可能性は非常に低いです。 ラウンド r −1 のリーダー。 (私たちは秘密の暗号による選別メカニズムを介して潜在的なリーダーを選択しているため、 敵対者は、誠実な潜在的リーダーが誰であるかを知りません。) したがって、敵対者は、うらやましい状況にいます。 彼が望むペイセット PAY を選択し、それをラウンド r -1 の正式なペイセットにするという立場です。ただし、 彼はもっとできるよ。また、高い確率で () 悪意のあるユーザーの 1 人がリーダーになることを保証することもできます。 また、ラウンド r も選択できるため、PAY r を自由に選択できます。 (など。少なくともしばらくの間は、つまり、 これらの高確率のイベントが実際に発生する限り。) () を保証するために、敵対者は次のように動作します。支払わせてください」 は、敵対者がラウンド r −1 に好むペイセットになります。次に、H(PAY ') を計算し、次のことを確認します。 すでに悪意のあるプレイヤー z、SIGz(r, 1, H(PAY ')) は特に小さい、つまり、非常に高い 確率 z がラウンド r のリーダーになります。この場合、彼は w に、候補となるブロックを選択するように指示します。従来のブロック量に基づく代替案は、敵対者によって簡単に悪用されて、 悪意のあるリーダーが非常に頻繁に存在すること。代わりに、具体的かつ帰納的にブランドを定義します。 新しい量 Qr を生成して、敵対者によって操作できないことを証明できるようにします。つまり、 Br が空ブロックでない場合は Qr \(\triangleq\) H(SIG\(\ell\)r(Qr−1), r)、そうでない場合は Qr \(\triangleq\) H(Qr−1, r)。 Qr のこの構造が機能する理由の直感は次のとおりです。ちょっと考えてみましょう Qr−1 は真にランダムかつ独立して選択されます。では、Qrもそうなるのでしょうか? \(\ell\)r が正直であれば、 答えは(大まかに言えば)はいです。これはそうなので、 H(SIG\(\ell\)r(・), r) : {0, 1}256 −→{0, 1}256 はランダム関数です。しかし、\(\ell\)r が悪意のある場合、Qr は Qr−1 から一義的に定義されなくなります。 そして\(\ell\)r。 Qr には少なくとも 2 つの個別の値があります。 1 は引き続き Qr \(\triangleq\) H(SIG\(\ell\)r(Qr−1), r)、 もう 1 つは H(Qr−1, r) です。まず、2 番目の選択は多少恣意的ではありますが、 2番目の選択は絶対に必須です。その理由は、悪意のある\(\ell\)r が常に原因となる可能性があるためです。 第 2 ステップの誠実な検証者が受け取る、まったく異なる候補ブロック。12 この場合、ブロックが BA プロトコルを通じて最終的に合意されたことを確認するのは簡単です。 丸め r はデフォルトのものになるため、Qr−1 の誰のデジタル署名も含まれません。でも システムは継続しなければならず、そのためにはラウンド r のリーダーが必要です。このリーダーが自動的に そして公然と選ばれれば、敵対者は彼を簡単に堕落させるだろう。前回で選択した場合 同じプロセスを経て Qr−1 になると、\(\ell\)r が再びラウンド r+1 のリーダーになります。私たちが具体的に提案するのは、 同じ秘密の暗号ソートメカニズムを使用しますが、新しい Q 数量に適用されます。 H(Qr−1, r)。この量を H の出力にすることで、出力がランダムであることが保証されます。 そして、H の 2 番目の入力として r を含めることにより、H の他のすべての使用には 1 つまたは 3 つ以上の入力があります。 そのような Qr が独立して選択されることを「保証」します。繰り返しになりますが、代替 Qr の具体的な選択 それは問題ではありません。重要なのは、\(\ell\)r には Qr の選択肢が 2 つあるため、チャンスが 2 倍になるということです。 別の悪意のあるユーザーを次のリーダーとして迎えます。 悪意のある\(\ell\)r を制御する敵対者にとって、Qr のオプションはさらに多くなる可能性があります。 たとえば、x、y、z をラウンド r の 3 人の悪意のある潜在的なリーダーであるとします。 H \(\sigma\)r,1 \(\times\)  < H \(\sigma\)r,1 y  < H \(\sigma\)r,1 z  そしてH  \(\sigma\)r,1 z  特に小さいです。つまり、非常に小さいため、H が発生する可能性が十分にあります。  \(\sigma\)r,1 z  です すべての誠実な潜在的リーダーの hash された資格情報のうちの小さいもの。次に、x に自分の名前を隠すように依頼することで、 資格情報を考慮すると、敵対者は y をラウンド r −1 のリーダーにする可能性が高くなります。これ これは、彼が Qr に対して別のオプション、つまり SIGy を持っていることを意味します。 Qr−1 。同様に、敵対者は、 z がラウンド r −1 のリーダーになるように、x と y の両方に資格情報を保留するよう依頼します。 そして、Qr の別のオプション、つまり SIGz を取得します。 Qr−1 。 ただし、もちろん、これらのオプションやその他のオプションはそれぞれ失敗する可能性がゼロではありません。 敵対者は、誠実な潜在的なユーザーのデジタル署名の hash を予測できません。 Br−1 私は = (r −1, PAY ’, H(Br−2)。そうでない場合、彼は他の 2 人の悪意のあるユーザー x と y に新しい支払いを生成し続けます。 \(\wp\)' は、ある悪意のあるユーザー z (または一部の固定ユーザー z) にとって、H (SIGz (PAY ' \(\cup\){\(\wp\)})) になるまで、一方から他方へと続きます。 特に小さいです。この実験はすぐに終了します。そして、それが行われると、敵対者はwに提案するように頼みます 候補ブロック Br−1 私は = (r −1, PAY ′ \(\cup\){\(\wp\)}, H(Br−2)。 12たとえば、(極端ですが)単純にするために、「第 2 ステップの時間が切れそうになったとき」、\(\ell\)r は次のようにすることができます。 異なる候補ブロック Bi を各ユーザーに直接電子メールで送信します。このようにして、ステップ 2 の検証者が誰であっても、 まったく異なるブロックを受信することになります。マルコフ連鎖のような注意深く分析すると、敵対者がどのようなオプションを選択しても、 ラウンド r −1 で行うには、システムに新しいユーザーを注入できない限り、 正直なユーザーがラウンド r + 40 のリーダーになる確率は h をはるかに下回ります。これが理由です これは、ラウンド r の潜在的なリーダーがラウンド r −k にすでに存在するユーザーであることを要求します。 これは、ラウンド r −k で敵対者が確率を大幅に変更できないことを保証する方法です。 正直なユーザーがラウンド r のリーダーになります。実際、どんなユーザーを追加しても、 ラウンド r −k から r までのシステムでは、彼らは潜在的なリーダーになる資格がありません (さらに、 ラウンドRのリーダー)したがって、ルックバック パラメータ k は最終的にはセキュリティ パラメータになります。 (とはいえ、 セクション 7 で説明するように、これは一種の「便宜パラメータ」である場合もあります。) 一時的なキー プロトコルの実行ではフォークを生成できませんが、次の場合を除きます。 無視できる確率ですが、敵対者は正当なブロックの後の r 番目のブロックでフォークを生成する可能性があります。 ブロックrが生成されました。 おおよそ、Br が生成されると、敵対者は各ステップの検証者が誰であるかを学習します。 ラウンドrはあります。したがって、彼はそれらすべてを破損し、新しいブロックを認証するよう義務付けることができます f Br.この偽のブロックは正規のブロックの後にのみ伝播される可能性があるため、 注意を払うことはだまされないでしょう。13 それにもかかわらず、f Br は構文的に正しいでしょうし、 製造を阻止したい。 これは新しいルールによって行われます。基本的に、ステップ s の検証者セット SV r,s のメンバーは、 ラウンド r では一時的な公開鍵 pkr,s を使用します 私は メッセージにデジタル署名するためです。これらのキーは 1 回のみ使用され、対応する秘密キー skr,s です。 私は 一度使用すると破壊されます。このように、検証者が 後で破損した場合、敵対者は最初に署名していないものに署名を強制することはできません。 当然のことながら、敵対者が新しいキー g を計算できないようにする必要があります。 広報 私は そして、それがステップ s で使用する検証者 i \(\in\)SV r,s の一時的な鍵であることを正直なユーザーに納得させます。 4.2 表記法、概念、パラメータの一般的な概要 表記法 • r \(\geq\)0: 現在のラウンド番号。 • s \(\geq\)1: ラウンド r の現在のステップ番号。 • Br: ラウンド r で生成されたブロック。 • PKr: ラウンド r -1 の終了時およびラウンド r の開始時までの公開鍵のセット。 • Sr: ラウンド r -1 の終了時およびラウンド r.14 の開始時までのシステムの状態。 • PAY r: Br に含まれるペイセット。 • \(\ell\)r: ラウンド R リーダー。 \(\ell\)r はラウンド r のペイセット PAY r を選択します (そして次の Qr を決定します)。 • Qr: ラウンド r のシード、ラウンド r の終了時に生成される数量 (つまり、バイナリ文字列) ラウンド r + 1 の検証者を選択するために使用されます。Qr はブロック内のペイセットから独立しています。 \(\ell\)r では操作できません。 13 大手テレビネットワークのニュースキャスターを汚職し、今日ニュース映画を制作して放送することを検討してください。 前回の大統領選挙でクリントン長官が勝利したことを示している。 私たちのほとんどはそれがデマだと認識するでしょう。 でも 昏睡状態から抜け出した人は騙されるかもしれない。 14 非同期システムでは、「ラウンド r の終わり -1」と「ラウンド r の始まり」の概念 慎重に定義する必要があります。数学的には、PKr と Sr は初期ステータス S0 とブロックから計算されます。 B1、. 。 。 、Br−1。• SV r,s: ラウンド r のステップ s に対して選択された検証者のセット。 • SV r: ラウンド r で選択された検証者のセット、SV r = \(\cup\)s\(\geq\)1SV r,s。 • MSV r,s と HSV r,s: それぞれ、悪意のある検証者のセットと誠実な検証者のセット SV r、sで。 MSV r,s \(\cup\)HSV r,s = SV r,s および MSV r,s ∩HSV r,s = \(\emptyset\)。 • n1 \(\in\)Z+ および n \(\in\)Z+: それぞれ、各 SV の潜在的なリーダーの予想数 r,1、 s > 1 の場合、各 SV r,s 内の検証者の予想数。 SV r,1 には少なくとも 1 つの正直な正直なメンバーが必要なので、n1 << n であることに注意してください。 各 SV の正直なメンバーの大多数は、s > 1 の場合、r,s になります。 • h \(\in\)(0, 1): 2/3 より大きい定数。 h はシステム内の正直率です。つまり、 使用される仮定に応じて、各 PKr における正直なユーザーまたは正直なお金の割合は次のようになります。 少なくともh。 • H: ランダムな oracle としてモデル化された暗号化 hash 関数。 • \(\bot\): H の出力と同じ長さの特殊な文字列。 • F \(\in\)(0, 1): 許容されるエラー確率を指定するパラメータ。 確率 \(\leq\)F は、 確率は「無視できる」とみなされ、確率 \(\geq\)1 −F は「圧倒的」とみなされます。 • ph \(\in\)(0, 1): ラウンド r のリーダー \(\ell\)r が正直である確率。理想的には ph = h です。と 敵対者の存在、ph の値は分析で決定されます。 • k \(\in\)Z+: ルックバック パラメータ。つまり、ラウンド r −k は、ラウンド r の検証者が存在する場所です。 から選択されます。つまり、SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): ラウンド r の最初のステップでは、ラウンド r −k のユーザーが SV r,1 に属するように選択されます。 確率 p1 \(\triangleq\) n1 |P Kr−k|。 • p \(\in\)(0, 1): ラウンド r の各ステップ s > 1 に対して、ラウンド r −k のユーザーが SV r,s に属するように選択されます。 確率 p \(\triangleq\) n |P Kr−k|。 • CERT r: Br の証明書。これは、適切な検証者からの H(Br) の署名のセットです。 ラウンドR。 • Br \(\triangleq\)(Br, CERT r) is a proven block. ユーザー i は、証明されたブロックの両方の部分を所有している (そして検証に成功している) 場合、Br を知っています。 異なるユーザーによって表示される CERT r は異なる場合があることに注意してください。 • τr i : ユーザー i が Br を知っている (ローカル) 時刻。 Algorand プロトコルでは、各ユーザーは自分の 自分の時計。異なるユーザーの時計を同期する必要はありませんが、速度は同じである必要があります。 分析の目的のみで、基準クロックを考慮し、プレーヤーのパフォーマンスを測定します。 それに関連する回。 • \(\alpha\)r,s 私は と\(\beta\)r、s i : ユーザー i がステップ s の実行を開始および終了したそれぞれの (ローカル) 時刻 ラウンドR。 • Λ と \(\lambda\): 基本的に、それぞれステップ 1 とステップ 1 を実行するのに必要な時間の上限です。 Algorand プロトコルの他のステップに必要な時間。 パラメータ Λ は、単一の 1MB ブロックを伝播する時間の上限を設定します。 (私たちの表記では、 Λ = \(\lambda\) \(\rho\)、1MB。簡単にするために \(\rho\) = 1 に設定し、ブロックは 最大でも 1MB の長さになるように選択すると、Λ = \(\lambda\)1,1,1MB となります)。 15厳密に言えば、「r −k」は「max{0, r −k}」となるはずです。パラメータ \(\lambda\) は、ステップ s > 1 で検証者ごとに 1 つの小さなメッセージを伝播する時間の上限を設定します。 (Bitcoin のように、32B の鍵を持つ楕円曲線署名を使用すると、検証者メッセージの長さは 200B になります。 したがって、私たちの表記では、\(\lambda\) = \(\lambda\)n,\(\rho\),200B となります。) Λ = O(\(\lambda\)) と仮定します。 概念 • 検証者の選択。 各ラウンド r およびステップ s > 1 について、SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}。それぞれ ユーザー i \(\in\)PKr−k は、長期鍵を使用して自分の署名を非公開で計算し、次のいずれかを決定します。 i \(\in\)SV r,s かどうか。 i \(\in\)SV r,s の場合、SIGi(r, s, Qr−1) は i の (r, s)-資格情報であり、簡潔に表されます。 \(\sigma\)r,sによる 私は。 ラウンド r の最初のステップでは、SV r,1 と \(\sigma\)r,1 私は も同様に定義されますが、p は p1 に置き換えられます。の SV r,1 の検証者は潜在的なリーダーです。 • リーダーの選択。 H(\(\sigma\)r,1 の場合、ユーザー i \(\in\)SV r,1 はラウンド r のリーダーであり、\(\ell\)r で示されます) i ) \(\leq\)H(\(\sigma\)r,1 j ) あらゆる可能性に対して リーダー j \(\in\)SV r,1。 2 人のプレーヤーの資格情報の hash が比較されるたびに、ありそうもないことですが、 同点の場合、プロトコルは辞書順に常に関係を解消します (長期公開) ) 潜在的なリーダーの鍵。 定義により、プレイヤー\(\ell\)r の認証情報の hash 値も、すべてのユーザーの中で最小です。 PKr-k。潜在的なリーダーは、自分がリーダーであるかどうかを個人的に決定することはできないことに注意してください。 他の潜在的なリーダーの資格情報を見ることなく。 hash の値はランダムに一様であるため、SV r,1 が空でない場合、\(\ell\)r は常に存在し、 少なくとも h の確率で正直です。パラメータ n1 は、それぞれの SV r,1 は圧倒的な確率で空ではありません。 • ブロック構造。 空でないブロックは Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)) の形式で、空のブロックは Br の形式です ϫ = (r, \(\emptyset\), Qr−1, H(Br−1))。 支払いが発生しない場合、空ではないブロックには空のペイセット PAY r が含まれる可能性があることに注意してください。 このラウンド、またはリーダーが悪意がある場合。ただし、空ではないブロックは、 \(\ell\)r、彼の資格 \(\sigma\)r,1 \(\ell\)r と SIG\(\ell\)r(Qr−1) はすべてタイムリーに明らかにされました。プロトコルは保証します つまり、リーダーが正直であれば、圧倒的な確率でブロックは空ではなくなるでしょう。 • シード Qr. Br が空でない場合は、Qr \(\triangleq\) H(SIG\(\ell\)r(Qr−1), r)、それ以外の場合は、Qr \(\triangleq\) H(Qr−1, r) です。 パラメータ • さまざまなパラメータ間の関係。 — ラウンド r の検証者と潜在的なリーダーは PKr-k のユーザーから選択されます。 ここで、k は、敵対者がラウンド r −k −1 で Qr−1 を予測できないように選択されます。 F よりも確率が高い: そうしないと、彼は悪意のあるユーザーを紹介することができます ラウンド r -k では、全員がラウンド r の潜在的なリーダー/検証者となり、成功します。

SV の中に悪意のあるリーダーまたは悪意のある多数派がいて、彼らが望むいくつかのステップを実行する 彼。 — 各ラウンド r のステップ 1 では、圧倒的な確率で SV r,1 ̸= \(\emptyset\) となるように n1 が選択されます。 • 重要なパラメータの選択例。 — H の出力は 256 ビット長です。 — h = 80%、n1 = 35。 — Λ = 1 分、\(\lambda\) = 10 秒。 • プロトコルの初期化。 プロトコルは、r = 0 の時刻 0 に開始されます。「B-1」または「CERT -1」が存在しないため、 構文的には、B-1 はパブリック パラメータであり、その 3 番目のコンポーネントは Q-1 とすべてのユーザーを指定します。 時間 0 での B−1 がわかっています。

Duas Modalidades de Algorand

Conforme discutido, em um nível muito alto, uma rodada de Algorand idealmente procede da seguinte forma. Primeiro, aleatoriamente o usuário selecionado, o líder, propõe e circula um novo bloco. (Este processo inclui inicialmente selecionando alguns líderes potenciais e depois garantindo que, pelo menos uma boa fração do tempo, um surge um único líder comum.) Em segundo lugar, um comitê de usuários selecionado aleatoriamente é selecionado e chega a um acordo bizantino sobre o bloco proposto pelo líder. (Este processo inclui que cada etapa do protocolo BA é executada por um comitê selecionado separadamente.) O bloco acordado é então assinado digitalmente por um determinado limite (TH) de membros do comitê. Essas assinaturas digitais são circulados para que todos tenham certeza de qual é o novo bloco. (Isto inclui a circulação do credencial dos signatários, e autenticando apenas o hash do novo bloco, garantindo que todos tem a garantia de aprender o bloco, uma vez que seu hash seja esclarecido.) Nas próximas duas seções, apresentamos duas modalidades de Algorand, Algorand ′ 1 e Algorand ′ 2, que funcionam sob a suposição da maioria dos usuários honestos. Na Seção 8 mostramos como adotar essas incorporações para trabalhar sob uma suposição de maioria honesta de dinheiro. Algorand ′ 1 prevê apenas que > 2/3 dos membros do comitê sejam honestos. Além disso, em Algorand ′ 1, o número de passos para chegar a um acordo bizantino é limitado a um nível adequadamente elevado número, de modo que é garantido que o acordo será alcançado com probabilidade esmagadora dentro de um número fixo de etapas (mas potencialmente exigindo mais tempo do que as etapas de Algorand ′ 2). No caso remoto em que o acordo ainda não foi alcançado na última etapa, a comissão concorda com a bloco vazio, que é sempre válido. Algorand ′ 2 prevê que o número de membros honestos em uma comissão seja sempre maior do que ou igual a um limite fixo tH (o que garante que, com probabilidade esmagadora, pelo menos 2/3 dos membros do comitê são honestos). Além disso, Algorand ′ 2 permite que o acordo bizantino ser alcançado em um número arbitrário de etapas (mas potencialmente em um tempo menor que Algorand ′ 1). É fácil derivar muitas variantes destas modalidades básicas. Em particular, é fácil, dado Algorand ′ 2, para modificar Algorand ′ 1, de modo a permitir chegar a um acordo bizantino de forma arbitrária número de etapas. Ambas as modalidades compartilham o seguinte núcleo, notações, noções e parâmetros comuns. 4.1 Um núcleo comum Objetivos Idealmente, para cada rodada r, Algorand satisfaria as seguintes propriedades: 1. Correção Perfeita. Todos os usuários honestos concordam com o mesmo bloco Br. 2. Completude 1. Com probabilidade 1, o conjunto de pagamentos de Br, PAY r, é máximo.10 10Como os conjuntos de pagamentos são definidos para conter pagamentos válidos e os usuários honestos para fazer apenas pagamentos válidos, um valor máximo PAY r contém os pagamentos “atualmente pendentes” de todos os usuários honestos.É claro que garantir a correção perfeita por si só é trivial: todo mundo sempre escolhe o modelo oficial. payset PAY r fique vazio. Mas neste caso, o sistema teria completude 0. Infelizmente, garantir tanto a correção perfeita quanto a integridade 1 não é fácil na presença de malware usuários. Algorand adota assim um objetivo mais realista. Informalmente, deixando h denotar a porcentagem de usuários honestos, h > 2/3, o objetivo de Algorand é Garantindo, com probabilidade esmagadora, correção perfeita e completude próxima de h. Privilegiar a correcção em detrimento da integralidade parece ser uma escolha razoável: os pagamentos não processados em uma rodada pode ser processada na próxima, mas deve-se evitar garfos, se possível. Acordo Bizantino Liderado A correção perfeita pode ser garantida da seguinte forma. No início da rodada r, cada usuário i constrói seu próprio bloco candidato Br i , e então todos os usuários alcançam o Byzantine acordo sobre um bloco candidato. De acordo com nossa introdução, o protocolo BA empregado requer uma maioria honesta de 2/3 e é substituível pelo jogador. Cada uma de suas etapas pode ser executada por um pequeno e conjunto de verificadores selecionados aleatoriamente, que não compartilham nenhuma variável interna. Infelizmente, esta abordagem não tem garantias de integridade. Isso ocorre porque o candidato blocos de usuários honestos são provavelmente totalmente diferentes uns dos outros. Assim, em última análise O bloco acordado pode sempre ser aquele com um conjunto de pagamentos não máximo. Na verdade, pode ser sempre o bloco vazio, B\(\varepsilon\), ou seja, o bloco cujo payset está vazio. bem, será o padrão, vazio. Algorand ′ evita esse problema de completude da seguinte maneira. Primeiro, um líder para a rodada r, \(\ell\)r, é selecionado. Então, \(\ell\)r propaga seu próprio bloco candidato, Br \(\ell\)r. Finalmente, os usuários chegam a um acordo sobre o bloqueio eles realmente recebem de \(\ell\)r. Porque, sempre que \(\ell\)r for honesto, perfeita correção e integridade 1 ambos são válidos, Algorand ′ garante que \(\ell\)r é honesto com probabilidade próxima de h. (Quando o líder é malicioso, não nos importamos se o bloco acordado é aquele com um conjunto de pagamentos vazio. Afinal, um o líder malicioso \(\ell\)r pode sempre escolher Br de forma maliciosa \(\ell\)r para ser o bloco vazio e, honestamente propagá-lo, forçando assim os usuários honestos a concordar com o bloco vazio.) Seleção de Líder Em Algorand's, o r-ésimo bloco tem a forma Br = (r, PAY r, Qr, H(Br−1). Como já mencionado na introdução, a quantidade Qr−1 é cuidadosamente construída de modo a ser essencialmente não manipulável pelo nosso poderoso Adversário. (Mais adiante nesta seção, iremos fornecer alguma intuição sobre por que isso acontece.) No início de uma rodada r, todos os usuários sabem o blockchain até agora, B0, . . . , Br−1, a partir do qual eles deduzem o conjunto de usuários de cada rodada anterior: que é, PK1, . . . , PKr−1. Um potencial líder da rodada r é um usuário i tal que .H SIGi r, 1, Qr−1 \(\leq\)p. Deixe-nos explicar. Observe que, como a quantidade Qr−1 faz parte do bloco Br−1, e o subjacente esquema de assinatura satisfaz a propriedade de exclusividade, SIGi r, 1, Qr−1 é uma string binária exclusivamente associado a i e r. Assim, como H é um oracle aleatório, H SIGi r, 1, Qr−1 é um aleatório de 256 bits string longa associada exclusivamente a i e r. O símbolo “.” na frente de H SIGi r, 1, Qr−1 é o ponto decimal (no nosso caso, binário), de modo que ri \(\triangleq\).H SIGi r, 1, Qr−1 é a expansão binária de um número aleatório de 256 bits entre 0 e 1 associado exclusivamente a i e r. Assim a probabilidade de que ri é menor ou igual a p é essencialmente p. (Nosso mecanismo de seleção de líderes potenciais tem sido inspirado no esquema de micropagamento de Micali e Rivest [28].) A probabilidade p é escolhida de modo que, com probabilidade esmagadora (ou seja, 1 −F), pelo menos um o verificador potencial é honesto. (Se for verdade, p é escolhido como a menor probabilidade.)Observe que, como i é o único capaz de calcular suas próprias assinaturas, só ele pode determinar se ele é um verificador potencial da primeira rodada. No entanto, ao revelar sua própria credencial, \(\sigma\)r eu \(\triangleq\)SIGi r, 1, Qr−1 , posso provar a qualquer um que sou um verificador potencial da rodada r. O líder \(\ell\)r é definido como o líder potencial cuja credencial hashed é menor que a hashed credencial de todos os outros líderes potenciais j: isto é, H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j). Observe que, como um \(\ell\)r malicioso pode não revelar sua credencial, o líder correto da rodada r pode nunca será conhecido, e que, salvo laços improváveis, \(\ell\)r é de fato o único líder da rodada r. Vamos finalmente trazer um último mas importante detalhe: um usuário pode ser um líder em potencial (e, portanto, o líder) de uma rodada r somente se ele pertencer ao sistema por pelo menos k rodadas. Isso garante a não manipulabilidade de Qr e de todas as quantidades Q futuras. Na verdade, um dos potenciais líderes irá realmente determinar Qr. Seleção do Verificador Cada passo s > 1 da rodada r é executado por um pequeno conjunto de verificadores, SV r,s. Novamente, cada verificador i \(\in\)SV r,s é selecionado aleatoriamente entre os usuários já presentes no sistema k rodadas. antes de r, e novamente através da quantidade especial Qr−1. Especificamente, i \(\in\)PKr−k é um verificador em SV r,s, se .H SIGi r, s, Qr−1 \(\leq\)p′. Mais uma vez, só eu sei se ele pertence a SV r,s, mas, se for esse o caso, ele poderia provar isso exibindo sua credencial \(\sigma\)r,s eu \(\triangleq\)H(SIGi r, s, Qr−1 ). Um verificador i \(\in\)SV r,s envia uma mensagem, mr,s eu, em etapa s da rodada r, e esta mensagem inclui sua credencial \(\sigma\)r,s i , de modo a permitir que os verificadores do passo para reconhecer que o senhor,s eu é uma mensagem legítima de etapas. A probabilidade p′ é escolhida de modo a garantir que, em SV r,s, sendo #good o número de usuários honestos e #bad o número de usuários mal-intencionados, com grande probabilidade o seguinte duas condições são válidas. Para concretização Algorand ′ 1: (1) #bom > 2 \(\cdot\) #ruim e (2) #bom + 4 \(\cdot\) #ruim < 2n, onde n é a cardinalidade esperada de SV r,s. Para concretização Algorand ′ 2: (1) #bom > tH e (2) #bom + 2#ruim < 2tH, onde tH é um limite especificado. Estas condições implicam que, com probabilidade suficientemente alta, (a) na última etapa do BA protocolo, haverá pelo menos um determinado número de jogadores honestos para assinar digitalmente o novo bloco Br, (b) apenas um bloco por rodada poderá ter o número necessário de assinaturas, e (c) o BA utilizado o protocolo tem (em cada etapa) a maioria honesta necessária de 2/3. Esclarecendo a geração de blocos Se o líder da rodada r for honesto, então o bloco correspondente é da forma Br = r, PAGAR r, SIG\(\ell\)r Qr−1 , H Br−1 , onde o payset PAY r é máximo. (lembre-se de que todos os conjuntos de pagamentos são, por definição, válidos coletivamente.) Caso contrário (ou seja, se \(\ell\)r for malicioso), Br terá uma das duas formas possíveis a seguir: Br = r, PAGAR r, SIGi Qr-1 , H Br−1 e Br = Br \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Br−1 .Na primeira forma, PAY r é um conjunto de pagamentos (não necessariamente máximo) e pode ser PAY r = \(\emptyset\); e eu sou um potencial líder da rodada r. (No entanto, posso não ser o líder \(\ell\)r. Isso pode realmente acontecer se \(\ell\)r mantém em segredo sua credencial e não se revela.) A segunda forma surge quando, na execução da rodada R do protocolo BA, todos os jogadores honestos produza o valor padrão, que é o bloco vazio Br \(\varepsilon\) em nossa aplicação. (Por definição, o possível as saídas de um protocolo BA incluem um valor padrão, genericamente denotado por \(\bot\). Consulte a seção 3.2.) Observe que, embora os paysets estejam vazios em ambos os casos, Br = r, \(\emptyset\), SIGi Qr-1 , H Br−1 e irmão \(\varepsilon\) são blocos sintaticamente diferentes e surgem em duas situações diferentes: respectivamente, “todos correu bem na execução do protocolo BA” e “algo deu errado no Protocolo BA, e o valor padrão foi gerado”. Vamos agora descrever intuitivamente como ocorre a geração do bloco Br na rodada r de Algorand ′. Na primeira etapa, cada jogador elegível, ou seja, cada jogador i \(\in\)PKr−k, verifica se é um potencial líder. Se for esse o caso, então me perguntam, usando todos os pagamentos que ele viu até agora, e o atual blockchain, B0, . . . , Br−1, para preparar secretamente um conjunto de pagamento máximo, PAY r eu, e secretamente monta seu bloco candidato, Br = r, PAGUE r eu, SIGi Qr-1 , H Br−1 . Isto é, ele não apenas incluir no Br i, como segundo componente o conjunto de pagamentos recém-preparado, mas também, como terceiro componente, sua própria assinatura de Qr−1, a terceira componente do último bloco, Br−1. Finalmente, ele propagou seu mensagem round-r-step-1, senhor,1 i , que inclui (a) seu bloco candidato Br eu, (b) sua assinatura adequada de seu bloco candidato (ou seja, sua assinatura do hash do Br i , e (c) sua própria credencial \(\sigma\)r,1 eu, provando que ele é de fato um verificador potencial da rodada r. (Observe que, até que um i honesto produza sua mensagem mr,1 i, o Adversário não tem ideia de que i é um verificador potencial. Se ele quiser corromper potenciais líderes honestos, o Adversário poderia muito bem jogadores honestos aleatórios corruptos. No entanto, uma vez que ele vê o Sr.,1 i , uma vez que contém a credencial de i, o O adversário sabe e pode corromper-me, mas não pode impedir o senhor,1 i , que é propagado viralmente, de atingindo todos os usuários do sistema.) Na segunda etapa, cada verificador selecionado j \(\in\)SV r,2 tenta identificar o líder da rodada. Especificamente, j usa as credenciais da etapa 1, \(\sigma\)r,1 i1 , . . . , \(\sigma\)r,1 in , contido na mensagem apropriada da etapa 1 mr,1 eu ele recebeu; hashes todos eles, ou seja, calcula H  \(\sigma\)r,1 e1  , . . . , H  \(\sigma\)r,1 em  ; encontra a credencial, \(\sigma\)r,1 \(\ell\)j , cujo hash é lexicograficamente mínimo; e considera \(\ell\)r j para ser o líder da rodada r. Lembre-se que cada credencial considerada é uma assinatura digital de Qr−1, que o SIGi r, 1, Qr−1 é determinado exclusivamente por i e Qr−1, que H é aleatório oracle e, portanto, cada H(SIGi r, 1, Qr−1 é uma longa string aleatória de 256 bits exclusiva para cada líder potencial i da rodada r. Disto podemos concluir que, se a string de 256 bits Qr-1 fosse ela mesma aleatória e independentemente selecionados, então seriam as credenciais hashed de todos os líderes potenciais da rodada r. Na verdade, todos líderes potenciais são bem definidos, assim como suas credenciais (sejam realmente computadas ou não). Além disso, o conjunto de líderes potenciais da rodada r é um subconjunto aleatório dos usuários da rodada r −k, e um líder potencial honesto eu sempre constrói e propaga adequadamente sua mensagem, Sr. eu, que contém a credencial de i. Assim, como o percentual de usuários honestos é h, não importa qual seja o potenciais líderes mal-intencionados possam fazer (por exemplo, revelar ou ocultar suas próprias credenciais), o mínimo A credencial de líder potencial hashed pertence a um usuário honesto, que é necessariamente identificado por todos ser o líder \(\ell\)r da rodada r. Conseqüentemente, se a string de 256 bits Qr-1 fosse ela mesma aleatória e selecionado independentemente, com probabilidade exatamente h (a) o líder \(\ell\)r é honesto e (b) \(\ell\)j = \(\ell\)r para todos verificadores honestos da etapa 2 j. Na realidade, as credenciais hashed são, sim, selecionadas aleatoriamente, mas dependem de Qr−1, que énão selecionados de forma aleatória e independente. Provaremos em nossa análise, entretanto, que Qr−1 é suficientemente não manipulável para garantir que o líder de uma rodada seja honesto com a probabilidade h′ suficientemente próximo de h: ou seja, h′ > h2(1 + h −h2). Por exemplo, se h = 80%, então h′ > 0,7424. Tendo identificado o líder da rodada (o que eles fazem corretamente quando o líder \(\ell\)r é honesto), a tarefa dos verificadores da etapa 2 é começar a executar o BA usando como valores iniciais o que eles acreditam ser o bloco do líder. Na verdade, para minimizar a quantidade de comunicação necessária, um verificador j \(\in\)SV r,2 não usa, como seu valor de entrada v′ j para o protocolo bizantino, o bloco Bj que ele realmente recebeu de \(\ell\)j (o usuário j acredita ser o líder), mas o líder, mas o hash desse bloco, ou seja, v′ j = H(Bi). Assim, após o término do protocolo BA, os verificadores da última etapa não calcula o bloco round-r desejado Br, mas calcula (autentica e propagar) H(Br). Assim, uma vez que H(Br) é assinado digitalmente por um número suficiente de verificadores do última etapa do protocolo BA, os usuários do sistema perceberão que H(Br) é o hash do novo bloco. Entretanto, eles também devem recuperar (ou esperar, já que a execução é bastante assíncrona) o próprio bloco Br, que o protocolo garante que está realmente disponível, não importa o que o Adversário poderia fazer. Assincronia e Tempo Algorand ′ 1 e Algorand ′ 2 têm um grau significativo de assincronia. Isso ocorre porque o Adversário tem grande liberdade para programar a entrega das mensagens que estão sendo enviadas. propagado. Além disso, quer o número total de passos numa ronda seja limitado ou não, há a variância contribui com o número de passos realmente dados. Assim que ele souber dos certificados de B0, . . . , Br−1, um usuário i calcula Qr−1 e começa a trabalhar na rodada r, verificando se ele é um líder em potencial ou um verificador em algumas etapas da rodada r. Supondo que devo agir na etapa s, à luz da assincronia discutida, baseio-me em vários estratégias para garantir que ele tenha informações suficientes antes de agir. Por exemplo, ele pode esperar para receber pelo menos um determinado número de mensagens dos verificadores de passo anterior, ou esperar um tempo suficiente para garantir que ele receba as mensagens de pessoas suficientemente muitos verificadores da etapa anterior. O Seed Qr e o Parâmetro Look-Back k Lembre-se que, idealmente, as quantidades Qr deveriam aleatórios e independentes, embora seja suficiente que sejam suficientemente não manipuláveis por o Adversário. À primeira vista, poderíamos escolher Qr−1 para coincidir com H PAGUE r−1 , e assim evitar especifique Qr−1 explicitamente em Br−1. Uma análise elementar revela, contudo, que utilizadores maliciosos podem aproveitar esse mecanismo de seleção.11 Alguns esforços adicionais mostram que miríades de outros 11Estamos no início da rodada r −1. Assim, Qr−2 = PAY r−2 é conhecido publicamente, e o Adversário é privado sabe quem são os líderes potenciais que ele controla. Suponha que o Adversário controle 10% dos usuários, e que, com probabilidade muito alta, um usuário malicioso w é o líder potencial da rodada r −1. Ou seja, suponha que H SIGw r −2, 1, Qr −2 é tão pequeno que é altamente improvável que um líder potencial honesto seja realmente o líder da rodada r −1. (Lembre-se que, uma vez que escolhemos líderes potenciais através de um mecanismo secreto de classificação criptográfica, o Adversário não sabe quem são os líderes potenciais honestos.) O Adversário, portanto, está na invejável posição de escolher o conjunto de pagamentos PAY ′ que ele deseja, e torná-lo o conjunto de pagamentos oficial da rodada r −1. No entanto, ele pode fazer mais. Ele também pode garantir que, com alta probabilidade, () um de seus usuários maliciosos será o líder também da rodada r, para que ele possa escolher livremente qual será o PAY r. (E assim por diante. Pelo menos por um longo tempo, isto é, contanto que esses eventos de alta probabilidade realmente ocorram.) Para garantir (), o Adversário age da seguinte forma. Vamos PAGAR' seja o conjunto de pagamentos que o Adversário prefere para a rodada r −1. Então, ele calcula H(PAY ′) e verifica se, para algum o jogador já malicioso z, SIGz(r, 1, H(PAY ′)) é particularmente pequeno, ou seja, pequeno o suficiente para que com valores muito altos probabilidade z será o líder da rodada r. Se for esse o caso, então ele instrui w a escolher seu bloco candidato a seralternativas, baseadas em quantidades de blocos tradicionais, são facilmente exploráveis pelo Adversário para garantir que líderes maliciosos são muito frequentes. Em vez disso, definimos específica e indutivamente nossa marca nova quantidade Qr para poder provar que ela não é manipulável pelo Adversário. Ou seja, Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), se Br não for o bloco vazio, e Qr \(\triangleq\)H(Qr−1, r) caso contrário. A intuição de por que esta construção de Qr funciona é a seguinte. Suponha por um momento que Qr−1 é verdadeiramente selecionado de forma aleatória e independente. Então, será assim Qr? Quando \(\ell\)r é honesto, o a resposta é (grosso modo) sim. Isto é assim porque H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 é uma função aleatória. Quando \(\ell\)r é malicioso, entretanto, Qr não é mais definido univocamente a partir de Qr−1 e \(\ell\)r. Existem pelo menos dois valores separados para Qr. Um continua a ser Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), e o outro é H(Qr−1, r). Vamos primeiro argumentar que, embora a segunda escolha seja um tanto arbitrária, uma segunda escolha é absolutamente obrigatória. A razão para isso é que um \(\ell\)r malicioso sempre pode causar blocos candidatos totalmente diferentes a serem recebidos pelos verificadores honestos da segunda etapa.12 Uma vez for esse o caso, é fácil garantir que o bloco finalmente acordado através do protocolo BA de round r será o padrão e, portanto, não conterá a assinatura digital de Qr-1 de ninguém. Mas o sistema deve continuar e, para isso, precisa de um líder para a rodada r. Se este líder for automaticamente e selecionado abertamente, então o Adversário irá corrompê-lo trivialmente. Se for selecionado pelo anterior Qr−1 através do mesmo processo, então \(\ell\)r será novamente o líder na rodada r+1. Propomos especificamente usam o mesmo mecanismo secreto de classificação criptográfica, mas aplicado a uma nova quantidade Q: a saber, H(Qr−1, r). Ter essa quantidade como a saída de H garante que a saída seja aleatória, e incluindo r como a segunda entrada de H, enquanto todos os outros usos de H têm uma ou mais de 3 entradas, “garante” que tal Qr seja selecionado de forma independente. Novamente, nossa escolha específica da alternativa Qr não importa, o que importa é que \(\ell\)r tem duas opções para Qr e, portanto, ele pode dobrar suas chances ter outro usuário mal-intencionado como o próximo líder. As opções para Qr podem ser ainda mais numerosas para o Adversário que controla um \(\ell\)r malicioso. Por exemplo, sejam x, y e z três líderes potenciais maliciosos da rodada r, tais que H \(\sigma\)r,1 x  < H \(\sigma\)r,1 sim  < H \(\sigma\)r,1 z  e H  \(\sigma\)r,1 z  é particularmente pequeno. Isto é, tão pequeno que há uma boa chance de que H  \(\sigma\)r,1 z  é menor da credencial hashed de todo líder potencial honesto. Então, pedindo a x para esconder seu credencial, o Adversário tem uma boa chance de fazer com que y se torne o líder da rodada r −1. Isto implica que ele tem outra opção para Qr: a saber, SIGy Qr-1 . Da mesma forma, o Adversário pode peça a x e y que retenham suas credenciais, de modo que z se torne o líder da rodada r −1 e ganhando outra opção para Qr: a saber, SIGz Qr-1 . É claro, porém, que cada uma dessas e outras opções tem uma chance diferente de zero de falhar, porque o O adversário não pode prever o hash das assinaturas digitais dos usuários potenciais honestos. Br−1 eu = (r −1, PAY ′, H(Br−2). Caso contrário, ele tem dois outros usuários maliciosos x e y para continuar gerando um novo pagamento \(\wp\)′, de um para outro, até que, para algum usuário malicioso z (ou mesmo para algum usuário fixo z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) é particularmente pequeno também. Esta experiência irá parar rapidamente. E quando isso acontece, o Adversário pede que você proponha o bloco candidato Br−1 eu = (r −1, PAGUE ′ \(\cup\){\(\wp\)}, H(Br−2). 12Por exemplo, para simplificar (mas extremo), “quando o tempo da segunda etapa estiver prestes a expirar”, \(\ell\)r poderia enviar por e-mail diretamente um bloco candidato Bi diferente para cada usuário i. Dessa forma, sejam quem forem os verificadores da etapa 2, eles terá recebido blocos totalmente diferentes.Uma análise cuidadosa, semelhante à cadeia de Markov, mostra que, independentemente das opções que o Adversário escolha fazer na rodada r −1, desde que ele não possa injetar novos usuários no sistema, ele não poderá diminuir o probabilidade de um usuário honesto ser o líder da rodada r + 40 muito abaixo de h. Esta é a razão que exigimos que os potenciais líderes da rodada r sejam usuários já existentes na rodada r −k. É uma forma de garantir que, na rodada r −k, o Adversário não possa alterar muito a probabilidade de que um usuário honesto se torna o líder da rodada r. Na verdade, não importa quais usuários ele adicione ao sistema nas rodadas r −k até r, eles são inelegíveis para se tornarem líderes em potencial (e a fortiori o líder) da rodada r. Assim, o parâmetro de lookback k é, em última análise, um parâmetro de segurança. (Embora, como veremos na seção 7, também pode ser uma espécie de “parâmetro de conveniência”.) Chaves Efêmeras Embora a execução do nosso protocolo não possa gerar um fork, exceto com probabilidade desprezível, o Adversário poderia gerar uma bifurcação, no bloco r, após o legítimo o bloco r foi gerado. Grosso modo, uma vez gerado Br, o Adversário sabe quem são os verificadores de cada etapa. da rodada r são. Assim, ele poderia corromper todos eles e obrigá-los a certificar um novo bloco f Ir. Como esse bloco falso pode ser propagado somente após o bloco legítimo, os usuários que foram prestar atenção não seria enganado.13 No entanto, f Br estaria sintaticamente correto e nós deseja evitar que seja fabricado. Fazemos isso por meio de uma nova regra. Essencialmente, os membros do conjunto verificador SV r,s de uma etapa s da rodada r use chaves públicas efêmeras pkr,s eu para assinar digitalmente suas mensagens. Essas chaves são de uso único e suas chaves secretas correspondentes skr,s eu são destruídos uma vez usados. Dessa forma, se um verificador for corrompido mais tarde, o Adversário não pode forçá-lo a assinar qualquer outra coisa que ele não tenha assinado originalmente. Naturalmente, devemos garantir que seja impossível para o Adversário calcular uma nova chave g pr,s eu e convencer um usuário honesto de que é a chave efêmera correta do verificador i \(\in\)SV r,s para usar na etapa s. 4.2 Resumo comum de notações, noções e parâmetros Notações • r \(\geq\)0: o número da rodada atual. • s \(\geq\)1: o número do passo atual na rodada r. • Br: bloco gerado na rodada r. • PKr: o conjunto de chaves públicas no final da rodada r −1 e no início da rodada r. • Sr: o status do sistema no final da rodada r −1 e no início da rodada r.14 • PAY r: o payset contido no Br. • \(\ell\)r: líder da rodada r. \(\ell\)r escolhe o payset PAY r da rodada r (e determina o próximo Qr). • Qr: a semente da rodada r, uma quantidade (ou seja, string binária) que é gerada no final da rodada r e é usado para escolher verificadores para a rodada r + 1. Qr é independente dos paysets nos blocos e não pode ser manipulado por \(\ell\)r. 13Considere corromper o âncora de uma grande rede de TV e produzir e transmitir hoje um noticiário mostrando a secretária Clinton vencendo a última eleição presidencial. A maioria de nós reconheceria isso como uma farsa. Mas alguém que sai do coma pode ser enganado. 14Num sistema que não é síncrono, a noção de “fim da ronda r −1” e “início da ronda r” precisam ser cuidadosamente definidos. Matematicamente, PKr e Sr são calculados a partir do status inicial S0 e dos blocos B1, . . . , Br−1.• SV r,s: o conjunto de verificadores escolhidos para a etapa s da rodada r. • SV r: o conjunto de verificadores escolhidos para a rodada r, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s e HSV r,s: respectivamente, o conjunto de verificadores maliciosos e o conjunto de verificadores honestos em SV r,s. MSV r,s \(\cup\)HSV r,s = SV r,s e MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ e n \(\in\)Z+: respectivamente, os números esperados de potenciais líderes em cada SV r,1, e os números esperados de verificadores em cada SV r,s, para s > 1. Observe que n1 << n, já que precisamos de pelo menos um membro honesto e honesto em SV r,1, mas pelo menos uma maioria de membros honestos em cada SV r,s para s > 1. • h \(\in\)(0, 1): uma constante maior que 2/3. h é o índice de honestidade no sistema. Ou seja, o fração de usuários honestos ou dinheiro honesto, dependendo da suposição utilizada, em cada PKr é pelo menos h. • H: uma função criptográfica hash, modelada como uma oracle aleatória. • \(\bot\): Uma string especial do mesmo comprimento que a saída de H. • F \(\in\)(0, 1): parâmetro que especifica a probabilidade de erro permitida. Uma probabilidade \(\leq\)F é considerada “desprezível”, e uma probabilidade \(\geq\)1 −F é considerada “esmagadora”. • ph \(\in\)(0, 1): a probabilidade de o líder de uma rodada r, \(\ell\)r, ser honesto. Idealmente ph = h. Com a existência do Adversário, o valor de ph será determinado na análise. • k \(\in\)Z+: o parâmetro de retrospectiva. Ou seja, a rodada r −k é onde os verificadores da rodada r estão escolhido entre —ou seja, SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): para o primeiro passo da rodada r, um usuário da rodada r −k é escolhido para estar em SV r,1 com probabilidade p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): para cada passo s > 1 da rodada r, um usuário da rodada r −k é escolhido para estar em SV r,s com probabilidade p \(\triangleq\) n |P Kr−k|. • CERT r: o certificado para Br. É um conjunto de assinaturas tH de H(Br) de verificadores apropriados em rodada R. • Br \(\triangleq\)(Br, CERT r) é um bloco comprovado. Um usuário i conhece Br se possuir (e verificar com sucesso) ambas as partes do bloco provado. Observe que o CERT visto por diferentes usuários pode ser diferente. • τr i: a hora (local) em que um usuário i conhece Br. No protocolo Algorand cada usuário tem seu próprio relógio. Os relógios de diferentes usuários não precisam ser sincronizados, mas devem ter a mesma velocidade. Apenas para efeitos de análise, consideramos um relógio de referência e medimos a velocidade dos jogadores. tempos relacionados em relação a ele. • \(\alpha\)r,s eu e \(\beta\)r,s i : respectivamente o horário (local) em que um usuário i inicia e termina sua execução da Etapa s de rodada R. • Λ e \(\lambda\): essencialmente, os limites superiores para, respectivamente, o tempo necessário para executar a Etapa 1 e o tempo necessário para qualquer outra etapa do protocolo Algorand. O parâmetro Λ limita superiormente o tempo para propagar um único bloco de 1 MB. (Em nossa notação, Λ = \(\lambda\) \(\rho\),1MB. Lembrando nossa notação, que definimos \(\rho\) = 1 para simplificar, e que os blocos são escolhido para ter no máximo 1 MB, temos Λ = \(\lambda\)1,1,1MB.) 15A rigor, “r −k” deveria ser “max{0, r −k}”.O parâmetro \(\lambda\) limita o tempo para propagar uma pequena mensagem por verificador em uma Etapa s > 1. (Usando, como em Bitcoin, assinaturas de curvas elípticas com chaves de 32B, uma mensagem do verificador tem 200B de comprimento. Assim, em nossa notação, \(\lambda\) = \(\lambda\)n,\(\rho\),200B.) Assumimos que Λ = O(\(\lambda\)). Noções • Seleção do verificador. Para cada rodada r e etapa s > 1, SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}. Cada o usuário i \(\in\)PKr−k calcula privadamente sua assinatura usando sua chave de longo prazo e decide se i \(\in\)SV r,s ou não. Se i \(\in\)SV r,s, então SIGi(r, s, Qr−1) é a credencial de i(r, s), denotada de forma compacta por \(\sigma\)r,s eu. Para a primeira etapa da rodada r, SV r,1 e \(\sigma\)r,1 eu são definidos de forma semelhante, com p substituído por p1. O verificadores em SV r,1 são líderes em potencial. • Seleção de líderes. O usuário i \(\in\)SV r,1 é o líder da rodada r, denotado por \(\ell\)r, se H(\(\sigma\)r,1 eu) \(\leq\)H(\(\sigma\)r,1 j) para todo potencial líderes j \(\in\)SV r,1. Sempre que os hashes das credenciais de dois jogadores são comparados, no improvável Em caso de empate, o protocolo sempre rompe o vínculo lexicograficamente de acordo com o (público de longo prazo chaves dos) líderes potenciais. Por definição, o valor hash da credencial do jogador \(\ell\)r também é o menor entre todos os usuários em PKr-k. Observe que um líder potencial não pode decidir privadamente se ele é o líder ou não, sem ver as credenciais dos outros líderes potenciais. Como os valores de hash são uniformes aleatoriamente, quando SV r,1 não é vazio, \(\ell\)r sempre existe e é honesto com probabilidade pelo menos h. O parâmetro n1 é grande o suficiente para garantir que cada SV r,1 não é vazio com probabilidade esmagadora. • Estrutura de bloco. Um bloco não vazio tem a forma Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)), e um bloco vazio é da forma Br ǫ = (r, \(\emptyset\), Qr−1, H(Br−1)). Observe que um bloco não vazio ainda pode conter um conjunto de pagamentos PAY r vazio, se nenhum pagamento ocorrer em nesta rodada ou se o líder for malicioso. No entanto, um bloco não vazio implica que a identidade de \(\ell\)r, sua credencial \(\sigma\)r,1 \(\ell\)r e SIG\(\ell\)r(Qr−1) foram todos revelados em tempo hábil. O protocolo garante que, se o líder for honesto, então o bloco não estará vazio com uma probabilidade esmagadora. • Semente Qr. Se Br não for vazio, então Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), caso contrário Qr \(\triangleq\)H(Qr−1, r). Parâmetros • Relações entre vários parâmetros. — Os verificadores e potenciais líderes da rodada r são selecionados entre os usuários do PKr−k, onde k é escolhido de modo que o Adversário não possa prever Qr−1 na rodada r −k −1 com probabilidade melhor que F: caso contrário, ele poderá introduzir usuários maliciosos para a rodada r −k, todos os quais serão potenciais líderes/verificadores na rodada r, tendo sucesso em

ter um líder malicioso ou uma maioria maliciosa em SV r,s para algumas etapas desejadas por ele. — Para a Etapa 1 de cada rodada r, n1 é escolhido de modo que com probabilidade esmagadora, SV r,1 ̸= \(\emptyset\). • Exemplos de escolhas de parâmetros importantes. — As saídas de H têm 256 bits. — h = 80%, n1 = 35. — Λ = 1 minuto e \(\lambda\) = 10 segundos. • Inicialização do protocolo. O protocolo começa no tempo 0 com r = 0. Como não existe “B−1” ou “CERT −1”, sintaticamente B−1 é um parâmetro público com seu terceiro componente especificando Q−1, e todos os usuários conheça B−1 no tempo 0.

Algorand 」

1 このセクションでは、次の仮定の下で動作する Algorand ' のバージョンを構築します。 ユーザーの正直な大多数の仮定: 各 PKr のユーザーの 2/3 以上が正直です。 セクション 8 では、上記の仮定を望ましい正直多数派に置き換える方法を示します。 お金の仮定。 5.1 追加の表記とパラメータ 表記法 • m \(\in\)Z+: バイナリ BA プロトコルの最大ステップ数、3 の倍数。 • Lr \(\leq\)m/3: 1 を確認するために必要なベルヌーイ試行回数を表す確率変数。 各試行が確率 ph で 1 の場合 2、最大でも m/3 のトライアルが存在します。すべての試行が失敗した場合、 Lr\(\triangleq\)m/3。 Lr は、ブロック Br の生成に必要な時間の上限を設定するために使用されます。 • tH = 2n 3 + 1: プロトコルの終了条件で必要な署名の数。 • CERT r: Br の証明書。これは、適切な検証者からの H(Br) の署名のセットです。 ラウンドR。 パラメータ • さまざまなパラメータ間の関係。 — ラウンド r の各ステップ s > 1 に対して、圧倒的な確率で次のように n が選択されます。 |HSV r,s| > 2|MSV r,s| そして |HSV r,s| + 4|MSV r,s| < 2n。 h の値が 1 に近づくほど、n を小さくする必要があります。特に、(バリアントを使用します) of) チェルノフは、圧倒的な確率で望ましい条件が確実に成立するように努めます。 — m は、圧倒的な確率で Lr < m/3 となるように選択されます。 • 重要なパラメータの選択例。 — F = 10−12。 — n \(\approx\)1500、k = 40、m = 180。5.2 Algorand での一時キーの実装 1 すでに述べたように、検証者 i \(\in\)SV r,s が自分のメッセージ mr,s にデジタル署名することを望みます。 私は ステップの ラウンド r の s、一時公開鍵 pkr,s に関連 i 、一時秘密鍵 skr,s を使用 私は それ 彼は使用後すぐに破壊します。したがって、すべてのユーザーが確実に pkr を確認する 私は 確かに、i 氏の署名を検証するために使用する鍵です 私は。私たちは、(最善を尽くして)これを行います。 私たちの知識では) ID ベースの署名スキームの新しい使用法。 このようなスキームでは、高いレベルで、中央機関 A が公開マスター キー PMK を生成します。 および対応する秘密マスターキー SMK。プレイヤー U の ID U が与えられると、A は次のように計算します。 SMK を介して、公開鍵 U に関連する秘密署名鍵 skU を使用し、skU を非公開で提供します。 U. (実際、アイデンティティベースのデジタル署名方式では、ユーザー U の公開鍵は U そのものです!) このようにして、A が有効にしたいユーザーの秘密鍵を計算した後に SMK を破棄した場合、 デジタル署名を生成し、計算された秘密鍵を保持しない場合、U だけが 公開鍵 U に関連してメッセージにデジタル署名できます。したがって、「U の名前」を知っている人は誰でも、 は自動的に U の公開鍵を認識するため、U の署名を検証できます (おそらく、 公開マスターキー PMK)。 私たちのアプリケーションでは、権限 A はユーザー i であり、すべての可能なユーザーのセット U は次と一致します。 —たとえば— S = {i}\(\times\){r', . . のラウンドステップペア (r, s) 。 。 、r'+106}\(\times\){1、. 。 。 , m+3}、ここで r' は与えられた値です ラウンド、m + 3 はラウンド内で発生する可能性のあるステップ数の上限です。これ 方法、pkr、s 私は \(\triangleq\)(i, r, s) なので、i の署名 SIGr,s がすべての人に表示されます。 PKR、S 私(さん、さん) 私は)できる、圧倒的に 確率を評価するには、r' に続く最初の 100 万ラウンド r について直ちに検証します。 言い換えれば、最初に PMK と SMK を生成します。そして、PMKがiのマスターであることを公表します。 任意のラウンド r \(\in\)[r', r' + 106] の公開鍵を作成し、SMK を使用して秘密を非公開で作成および保存します キー クローナ 私は 各トリプル (i, r, s) \(\in\)S について。これが完了すると、彼はSMKを破壊します。彼がそうでないと判断した場合 SV r,s の一部である場合、skr,s を離れることができます 私は 単独で (プロトコルでは認証する必要がないため) ラウンド r のステップ s の任意のメッセージ)。それ以外の場合は、最初に skr,s を使用します 私は 彼のメッセージにデジタル署名します、さん 私、そして その後、skr,s を破壊します 私は。 彼が最初にシステムに入ったときに、彼の最初の公開マスターキーを公開できることに注意してください。つまり、 i をシステムに導入するのと同じ支払い\(\wp\) (ラウンド r' または r' に近いラウンド) も可能性があります。 i の要求に応じて、任意のラウンド r \(\in\)[r', r' + 106] に対する i の公開マスター鍵が PMK であることを指定します。たとえば、次のようにします。 (PMK, [r', r' + 106]) という形式のペアを含みます。 また、m + 3 がラウンド内の最大ステップ数であるため、ラウンドが 所要時間は 1 分ですが、このようにして作成された一時キーの隠し場所は、ほぼ 2 年間持続します。同時に これらの一時的な秘密鍵の生成にはそれほど時間はかかりません。楕円曲線ベースの使用 32B の鍵を備えたシステムでは、各秘密鍵は数マイクロ秒で計算されます。したがって、m + 3 = 180 の場合、 そうすれば、1 億 8,000 万個の秘密鍵すべてを 1 時間以内に計算できます。 現在のラウンドが r' + 106 に近づくと、次の 100 万ラウンドを処理するために、i 新しい (PMK'、SMK') ペアを生成し、次の一時キーの隠し場所を通知します。 —たとえば— SIGi(PMK', [r' + 106 + 1, r' + 2 \(\cdot\) 106 + 1]) を新しいブロックに入力させると、 別個の「トランザクション」として、または支払いの一部である追加情報として。そうすることで、 i は全員に、次回の i の一時的な署名を検証するために PMK' を使用する必要があることを通知します。 百万ラウンド。等々。 (この基本的なアプローチに従って、一時キーを実装するための他の方法も存在することに注意してください。 ID ベースの署名を使用することは確かに可能です。たとえば、Merkle trees 経由。16) 16このメソッドでは、公開秘密鍵ペア (pkr,s) を生成します。 私、クロース 私は ) —たとえば—の各ラウンドステップペア (r, s) について一時キーを実装する他の方法も確かに可能です (Merkle trees など)。 5.3 Algorand のステップと一致する 1 BA⋆のものと 先ほども言いましたが、Algorand のラウンドです 1 には最大でも m + 3 ステップがあります。 ステップ 1. このステップでは、各潜在的なリーダー i が候補ブロック Br を計算して伝播します。 私、 彼自身の資格情報 \(\sigma\)r,1 とともに 私は。 この資格情報は i を明示的に識別することを思い出してください。 \(\sigma\)r,1 であるため、これは当てはまります。 私は \(\triangleq\)SIGi(r, 1, Qr−1)。 潜在的な検証者 i は、メッセージの一部として、H(Br 私)。 支払いや資格情報を扱うものではなく、i のこの署名は彼の一時的な公開に関連しています。 キー pkr、1 i : つまり、彼は sigpkr,1 を伝播します。 i (H(Br 私))。 私たちの慣例を考慮すると、Br を広めるのではなく、 私は そして sigpkr,1 i (H(Br 私))、彼はそうすることができたでしょう 伝播された SIGpkr,1 i (H(Br 私))。 ただし、分析では、明示的にアクセスする必要があります。 sigpkr,1 i (H(Br 私))。 ステップ 2. このステップでは、各検証者 i が \(\ell\)r を設定します 私は、hash された資格を持つ潜在的なリーダーになります が最小で、Br i は \(\ell\)r によって提案されたブロックになります 私は。効率化のため、 Br に直接同意するのではなく、H(Br) に同意したい、私は彼が持つであろうメッセージを広めます BA⋆の最初のステップで初期値v'で伝播される i = H(Br 私)。つまり、彼は v' を伝播します。 私、 もちろん、一時的に署名した後です。 (つまり、右の一時的なものに対して相対的に署名した後、 公開鍵、この場合は pkr,2 です i .) もちろん、私も自分の資格情報を送信します。 BA⋆の最初のステップは段階的コンセンサスプロトコルGCの最初のステップで構成されているため、 Algorand ' の 2 は GC の最初のステップに対応します。 ステップ 3. このステップでは、各検証者 i \(\in\)SV r,2 が BA⋆ の 2 番目のステップを実行します。つまり、彼は GC の 2 番目のステップで送信するのと同じメッセージです。繰り返しますが、i のメッセージは儚いものです 署名され、i の資格証明書が添付されています。 (以降、検証者とは言うのは省略します) 彼のメッセージに一時的に署名し、彼の資格を広めます。) ステップ 4. このステップでは、すべての検証者 i \(\in\)SV r,4 が GC (vi, gi) の出力を計算し、一時的に BA⋆ の 3 番目のステップで送信したのと同じメッセージに署名して送信します。 BBA⋆ の最初のステップ。gi = 2 の場合は初期ビット 0、それ以外の場合は 1。 ステップ s = 5、. 。 。 , m + 2。そのようなステップに到達した場合、BA⋆ のステップ s −1 に対応するため、次のようになります。 BBA⋆のステップs−3。 私たちの伝播モデルは十分に非同期であるため、次の可能性を考慮する必要があります。 そのようなステップ s の途中で、検証者 i \(\in\)SV r,s が、検証者 i \(\in\)SV r,s を証明する情報に到達するとします。 そのブロック Br はすでに選択されています。この場合、私は自分自身のラウンド r の実行を停止します。 Algorand '、round-(r + 1) 命令の実行を開始します。 {r'、. 。 。 , r' + 106} \(\times\) {1, . 。 。 、m+3}。 次に、これらの公開鍵を正規の方法で注文し、j 番目の公開鍵を保存します。 Merkle tree の j 番目の葉のキーを入力し、ルート値 Ri を計算し、それを公開します。彼がサインしたいとき キー pkr,s に関連するメッセージ 私は 、実際の署名だけでなく、pkr,s の認証パスも提供します。 私は リに対して。この認証パスは pkr,s を証明することにも注意してください。 私は j 番目のリーフに格納されます。残りの部分は、 詳細を簡単に入力できます。したがって、検証者 i \(\in\)SV r,s の命令は、対応する命令に加えて、 BBA⋆ のステップ -3 まで、BBA⋆ の実行が前の時点で停止したかどうかのチェックが含まれます。 ステップs'。 BBA⋆が停止できるのは、コインが0に固定されたステップまたはコインが1に固定されたステップのみであるため、 命令は、 A (終了条件 0): s′ −2 ≡0 mod 3、または B (終了条件 1): s′ −2 ≡1 mod 3. 実際、ケース A では、ブロック Br は空ではないため、追加の命令が必要です。 i が適切な証明書 CERT r とともに Br を適切に再構築していることを確認します。ケースBの場合、 ブロック Br は空であるため、i は Br = Br を設定するように指示されます。 \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), そして CERT r を計算します。 ステップ s の実行中に、ブロック Br が既に存在するという証拠が見つからない場合、 が生成された後、BBA⋆ のステップ s -3 で送信したのと同じメッセージを送信します。 ステップ m + 3。ステップ m + 3 中に、i \(\in\)SV r,m+3 でブロック Br がすでに生成されていることがわかる場合、 前のステップ s' がある場合は、上で説明したとおりに進みます。 それ以外の場合、BBA⋆ のステップ m で送信するのと同じメッセージを送信するのではなく、i は 所有する情報に基づいて、Br とそれに対応するものを計算するよう指示されました。 証明書 CERT r. 実際、ラウンドの合計ステップ数の上限を m + 3 としたことを思い出してください。 5.4 実際のプロトコル ラウンド r の各ステップ s で、検証者 i \(\in\)SV r,s が長期公開秘密鍵ペアを使用することを思い出してください。 彼の資格情報 \(\sigma\)r,s を生成する 私は \(\triangleq\)SIGi(r, s, Qr−1)、および SIGi Qr−1 s = 1 の場合。検証者 i 一時的な秘密鍵 skr,s を使用します 私は 彼の (r, s)-メッセージに署名する 私は。簡単にするために、r と s が 明らかに、sigpkr,s ではなく esigi(x) と書きます。 i (x) は、i の値の適切な一時的な署名を示します ラウンド r のステップ s で x を使用し、SIGpkr,s の代わりに ESIGi(x) を書き込みます。 i (x) は (i, x, esigi(x)) を表します。 ステップ 1: 提案をブロックする すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 1 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,1 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,1 の場合、i はステップ 1 の実行を直ちに停止します。 • i \(\in\)SV r,1 の場合、つまり i が潜在的なリーダーである場合、彼は次のラウンド R の支払いを回収します。 これまでに彼に伝播され、最大の給与セット PAY r を計算します。 私は彼らから。次に、彼は、 彼の「候補ブロック」Br を計算します。 i = (r, PAY r i 、SIGi(Qr−1)、H(Br−1))。最後に、彼は計算します メッセージミスター1 私は = (Br i , エシギ(H(Br i))、\(\sigma\)r,1 i )、彼の一時的な秘密鍵 skr を破壊します、1 私、そしてそれから mr,1 を伝播します 私は。述べる。 実際には、ステップ 1 の全体的な実行を短縮するには、(r, 1)- メッセージは選択的に伝播されます。 つまり、システム内のすべてのユーザー i について、最初の (r, 1)- プレイヤー i は、これまでに受信して検証に成功したメッセージを、いつものように伝播します。すべての人にとって、 プレイヤー i が受信して検証に成功した other (r, 1)-メッセージは、hash の場合にのみ伝播します。 含まれる資格情報の値は、含まれる資格情報の hash 値の中で最小です これまでに彼が受信し、検証に成功したすべての (r, 1)-メッセージにおいて。さらに、提案されているように、 Georgios Vlachos によると、各潜在的なリーダー i も自分の資格 \(\sigma\)r,1 を伝播することが有益です。 私は 個別に: これらの小さなメッセージはブロックよりも速く送信され、mr,1 のタイムリーな伝播が保証されます。 jさん ここで、含まれる認証情報は小さい hash 値を持ち、それらは大きい hash 値を持ちます。 すぐに消えます。 ステップ 2: 段階的コンセンサス プロトコル GC の最初のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 2 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,2 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,2 の場合、i はステップ 2 の実行を直ちに停止します。 • i \(\in\)SV r,2 の場合、時間 t2 \(\triangleq\) \(\lambda\) + Λ だけ待機した後、i は次のように動作します。 1. 彼は、H(\(\sigma\)r,1 となるようなユーザー \(\ell\) を見つけます。 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) すべての資格情報 \(\sigma\)r,1 について j の一部です 彼がこれまでに受信した、検証に成功した (r, 1)-メッセージ。 2. 彼が \(\ell\) から有効なメッセージを受け取った場合 mr,1 \(\ell\) = (Br \(\ell\)、esig\(\ell\)(H(Br \(\ell\)))、\(\sigma\)r,1 \(\ell\)),b then i を設定します v' i\(\triangleq\)H(Br \(\ell\));それ以外の場合は v' を設定します 私は\(\triangleq\) \(\bot\)です。 3. 私はメッセージ mr,2 を計算します 私は \(\triangleq\)(ESIG(v' i)、\(\sigma\)r,2 i ),c は一時的な秘密鍵を破壊します 2クローナ i 、そして mr,2 を伝播します 私は。 a基本的に、ユーザー i は、ラウンド r のリーダーがユーザー \(\ell\) であることを非公開で決定します。 b 繰り返しますが、プレイヤー \(\ell\) の署名と hashes はすべて正常に検証され、支払いが完了します。 \(\ell\)in Br \(\ell\)は有効な給与セットです ラウンド r — ただし、PAY r かどうかはチェックしません \(\ell\)が\(\ell\)の最大値かどうか。 cメッセージ mr,2 私は プレイヤー i が v' とみなす信号 i は次のブロックの hash であるか、次のブロックであるとみなします。 ブロックを空にします。 17つまり、すべての署名が正しく、ブロックとその hash の両方が有効です。ただし、チェックはしていません。 含まれる給与セットが提案者にとって最大であるかどうか。

ステップ 3: GC の 2 番目のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 3 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,3 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,3 の場合、i はステップ 3 の実行を直ちに停止します。 • i \(\in\)SV r,3 の場合、t3 \(\triangleq\) t2 + 2\(\lambda\) = 3\(\lambda\) + Λ だけ待機した後、i は次のように動作します。 1. すべての有効なメッセージ mr,2 のような値 v' ̸= \(\bot\)が存在する場合 j 彼が受け取ったのは、 それらの 2/3 以上は次の形式です (ESIGj(v'), \(\sigma\)r,2 j ) 矛盾なく、a 次に、メッセージ mr,3 を計算します。 私は \(\triangleq\)(ESIGi(v'), \(\sigma\)r,3 私)。それ以外の場合は、mr,3 を計算します。 私は \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 私)。 2. 私は彼の一時的な秘密鍵 skr を破壊します、3 i 、そして mr,3 を伝播します 私は。 aつまり、ESIGj(v') と異なる ESIGj(v') をそれぞれ含む 2 つの有効なメッセージを受信していません。 選手Jよりこことここから、後で定義される終了条件を除いて、正直なプレイヤーはいつでも 特定の形式のメッセージが必要ですが、互いに矛盾するメッセージは決してカウントされず、有効とは見なされません。ステップ 4: GC の出力と BBA の最初のステップ⋆ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 4 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,4 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,4 の場合、i はステップ 4 の実行を直ちに停止します。 • i \(\in\)SV r,4 の場合、t4 \(\triangleq\) t3 + 2\(\lambda\) = 5\(\lambda\) + Λ だけ待機した後、i は次のように動作します。 1. 次のように、GC の出力である vi と gi を計算します。 (a) すべての有効なメッセージ mr,3 の中に、次のような値 v' ̸= \(\bot\)が存在する場合 j 彼は持っています 受信すると、そのうちの 2/3 以上が (ESIGj(v'), \(\sigma\)r,3 j )、その後、彼は設定します vi \(\triangleq\) v ' および gi \(\triangleq\) 2。 (b) それ以外の場合、すべての有効なメッセージの中に、次のような値 v' ̸= \(\bot\)が存在する場合 さん、3 j 彼が受け取ったもののうち、1/3 以上は次の形式です (ESIGj(v'), \(\sigma\)r,3 j)、その後 彼は vi \(\triangleq\) v ' および gi \(\triangleq\) 1.a を設定します。 (c) それ以外の場合、vi \(\triangleq\)H(Br ϫ ) および gi \(\triangleq\) 0。 2. 次のように、BBA⋆ の入力である bi を計算します。 gi = 2 の場合は bi \(\triangleq\) 0、それ以外の場合は bi \(\triangleq\) 1。 3. 彼はメッセージ mr,4 を計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i )、彼の一時的なものを破壊します 秘密鍵 SKR,4 i 、そして mr,4 を伝播します 私は。 a ケース (b) の v' が存在する場合、それは一意でなければならないことが証明できます。

ステップ s, 5 \(\leq\) s \(\leq\) m + 2, s −2 ≡0 mod 3: BBA⋆ のコイン固定の 0 ステップ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 Br−1を知っています。 • ユーザー i は、Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,s かどうかを確認します。 • i /\(\in\)SV r,s の場合、i はステップ s の実行を直ちに停止します。 • i \(\in\)SV r,s の場合、彼は次のように動作します。 – 時間 ts \(\triangleq\) ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: この待機中および任意の時点で、 文字列 v ̸= \(\bot\)および次のようなステップ s' (a) 5 \(\leq\) s' \(\leq\) s, s' −2 ≡0 mod 3 —つまり、ステップ s' は Coin-Fixed-To-0 ステップです。 (b) 私は少なくとも tH を受け取りました = 2n 3 + 1 個の有効なメッセージ mr,s′−1 j = (ESIGj(0), ESIGj(v)、\(\sigma\)r,s′−1 j )、a、そして (c) 私は有効なメッセージ mr,1 を受信しました j = (Br j , esigj(H(Br j ))、\(\sigma\)r,1 j ) v = H(Br j)、 次に、私はステップ s (実際にはラウンド r) の実行をすぐに停止します。 何かを広めること。 Br = Br を設定します j ;そして、自分自身の CERT r をメッセージのセットとして設定します。 ミスター、s'−1 j サブステップ (b).b – 終了条件 1: 待機中および任意の時点で、 次のようなステップ s' (a’) 6 \(\leq\)s’ \(\leq\) s, s’ −2 ≡1 mod 3 —つまり、ステップ s’ は Coin-Fixed-To-1 ステップであり、 (b’) i は少なくとも tH 個の有効なメッセージ mr,s’−1 を受信しました j = (ESIGj(1)、ESIGj(vj)、 \(\sigma\)r,s′−1 j )、c 次に、私はステップ s (実際にはラウンド r) の実行をすぐに停止します。 何かを広めること。 Br = Br を設定します  ̄ ;そして、自分自身の CERT r をメッセージのセットとして設定します。 ミスター、s'−1 j サブステップ(b’)の。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、すべての有効なコンポーネントの 2 番目のコンポーネントにおける vj の多数決として vi を設定します。 さん、s−1 j を彼は受け取りました。 彼は次のように bi を計算します。 すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 0 を設定します。 それ以外の場合、すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 1 を設定します。 それ以外の場合は、bi \(\triangleq\) 0 を設定します。 彼はメッセージを計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i )、彼の一時的なものを破壊します 秘密鍵 SKR,S i 、そして mr,s を伝播します 私は。 aプレーヤー j からのそのようなメッセージは、プレーヤー i が 1 に署名する j からメッセージを受信した場合でもカウントされます。 終了条件 1 についても同様です。分析で示されているように、これはすべての正直なユーザーが確実に知っているようにするために行われます。 Br は互いに時間 \(\lambda\) 以内にあります。 b ユーザー i は、Br と彼自身のラウンド フィニッシュを知りました。彼は今でも一般ユーザーとしてメッセージの伝達に貢献していますが、 (r, s)-verifier として伝播を開始しません。特に、彼はすべてのメッセージを広めるのに貢献しました。 CERT r。このプロトコルにはこれで十分です。バイナリ BA プロトコルに対しても bi \(\triangleq\) 0 を設定する必要があることに注意してください。 とにかくこの場合は必要ありません。今後のすべての指示についても同様のことが起こります。 c この場合、vj が何であるかは関係ありません。ステップ s, 6 \(\leq\) s \(\leq\) m + 2, s −2 ≡1 mod 3: BBA のコイン固定 To-1 ステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,s かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,s の場合、i はステップ s の実行を直ちに停止します。 • i \(\in\)SV r,s の場合、次のことを行います。 – 時間 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ手順。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ手順。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、すべての有効なコンポーネントの 2 番目のコンポーネントにおける vj の多数決として vi を設定します。 さん、s−1 j を彼は受け取りました。 彼は次のように bi を計算します。 すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 0 を設定します。 それ以外の場合、すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 1 を設定します。 それ以外の場合は、bi \(\triangleq\) 1 を設定します。 彼はメッセージを計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i )、彼の一時的なものを破壊します 秘密鍵 SKR,S i 、そして mr,s を伝播します 私は。

ステップ s, 7 \(\leq\) s \(\leq\) m + 2, s −2 ≡2 mod 3: BBA の本物のコイン投げステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,s かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,s の場合、i はステップ s の実行を直ちに停止します。 • i \(\in\)SV r,s の場合、次のことを行います。 – 時間 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ手順。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ手順。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、すべての有効なコンポーネントの 2 番目のコンポーネントにおける vj の多数決として vi を設定します。 さん、s−1 j を彼は受け取りました。 彼は次のように bi を計算します。 すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 0 を設定します。 それ以外の場合、すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 1 を設定します。 それ以外の場合は、SV r,s−1 とします。 私は 彼が有効な情報を受け取った (r, s −1)-検証者の集合である メッセージ ミスター、s−1 j 。彼は bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 私は H(\(\sigma\)r,s−1 j ))。 彼はメッセージを計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i )、彼の一時的なものを破壊します 秘密鍵 SKR,S i 、そして mr,s を伝播します 私は。

ステップ m + 3: BBA⋆a の最後のステップ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ m + 3 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,m+3 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,m+3 の場合、i はステップ m + 3 の実行をすぐに停止します。 • i \(\in\)SV r,m+3 の場合、次の操作を行います。 – 時間 tm+3 \(\triangleq\) tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ手順。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ手順。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、i \(\triangleq\) 1 および Br \(\triangleq\) Br を設定します。 ああ。 彼はメッセージ mr,m+3 を計算します 私は = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 私は )、彼のものを破壊します 一時的な秘密鍵 skr,m+3 私は 、そして mr,m+3 を伝播します。 私は Br.bを証明する a圧倒的な確率で BBA⋆ はこのステップの前に終了しているため、完全を期すためにこのステップを指定します。 bステップ m + 3 の証明書には ESIGi(outi) が含まれている必要はありません。統一性を高めるためだけにこれを含めます。 証明書は、生成されるステップに関係なく、統一された形式を持つようになりました。非検証者による Round-r ブロックの再構築 システム内のすべてのユーザー i に対する指示: ユーザー i は、知ったらすぐに自分のラウンド r を開始します。 Br-1 を実行し、次のようにブロック情報を待ちます。 – そのような待機中および任意の時点で、そのような文字列 v とステップ s' が存在する場合 それ (a) 5 \(\leq\) s′ \(\leq\) m + 3、s′ −2 ≡0 mod 3、 (b) i は少なくとも tH 個の有効なメッセージ mr,s'−1 を受信しました j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j )、そして (c) 私は有効なメッセージ mr,1 を受信しました j = (Br j , esigj(H(Br j ))、\(\sigma\)r,1 j ) v = H(Br j)、 その後、私は彼自身のラウンド r の実行をすぐに停止します。 Br = Br を設定します j;そして自分自身の CERT r を設定します メッセージのセット mr,s'−1 j サブステップ(b)の。 – そのような待機中および任意の時点で、次のようなステップ s' が存在する場合、 (a’) 6 \(\leq\) s’ \(\leq\) m + 3、s’ −2 ≡1 mod 3、および (b’) i は少なくとも tH 個の有効なメッセージ mr,s’−1 を受信しました j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j )、 その後、私は彼自身のラウンド r の実行をすぐに停止します。 Br = Br を設定します っ;そして自分自身の CERT r を設定します メッセージのセット mr,s'−1 j サブステップ(b’)の。 – そのような待機中および任意の時点で、少なくとも tH 個の有効なメッセージを受信した場合 さん、m+3 j = (ESIGj(1), ESIGj(H(Br ϫ ))、\(\sigma\)r,m+3 j )、その後、私は彼自身のラウンド r の実行を停止します。 すぐに、Br = Br と設定します。 iq は、自分自身の CERT r をメッセージのセット mr,m+3 に設定します。 j 1人分 と H(Br )。 5.5 Algorand の分析 1 解析で使用される各ラウンド r \(\geq\)0 に次の表記法を導入します。 • 最初に正直なユーザーが Br-1 を知った時刻を T r とします。 • Ir+1 を区間 [T r+1, T r+1 + \(\lambda\)] とします。 プロトコルの初期化により、T 0 = 0 になることに注意してください。各 s \(\geq\)1 および i \(\in\)SV r,s について、次のことを思い出してください。 \(\alpha\)r,s 私は と\(\beta\)r、s 私は はそれぞれプレイヤー i のステップ s の開始時間と終了時間です。さらに、 各 2 \(\leq\) s \(\leq\) m + 3 について、ts = (2s −3)\(\lambda\) + Λ であることを思い出してください。さらに、I0 \(\triangleq\) {0} および t1 \(\triangleq\) 0 とします。 最後に、Lr \(\leq\) m/3 はベルヌーイ試行回数を表す確率変数であることを思い出してください。 各試行が確率 ph で 1 である場合、1 を確認するために必要 2、最大でも m/3 のトライアルが存在します。もしすべてなら 試行が失敗すると、Lr \(\triangleq\) m/3 になります。 実際、必要な時間に比べれば計算時間は無視できるため、分析では計算時間を無視します。 メッセージを伝播します。いずれの場合も、少し大きな \(\lambda\) と Λ を使用することで、計算時間を短縮できます。 分析に直接組み込むことができます。以下のステートメントのほとんどは、「圧倒的な そして、分析においてこの事実を繰り返し強調することはないかもしれません。5.6 主定理 定理5.1。次の特性は、各ラウンド r \(\geq\)0 で圧倒的な確率で当てはまります。 1. すべての正直なユーザーが同じブロック Br に同意します。 2. リーダー \(\ell\)r が正直である場合、ブロック Br は \(\ell\)r によって生成され、Br には最大のペイセットが含まれます 時間\(\alpha\)r,1までに\(\ell\)rが受信 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ そして正直なユーザーは皆、当時の Br を知っています。 間隔 Ir+1。 3. リーダー \(\ell\)r が悪意のある場合、T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ となり、すべての正直なユーザーは Br を知っています。 時間間隔 Ir+1 で。 4. Lr に対して ph = h2(1 + h −h2) であり、リーダー \(\ell\)r は少なくとも ph の確率で正直です。 私たちの主定理を証明する前に、2 つの点について述べておきます。 備考。 • ブロック生成と真のレイテンシー。ブロック Br を生成する時間は、T r+1 -T r と定義されます。 つまり、正直なユーザーが初めて Br を学習したときと、 正直なユーザーが初めて Br-1 を学習するとき。ラウンドリーダーが正直であれば、プロパティ 2 主定理により、Br を生成する正確な時間は、何があっても 8\(\lambda\) + Λ 時間であることが保証されます。 h の正確な値は 2/3 を超える場合があります。リーダーが悪意のある場合、特性 3 は、 Br の生成にかかる予想時間の上限は ( 12 ph + 10)\(\lambda\) + Λ、やはり正確さは関係ありません h.18 の値 ただし、Br が生成されるまでの予想時間は、h の正確な値によって異なります。 実際、性質 4 より、ph = h2(1 + h −h2) であり、リーダーは少なくとも確率に関しては正直です。 ph、したがって E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ)。 たとえば、h = 80% の場合、E[T r+1 −T r] \(\leq\)12.7\(\lambda\) + Λ となります。 • \(\lambda\) 対 Λ。ステップ Algorand ' で検証者によって送信されるメッセージのサイズが支配的であることに注意してください。 デジタル署名キーの長さによって決まります。デジタル署名キーの数が増えても、その長さは固定されたままにすることができます。 ユーザーは膨大です。また、どのステップ s > 1 でも、検証者の期待数 n は同じであることに注意してください。 ユーザー数が 100K、100M、または 100M のいずれであっても使用できます。これは単に n だけであるため、そうなります。 したがって、秘密鍵の長さを突然増やす必要がない限り、次のようになります。 \(\lambda\) の値は、ユーザーの数がどれほど多くても同じままである必要があります。 予見可能な未来。 対照的に、どのトランザクション レートでも、トランザクション数はトランザクション数に応じて増加します。 ユーザー。したがって、すべての新しいトランザクションをタイムリーに処理するには、ブロックのサイズが次のとおりである必要があります。 ユーザーの数とともに成長するため、Λ も成長します。したがって、長期的には、次のようにする必要があります。 \(\lambda\) << Λ。したがって、\(\lambda\) の係数を大きくするのが適切であり、実際には係数 Λの場合は1の。 定理5.1の証明。性質 1 ~ 3 を帰納法によって証明します: ラウンド r −1 に当てはまると仮定します。 (一般性を失うことなく、r = 0 の場合、これらは自動的に「round -1」に当てはまります)、これらを証明します。 ラウンドR。 18確かに、E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10) \(\lambda\) + Λ。Br-1 は帰納的仮説によって一意に定義されるため、集合 SV r,s は一意に定義されます。 ラウンド r の各ステップ s に対して。 n1 の選択により、圧倒的な確率で SV r,1 ̸= \(\emptyset\) となります。私たちは今 セクション 5.7 と 5.8 で証明された次の 2 つの補題を述べます。導入中も導入中も 2 つの補題の証明、ラウンド 0 の分析は帰納的ステップとほぼ同じです。 違いが生じた場合には、それを強調します。 補助定理 5.2. [完全性補題] リーダーがラウンド r−1 でプロパティ 1 ~ 3 が保持されると仮定します。 \(\ell\)rは正直で、圧倒的な確率で、 • すべての正直なユーザーは、\(\ell\)r によって生成され、最大値を含む同じブロック Br に同意します。 時間 \(\alpha\)r,1 までに \(\ell\)r が受け取った給与セット \(\ell\)r \(\in\)Ir;そして • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ であり、すべての正直なユーザーは時間間隔 Ir+1 における Br を知っています。 補助定理 5.3. [健全性補題] リーダーがラウンド r −1 に対してプロパティ 1 ~ 3 が成立すると仮定すると、 \(\ell\)r は悪意があり、圧倒的な確率で、すべての正直なユーザーが同じブロック Br、T r+1 \(\leq\) に同意します T r + (6Lr + 10)\(\lambda\) + Λ とすべての正直なユーザーは、時間間隔 Ir+1 における Br を知っています。 プロパティ 1 ~ 3 は、補助定理 5.2 および 5.3 を r = 0 および帰納ステップに適用することによって成立します。最後に、 セクション 5.9 で証明されたプロパティ 4 を次の補題として言い換えます。 補題 5.4. r の前の各ラウンドのプロパティ 1 ~ 3 が与えられると、Lr については ph = h2(1 + h −h2)、 リーダー\(\ell\)r は少なくとも ph の確率で正直です。 上記の 3 つの補題を組み合わせると、定理 5.1 が成り立ちます。 ■ 以下の補題は、帰納法を考慮した場合の丸め r に関するいくつかの重要な性質を述べています。 仮説であり、上記の 3 つの補題の証明に使用されます。 補題 5.5。特性 1 ~ 3 がラウンド r −1 に当てはまると仮定します。ラウンド r の各ステップ s \(\geq\)1 および それぞれの正直な検証者 i \(\in\)HSV r,s は、 (a) \(\alpha\)r,s 私は \(\in\)Ir; (b) プレイヤー i が時間 ts 待った場合、\(\beta\)r,s 私は \(\in\)[T r + ts, T r + \(\lambda\) + ts] (r > 0 の場合) \(\beta\)r,s 私は = ts (r = 0);そして (c) プレイヤー i が時間 ts 待った場合、時間 \(\beta\)r,s までに 私、彼はすべてのメッセージを受け取りました すべてのステップ s' < s について、すべての正直な検証者 j \(\in\)HSV r,s' によって送信されます。 さらに、各ステップ s \(\geq\)3 について、次のようになります。 (d) 2 人の異なるプレイヤー i、i' \(\in\)SV r,s と、同じプレイヤーの 2 つの異なる値 v、v' は存在しません。 両方のプレーヤーがすべての時間の 2/3 を超える時間 ts を待機したような長さ 有効なメッセージ mr,s−1 j 私が受け取った選手は v にサインしており、有効な選手全員の 2/3 以上がサインしています。 メッセージ mr,s−1 j プレーヤー i' が v' と契約したことを受け取ります。 証拠。プレーヤー i は Br−1 を知っているため、特性 (a) は帰納的仮説から直接得られます。 時間間隔 Ir を設定し、すぐに自分のステップを開始します。プロパティ (b) は (a) から直接得られます。 プレイヤー i は行動する前に ts 時間待機しました、\(\beta\)r,s 私は = \(\alpha\)r,s 私は +ts. \(\alpha\)r,s に注意してください。 私は = 0 r = 0。 ここで性質 (c) を証明します。 s = 2 の場合、プロパティ (b) により、すべての検証者 j \(\in\)HSV r,1 について次のようになります。 \(\beta\)r,s 私は = \(\alpha\)r,s 私は + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j +Λ。各検証者 j \(\in\)HSV r,1 は時刻 \(\beta\)r,1 にメッセージを送信するため、 j そしてメッセージはすべての正直者に届きます ユーザー数は最大 Λ 時間、時間別 \(\beta\)r,s 私は プレイヤー i は、すべての検証者によって送信されたメッセージを受信しました。 必要に応じて、HSV r,1。 s > 2 の場合、ts = ts−1 + 2\(\lambda\)。プロパティ (b) により、すべてのステップ s' < s およびすべての検証者 j \(\in\)HSV r,s' に対して、 \(\beta\)r,s 私は = \(\alpha\)r,s 私は + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) ≧\(\beta\)r,s′ j + \(\lambda\)。 各検証者 j \(\in\)HSV r,s' は時刻 \(\beta\)r,s' にメッセージを送信するため、 j そしてメッセージはすべての正直者に届きます 最大 \(\lambda\) 時間のユーザー数、時間 \(\beta\)r,s ごと 私は プレイヤー i はすべての正直な検証者から送信されたすべてのメッセージを受信しました HSV では、すべての s' < s に対して r,s'。したがって、性質(c)が成り立つ。 最後に、性質 (d) を証明します。検証者 j \(\in\)SV r,s−1 は、次の中で最大 2 つのものに署名することに注意してください。 一時的な秘密鍵を使用したステップ s −1: の出力と同じ長さの値 vj hash 関数、および s −1 \(\geq\)4 の場合、ビット bj \(\in\){0, 1}。だからこそ、補題のステートメントでは v と v' は同じ長さである必要があります。多くの検証者は両方の hash 値に署名している可能性があります。 v とビット b なので、両方とも 2/3 しきい値を通過します。 矛盾を避けるために、目的の検証子 i、i' と値 v、v' が存在すると仮定します。 MSV r,s-1 内の悪意のある検証者の中には v と v' の両方に署名している可能性があることに注意してください。 HSV r,s-1 の検証者は、それらのうちの 1 つまでに署名しました。プロパティ (c) により、i と i' は両方とも受信しました HSV r,s-1 内のすべての正直な検証者によって送信されたすべてのメッセージ。 HSV r,s−1(v) を、v に署名した正直な (r, s −1) 検証者のセットとする、MSV r,s−1 私は セット i が有効なメッセージを受信した悪意のある (r, s −1) 検証者の数と MSV r,s−1 私は (v) MSV r,s−1 のサブセット 私は 誰から有効なメッセージ署名を受信したか v. の要件による i と v は、 比 \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 私は (v)| |HSV r,s−1| + |MSV r,s−1 私は |

2 3. (1) まずはお見せします |MSV r,s−1 私は (v)| \(\leq\)|HSV r,s−1(v)|。 (2) そうでないと仮定すると、パラメータ間の関係から圧倒的な確率で |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 私は | したがって、 比 < |HSV r,s−1(v)| + |MSV r,s−1 私は (v)| 3|MSV r,s−1 私は | < 2|MSV r,s−1 私は (v)| 3|MSV r,s−1 私は | \(\leq\)2 3、 矛盾1。 次に、不等式 1 により、次のようになります。 2|HSV r,s−1| + 2|MSV r,s−1 私は | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 私は (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 私は | + |MSV r,s−1 私は (v)|。 不等式2と組み合わせると、 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 私は (v)| \(\leq\)4|HSV r,s−1(v)|, それは意味します |HSV r,s−1(v)| > 1 2|HSV r,s−1|。同様に、i' と v' の要件により、次のようになります。 |HSV r,s−1(v')| > 1 2|HSV r,s−1|。 正直な検証者 j \(\in\)HSV r,s−1 は一時的な秘密鍵 skr,s−1 を破壊するので、 j 伝播する前に 彼のメッセージによれば、敵対者は、j が署名していない値に対する j の署名を偽造することはできません。 j が検証者であることを学習します。したがって、上記の 2 つの不等式は |HSV r,s−1| を意味します。 ≧|HSV r,s−1(v)| + |HSV r,s−1(v')| > |HSV r,s−1|、矛盾しています。したがって、目的の i、i'、v、v' は存在せず、 性質(d)が成り立つ。 ■ 5.7 完全性の補題 補助定理 5.2. [完全性補題、再掲] ラウンド r−1 に対してプロパティ 1 ~ 3 が成立すると仮定すると、 リーダー\(\ell\)rは正直で、圧倒的な確率で、 • すべての正直なユーザーは、\(\ell\)r によって生成され、最大値を含む同じブロック Br に同意します。 時間 \(\alpha\)r,1 までに \(\ell\)r が受け取った給与セット \(\ell\)r \(\in\)Ir;そして • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ であり、すべての正直なユーザーは時間間隔 Ir+1 における Br を知っています。 証拠。帰納的仮説と補題 5.5 により、各ステップ s と検証者 i \(\in\)HSV r,s に対して、 \(\alpha\)r,s 私は \(\in\)Ir.以下では、プロトコルを段階的に分析します。 ステップ1. 定義により、すべての正直な検証者 i \(\in\)HSV r,1 は、目的のメッセージ mr,1 を伝播します。 私は で 時間 \(\beta\)r,1 私は = \(\alpha\)r,1 私、ここで、mr,1 私は = (Br i , エシギ(H(Br i))、\(\sigma\)r,1 i)、Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)), そして支払ってください i は、時間 \(\alpha\)r,1 までに確認されたすべての支払いの中で最大の支払いセットです。 私は。 ステップ2。 正直な検証者 i \(\in\)HSV r,2 を任意に修正します。補題 5.5 により、プレイヤー i が終了したとき 時間 \(\beta\)r,2 で待機中 私は = \(\alpha\)r,2 私は + t2、彼は HSV r,1 の検証者によって送信されたすべてのメッセージを受信しました。 さん、1 \(\ell\)r 。 \(\ell\)r の定義によれば、資格情報が hash である他のプレイヤーは PKr-k に存在しません。 値が H(\(\sigma\)r,1 より小さい) \(\ell\)r)。もちろん、敵対者は H(\(\sigma\)r,1 \(\ell\)r) は非常に小さいですが、その時までにプレイヤー \(\ell\)r は一時的な鍵とメッセージ mr,1 を破壊しています。 \(\ell\)r が伝播されてきました。したがって、検証者 i は自分のリーダーをプレイヤー \(\ell\)r に設定します。したがって、時刻 \(\beta\)r,2 では、 私、 検証者 i が mr,2 を伝播します 私は = (ESIG(v' i)、\(\sigma\)r,2 i )、ここで v' i = H(Br \(\ell\)r)。 r = 0の場合、唯一の違いは それは\(\beta\)r,2ですか 私は = t2 の範囲内にあるのではなく。今後のステップについても同様のことが言えます。 それらを再び強調することはありません。 ステップ3。 正直な検証者 i \(\in\)HSV r,3 を任意に修正します。補題 5.5 により、プレイヤー i が終了したとき 時間 \(\beta\)r,3 で待機中 私は = \(\alpha\)r,3 私は + t3、彼は HSV r,2 の検証者によって送信されたすべてのメッセージを受信しました。 パラメータ間の関係により、圧倒的な確率で |HSV r,2| > 2|MSV r,2|。さらに、誠実な検証者は矛盾するメッセージに署名することはありません。 正直な検証者が対応する署名を破棄した後は、その署名を偽造することはできない 一時的な秘密鍵。したがって、私が受信したすべての有効な (r, 2)-メッセージの 2/3 以上は、 正直な検証者、形式は mr,2 j = (ESIGj(H(Br \(\ell\)r))、\(\sigma\)r,2 j )、矛盾はありません。 したがって、時刻 \(\beta\)r,3 では、 私は プレイヤー i が mr,3 を伝播します 私は = (ESIGi(v'), \(\sigma\)r,3 i )、ここで v' = H(Br \(\ell\)r)。ステップ4。 正直な検証者 i \(\in\)HSV r,4 を任意に修正します。補題 5.5 により、プレイヤー i はすべてを受け取りました 検証者が時間 \(\beta\)r,4 で待機し終えたときに、HSV r,3 の検証者によって送信されるメッセージ 私は = \(\alpha\)r,4 私は +t4。に似ている ステップ 3、私が受け取ったすべての有効な (r, 3)-メッセージの 2/3 以上は誠実な検証者からのものであり、 mr,3 という形式の j = (ESIGj(H(Br \(\ell\)r))、\(\sigma\)r,3 j)。 したがって、プレイヤー i は vi = H(Br \(\ell\)r)、gi = 2、bi = 0。時刻 \(\beta\)r,4 私は = \(\alpha\)r,4 私は +t4 彼は伝播します ミスター、4 私は = (ESIGi(0), ESIGi(H(Br \(\ell\)r))、\(\sigma\)r,4 私)。 ステップ5。 正直な検証者 i \(\in\)HSV r,5 を任意に修正します。 補題 5.5 によれば、プレーヤーは次のようになります。 時間 \(\alpha\)r,5 まで待っていれば、検証者によって送信されたすべてのメッセージを HSV r,4 で受信しました 私は +t5。注意してください |HSV r,4| \(\geq\)tH.19 また、HSV r,4 のすべての検証者が H(Br \(\ell\)r)。 |MSV r,4| として< tH、v′ ̸= H(Br \(\ell\)r) tH によって署名された可能性があります SV r,4 の検証者 (必然的に悪意のある人物) なので、プレイヤー i は、完了する前に停止しません。 有効なメッセージを受信しました mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r))、\(\sigma\)r,4 j)。 T を次の時刻とします。 後者の出来事が起こります。これらのメッセージの一部は悪意のあるプレーヤーからのものである可能性がありますが、 |MSV r,4| < tH、少なくとも 1 つは HSV r,4 の誠実な検証者からのものであり、時間が経過してから送信されます T r +t4。したがって、T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ、そしてやがて T プレイヤーも受け取りました メッセージミスター1 \(\ell\)r 。プロトコルの構築により、プレイヤー i は時刻 \(\beta\)r,5 で停止します。 私は = T なし 何かを広めること。 Br = Br を設定します \(\ell\)r;そして、自分自身の CERT r を (r, 4)-メッセージのセットに設定します。 0 と H(Br \(\ell\)r) 彼が受け取ったもの。 ステップ s > 5。 同様に、任意のステップ s > 5 および任意の検証者 i \(\in\)HSV r,s について、プレイヤー i は次のようになります。 時間 \(\alpha\)r,s まで待っていれば、検証者によって送信されたすべてのメッセージを HSV r,4 で受信しました 私は +ts.によって 同じ分析、プレーヤー i は何も伝播せずに停止し、Br = Br に設定します。 \(\ell\)r (そして自分自身の設定 CERT を適切に実行します)。もちろん、悪意のある検証者は止まらず、任意の情報を伝播する可能性があります。 メッセージですが、 |MSV r,s| のため< tH、帰納法により、検証者は他の v' に署名できません どのステップでも 4 \(\leq\) s' < s であるため、正直な検証者は有効な tH を受け取ったためにのみ停止します。 (r, 4)-0 および H(Br のメッセージ) \(\ell\)r)。 Round-rブロックの再建。 ステップ 5 の分析は、一般的な正直者に適用されます。 ユーザー i はほとんど変更ありません。実際、プレーヤー i は、インターバル Ir で自分のラウンド r を開始し、 H(Br への有効な (r, 4) メッセージを tH 回受信したときのみ、時刻 T に停止します。 \(\ell\)r)。またまただから これらのメッセージの少なくとも 1 つは正直な検証者からのものであり、時間 T r + t4 の後に送信され、プレイヤー i は Mr.1も受け取りました \(\ell\)r を時間 T で計算します。したがって、Br = Br と設定します。 \(\ell\)r を適切な CERT r と照合します。 すべての正直なユーザーが時間間隔 Ir+1 内にラウンド r を終了することを示すだけです。 ステップ 5 の分析により、すべての正直な検証者 i \(\in\)HSV r,5 は、\(\alpha\)r,5 以降の Br を知っています。 私は +t5≦ T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ。 T r+1 は、最初に正直なユーザー ir が Br を知っている時間であるため、次のようになります。 T r+1 \(\leq\)T r + 8\(\lambda\) + Λ 希望どおりに。さらに、プレイヤー ir が Br を知っているとき、彼はすでにメッセージの伝播に協力しています。 彼の CERT r.これらのメッセージはすべて、たとえ 19厳密に言えば、これは非常に高い確率で起こりますが、必ずしも圧倒的ではありません。 ただし、これは 確率はプロトコルの実行時間にわずかに影響しますが、その正確さには影響しません。 h = 80% の場合、 |HSV r,4|確率 1 −10−8 で \(\geq\)tH。このイベントが発生しない場合、プロトコルは別のイベントで続行されます。 3ステップ。これが 2 つのステップで発生しない確率は無視できるため、プロトコルはステップ 8 で終了します。 したがって、必要なステップ数はほぼ 5 であることが予想されます。プレイヤー ir は、それらを広めた最初のプレイヤーでした。さらに、上記の分析に従って、 T r+1 ≧T r + t4 ≧\(\beta\)r,1 \(\ell\)r + Λ、したがって、すべての正直なユーザーは mr,1 を受け取ります \(\ell\)r は時間 T r+1 + \(\lambda\) で計算されます。したがって、 すべての正直なユーザーは、時間間隔 Ir+1 = [T r+1, T r+1 + \(\lambda\)] における Br を知っています。 最後に、r = 0 の場合、実際には T 1 \(\leq\) t4 + \(\lambda\) = 6\(\lambda\) + Λ になります。すべてを組み合わせて、 補題 5.2 が成り立ちます。 ■ 5.8 健全性の補題 補助定理 5.3. [健全性補題、再掲] ラウンド r −1 に対してプロパティ 1 ~ 3 が成立すると仮定すると、 リーダー\(\ell\)r は悪意があり、圧倒的な確率で、すべての正直なユーザーが同じブロックに同意します Br、T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ、そしてすべての正直なユーザーは、時間間隔 Ir+1 における Br を知っています。 証拠。プロトコルの 2 つの部分、GC と BBA⋆ を別々に検討します。 GC。 帰納的仮説と補題 5.5 により、任意のステップ s \(\in\){2, 3, 4} および任意の正直な 検証者 i \(\in\)HSV r,s、プレイヤー i が時刻 \(\beta\)r,s に行動するとき 私は = \(\alpha\)r,s 私は + ts、彼は送信されたすべてのメッセージを受信しました ステップ s' < s のすべての正直な検証者による。ステップ 4 では、考えられる 2 つのケースを区別します。 ケース 1. 検証者なし i \(\in\)HSV r,4 は gi = 2 を設定します。 この場合、定義により、すべての検証者 i \(\in\)HSV r,4 に対して bi = 1 となります。つまり、で始まります。 バイナリ BA プロトコルの 1 に関する合意。 vi に関して合意が得られていない可能性がありますが、 しかし、バイナリ BA でわかるように、これは問題ではありません。 ケース 2. g^i = 2 となる検証器 ^i \(\in\)HSV r,4 が存在します。 この場合、次のことを示します。 (1) すべての i \(\in\)HSV r,4 について gi \(\geq\)1、 (2) すべての i \(\in\)HSV r,4 に対して、vi = v' となる値 v' が存在します。 (3) 有効なメッセージ mr,1 が存在します。 \(\ell\) ある検証者 \(\ell\) \(\in\)SV r,1 から、v' = H(Br \(\ell\))。 実際、プレイヤー ^i は正直であり、g ^i = 2 に設定しているため、すべての有効なメッセージの 2/3 以上が mr,3 です。 j 彼が受け取った値は同じ値 v′ ̸= \(\bot\) であり、v^i = v′ と設定しました。 補助定理 5.5 の性質 (d) によれば、他の正直な (r, 4) 検証者 i にとって、それ以上のことはあり得ません。 すべての有効なメッセージの 2/3 よりも少ない mr,3 j i' が受け取った値は、同じ値 v'' ̸= v' です。 したがって、i が gi = 2 と設定した場合、i は v' についても > 2/3 多数派を確認し、設定する必要があります。 必要に応じて、vi = v'。 ここで、gi < 2 の任意の検証器 i \(\in\)HSV r,4 を考えます。プロパティの分析と同様です。 (d) 補助定理 5.5 の場合、プレイヤー ^i は v' に対して 2/3 を超える過半数を獲得しているため、1 を超えています。 2|HSV r,3|正直な (r, 3)-検証者は v' に署名しました。なぜなら、私は正直な (r, 3) 検証者によってすべてのメッセージを受信しているからです。 時間 \(\beta\)r,4 私は = \(\alpha\)r,4 私は + t4、彼は特に 1 つ以上を受け取りました 2|HSV r,3|彼らからのメッセージ v'の場合。なぜなら |HSV r,3| > 2|MSV r,3|、i は v' の > 1/3 過半数を確認しました。したがって、プレイヤーは、 i は gi = 1 を設定し、プロパティ (1) が成立します。 プレイヤー i は必ず vi = v' を設定しますか?次のような異なる値 v'''' ̸= \(\bot\)が存在すると仮定します。 プレーヤー i も、v'' の 1/3 以上の過半数を確認しました。これらのメッセージの一部は悪意のあるものからのものである可能性があります 検証者ですが、そのうちの少なくとも 1 つは誠実な検証者からのものです j \(\in\)HSV r,3: 確かに、なぜなら |HSV r,3| > 2|MSV r,3|そして私は HSV r,3 からのすべてのメッセージを受信しました。 有効な (r, 3) メッセージを受け取った検証者の数は、有効なメッセージ全体の 1/3 未満です。 彼が受け取ったメッセージ。定義により、プレイヤー j は、すべての有効な (r, 2)-メッセージのうち v'' の 2/3 を超える過半数を見た必要があります。 彼は受け取りました。ただし、他の誠実な (r, 3) 検証者がすでに確認していることはわかっています。 v' の 2/3 多数派 (v' に署名したため)。補助定理 5.5 の性質 (d) により、これはできません。 このような値 v'' は存在しません。したがって、プレイヤー i は必要に応じて vi = v' を設定する必要があります。 そして、性質(2)が成り立つ。 最後に、一部の正直な (r, 3) 検証者が v' に対して 2/3 以上の多数派を認めたことを考慮すると、一部の (実際には、 正直な (r, 2) 検証者の半数以上が v' に署名し、メッセージを広めました。 プロトコルの構築により、これらの正直な (r, 2) 検証者は有効な メッセージミスター1 \(\ell\) あるプレイヤーから \(\ell\) \(\in\)SV r,1 with v′ = H(Br \(\ell\))であるため、性質(3)が成り立ちます。 BBA⋆。 ここでも 2 つの場合を区別します。 ケース 1. すべての検証者 i \(\in\)HSV r,4 は bi = 1 を持ちます。 これは GC のケース 1 に続いて発生します。 |MSV r,4| として< tH、この場合、SV r,5 にはベリファイアがありません ビット 0 の有効な (r, 4) メッセージを収集または生成できません。したがって、HSV r,5 には正直な検証者は存在しません。 Br は空ではないブロックを知っているので停止するでしょう。 さらに、ビット 1 には少なくとも tH 個の有効な (r, 4) メッセージがありますが、s' = 5 は満たされません。 s′ −2 ≡1 mod 3 であるため、HSV r,5 の正直な検証者は、Br = Br を知っているので停止することはありません。 ああ。 代わりに、すべての検証者 i \(\in\)HSV r,5 は時間 \(\beta\)r,5 に動作します。 私は = \(\alpha\)r,5 私は + t5、いつまでに彼はすべてを受け取ります Lemma 5.5 に従って HSV r,4 によって送信されるメッセージ。したがって、プレイヤー i は 2/3 を超える過半数を 1 で見たことになります。 そして、bi = 1 を設定します。 Coin-Fixed-To-1 ステップであるステップ 6 では、s' = 5 は s' −2 ≡0 mod 3 を満たしますが、 ビット 0 の有効な (r, 4) メッセージは存在しないため、HSV r,6 のベリファイアは停止しません。 彼は空ではないブロックを知っています。ただし、s′ = 6 の場合、s′ −2 ≡1 mod 3 が存在します。 |HSV r,5| \(\geq\)tH 有効 (r, 5) - HSV r,5 からのビット 1 のメッセージ。 すべての検証者 i \(\in\)HSV r,6 について、補題 5.5 に従って、時刻 \(\alpha\)r,6 またはそれ以前 私は + t6 プレイヤー i HSV r,5 からすべてのメッセージを受信したため、何も伝播せずに停止し、セットします Br = Br ああ。彼の CERT r は、有効な (r, 5)-メッセージ mr,5 のセットです。 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) 彼が立ち止まったときに彼が受け取りました。 次に、プレイヤー i をステップ s > 6 の正直な検証者、または一般的な正直なユーザー (つまり、 非検証者)。補題 5.2 の証明と同様に、プレイヤー i は Br = Br を設定します。 ë と自分自身を設定します CERT r は、tH 有効な (r, 5)-メッセージ mr,5 のセットになります j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j ) 彼は持っています 受け取りました。 最後に、補題 5.2 と同様に、 T r+1 \(\leq\) 分 i\(\in\)HSV r,6 \(\alpha\)r,6 私は + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ、 そして、すべての正直なユーザーは、Ir+1 の時間間隔で Br を知っています。なぜなら、最初の正直なユーザーは、 Br が彼の CERT r で (r, 5)-メッセージの普及に貢献したことを知っています。 ケース 2. b^i = 0 の検証器 ^i \(\in\)HSV r,4 が存在します。 これは GC のケース 2 に続いて発生し、より複雑なケースです。 GCの分析により、 この場合、有効なメッセージ mr,1 が存在します。 \(\ell\) vi = H(Br \(\ell\)) すべての i \(\in\)HSV r,4 について。注記 HSV r,4 の検証者は、BI について合意していない可能性があります。 任意のステップ s \(\in\){5, . 。 。 , m + 3} および検証者 i \(\in\)HSV r,s、補題 5.5 プレーヤーによると、私は次のようになります。 待っていれば、HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 のすべての正直な検証者によって送信されたすべてのメッセージを受信しました 時間のためにts。ここで次のイベント E を考えます。次のようなステップ s∗\(\geq\)5 が存在します。 バイナリ BA の時間、一部のプレイヤー i∗\(\in\)SV r,s∗ (悪意のあるプレイヤーか正直なプレイヤーか) を停止する必要があります。 何も伝播せずに。 「停止すべき」という言葉を使って、プレイヤー i∗ が次のような場合に、 悪意がある場合、プロトコルに従って停止すべきではないふりをする可能性があります。 敵対者が選択したメッセージを伝播します。 また、プロトコルの構築により、 (E.a) i∗ は少なくとも tH 個の有効なメッセージ mr,s'−1 を収集または生成できます j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) 同じ v と s' に対して、5 \(\leq\) s' \(\leq\) s∗ および s' −2 ≡0 mod 3 です。または (E.b) i∗ は少なくとも tH 個の有効なメッセージ mr,s'−1 を収集または生成できます j = (ESIGj(1)、ESIGj(vj)、 \(\sigma\)r,s′−1 j ) 同じ s' に対して、6 \(\leq\) s' \(\leq\) s∗ および s' −2 ≡1 mod 3 です。 なぜなら、正直な (r, s' -1) メッセージは、すべての正直な (r, s') 検証者によって受信される前に、 ステップ s' で待機が完了し、敵対者は遅くとも 正直なユーザーの場合、一般性を失うことなく、s′ = s∗ となり、プレイヤー i∗ は悪意があります。注意してください E.a の値 v が有効なブロックの hash である必要はありませんでした。 解析では、v = H(Br \(\ell\))のサブイベントです。 以下では、まずイベント E に続くケース 2 を分析し、次に s∗ の値が本質的に次のとおりであることを示します。 Lr に応じて分散されます (したがって、イベント E は圧倒的なステップ m + 3 の前に発生します) パラメータの関係を考慮した確率)。まず、任意のステップ 5 \(\leq\) s < s∗ について、 すべての正直な検証者 i \(\in\)HSV r,s は時間 ts を待機し、vi を多数決に設定します。 彼が受信した有効な (r, s−1) メッセージ。プレイヤー i はすべての正直な (r, s−1)-メッセージを受信しているため HSV r,4 のすべての正直な検証者が H(Br \(\ell\))以下の場合 GC の 2、および |HSV r,s−1| 以降> 2|MSV r,s−1|各 s について、帰納法により、そのプレイヤー i が得られます。 設定しました vi = H(Br \(\ell\))。 同じことが、伝播せずに止まらないすべての正直な検証者 i \(\in\)HSV r,s∗にも当てはまります 何でも。ここで、ステップ s を検討し、4 つのサブケースを区別します。 ケース 2.1.a。イベント E.a が発生し、誠実な検証者 i' \(\in\)HSV r,s∗ が存在します。 また、何も伝播せずに停止します。 この場合、s∗−2 ≡0 mod 3 があり、ステップ s∗ は Coin-Fixed-To-0 ステップです。 によって 定義では、プレイヤー i' は次の形式の有効な (r, s∗−1) メッセージを少なくとも tH 受信しました。 (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j )。 HSV r,s∗−1 のすべての検証者が H(Br \(\ell\))と |MSV r,s∗−1| < tH、v = H(Br \(\ell\))。 少なくとも tH −|MSV r,s∗−1| なので\(\geq\)1 個の (r, s∗−1)-メッセージが 0 および v に対して i' によって受信される 時間 T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 の後に、検証者によって HSV r,s∗−1 で送信されます。 \(\ell\) +Λ、 プレイヤー i は mr,1 を受け取りました \(\ell\) 彼がそれらの (r, s∗−1)-メッセージを受信するまでに。したがって、プレーヤー i' は何も伝播せずに停止します。 Br = Br を設定します \(\ell\);そして自分自身の CERT r を 彼が受信した 0 と v に対する有効な (r, s∗−1) メッセージのセット。 次に、他の検証子 i \(\in\)HSV r,s∗ が Br = Br で停止していることを示します。 \(\ell\)、または bi = 0 に設定され、伝播されました (ESIGi(0), ESIGi(H(Br \(\ell\)))、\(\sigma\)r,s 私)。確かに、ステップ s∗ なので、 一部の検証者が何も伝播せずに停止する必要があるのは初めてですが、そのようなことはありません tH (r, s' -1) 検証者が 1 に署名するように、s' −2 ≡1 mod 3 であるステップ s' < s∗ が存在します。 したがって、HSV r,s∗ では Br = Br で停止する検証子はありません。 ああ。さらに、ステップ{4、5、...のすべての正直な検証者と同様に、 。 。 , s∗−1} は H(Br \(\ell\))、あります tH (r, s' -1) 検証者が署名したようなステップ s' \(\leq\) s∗ with s' −2 ≡0 mod 3 は存在しない いくつかの v''̸= H(Br \(\ell\)) —確かに、|MSV r,s'−1| < tH.したがって、HSV r,s∗ のベリファイアは停止しません Br ̸= Br で iq および Br ̸= Br \(\ell\)。つまり、プレイヤー i \(\in\)HSV r,s∗ が何もせずに停止した場合、 何かを宣伝する場合、彼は Br = Br と設定したに違いありません \(\ell\)。 プレイヤー i \(\in\)HSV r,s∗ が時間 ts∗ 待機し、時間にメッセージを伝播した場合 \(\beta\)r,s∗ 私は = \(\alpha\)r,s∗ 私は + ts∗、彼は HSV r,s∗−1 からのすべてのメッセージを受信しました。 tH −|MSV r,s∗−1|そのうちの 0 と v です。 私が 2/3 以上の 1 の過半数を見た場合、彼は 1 に対して 2(tH −|MSV r,s∗−1|) 個以上の有効な (r, s∗−1)-メッセージを確認しました。 2tH −3|MSV r,s∗−1| よりそのうちの 1 つは正直な (r, s∗−1) 検証者からのものです。ただし、これが意味するのは、 |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|、矛盾しています という事実 |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n、 これはパラメータの関係から得られます。したがって、2/3 を超えるものは表示されません。 過半数は 1 であり、ステップ s∗ は Coin-Fixed-To-0 ステップであるため、bi = 0 と設定します。私たちが持っているように 見られるように、vi = H(Br \(\ell\))。したがって、 i は (ESIGi(0), ESIGi(H(Br \(\ell\)))、\(\sigma\)r,s 私)私たちが望んでいたように ショー。 ステップ s∗+ 1 の場合、プレーヤー i' が CERT r 内のメッセージの伝播に協力したため、 時刻\(\alpha\)r,s∗ またはそれ以前 私は + ts∗、HSV r,s∗+1 のすべての正直な検証者は少なくとも tH 有効 (r, s∗−1) - ビット 0 および値 H(Br \(\ell\)) 完了時または完了前 待っています。さらに、HSV r,s∗+1 の検証者は (r, s∗−1)- を受信する前に停止しません。 メッセージ。ビット 1 には他に有効な (r, s' -1) メッセージが存在しないためです。 ステップ s∗ の定義により、s′ −2 ≡1 mod 3 および 6 \(\leq\) s′ \(\leq\) s∗+ 1 となります。特にステップ s∗+ 1 自体は Coin-Fixed-To-1 ステップですが、HSV r,s∗ には正直な検証者が伝播していません 1 のメッセージ、および |MSV r,s∗| < tH. したがって、HSV r,s∗+1 のすべての正直な検証者は何も伝播せずに停止し、Br = と設定します。 Br \(\ell\): 以前と同様に、彼らは mr,1 を受け取りました \(\ell\) 必要な (r, s∗−1)-メッセージを受信する前に。20 同じことが、今後のステップでのすべての正直な検証者と、一般のすべての正直なユーザーにも言えます。 特に、彼らは皆、Br = Br を知っています。 時間間隔 Ir+1 内で \(\ell\) および T r+1 \(\leq\) \(\alpha\)r,s∗ 私は + ts∗\(\leq\)T r + \(\lambda\) + ts∗。 ケース 2.1.b.イベント E.b が発生し、誠実な検証者 i' \(\in\)HSV r,s∗ が存在します。 また、何も伝播せずに停止します。 この場合、s∗−2 ≡1 mod 3 があり、ステップ s∗ は Coin-Fixed-To-1 ステップです。分析 これはケース 2.1.a に似ており、多くの詳細が省略されています。 20もし\(\ell\)が悪意があるなら、彼はミスター1を送り出すかもしれない \(\ell\) 一部の正直なユーザー/検証者が mr,1 を受け取っていないことを願って、遅くなりました。 \(\ell\) まだ 希望する証明書を受け取ったとき。ただし、検証者 ^ i \(\in\)HSV r,4 は b ^ i = 0 および v ^ i = H(Br \(\ell\))として、 正直な検証者 i \(\in\)HSV r,3 の半数以上が vi = H(Br \(\ell\))。これはさらに多くのことを意味します 正直な検証者 i \(\in\)HSV r,2 の半数以上が vi = H(Br \(\ell\))、それらの (r, 2)-検証者は全員 mr,1 を受け取りました \(\ell\)。として 敵対者は検証者と非検証者を区別できず、mr,1 の伝播をターゲットにすることはできません。 \(\ell\) (r, 2)-検証者へ 非検証者に見られることなく。実際、高い確率で、半分以上 (またはかなりの定数) すべての正直なユーザーのうち 1 人が mr を見たことがあります \(\ell\) 自分のラウンドの開始から t2 待った後、r.ここからは、 mr,1 に必要な時間 \(\lambda\)' \(\ell\) 残りの正直なユーザーに到達するのに必要な量は Λ よりもはるかに小さいため、簡略化するために、 それを分析に書き出します。 4\(\lambda\) \(\geq\) \(\lambda\)' の場合、解析は何も変更せずに完了します。ステップ 4 の終わりまでに、すべての 正直なユーザーは m,1 を受け取ったでしょう \(\ell\)。ブロックのサイズが巨大になり、4\(\lambda\) < \(\lambda\)' になった場合、ステップ 3 と 4 で、 プロトコルは各検証者に 2\(\lambda\) ではなく \(\lambda\)'/2 を待つよう要求することができ、分析は継続します。前と同様に、プレーヤー i' は、次の形式の少なくとも tH 個の有効な (r, s∗−1)-メッセージを受信している必要があります。 (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j )。再び s∗ の定義により、ステップは存在しません。 5 \(\leq\) s′ < s∗ with s′ −2 ≡0 mod 3、ここで少なくとも tH (r, s′ −1) 検証者は 0 に署名しており、 同じ v. したがって、プレーヤー i' は何も伝播せずに停止します。 Br = Br を設定します っ;とセット 彼自身の CERT r は、彼が受信したビット 1 の有効な (r, s∗−1) メッセージのセットになります。 さらに、他の検証器 i \(\in\)HSV r,s∗ は Br = Br で停止しているか、 iq 、または bi = を設定しました 1 と伝播 (ESIGi(1)、ESIGi(vi)、\(\sigma\)r,s∗ 私は )。プレイヤーi'が普及に協力してくれたので 彼の CERT r の (r, s∗−1)-メッセージ (時間 \(\alpha\)r,s∗) 私は + ts∗、ここでもすべての正直な検証者 HSV r,s∗+1 は何も伝播せずに停止し、Br = Br に設定します ァ 。同様に、すべて正直です ユーザーは Br = Br を知っています ϫ 時間間隔 Ir+1 内および T r+1 \(\leq\) \(\alpha\)r,s∗ 私は + ts∗\(\leq\)T r + \(\lambda\) + ts∗。 ケース 2.2.a。イベント E.a が発生し、正直な検証者 i' \(\in\)HSV r,s∗who が存在しない 何も伝播せずに停止する必要もあります。 この場合、プレーヤー i∗ は有効な CERT r を持っている可能性があることに注意してください。 i は希望する tH から成ります (r, s∗−1)-敵対者が収集または生成できるメッセージ。ただし、悪意のある 検証者はそれらのメッセージの伝播に協力しない可能性があるため、正直なメッセージが正しいと結論付けることはできません。 ユーザーは時間 \(\lambda\) 以内にそれらを受け取ります。実際、 |MSV r,s∗−1|そのうちのメッセージは次からのものである可能性があります 悪意のある (r, s∗−1) 検証者。メッセージをまったく伝播せず、ただ送信するだけです。 ステップ s∗ で悪意のある検証者にそれらを送信します。 ケース 2.1.a と同様に、ここでは s∗−2 ≡0 mod 3 があり、ステップ s∗ は Coin-Fixed-To-0 ステップです。 および CERT r の (r, s∗−1)-メッセージ i∗はビット0、v = H(Br \(\ell\))。確かに、みんな正直です (r, s∗−1)-検証者は v に署名するため、敵対者は tH 個の有効な (r, s∗−1)-メッセージを生成できません 異なる v' について。 さらに、すべての正直な (r, s∗) 検証者は時間 ts∗ を待機しましたが、過半数の 2/3 を超えていないことがわかります。 ビット 1 についても、 |HSV r,s∗−1| であるため、 + 4|MSV r,s∗−1| < 2n。したがって、すべての正直な検証者は、 i \(\in\)HSV r,s∗bi = 0、vi = H(Br \(\ell\)) を多数決で決定し、mr,s∗ を伝播します 私は = (ESIGi(0)、ESIGi(H(Br \(\ell\)))、\(\sigma\)r,s∗ 私は ) 時刻 \(\alpha\)r,s∗ 私は +ts∗. ここで、ステップ s∗+ 1 (Coin-Fixed-To-1 ステップ) の正直な検証者を考えてみましょう。もし 攻撃者は実際に CERT r でメッセージを送信します それらの一部にi∗して、それらを引き起こします 停止します。ケース 2.1.a と同様に、すべての正直なユーザーは Br = Br を知っています。 時間間隔内で\(\ell\) Ir+1と T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1。 それ以外の場合、ステップ s∗+1 のすべての正直な検証者は、0 と 0 に対するすべての (r, s∗)-メッセージを受信しています。 H(Br \(\ell\)) 待機時間 ts∗+1 後の HSV r,s∗ から、2/3 を超える過半数が得られます。 |HSV r,s∗| > 2|MSV r,s∗|。したがって、HSV r,s∗+1 のすべての検証者はメッセージを伝播します。 0 と H(Br \(\ell\))に応じて。 HSV r,s∗+1 の検証子は Br = Br で停止しないことに注意してください。 \(\ell\)、 ステップ s∗+ 1 は Coin-Fixed-To-0 ステップではないためです。 ここで、ステップ s∗+2 (コインを本物に投げたステップ) の正直な検証者を考えてみましょう。 攻撃者が CERT r でメッセージを送信した場合 それらの一部にi∗して、それらを停止させます。 もう一度言いますが、すべての正直なユーザーは Br = Br を知っています。 時間間隔 Ir+1 内で \(\ell\) および T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2。それ以外の場合、ステップ s∗+ 2 のすべての正直な検証者は、次のすべての (r, s∗+ 1)-メッセージを受信しています。 0 と H(Br \(\ell\)) 待機時間 ts∗+2 後の HSV r,s∗+1 から、> 2/3 過半数になります。 したがって、それらはすべて 0 と H(Br \(\ell\)) したがって、彼らはそうします この場合、「コインを投げる」のではありません。繰り返しますが、それらは伝播せずに停止しないことに注意してください。 ステップ s∗+ 2 は Coin-Fixed-To-0 ステップではないためです。 最後に、ステップ s∗+3 (これも Coin-Fixed To-0 ステップです) の正直な検証者の場合、すべて そのうちの 0 と H(Br \(\ell\)) HSV s∗+2 より、 本当に待ち時間 ts∗+3 の場合。したがって、攻撃者がメッセージを送信するかどうかに関係なく、 CERTrで それらのいずれに対しても、HSV r,s∗+3 のすべての検証者は Br = Br で停止します。 \(\ell\)なし 何でも広める。敵対者がどのように行動するかに応じて、その一部は CERT r 内の (r, s∗−1)-メッセージで構成される独自の CERT r i∗、その他は それらの (r, s∗+ 2) メッセージで構成される独自の CERT r。いずれにせよ、誠実なユーザーの皆様 Br = Br を知っています 時間間隔 Ir+1 内で \(\ell\) および T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3。 ケース 2.2.b.イベント E.b が発生し、正直な検証者 i' \(\in\)HSV r,s∗who が存在しない 何も伝播せずに停止する必要もあります。 このケースの分析はケース 2.1.b およびケース 2.2.a の分析と似ているため、多くの詳細が説明されています。 は省略されています。特に、CERT r i∗は tH 個の必要な (r, s∗−1) メッセージで構成されます 敵対者が収集または生成できるビット 1 の場合、s∗−2 ≡1 mod 3、ステップ s∗ は Coin-Fixed-To-1 ステップでは、正直な (r, s∗) 検証者は 2/3 以上の 0 の多数派を確認できませんでした。 したがって、すべての検証者 i \(\in\)HSV r,s∗ は bi = 1 を設定し、mr,s∗ を伝播します。 私は = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ 私は ) 時刻 \(\alpha\)r,s∗ 私は +ts∗.ケース 2.2.a と同様に、さらに最大 3 つのステップ(つまり、プロトコル ステップ s∗+3 に達すると、これは別の Coin-Fixed-To-1 ステップです)、すべての正直なユーザーは Br = Br を知っています。 ああ 時間間隔 Ir+1 内。さらに、T r+1 は、\(\leq\)T r+\(\lambda\)+ts∗+1、または\(\leq\)T r+\(\lambda\)+ts∗+2 であってもよく、 または \(\leq\)T r + \(\lambda\) + ts∗+3、正直な検証者が最初に停止できるのがいつかに応じて 伝播せずに。 4 つのサブケースを組み合わせると、すべての正直なユーザーが時間間隔内で Br を知っていることがわかります。 Ir+1、付き T r+1 \(\leq\)T r + \(\lambda\) + ts∗ (ケース 2.1.a および 2.1.b)、および ケース 2.2.a および 2.2.b では、T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3。 ケース 2 では、上限 s∗、したがって T r+1 に残りますが、これを行うには、次の方法が考えられます。 多くの場合、コインを本物に投げたステップがプロトコル内で実際に実行されます。 正直な検証者の中には、実際にコインを投げた人もいます。 特に、コインを本物に投げたステップ s' を任意に固定します (つまり、7 \(\leq\) s' \(\leq\) m + 2、および s′ −2 ≡2 mod 3) とし、\(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j )。今のところ、s' < s∗ と仮定しましょう。 それ以外の場合は、前に示したように、正直な検証者はステップ s で実際にコインを投げることはできないからです。 議論。 SV r,s'-1 の定義により、\(\ell\)' の資格情報の hash 値も次の中で最小になります。 PKr-k のすべてのユーザ。 hash 関数はランダムな oracle であるため、理想的にはプレイヤー \(\ell\)′ は次のように正直になります。 少なくとも h の確率。後で示すように、たとえ敵対者が最善を尽くして予測しようとしても、 ランダム oracle を出力して確率を傾けても、プレイヤー \(\ell\)′ は依然として確率に対して正直です少なくとも ph = h2(1 + h −h2)。以下では、それが実際に起こる場合を考えます。 \(\ell\)′\(\in\)HSV r,s′−1。 すべての正直な検証者 i \(\in\)HSV r,s' は、HSV r,s'-1 からのすべてのメッセージを次のように受信していることに注意してください。 時間\(\alpha\)r,s' 私は +ts'。 プレーヤー i がコインを投げる必要がある場合 (つまり、プレーヤー i が 2/3 を超える過半数を見ていない場合) 同じビット b \(\in\){0, 1}) の場合、bi = lsb(H(\(\sigma\)r,s′−1) と設定します。 \(\ell\)’ ))。他に正直な人がいるなら 検証者 i' \(\in\)HSV r,s' ビット b \(\in\){0, 1} について 2/3 を超える多数派を確認し、プロパティによって 補助定理 5.5 の (d)、HSV r,s' の正直な検証者は、しばらくの間 2/3 を超える多数派を確認できなかったでしょう。 b' ̸= b。 lsb(H(\(\sigma\)r,s′−1 \(\ell\)’ )) = b 確率 1/2、HSV r,s' 内のすべての正直な検証者が到達 b については確率 1/2 で一致します。もちろん、そのような検証者 i' が存在しない場合、すべて HSV r,s' の正直な検証者はビット lsb(H(\(\sigma\)r,s'−1 \(\ell\)’ )) 確率 1。 \(\ell\)′ \(\in\)HSV r,s′−1 の確率を組み合わせると、HSV r,s′ における正直な検証者は次のようになります。 少なくとも ph 以上の確率でビット b \(\in\){0, 1} について合意に達する 2 = h2(1+h−h2) 2 。さらに、 以前と同様に多数決による誘導により、HSV r,s のすべての正直な検証者は vi を設定します H(Br \(\ell\))。したがって、ステップ s' で b について合意に達すると、T r+1 は次のようになります。 \(\leq\)T r + \(\lambda\) + ts'+1 または \(\leq\)T r + \(\lambda\) + ts'+2、 ケース 2.1.a および 2.1.b の分析に従って、b = 0 か b = 1 に応じて異なります。で 特に、これ以上のコイン本物投げステップは実行されません。つまり、検証者は このようなステップは、依然として自分が検証者であることを確認するため待機しますが、何も行わずにすべて停止します。 何でも広める。したがって、ステップ s∗ の前では、Coin-AuthenticlyFlipped ステップの実行回数が確率変数 Lr に応じて分配されます。ステップ s' を許可する プロトコルの構築により、Lr によると最後の Coin-Authenticly-Flipped ステップとなる 私たちは持っています s' = 4 + 3Lr。 敵対者が T r+1 をできるだけ遅らせたい場合、いつステップを実行すべきか 可能ですか?敵対者が Lr の実現を事前に知っていると仮定することもできます。もし s∗> s' の場合、正直な検証者はすでに合意に達しているため、それは役に立ちません。 ステップs'。確かに、この場合、s* は、やはり b = 0 かどうかに応じて、s′ +1 または s′ +2 になります。 または b = 1。ただし、これは実際にはケース 2.1.a および 2.1.b であり、結果として得られる T r+1 は正確に あの場合と同じように。より正確には、 T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts'+2。 s∗< s′ −3 の場合、つまり s∗ が最後から 2 番目のコイン本物投げステップの前である場合、次のようになります。 ケース 2.2.a および 2.2.b の分析、 T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′。 つまり、敵対者は実際に Br に関する合意をより早く実現させているのです。 s∗= s′ −2 または s′ −1 の場合、つまり Coin-Fixed-To-0 ステップまたは Coin-Fixed-To-1 ステップ ステップ s' の直前 - 次に 4 つのサブケースの分析により、正直な検証者は ステップ s' では、コインが伝播せずに停止しているため、もうコインを投げることはできません。 または、同じビットで 2/3 を超える多数決が見られた場合 b.したがって、私たちは T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts'+2。要約すると、それが何であっても、私たちは T r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = T r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = T r + (6Lr + 10)\(\lambda\) + Λ、 私たちが見せたかったとおり。最悪のケースは、s∗= s′ −1 でケース 2.2.b が発生する場合です。 バイナリ BA プロトコルのケース 1 とケース 2 を組み合わせると、補題 5.3 が成り立ちます。 ■ 5.9 シード Qr の安全性と誠実なリーダーの確率 補題 5.4 を証明することはまだ残っています。ラウンド r の検証者は PKr-k から取得され、 量 Qr−1 に従って選択されます。ルックバックパラメータ k を導入する理由 ラウンド r -k に戻って、敵対者が新しい悪意のあるユーザーをいつ追加できるかを確認することです。 PKr−k に対して、無視できる確率を除いて量 Qr−1 を予測することはできません。注意してください。 hash 関数はランダムな oracle であり、Qr-1 はラウンド r の検証器を選択するときの入力の 1 つです。 したがって、いかに悪意のあるユーザが PKr-k に追加されたとしても、敵対者の観点からは、それぞれのユーザが そのうちの 1 つが、ラウンド r のステップで必要な確率 p (または ステップ 1 の p1)。より正確には、次の補題があります。 補題 5.6. k = O(log1/2 F) の場合、ラウンド r ごとに、圧倒的な確率で敵対者が ラウンド r −k で Qr−1 をランダムな oracle に問い合わせませんでした。 証拠。帰納法で進めていきます。 \(\gamma\) < r の各ラウンドで、敵対者がクエリを行わなかったと仮定します。 Q\(\gamma\)−1 からラウンド \(\gamma\) −k.21 に戻るランダムな oracle へ。 敵対者はラウンド r −k で Qr−1 を予測しようとします。 各ラウンドのステップ 1 では、 \(\gamma\) = r −k、. 。 。 , r −1、ランダムにクエリされない特定の Q\(\gamma\)−1 が与えられた場合 oracle、hash 値 H(SIGi(\(\gamma\), 1, Q\(\gamma\)-1)) に従ってプレーヤー i \(\in\)PK\(\gamma\)-k を順序付けることによって 徐々に、PK\(\gamma\)−k にわたるランダムな置換が得られます。定義上、リーダー \(\ell\) \(\gamma\) は 順列の最初のユーザーであり、確率 h で正直です。また、PK\(\gamma\)−kが大きい場合には、 任意の整数 x \(\geq\)1 について、順列内の最初の x 人のユーザーが全員である確率は十分です。 悪意はありますが、(x + 1) 番目に正直なのは (1 −h)xh です。 \(\ell\) \(\gamma\) が正直であれば、Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)) となります。敵対者は署名を偽造できないため、 \(\ell\) \(\gamma\) の Q\(\gamma\) は、敵対者の観点からはランダムに均一に分布します。 指数関数的に小さい確率で、22 はラウンド r −k で H に対してクエリされませんでした。 それぞれなので Q\(\gamma\)+1、Q\(\gamma\)+2、. 。 。 、Qr−1はそれぞれ、Q\(\gamma\)、Q\(\gamma\)+1、. 。 。 、Qr−2 を入力の 1 つとして、 敵対者にとってそれらはすべてランダムに見えるため、敵対者は次の時点で Qr-1 を H に問い合わせることはできません。 r −k を丸めます。 したがって、敵対者がラウンド時に高い確率で Qr−1 を予測できる唯一のケース r−k は、すべてのリーダー \(\ell\)r−k, . 。 。 、\(\ell\)r−1 は悪意があります。もう一度丸め \(\gamma\) \(\in\){r−k を考えます。 。 。 、r−1} および対応する hash 値によって引き起こされる PK\(\gamma\)-k にわたるランダムな置換。一部の人にとっては x \(\geq\)2 の場合、順列内の最初の x −1 人のユーザーはすべて悪意があり、x 番目のユーザーは正直です。 敵対者には、Q\(\gamma\) について x 個の可能な選択肢があります。H(SIGi(Q\(\gamma\)−1, \(\gamma\))) の形式のいずれかです。ここで、i は次のいずれかです。 21 k が小さな整数であるため、一般性を失うことなく、プロトコルの最初の k ラウンドが実行されると仮定できます。 安全な環境下で行われ、これらのラウンドでは帰納的仮説が当てはまります。 22つまり、H の出力の長さは指数関数的になります。この確率は F よりもはるかに小さいことに注意してください。プレイヤー i をラウンド \(\gamma\) の実際のリーダーにすることで、最初の x-1 人の悪意のあるユーザー。または H(Q\(\gamma\)−1, \(\gamma\))、 B\(\gamma\) = B\(\gamma\) を強制する ァ 。それ以外の場合、ラウンド \(\gamma\) のリーダーが順列で最初の正直なユーザーになります。 そして、Qr-1 は敵対者にとって予測不可能になります。 Q\(\gamma\) の上記 x 個のオプションのうち、敵対者はどれを追求すべきですか?敵を助けるために この質問に答えてください。心理ゲームでは、実際に彼を実際よりも強力にします。 は以下の通りです。まず第一に、実際には、敵対者は正直なユーザーの hash を計算することはできません。 したがって、署名では、各 Q\(\gamma\) について、最初の悪意のあるユーザーの数 x(Q\(\gamma\)) を決定できません。 Q\(\gamma\) によって誘発されるラウンド \(\gamma\) + 1 のランダム順列の。心理的なゲームで、私たちは彼に次のことを与えます。 ナンバーズx(Q\(\gamma\))を無料で。次に、実際には、順列内の最初の x 人のユーザーがすべて 悪意があるからといって、必ずしも全員がリーダーになれるわけではありません。 それらの署名の値も p1 未満でなければなりません。私たちはこの精神的な制約を無視してきました。 ゲームでは、敵対者にさらに有利な点が与えられます。 精神的なゲームにおいて、敵対者にとっての最適な選択肢は ^Q\(\gamma\) で示されることが容易にわかります。 ランダムな開始時に悪意のあるユーザーの最長のシーケンスを生成するものです。 実際、特定の Q\(\gamma\) が与えられると、プロトコルは Q\(\gamma\)−1 に依存しません。 もはや、敵対者はラウンド \(\gamma\) + 1 の新しい順列のみに集中できます。 最初の悪意のあるユーザーの数の分布は同じです。したがって、各ラウンドで \(\gamma\)、上記の ^Q\(\gamma\) は、Q\(\gamma\)+1 の最大数のオプションを与え、したがって、 連続するリーダーがすべて悪意がある確率。 したがって、心理ゲームでは、敵対者はラウンド r −k からマルコフ連鎖に従います。 状態空間を {0} \(\cup\){x : x \(\geq\)2} として r −1 を丸めます。状態 0 は、 現在のラウンドのランダム順列の最初のユーザー \(\gamma\) は正直であるため、敵対者は失敗します。 Qr−1 を予測するゲーム。そして、各状態 x \(\geq\)2 は、その状態の最初の x −1 人のユーザーが、 順列は悪意があり、x 番目は正直であるため、敵対者には Q\(\gamma\) に対して x 個のオプションがあります。の 遷移確率 P(x, y) は次のとおりです。 • y \(\geq\)2 の場合、P(0, 0) = 1 および P(0, y) = 0。つまり、敵対者は最初にゲームに失敗します。 順列内のユーザーは正直になります。 • x \(\geq\)2 の場合、P(x, 0) = hx。つまり、確率 hx では、すべての x 個のランダムな置換は次のようになります。 最初のユーザーは正直であるため、敵対者は次のラウンドでゲームに失敗します。 • 任意の x \(\geq\)2 および y \(\geq\)2 について、P(x, y) は、x 個のランダムな順列のうち、 Q\(\gamma\) の x オプションによって引き起こされます。Q\(\gamma\) は、最初の悪意のあるユーザーの最長のシーケンスです。 それらの一部は y −1 であるため、敵対者は次のラウンドで Q\(\gamma\)+1 に対して y 個のオプションを持ちます。つまり、 P(x, y) = y−1 \(\times\) i=0 (1 −h)ih !x − y−2 \(\times\) i=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x。 状態 0 は遷移行列 P 内の固有の吸収状態であり、他のすべての状態であることに注意してください。 x は 0 になる正の確率を持っています。私たちは、次の数 k の上限に興味があります。 マルコフ連鎖が圧倒的な確率で 0 に収束するのに必要なラウンド数、つまり、 チェーンがどの状態で開始されるかに関係なく、圧倒的な確率で敵対者がゲームに負けます。 そしてラウンド r −k で Qr−1 を予測できません。 2 ラウンド後の遷移行列 P (2) \(\triangleq\) P \(\cdot\) P を考えます。 P (2)(0, 0) = 1 であることが簡単に分かります。 x \(\geq\) 2 の場合、P (2)(0, x) = 0 となります。任意の x \(\geq\)2 および y \(\geq\)2 について、P(0, y) = 0 であるため、次のようになります。 P (2)(x, y) = P(x, 0)P(0, y) + \(\times\) z≧2 P(x, z)P(z, y) = \(\times\) z≧2 P(x, z)P(z, y)。 ̄h \(\triangleq\)1 −h とすると、次のようになります。 P(x, y) = (1 − ̄hy)x −(1 − ̄hy−1)x そして P (2)(x, y) = \(\times\) z≧2 [(1 − ̄hz)x −(1 − ̄hz−1)x][(1 − ̄hy)z −(1 − ̄hy−1)z]。 以下では、P (2)(x,y) の限界を計算します。 P (x,y) h が 1 になると、つまり、 ̄h は 0 になります。 P(x, y) の  ̄h の次数は  ̄hy−1 であり、係数は x です。したがって、 リム h \(\to\) 1 P(2)(x,y) P(x, y) =リム  ̄h \(\to\) 0 P(2)(x,y) P(x, y) =リム  ̄h \(\to\) 0 P(2)(x,y) x ̄hy−1 + O( ̄hy) = リム  ̄h \(\to\) 0 P z\(\geq\)2[x ̄hz−1 + O( ̄hz)][z ̄hy−1 + O( ̄hy)] x ̄hy−1 + O( ̄hy) =リム  ̄h \(\to\) 0 2x ̄hy + O( ̄hy+1) x ̄hy−1 + O( ̄hy) = リム  ̄h \(\to\) 0 2xhy x ̄hy−1 = lim  ̄h \(\to\) 0 2 ̄h = 0。 h が 1,23 に十分近い場合、次のようになります。 P(2)(x,y) P(x, y) \(\leq\)1 2 任意の x \(\geq\)2 および y \(\geq\)2 に対して。帰納法により、任意の k > 2 について、P (k) \(\triangleq\) P k は次のようになります。 • x \(\geq\)2 の場合、P (k)(0, 0) = 1、P (k)(0, x) = 0、および • x \(\geq\)2 および y \(\geq\)2 の場合、 P (k)(x, y) = P (k−1)(x, 0)P(0, y) + \(\times\) z≧2 P (k−1)(x, z)P(z, y) = \(\times\) z≧2 P (k−1)(x, z)P(z, y) \(\leq\) \(\times\) z≧2 P(x, z) 2k−2 ・P(z,y)=P(2)(x,y) 2k−2 \(\leq\)P(x, y) 2k−1 。 P(x, y) \(\leq\)1 であるため、1−log2 F 丸め後、y \(\geq\)2 の状態への遷移確率は無視できます。 任意の状態 x \(\geq\)2 から開始します。このような状態 y はたくさんありますが、次のことは簡単にわかります。 リム y→+∞ P(x, y) P(x, y + 1) = リム y→+∞ (1 − ̄hy)x −(1 − ̄hy−1)x (1 − ̄hy+1)x −(1 − ̄hy)x = リム y→+∞  ̄hy−1 − ̄hy  ̄hy − ̄hy+1 = 1  ̄h = 1 1 −時間。 したがって、遷移行列 P の各行 x は、比率を伴う等比数列として減少します。 1 1−h > 2 y が十分に大きい場合、同じことが P (k) にも当てはまります。したがって、k が十分に大きいにもかかわらず、 log1/2 F、P程度 任意の x \(\geq\)2 について、y\(\geq\)2 P (k)(x, y) < F。つまり、圧倒的な確率で 敵対者はゲームに負け、ラウンド r −k で Qr−1 を予測できません。 h \(\in\)(2/3, 1] の場合、さらに 複素解析により、1/2 よりわずかに大きい定数 C が存在することがわかり、 k = O(logC F) を取得します。したがって、補題 5.6 が成り立ちます。 ■ 補題 5.4. (再掲) r の前の各ラウンドでプロパティ 1 ~ 3 が与えられると、Lr に対して ph = h2(1 + h −h2)、 そしてリーダー\(\ell\)r は少なくとも ph の確率で正直です。 23たとえば、パラメータの特定の選択によって示唆されるように、h = 80% です。

証拠。補助定理 5.6 に従って、敵対者は次の場合を除いてラウンド r −k で Qr−1 を予測することはできません。 無視できる確率。これは、正直なリーダーの確率が h であることを意味するものではないことに注意してください。 各ラウンド。確かに、Qr-1 が与えられると、最初に悪意のあるユーザーが何人いるかによって異なります。 PKr-k のランダムな置換により、敵対者は Qr および したがって、ラウンド r + 1 で悪意のあるリーダーの確率が増加する可能性があります。ここでも、彼に与えます。 分析を簡素化するために、補助定理 5.6 のようないくつかの非現実的な利点を考慮します。 ただし、ラウンド r −k で敵対者によって H に対してクエリされなかった各 Qr−1 について、 任意の x \(\geq\)1、確率 (1 −h)x−1h で、最初の正直なユーザーが結果の位置 x に出現します。 PKr-k のランダムな並べ替え。 x = 1 の場合、ラウンド r + 1 の正直なリーダーの確率は次のようになります。 確かに、h;一方、x = 2 の場合、敵対者には Qr に対して 2 つの選択肢があり、その結果の確率は次のようになります。 h2.これら 2 つのケースを考慮するだけで、ラウンドで正直なリーダーが現れる確率がわかります。 r + 1 は、必要に応じて、少なくとも h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) です。 上記の確率はラウンド r −k からのプロトコルのランダム性のみを考慮していることに注意してください。 rを丸めます。ラウンド 0 からラウンド r までのすべてのランダム性を考慮すると、Qr−1 は次のようになります。 敵対者にとってはさらに予測可能ではなく、ラウンド r + 1 で正直なリーダーが現れる確率は次のとおりです。 最小 h2(1 + h −h2)。 r + 1 を r に置き換え、すべてを 1 ラウンド戻すと、リーダー \(\ell\)r は、希望通り、少なくとも h2(1 + h −h2) の確率で正直です。 同様に、本物のコインを投げた各ステップ s では、そのステップの「リーダー」、つまり検証者が決まります。 SV r では、クレデンシャルの値が最小の hash を持つ s は、少なくとも h2(1 + h −h2)。したがって、Lr については ph = h2(1 + h −h2) となり、補題 5.4 が成り立ちます。 ■

Algorand ′

1 Nesta seção, construímos uma versão de Algorand ′ trabalhando sob a seguinte suposição. Suposição da maioria honesta dos usuários: Mais de 2/3 dos usuários em cada PKr são honestos. Na Seção 8, mostramos como substituir a suposição acima pela desejada Maioria Honesta de Suposição de dinheiro. 5.1 Notações e parâmetros adicionais Notações • m \(\in\)Z+: número máximo de passos no protocolo BA binário, múltiplo de 3. • Lr \(\leq\)m/3: uma variável aleatória que representa o número de tentativas de Bernoulli necessárias para ver um 1, quando cada tentativa é 1 com probabilidade ph 2 e há no máximo m/3 tentativas. Se todas as tentativas falharem então Lr\(\triangleq\)m/3. Lr será usado para limitar o tempo necessário para gerar o bloco Br. • tH = 2n 3 + 1: o número de assinaturas necessárias nas condições finais do protocolo. • CERT r: o certificado para Br. É um conjunto de assinaturas tH de H(Br) de verificadores apropriados em rodada R. Parâmetros • Relações entre vários parâmetros. — Para cada passo s > 1 da rodada r, n é escolhido de modo que, com probabilidade esmagadora, |HSV r,s| > 2|MSV r,s| e |HSV r,s| + 4|MSV r,s| <2n. Quanto mais próximo de 1 for o valor de h, menor será n. Em particular, usamos (variantes de) Chernoffbounds para garantir que as condições desejadas se mantenham com uma probabilidade esmagadora. — m é escolhido de modo que Lr < m/3 com probabilidade esmagadora. • Exemplos de escolhas de parâmetros importantes. — F = 10−12. — n \(\approx\)1500, k = 40 e m = 180.5.2 Implementando chaves efêmeras em Algorand ′ 1 Como já mencionado, desejamos que um verificador i \(\in\)SV r,s assine digitalmente sua mensagem mr,s eu de passo s na rodada r, relativo a uma chave pública efêmera pkr,s i , usando uma chave secreta efêmera skr,s eu isso ele destrói prontamente após o uso. Portanto, precisamos de um método eficiente para garantir que cada usuário possa verifique se pkr,s eu é de fato a chave a ser usada para verificar a assinatura do senhor,s eu. Fazemo-lo através de um (da melhor forma do nosso conhecimento) novo uso de esquemas de assinatura baseados em identidade. Em um nível elevado, em tal esquema, uma autoridade central A gera uma chave mestra pública, PMK, e uma chave mestra secreta correspondente, SMK. Dada a identidade, U, de um jogador U, A calcula, via SMK, um skU de chave de assinatura secreta relativo à chave pública U, e fornece skU de forma privada para U. (Na verdade, em um esquema de assinatura digital baseado em identidade, a chave pública de um usuário U é o próprio U!) Desta forma, se A destruir o SMK após calcular as chaves secretas dos usuários que ele deseja habilitar para produz assinaturas digitais e não mantém nenhuma chave secreta computada, então U é o único que pode assinar digitalmente mensagens relativas à chave pública U. Assim, qualquer pessoa que saiba o “nome de U”, conhece automaticamente a chave pública de U e, portanto, pode verificar as assinaturas de U (possivelmente usando também o chave mestra pública PMK). Em nossa aplicação, a autoridade A é o usuário i, e o conjunto de todos os usuários possíveis U coincide com o par de passos redondos (r, s) em —digamos— S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, onde r′ é um dado rodada e m + 3 o limite superior para o número de etapas que podem ocorrer dentro de uma rodada. Isto caminho, pkr,s eu \(\triangleq\)(i, r, s), para que todos vejam a assinatura de i SIGr,s pkr,s eu (sr.,s i) pode, com esmagadora probabilidade, verifique-a imediatamente para o primeiro milhão de rodadas r após r′. Em outras palavras, primeiro gero PMK e SMK. Em seguida, ele divulga que PMK é o mestre do i chave pública para qualquer rodada r \(\in\)[r′, r′ + 106], e usa SMK para produzir e armazenar o segredo de forma privada chave skr,s eu para cada triplo (i, r, s) \(\in\)S. Feito isso, ele destrói SMK. Se ele determinar que não está parte de SV r,s, então posso deixar skr,s eu sozinho (já que o protocolo não exige que ele autentique qualquer mensagem na Etapa s da rodada r). Caso contrário, primeiro uso skr,s eu para assinar digitalmente sua mensagem, Sr. eu, e então destrói skr,s eu. Observe que posso divulgar sua primeira chave mestra pública quando ele entrar no sistema pela primeira vez. Isto é, o mesmo pagamento \(\wp\)que traz i para o sistema (em uma rodada r′ ou em uma rodada próxima de r′), também pode especifique, a pedido de i, que a chave mestra pública de i para qualquer rodada r \(\in\)[r′, r′ + 106] é PMK - por exemplo, por incluindo um par da forma (PMK, [r′, r′ + 106]). Observe também que, como m + 3 é o número máximo de passos em uma rodada, assumindo que uma rodada leva um minuto, o estoque de chaves efêmeras assim produzido durará quase dois anos. Ao mesmo tempo, essas chaves secretas efêmeras não levarão muito tempo para serem produzidas. Usando uma curva elíptica baseada sistema com chaves de 32B, cada chave secreta é computada em alguns microssegundos. Assim, se m + 3 = 180, então, todas as 180 milhões de chaves secretas podem ser computadas em menos de uma hora. Quando a rodada atual estiver se aproximando de r′ + 106, para lidar com o próximo milhão de rodadas, i gera um novo par (PMK′, SMK′) e informa qual é seu próximo estoque de chaves efêmeras —por exemplo— fazer com que SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) insira um novo bloco, seja como um “transação” separada ou como alguma informação adicional que faz parte de um pagamento. Ao fazer isso, i informa a todos que devem usar PMK′ para verificar as assinaturas efêmeras de i no próximo milhões de rodadas. E assim por diante. (Observe que, seguindo esta abordagem básica, outras formas de implementar chaves efêmeras sem o uso de assinaturas baseadas em identidade é certamente possível. Por exemplo, via Merkle trees.16) 16Neste método, i gera um par de chaves públicas-secretas (pkr,s eu, skr,s eu ) para cada par de etapas redondas (r, s) em —digamos—Outras maneiras de implementar chaves efêmeras são certamente possíveis — por exemplo, via Merkle trees. 5.3 Correspondendo às etapas de Algorand ′ 1 com os de BA⋆ Como dissemos, uma rodada em Algorand ′ 1 tem no máximo m + 3 passos. Passo 1. Nesta etapa, cada líder potencial i calcula e propaga seu bloco candidato Br eu, juntamente com sua própria credencial, \(\sigma\)r,1 eu. Lembre-se de que esta credencial identifica explicitamente i. Isto é assim porque \(\sigma\)r,1 eu \(\triangleq\)SIGi(r, 1, Qr−1). O verificador potencial i também propaga, como parte de sua mensagem, sua assinatura digital própria de H(Br eu). Não se tratando de um pagamento ou de uma credencial, esta assinatura de i é relativa ao seu efêmero público chave pkr,1 i: isto é, ele propaga sigpkr,1 eu (H(Br eu)). Dadas as nossas convenções, em vez de propagar o Br eu e sigpkr,1 eu (H(Br i)), ele poderia ter SIGpkr propagado,1 eu (H(Br eu)). No entanto, na nossa análise, precisamos de ter acesso explícito a sigpkr,1 eu (H(Br eu)). Etapa 2. Nesta etapa, cada verificador i define \(\ell\)r eu serei o líder em potencial cuja credencial hashed é o menor e Br i será o bloco proposto por \(\ell\)r eu. Como, por uma questão de eficiência, desejar concordar com H(Br), em vez de diretamente com Br, i propaga a mensagem que ele teria propagado na primeira etapa de BA⋆com valor inicial v′ eu = H(Br eu). Ou seja, ele propaga v′ eu, depois de assiná-lo efêmeramente, é claro. (Nomeadamente, depois de assiná-lo relativamente ao direito efémero chave pública, que neste caso é pkr,2 i.) Claro, também transmito sua própria credencial. Como a primeira etapa de BA⋆consiste na primeira etapa do protocolo de consenso graduado GC, Etapa 2 de Algorand ′ corresponde ao primeiro passo do GC. Passo 3. Neste passo, cada verificador i \(\in\)SV r,2 executa o segundo passo de BA⋆. Ou seja, ele envia o mesma mensagem que ele teria enviado na segunda etapa do GC. Novamente, a mensagem de i é efêmera assinado e acompanhado da credencial do i. (De agora em diante, deixaremos de dizer que um verificador assina efêmeramente sua mensagem e também propaga sua credencial.) Etapa 4. Nesta etapa, cada verificador i \(\in\)SV r,4 calcula a saída de GC, (vi, gi), e efêmeramente assina e envia a mesma mensagem que teria enviado na terceira etapa do BA⋆, ou seja, no primeiro passo do BBA⋆, com bit inicial 0 se gi = 2, e 1 caso contrário. Etapa s = 5, . . . , m + 2. Tal passo, se alguma vez alcançado, corresponde ao passo s −1 de BA⋆ e, portanto, a etapa s −3 do BBA⋆. Como nosso modelo de propagação é suficientemente assíncrono, devemos levar em conta a possibilidade que, no meio de tal passo s, um verificador i \(\in\)SV r,s é alcançado por informações que o comprovam aquele bloco Br já foi escolhido. Neste caso, i interrompe sua própria execução da rodada r de Algorand ′ e começa a executar suas instruções round-(r + 1). {r', . . . , r′ + 106} \(\times\) {1, . . . , m + 3}. Então ele ordena essas chaves públicas de forma canônica, armazena a j-ésima chave pública digita a j-ésima folha de um Merkle tree e calcula o valor da raiz Ri, que ele divulga. Quando ele quer assinar uma mensagem relativa à chave pkr,s eu , não apenas forneço a assinatura real, mas também o caminho de autenticação para pkr,s eu em relação a Ri. Observe que este caminho de autenticação também prova que pkr,s eu é armazenado na j-ésima folha. O resto do detalhes podem ser facilmente preenchidos.Assim, as instruções de um verificador i \(\in\)SV r,s, além das instruções correspondentes para a Etapa s −3 do BBA⋆, inclui a verificação se a execução do BBA⋆ foi interrompida em um momento anterior Passo s′. Como o BBA⋆ só pode parar em uma etapa fixada em moeda em 0 ou em uma etapa fixada em moeda em 1, o instruções distinguem se A (Condição Final 0): s′ −2 ≡0 mod 3, ou B (Condição Final 1): s′ −2 ≡1 mod 3. Na verdade, no caso A, o bloco Br não está vazio e, portanto, são necessárias instruções adicionais para garantir que i reconstrói Br adequadamente, juntamente com seu certificado adequado CERT r. No caso B, o bloco Br está vazio e, portanto, i é instruído a definir Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), e para calcular CERT r. Se, durante a execução do passo s, i não vir nenhuma evidência de que o bloco Br já tenha foi gerado, então ele envia a mesma mensagem que teria enviado na etapa s −3 do BBA⋆. Passo m + 3. Se, durante o passo m + 3, i \(\in\)SV r,m+3 vê que o bloco Br já foi gerado em uma etapa anterior s′, então ele prossegue conforme explicado acima. Caso contrário, em vez de enviar a mesma mensagem que ele teria enviado na etapa m do BBA⋆, i é instruído, com base nas informações em sua posse, a calcular Br e seu correspondente certificado CERT r. Lembre-se, de fato, que limitamos em m + 3 o número total de etapas de uma rodada. 5.4 O protocolo real Lembre-se que, em cada passo s de uma rodada r, um verificador i \(\in\)SV r,s usa seu par de chaves secretas públicas de longo prazo para produzir sua credencial, \(\sigma\)r,s eu \(\triangleq\)SIGi(r, s, Qr−1), bem como SIGi Qr-1 no caso s = 1. Verificador i usa sua chave secreta efêmera skr,s eu para assinar sua mensagem (r, s) mr,s eu. Por simplicidade, quando r e s são claro, escrevemos esigi(x) em vez de sigpkr,s i (x) para denotar a assinatura efêmera adequada de um valor de i x na etapa s da rodada r e escreva ESIGi(x) em vez de SIGpkr,s i (x) para denotar (i, x, esigi (x)). Etapa 1: bloquear proposta Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 1 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,1 ou não. • Se i /\(\in\)SV r,1, então i interrompe imediatamente a sua própria execução do Passo 1. • Se i \(\in\)SV r,1, ou seja, se i for um líder em potencial, então ele recebe os pagamentos da rodada r que foram foi propagado para ele até agora e calcula um conjunto de pagamento máximo PAY r eu deles. A seguir, ele calcula seu “bloco de candidatos” Br eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)). Finalmente, ele calcula a mensagem senhor,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 i ), destrói sua chave secreta efêmera skr,1 eu, e então propaga senhor,1 eu.Observação. Na prática, para encurtar a execução global do Passo 1, é importante que o (r, 1)- as mensagens são propagadas seletivamente. Ou seja, para cada usuário i no sistema, para o primeiro (r, 1)- mensagem que ele recebe e verifica com sucesso,17 o jogador i a propaga normalmente. Para todos os outras mensagens (r, 1) que o jogador i recebe e verifica com sucesso, ele as propaga apenas se o hash o valor da credencial que contém é o menor entre os valores hash das credenciais contidas em todas as mensagens (r, 1) que ele recebeu e verificou com sucesso até agora. Além disso, como sugerido por Georgios Vlachos, é útil que cada líder potencial i também propague sua credencial \(\sigma\)r,1 eu separadamente: essas pequenas mensagens viajam mais rápido que os blocos, garantem a propagação oportuna do mr,1 j's onde as credenciais contidas têm valores hash pequenos, enquanto fazem aquelas com valores hash grandes desaparecer rapidamente. Etapa 2: A primeira etapa do GC do protocolo de consenso graduado Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 2 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,2 ou não. • Se i /\(\in\)SV r,2 então i interrompe imediatamente a sua própria execução do Passo 2. • Se i \(\in\)SV r,2, então depois de esperar um período de tempo t2 \(\triangleq\) \(\lambda\) + Λ, i age da seguinte forma. 1. Ele encontra o usuário \(\ell\) tal que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) para todas as credenciais \(\sigma\)r,1 j que fazem parte as mensagens (r, 1) verificadas com sucesso que ele recebeu até agora.a 2. Se ele recebeu de \(\ell\) uma mensagem válida mr,1 \(\ell\) = (Br \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b então eu defino v' eu \(\triangleq\)H(Br \(\ell\)); caso contrário, eu defino v′ eu \(\triangleq\) \(\bot\). 3. eu calculo a mensagem senhor,2 eu \(\triangleq\)(ESIGi(v′ eu), \(\sigma\)r,2 i ),c destrói sua chave secreta efêmera skr,2 i , e então propaga mr,2 eu. aEssencialmente, o usuário i decide em particular que o líder da rodada r é o usuário \(\ell\). bNovamente, as assinaturas do jogador \(\ell\) e os hashes foram todos verificados com sucesso e PAGUE r \(\ell\)no Brasil \(\ell\)é um conjunto de pagamento válido para rodada r - embora eu não verifique se PAY r \(\ell\)é máximo para \(\ell\)ou não. cA mensagem senhor,2 eu sinaliza que o jogador i considera v′ i é o hash do próximo bloco, ou considera o próximo bloco fique vazio. 17Ou seja, todas as assinaturas estão corretas e tanto o bloco quanto seu hash são válidos —embora eu não verifique se o conjunto de pagamentos incluído é máximo para o seu proponente ou não.

Etapa 3: A segunda etapa do GC Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 3 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,3 ou não. • Se i /\(\in\)SV r,3, então i interrompe imediatamente a sua própria execução do Passo 3. • Se i \(\in\)SV r,3, então depois de esperar um período de tempo t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ, i age da seguinte forma. 1. Se existe um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas mr,2 j ele recebeu, mais de 2/3 deles são da forma (ESIGj(v′), \(\sigma\)r,2 j ), sem qualquer contradição,a então ele calcula a mensagem mr,3 eu \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 eu). Caso contrário, ele calcula mr,3 eu \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 eu). 2. eu destruo sua chave secreta efêmera skr,3 i , e então propaga mr,3 eu. aOu seja, ele não recebeu duas mensagens válidas contendo ESIGj(v′) e um ESIGj(v′′) diferente respectivamente, de um jogador j. Aqui e daqui em diante, exceto nas Condições Finais definidas posteriormente, sempre que um jogador honesto deseja mensagens de um determinado formato, mensagens contraditórias nunca são contadas ou consideradas válidas.Etapa 4: Resultado do GC e a primeira etapa do BBA⋆ Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 4 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,4 ou não. • Se i /\(\in\)SV r,4, então i his interrompe imediatamente a execução do Passo 4. • Se i \(\in\)SV r,4, então depois de esperar um período de tempo t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ, i age da seguinte forma. 1. Ele calcula vi e gi, a saída do GC, como segue. (a) Se existe um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas mr,3 j ele tem recebidos, mais de 2/3 deles são da forma (ESIGj(v′), \(\sigma\)r,3 j ), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)2. (b) Caso contrário, se existir um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas senhor,3 j ele recebeu, mais de 1/3 deles são da forma (ESIGj(v′), \(\sigma\)r,3 j), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)1.a (c) Caso contrário, ele define vi \(\triangleq\)H(Br ǫ ) e gi \(\triangleq\)0. 2. Ele calcula bi, a entrada de BBA⋆, como segue: bi \(\triangleq\)0 se gi = 2, e bi \(\triangleq\)1 caso contrário. 3. Ele calcula a mensagem mr,4 eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), destrói seu efêmero chave secreta skr,4 i , e então propaga mr,4 eu. aPode-se provar que v′ no caso (b), se existir, deve ser único.

Etapa s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Uma etapa de BBA⋆ com moeda fixada em 0 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir da terceira componente de Br−1 e verifica se i \(\in\)SV r,s. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele age da seguinte forma. – Ele espera até que um período de tempo ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: Se, durante essa espera e em qualquer momento, existir uma string v ̸= \(\bot\)e um passo s′ tal que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda em 0, (b) recebi pelo menos tH = 2n 3 + 1 mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),a e (c) recebi uma mensagem válida senhor,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) com v = H(Br j ), então, eu interrompo sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar qualquer coisa; define Br = Br j; e define seu próprio CERT r como o conjunto de mensagens senhor,s′−1 j da subetapa (b).b – Condição Final 1: Se, durante essa espera e em qualquer momento, existir um passo s′ tal que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda para 1, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c então, eu interrompo sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar qualquer coisa; define Br = Br ǫ; e define seu próprio CERT r como o conjunto de mensagens senhor,s′−1 j da subetapa (b'). – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, ele define bi \(\triangleq\)0. Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu. aEssa mensagem do jogador j é contada mesmo que o jogador i também tenha recebido uma mensagem de j assinando por 1. Coisas semelhantes para a Condição Final 1. Conforme mostrado na análise, isso é feito para garantir que todos os usuários honestos saibam Br dentro do tempo \(\lambda\) um do outro. bO usuário i agora conhece Br e seus próprios acabamentos de rodada. Ele ainda ajuda a propagar mensagens como um usuário genérico, mas não inicia nenhuma propagação como um verificador (r, s). Em particular, ele ajudou a propagar todas as mensagens em seu CERT r, o que é suficiente para o nosso protocolo. Observe que ele também deve definir bi \(\triangleq\)0 para o protocolo BA binário, mas bi não é necessário neste caso de qualquer maneira. Coisas semelhantes para todas as instruções futuras. cNeste caso, não importa quais são os vj’s.Etapa s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Uma etapa de BBA⋆ fixada em moeda para 1 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,s ou não. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele faz o seguinte. – Ele espera até que um período de tempo ts \(\triangleq\)(2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, ele define bi \(\triangleq\)1. Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu.

Etapa s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Uma etapa de BBA⋆ com moeda genuinamente invertida Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,s ou não. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele faz o seguinte. – Ele espera até que um período de tempo ts \(\triangleq\)(2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, seja SV r,s−1 eu ser o conjunto de (r, s −1)-verificadores dos quais ele recebeu um valor válido mensagem senhor,s-1 j . Ele define bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 eu H(\(\sigma\)r,s−1 j )). Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu.

Etapa m + 3: A última etapa do BBA⋆a Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa m + 3 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,m+3 ou não. • Se i /\(\in\)SV r,m+3, então i interrompe imediatamente a sua própria execução do Passo m + 3. • Se i \(\in\)SV r,m+3 então ele faz o seguinte. – Ele espera até que um período de tempo tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele definei \(\triangleq\)1 e Br \(\triangleq\)Br ǫ. Ele calcula a mensagem mr,m+3 eu = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 eu ), destrói seu chave secreta efêmera skr,m+3 eu , e então propaga mr,m+3 eu para certificar Br.b aCom probabilidade esmagadora, BBA⋆terminou antes desta etapa e especificamos esta etapa para completude. bUm certificado da Etapa m + 3 não precisa incluir ESIGi(outi). Nós o incluímos apenas por uniformidade: o os certificados agora têm um formato uniforme, independentemente da etapa em que são gerados.Reconstrução do Bloco Round-r por Não-Verificadores Instruções para cada usuário i no sistema: O usuário i inicia sua própria rodada r assim que souber Br−1, e espera pelas informações do bloco como segue. – Se, durante essa espera e em qualquer momento, existir uma string v e um passo s′ tal isso (a) 5 \(\leq\)s′ \(\leq\)m + 3 com s′ −2 ≡0 mod 3, (b) recebi pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) e (c) recebi uma mensagem válida senhor,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) com v = H(Br j ), então, i interrompe imediatamente sua própria execução da rodada r; define Br = Br j; e define seu próprio CERT r ser o conjunto de mensagens mr,s′−1 j do subpasso (b). – Se, durante essa espera e em qualquer momento, existir uma etapa s′ tal que (a') 6 \(\leq\)s′ \(\leq\)m + 3 com s′ −2 ≡1 mod 3, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), então, i interrompe imediatamente sua própria execução da rodada r; define Br = Br ǫ; e define seu próprio CERT r ser o conjunto de mensagens mr,s′−1 j da subetapa (b'). – Se, durante essa espera e em qualquer momento, recebi pelo menos mensagens válidas senhor,m+3 j = (ESIGj(1), ESIGj(H(Br ǫ )), \(\sigma\)r,m+3 j ), então eu interrompo sua própria execução da rodada r imediatamente, define Br = Br ǫ , e define seu próprio CERT r como o conjunto de mensagens mr,m+3 j por 1 e H(Br ǫ). 5.5 Análise de Algorand ′ 1 Introduzimos as seguintes notações para cada rodada r \(\geq\)0, utilizada na análise. • Seja T r o momento em que o primeiro usuário honesto conhece Br−1. • Seja Ir+1 o intervalo [T r+1, T r+1 + \(\lambda\)]. Observe que T 0 = 0 pela inicialização do protocolo. Para cada s \(\geq\)1 e i \(\in\)SV r,s, lembre-se que ar,s eu e \(\beta\)r,s eu são respectivamente o horário de início e o horário de término da etapa s do jogador i. Além disso, lembre-se que ts = (2s −3)\(\lambda\) + Λ para cada 2 \(\leq\)s \(\leq\)m + 3. Além disso, sejam I0 \(\triangleq\){0} e t1 \(\triangleq\)0. Finalmente, lembre-se que Lr \(\leq\)m/3 é uma variável aleatória que representa o número de tentativas de Bernoulli precisava ver um 1, quando cada tentativa é 1 com probabilidade ph 2 e há no máximo m/3 tentativas. Se tudo as tentativas falham então Lr \(\triangleq\)m/3. Na análise ignoramos o tempo de cálculo, pois é de facto insignificante em relação ao tempo necessário para propagar mensagens. Em qualquer caso, usando \(\lambda\) e Λ ligeiramente maiores, o tempo de cálculo pode ser incorporado diretamente na análise. A maioria das declarações abaixo são sustentadas “com esmagadora probabilidade”, e não podemos enfatizar repetidamente esse fato na análise.5.6 Teorema Principal Teorema 5.1. As seguintes propriedades são válidas com probabilidade esmagadora para cada rodada r \(\geq\)0: 1. Todos os usuários honestos concordam com o mesmo bloco Br. 2. Quando o líder \(\ell\)r é honesto, o bloco Br é gerado por \(\ell\)r, Br contém um conjunto de pagamentos máximo recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br na época intervalo Ir+1. 3. Quando o líder \(\ell\)r é malicioso, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. 4. ph = h2(1 + h −h2) para Lr, e o líder \(\ell\)r é honesto com probabilidade pelo menos ph. Antes de provar nosso teorema principal, façamos duas observações. Observações. • Geração de blocos e latência real. O tempo para gerar o bloco Br é definido como T r+1 −T r. Ou seja, é definido como a diferença entre a primeira vez que um usuário honesto aprende Br e a primeira vez que algum usuário honesto aprende Br−1. Quando o líder da rodada é honesto, a Propriedade 2 é nossa o teorema principal garante que o tempo exato para gerar Br é 8\(\lambda\) + Λ tempo, não importa o que o valor preciso de h > 2/3 pode ser. Quando o líder é malicioso, a Propriedade 3 implica que o o tempo esperado para gerar Br é limitado por (12 ph + 10)\(\lambda\) + Λ, novamente não importa a precisão valor de h.18 Entretanto, o tempo esperado para gerar Br depende do valor preciso de h. Na verdade, pela Propriedade 4, ph = h2(1 + h −h2) e o líder é honesto com probabilidade pelo menos ph, portanto E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ). Por exemplo, se h = 80%, então E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) versus Λ. Observe que o tamanho das mensagens enviadas pelos verificadores em uma etapa Algorand ′ é dominado pelo comprimento das chaves de assinatura digital, que podem permanecer fixas, mesmo quando o número de usuários é enorme. Observe também que, em qualquer passo s > 1, o mesmo número esperado n de verificadores pode ser usado se o número de usuários for 100 mil, 100 milhões ou 100 milhões. Isso ocorre porque n apenas depende de h e F. Em suma, portanto, salvo uma necessidade repentina de aumentar o comprimento da chave secreta, o valor de \(\lambda\) deve permanecer o mesmo, não importa quão grande seja o número de usuários no futuro previsível. Por outro lado, para qualquer taxa de transação, o número de transações cresce com o número de usuários. Portanto, para processar todas as novas transações em tempo hábil, o tamanho de um bloco deve também cresce com o número de usuários, fazendo com que Λ também cresça. Assim, no longo prazo, deveríamos ter \(\lambda\) << Λ. Conseqüentemente, é apropriado ter um coeficiente maior para \(\lambda\) e, na verdade, um coeficiente de 1 para Λ. Prova do Teorema 5.1. Provamos as Propriedades 1–3 por indução: assumindo que elas são válidas para a rodada r −1 (sem perda de generalidade, eles são válidos automaticamente para “rodada -1” quando r = 0), nós os provamos para rodada R. 18De fato, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Como Br−1 é definido exclusivamente pela hipótese indutiva, o conjunto SV r,s é definido exclusivamente para cada etapa s da rodada r. Pela escolha de n1, SV r,1 ̸= \(\emptyset\)com probabilidade esmagadora. Nós agora enuncie os dois lemas a seguir, provados nas Seções 5.7 e 5.8. Durante toda a indução e em nas provas dos dois lemas, a análise para a rodada 0 é quase a mesma que a etapa indutiva, e destacaremos as diferenças quando elas ocorrerem. Lema 5.2. [Lema da completude] Assumindo que as propriedades 1–3 são válidas para a rodada r−1, quando o líder \(\ell\)r é honesto, com probabilidade esmagadora, • Todos os usuários honestos concordam com o mesmo bloco Br, que é gerado por \(\ell\)r e contém um valor máximo conjunto de pagamentos recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; e • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Lema 5.3. [Lema de Solidez] Assumindo que as Propriedades 1–3 são válidas para a rodada r −1, quando o líder \(\ell\)r é malicioso, com probabilidade esmagadora, todos os usuários honestos concordam com o mesmo bloco Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. As propriedades 1–3 são válidas aplicando os Lemas 5.2 e 5.3 a r = 0 e à etapa indutiva. Finalmente, reafirmamos a Propriedade 4 como o seguinte lema, provado na Seção 5.9. Lema 5.4. Dadas as propriedades 1–3 para cada rodada antes de r, ph = h2(1 + h −h2) para Lr, e o o líder \(\ell\)r é honesto com probabilidade de pelo menos ph. Combinando os três lemas acima, o Teorema 5.1 é válido. ■ O lema abaixo afirma várias propriedades importantes sobre o round r dado o indutivo hipótese, e será usada nas provas dos três lemas acima. Lema 5.5. Suponha que as propriedades 1–3 sejam válidas para a rodada r −1. Para cada etapa s \(\geq\)1 da rodada r e cada verificador honesto i \(\in\)HSV r,s, temos que (a) \(\alpha\)r,s eu \(\in\)Ir; (b) se o jogador i esperou um período de tempo ts, então \(\beta\)r,s eu \(\in\)[T r + ts, T r + \(\lambda\) + ts] para r > 0 e \(\beta\)r,s eu = ts para r = 0; e (c) se o jogador i esperou um período de tempo ts, então no tempo \(\beta\)r,s eu, ele recebeu todas as mensagens enviado por todos os verificadores honestos j \(\in\)HSV r,s′ para todas as etapas s′ < s. Além disso, para cada passo s \(\geq\)3, temos que (d) não existem dois jogadores diferentes i, i′ \(\in\)SV r,s e dois valores diferentes v, v′ do mesmo duração, tal que ambos os jogadores esperaram um período de tempo ts, mais de 2/3 de todos os mensagens válidas senhor,s−1 j jogador que recebo assinou por v, e mais de 2/3 de todos os válidos mensagens senhor,s-1 j o jogador que i′ recebe assinou por v′. Prova. A propriedade (a) segue diretamente da hipótese indutiva, pois o jogador i conhece Br−1 no intervalo de tempo Ir e inicia seus próprios passos imediatamente. A propriedade (b) segue diretamente de (a): uma vez que jogador i esperou um certo tempo ts antes de agir, \(\beta\)r,s eu = \(\alpha\)r,s eu + ts. Observe que \(\alpha\)r,s eu = 0 para r = 0. Provamos agora a Propriedade (c). Se s = 2, então pela Propriedade (b), para todos os verificadores j \(\in\)HSV r,1 temos \(\beta\)r,s eu = \(\alpha\)r,s eu + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j +Λ.Como cada verificador j \(\in\)HSV r,1 envia sua mensagem no tempo \(\beta\)r,1 j e a mensagem chega a todos os honestos usuários em no máximo Λ tempo, por tempo \(\beta\)r,s eu jogador i recebeu as mensagens enviadas por todos os verificadores em HSV r,1 conforme desejado. Se s > 2, então ts = ts−1 + 2\(\lambda\). Pela Propriedade (b), para todas as etapas s′ < s e todos os verificadores j \(\in\)HSV r,s′, \(\beta\)r,s eu = \(\alpha\)r,s eu + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ j +\(\lambda\). Como cada verificador j \(\in\)HSV r,s′ envia sua mensagem no tempo \(\beta\)r,s′ j e a mensagem chega a todos os honestos usuários em no máximo \(\lambda\) tempo, por tempo \(\beta\)r,s eu jogador i recebeu todas as mensagens enviadas por todos os verificadores honestos em HSV r,s′ para todo s′ < s. Assim, a Propriedade (c) é válida. Finalmente, provamos a Propriedade (d). Observe que os verificadores j \(\in\)SV r,s−1 sinalizam no máximo duas coisas em Etapa s −1 usando suas chaves secretas efêmeras: um valor vj do mesmo comprimento que a saída do Função hash, e também um bit bj \(\in\){0, 1} se s −1 \(\geq\)4. É por isso que no enunciado do lema exigimos que v e v′ tenham o mesmo comprimento: muitos verificadores podem ter assinado um valor hash v e um bit b, portanto, ambos ultrapassam o limite de 2/3. Suponha, por contradição, que existam os verificadores desejados i, i′ e os valores v, v′. Observe que alguns verificadores maliciosos no MSV r,s−1 podem ter assinado v e v′, mas cada um deles honesto O verificador em HSV r,s−1 assinou no máximo um deles. Pela propriedade (c), tanto i quanto i′ receberam todas as mensagens enviadas por todos os verificadores honestos em HSV r,s−1. Seja HSV r,s−1(v) o conjunto de verificadores honestos (r, s −1) que assinaram v, MSV r,s−1 eu o conjunto de verificadores maliciosos (r, s −1) dos quais i recebeu uma mensagem válida, e MSV r,s−1 eu (v) o subconjunto de MSV r,s−1 eu de quem recebi uma assinatura de mensagem válida v. Pelos requisitos para eu e v, temos razão \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 eu (v)| |HSV r,s−1| + |MSV r,s−1 eu |

2 3. (1) Nós primeiro mostramos |MSV r,s−1 eu (v)| \(\leq\)|HSV r,s−1(v)|. (2) Supondo o contrário, pelas relações entre os parâmetros, com probabilidade esmagadora |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 eu |, assim razão < |HSV r,s−1(v)| + |MSV r,s−1 eu (v)| 3|MSV r,s−1 eu | < 2|MSV r,s−1 eu (v)| 3|MSV r,s−1 eu | \(\leq\)2 3, contradizendo a desigualdade 1. A seguir, pela Desigualdade 1 temos 2|HSV r,s−1| + 2|MSV r,s−1 eu | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 eu (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 eu | + |MSV r,s−1 eu (v)|. Combinando com a Desigualdade 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 eu (v)| \(\leq\)4|HSV r,s−1(v)|, o que implica |HSV r,s−1(v)| > 1 2|HSV r,s−1|.Da mesma forma, pelos requisitos para i′ e v′, temos |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Como um verificador honesto j \(\in\)HSV r,s−1 destrói sua chave secreta efêmera skr,s−1 j antes de propagar sua mensagem, o Adversário não pode falsificar a assinatura de j para um valor que j não assinou, após aprendendo que j é um verificador. Assim, as duas desigualdades acima implicam |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, uma contradição. Consequentemente, os desejados i, i′, v, v′ não existem, e A propriedade (d) é válida. ■ 5.7 O lema da completude Lema 5.2. [Lema da completude, reformulado] Assumindo que as propriedades 1–3 são válidas para a rodada r−1, quando o líder \(\ell\)r é honesto, com probabilidade esmagadora, • Todos os usuários honestos concordam com o mesmo bloco Br, que é gerado por \(\ell\)r e contém um valor máximo conjunto de pagamentos recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; e • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Prova. Pela hipótese indutiva e Lema 5.5, para cada etapa s e verificador i \(\in\)HSV r,s, ar,s eu \(\in\)Ir. Abaixo analisamos o protocolo passo a passo. Etapa 1. Por definição, todo verificador honesto i \(\in\)HSV r,1 propaga a mensagem desejada mr,1 eu em tempo \(\beta\)r,1 eu = \(\alpha\)r,1 eu, onde senhor,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 eu), irmão eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)), e PAGUE r i é um conjunto de pagamentos máximo entre todos os pagamentos que vi até o momento \(\alpha\)r,1 eu. Etapa 2. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,2. Pelo Lema 5.5, quando o jogador i termina esperando no tempo \(\beta\)r,2 eu = \(\alpha\)r,2 eu + t2, ele recebeu todas as mensagens enviadas pelos verificadores em HSV r,1, incluindo senhor,1 \(\ell\)r. Pela definição de \(\ell\)r, não existe outro jogador em PKr−k cuja credencial seja hash valor é menor que H(\(\sigma\)r,1 \(\ell\)r). Claro, o Adversário pode corromper \(\ell\)r depois de ver que H(\(\sigma\)r,1 \(\ell\)r) é muito pequeno, mas a essa altura o jogador \(\ell\)r destruiu sua chave efêmera e a mensagem mr,1 \(\ell\)r foi propagado. Assim, o verificador i define seu próprio líder como o jogador \(\ell\)r. Assim, no tempo \(\beta\)r,2 eu, verificador i propaga mr,2 eu = (ESIGi(v′ eu), \(\sigma\)r,2 eu), onde v′ eu = H(Br \(\ell\)r). Quando r = 0, a única diferença é que \(\beta\)r,2 eu = t2 em vez de estar em um intervalo. Coisas semelhantes podem ser ditas para passos futuros e não os enfatizarei novamente. Etapa 3. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,3. Pelo Lema 5.5, quando o jogador i termina esperando no tempo \(\beta\)r,3 eu = \(\alpha\)r,3 eu + t3, ele recebeu todas as mensagens enviadas pelos verificadores em HSV r,2. Pelas relações entre os parâmetros, com probabilidade esmagadora |HSV r,2| > 2|MSV r,2|. Além disso, nenhum verificador honesto assinaria mensagens contraditórias, e o Adversário não pode falsificar a assinatura de um verificador honesto depois que este último tiver destruído seu correspondente chave secreta efêmera. Assim, mais de 2/3 de todas as mensagens (r, 2) válidas que recebi são de verificadores honestos e da forma mr,2 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j ), sem contradição. Assim, no tempo \(\beta\)r,3 eu jogador i propaga mr,3 eu = (ESIGi(v′), \(\sigma\)r,3 eu ), onde v′ = H(Br \(\ell\)r).Etapa 4. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,4. Pelo Lema 5.5, o jogador i recebeu todos mensagens enviadas pelos verificadores no HSV r,3 quando ele termina de esperar no tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu +t4. Semelhante a Etapa 3, mais de 2/3 de todas as mensagens (r, 3) válidas que recebi são de verificadores honestos e da forma senhor,3 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j). Assim, o jogador i define vi = H(Br \(\ell\)r), gi = 2 e bi = 0. No tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu +t4 ele propaga senhor,4 eu = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 eu). Etapa 5. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,5. Pelo Lema 5.5, jogador eu teria recebeu todas as mensagens enviadas pelos verificadores no HSV r,4 se ele esperou até o tempo \(\alpha\)r,5 eu + t5. Observe que |HSV r,4| \(\geq\)tH.19 Observe também que todos os verificadores em HSV r,4 assinaram para H(Br \(\ell\)r). Como |MSV r,4| < tH, não existe v′ ̸= H(Br \(\ell\)r) que poderia ter sido assinado por tH verificadores em SV r,4 (que seriam necessariamente maliciosos), então o jogador i não para antes de ter recebeu mensagens válidas mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j). Seja T o momento em que o último evento acontece. Algumas dessas mensagens podem ser de jogadores maliciosos, mas porque |MSV r,4| < tH, pelo menos um deles é de um verificador honesto em HSV r,4 e é enviado após o tempo Tr+t4. Assim, T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, e no momento T o jogador i também recebeu a mensagem senhor,1 \(\ell\)r. Pela construção do protocolo, o jogador i para no tempo \(\beta\)r,5 eu = T sem propagar qualquer coisa; define Br = Br \(\ell\)r; e define seu próprio CERT r como o conjunto de (r, 4) mensagens para 0 e H(Br \(\ell\)r) que ele recebeu. Etapa s > 5. Da mesma forma, para qualquer passo s > 5 e qualquer verificador i \(\in\)HSV r,s, o jogador i teria recebeu todas as mensagens enviadas pelos verificadores no HSV r,4 se ele esperou até o tempo \(\alpha\)r,s eu + ts. Pelo mesma análise, jogador i para sem propagar nada, configurando Br = Br \(\ell\)r (e definindo seu próprio CERT r corretamente). É claro que os verificadores maliciosos podem não parar e podem propagar mensagens, mas porque |MSV r,s| <tH, por indução nenhum outro v′ poderia ser assinado pelos verificadores tH em qualquer passo 4 \(\leq\)s′ < s, portanto, os verificadores honestos só param porque receberam o valor válido (r, 4)-mensagens para 0 e H(Br \(\ell\)r). Reconstrução do Bloco Round-r. A análise do Passo 5 aplica-se a uma abordagem honesta genérica. usuário eu quase sem nenhuma alteração. Na verdade, o jogador i inicia sua própria rodada r no intervalo Ir e só irá parar no instante T quando tiver recebido tH mensagens válidas (r, 4) para H(Br \(\ell\)r). Novamente porque pelo menos uma dessas mensagens é de verificadores honestos e é enviada após o tempo T r + t4, o jogador i tem também recebeu senhor,1 \(\ell\)r pelo tempo T. Assim, ele define Br = Br \(\ell\)r com o CERT r adequado. Resta apenas mostrar que todos os usuários honestos terminam sua rodada r dentro do intervalo de tempo Ir+1. Pela análise da Etapa 5, todo verificador honesto i \(\in\)HSV r,5 conhece Br em ou antes de \(\alpha\)r,5 eu + t5 \(\leq\) Tr + \(\lambda\) + t5 = Tr + 8\(\lambda\) + Λ. Como T r+1 é o momento em que o primeiro usuário honesto conhece Br, temos T r+1 \(\leq\)T r + 8\(\lambda\) + Λ conforme desejado. Além disso, quando o jogador conhece o Br, ele já ajudou a propagar as mensagens em seu CERT r. Observe que todas essas mensagens serão recebidas por todos os usuários honestos dentro do tempo \(\lambda\), mesmo que 19Estritamente falando, isto acontece com uma probabilidade muito elevada, mas não necessariamente esmagadora. No entanto, isso a probabilidade afeta ligeiramente o tempo de execução do protocolo, mas não afeta sua correção. Quando h = 80%, então |HSV r,4| \(\geq\)tH com probabilidade 1 −10−8. Se este evento não ocorrer, o protocolo continuará por mais um 3 etapas. Como a probabilidade de isso não ocorrer em duas etapas é insignificante, o protocolo terminará na Etapa 8. Em expectativa, então, o número de etapas necessárias é quase 5.player ir foi o primeiro player a propagá-los. Além disso, seguindo a análise acima, temos T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, portanto, todos os usuários honestos receberam mr,1 \(\ell\)r por tempo T r+1 + \(\lambda\). Assim, todos os usuários honestos conhecem Br no intervalo de tempo Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Finalmente, para r = 0 temos na verdade T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ. Combinando tudo junto, O lema 5.2 é válido. ■ 5.8 O Lema da Solidez Lema 5.3. [Lema da Solidez, reformulado] Assumindo que as Propriedades 1–3 são válidas para a rodada r −1, quando o líder \(\ell\)r é malicioso, com grande probabilidade, todos os usuários honestos concordam com o mesmo bloco Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Prova. Consideramos as duas partes do protocolo, GC e BBA⋆, separadamente. GC. Pela hipótese indutiva e pelo Lema 5.5, para qualquer passo s \(\in\){2, 3, 4} e qualquer passo honesto verificador i \(\in\)HSV r,s, quando o jogador i atua no tempo \(\beta\)r,s eu = \(\alpha\)r,s eu +ts, ele recebeu todas as mensagens enviadas por todos os verificadores honestos nas etapas s′ < s. Distinguimos dois casos possíveis para o passo 4. Caso 1. Nenhum verificador i \(\in\)HSV r,4 define gi = 2. Neste caso, por definição bi = 1 para todos os verificadores i \(\in\)HSV r,4. Ou seja, eles começam com um acordo sobre 1 no protocolo BA binário. Eles podem não ter um acordo sobre seus vis, mas isso não importa, como veremos no BA binário. Caso 2. Existe um verificador ˆi \(\in\)HSV r,4 tal que gˆi = 2. Neste caso, mostramos que (1) gi \(\geq\)1 para todo i \(\in\)HSV r,4, (2) existe um valor v′ tal que vi = v′ para todo i \(\in\)HSV r,4, e (3) existe uma mensagem válida mr,1 \(\ell\) de algum verificador \(\ell\) \(\in\)SV r,1 tal que v′ = H(Br \(\ell\)). Na verdade, como o jogador ˆi é honesto e define gˆi = 2, mais de 2/3 de todas as mensagens válidas mr,3 j ele recebeu são para o mesmo valor v′ ̸= \(\bot\), e ele definiu vˆi = v′. Pela Propriedade (d) no Lema 5.5, para qualquer outro verificador honesto (r, 4) i, não pode ser que mais de 2/3 de todas as mensagens válidas mr,3 j que i′ recebeu têm o mesmo valor v′′ ̸= v′. Conseqüentemente, se i definir gi = 2, deve ser que i tenha visto > 2/3 de maioria para v′ também e defina vi = v′, conforme desejado. Agora considere um verificador arbitrário i \(\in\)HSV r,4 com gi < 2. Semelhante à análise de Propriedade (d) no Lema 5.5, porque o jogador ˆi obteve > 2/3 de maioria para v′, mais de 1 2|HSV r,3| honesto (r, 3)-verificadores assinaram v′. Porque recebi todas as mensagens de verificadores honestos (r, 3) de tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu + t4, ele recebeu em particular mais de 1 2|HSV r,3| mensagens deles para v'. Porque |HSV r,3| > 2|MSV r,3|, i obteve > 1/3 de maioria para v′. Assim, jogador i define gi = 1 e a propriedade (1) é válida. O jogador i necessariamente define vi = v′? Suponha que exista um valor diferente v′′ ̸= \(\bot\)tal que o jogador i também obteve > 1/3 de maioria para v′′. Algumas dessas mensagens podem ser de mensagens maliciosas verificadores, mas pelo menos um deles é de algum verificador honesto j \(\in\)HSV r,3: de fato, porque |HSV r,3| > 2|MSV r,3| e recebi todas as mensagens do HSV r,3, o conjunto de malware verificadores de quem i recebeu uma mensagem válida (r, 3) conta como <1/3 de todas as mensagens válidas mensagens que recebeu.Por definição, o jogador j deve ter visto > 2/3 de maioria para v′′ entre todas as mensagens (r, 2) válidas ele recebeu. No entanto, já temos que alguns outros verificadores (r, 3) honestos viram Maioria de 2/3 para v′ (porque assinaram v′). Pela Propriedade (d) do Lema 5.5, isso não pode acontecer e tal valor v′′ não existe. Assim, o jogador i deve ter definido vi = v′ conforme desejado, e Propriedade (2) é válida. Finalmente, dado que alguns verificadores (r, 3) honestos viram uma maioria > 2/3 para v′, alguns (na verdade, mais da metade dos verificadores) honestos (r, 2) assinaram v′ e propagaram suas mensagens. Pela construção do protocolo, aqueles verificadores (r, 2) honestos devem ter recebido um valor válido. mensagem senhor,1 \(\ell\) de algum jogador \(\ell\) \(\in\)SV r,1 com v′ = H(Br \(\ell\)), portanto a Propriedade (3) é válida. BBA⋆. Novamente distinguimos dois casos. Caso 1. Todos os verificadores i \(\in\)HSV r,4 possuem bi = 1. Isso acontece seguindo o Caso 1 do GC. Como |MSV r,4| < tH, neste caso não há verificador em SV r,5 poderia coletar ou gerar mensagens válidas (r, 4) para o bit 0. Assim, nenhum verificador honesto em HSV r,5 pararia porque conhece um bloco não vazio, o Ir. Além disso, embora existam pelo menos tH mensagens (r, 4) válidas para o bit 1, s′ = 5 não satisfaz s′ −2 ≡1 mod 3, portanto, nenhum verificador honesto em HSV r,5 pararia porque sabe que Br = Br ǫ. Em vez disso, todo verificador i \(\in\)HSV r,5 atua no tempo \(\beta\)r,5 eu = \(\alpha\)r,5 eu + t5, quando ele tiver recebido todos mensagens enviadas pelo HSV r,4 seguindo o Lema 5.5. Assim, o jogador i obteve > 2/3 de maioria para 1 e define bi = 1. Na Etapa 6, que é uma etapa Coin-Fixed-To-1, embora s′ = 5 satisfaça s′ −2 ≡0 mod 3, há não existem mensagens válidas (r, 4) para o bit 0, portanto, nenhum verificador em HSV r,6 pararia porque ele conhece um bloco não vazio, Ir. No entanto, com s′ = 6, s′ −2 ≡1 mod 3 e existem |HSV r,5| \(\geq\)tH mensagens válidas (r, 5) para o bit 1 do HSV r,5. Para cada verificador i \(\in\)HSV r,6, seguindo o Lema 5.5, no tempo ou antes dele \(\alpha\)r,6 eu + jogador t6 eu recebeu todas as mensagens do HSV r,5, então paro sem propagar nada e configuro Br = Br ǫ. Seu CERT r é o conjunto de tH mensagens válidas (r, 5) mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) recebido por ele quando ele para. Em seguida, seja o jogador i um verificador honesto na etapa s > 6 ou um usuário honesto genérico (ou seja, não verificador). Semelhante à prova do Lema 5.2, o jogador i define Br = Br ǫ e define o seu próprio CERT r como o conjunto de tH mensagens válidas (r, 5) mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) ele tem recebido. Finalmente, semelhante ao Lema 5.2, Tr+1 \(\leq\) min i\(\in\)HSV r,6 \(\alpha\)r,6 eu + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1, porque o primeiro usuário honesto i que sabe que Br ajudou a propagar as mensagens (r, 5) em seu CERT r. Caso 2. Existe um verificador ˆi \(\in\)HSV r,4 com bˆi = 0. Isto acontece seguindo o Caso 2 do GC e é o caso mais complexo. Pela análise do GC, neste caso existe uma mensagem válida mr,1 \(\ell\) tal que vi = H(Br \(\ell\)) para todo i \(\in\)HSV r,4. Nota que os verificadores no HSV r,4 podem não ter um acordo sobre seus bi’s. Para qualquer passo s \(\in\){5, . . . , m + 3} e verificador i \(\in\)HSV r,s, pelo Lema 5.5 jogador eu teria recebeu todas as mensagens enviadas por todos os verificadores honestos em HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 se ele esperou por tempo ts.Consideramos agora o seguinte evento E: existe um passo s∗\(\geq\)5 tal que, pela primeira vez tempo no BA binário, algum jogador i∗\(\in\)SV r,s∗(seja malicioso ou honesto) deveria parar sem propagar nada. Usamos “deveria parar” para enfatizar o fato de que, se o jogador i∗ é malicioso, então ele pode fingir que não deveria parar de acordo com o protocolo e propagar mensagens da escolha do Adversário. Além disso, pela construção do protocolo, quer (E.a) i∗é capaz de coletar ou gerar pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) para os mesmos v e s′, com 5 \(\leq\)s′ \(\leq\)s∗and s′ −2 ≡0 mod 3; ou (E.b) i∗é capaz de coletar ou gerar pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) para o mesmo s′, com 6 \(\leq\)s′ \(\leq\)s∗e s′ −2 ≡1 mod 3. Porque as mensagens honestas (r, s′ −1) são recebidas por todos os verificadores honestos (r, s′) antes de terminam de esperar na Etapa s′, e porque o Adversário recebe tudo o mais tardar no usuários honestos, sem perda de generalidade temos s′ = s∗e o jogador i∗é malicioso. Observe que não exigimos que o valor v em E.a fosse o hash de um bloco válido: como ficará claro na análise, v = H(Br \(\ell\)) neste subevento. Abaixo analisamos primeiro o Caso 2 após o evento E, e depois mostramos que o valor de s∗é essencialmente distribuído de acordo com Lr (portanto, o evento E acontece antes da Etapa m + 3 com esmagadora probabilidade, dadas as relações dos parâmetros). Para começar, para qualquer etapa 5 \(\leq\)s < s∗, todo verificador honesto i \(\in\)HSV r,s esperou o tempo ts e definiu vi como o voto majoritário do mensagens válidas (r, s−1) que ele recebeu. Como o jogador i recebeu todas as mensagens honestas (r, s−1) seguindo o Lema 5.5, uma vez que todos os verificadores honestos em HSV r,4 assinaram H(Br \(\ell\)) seguinte caso 2 do GC, e já que |HSV r,s−1| > 2|MSV r,s−1| para cada s, por indução temos aquele jogador i definiu vi = H(Br \(\ell\)). O mesmo vale para todo verificador honesto i \(\in\)HSV r,s∗que não para sem propagar qualquer coisa. Agora consideramos a Etapa s∗ e distinguimos quatro subcasos. Caso 2.1.a. O evento E.a acontece e existe um verificador honesto i′ \(\in\)HSV r,s∗que deveria também pare sem propagar nada. Neste caso, temos s∗−2 ≡0 mod 3 e o passo s∗ é um passo Coin-Fixed-To-0. Por definição, o jogador i′ recebeu pelo menos tH mensagens válidas (r, s∗−1) da forma (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j ). Como todos os verificadores em HSV r,s∗−1 assinaram H(Br \(\ell\)) e |MSV r,s∗−1| <tH, temos v = H(Br \(\ell\)). Como pelo menos tH −|MSV r,s∗−1| \(\geq\)1 das (r, s∗−1)-mensagens recebidas por i′ para 0 e v são enviados por verificadores em HSV r,s∗−1 após o tempo T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, jogador i′ recebeu mr,1 \(\ell\) no momento em que ele recebe essas mensagens (r, s∗−1). Assim jogador i′ para sem propagar nada; define Br = Br \(\ell\); e define seu próprio CERT r para ser o conjunto de mensagens (r, s∗−1) válidas para 0 e v que ele recebeu. A seguir, mostramos que qualquer outro verificador i \(\in\)HSV r,s∗ parou com Br = Br \(\ell\), ou definiu bi = 0 e propagou (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s eu). Na verdade, porque Step s∗ é a primeira vez que algum verificador deve parar sem propagar nada, não há existe uma etapa s′ < s∗com s′ −2 ≡1 mod 3 tal que tH (r, s′ −1)-verificadores assinaram 1. Conseqüentemente, nenhum verificador em HSV r,s∗para com Br = Br ǫ.Além disso, como todos os verificadores honestos nas etapas {4, 5, . . . , s∗−1} assinaram H(Br \(\ell\)), existe não existe uma etapa s′ \(\leq\)s∗com s′ −2 ≡0 mod 3 tal que tH (r, s′ −1)-verificadores assinaram algum v′′ ̸= H(Br \(\ell\)) —de fato, |MSV r,s′−1| < tH. Conseqüentemente, nenhum verificador em HSV r,s∗stops com Br̸= Br ǫ e Br̸= Br \(\ell\). Isto é, se um jogador i \(\in\)HSV r,s∗ parou sem propagando qualquer coisa, ele deve ter definido Br = Br \(\ell\). Se um jogador i \(\in\)HSV r,s∗ esperou o tempo ts∗ e propagou uma mensagem no momento \(\beta\)r,s∗ eu = \(\alpha\)r,s∗ eu + ts∗, ele recebeu todas as mensagens do HSV r,s∗−1, incluindo pelo menos tH −|MSV r,s∗−1| deles para 0 e v. Se eu obtive uma maioria > 2/3 para 1, então ele viu mais de 2(tH −|MSV r,s∗−1|) mensagens (r, s∗−1) válidas para 1, com mais que 2tH −3|MSV r,s∗−1| deles de verificadores (r, s∗−1) honestos. No entanto, isso implica |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, contradizendo o fato de que |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, que vem dos relacionamentos para os parâmetros. Assim, não vejo > 2/3 maioria para 1, e ele define bi = 0 porque a etapa s∗ é uma etapa com moeda fixada em 0. Como temos visto, vi = H(Br \(\ell\)). Assim i se propaga (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s i) como queríamos mostrar. Para a Etapa s∗+ 1, já que o jogador i′ ajudou a propagar as mensagens em seu CERT r no ou antes do tempo \(\alpha\)r,s∗ eu' + ts∗, todos os verificadores honestos em HSV r,s∗+1 receberam pelo menos mensagens válidas (r, s∗−1) para o bit 0 e valor H(Br \(\ell\)) antes ou antes de terminarem esperando. Além disso, os verificadores em HSV r,s∗+1 não irão parar antes de receber aqueles (r, s∗−1)- mensagens, porque não existem outras tH mensagens válidas (r, s′ −1) para o bit 1 com s′ −2 ≡1 mod 3 e 6 \(\leq\)s′ \(\leq\)s∗+ 1, pela definição do Passo s∗. Em particular, Passo s∗+ 1 em si é uma etapa Coin-Fixed-To-1, mas nenhum verificador honesto em HSV r,s∗ propagou uma mensagem para 1 e |MSV r,s∗| < tH. Assim, todos os verificadores honestos em HSV r,s∗+1 param sem propagar nada e definem Br = irmão \(\ell\): como antes, eles receberam mr,1 \(\ell\) antes de receberem as mensagens (r, s∗−1) desejadas.20 O mesmo pode ser dito de todos os verificadores honestos em etapas futuras e de todos os usuários honestos em geral. Em particular, todos eles sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\) \(\alpha\)r,s∗ eu' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Caso 2.1.b. O evento E.b acontece e existe um verificador honesto i′ \(\in\)HSV r,s∗que deveria também pare sem propagar nada. Neste caso, temos s∗−2 ≡1 mod 3 e o passo s∗ é um passo Coin-Fixed-To-1. A análise é semelhante ao Caso 2.1.a e muitos detalhes foram omitidos. 20Se \(\ell\) for malicioso, ele poderá enviar mr,1 \(\ell\) tarde, esperando que alguns usuários/verificadores honestos não tenham recebido mr,1 \(\ell\) ainda quando receberem o certificado desejado por isso. No entanto, como o verificador ˆi \(\in\)HSV r,4 definiu bˆi = 0 e vˆi = H(Br \(\ell\)), como antes de termos que mais da metade dos verificadores honestos i \(\in\)HSV r,3 definiram vi = H(Br \(\ell\)). Isto implica ainda mais mais da metade dos verificadores honestos i \(\in\)HSV r,2 definiram vi = H(Br \(\ell\)), e todos os verificadores (r, 2) receberam mr,1 \(\ell\). Como o O adversário não consegue distinguir um verificador de um não-verificador, ele não pode visar a propagação de mr,1 \(\ell\) para (r, 2)-verificadores sem que os não-verificadores o vejam. Na verdade, com alta probabilidade, mais da metade (ou uma boa fração constante) de todos os usuários honestos viram mr,1 \(\ell\) depois de esperar por t2 desde o início de sua própria rodada r. A partir daqui, o tempo \(\lambda\)′ necessário para mr,1 \(\ell\) alcançar os usuários honestos restantes é muito menor que Λ e, para simplificar, não escreva na análise. Se 4\(\lambda\) \(\geq\) \(\lambda\)′ então a análise prossegue sem qualquer alteração: ao final da Etapa 4, todos usuários honestos teriam recebido mr,1 \(\ell\). Se o tamanho do bloco se tornar enorme e 4\(\lambda\) < \(\lambda\)′, então nas Etapas 3 e 4, o protocolo poderia pedir a cada verificador que esperasse por \(\lambda\)′/2 em vez de 2\(\lambda\), e a análise continua válida.Como antes, o jogador i′ deve ter recebido pelo menos tH mensagens válidas (r, s∗−1) da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j ). Novamente pela definição de s∗, não existe um passo 5 \(\leq\)s′ < s∗com s′ −2 ≡0 mod 3, onde pelo menos tH (r, s′ −1)-verificadores assinaram 0 e o mesmo v. Assim o jogador i′ para sem propagar nada; define Br = Br ǫ; e conjuntos seu próprio CERT r seja o conjunto de mensagens (r, s∗−1) válidas para o bit 1 que ele recebeu. Além disso, qualquer outro verificador i \(\in\)HSV r,s∗ parou com Br = Br ǫ , ou definiu bi = 1 e propagado (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ eu ). Já que o jogador i′ ajudou a propagar as mensagens (r, s∗−1) em seu CERT r no tempo \(\alpha\)r,s∗ eu' + ts∗, novamente todos os verificadores honestos em HSV r,s∗+1 para sem propagar nada e define Br = Br ǫ . Da mesma forma, todos os honestos os usuários sabem Br = Br ǫ dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\) \(\alpha\)r,s∗ eu' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Caso 2.2.a. O evento E.a acontece e não existe um verificador honesto i′ \(\in\)HSV r,s∗quem também deve parar sem propagar nada. Neste caso, observe que o jogador i∗ poderia ter um CERT válido r i∗consistindo no tH desejado (r, s∗−1)-mensagens que o Adversário é capaz de coletar ou gerar. No entanto, o malicioso verificadores podem não ajudar a propagar essas mensagens, por isso não podemos concluir que o honesto os usuários os receberão no tempo \(\lambda\). Na verdade, |MSV r,s∗−1| dessas mensagens podem ser de verificadores (r, s∗−1) maliciosos, que não propagaram suas mensagens e apenas enviaram para os verificadores maliciosos na etapa s∗. Semelhante ao Caso 2.1.a, aqui temos s∗−2 ≡0 mod 3, a etapa s∗ é uma etapa com moeda fixada em 0, e as mensagens (r, s∗−1) no CERT r i∗são para o bit 0 e v = H(Br \(\ell\)). Na verdade, todos honestos (r, s∗−1)-verificadores assinam v, portanto o Adversário não pode gerar as mensagens (r, s∗−1) válidas para um v′ diferente. Além disso, todos os verificadores (r, s∗) honestos esperaram o tempo ts∗ e não veem > 2/3 da maioria para o bit 1, novamente porque |HSV r,s∗−1| + 4|MSV r,s∗−1| <2n. Assim, todo verificador honesto i \(\in\)HSV r,s∗conjuntos bi = 0, vi = H(Br \(\ell\)) pela maioria dos votos e propaga mr,s∗ eu = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s∗ eu ) no tempo \(\alpha\)r,s∗ eu + ts∗. Agora considere os verificadores honestos na Etapa s∗+ 1 (que é uma etapa de Moeda Fixada em 1). Se o O adversário realmente envia as mensagens no CERT r i∗para alguns deles e faz com que eles pare, então semelhante ao Caso 2.1.a, todos os usuários honestos sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. Caso contrário, todos os verificadores honestos na Etapa s∗+1 receberam todas as mensagens (r, s∗) para 0 e H(Br \(\ell\)) do HSV r,s∗após o tempo de espera ts∗+1, o que leva a > 2/3 da maioria, porque |HSV r,s∗| > 2|MSV r,s∗|. Assim, todos os verificadores em HSV r,s∗+1 propagam suas mensagens para 0 e H(Br \(\ell\)) em conformidade. Observe que os verificadores em HSV r,s∗+1 não param em Br = Br \(\ell\), porque a etapa s∗+ 1 não é uma etapa com moeda fixada em 0. Agora considere os verificadores honestos na Etapa s∗+2 (que é uma etapa de Inversão Genuína da Moeda). Se o Adversário enviar as mensagens em CERT r i∗para alguns deles e faz com que parem, então, novamente, todos os usuários honestos sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.Caso contrário, todos os verificadores honestos na Etapa s∗+ 2 receberam todas as mensagens (r, s∗+ 1) para 0 e H(Br \(\ell\)) do HSV r,s∗+1 após o tempo de espera ts∗+2, o que leva a uma maioria > 2/3. Assim todos eles propagam suas mensagens para 0 e H(Br \(\ell\)) respectivamente: é isso que eles fazem não “jogue uma moeda” neste caso. Novamente, observe que eles não param sem se propagar, porque a etapa s∗+ 2 não é uma etapa com moeda fixada em 0. Finalmente, para os verificadores honestos na Etapa s∗+3 (que é outra etapa de Moeda Fixada em 0), todos deles teriam recebido pelo menos tH mensagens válidas para 0 e H(Br \(\ell\)) de HSV s∗+2, se eles realmente esperarem o tempo ts∗+3. Assim, quer o Adversário envie ou não as mensagens no CERT r i∗para qualquer um deles, todos os verificadores em HSV r,s∗+3 param com Br = Br \(\ell\), sem propagar qualquer coisa. Dependendo de como o Adversário age, alguns deles podem ter seu próprio CERT r consistindo naquelas (r, s∗−1)-mensagens em CERT r i∗, e os outros têm seu próprio CERT r consistindo nessas mensagens (r, s∗+ 2). De qualquer forma, todos os usuários honestos saiba Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Caso 2.2.b. O evento E.b acontece e não existe um verificador honesto i′ \(\in\)HSV r,s∗quem também deve parar sem propagar nada. A análise neste caso é semelhante àquelas no Caso 2.1.b e Caso 2.2.a, portanto muitos detalhes foram omitidos. Em particular, CERT r i∗consiste nas tH mensagens desejadas (r, s∗−1) para o bit 1 que o Adversário é capaz de coletar ou gerar, s∗−2 ≡1 mod 3, Etapa s∗é um Etapa Coin-Fixed-To-1, e nenhum verificador (r, s∗) honesto poderia ter visto > 2/3 de maioria para 0. Assim, todo verificador i \(\in\)HSV r,s∗define bi = 1 e propaga mr,s∗ eu = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ eu ) no tempo \(\alpha\)r,s∗ eu + ts∗. Semelhante ao Caso 2.2.a, em no máximo mais 3 etapas (ou seja, o protocolo atinge a Etapa s∗+3, que é outra etapa Coin-Fixed-To-1), todos os usuários honestos sabem Br = Br ǫ dentro do intervalo de tempo Ir+1. Além disso, T r+1 pode ser \(\leq\)T r+\(\lambda\)+ts∗+1, ou \(\leq\)T r+\(\lambda\)+ts∗+2, ou \(\leq\)T r + \(\lambda\) + ts∗+3, dependendo de quando é a primeira vez que um verificador honesto é capaz de parar sem propagação. Combinando os quatro subcasos, temos que todos os usuários honestos conhecem Br dentro do intervalo de tempo Ir+1, com T r+1 \(\leq\)T r + \(\lambda\) + ts∗ nos casos 2.1.a e 2.1.b, e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 nos Casos 2.2.a e 2.2.b. Resta limitar s∗ e, portanto, T r+1 para o Caso 2, e fazemos isso considerando como muitas vezes as etapas Coin-Genuinely-Flipped são realmente executadas no protocolo: isto é, alguns verificadores honestos realmente jogaram uma moeda ao ar. Em particular, corrija arbitrariamente uma etapa s′ de moeda genuinamente invertida (ou seja, 7 \(\leq\)s′ \(\leq\)m + 2 e s′ −2 ≡2 mod 3), e seja \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). Por enquanto vamos assumir s′ < s∗, porque de outra forma nenhum verificador honesto realmente joga uma moeda na Etapa s′, de acordo com discussões. Pela definição de SV r,s′−1, o valor hash da credencial de \(\ell\)′ também é o menor entre todos os usuários em PKr-k. Como a função hash é uma oracle aleatória, idealmente o jogador \(\ell\)′ é honesto com probabilidade pelo menos h. Como mostraremos mais tarde, mesmo que o Adversário tente ao máximo prever o saída do aleatório oracle e inclina a probabilidade, o jogador \(\ell\) ′ ainda é honesto com a probabilidadepelo menos ph = h2(1 + h −h2). Abaixo consideramos o caso em que isso realmente acontece: isto é, \(\ell\)′ \(\in\)HSV r,s′−1. Observe que todo verificador honesto i \(\in\)HSV r,s′ recebeu todas as mensagens do HSV r,s′−1 por tempo \(\alpha\)r,s′ eu +ts′. Se o jogador i precisar jogar uma moeda (ou seja, ele não obteve > 2/3 da maioria por o mesmo bit b \(\in\){0, 1}), então ele define bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). Se existir outro honesto verificador i′ \(\in\)HSV r,s′ que viu > 2/3 maioria para um bit b \(\in\){0, 1}, então por Propriedade (d) do Lema 5.5, nenhum verificador honesto em HSV r,s′ teria visto > 2/3 de maioria por um tempo b′̸=b. Como lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b com probabilidade 1/2, todos os verificadores honestos em HSV r,s′ alcançam um acordo sobre b com probabilidade 1/2. É claro que, se tal verificador i′ não existir, então todos verificadores honestos em HSV r,s′ concordam com o bit lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) com probabilidade 1. Combinando a probabilidade para \(\ell\)′ \(\in\)HSV r,s′−1, temos que os verificadores honestos em HSV r,s′ chegar a um acordo sobre um bit b \(\in\){0, 1} com probabilidade pelo menos ph 2 = h2(1+h−h2) 2 . Além disso, por indução na votação majoritária como antes, todos os verificadores honestos em HSV r,s′ têm seus vi definidos ser H(Br \(\ell\)). Assim, uma vez alcançado um acordo sobre b na Etapa s′, T r+1 é ou \(\leq\)T r + \(\lambda\) + ts′+1 ou \(\leq\)T r + \(\lambda\) + ts′+2, dependendo se b = 0 ou b = 1, seguindo a análise dos Casos 2.1.a e 2.1.b. Em particular, nenhuma etapa adicional de Coin-Genuinely-Flipped será executada: isto é, os verificadores em tais passos ainda verificam se eles são os verificadores e, portanto, esperam, mas todos irão parar sem propagar qualquer coisa. Assim, antes do Passo s∗, o número de vezes que os passos Coin-GenuinelyFlipped são executados é distribuído de acordo com a variável aleatória Lr. Deixando o Passo s′ ser a última etapa de Coin-Genuinely-Flipped de acordo com Lr, pela construção do protocolo nós temos s′ = 4 + 3Lr. Quando o Adversário deve fazer o Step s∗ acontecer se ele quiser atrasar T r+1 tanto quanto possível? Podemos até assumir que o Adversário conhece antecipadamente a realização de Lr. Se s∗> s′ então é inútil, porque os verificadores honestos já chegaram a um acordo em Passo s′. Com certeza, neste caso s∗seria s′ +1 ou s′ +2, novamente dependendo se b = 0 ou b = 1. No entanto, na verdade estes são os Casos 2.1.a e 2.1.b, e o T r+1 resultante é exatamente o o mesmo que nesse caso. Mais precisamente, T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Se s∗< s′ −3 —isto é, s∗está antes da penúltima etapa de lançamento genuíno da moeda— então por a análise dos Casos 2.2.a e 2.2.b, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′. Ou seja, o Adversário está na verdade fazendo com que o acordo sobre o Br aconteça de forma mais rápida. Se s∗= s′ −2 ou s′ −1 - isto é, a etapa Coin-Fixed-To-0 ou a etapa Coin-Fixed-To-1 imediatamente antes da Etapa s' - então, pela análise dos quatro subcasos, os verificadores honestos em A etapa s′ não consegue mais lançar moedas, porque elas pararam sem se propagar, ou viram maioria > 2/3 para o mesmo bit b. Portanto temos T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.Em suma, não importa qual seja s∗, temos T r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = T r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = T r + (6Lr + 10)\(\lambda\) + Λ, como queríamos mostrar. O pior caso é quando s∗= s′ −1 e o Caso 2.2.b acontece. Combinando os Casos 1 e 2 do protocolo BA binário, o Lema 5.3 é válido. ■ 5.9 Segurança do Qr Semente e Probabilidade de um Líder Honesto Resta provar o Lema 5.4. Lembre-se de que os verificadores na rodada r são retirados de PKr−k e são escolhidos de acordo com a quantidade Qr−1. A razão para introduzir o parâmetro lookback k é garantir que, na rodada r −k, quando o Adversário for capaz de adicionar novos usuários mal-intencionados para PKr−k, ele não pode prever a quantidade Qr−1 exceto com probabilidade desprezível. Observe que o A função hash é uma oracle aleatória e Qr−1 é uma de suas entradas ao selecionar verificadores para a rodada r. Assim, não importa quão usuários mal-intencionados sejam adicionados ao PKr-k, do ponto de vista do Adversário, cada um deles ainda é selecionado para ser um verificador em uma etapa de rodada r com a probabilidade necessária p (ou p1 para a Etapa 1). Mais precisamente, temos o seguinte lema. Lema 5.6. Com k = O(log1/2 F), para cada rodada r, com probabilidade esmagadora o Adversário não consultou Qr−1 para o oracle aleatório na rodada r −k. Prova. Procedemos por indução. Suponha que para cada rodada \(\gamma\) < r, o Adversário não questionou Q\(\gamma\)−1 ao aleatório oracle na rodada \(\gamma\) −k.21 Considere o seguinte jogo mental jogado por o Adversário na rodada r −k, tentando prever Qr−1. Na Etapa 1 de cada rodada \(\gamma\) = r −k,. . . , r −1, dado um Q\(\gamma\)−1 específico não consultado ao aleatório oracle, ordenando os jogadores i \(\in\)PK\(\gamma\)−k de acordo com os valores hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) cada vez mais, obtemos uma permutação aleatória sobre PK\(\gamma\)−k. Por definição, o líder \(\ell\) \(\gamma\) é o primeiro usuário na permutação e é honesto com probabilidade h. Além disso, quando PK\(\gamma\)−k é grande suficiente, para qualquer número inteiro x \(\geq\)1, a probabilidade de que os primeiros x usuários na permutação sejam todos malicioso, mas o (x + 1)st é honesto é (1 −h)xh. Se \(\ell\) \(\gamma\) for honesto, então Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Como o Adversário não pode falsificar a assinatura de \(\ell\) \(\gamma\), Q\(\gamma\) é distribuído uniformemente aleatoriamente do ponto de vista do Adversário e, exceto com probabilidade exponencialmente pequena,22 não foi questionado para H na rodada r −k. Desde cada Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 respectivamente é a saída de H com Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 como uma das entradas, todos eles parecem aleatórios para o Adversário e o Adversário não poderia ter consultado Qr−1 para H em rodada r −k. Conseqüentemente, o único caso em que o Adversário pode prever Qr−1 com boa probabilidade na rodada r−k é quando todos os líderes \(\ell\)r−k,. . . , \(\ell\)r−1 são maliciosos. Considere novamente uma rodada \(\gamma\) \(\in\){r−k . . . , r−1} e a permutação aleatória sobre PK\(\gamma\)−k induzida pelos valores hash correspondentes. Se para alguns x \(\geq\)2, os primeiros x −1 usuários na permutação são todos maliciosos e o x-ésimo é honesto, então o O adversário tem x escolhas possíveis para Q\(\gamma\): qualquer uma da forma H(SIGi(Q\(\gamma\)−1, \(\gamma\))), onde i é um dos 21Como k é um número inteiro pequeno, sem perda de generalidade pode-se assumir que as primeiras k rodadas do protocolo são executadas sob um ambiente seguro e a hipótese indutiva é válida para essas rodadas. 22Isto é, exponencial no comprimento da saída de H. Observe que esta probabilidade é bem menor que F.os primeiros x-1 usuários mal-intencionados, ao tornar o jogador i o verdadeiro líder da rodada \(\gamma\); ou H(Q\(\gamma\)−1, \(\gamma\)), por forçando B\(\gamma\) = B\(\gamma\) ǫ . Caso contrário, o líder da rodada \(\gamma\) será o primeiro usuário honesto na permutação e Qr−1 torna-se imprevisível para o Adversário. Qual das x opções de Q\(\gamma\) acima o Adversário deve seguir? Para ajudar o adversário responder a esta pergunta, no jogo mental nós realmente o tornamos mais poderoso do que ele realmente é, como segue. Em primeiro lugar, na realidade, o Adversário não pode calcular o hash do valor de um usuário honesto. assinatura, portanto não pode decidir, para cada Q\(\gamma\), o número x(Q\(\gamma\)) de usuários mal-intencionados no início da permutação aleatória na rodada \(\gamma\) + 1 induzida por Q\(\gamma\). No jogo mental, damos a ele o números x(Q\(\gamma\)) gratuitamente. Em segundo lugar, na realidade, ter os primeiros x usuários na permutação, todos ser malicioso não significa necessariamente que todos possam ser transformados em líderes, porque o hash os valores de suas assinaturas também devem ser menores que p1. Ignoramos essa restrição na mente jogo, dando ao Adversário ainda mais vantagens. É fácil perceber que no jogo mental a opção ótima para o Adversário, denotada por ˆQ\(\gamma\), é aquele que produz a maior sequência de usuários maliciosos no início do aleatório permutação na rodada \(\gamma\) + 1. Na verdade, dado um Q\(\gamma\) específico, o protocolo não depende de Q\(\gamma\)−1 mais e o Adversário pode focar apenas na nova permutação na rodada \(\gamma\) + 1, que tem o mesma distribuição para o número de usuários mal-intencionados no início. Assim, em cada rodada \(\gamma\), o ˆQ\(\gamma\) mencionado acima dá a ele o maior número de opções para Q\(\gamma\)+1 e, portanto, maximiza a probabilidade de que os líderes consecutivos sejam todos maliciosos. Portanto, no jogo mental o Adversário segue uma Cadeia de Markov da rodada r −k para arredondar r −1, com o espaço de estados sendo {0} \(\cup\){x : x \(\geq\)2}. O estado 0 representa o fato de que o o primeiro usuário na permutação aleatória na rodada atual \(\gamma\) é honesto, portanto o Adversário falha no jogo para previsão de Qr−1; e cada estado x \(\geq\)2 representa o fato de que os primeiros x −1 usuários no permutações são maliciosas e o x-ésimo é honesto, portanto o Adversário tem x opções para Q\(\gamma\). O as probabilidades de transição P(x, y) são as seguintes. • P(0, 0) = 1 e P(0, y) = 0 para qualquer y \(\geq\)2. Ou seja, o Adversário falha no jogo assim que o primeiro o usuário na permutação torna-se honesto. • P(x, 0) = hx para qualquer x \(\geq\)2. Ou seja, com probabilidade hx, todas as x permutações aleatórias têm seus primeiros usuários são honestos, portanto o Adversário falha no jogo na próxima rodada. • Para qualquer x \(\geq\)2 e y \(\geq\)2, P(x, y) é a probabilidade de que, entre as x permutações aleatórias induzida pelas x opções de Q\(\gamma\), a sequência mais longa de usuários mal-intencionados no início de alguns deles são y −1, portanto o Adversário tem y opções para Q\(\gamma\)+1 na próxima rodada. Isto é, P(x, y) = y−1 X eu=0 (1 −h)ih !x - y−2 X eu=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Observe que o estado 0 é o único estado absorvente na matriz de transição P, e todos os outros estados x tem uma probabilidade positiva de ir para 0. Estamos interessados em limitar superiormente o número k de rodadas necessárias para a Cadeia de Markov convergir para 0 com probabilidade esmagadora: isto é, não Não importa em que estado a cadeia comece, com uma probabilidade esmagadora de que o Adversário perca o jogo e falha em prever Qr−1 na rodada r −k. Considere a matriz de transição P (2) \(\triangleq\)P \(\cdot\) P após duas rodadas. É fácil ver que P (2) (0, 0) = 1 e P (2)(0, x) = 0 para qualquer x \(\geq\)2. Para qualquer x \(\geq\)2 e y \(\geq\)2, como P(0, y) = 0, temos P(2)(x, y) = P(x, 0)P(0, y) + X z\(\geq\)2 P(x, z)P(z, y) = X z\(\geq\)2 P(x, z)P(z, y).Deixando ¯h \(\triangleq\)1 −h, temos P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x e P(2)(x,y) = X z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Abaixo calculamos o limite de P (2)(x,y) P(x,y) à medida que h vai para 1 - isto é, ¯h vai para 0. Observe que o maior a ordem de ¯h em P(x, y) é ¯hy−1, com coeficiente x. Assim, limão h \(\to\) 1 P(2)(x,y) P(x, y) =lim ¯h \(\to\) 0 P(2)(x,y) P(x, y) =lim ¯h \(\to\) 0 P(2)(x,y) x¯hy−1 + O(¯hy) = limão ¯h \(\to\) 0 P z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) =lim ¯h \(\to\) 0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = limão ¯h \(\to\) 0 2x¯h x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Quando h está suficientemente próximo de 1,23, temos P(2)(x,y) P(x, y) \(\leq\)1 2 para qualquer x \(\geq\)2 e y \(\geq\)2. Por indução, para qualquer k > 2, P (k) \(\triangleq\)P k é tal que • P (k)(0, 0) = 1, P (k)(0, x) = 0 para qualquer x \(\geq\)2, e • para qualquer x \(\geq\)2 e y \(\geq\)2, P(k)(x, y) = P(k−1)(x, 0)P(0, y) + X z\(\geq\)2 P(k−1)(x, z)P(z, y) = X z\(\geq\)2 P(k−1)(x, z)P(z, y) \(\leq\) X z\(\geq\)2 P(x,z) 2k−2 \(\cdot\) P(z, y) = P(2)(x, y) 2k−2 \(\leq\)P(x, y) 2k−1. Como P(x, y) \(\leq\)1, após 1−log2 F rodadas, a probabilidade de transição para qualquer estado y \(\geq\)2 é insignificante, começando com qualquer estado x \(\geq\)2. Embora existam muitos desses estados, é fácil ver que limão y→+∞ P(x, y) P(x, y + 1) = limão y→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = limão y→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1-h. Portanto, cada linha x da matriz de transição P diminui como uma sequência geométrica com taxa 1 1-h > 2 quando y é grande o suficiente, e o mesmo vale para P (k). Assim, quando k é grande o suficiente, mas ainda assim na ordem de log1/2 F, P y\(\geq\)2 P (k)(x, y) < F para qualquer x \(\geq\)2. Ou seja, com uma probabilidade esmagadora o Adversário perde o jogo e não consegue prever Qr−1 na rodada r −k. Para h \(\in\)(2/3, 1], mais análise complexa mostra que existe uma constante C ligeiramente maior que 1/2, tal que é suficiente tomar k = O(logC F). Assim, o Lema 5.6 é válido. ■ Lema 5.4. (reapresentado) Dadas as propriedades 1–3 para cada rodada antes de r, ph = h2(1 + h −h2) para Lr, e o líder \(\ell\)r é honesto com probabilidade de pelo menos ph. 23Por exemplo, h = 80% conforme sugerido pelas escolhas específicas de parâmetros.

Prova. Seguindo o Lema 5.6, o Adversário não pode prever Qr−1 na rodada r −k, exceto com probabilidade desprezível. Observe que isso não significa que a probabilidade de um líder honesto seja h para cada rodada. Na verdade, dado o Qr-1, dependendo de quantos usuários mal-intencionados existem no início do a permutação aleatória de PKr−k, o Adversário pode ter mais de uma opção para Qr e portanto, pode aumentar a probabilidade de um líder malicioso na rodada r + 1 - mais uma vez estamos dando a ele algumas vantagens irrealistas como no Lema 5.6, de modo a simplificar a análise. No entanto, para cada Qr−1 que não foi questionado a H pelo Adversário na rodada r −k, por qualquer x \(\geq\)1, com probabilidade (1 −h)x−1h o primeiro usuário honesto ocorre na posição x no resultado permutação aleatória de PKr−k. Quando x = 1, a probabilidade de um líder honesto na rodada r + 1 é na verdade h; enquanto quando x = 2, o Adversário tem duas opções para Qr e a probabilidade resultante é h2. Somente considerando estes dois casos, temos que a probabilidade de um líder honesto na rodada r + 1 é pelo menos h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) conforme desejado. Observe que a probabilidade acima considera apenas a aleatoriedade no protocolo da rodada r −k para arredondar r. Quando toda a aleatoriedade da rodada 0 à rodada r é levada em consideração, Qr−1 é ainda menos previsível para o Adversário e a probabilidade de um líder honesto na rodada r + 1 é de pelo menos h2(1 + h −h2). Substituindo r + 1 por r e retrocedendo tudo em uma rodada, o líder \(\ell\)r é honesto com probabilidade de pelo menos h2(1 + h −h2), conforme desejado. Da mesma forma, em cada etapa s de inversão genuína da moeda, o “líder” dessa etapa - que é o verificador em SV r,s cuja credencial tem o menor valor hash, é honesto com probabilidade de pelo menos h2(1 + h-h2). Assim ph = h2(1 + h −h2) para Lr e o Lema 5.4 é válido. ■

Algorand 」

2 このセクションでは、次の仮定の下で動作する Algorand ' のバージョンを構築します。 ユーザーの正直な大多数の仮定: 各 PKr のユーザーの 2/3 以上が正直です。 セクション 8 では、上記の仮定を望ましい正直多数派に置き換える方法を示します。 お金の仮定。 6.1 Algorand の追加の表記とパラメータ 2 表記法 • μ \(\in\)Z+: 圧倒的な確率で、 実際には1ラウンドでかかります。 (後で説明するように、パラメータ \(\mu\) は一時的なメッセージの数を制御します。 ユーザーがラウンドごとに事前に準備するキー) • Lr: 1 を確認するために必要なベルヌーイ試行の回数を表す確率変数。 試行は確率 ph で 1 です 2. Lr は、生成に必要な時間の上限を設定するために使用されます。 ブロックBr. • tH: ラウンド r のステップ s > 1 における誠実な検証者の数の下限。 圧倒的な確率で (n と p が与えられると)、SV r,s には正直な検証者が > 人います。 パラメータ • さまざまなパラメータ間の関係。 — ラウンド r の各ステップ s > 1 に対して、圧倒的な確率で次のように n が選択されます。

|HSV r,s| > thH そして |HSV r,s| + 2|MSV r,s| < 2thH。 上記の 2 つの不等式は一緒になって |HSV r,s| を意味することに注意してください。 > 2|MSV r,s|: つまり、そこにあります 選ばれた検証者の中で 2/3 の正直な多数派です。 h の値が 1 に近づくほど、n を小さくする必要があります。特に、(バリアントを使用します) of) チェルノフは、圧倒的な確率で望ましい条件が確実に成立するように努めます。 • 重要なパラメータの選択例。 — F = 10−18。 — n \(\approx\)4000、tH \(\approx\)0.69n、k = 70。 6.2 Algorand での一時キーの実装 2 検証者 i \(\in\)SV r,s が自分のメッセージ mr,s にデジタル署名することを思い出してください。 私は ラウンド r のステップ s の相対値 一時的な公開鍵 pkr,s i 、一時秘密鍵 skr,s を使用 私は 彼がすぐに破壊することを 使用後。 ラウンドで実行できるステップ数が指定されたステップ数に制限されている場合 整数 \(\mu\) については、一時的なキーを実際に処理する方法をすでに見てきました。たとえば、私たちとしては、 Algorand で説明しました。 1 (μ = m + 3)、考えられるすべての一時キーを処理するには、 ラウンド r' からラウンド r' + 106、i はペア (PMK、SMK) を生成します。ここで、PMK パブリック マスター ID ベースの署名スキームのキー、および SMK に対応する秘密マスター キー。ユーザーi PMK を公開し、SMK を使用して、考えられる各一時公開キーの秘密キーを生成します。 (そして、SMK を実行した後に SMK を破棄します)。関連する i の一時的な公開鍵のセット ラウンドは S = {i} \(\times\) {r', . 。 。 , r' + 106} \(\times\) {1, . 。 。 、μ}。 (前述したように、ラウンド r' + 106 が近づくと、 私は彼のペア(PMK、SMK)を「リフレッシュ」します。) 実際には、μ が十分に大きい場合、ラウンド Algorand ' 2 では、\(\mu\) ステップを超えることはありません。で ただし、原則として、あるラウンドではステップ数が変更される可能性がわずかにあります。 実際に撮影される量はμを超えます。こうなったら、彼のメッセージに署名できなくなるよ 私は のために すべてのステップ s > \(\mu\) です。これは、ラウンド r に対して \(\mu\) 個の秘密鍵だけを事前に準備しているためです。さらに、彼は、 前述のように、一時的な鍵の新しい隠し場所を準備して公開することはできませんでした。実際にやることは、 したがって、新しい公開マスターキー PMK' を新しいブロックに挿入する必要があります。ただし、r を丸める必要があります ステップが増えても、新しいブロックは生成されなくなります。 ただし、解決策は存在します。たとえば、ラウンド r、pkr、μ の最後の一時的なキーを使用できます。 私は 、 以下の通り。彼は、ラウンド r の鍵ペアの別の隠し場所を生成します。たとえば、(1) 別の鍵ペアを生成します。 マスターキーペア (PMK、SMK)。 (2) このペアを使用して別の、たとえば 106 個の一時キーを生成します。 スク r,μ+1 私は 、。 。 。 、sk r,μ+106 私は 、ラウンド r のステップ \(\mu\)+1、...、\(\mu\)+106 に対応します。 (3)skr,μを使用する 私は デジタルに pkr,\(\mu\) を基準とした符号 PMK (および i \(\in\)SV r,\(\mu\) の場合は任意の (r, \(\mu\))-メッセージ) 私は ; (4) SMK と skr,μ の消去 私は 。 ステップ \(\mu\) + s (s \(\in\){1, . 。 。 , 106}、その後、私は彼の (r, \(\mu\) + s)- にデジタル署名します。 メッセージ ミスター、μ+s 私は 彼の新しいキーPKと比較して r、μ+s 私は = (i、r、μ + s)。もちろん、この署名を検証するために i の場合、他の人は、この公開鍵が i の新しい公開マスター鍵 PMK に対応していることを確認する必要があります。 したがって、この署名に加えて、i は pkr,\(\mu\) に関連する PMK のデジタル署名を送信します。 私は 。 もちろん、このアプローチは必要に応じて何度でも繰り返すことができます。 どんどんステップアップしていきましょう!最後の一時的な秘密鍵は、新しいマスター公開鍵を認証するために使用されます。 キー、つまりラウンド r の一時的なキーの別の隠し場所。等々。6.3 実際のプロトコル Algorand ' 2 ラウンド r の各ステップ s で、検証者 i \(\in\)SV r,s が長期公開秘密を使用することをもう一度思い出してください。 彼の資格情報 \(\sigma\)r,s を生成するためのキー ペア 私は \(\triangleq\)SIGi(r, s, Qr−1)、および SIGi Qr−1 s = 1の場合。 検証者 i は一時的な鍵ペア (pkr,s) を使用します。 私、クロース i )、他のメッセージ m に署名します。 必須です。簡単にするために、sigpkr,s ではなく esigi(m) と書きます。 i (m)、i の適切な一時性を示します このステップでは m の署名を使用し、SIGpkr,s の代わりに ESIGi(m) を書き込みます。 i (m) \(\triangleq\) (i, m, esigi(m))。 ステップ 1: 提案をブロックする すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i はラウンド r のステップ 1 を開始するとすぐに開始します。 CERT r−1。これにより、i は H(Br−1) と Qr−1 を明確に計算できます。 • ユーザー i は Qr−1 を使用して i \(\in\)SV r,1 かどうかを確認します。 i /\(\in\)SV r,1 の場合、ステップ 1 では何も行いません。 • i \(\in\)SV r,1 の場合、つまり i が潜在的なリーダーの場合、彼は次のことを行います。 (a) B0 を見た場合、. 。 。 , Br−1 自身 (任意の Bj = Bj í は、hash 値から簡単に導出できます。 CERT j にあるため、「見た」とみなされます)、その後、彼はラウンド R の支払いを回収します。 これまでに彼に伝播され、最大の給与セット PAY r を計算します。 私は彼らから。 (b) B0 をすべて見ていない場合は、. 。 。 , Br−1 まだ、その後彼は PAY r を設定します i = \(\emptyset\)。 (c) 次に、彼の「候補ブロック」Br を計算します。 i = (r, PAY r i 、SIGi(Qr−1)、H(Br−1))。 (c) 最後に、メッセージ mr,1 を計算します。 私は = (Br i , エシギ(H(Br i))、\(\sigma\)r,1 i )、彼の一時的なものを破壊します 秘密鍵 SKR,1 i 、そして 2 つのメッセージ mr,1 を伝播します。 私は および (SIGi(Qr−1), \(\sigma\)r,1 私)、 別々に、しかし同時に。 a i がリーダーの場合、SIGi(Qr−1) により、他の人が Qr = H(SIGi(Qr−1), r) を計算できるようになります。

選択的伝播 ステップ 1 とラウンド全体のグローバルな実行を短縮するには、(r, 1)- メッセージは選択的に伝播されます。つまり、システム内のすべてのユーザー j について、 • 彼が受信して検証に成功した最初の (r, 1)-メッセージについて、そのメッセージに次のものが含まれているかどうか ブロックであるか、単なる資格情報と Qr-1 の署名である場合、プレーヤー j は通常どおりそれを伝播します。 • プレイヤー j が受信して検証に成功した他のすべての (r, 1)-メッセージについては、次のように伝播します。 含まれる資格情報の hash 値が hash 値の中で最小である場合にのみ適用されます。 彼が受信し、検証に成功したすべての (r, 1)-メッセージに含まれる資格情報のうち、 遠い。 • ただし、j が mr,1 という形式の 2 つの異なるメッセージを受信した場合、 私は 同じプレイヤーから、私、彼は i の資格情報の hash 値が何であるかに関係なく、2 番目の資格情報を破棄します。 選択的伝播の下では、各潜在的なリーダー i が自分の伝播を伝播することが有益であることに注意してください。 資格情報 \(\sigma\)r,1 私は ミスター1とは別に i :c これらの小さなメッセージはブロックよりも速く送信されます。 mr,1 のタイムリーな伝播 i には、含まれている資格情報に小さな hash 値が含まれていますが、 hash 値が大きいものはすぐに消えます。 aつまり、すべての署名が正しく、形式が mr の場合、1 i 、ブロックとその hash の両方が有効です —ただし、j は、含まれるペイセットが i にとって最大であるかどうかをチェックしません。 bつまり、私は悪意があるということです。 cこれを提案してくれた Georgios Vlachos に感謝します。ステップ 2: 段階的コンセンサス プロトコル GC の最初のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i はラウンド r のステップ 2 をすぐに開始します。 CERT r-1。 • ユーザー i は、最大時間 t2 \(\triangleq\) \(\lambda\) + Λ だけ待機します。待っている間、私は次のように行動します。 1. 時間 2\(\lambda\) 待った後、次のようなユーザー \(\ell\) を見つけます。 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) すべてのために 資格情報 \(\sigma\)r,1 j これらは、彼が受信した検証に成功した (r, 1)-メッセージの一部です これまでのところ。 2. もし 彼は 持っています 受け取った ある ブロック Br−1、 どの マッチ の hash 値 H(Br−1) CERT r−1,b に含まれており、彼が \(\ell\)a から有効なメッセージを受信した場合 mr,1 \(\ell\) = (Br \(\ell\)、esig\(\ell\)(H(Br \(\ell\)))、\(\sigma\)r,1 \(\ell\)),c その後、待機を停止し、v' を設定します i \(\triangleq\)(H(Br \(\ell\))、\(\ell\))。 3. それ以外の場合、時間 t2 がなくなると、i は v' を設定します。 私は\(\triangleq\) \(\bot\)です。 4. v'の値が i が設定されている場合、i は CERT r-1 から Qr-1 を計算し、 i \(\in\)SV r,2 かどうか。 5. i \(\in\)SV r,2 の場合、i はメッセージ mr,2 を計算します。 私は \(\triangleq\)(ESIG(v' i)、\(\sigma\)r,2 i ),d は彼の一時的なものを破壊します 秘密鍵 SKR,2 i 、そして mr,2 を伝播します 私は。 それ以外の場合は、伝播せずに停止します 何でも。 a基本的に、ユーザー i は、ラウンド r のリーダーがユーザー \(\ell\) であることを非公開で決定します。 bもちろん、CERT r−1 が Br−1 = Br−1 を示している場合は、 ああ とすると、彼が受け取った瞬間に私はすでに Br−1 を「受け取った」ことになります。 CERT r-1。 c 繰り返しになりますが、プレイヤー \(\ell\) の署名と hash はすべて正常に検証され、支払いが完了しました。 \(\ell\)in Br \(\ell\)は有効な給与セットです ラウンド r — ただし、PAY r かどうかはチェックしません \(\ell\)が\(\ell\)の最大値かどうか。 Brの場合 \(\ell\) には空の給与セットが含まれており、 実際には、Br かどうかを確認する前に i が Br−1 を見る必要はありません。 \(\ell\)が有効かどうか。 dメッセージmr,2 私は プレイヤー i が v' の最初の要素を考慮しているという信号 i が次のブロックの hash になる、または 次のブロックは空であると見なされます。

ステップ 3: GC の 2 番目のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i はラウンド r のステップ 3 をすぐに開始します。 CERT r-1。 • ユーザー i は、最大時間 t3 \(\triangleq\) t2 + 2\(\lambda\) = 3\(\lambda\) + Λ だけ待機します。待っている間、私は次のように行動します が続きます。 1. 少なくとも tH 回の有効なメッセージを受信したような値 v が存在する場合、mr,2 j の 形式 (ESIGj(v), \(\sigma\)r,2 j ) 何の矛盾もなく、a それから彼は待つのをやめて設定します v' = v。 2. それ以外の場合、時間 t3 がなくなると、v' = \(\bot\) を設定します。 3. v' の値が設定されたら、i は CERT r-1 から Qr-1 を計算し、 i \(\in\)SV r,3 かどうか。 4. i \(\in\)SV r,3 の場合、i はメッセージ mr,3 を計算します。 私は \(\triangleq\)(ESIGi(v'), \(\sigma\)r,3 i )、彼のものを破壊します 一時的な秘密鍵 skr,3 i 、そして mr,3 を伝播します 私は。 それ以外の場合は、せずに停止します 何でも広める。 aつまり、彼はそれぞれ ESIGj(v) と異なる ESIGj(^v) を含む 2 つの有効なメッセージを受信していません。 選手Jよりこことここから、後で定義される終了条件を除いて、正直なプレイヤーはいつでも 特定の形式のメッセージが必要ですが、互いに矛盾するメッセージは決してカウントされず、有効とは見なされません。

ステップ 4: GC の出力と BBA の最初のステップ⋆ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 4 をすぐに開始します。 自分のステップ 3 を完了します。 • ユーザー i は最大時間 2\(\lambda\).a 待機します。待機中、i は次のように動作します。 1. 次のように、GC の出力である vi と gi を計算します。 (a) 少なくとも tH 回の有効なメッセージを受信したような値 v' ̸= \(\bot\)が存在する場合 さん、3 j = (ESIGj(v'), \(\sigma\)r,3 j )、その後、待機を停止し、 vi \(\triangleq\) v ' および gi \(\triangleq\) 2 を設定します。 (b) 彼が少なくとも tH 回の有効なメッセージを受信した場合 mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j )そして彼は立ち止まる 待機し、vi \(\triangleq\) \(\bot\)および gi \(\triangleq\)0.b を設定します。 (c) それ以外の場合、時間 2\(\lambda\) がなくなったときに、次のような値 v′ ̸= \(\bot\)が存在する場合 少なくとも⌈thHを受け取りました 2 ⌉有効なメッセージ mr,j j = (ESIGj(v'), \(\sigma\)r,3 j )、次に vi \(\triangleq\) v' を設定します そして gi \(\triangleq\) 1.c (d) そうでない場合、時間 2\(\lambda\) がなくなると、vi \(\triangleq\) \(\bot\)および gi \(\triangleq\) 0 を設定します。 2. 値 vi と gi が設定されている場合、i は次のように BBA⋆ の入力である bi を計算します。 gi = 2 の場合は bi \(\triangleq\) 0、それ以外の場合は bi \(\triangleq\) 1。 3. i は CERT r−1 から Qr−1 を計算し、i \(\in\)SV r,4 かどうかをチェックします。 4. i \(\in\)SV r,4 の場合、メッセージ mr,4 を計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i )、彼のものを破壊します 一時的な秘密鍵 skr,4 i 、そして mr,4 を伝播します 私は。それ以外の場合は、伝播せずに停止します 何でも。 したがって、i がラウンド r のステップ 1 を開始してからの最大合計時間は、t4 \(\triangleq\) t3 + 2\(\lambda\) = 5\(\lambda\) + Λ となります。 bステップ (b) がプロトコルに含まれるかどうかは、その正確さに影響しません。ただし、ステップ (b) の存在 十分に多くのステップ 3 検証者が「\(\bot\)に署名」した場合、ステップ 4 は 2\(\lambda\) 時間未満で終了できます。 cこの場合の v' が存在する場合、それは一意でなければならないことが証明できます。ステップ s, 5 \(\leq\) s \(\leq\) m + 2, s −2 ≡0 mod 3: BBA⋆ のコイン固定の 0 ステップ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 自分のステップ -1 を終了します。 • ユーザー i は最大時間 2\(\lambda\).a 待機します。待機中、i は次のように動作します。 – 終了条件 0: 任意の時点で、次のような文字列 v ̸= \(\bot\)およびステップ s' が存在する場合、 (a) 5 \(\leq\) s' \(\leq\) s, s' −2 ≡0 mod 3 —つまり、ステップ s' は Coin-Fixed-To-0 ステップです。 (b) i は少なくとも tH 個の有効なメッセージ mr,s'−1 を受信しました j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j )、b そして (c) i は有効なメッセージを受信しました (SIGj(Qr−1), \(\sigma\)r,1 j ) (j は 2 番目) v の成分、 その後、私は待機を停止し、ステップ s (実際にはラウンド r) の実行を終了します。 (r, s)-verifier として何も伝播せずにすぐに。 H(Br) を最初に設定します v の成分。そして、自分自身の CERT r をメッセージのセット mr,s'−1 に設定します。 j ステップ(b)の (SIGj(Qr−1), \(\sigma\)r,1 とともに j).c – 終了条件 1: いずれかの時点で、次のようなステップ s' が存在する場合 (a’) 6 \(\leq\)s’ \(\leq\) s, s’ −2 ≡1 mod 3 —つまり、ステップ s’ は Coin-Fixed-To-1 ステップであり、 (b’) i は少なくとも tH 個の有効なメッセージ mr,s’−1 を受信しました j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j )、d 次に、私は待つのをやめて、自分自身のステップ s (実際にはラウンド r) の実行を終了します。 (r, s)-verifier として何も伝播せずに離れます。 Br = Br を設定します  ̄ ;そして自分自身を設定します CERT r はメッセージ mr,s'−1 のセットになります j サブステップ(b’)の。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 1 を設定します。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )しかし、彼らは同じvに同意しないので、彼は立ち止まります 待機し、bi \(\triangleq\) 0 を設定します。 – それ以外の場合、時間 2\(\lambda\) がなくなると、i は bi \(\triangleq\) 0 に設定されます。 – 値 bi が設定されている場合、i は CERT r−1 から Qr−1 を計算し、 i \(\in\)SV r,s. – i \(\in\)SV r,s の場合、i はメッセージ mr,s を計算します 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) vi は ステップ 4 で計算した値は、一時的な秘密鍵 skr,s を破壊します。 私、そしてそれから 氏を伝播します 私は。それ以外の場合は、何も伝播せずに停止します。 aしたがって、i がラウンド r のステップ 1 を開始してからの最大合計時間は、ts \(\triangleq\) ts−1 + 2\(\lambda\) = となります。 (2s −3)\(\lambda\) + Λ。 bプレーヤー j からのそのようなメッセージは、プレーヤー i が 1 に署名する j からメッセージを受信した場合でもカウントされます。 終了条件 1 についても同様です。分析で示されているように、これはすべての正直なユーザーが確実に知っているようにするためです。 CERT r は互いに時間 \(\lambda\) 以内にあります。 c ユーザー i は、H(Br) と自分のラウンド終了を知りました。彼は実際にBrがブロックされるまで待つ必要があるだけです が彼に伝播されるため、さらに時間がかかる可能性があります。彼は今でも一般ユーザーとしてメッセージの伝達に貢献しています。 ただし、(r, s)-verifier として伝播を開始することはありません。特に、彼はすべてのメッセージを広めるのに貢献しました。 彼の CERT r は、私たちのプロトコルには十分です。バイナリ BA プロトコルに対しても bi \(\triangleq\) 0 を設定する必要があることに注意してください。 いずれにしても、この場合、bi は必要ありません。今後のすべての指示についても同様のことが起こります。 この場合、vj が何であるかは関係ありません。 65ステップ s, 6 \(\leq\) s \(\leq\) m + 2, s −2 ≡1 mod 3: BBA のコイン固定 To-1 ステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 自分のステップ -1 を終了します。 • ユーザー i は最大時間 2\(\lambda\) 待機します。待っている間、私は次のように行動します。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ命令。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ命令。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 0.a を設定します。 – それ以外の場合、時間 2\(\lambda\) がなくなると、i は bi \(\triangleq\) 1 に設定されます。 – 値 bi が設定されている場合、i は CERT r−1 から Qr−1 を計算し、 i \(\in\)SV r,s. – i \(\in\)SV r,s の場合、i はメッセージ mr,s を計算します 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) vi は ステップ 4 で計算した値は、一時的な秘密鍵 skr,s を破壊します。 私、そしてそれから 氏を伝播します 私は。それ以外の場合は、何も伝播せずに停止します。 a 1 に署名する tH 個の有効な (r, s −1)-メッセージを受信すると、終了条件 1 が意味されることに注意してください。 ステップ s, 7 \(\leq\) s \(\leq\) m + 2, s −2 ≡2 mod 3: BBA の本物のコイン投げステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 自分自身のステップ s -1 を終了します。 • ユーザー i は最大時間 2\(\lambda\) 待機します。待っている間、私は次のように行動します。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ命令。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ命令。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 0 を設定します。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 1 を設定します。 – それ以外の場合、時間 2\(\lambda\) がなくなると、SV r,s−1 とします。 私は からの (r, s −1)-検証者の集合とする 彼は有効なメッセージを受け取りました、mr,s−1 j 、i は bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 を設定します) 私は H(\(\sigma\)r,s−1 j ))。 – 値 bi が設定されている場合、i は CERT r−1 から Qr−1 を計算し、 i \(\in\)SV r,s. – i \(\in\)SV r,s の場合、i はメッセージ mr,s を計算します 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) vi は ステップ 4 で計算した値は、一時的な秘密鍵 skr,s を破壊します。 私、そしてそれから 氏を伝播します 私は。それ以外の場合は、何も伝播せずに停止します。 述べる。 原則として、セクション 6.2 で検討したように、プロトコルは任意に多くのセクションを使用できます。 あるラウンドのステップ。これが起こった場合、前述したように、s > \(\mu\) のユーザー i \(\in\)SV r,s は疲れ果てています。

彼の事前に生成された一時キーの隠し場所と、彼の (r, s)-メッセージを認証する必要があります。 私は によって 一時的なキーの「カスケード」。したがって、i のメッセージは少し長くなり、送信時間が長くなります メッセージにはもう少し時間がかかります。したがって、特定のラウンドで非常に多くのステップを行った後、 パラメータ \(\lambda\) は自動的にわずかに増加します。 (ただし、新しいものを作成すると元の \(\lambda\) に戻ります) ブロックが生成され、新しいラウンドが始まります。) 非検証者による Round-r ブロックの再構築 システム内のすべてのユーザー i に対する指示: ユーザー i は、ラウンド r を開始するとすぐに自分のラウンドを開始します。 CERT r-1。 • 私はプロトコルの各ステップの指示に従い、すべてのステップの伝播に参加します。 ただし、ステップ内の検証者ではない場合、ステップ内の伝播は開始されません。 • i は、終了条件 0 または終了条件 1 を入力して自分のラウンド r を終了します。 ステップ、対応する CERT r を使用します。 • そこから、実際のブロック Br を受け取るのを待ちながらラウンド r + 1 を開始します (ただし、 彼はすでにそれを受け取っています)、そのhash H(Br) は CERT r によって固定されています。もう一度言いますが、 CERT r は Br = Br を示します iq は、Br が CERT r を取得した瞬間にわかります。 6.4 Algorand の分析 2 Algorand の分析 2 は Algorand の値から簡単に導出されます。 1. 基本的に、Algorand で 2、付き 圧倒的な確率で、(a) すべての正直なユーザーが同じブロック Br に同意します。新しいリーダー ブロックは少なくとも ph = h2(1 + h −h2) の確率で正直です。

Algorand ′

2 Nesta seção, construímos uma versão de Algorand ′ trabalhando sob a seguinte suposição. Suposição da maioria honesta dos usuários: Mais de 2/3 dos usuários em cada PKr são honestos. Na Seção 8, mostramos como substituir a suposição acima pela desejada Maioria Honesta de Suposição de dinheiro. 6.1 Notações e parâmetros adicionais para Algorand ′ 2 Notações • \(\mu\) \(\in\)Z+: um limite superior pragmático para o número de etapas que, com probabilidade esmagadora, será realmente obtido em uma rodada. (Como veremos, o parâmetro \(\mu\) controla quantos eventos efêmeros chaves que um usuário prepara antecipadamente para cada rodada.) • Lr: uma variável aleatória que representa o número de tentativas de Bernoulli necessárias para obter 1, quando cada tentativa é 1 com probabilidade ph 2. Lr será usado para limitar o tempo necessário para gerar bloco Ir. • tH: um limite inferior para o número de verificadores honestos em uma etapa s > 1 da rodada r, tal que com probabilidade esmagadora (dados n e p), existem > tH verificadores honestos em SV r,s. Parâmetros • Relações entre vários parâmetros. — Para cada passo s > 1 da rodada r, n é escolhido de modo que, com probabilidade esmagadora,

|HSV r,s| >tH e |HSV r,s| + 2|MSV r,s| < 2tH. Observe que as duas desigualdades acima juntas implicam |HSV r,s| > 2|MSV r,s|: isto é, há é uma maioria honesta de 2/3 entre os verificadores selecionados. Quanto mais próximo de 1 for o valor de h, menor será n. Em particular, usamos (variantes de) Chernoffbounds para garantir que as condições desejadas se mantenham com uma probabilidade esmagadora. • Exemplos de escolhas de parâmetros importantes. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Implementando chaves efêmeras em Algorand ′ 2 Lembre-se que um verificador i \(\in\)SV r,s assina digitalmente sua mensagem mr,s eu da etapa s na rodada r, em relação a uma chave pública efêmera pkr,s i , usando uma chave secreta efêmera skr,s eu que ele destrua prontamente depois de usar. Quando o número de passos possíveis que uma rodada pode dar é limitado por um determinado inteiro \(\mu\), já vimos como lidar de forma prática com chaves efêmeras. Por exemplo, como nós explicaram em Algorand ′ 1 (onde \(\mu\) = m + 3), para lidar com todas as suas possíveis chaves efêmeras, de uma rodada r′ para uma rodada r′ + 106, i gera um par (PMK, SMK), onde PMK mestre público chave de um esquema de assinatura baseado em identidade e SMK sua chave mestra secreta correspondente. Usuário eu divulga PMK e usa SMK para gerar a chave secreta de cada chave pública efêmera possível (e destrói SMK depois de fazer isso). O conjunto de chaves públicas efêmeras de i para o relevante rodadas é S = {i} \(\times\) {r′,. . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Conforme discutido, à medida que a rodada r′ + 106 se aproxima, eu “atualizo” seu par (PMK, SMK).) Na prática, se \(\mu\) for grande o suficiente, uma rodada de Algorand ′ 2 não levará mais do que \(\mu\) passos. Em princípio, no entanto, existe a possibilidade remota de que, para alguma rodada r, o número de etapas realmente tomadas excederá \(\mu\). Quando isso acontecer, eu não conseguirei assinar a mensagem dele, Sr. eu para qualquer passo s > \(\mu\), porque ele preparou antecipadamente apenas \(\mu\) chaves secretas para a rodada r. Além disso, ele não poderia preparar e divulgar um novo estoque de chaves efêmeras, conforme discutido anteriormente. Na verdade, fazer então, ele precisaria inserir uma nova chave mestra pública PMK′ em um novo bloco. Mas, deveria arredondar r Se você desse mais e mais passos, nenhum novo bloco seria gerado. No entanto, existem soluções. Por exemplo, posso usar a última chave efêmera da rodada r, pkr,\(\mu\) eu , como segue. Ele gera outro estoque de pares de chaves para a rodada r - por exemplo, (1) gerando outro par de chaves mestras (PMK, SMK); (2) usar este par para gerar outras, digamos, 106 chaves efêmeras, sk r,\(\mu\)+1 eu , . . . , sk r,\(\mu\)+106 eu , correspondendo às etapas \(\mu\)+1, ..., \(\mu\)+106 da rodada r; (3) usando skr,\(\mu\) eu para digitalmente assine PMK (e qualquer mensagem (r, \(\mu\)) se i \(\in\)SV r,\(\mu\)), relativa a pkr,\(\mu\) eu ; e (4) apagar SMK e skr,\(\mu\) eu . Devo me tornar um verificador em uma etapa \(\mu\) + s com s \(\in\){1, . . . , 106}, então eu assino digitalmente seu (r, \(\mu\) + s)- mensagem senhor,\(\mu\)+s eu em relação à sua nova chave pk r,\(\mu\)+s eu = (eu, r, \(\mu\) + s). Claro, para verificar esta assinatura de i, outros precisam ter certeza de que esta chave pública corresponde à nova chave mestra pública PMK de i. Assim, além desta assinatura, i transmite sua assinatura digital de PMK relativa a pkr,\(\mu\) eu . É claro que esta abordagem pode ser repetida quantas vezes forem necessárias, caso a rodada r continue para mais e mais passos! A última chave secreta efêmera é usada para autenticar um novo público mestre chave e, portanto, outro estoque de chaves efêmeras para a rodada r. E assim por diante.6.3 O protocolo real Algorand ′ 2 Lembre-se novamente que, em cada etapa s de uma rodada r, um verificador i \(\in\)SV r,s usa seu segredo público de longo prazo par de chaves para produzir sua credencial, \(\sigma\)r,s eu \(\triangleq\)SIGi(r, s, Qr−1), bem como SIGi Qr-1 no caso s = 1. O verificador i usa seu par de chaves efêmeras, (pkr,s eu, skr,s i ), para assinar qualquer outra mensagem m que possa ser necessário. Para simplificar, escrevemos esigi(m), em vez de sigpkr,s i (m), para denotar o efêmero próprio de i assinatura de m nesta etapa e escreva ESIGi(m) em vez de SIGpkr,s eu (m) \(\triangleq\)(eu, m, esigi(m)). Etapa 1: bloquear proposta Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 1 da rodada r assim que tiver CERT r−1, que permite que i calcule H(Br−1) e Qr−1 de forma inequívoca. • O usuário i usa Qr−1 para verificar se i \(\in\)SV r,1 ou não. Se i /\(\in\)SV r,1, ele não faz nada na Etapa 1. • Se i \(\in\)SV r,1, ou seja, se i for um líder potencial, então ele faz o seguinte. (a) Se eu vi B0, . . . , o próprio Br−1 (qualquer Bj = Bj ǫ pode ser facilmente derivado de seu valor hash no CERT j e, portanto, é assumido como “visto”), então ele coleta os pagamentos da rodada r que foram foi propagado para ele até agora e calcula um conjunto de pagamento máximo PAY r eu deles. (b) Se eu não vi todo B0,. . . , Br−1 ainda, então ele define PAY r eu = \(\emptyset\). (c) Em seguida, i calcula seu “bloco de candidatos” Br eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)). (c) Finalmente, i calcula a mensagem mr,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 i ), destrói seu efêmero chave secreta skr,1 i , e então propaga duas mensagens, mr,1 eu e (SIGi(Qr−1), \(\sigma\)r,1 eu), separadamente, mas simultaneamente.a aQuando i é o líder, SIGi(Qr−1) permite que outros calculem Qr = H(SIGi(Qr−1), r).

Propagação Seletiva Para encurtar a execução global do Passo 1 e de toda a rodada, é importante que o (r, 1)- as mensagens são propagadas seletivamente. Ou seja, para cada usuário j no sistema, • Para a primeira mensagem (r, 1) que ele recebe e verifica com sucesso, se ela contém um bloco ou é apenas uma credencial e uma assinatura de Qr−1, o jogador j o propaga normalmente. • Para todas as outras mensagens (r, 1) que o jogador j recebe e verifica com sucesso, ele propaga somente se o valor hash da credencial que ela contém for o menor entre os valores hash das credenciais contidas em todas as mensagens (r, 1) que ele recebeu e verificou com sucesso para longe. • Entretanto, se j receber duas mensagens diferentes no formato mr,1 eu do mesmo jogador i,b ele descarta o segundo, não importa qual seja o valor hash da credencial de i. Observe que, na propagação seletiva, é útil que cada líder potencial i propague seu credencial \(\sigma\)r,1 eu separadamente do senhor,1 i:c essas pequenas mensagens viajam mais rápido que os blocos, certifique-se propagação oportuna do mr,1 i é onde as credenciais contidas têm valores hash pequenos, enquanto fazer com que aqueles com valores hash grandes desapareçam rapidamente. aOu seja, todas as assinaturas estão corretas e, se for no formato mr,1 i , tanto o bloco quanto seu hash são válidos —embora j não verifique se o conjunto de pagamentos incluído é máximo para i ou não. bO que significa que eu sou malicioso. cAgradecemos a Georgios Vlachos por sugerir isso.Etapa 2: A primeira etapa do GC do protocolo de consenso graduado Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 2 da rodada r assim que tiver CERT r-1. • O usuário i espera um tempo máximo t2 \(\triangleq\) \(\lambda\) + Λ. Enquanto espero, ajo da seguinte maneira. 1. Depois de esperar pelo tempo 2\(\lambda\), ele encontra o usuário \(\ell\) tal que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j) para todos credenciais \(\sigma\)r,1 j que fazem parte das mensagens (r, 1) verificadas com sucesso que ele recebeu até agora.a 2. Se ele tem recebido um bloquear Br−1, qual partidas o hash valor H(Br−1) contido no CERT r−1,b e se ele recebeu de \(\ell\)uma mensagem válida mr,1 \(\ell\) = (Irmão \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c então eu paro de esperar e defino v′ eu \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. Caso contrário, quando o tempo t2 acabar, i define v′ eu \(\triangleq\) \(\bot\). 4. Quando o valor de v′ i foi definido, eu calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,2 ou não. 5. Se i \(\in\)SV r,2, i calcula a mensagem mr,2 eu \(\triangleq\)(ESIGi(v′ eu), \(\sigma\)r,2 i),d destrói seu efêmero chave secreta skr,2 i , e então propaga mr,2 eu. Caso contrário, eu para sem propagar qualquer coisa. aEssencialmente, o usuário i decide em particular que o líder da rodada r é o usuário \(\ell\). bClaro, se CERT r−1 indicar que Br−1 = Br−1 ǫ , então eu já “recebi” Br−1 no momento em que ele recebeu CERT r-1. cNovamente, as assinaturas do jogador \(\ell\) e os hashes foram todos verificados com sucesso e PAGUE r \(\ell\)no Brasil \(\ell\)é um conjunto de pagamento válido para rodada r - embora eu não verifique se PAY r \(\ell\)é máximo para \(\ell\)ou não. Se irmão \(\ell\) contém um conjunto de pagamentos vazio, então na verdade, não há necessidade de ver Br−1 antes de verificar se Br \(\ell\)é válido ou não. dA mensagem senhor,2 eu sinaliza que o jogador i considera o primeiro componente de v′ i será o hash do próximo bloco, ou considera o próximo bloco vazio.

Etapa 3: A segunda etapa do GC Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 3 da rodada r assim que tiver CERT r-1. • O usuário i espera um tempo máximo t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Enquanto espero, eu ajo como segue. 1. Se existe um valor v tal que ele recebeu pelo menos mensagens válidas mr,2 j de a forma (ESIGj(v), \(\sigma\)r,2 j ), sem qualquer contradição,a então ele para de esperar e define v' = v. 2. Caso contrário, quando o tempo t3 acabar, ele define v′ = \(\bot\). 3. Quando o valor de v′ for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,3 ou não. 4. Se i \(\in\)SV r,3, então i calcula a mensagem mr,3 eu \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i ), destrói seu chave secreta efêmera skr,3 i , e então propaga mr,3 eu. Caso contrário, eu paro sem propagar qualquer coisa. aOu seja, ele não recebeu duas mensagens válidas contendo ESIGj(v) e um ESIGj(ˆv) diferente respectivamente, de um jogador j. Aqui e daqui em diante, exceto nas Condições Finais definidas posteriormente, sempre que um jogador honesto deseja mensagens de um determinado formato, mensagens contraditórias nunca são contadas ou consideradas válidas.

Etapa 4: Resultado do GC e a primeira etapa do BBA⋆ Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 4 da rodada r assim que ele termina seu próprio Passo 3. • O usuário i espera um tempo máximo 2\(\lambda\).a Enquanto espera, i age da seguinte forma. 1. Ele calcula vi e gi, a saída do GC, como segue. (a) Se existe um valor v′ ̸= \(\bot\)tal que ele recebeu pelo menos tH mensagens válidas senhor,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), então ele para de esperar e define vi \(\triangleq\)v′ e gi \(\triangleq\)2. (b) Se ele recebeu pelo menos as mensagens válidas mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), então ele para esperando e define vi \(\triangleq\) \(\bot\) e gi \(\triangleq\)0.b (c) Caso contrário, quando o tempo 2\(\lambda\) acabar, se existir um valor v′ ̸= \(\bot\)tal que ele tenha recebeu pelo menos ⌈tH 2 ⌉mensagens válidas senhor,j j = (ESIGj(v′), \(\sigma\)r,3 j ), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)1.c (d) Caso contrário, quando o tempo 2\(\lambda\) acabar, ele define vi \(\triangleq\) \(\bot\) e gi \(\triangleq\)0. 2. Quando os valores vi e gi forem definidos, i calcula bi, a entrada de BBA⋆, como segue: bi \(\triangleq\)0 se gi = 2, e bi \(\triangleq\)1 caso contrário. 3. i calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,4 ou não. 4. Se i \(\in\)SV r,4, ele calcula a mensagem mr,4 eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), destrói seu chave secreta efêmera skr,4 i , e propaga mr,4 eu. Caso contrário, eu para sem propagar qualquer coisa. aAssim, o tempo total máximo desde que i inicia sua Etapa 1 da rodada r poderia ser t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bSe a Etapa (b) estiver ou não no protocolo, isso não afeta sua correção. No entanto, a presença da Etapa (b) permite que a Etapa 4 termine em menos de 2\(\lambda\) se um número suficiente de verificadores da Etapa 3 tiver “assinado \(\bot\)”. cPode-se provar que v′ neste caso, se existir, deve ser único.Etapa s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Uma etapa de BBA⋆ com moeda fixada em 0 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio Passo s −1. • O usuário i espera um tempo máximo 2\(\lambda\).a Enquanto espera, i age da seguinte forma. – Condição Final 0: Se em algum ponto existe uma string v ̸= \(\bot\) e um passo s′ tal que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda em 0, (b) recebi pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b e (c) i recebeu uma mensagem válida (SIGj(Qr−1), \(\sigma\)r,1 j) com j sendo o segundo componente de v, então, eu para de esperar e termina sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar nada como um verificador (r, s); define H(Br) como o primeiro componente de v; e define seu próprio CERT r como o conjunto de mensagens mr,s′−1 j da etapa (b) junto com (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Condição Final 1: Se em algum ponto existir um passo s′ tal que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda para 1, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),d então, eu para de esperar e termina sua própria execução do Passo s (e de fato da rodada r) certo afastado sem propagar nada como um verificador (r, s); define Br = Br ǫ; e define o seu próprio CERT r será o conjunto de mensagens mr,s′−1 j da subetapa (b'). – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)1. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), mas eles não concordam sobre o mesmo v, então ele para esperando e define bi \(\triangleq\)0. – Caso contrário, quando o tempo 2\(\lambda\) acabar, i define bi \(\triangleq\)0. – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. aAssim, o tempo total máximo desde que i inicia sua Etapa 1 da rodada r poderia ser ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. bEssa mensagem do jogador j é contada mesmo que o jogador i também tenha recebido uma mensagem de j assinando por 1. Coisas semelhantes para a Condição Final 1. Conforme mostrado na análise, isso é para garantir que todos os usuários honestos saibam CERT r dentro do tempo \(\lambda\) um do outro. cO usuário i agora conhece H(Br) e sua própria rodada termina. Ele só precisa esperar até que o bloco Br esteja propagado para ele, o que pode levar algum tempo adicional. Ele ainda ajuda a propagar mensagens como um usuário genérico, mas não inicia nenhuma propagação como um verificador (r, s). Em particular, ele ajudou a propagar todas as mensagens em seu CERT r, que é suficiente para o nosso protocolo. Observe que ele também deve definir bi \(\triangleq\)0 para o protocolo BA binário, mas bi não é necessário neste caso de qualquer maneira. Coisas semelhantes para todas as instruções futuras. dNeste caso, não importa quais são os vj’s. 65Etapa s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Uma etapa de BBA⋆ fixada em moeda para 1 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio Passo s −1. • O usuário i espera um tempo máximo de 2\(\lambda\). Enquanto espero, ajo da seguinte maneira. – Condição Final 0: As mesmas instruções da etapa Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções da etapa Coin-Fixed-To-0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)0.a – Caso contrário, quando o tempo 2\(\lambda\) acabar, i define bi \(\triangleq\)1. – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. aObserve que receber mensagens válidas (r, s −1) assinadas para 1 significaria a Condição Final 1. Etapa s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Uma etapa de BBA⋆ com moeda genuinamente invertida Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio passo s −1. • O usuário i espera um tempo máximo de 2\(\lambda\). Enquanto espero, ajo da seguinte maneira. – Condição Final 0: As mesmas instruções da etapa Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções da etapa Coin-Fixed-To-0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)1. – Caso contrário, quando o tempo 2\(\lambda\) acabar, deixando SV r,s−1 eu seja o conjunto de (r, s −1)-verificadores de a quem ele recebeu uma mensagem válida mr,s−1 j , i define bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 eu H(\(\sigma\)r,s−1 j )). – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. Observação. Em princípio, conforme considerado na subseção 6.2, o protocolo pode levar arbitrariamente muitas passos em alguma rodada. Caso isso aconteça, conforme discutido, um usuário i \(\in\)SV r,s com s > \(\mu\) esgotou

seu estoque de chaves efêmeras pré-geradas e precisa autenticar sua mensagem (r, s) mr,s eu por um “cascata” de chaves efêmeras. Assim, a mensagem de i torna-se um pouco mais longa e a transmissão é mais longa as mensagens levarão um pouco mais de tempo. Assim, depois de tantas etapas de uma determinada rodada, o valor de o parâmetro \(\lambda\) aumentará ligeiramente automaticamente. (Mas ele reverte para o \(\lambda\) original uma vez que um novo bloco é produzido e uma nova rodada começa.) Reconstrução do Bloco Round-r por Não-Verificadores Instruções para cada usuário i no sistema: O usuário i inicia sua própria rodada r assim que tiver CERT r-1. • sigo as instruções de cada etapa do protocolo, participa da propagação de todos mensagens, mas não inicia nenhuma propagação em uma etapa se ele não for um verificador nela. • i termina sua própria rodada r inserindo a Condição Final 0 ou a Condição Final 1 em alguma etapa, com o CERT r correspondente. • A partir daí, ele inicia sua rodada r + 1 enquanto espera para receber o bloco real Br (a menos que ele já recebeu), cujo hash H(Br) foi definido pelo CERT r. Novamente, se CERT r indica que Br = Br ǫ, o i conhece Br no momento em que possui CERT r. 6.4 Análise de Algorand ′ 2 A análise de Algorand ′ 2 é facilmente derivado daquele de Algorand ′ 1. Essencialmente, em Algorand ′ 2, com probabilidade esmagadora, (a) todos os usuários honestos concordam com o mesmo bloco Br; o líder de um novo O bloco é honesto com probabilidade de pelo menos ph = h2(1 + h −h2).

オフラインの正直なユーザーの扱い

先ほども述べたように、誠実なユーザーは、オンラインでの使用も含め、定められたすべての指示に従います。 そしてプロトコルを実行します。 Algorand では、計算と 正直なユーザーに必要な帯域幅は非常に控えめです。ただし、Algorand は次のことができることを指摘しておきます。 2 つのモデルで動作するように簡単に変更できます。正直なユーザーはオフラインにできます。 すごい数字。 これら 2 つのモデルについて説明する前に、正直なプレイヤーの割合が が 95% であった場合でも、h = 80% と仮定してすべてのパラメータを設定して Algorand を実行できます。 したがって、Algorand は、たとえ正直なプレイヤーの最大半分であっても、適切に動作し続けます。 オフラインになることを選択しました(実際、「欠勤」の重大なケースです)。実際、どの時点でも少なくとも、 オンラインプレイヤーの 80% は正直だと思います。 継続的な参加から怠惰な正直さへ ご覧のとおり、Algorand 」 1 と Algorand 」 2 選択します ルックバックパラメータ k。ここで、適切な大きさの k を選択すると、次のことが可能になることを示しましょう。 継続的参加要件。この要件により、次の重要な特性が保証されます。 基礎となる BA プロトコル BBA⋆ が正当な多数派を持っていること。では、どれだけ怠惰かを説明しましょう 正直さは、この特性を満たす代替の魅力的な方法を提供します。

ユーザー i は、(1) 規定の指示をすべて遵守する場合、怠け者だが正直であることを思い出してください。 (2) プロトコールのみに参加するよう求められる 非常にまれに (例: 週に 1 回)、適切な事前通知があり、重大な通知が届く可能性があります。 参加すると報酬がもらえる。 Algorand がそのようなプレイヤーと連携できるようにするには、「検証者を選択する」だけで十分です。 現在のラウンドでは、はるか以前のラウンドで既にシステムに参加していたユーザーが含まれます。」確かに、それを思い出してください ラウンド r の検証者はラウンド r −k のユーザーから選択され、選択は以下に基づいて行われます。 数量 Qr−1 について。 1 週間はおよそ 10,000 分で構成されていることに注意してください。 ラウンドにはおよそ (平均して) 5 分かかるため、1 週間にはおよそ 2,000 ラウンドがかかります。仮定する ある時点で、ユーザーが自分の時間を計画し、予定があるかどうかを知りたいと考えています。 来週には検証者が出る。プロトコルはラウンドの検証者をユーザーから選択するようになりました。 r −k −2,000 を丸め、選択は Qr−2,001 に基づきます。ラウンド R で、私はすでに知っているプレーヤー 値 Qr−2,000、... 。 。 、Qr−1。これらは実際には blockchain の一部であるためです。すると、M ごとに、 1 から 2,000 の間で、次の場合に限り、i はラウンド r + M のステップ s の検証者です。 .H シギ r+M、s、Qr+M−2,001 \(\leq\)p 。 したがって、彼が次の 2,000 ラウンドで検証者として呼ばれるかどうかを確認するには、次のようにする必要があります。 \(\sigma\)M,s を計算する 私は = シギ r+M、s、Qr+M−2,001 M = 1 ~ 2,000 および各ステップ s について、チェックします。 .H(\(\sigma\)M,s 私は ) \(\leq\)p の場合もあります。デジタル署名の計算にミリ秒かかる場合、 この操作全体の計算には約 1 分かかります。検証者に選ばれなかった場合 これらのラウンドのいずれにおいても、そうすれば彼は「正直な良心」をもってオフラインになれる。彼が継続していたら 参加したとしても、いずれにせよ、彼は次の 2,000 ラウンドで基本的に 0 歩しか歩まなかったでしょう。代わりに、 彼はこれらのラウンドのいずれかで検証者に選ばれ、その後準備を整えます(たとえば、すべての 適切なラウンドで誠実な検証者として機能するために必要な情報)。 そのように行動することによって、怠け者だが誠実な潜在的検証者は、伝播への参加を逃すだけです。 のメッセージ。ただし、メッセージの伝播は通常、堅牢です。また、支払者と受取人は、 最近伝播された支払いはオンラインで支払いがどうなるかを監視することが期待されています。 したがって、彼らは正直であれば、メッセージの伝播に参加するでしょう。

Lidando com usuários honestos off-line

Como dissemos, um usuário honesto segue todas as instruções prescritas, que incluem a de estar online e executando o protocolo. Este não é um grande fardo em Algorand, uma vez que o cálculo e a largura de banda exigida de um usuário honesto é bastante modesta. No entanto, vamos salientar que Algorand pode ser facilmente modificável para funcionar em dois modelos, nos quais usuários honestos podem ficar off-line em grandes números. Antes de discutir estes dois modelos, salientamos que, se a percentagem de jogadores honestos eram 95%, Algorand ainda poderia ser executado definindo todos os parâmetros assumindo que h = 80%. Conseqüentemente, Algorand continuaria a funcionar corretamente mesmo que no máximo metade dos jogadores honestos optaram por ficar off-line (na verdade, um caso importante de “absenteísmo”). Na verdade, em qualquer momento, pelo menos 80% dos jogadores online seriam honestos. Da participação contínua à honestidade preguiçosa Como vimos, Algorand ′ 1 e Algorand ′ 2 escolha o parâmetro de retrospectiva k. Vamos agora mostrar que escolher k adequadamente grande permite remover o requisito de participação contínua. Este requisito garante uma propriedade crucial: a saber, que o protocolo BA subjacente BBA⋆tem uma maioria honesta adequada. Vamos agora explicar o quão preguiçoso a honestidade fornece uma maneira alternativa e atraente de satisfazer essa propriedade.

Lembre-se de que um usuário i é preguiçoso, mas honesto se (1) seguir todas as instruções prescritas, quando ele é convidado a participar do protocolo e (2) ele é convidado a participar apenas do protocolo muito raramente - por exemplo, uma vez por semana - com aviso prévio adequado e potencialmente recebendo recompensas quando ele participa. Para permitir que Algorand trabalhe com tais players, basta “escolher os verificadores do rodada atual entre os usuários que já estão no sistema em uma rodada muito anterior.” Na verdade, lembre-se que os verificadores para uma rodada r são escolhidos entre os usuários da rodada r −k, e as seleções são feitas com base na quantidade Qr−1. Observe que uma semana consiste em aproximadamente 10.000 minutos e suponha que um rodada leva aproximadamente (por exemplo, em média) 5 minutos, então uma semana tem cerca de 2.000 rodadas. Suponha que, em algum momento, um usuário deseja planejar seu tempo e saber se ele estará um verificador na próxima semana. O protocolo agora escolhe os verificadores para uma rodada r entre os usuários em arredondar r −k −2.000, e as seleções são baseadas em Qr−2.001. Na rodada r, jogador que eu já conheço os valores Qr −2.000, . . . , Qr−1, uma vez que na verdade fazem parte do blockchain. Então, para cada M entre 1 e 2.000, i é um verificador em uma etapa s da rodada r + M se e somente se .H SIGi r + M, s, Qr+M−2.001 \(\leq\)p. Assim, para verificar se ele será chamado para atuar como verificador nas próximas 2.000 rodadas, devo calcular \(\sigma\)M,s eu =SIGi r + M, s, Qr+M−2.001 para M = 1 a 2.000 e para cada etapa s, e verifique se .H(\(\sigma\)M,s eu ) \(\leq\)p para alguns deles. Se o cálculo de uma assinatura digital levar um milissegundo, então toda esta operação levará cerca de 1 minuto de cálculo. Se ele não for selecionado como verificador em qualquer uma dessas rodadas, ele poderá ficar off-line com uma “consciência honesta”. Se ele tivesse continuamente participou, ele teria essencialmente dado 0 passos nas próximas 2.000 rodadas de qualquer maneira! Se, em vez disso, ele é selecionado para ser um verificador em uma dessas rodadas, então ele se prepara (por exemplo, obtendo todos as informações necessárias) para atuar como um verificador honesto na rodada apropriada. Ao agir assim, um verificador de potencial preguiçoso, mas honesto, apenas deixa de participar da propagação. de mensagens. Mas a propagação de mensagens é normalmente robusta. Além disso, os pagadores e os beneficiários de espera-se que os pagamentos propagados recentemente estejam on-line para observar o que acontece com seus pagamentos, e assim participarão da propagação da mensagem, se forem honestos.

プロトコル Algorand 、正直な過半数の資金を使用

ここで、ついに、ユーザーの正直な多数派の仮定を、さらに多くの仮定に置き換える方法を示します。 意味のあるオネスト・マジョリティ・オブ・マネーの仮定。基本的なアイデアは (proof-of-stake フレーバーで) 「SV r,s に属するユーザー i \(\in\)PKr−k を、次の値に比例する重み (つまり、決定力) で選択します。 「i が所有する金銭の量」24 HMM の仮定により、その金額をラウンド r −k で所有すべきかどうかを選択できます。 またはラウンド r (の開始時) に。継続的に参加しても構わないと仮定すると、 後者の選択。 (継続的な参加を排除するには、前者の選択を選択することになります。 より良く言えば、ラウンド r −k −2,000 で所有されている金額の場合です。) このアイデアを実現するにはさまざまな方法があります。最も簡単な方法は、各キーを保持することです 最大 1 単位の通貨を使用し、a(r) となるように PKr−k からランダムに n 人のユーザー i を選択します。 私は = 1。 24継続参加の代わりに PKr-k-2,000 と言うべきです。簡単にするために、次のようにする必要があるかもしれないので、 とにかく継続的に参加するため、運ぶパラメータが 1 つ少なくなるように、以前と同様に PKr-k を使用します。

次に簡単な実装 次に簡単な実装は、各公開鍵が最大量を所有することを要求することです。 ある一定の M に対して、お金 M の値。M の値は、お金の総額に比べて十分に小さいです。 システム内のお金。キーが複数の検証セットに属する確率が高くなります。 —たとえば — k ラウンドのステップは無視できます。次に、鍵 i \(\in\)PKr−k、金額 a(r) を所有 私は ラウンド r では、次の場合に SV r,s に属することが選択されます。 .H シギ r、s、Qr−1 \(\leq\)p・a(r) 私は M 。 そしてすべてが以前と同じように進みます。 より複雑な実装 最後の実装では、「システムの裕福な参加者に多くのキーの所有を強制」しました。 以下で説明する代替実装では、ステータスの概念を一般化し、次のことを考慮します。 各ユーザー i は K + 1 個のコピー (i, v) で構成され、それぞれが検証者として独立して選択されます。 そして自分自身の一時的な鍵 (pkr,s) を所有することになります。 i、v、skr、s i,v) ラウンド r のステップ s で。 K の値は依存します a(r)の金額について 私は ラウンドrのiが所有。 このようなシステムがどのように機能するかをさらに詳しく見てみましょう。 部数 n を各検証セットの対象となる期待カーディナリティとし、a(r) とします。 私は ラウンド r でユーザー i が所有する金額になります。所有するお金の総額をArとします ラウンド r の PKr-k のユーザーによる、つまり Ar = \(\times\) i\(\in\)P Kr−k a(r) 私は。 i が PKr-k のユーザーの場合、i のコピーは (i, 1), . 。 。 , (i, K + 1)、ここで K = $ n・a(r) 私は アル % 。 例。 n = 1,000、Ar = 109、および a(r) とします。 私は = 370 万。それから、 K = 103・(3.7・106) 109  = ⌊3.7⌋= 3 。 検証者と資格情報 i を K + 1 コピーを持つ PKr−k のユーザーとしましょう。 各 v = 1、. 。 。 、K、コピー(i、v)は自動的にSV r、sに属する。つまり、i の資格情報は \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1) ですが、対応する条件は .H(\(\sigma\)r,s i,v) \(\leq\) 1、つまり 常に真実です。 コピー (i, K + 1) の場合、ラウンド r の各ステップ s について、i は次のことをチェックします。 .H シギ (i, K + 1)、r、s、Qr−1 \(\leq\)a(r) 私は n Ar −K 。

そうであれば、コピー (i, K + 1) は SV r,s に属します。それを証明するために、資格情報を伝播します \(\sigma\)r,1 i,K+1 = SIGi (i, K + 1)、r、s、Qr−1 。 例。 前の例と同様に、n = 1K、a(r) とします。 私は = 3.7M、Ar = 1B、i は 4 コピー: (i, 1), . 。 。 、(i、4)。その後、最初の 3 つのコピーは自動的に SV r,s に属します。 4番目については、 概念的には、 Algorand ' は、表の確率が 0.7 であるバイアスされたコインを独立してロールします。コピー (i, 4) は、コイントスが表の場合にのみ選択されます。 (もちろん、この偏ったコイン投げは、hash の作成、署名、比較によって実装されます。 私が彼の結果を証明できるようにするために、この論文ではずっとそうしてきました。) 通常通りの営業 検証者の選択方法とその資格情報の仕組みについて説明しました。 ラウンド r の各ステップで計算されるため、ラウンドの実行はすでに説明したものと同様です。

Protocolo Algorand ′ com maioria honesta de dinheiro

Agora, finalmente, mostramos como substituir a suposição da maioria honesta dos usuários pela hipótese muito mais suposição significativa da Maioria Honesta do Dinheiro. A ideia básica é (em um sabor proof-of-stake) “selecionar um usuário i \(\in\)PKr−k para pertencer a SV r,s com um peso (ou seja, poder de decisão) proporcional a a quantidade de dinheiro possuída por i.”24 Pela nossa suposição HMM, podemos escolher se essa quantia deve ser detida na rodada r −k ou no (início da) rodada r. Supondo que não nos importamos com a participação contínua, optamos por a última escolha. (Para eliminar a participação contínua, teríamos optado pela primeira opção. Melhor dizendo, pela quantidade de dinheiro possuída na rodada r −k −2.000.) Existem muitas maneiras de implementar essa ideia. A maneira mais simples seria manter cada tecla pressionada no máximo 1 unidade de dinheiro e então selecione aleatoriamente n usuários i de PKr−k tal que a(r) eu = 1. 24Deveríamos dizer PKr−k−2.000 para substituir a participação contínua. Por simplicidade, uma vez que se pode querer exigir de qualquer forma, com participação contínua, usamos PKr-k como antes, para carregar um parâmetro a menos.

A próxima implementação mais simples A próxima implementação mais simples pode ser exigir que cada chave pública possua uma quantidade máxima de dinheiro M, para algum M fixo. O valor M é pequeno o suficiente comparado com a quantidade total de dinheiro dinheiro no sistema, de modo que a probabilidade de uma chave pertencer ao conjunto verificador de mais de um intervir —digamos— k rodadas é insignificante. Então, uma chave i \(\in\)PKr−k, possuindo uma quantia de dinheiro a(r) eu na rodada r, é escolhido para pertencer a SV r,s se .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) uma(r) eu M . E tudo continua como antes. Uma implementação mais complexa A última implementação “forçou um participante rico no sistema a possuir muitas chaves”. Uma implementação alternativa, descrita abaixo, generaliza a noção de status e considera cada usuário i consiste em K + 1 cópias (i, v), cada uma das quais é selecionada independentemente para ser um verificador, e possuirá sua própria chave efêmera (pkr,s eu,v, skr,s i,v) em uma etapa s de uma rodada r. O valor K depende sobre a quantidade de dinheiro a(r) eu propriedade de i na rodada r. Vejamos agora como esse sistema funciona com mais detalhes. Número de cópias Seja n a cardinalidade esperada desejada de cada conjunto de verificadores e seja a(r) eu seja a quantidade de dinheiro pertencente a um usuário i na rodada r. Seja Ar a quantidade total de dinheiro possuído pelos usuários em PKr−k na rodada r, ou seja, Ar = X i\(\in\)P Kr−k um(r) eu. Se i for um usuário em PKr−k, então as cópias de i são (i, 1), . . . , (i, K + 1), onde K = $ n \(\cdot\) uma(r) eu Ar % . Exemplo. Seja n = 1.000, Ar = 109 e a(r) eu = 3,7 milhões. Então, K = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109  = ⌊3,7⌋= 3 . Verificadores e credenciais Seja eu um usuário em PKr−k com K + 1 cópias. Para cada v = 1,. . . , K, copy (i, v) pertence a SV r,s automaticamente. Ou seja, a credencial de i é \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), mas a condição correspondente torna-se .H(\(\sigma\)r,s i,v) \(\leq\)1, que é sempre verdadeiro. Para cópia (i, K + 1), para cada etapa s da rodada r, i verifica se .H SIGi (eu, K + 1), r, s, Qr−1 \(\leq\)a(r) eu n Ar-K.

Se sim, a cópia (i, K + 1) pertence a SV r,s. Para provar isso, i propaga a credencial \(\sigma\)r,1 i,K+1 = SIGi (eu, K + 1), r, s, Qr−1 . Exemplo. Como no exemplo anterior, seja n = 1K, a(r) eu = 3,7M, Ar = 1B e i tem 4 cópias: (i, 1), . . . , (eu, 4). Então, as primeiras 3 cópias pertencem a SV r,s automaticamente. Para o 4º, conceitualmente, Algorand ′ lança independentemente uma moeda viciada, cuja probabilidade de cara é 0,7. Copiar (i, 4) é selecionado se e somente se o lançamento da moeda for Cara. (É claro que esse lançamento de moeda tendencioso é implementado hashing, assinando e comparando - como fazemos fiz o tempo todo neste artigo - para me permitir provar seu resultado.) Negócios como sempre Tendo explicado como os verificadores são selecionados e como suas credenciais são calculada a cada etapa de uma rodada r, a execução de uma rodada é semelhante à já explicada.

フォークの処理

フォークの確率が 10−12 または 10−18 に減少したため、実際には処理は不要です。 それらが起こる可能性は非常に低いです。 ただし、Algorand ではさまざまなフォークを使用することもできます 作業証明の有無にかかわらず、解決手順。 ユーザーにフォークを解決するように指示する考えられる方法の 1 つは次のとおりです。 • ユーザーに複数のチェーンが表示された場合は、最も長いチェーンをたどります。 • 最も長いチェーンが複数ある場合は、最後に空ではないブロックを持つチェーンの後に続けます。もし それらのすべての最後には空のブロックがあります。最後から 2 番目のブロックを考慮してください。 • 最後に空ではないブロックを持つ最も長いチェーンが複数ある場合、そのチェーンは 長さ r のブロック r のリーダーの資格情報が最も小さいものに従います。絆があれば、 ブロック r 自体が最小の hash 値を持つものに従います。まだ関係がある場合は、次に従ってください。 ブロック r が辞書順に最初に順序付けされているもの。

Tratamento de forks

Tendo reduzido a probabilidade de bifurcações para 10-12 ou 10-18, é praticamente desnecessário lidar com na remota chance de ocorrerem. Algorand, no entanto, também pode empregar vários fork procedimentos de resolução, com ou sem comprovação de trabalho. Uma forma possível de instruir os usuários a resolver bifurcações é a seguinte: • Siga a cadeia mais longa se um usuário vir várias cadeias. • Se houver mais de uma cadeia mais longa, siga aquela com um bloco não vazio no final. Se todos eles têm blocos vazios no final, considere seus penúltimos blocos. • Se houver mais de uma cadeia mais longa com blocos não vazios no final, digamos que as cadeias sejam de comprimento r, siga aquele cujo líder do bloco r possui a menor credencial. Se houver laços, siga aquele cujo bloco r tem o menor valor hash. Se ainda houver empates, siga o aquele cujo bloco r é ordenado lexicograficamente em primeiro lugar.

ネットワークパーティションの処理

前述したように、ネットワーク内のすべてのユーザー間のメッセージの伝播時間は \(\lambda\) と Λ によって上限があると仮定します。今日のインターネットは高速かつ堅牢であるため、これは強い仮定ではありません。 これらのパラメータの実際の値は非常に妥当です。ここで、Algorand を指摘しましょう。 2 インターネットが時折 2 つの部分に分割されても動作し続けます。場合 インターネットが 3 つ以上の部分に分割されている場合も同様です。 10.1 物理パーティション まず第一に、パーティションは物理的な理由によって引き起こされる可能性があります。例えば、巨大地震が起こると、 最終的にはヨーロッパとアメリカの間のつながりを完全に破壊することになります。この場合、 悪意のあるユーザーも分割されており、2 つの部分間で通信は行われません。したがって、

2 つの敵対者が存在し、1 つはパート 1 に、もう 1 つはパート 2 に対応します。各敵対者は引き続き攻撃を試みます。 プロトコル自体の部分を壊します。 分割がラウンド r の途中で発生すると仮定します。その後も各ユーザーは次のユーザーとして選択されます。 検証者は PKr-k に基づいて、以前と同じ確率で検証します。 HSV r,s とする 私は およびMSV r、s 私は それぞれ は、パート i \(\in\){1, 2} のステップ s における正直な検証者と悪意のある検証者のセットになります。私たちは持っています |HSV r、s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|。 |HSV r,s| に注意してください。 + |MSV r,s| < |HSV r,s| + 2|MSV r,s|圧倒的な確率で2thH未満。 ある部分 i に |HSV r,s がある場合 私は | + |MSV r,s 私は |無視できない確率、たとえば 1% で \(\geq\)tH の場合、 |HSV r,s の確率 3−i| + |MSV r,s 3−i| \(\geq\)tH は非常に低く、たとえば F = 10−18 の場合は 10−16 です。この場合、 十分な検証者が存在しないため、より小さい部分をオフラインとして扱うこともできます。 この部分は、ブロックを証明するための署名を生成します。 一般性を失わずに、より大きな部分、たとえばパート 1 を考えてみましょう。 |HSV r,s| ですが< ネットワークが分割されている場合、各ステップ s の確率は無視できる tH |HSV r,s 1 |かもしれない 無視できない確率で tH 未満になります。 この場合、敵対者は、何らかの手段で、 その他の無視できない確率では、空ではないブロック Br と空のブロック Br を使用して、バイナリ BA プロトコルをラウンド r でフォークに強制します。 両方とも有効な署名を持っています。25 たとえば、 Coin-Fixed-To-0 ステップ、HSV r,s のすべての検証者 1 ビット 0 と H(Br) に署名され、それらを伝播します。 メッセージ。 MSV r,s のすべての検証者 1 0 と H(Br) にも署名しましたが、メッセージは差し控えられました。なぜなら |HSV r、s 1 | + |MSV r,s 1 | \(\geq\)tH、システムには Br を認証するのに十分な署名があります。ただし、以来、 悪意のある検証者が署名を保留した場合、ユーザーはステップ s + 1 (Coin-Fixed-To1 ステップ) を入力します。なぜなら |HSV r,s 1 | < tH 分割によるもの、HSV r,s+1 の検証者 1 見なかった ビット 0 の署名とビット 1 の署名すべて。MSV r,s+1 のすべての検証者 1 同じことをしました。なぜなら |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH、システムには Br を証明するのに十分な署名があります。 ああ。敵対者 次に、MSV r,s の署名を解放してフォークを作成します。 1 0 および H(Br) の場合。 したがって、ラウンド r の対応するブロックによって定義される 2 つの Qr が存在します。ただし、 フォークは続行されず、ラウンド r + 1 では 2 つの分岐のうち 1 つだけが成長する可能性があります。 Algorand の追加手順 2. 空ではないブロック Br と空のブロックを見たとき ブロックBr ϫ 、空ではないもの (およびそれによって定義された Qr) をたどります。 実際、プロトコル内の空でないブロックを使用するようにユーザーに指示することで、大規模な場合は PKr+1−k の正直なユーザーの数が、ラウンド r +1 の開始時にフォークがあることに気づき、その後、 空のブロックには十分なフォロワーがいないため、成長しません。敵対者がなんとかして 正直なユーザーを分割して、一部の正直なユーザーに Br (おそらく Br) が表示されるようにします。 iq) だけを見る人もいます。 Br ああ。なぜなら、敵対者は、そのうちのどれが Br に続く検証者になるのか、そしてどれが検証者になるのかを知ることができないからです。 Brに続く検証者になります iq、正直なユーザーはランダムに分割され、それぞれのユーザーは依然として (Br に関して、または Br に関して) 検証者になります。 ϫ) ステップ s > 1 の確率で p.悪意のあるユーザーの場合、それぞれが検証者になるチャンスが 2 回あります。 Br ともう 1 つは Br ϫ、それぞれ独立に確率 p を持ちます。 HSV r+1,s とする 1;Br は、Br に続くラウンド r+1 のステップ s における正直な検証者のセットになります。その他の表記 HSV r+1,s など 1;BR 、MSV r+1,s 1;Br およびMSV r+1,s 1;ブリー も同様に定義されます。 Chernoffboundなら簡単です 25 2 つの空でないブロックを含むフォークを持つことは、パーティションの有無にかかわらず、ごくわずかなブロックを除いて不可能です。 確率。圧倒的な確率でそれを見ると、 |HSV r+1,s 1;Br | + |HSV r+1,s 1;ブリー | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;ブリー | < 2thH。 したがって、2 つのブランチの両方がラウンド用のブロックを証明する適切な署名を持つことはできません。 同じステップ s で r + 1。さらに、2 つのステップ s と s' の選択確率は 同様であり、選択は独立しており、これも圧倒的な確率で行われます |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s' 1;ブリー | + |MSV r+1,s' 1;ブリー | < 2thH、 任意の 2 つのステップ s と s' について。 F = 10−18 の場合、敵対者ができない限り、和集合による 正直なユーザーを長時間 (たとえば 104 ステップ、\(\lambda\) = 10 の場合 55 時間以上) に分割します。 秒26)、高い確率 (たとえば 1-10-10) で、適切な署名を持つブランチは最大でも 1 つだけです。 ラウンド r + 1 でブロックを認定します。 最後に、物理パーティションがほぼ同じサイズの 2 つの部分を作成した場合、 |HSV r,s の確率 私は | + |MSV r,s 私は | \(\geq\)tH は各部分 i で小さい。同様の分析を行った結果、 たとえ敵対者が各部分で無視できない確率でフォークを作成できたとしても ラウンド r では、4 つのブランチのうち最大 1 つがラウンド r + 1 で成長します。 10.2 敵対的パーティション 次に、分割は敵対者によって引き起こされる可能性があるため、メッセージが伝播されます。 ある部分の正直なユーザーによる情報は、他の部分の正直なユーザーには直接届きませんが、 敵対者は 2 つの部分間でメッセージを転送できます。それでも、ある方からのメッセージがあれば、 一部が他の部分で正直なユーザーに到達すると、通常どおり後者で伝播されます。もし 敵対者は多額の資金を費やすつもりであり、システムをハッキングできる可能性があると考えられます。 インターネットに接続し、しばらくこのようにパーティション化します。 分析は、上記の物理パーティションの大部分 (小さい部分) の分析と同様です。 部分は人口 0 を持つと見なすことができます): 敵対者はフォークを作成できる可能性があり、 正直なユーザーはそれぞれブランチの 1 つしか表示しませんが、成長できるブランチは最大でも 1 つだけです。 10.3 ネットワークパーティションの合計数 ネットワーク分割が発生する可能性があり、パーティションの下で 1 ラウンドのフォークが発生する可能性がありますが、 フォークの存続期間は非常に短く、実際には長くても 1 ラウンドしか存続しません。で 最大 1 つを除くパーティションのすべての部分では、ユーザーは新しいブロックを生成できないため、 (a) ネットワークに分割があることを認識し、(b) 「消える」ブロックに決して依存しないでください。 謝辞 まず最初に、引用した Democoin システムの共著者である Sergey Gorbunov に感謝したいと思います。 多くの啓発的な議論をしていただき、指摘してくださった Maurice Herlihy に心からの感謝を申し上げます。 パイプライン化により Algorand のスループット パフォーマンスが向上し、 26 ユーザーが 2\(\lambda\) 時間待たずにステップ s を終了できるのは、少なくとも tH 個の署名を見た場合のみであることに注意してください。 同じメッセージです。十分な署名がない場合、各ステップは 2\(\lambda\) 時間続きます。

この論文の以前のバージョンの説明。 Sergio Rajsbaum 氏、コメントありがとうございます。 この文書の以前のバージョン。いくつかの深い議論をしてくれた Vinod Vaikuntanathan に感謝します。 そして洞察。 Yossi Gilad、Rotem Hamo、Georgios Vlachos、Niccolai Zeldovich に感謝します。 これらのアイデアのテストを開始したこと、そして多くの有益なコメントやディスカッションに感謝します。 シルヴィオ・ミカリは、数え切れないほどの議論と指導をしてくれたロン・リベストに個人的に感謝したいと思います。 30 年以上にわたる暗号研究で、引用されたマイクロペイメント システムの共著者として貢献 これは、Algorand の検証者選択メカニズムの 1 つに影響を与えました。 私たちはこのテクノロジーを次のレベルに引き上げたいと考えています。その間、旅行と交友関係 とても楽しいです、とても感謝しています。

Lidando com partições de rede

Como dito, assumimos que os tempos de propagação das mensagens entre todos os usuários da rede são limitados por \(\lambda\) e Λ. Esta não é uma suposição forte, já que a Internet de hoje é rápida e robusta, e os valores reais desses parâmetros são bastante razoáveis. Aqui, vamos ressaltar que Algorand ′ 2 continua a funcionar mesmo que a Internet ocasionalmente seja dividida em duas partes. O caso quando a Internet é dividida em mais de duas partes de maneira semelhante. 10.1 Partições Físicas Em primeiro lugar, a partição pode ser causada por motivos físicos. Por exemplo, um grande terremoto pode acabarão por quebrar completamente a ligação entre a Europa e a América. Neste caso, o usuários mal-intencionados também são particionados e não há comunicação entre as duas partes. Assim

haverá dois Adversários, um para a parte 1 e outro para a parte 2. Cada Adversário ainda tenta quebrar o protocolo em sua própria parte. Suponha que a partição aconteça no meio da rodada r. Então cada usuário ainda é selecionado como um verificador baseado em PKr−k, com a mesma probabilidade de antes. Deixe HSV r,s eu e MSV r,s eu respectivamente seja o conjunto de verificadores honestos e maliciosos em uma etapa s da parte i \(\in\){1, 2}. Nós temos |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Observe que |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH com probabilidade esmagadora. Se alguma parte i tiver |HSV r,s eu | + |MSV r,s eu | \(\geq\)tH com probabilidade não desprezível, por exemplo, 1%, então o probabilidade de que |HSV r,s 3−eu| + |MSV r,s 3−eu| \(\geq\)tH é muito baixo, por exemplo, 10−16 quando F = 10−18. Neste caso, podemos muito bem tratar a parte menor como estando off-line, porque não haverá verificadores suficientes em esta parte para gerar as assinaturas para certificar um bloco. Consideremos a parte maior, digamos a parte 1, sem perda de generalidade. Embora |HSV r,s| < tH com probabilidade desprezível em cada passo s, quando a rede é particionada, |HSV r,s 1 | pode ser menor que tH com alguma probabilidade não desprezível. Neste caso o Adversário pode, com alguma outra probabilidade não desprezível, forçar o protocolo BA binário em uma bifurcação na rodada r, com um bloco não vazio Br e o bloco vazio Br ǫ ambos com assinaturas válidas.25 Por exemplo, em um Coin-Fixed-To-0 step s, todos os verificadores em HSV r,s 1 assinado para o bit 0 e H(Br), e propagou seus mensagens. Todos os verificadores em MSV r,s 1 também assinaram 0 e H(Br), mas retiveram suas mensagens. Porque |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, o sistema possui assinaturas suficientes para certificar o Br. No entanto, desde o verificadores maliciosos retiveram suas assinaturas, os usuários entram na etapa s + 1, que é uma etapa Coin-Fixed-To1. Porque |HSV r,s 1 | < tH devido à partição, os verificadores em HSV r,s+1 1 não vi assinaturas para o bit 0 e todas assinadas para o bit 1. Todos os verificadores em MSV r,s+1 1 fez o mesmo. Porque |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, o sistema possui assinaturas suficientes para certificar Br ǫ. O Adversário em seguida, cria uma bifurcação liberando as assinaturas do MSV r,s 1 para 0 e H(Br). Assim, haverá dois Qr’s, definidos pelos blocos correspondentes da rodada r. No entanto, a bifurcação não continuará e apenas um dos dois ramos poderá crescer na rodada r + 1. Instruções adicionais para Algorand ′ 2. Ao ver um bloco não vazio Br e o bloco vazio bloco BR ǫ , segue o não vazio (e o Qr definido por ele). Na verdade, ao instruir os usuários a usarem o bloco não vazio no protocolo, se um grande quantidade de usuários honestos em PKr+1−k percebem que há uma bifurcação no início da rodada r +1, então o o bloco vazio não terá seguidores suficientes e não crescerá. Suponha que o adversário consiga particionar os usuários honestos para que alguns usuários honestos vejam Br (e talvez Br ǫ), e alguns só veem irmão ǫ. Porque o Adversário não pode dizer qual deles será um verificador seguindo Br e qual será um verificador seguindo o Ir. ǫ , os usuários honestos são particionados aleatoriamente e cada um deles ainda torna-se um verificador (seja em relação a Br ou em relação a Br ǫ) em uma etapa s > 1 com probabilidade pág. Para os usuários mal-intencionados, cada um deles pode ter duas chances de se tornar um verificador, uma com Br e outro com Br ǫ, cada um com probabilidade p independentemente. Seja HSV r+1,s 1;Br seja o conjunto de verificadores honestos nas etapas s da rodada r+1 após Br. Outras notações como HSV r+1,s 1;Brǫ , MSV r+1,s 1;Br e MSV r+1,s 1;Brǫ são definidos de forma semelhante. Por Chernoffbound, é fácil 25Ter uma bifurcação com dois blocos não vazios não é possível com ou sem partições, exceto com partições insignificantes probabilidade.ver isso com uma probabilidade esmagadora, |HSV r+1,s 1;Br | + |HSV r+1,s 1;Brǫ | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;Brǫ | < 2tH. Conseqüentemente, as duas filiais não podem ter ambas as assinaturas adequadas certificando um bloco para rodada r + 1 na mesma etapa s. Além disso, uma vez que as probabilidades de seleção para duas etapas s e s′ são as iguais e as seleções são independentes, também com probabilidade esmagadora |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s′ 1;Brǫ | + |MSV r+1,s′ 1;Brǫ | < 2tH, para quaisquer duas etapas s e s′. Quando F = 10−18, pelo sindicato, desde que o Adversário não possa particionar os usuários honestos por um longo tempo (digamos 104 etapas, o que equivale a mais de 55 horas com \(\lambda\) = 10 segundos26), com alta probabilidade (digamos 1−10−10) no máximo uma ramificação terá as assinaturas adequadas para certificar um bloco na rodada r + 1. Finalmente, se a partição física criou duas partes com aproximadamente o mesmo tamanho, então o probabilidade de que |HSV r,s eu | + |MSV r,s eu | \(\geq\)tH é pequeno para cada parte i. Seguindo uma análise semelhante, mesmo que o Adversário consiga criar uma bifurcação com alguma probabilidade não desprezível em cada parte para a rodada r, no máximo um dos quatro ramos pode crescer na rodada r + 1. 10.2 Partição Adversária Em segundo lugar, a partição pode ser causada pelo Adversário, de modo que as mensagens propagadas pelos usuários honestos de uma parte não alcançará diretamente os usuários honestos da outra parte, mas o Adversário é capaz de encaminhar mensagens entre as duas partes. Ainda assim, uma vez que uma mensagem de um parte chega a um usuário honesto na outra parte, será propagada nesta última como de costume. Se o O adversário está disposto a gastar muito dinheiro, é concebível que ele consiga hackear o Internet e particione-o assim por um tempo. A análise é semelhante à da parte maior da partição física acima (a parte menor parte pode ser considerada como tendo população 0): o Adversário pode ser capaz de criar uma bifurcação e cada usuário honesto vê apenas um dos ramos, mas no máximo um ramo pode crescer. 10.3 Partições de rede em soma Embora possam ocorrer partições de rede e uma bifurcação em uma rodada possa ocorrer nas partições, não há ambigüidade persistente: um garfo dura muito pouco e, na verdade, dura no máximo uma única rodada. Em todas as partes da partição, exceto no máximo uma, os usuários não podem gerar um novo bloco e, portanto, (a) perceber que há uma partição na rede e (b) nunca confiar em blocos que irão “desaparecer”. Agradecimentos Gostaríamos de agradecer primeiro a Sergey Gorbunov, co-autor do citado sistema Democoin. Os mais sinceros agradecimentos a Maurice Herlihy, pelas muitas discussões esclarecedoras, por apontar que o pipelining melhorará o desempenho da taxa de transferência de Algorand e melhorará muito o 26Observe que um usuário termina uma etapa s sem esperar pelo tempo 2\(\lambda\) somente se ele tiver visto pelo menos as assinaturas para o mesma mensagem. Quando não há assinaturas suficientes, cada etapa durará 2\(\lambda\).

exposição de uma versão anterior deste artigo. Muito obrigado a Sergio Rajsbaum, pelos seus comentários sobre uma versão anterior deste artigo. Muito obrigado a Vinod Vaikuntanathan, por várias discussões profundas e percepções. Muito obrigado a Yossi Gilad, Rotem Hamo, Georgios Vlachos e Nickolai Zeldovich por começar a testar essas ideias e por muitos comentários e discussões úteis. Silvio Micali gostaria de agradecer pessoalmente a Ron Rivest pelas inúmeras discussões e orientações em pesquisa criptográfica ao longo de mais de 3 décadas, pela coautoria do sistema de micropagamento citado que inspirou um dos mecanismos de seleção de verificadores de Algorand. Esperamos levar esta tecnologia para o próximo nível. Enquanto isso a viagem e o companheirismo são muito divertidos, pelos quais estamos muito gratos.