MEV (6): より公正なMEVエコシステム(middle)

上級1/13/2024, 9:28:31 AM
この記事では、トランザクション情報がMEVによって使用されるのを防ぐために暗号化方法をどのように使用するかについて説明します。

読書のヒント

・この記事を読む前に、MEVの基本的な理解が必要です

・Ethereum取引に精通し、取引が何を含んでおり、最終的にどのようにブロックに含まれるかを理解する

· マークルツリーとゼロ知識証明の役割を理解する

· クリックして読む:MEV (5): より公平なMEVエコシステム(パート1)

前の記事では、(1)信頼できるハードウェアによるブロックビルダーの公平性向上を図るFlashbot SGX Builder設計と、(2)取引順序の役割を分散化することでMEVを防ぐChainlink FSS設計について紹介しました。

この記事では、暗号化されたメンプールの設計について説明します。これは、暗号技術を用いて取引のプライバシーを提供することでMEVを削減または排除することを目的としています。

暗号化されたメンプール

2つの目標:MEV保護と検閲耐性

もし、ユーザーがトランザクションをブロードキャストする前に暗号化し、ブロックに含まれる際にのみ復号するツールがあれば、ユーザーはMEVの影響を気にする必要がありません。MEVサーチャーはトランザクション内容を一切見ることができず、ユーザーは提案者に狙われたり政府の制裁に違反したりして収入を拒否されることを心配する必要はありません。このツールを構築する基盤は暗号技術です。

暗号化されたメンプールは、(1)ユーザーの取引コンテンツを暗号化してプライバシーを保護し、(2)取引が暗号化されたときにその有効性を検証し、無効だが暗号化された取引を大量に生成する攻撃者を防ぎます。これにより、提案者は無効な取引を含めてブロックスペースを無駄にし、最後の瞬間に発見されるのみです。

読書のヒント: 単なる暗号化では検閲への抵抗を完全に保証することはできません。なぜなら、検閲をしたいプロポーザーは、暗号化された取引を拒否することができるためです。そのため、暗号化は検閲のコストを増加させるだけであり(プロポーザーはすべての暗号化された取引の手数料を放棄することになる)、より優れた検閲防止保護を実現するには、PBSなどのインクルージョンリストを使用する必要があります。

トランザクションが復号化できることを確認する(復号化保証)

トランザクションを暗号化した後、それが復号化できることを確認することが重要です。そうしないと、DoS(サービス拒否)攻撃の脆弱性が生じる可能性があります。このような攻撃では、攻撃者は繰り返し復号化できない暗号化されたトランザクションを送信します。その結果、ノードはこれらのトランザクションを有効期限が切れるまで保持する必要があり、ノードのトランザクションプールにこれらの無駄なトランザクションが蓄積されます。

取引が復号化できることを確認するための方法がいくつかあります:

  1. 純粋な信頼(飛行中)

  2. 信頼できるハードウェア、エンクレーブ

  3. 閾値暗号化/復号化

  4. 遅延暗号化/復号化

  5. 証人の暗号化/復号

△ トランザクションを復号化してその例を確実にするいくつかの方法。 純粋な信頼が最も簡単であり、証人の復号が最も難しいことから、複雑さは左から右に増加します。

画像ソース:https://www.youtube.com/watch?v=XRM0CpGY3sw

コミットリヴィール

コミットリヴィールメカニズムでも同じ目的を達成できますか?ユーザーはトランザクションの内容をハッシュ関数に入力してハッシュ値、すなわちコミットメントを取得し、提案者がユーザーのトランザクションコミットメントをブロックに含めることを保証したら、ユーザーは完全なトランザクション内容を開示します。

読書のヒント: コミットメントの方法は、PBSのプロポーザーが署名を通じてビルダーブロックに含まれることを約束することのようになる可能性があります。 これは保証されたコミットメントです。 プロポーザーが約束を破ると、罰せられます。

△ 提案者はアリスのトランザクションの取り消しを受け取ることを約束します

Commit-revealと暗号化は、ユーザートランザクションの内容を隠し、MEVの抽出と検閲を防ぐという同じ目的を果たすことができますが、Commit-revealは復号を保証することはできません。なぜなら、力はユーザーの手にあるからです。ユーザーは、意図的にも非意図的にも内容を公開しない選択肢があります。

ユーザーにデポジットを添付してもらい、リベールがない場合にデポジットを没収することは、コミットリベールの既に悪いユーザーエクスペリエンスをさらに悪化させる可能性があります。

△アリスは取引を明らかにする必要はありません

1.ピュアトラスト(飛行中)

ユーザーは取引を暗号化して中央の役割に送信します。その後、中央の役割は取引を復号化し、ブロックに含まれる前に漏洩しないように確認します。ユーザーは一般的に中央の役割を信頼し、取引をブロックに含まれるまで暗号化された状態と見なします。中央の役割は取引を直ちに受け取った後に復号化しますが、ユーザーはそれを信頼しています。

読書のヒント: この中央集権的な役割は、例えば、PBSのビルダー、プロポーザー、またはロールアップのシーケンサー/オペレーターになります。

2.信頼できるハードウェア、エンクレーブ

それは純粋な信頼と同じように機能しますが、ユーザーは個人、組織、または企業を信頼するのではなく、信頼できるハードウェアと実行するプログラムコードを信頼します。

3.しきい値暗号化/復号化

Chainlink FSSはしきい値暗号化と復号化も使用しますが、Chainlink FSSではしきい値キーの管理者はChainlinkのOracleですが、暗号化されたMempoolsでは管理者(Keypersと呼ばれる)はL1またはL2のバリデータ(L2にも分散型バリデータがあると仮定)になる場合があります。

しきい値の暗号化/復号にはいくつかの欠点があります:

  • 強力で誠実な過半数の前提条件:Keypersの半数以上が誠実であると仮定する必要があります。もし彼らが不誠実であれば、彼らは自由にユーザートランザクションを復号化して見ること、取引を検討すること、または取引のMEVを抽出することができます。
  • 責任の欠如:十分な数のKeyper参加者が協力すれば、情報を復号化することができます。しかし、Keyper参加者が共謀すると、誰が陰謀に関与しているのかを知る方法はありません。悪意のある行為者を特定できないため、Keyperの罰則メカニズムを設計することは不可能です。したがって、Keyper参加者の大多数が正直であるという前提に依存しなければなりません。
  • 弱体化したライブネス:過剰なKeyperのオフラインは、十分なオンラインKeyper数が不足する原因となり、復号化とブロックの生成が阻害されます。これにより、チェーンは停止します。これは、イーサリアムのPoSメカニズムと矛盾しています。このメカニズムは、第三次世界大戦の発生時でもチェーンがブロックを継続して生成し、最終的に確定性を達成することを強調しています。復号化をしきい値で使用するイーサリアムのPoSの確率は高くないと推測されます。

しきい値暗号化および復号には多くの変更が必要なため、L2はL1よりもこのアプローチに適しています。

この記事では、L1 での設計と実装に関する考慮事項が提案されています。この設計をテストしているプロジェクトは、Shutter Network を参照することができます。詳細はこちらをご確認ください:https://ethresear.ch/t/shutterized-beacon-chain/12249

4.遅延暗号化/復号

遅延暗号化は、一定期間後に自動的に複合化できることを保証します。ただし、複合化プロセスは実際には完全に自動的ではなく、誰かが複合化を行い、継続的な計算を行う必要があります。暗号化の難易度によって決まる一定の期間後に、計算が完了し、複合化が成功することができます。

遅延暗号化の背後にあるコンセプトは、検証可能遅延関数(VDF)と似ており、両者とも時間リリース暗号のファミリーに属しています。

VDFは、私たちがF(x)を迅速に検証することを可能にします:「時間のかかる順次計算」の結果。これは、Proof of Work(PoW)に類似していますが、VDFの計算は順次プロセスであり、並列計算を介して加速することができるPoWとは異なります。VDFの復号器は、ステップバイステップで繰り返し計算しか行えません。

△ VDFを使用すると、私が10秒で完了した計算の結果を、たとえば0.01秒で検証できます。そして、私は計算を並列化する方法がありませんでした。画像出典:https://techtelegraph.co.uk/ビットコイン上の検証可能な遅延関数

遅延暗号化および復号はVDFのように連続した計算であり、並列操作を介して加速することはできません。ただし、ハードウェアの最適化を通じて誰かが復号プロセスを高速化する可能性があることを考慮する必要があります。したがって、この技術を採用して実際の公開環境に適用したい場合、誰もが大幅なハードウェアの差を持っておらず、復号を事前に完了できること(および復号が非公開で行われるため、検出が困難である)を確認する必要があります。

現在、Ethereum FoundationとProtocol Labsは既にVDF ASICチップの研究で協力しており、最先端のコンピューティングハードウェアを市場に提供し、誰もが異なるハードウェアの利点を持ち、事前に暗号を解読することができないようにしています。詳細はこちらをご確認ください:https://filecoin.io/blog/posts/collaboration-with-the-ethereum-foundation-on-vdfs/

読書のヒント:VDFは、イーサリアムの乱数の操作不能性を高めるためにも使用できます。

閾値暗号化および復号化と比較して遅延暗号化および復号化の利点は、Keypersグループの正常な動作を信頼または依存する必要がないことであり、時間切れになると自動的に復号化されます。ただし、この強制された復号化時間は遅延復号化の欠点でもあります:暗号化された取引を復号化するには一定期間を要し、つまり、ユーザー取引がチェーンにアップロードされるまでの固定遅延時間があるということです。さらに、ハードウェア競争もこの方法では無視できないリスクです。誰かがより速いチップを開発しているかどうかを知ることは難しいです。

5.証人の暗号化/復号化

ある暗号文が鍵や連続的な計算によって復号化されないと想像してみてくださいが、ある「条件」が満たされたときにのみ復号化されることができるとします。「この方程式が解かれたとき」や「この方程式が解かれたとき」など、ある条件が満たされたときにのみ復号化されることができます。一度暗号文がブロックに含まれると、その暗号文は復号化され、そのような状況が続きます。

解読鍵を知ることや、連続的な計算の結果を知ることは、実際には条件です。

証人暗号化を通じて、閾値暗号化と遅延暗号化の効果を実現するだけでなく、これら2つの復号化方法を組み合わせることもできます。たとえば、条件を「条件1: '一群のキーパーがこの暗号文を復号することに同意する'または条件2: '5分後'」と設定できます:すべてのキーパーがオンラインの場合、私たちはすぐに条件1を満たして暗号文を復号できます。ただし、十分なキーパーがオンラインでない場合は、少なくとも条件2を満たし、VDFを通じて「5分が経過した」と証明することで復号できます。

十分なKeypersがオンラインで復号化されることができます(上記)または十分な時間が経過した後(下記)

条件が満たされたことが証明されれば、復号化が達成される。証明は、ゼロ知識証明などの方法を通じて行うことができ、これにより複雑な計算を効率的に検証することが可能となる(条件の証明に必要な操作が複雑であると仮定する)または情報を隠すことができる(証明者が証明プロセス中に特定の情報を明らかにしたくない場合を仮定する)。しかし、証人暗号化は非常に強力である一方、現在の技術では実用的な用途を提供するには不十分である。

△異なる暗号化および復号技術の成熟度。証人暗号化および復号(Witness)はまだ十分に成熟していません。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_591

ホモモーフィック暗号化を使用して暗号文を操作および処理する

前の段落では、取引が復号化されるさまざまな方法が紹介されましたが、取引はいつ復号化できるのでしょうか?答えは、取引がブロックに含まれ、順序が決まった後です。しかし、ブロックビルダーは、どのようにして一団の意味不明な情報からブロックを組み立てるのでしょうか?または、どのようにして非常に利益の高いブロックを効率的に組み立てるのでしょうか?答えは、ホモモーフィック暗号(HE)です。

△ 投票に使用されるホモモーフィック暗号化の例:投票内容は暗号化されていますが、暗号文は結果が計算された後でも合計され解読されることができます。画像の出典:https://twitter.com/khushii_w/status/1660278622291210242

読書のヒント:暗号化と復号化が純粋な信頼(in-flight)または信頼できるハードウェアを通じて行われる場合、実際にはトランザクションがブロックに含まれ、順序が決まるのを待つ必要はありません。結局のところ、皆が他者を信頼しているので、トランザクションを受信した直後にすぐに復号化して並べ替えます。これによりブロックの形成が高速化され、同型暗号化操作を実行するための追加リソースが不要となります。

ホモモーフィック暗号化を通じて、トランザクションを復号化せずに暗号文上で操作を行うことができます。これらの暗号化されたトランザクションに対してトランザクションの整理と合法的なブロックの形成の操作プロセスを適用し、暗号化されたトランザクションブロックを取得することができます。ブロックが復号化されると、トランザクションは復号化され、暗号化前の順序で整理された完全で合法的なブロックが得られます。

△ホモモーフィック暗号化を通じて、ブロックビルダーは暗号化された取引から完全かつ合法的なブロックを組み立てることができます

読書のヒント:ホモモーフィック暗号化には、部分的にホモモーフィック暗号化(部分的HE)や完全にホモモーフィック暗号化(完全HE)などのレベルがあります。部分的にホモモーフィック暗号化では、暗号文に対して加算または乗算しか行えませんが、完全にホモモーフィック暗号化では、暗号文に対して加算や乗算を行うことができます(基本的に、任意の操作が行えます)。

△ 第三欄:FHEをサポートする異なる暗号化および復号化技術の成熟度。飛行中およびエンクレーブを除き、HEを必要としないためサポートされていると見なされますが、他のものはまだ利用できません。画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_620

上記では、取引を暗号化および復号するための異なるメカニズムが紹介されています。それぞれには異なる利点と欠点がありますが、最終的にできることはすべて取引内容を隠し、条件が満たされたときに復号できるようにすることです。取引内容が隠されると、復号を回避できます。MEVの抽出と検閲リスクに注意してください。

ただし、取引データ自体には、取引のイニシエーター、取引手数料または署名など、取引の妥当性を検証するために使用される関連するメタデータが含まれます。さらに、イニシエーターのIPアドレスもメタデータの形態であり、取引のデータサイズさえもそうです。これらすべてのメタデータには、ユーザーのプライバシーが漏洩する可能性があるため、このメタデータも保護する必要があります。

メタデータがプライバシー漏洩しないようにする

暗号化された取引のさまざまなメタデータと対応する保護措置がリストされており、ホモモーフィック暗号化やゼロ知識証明などの暗号技術が必要とされます。

  1. IPアドレス

  2. 取引署名

  3. 取引手数料

  4. トランザクションのイニシエーターとそのNonce値

  5. 取引サイズ

△取引の異なるメタデータはユーザーのプライバシーを漏洩する可能性があります。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_709

IPアドレス

ユーザーが暗号化された取引を送信するために接続するネットワークは、ユーザーのIPアドレスに基づいてユーザーの身元を明らかにする可能性があり、検閲される可能性があります。ネットワークレベルでのプライバシー保護は、Torなどの技術に依存しています。

トランザクション署名、取引手数料、取引イニシエーターおよびそのNonce値

これらのメタデータは取引の妥当性を証明するために使用されますが、ユーザーのアイデンティティを明らかにしますので、暗号化する必要があります。一度暗号化されると、この情報を明らかにせずに取引の妥当性を証明するために他のツールを使用する必要があります。さもないと、ネットワークはDoS攻撃を受け、解読後にのみ発見される無効な取引の塊で埋め尽くされる可能性があります。

ノードが暗号化されたトランザクションを受信すると、(1) まずトランザクションイニシエーターが実際にトランザクションを開始したことを確認する必要があります。つまり、トランザクション署名を検証し、次に(2) イニシエータがトランザクションを支払うのに十分なETHを持っていることを確認します(ユーザーバランス≧ガス価格*ガスリミット)、そして(3) 送信者のノンス値を確認してトランザクションのリプレイ攻撃を回避します。

ゼロ知識証明

これらのチェックを通過する取引を証明するために、ゼロ知識証明を使用できます。ゼロ知識証明には、公開情報(公開入力)、非公開情報(非公開証人)、証明したい主張(ステートメント)が含まれています。

例えば、公開情報(公開入力)は暗号化された取引(tx暗号文)であり、非公開情報(非公開証人)は暗号化されていない取引(tx暗号文)であり、このゼロ知識証明によって証明される主張(zkステートメント)は「この「暗号化された取引が正当である」(tx暗号文が有効)である。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g19ee04031ad_0_391

たとえば、アリスがボブに、10 ETHを超える残高を持っていることを証明したいが、自分のアドレスを明かしたくない場合、ゼロ知識証明を使用して、アリスのアドレスが本当に10 ETHを超える残高を持っていることをボブに証明することができます。

このゼロ知識証明によって証明される文は、「アリスのアドレスに10 ETH以上の残高があることを証明する」です。この証明を生成するために、アリスはアドレスを提供し、そのアドレスの秘密鍵を保持していることの証明(たとえば、秘密鍵を使用して署名を生成する)を提供する必要があり、また、このアドレスのETH残高を提供する必要があります。たとえば、このアドレスが1001番目のブロックにどれだけのETHを保持しているかを証明するためにMerkle Proofを使用します。

アドレス、署名、およびMerkle Proofは開示できず、プライベート情報(プライベートウィットネス)です。

この証明が提示されると、Bobはブロック1001の状態ツリーのMerkle Root(State Rootとも呼ばれる)でこの証明を検証できます。各ブロックのState Rootは誰でも知っており、それは公開情報(公開入力)です。

Bobが知っている情報は、State Rootの公開情報と検証結果だけです。Aliceの個人情報のいずれも知ることはありません。

△アリスは2つのプライベート入力を提供します:Merkle Proofと署名;ボブは状態ルートの公開入力を提供します。zkステートメントは、アリスがアドレスを持っており、そのアドレスの残高が10 ETHを超えていることを検証できます

(1) トランザクション署名を検証する

取引署名の検証は2つの部分から構成されます: (a) 取引イニシエーターが合法であること、および (b) 取引署名が取引イニシエーターによって署名されていること。

(a) トランザクションイニシエーターのEthereumアドレスが正規なアドレスであり、ランダムな番号でないことを主に検証します。これにより、アドレスがEthereumの状態ツリーに存在することがMerkle Proofを通じて証明されます。

(b) トランザクション署名がトランザクションイニシエーターの秘密鍵によって署名されていることを検証します。

△ この証明は、(a) トランザクション発信者のアドレス(送信者公開鍵Merkle証明を介して)および(b) トランザクション内の署名が正当であることを検証します(署名はtxプレーンテキストに含まれます)。 txプレーンテキストは、トランザクションの原始の暗号化されていないトランザクションデータであり、これはトランザクション発信者によって提供された個人情報です。

画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_736

読み取りのヒント:上の画像の赤いテキストは、検証に合格した後のこの証明書が意味するものを指します(つまり、「取引の署名が正当である」ことを示します)。これはzkステートメントの一部ではありません。青い部分は、暗号化された(公開)取引データと非暗号化された(非公開)取引データを含む、取引そのものに関連する情報です。緑の部分は、証明を完了するために必要な追加データであり、公開データと非公開データの両方が含まれています。

△ トランザクションイニシエーターのアドレスがEthereumの状態ツリーに存在すること、およびトランザクションイニシエーターが実際にその場所の秘密鍵を持っていることを証明してください

(2) トランザクションイニシエーターが手数料を支払うのに十分なETHを持っていることを確認します

前述のアリスとボブの例と同様に、残高が10 ETHを超えることを証明する、トランザクションイニシエーターは自分のアドレスの残高のMerkle Proofを提供する必要があります。証明されるべき声明は「アドレスの残高≧トランザクション手数料」です。トランザクション手数料はガス価格にガスリミットを乗じたものです。ガス価格とガスリミットの情報は元の非暗号化トランザクションデータ(txプレーンテキスト)に含まれています。txプレーンテキストはトランザクションイニシエーターによって提供されるプライベート情報です。

△ この証明は、取引イニシエータのアドレスの残高(送信者の残高Merkleプルーフ経由)が取引手数料以上であることを検証します(取引手数料情報はtx平文に含まれています)。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_743

トランザクションイニシエーターのアドレスの残高がガス価格よりも大きいことを証明する

(3) トランザクションイニシエーターのNonce値を検証します

NonceもEthereumの状態に記録されているため、Merkle Proofも使用され、トランザクションのイニシエーターの現在のNonce値を証明し、その後、トランザクションで指定されたNonce値と比較して、トランザクションがリプレイされていないことを確認します。

△ この証明は、取引イニシエータのアドレスのNonce値(Nonce Merkle証明を介して)と取引で指定されたNonce値(取引で指定されたNonce値はtxプレーンテキストに含まれています)を比較しています。 画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g19ee04031ad_0_327

△ トランザクションイニシエーターのアドレスのノンスを証明する= txのノンス

ただし、このチェックでは、悪意のある攻撃者が同じ Nonce 値を持つ複数のトランザクションを生成して DoS 攻撃を行うのを防ぐことはできないため (これらのトランザクションはすべて Nonce 値チェックに合格できます)、追加のチェックを追加する必要があります。

トランザクションイニシエーターには、同じNonce値を持つトランザクションが1つだけであることを確実にするために、1つのReplay Tagを提供するように要求します。Replay TagはNonce値とトランザクションイニシエーターの秘密鍵のハッシュ値です:replay tag = H(nonce、private key)、したがって、同じトランザクションイニシエーターの異なるNonce値は、それぞれ固有のReplay Tagに対応します。

したがって、ノードはリプレイタグを使用して、トランザクションイニシエーターが同じNonce値で複数のトランザクションを開始したかどうかを識別し(これらのトランザクションのリプレイタグは同じになります)、同じリプレイタグを持つ2番目のトランザクションを拒否するかどうかを判別できます。

△ この証明では、再生タグを計算し、公開入力で渡された再生タグと比較します。取引のNonce値は、txプレーンテキストに含まれており、秘密鍵はプライベートウィットネスに含まれています。

Image source:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_750

△ トランザクションイニシエーターアドレスのnonceを証明する = tx nonceおよびreplay tag = H(nonce, key)

または、トランザクション発行者が元のトランザクションを実行したくないか、トランザクションをより速く収集するためにガス価格を上げたいと思うかもしれないため、同じNonce値でトランザクションを別のトランザクションで置き換えたいと考える可能性があると考えることもできます。

この時点では、PoSのSlot値をReplay Tagの計算に導入することができます。replay tag = H(nonce, private key, slot)。たとえば、ボブはスロット1001でNonceが5のトランザクションを送信しましたが、まだ受信されていません。そのため、他のフィールドを変更せずにトランザクションのガス価格を倍にし、更新されたトランザクションをスロット1005で送信しました。スロットが変更されたため、Replay Tagも異なり、この新しいトランザクションはNonce値が同じであるため拒否されません。

△ リプレイタグの計算には、公開入力が追加のスロット値を通過します。 画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_757

5.取引サイズ

一部の暗号化手法は、暗号化前と同じサイズになる暗号化トランザクションデータを生成します。ただし、サイズを通じていくつかの情報を推測する可能性は依然としてあります。たとえば、Uniswapで実行されたトランザクションのトランザクションデータは、単純なETHの送金のトランザクションデータよりも大きくなければなりません。したがって、トランザクションサイズはプライバシーを漏洩させる可能性があるメタデータと同じです。

トランザクションデータを暗号化する前に、直感的なアプローチは、トランザクションサイズが2の累乗になるまでゼロの塊をパディングするなど、パディングアクションを実行することです。これにより、観察者がサイズによってトランザクションを特定する可能性が低減されます。ブロックビルダーは、パディングされたトランザクションをブロックに組み合わせます。

△ ホワイトはパディングです。 ブルーとオレンジのディールは同じサイズなので、サイズで区別する方法はありません。 画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_860

ただし、このアプローチの欠点は、(1) ブロック内の多くのスペースがパディングに無駄になるため効率が悪く、(2) 十分なプライバシー保護を提供しない可能性があることです。例えば、上記の図の赤いトランザクションのサイズ(四角形が四つ)は珍しいかもしれませんが、それでも特定される可能性があります。すべてのトランザクションを固定サイズ(たとえば64ブロック)にパディングするとプライバシーが向上しますが、ブロックスペースの無駄が比較的大きくなります。

△欠点は効率の悪さとプライバシー保護の限界です。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_812

より良いアプローチは、最初に取引を固定サイズにパディングすることですが、ホモモーフィック暗号化を使用してパディングを削除することもできます。

トランザクションはすべて固定サイズにパディングされているため、観察者が見るすべてのトランザクションは同じサイズになります。ブロックビルダーは、暗号化されたトランザクションを関数を介して結合し、同時にパディングを削除することができます。

△ 暗号化された取引を組み合わせる際に、ホモモーフィック暗号化を使用してパディングを削除します。 画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_908

読書のヒント:純粋な信頼または信頼できるハードウェアを備えたブロックビルダーは、同様の効果を実現できますが、ホモモーフィック暗号化は必要ありません(結局、誰もがそれを信頼しています)。

ブロックビルダーが効率的なブロックを構築する方法

暗号化されたトランザクションをホモモーフィック暗号化を使って効率的にブロックに組み合わせることができたとしても、まだいくつかの問題が解決される必要があります。(1)異なるトランザクションが同じ状態を読み書きする可能性があるため(たとえば、すべてUniswapで取引を行っている)、これが低ランクのトランザクションが失敗しやすくなる可能性があること、および(2) ブロックビルダーが取引を取扱手数料のレベルに応じて収集することができないことなどがあります。

理想的な解決策は、EVMを全同型暗号化で実行することです。まるでEVMを実行用のブラックボックスに入れるようなもので、それによってブロックビルダーはEVMを介してトランザクションの実行をシミュレートし、最も効率的で収益性の高いブロックを形成することができます。ただし、この技術の技術的複雑さは非常に高く、実現するには長い時間がかかります。

代替手段として、トランザクションに暗号化された取引手数料と暗号化されたアクセスリストを添付し、正当性を検証するために同型暗号化を使用します(アクセスリストは、トランザクションが読み取りおよび書き込む状態を示すために使用されます)。これにより、ブロックビルダーは取引手数料を通じて取引収入の順序を決定し、アクセスリストを使用してトランザクションがお互いに影響し、トランザクションの実行効率が低下するのを防ぎます。

△ 手数料とアクセスリストによって、収集される取引とその収集順序が決まります。画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_1133

取引が発生する時刻

暗号化された取引がP2Pネットワークに送信される時刻がプライバシーを漏洩する可能性がある場合(たとえば、アリスがUTC+8 00:00–04:00に取引を行う場合)、私たちはバリデータに定期的に複数の暗号化されたダミートランザクションを送信するように依頼することができます。これにより、観察者を混乱させます。

ダミートランザクションは、検証者によって送信されたことを証明するためにゼロ知識証明と一緒に添付する必要があり、頻度を制限してダミートランザクションでネットワークが満たされるのを防ぎます(観察者はこれがダミートランザクションであることはわかりません、ただし「合法かつ有効である」とのみ知ることができます)。

ダミートランザクションは、グループブロックの同型暗号化操作中に特定され、破棄されます。

△バリデータは定期的に(灰色の)ダミートランザクションを送信して観察者を混乱させますが、これによりネットワークとノードの負担が増加します。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_1210

暗号化されたメンプール対FSS

前述の記事でFSSは取引を暗号化し、その後Chainlink Oracleに手渡すことも紹介しました。FSSが取引を暗号化し、暗号化された取引の妥当性を検証するプロセスは、実際には、暗号化メンプールと同じですが、異なる点もあります。

  • FSSのトランザクション暗号化には、メタデータの保護について言及されていませんが、暗号化されたメンプールはメタデータを隠し、ゼロ知識証明を使用してトランザクションの妥当性を証明します。
  • FSSは現在、しきい値暗号化/復号化を使用しており、Chainlink Oracleによって共同で復号化されています。これはChainlink Oracleを信頼する必要があることを意味します。暗号化されたメンプールは並べ替え方を指定していませんが、トランザクションを暗号化し、ゼロ知識証明でその有効性を証明することに焦点を当てています。
  • FSSが「公平性」に重点を置いているのに対し、暗号化されたメンプールは「ブロックの内容を効率的に組み立てる方法や、単にトランザクションの順序をランダムに決定するのではなく、プロポーザーが最も有益なブロックを組み立てる方法に重点を置いています。」

将来、FSSは暗号化メモリプールの技術を使用して、暗号化および復号化トランザクションを強化または置換する可能性があります。

暗号技術を用いたMEVへの取り組み

このトークは、著者が、暗号化されたメンプールに関して、暗号技術やEthereumコンセンサスレイヤーの改善が、MEVによって引き起こされる問題にどのように対処できるかを共有している内容です。詳細はこちらをご確認ください:https://www.youtube.com/watch?v=mpRq-WFihz8

概要とハイライト

  1. 暗号化されたメンプールの目的は、トランザクションを暗号化することでMEVおよび検閲に対抗することです。他の人はあなたのトランザクションが有効であることしか知ることはできませんが、あなたのトランザクション内で何を行っているかは分かりません。

  2. ただし、検閲に対する効果的な抵抗を実現するには、PBS Inclusion Listなどのメカニズムを使用する必要があります。そうでないと、ビルダーは依然として暗号化された取引を受け取らないことで検閲を行うことができます。

  3. 暗号化された取引が有効であることを証明するのは簡単ではありません。取引の署名、取引イニシエータのNonce値、十分な手数料などを証明するには複数のゼロ知識証明が必要です。

  4. さらに、IP、トランザクションデータのサイズ、トランザクション送信時間などのメタデータが取引のプライバシー漏洩を回避する必要があります。

  5. 最後に、最も重要なことは、取引が復号化できることを確認することです —— 保証された暗号化。純粋な信頼(飛行中)、信頼できるハードウェアエンクレーブ、閾値暗号化/復号化、遅延暗号化/復号化、証人暗号化/復号化の5つの異なる方法があります。それぞれの方法にはそれぞれ利点と欠点があります。

参考データと推奨されるさらなる読書

暗号化されたメンプール

この投稿のレビューと改善に協力してくれた Steven Wu、Kimi Wu、Kevin Mai-Hsuan Chia、Anton Cheng に感謝します。

免責事項:

  1. この記事は[から転載されましたtechflowpostすべての著作権は元の著者に帰属しますWill 阿望;Diane Cheung].この転載に異議がある場合は、Gate Learnチームが promptly に対応します。
  2. 責任の免責事項:この記事で表現されている意見や見解は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳は、Gate Learnチームによって行われます。特に言及されていない限り、翻訳された記事のコピー、配布、あるいは盗用は禁止されています。

MEV (6): より公正なMEVエコシステム(middle)

上級1/13/2024, 9:28:31 AM
この記事では、トランザクション情報がMEVによって使用されるのを防ぐために暗号化方法をどのように使用するかについて説明します。

読書のヒント

・この記事を読む前に、MEVの基本的な理解が必要です

・Ethereum取引に精通し、取引が何を含んでおり、最終的にどのようにブロックに含まれるかを理解する

· マークルツリーとゼロ知識証明の役割を理解する

· クリックして読む:MEV (5): より公平なMEVエコシステム(パート1)

前の記事では、(1)信頼できるハードウェアによるブロックビルダーの公平性向上を図るFlashbot SGX Builder設計と、(2)取引順序の役割を分散化することでMEVを防ぐChainlink FSS設計について紹介しました。

この記事では、暗号化されたメンプールの設計について説明します。これは、暗号技術を用いて取引のプライバシーを提供することでMEVを削減または排除することを目的としています。

暗号化されたメンプール

2つの目標:MEV保護と検閲耐性

もし、ユーザーがトランザクションをブロードキャストする前に暗号化し、ブロックに含まれる際にのみ復号するツールがあれば、ユーザーはMEVの影響を気にする必要がありません。MEVサーチャーはトランザクション内容を一切見ることができず、ユーザーは提案者に狙われたり政府の制裁に違反したりして収入を拒否されることを心配する必要はありません。このツールを構築する基盤は暗号技術です。

暗号化されたメンプールは、(1)ユーザーの取引コンテンツを暗号化してプライバシーを保護し、(2)取引が暗号化されたときにその有効性を検証し、無効だが暗号化された取引を大量に生成する攻撃者を防ぎます。これにより、提案者は無効な取引を含めてブロックスペースを無駄にし、最後の瞬間に発見されるのみです。

読書のヒント: 単なる暗号化では検閲への抵抗を完全に保証することはできません。なぜなら、検閲をしたいプロポーザーは、暗号化された取引を拒否することができるためです。そのため、暗号化は検閲のコストを増加させるだけであり(プロポーザーはすべての暗号化された取引の手数料を放棄することになる)、より優れた検閲防止保護を実現するには、PBSなどのインクルージョンリストを使用する必要があります。

トランザクションが復号化できることを確認する(復号化保証)

トランザクションを暗号化した後、それが復号化できることを確認することが重要です。そうしないと、DoS(サービス拒否)攻撃の脆弱性が生じる可能性があります。このような攻撃では、攻撃者は繰り返し復号化できない暗号化されたトランザクションを送信します。その結果、ノードはこれらのトランザクションを有効期限が切れるまで保持する必要があり、ノードのトランザクションプールにこれらの無駄なトランザクションが蓄積されます。

取引が復号化できることを確認するための方法がいくつかあります:

  1. 純粋な信頼(飛行中)

  2. 信頼できるハードウェア、エンクレーブ

  3. 閾値暗号化/復号化

  4. 遅延暗号化/復号化

  5. 証人の暗号化/復号

△ トランザクションを復号化してその例を確実にするいくつかの方法。 純粋な信頼が最も簡単であり、証人の復号が最も難しいことから、複雑さは左から右に増加します。

画像ソース:https://www.youtube.com/watch?v=XRM0CpGY3sw

コミットリヴィール

コミットリヴィールメカニズムでも同じ目的を達成できますか?ユーザーはトランザクションの内容をハッシュ関数に入力してハッシュ値、すなわちコミットメントを取得し、提案者がユーザーのトランザクションコミットメントをブロックに含めることを保証したら、ユーザーは完全なトランザクション内容を開示します。

読書のヒント: コミットメントの方法は、PBSのプロポーザーが署名を通じてビルダーブロックに含まれることを約束することのようになる可能性があります。 これは保証されたコミットメントです。 プロポーザーが約束を破ると、罰せられます。

△ 提案者はアリスのトランザクションの取り消しを受け取ることを約束します

Commit-revealと暗号化は、ユーザートランザクションの内容を隠し、MEVの抽出と検閲を防ぐという同じ目的を果たすことができますが、Commit-revealは復号を保証することはできません。なぜなら、力はユーザーの手にあるからです。ユーザーは、意図的にも非意図的にも内容を公開しない選択肢があります。

ユーザーにデポジットを添付してもらい、リベールがない場合にデポジットを没収することは、コミットリベールの既に悪いユーザーエクスペリエンスをさらに悪化させる可能性があります。

△アリスは取引を明らかにする必要はありません

1.ピュアトラスト(飛行中)

ユーザーは取引を暗号化して中央の役割に送信します。その後、中央の役割は取引を復号化し、ブロックに含まれる前に漏洩しないように確認します。ユーザーは一般的に中央の役割を信頼し、取引をブロックに含まれるまで暗号化された状態と見なします。中央の役割は取引を直ちに受け取った後に復号化しますが、ユーザーはそれを信頼しています。

読書のヒント: この中央集権的な役割は、例えば、PBSのビルダー、プロポーザー、またはロールアップのシーケンサー/オペレーターになります。

2.信頼できるハードウェア、エンクレーブ

それは純粋な信頼と同じように機能しますが、ユーザーは個人、組織、または企業を信頼するのではなく、信頼できるハードウェアと実行するプログラムコードを信頼します。

3.しきい値暗号化/復号化

Chainlink FSSはしきい値暗号化と復号化も使用しますが、Chainlink FSSではしきい値キーの管理者はChainlinkのOracleですが、暗号化されたMempoolsでは管理者(Keypersと呼ばれる)はL1またはL2のバリデータ(L2にも分散型バリデータがあると仮定)になる場合があります。

しきい値の暗号化/復号にはいくつかの欠点があります:

  • 強力で誠実な過半数の前提条件:Keypersの半数以上が誠実であると仮定する必要があります。もし彼らが不誠実であれば、彼らは自由にユーザートランザクションを復号化して見ること、取引を検討すること、または取引のMEVを抽出することができます。
  • 責任の欠如:十分な数のKeyper参加者が協力すれば、情報を復号化することができます。しかし、Keyper参加者が共謀すると、誰が陰謀に関与しているのかを知る方法はありません。悪意のある行為者を特定できないため、Keyperの罰則メカニズムを設計することは不可能です。したがって、Keyper参加者の大多数が正直であるという前提に依存しなければなりません。
  • 弱体化したライブネス:過剰なKeyperのオフラインは、十分なオンラインKeyper数が不足する原因となり、復号化とブロックの生成が阻害されます。これにより、チェーンは停止します。これは、イーサリアムのPoSメカニズムと矛盾しています。このメカニズムは、第三次世界大戦の発生時でもチェーンがブロックを継続して生成し、最終的に確定性を達成することを強調しています。復号化をしきい値で使用するイーサリアムのPoSの確率は高くないと推測されます。

しきい値暗号化および復号には多くの変更が必要なため、L2はL1よりもこのアプローチに適しています。

この記事では、L1 での設計と実装に関する考慮事項が提案されています。この設計をテストしているプロジェクトは、Shutter Network を参照することができます。詳細はこちらをご確認ください:https://ethresear.ch/t/shutterized-beacon-chain/12249

4.遅延暗号化/復号

遅延暗号化は、一定期間後に自動的に複合化できることを保証します。ただし、複合化プロセスは実際には完全に自動的ではなく、誰かが複合化を行い、継続的な計算を行う必要があります。暗号化の難易度によって決まる一定の期間後に、計算が完了し、複合化が成功することができます。

遅延暗号化の背後にあるコンセプトは、検証可能遅延関数(VDF)と似ており、両者とも時間リリース暗号のファミリーに属しています。

VDFは、私たちがF(x)を迅速に検証することを可能にします:「時間のかかる順次計算」の結果。これは、Proof of Work(PoW)に類似していますが、VDFの計算は順次プロセスであり、並列計算を介して加速することができるPoWとは異なります。VDFの復号器は、ステップバイステップで繰り返し計算しか行えません。

△ VDFを使用すると、私が10秒で完了した計算の結果を、たとえば0.01秒で検証できます。そして、私は計算を並列化する方法がありませんでした。画像出典:https://techtelegraph.co.uk/ビットコイン上の検証可能な遅延関数

遅延暗号化および復号はVDFのように連続した計算であり、並列操作を介して加速することはできません。ただし、ハードウェアの最適化を通じて誰かが復号プロセスを高速化する可能性があることを考慮する必要があります。したがって、この技術を採用して実際の公開環境に適用したい場合、誰もが大幅なハードウェアの差を持っておらず、復号を事前に完了できること(および復号が非公開で行われるため、検出が困難である)を確認する必要があります。

現在、Ethereum FoundationとProtocol Labsは既にVDF ASICチップの研究で協力しており、最先端のコンピューティングハードウェアを市場に提供し、誰もが異なるハードウェアの利点を持ち、事前に暗号を解読することができないようにしています。詳細はこちらをご確認ください:https://filecoin.io/blog/posts/collaboration-with-the-ethereum-foundation-on-vdfs/

読書のヒント:VDFは、イーサリアムの乱数の操作不能性を高めるためにも使用できます。

閾値暗号化および復号化と比較して遅延暗号化および復号化の利点は、Keypersグループの正常な動作を信頼または依存する必要がないことであり、時間切れになると自動的に復号化されます。ただし、この強制された復号化時間は遅延復号化の欠点でもあります:暗号化された取引を復号化するには一定期間を要し、つまり、ユーザー取引がチェーンにアップロードされるまでの固定遅延時間があるということです。さらに、ハードウェア競争もこの方法では無視できないリスクです。誰かがより速いチップを開発しているかどうかを知ることは難しいです。

5.証人の暗号化/復号化

ある暗号文が鍵や連続的な計算によって復号化されないと想像してみてくださいが、ある「条件」が満たされたときにのみ復号化されることができるとします。「この方程式が解かれたとき」や「この方程式が解かれたとき」など、ある条件が満たされたときにのみ復号化されることができます。一度暗号文がブロックに含まれると、その暗号文は復号化され、そのような状況が続きます。

解読鍵を知ることや、連続的な計算の結果を知ることは、実際には条件です。

証人暗号化を通じて、閾値暗号化と遅延暗号化の効果を実現するだけでなく、これら2つの復号化方法を組み合わせることもできます。たとえば、条件を「条件1: '一群のキーパーがこの暗号文を復号することに同意する'または条件2: '5分後'」と設定できます:すべてのキーパーがオンラインの場合、私たちはすぐに条件1を満たして暗号文を復号できます。ただし、十分なキーパーがオンラインでない場合は、少なくとも条件2を満たし、VDFを通じて「5分が経過した」と証明することで復号できます。

十分なKeypersがオンラインで復号化されることができます(上記)または十分な時間が経過した後(下記)

条件が満たされたことが証明されれば、復号化が達成される。証明は、ゼロ知識証明などの方法を通じて行うことができ、これにより複雑な計算を効率的に検証することが可能となる(条件の証明に必要な操作が複雑であると仮定する)または情報を隠すことができる(証明者が証明プロセス中に特定の情報を明らかにしたくない場合を仮定する)。しかし、証人暗号化は非常に強力である一方、現在の技術では実用的な用途を提供するには不十分である。

△異なる暗号化および復号技術の成熟度。証人暗号化および復号(Witness)はまだ十分に成熟していません。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_591

ホモモーフィック暗号化を使用して暗号文を操作および処理する

前の段落では、取引が復号化されるさまざまな方法が紹介されましたが、取引はいつ復号化できるのでしょうか?答えは、取引がブロックに含まれ、順序が決まった後です。しかし、ブロックビルダーは、どのようにして一団の意味不明な情報からブロックを組み立てるのでしょうか?または、どのようにして非常に利益の高いブロックを効率的に組み立てるのでしょうか?答えは、ホモモーフィック暗号(HE)です。

△ 投票に使用されるホモモーフィック暗号化の例:投票内容は暗号化されていますが、暗号文は結果が計算された後でも合計され解読されることができます。画像の出典:https://twitter.com/khushii_w/status/1660278622291210242

読書のヒント:暗号化と復号化が純粋な信頼(in-flight)または信頼できるハードウェアを通じて行われる場合、実際にはトランザクションがブロックに含まれ、順序が決まるのを待つ必要はありません。結局のところ、皆が他者を信頼しているので、トランザクションを受信した直後にすぐに復号化して並べ替えます。これによりブロックの形成が高速化され、同型暗号化操作を実行するための追加リソースが不要となります。

ホモモーフィック暗号化を通じて、トランザクションを復号化せずに暗号文上で操作を行うことができます。これらの暗号化されたトランザクションに対してトランザクションの整理と合法的なブロックの形成の操作プロセスを適用し、暗号化されたトランザクションブロックを取得することができます。ブロックが復号化されると、トランザクションは復号化され、暗号化前の順序で整理された完全で合法的なブロックが得られます。

△ホモモーフィック暗号化を通じて、ブロックビルダーは暗号化された取引から完全かつ合法的なブロックを組み立てることができます

読書のヒント:ホモモーフィック暗号化には、部分的にホモモーフィック暗号化(部分的HE)や完全にホモモーフィック暗号化(完全HE)などのレベルがあります。部分的にホモモーフィック暗号化では、暗号文に対して加算または乗算しか行えませんが、完全にホモモーフィック暗号化では、暗号文に対して加算や乗算を行うことができます(基本的に、任意の操作が行えます)。

△ 第三欄:FHEをサポートする異なる暗号化および復号化技術の成熟度。飛行中およびエンクレーブを除き、HEを必要としないためサポートされていると見なされますが、他のものはまだ利用できません。画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_620

上記では、取引を暗号化および復号するための異なるメカニズムが紹介されています。それぞれには異なる利点と欠点がありますが、最終的にできることはすべて取引内容を隠し、条件が満たされたときに復号できるようにすることです。取引内容が隠されると、復号を回避できます。MEVの抽出と検閲リスクに注意してください。

ただし、取引データ自体には、取引のイニシエーター、取引手数料または署名など、取引の妥当性を検証するために使用される関連するメタデータが含まれます。さらに、イニシエーターのIPアドレスもメタデータの形態であり、取引のデータサイズさえもそうです。これらすべてのメタデータには、ユーザーのプライバシーが漏洩する可能性があるため、このメタデータも保護する必要があります。

メタデータがプライバシー漏洩しないようにする

暗号化された取引のさまざまなメタデータと対応する保護措置がリストされており、ホモモーフィック暗号化やゼロ知識証明などの暗号技術が必要とされます。

  1. IPアドレス

  2. 取引署名

  3. 取引手数料

  4. トランザクションのイニシエーターとそのNonce値

  5. 取引サイズ

△取引の異なるメタデータはユーザーのプライバシーを漏洩する可能性があります。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_709

IPアドレス

ユーザーが暗号化された取引を送信するために接続するネットワークは、ユーザーのIPアドレスに基づいてユーザーの身元を明らかにする可能性があり、検閲される可能性があります。ネットワークレベルでのプライバシー保護は、Torなどの技術に依存しています。

トランザクション署名、取引手数料、取引イニシエーターおよびそのNonce値

これらのメタデータは取引の妥当性を証明するために使用されますが、ユーザーのアイデンティティを明らかにしますので、暗号化する必要があります。一度暗号化されると、この情報を明らかにせずに取引の妥当性を証明するために他のツールを使用する必要があります。さもないと、ネットワークはDoS攻撃を受け、解読後にのみ発見される無効な取引の塊で埋め尽くされる可能性があります。

ノードが暗号化されたトランザクションを受信すると、(1) まずトランザクションイニシエーターが実際にトランザクションを開始したことを確認する必要があります。つまり、トランザクション署名を検証し、次に(2) イニシエータがトランザクションを支払うのに十分なETHを持っていることを確認します(ユーザーバランス≧ガス価格*ガスリミット)、そして(3) 送信者のノンス値を確認してトランザクションのリプレイ攻撃を回避します。

ゼロ知識証明

これらのチェックを通過する取引を証明するために、ゼロ知識証明を使用できます。ゼロ知識証明には、公開情報(公開入力)、非公開情報(非公開証人)、証明したい主張(ステートメント)が含まれています。

例えば、公開情報(公開入力)は暗号化された取引(tx暗号文)であり、非公開情報(非公開証人)は暗号化されていない取引(tx暗号文)であり、このゼロ知識証明によって証明される主張(zkステートメント)は「この「暗号化された取引が正当である」(tx暗号文が有効)である。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g19ee04031ad_0_391

たとえば、アリスがボブに、10 ETHを超える残高を持っていることを証明したいが、自分のアドレスを明かしたくない場合、ゼロ知識証明を使用して、アリスのアドレスが本当に10 ETHを超える残高を持っていることをボブに証明することができます。

このゼロ知識証明によって証明される文は、「アリスのアドレスに10 ETH以上の残高があることを証明する」です。この証明を生成するために、アリスはアドレスを提供し、そのアドレスの秘密鍵を保持していることの証明(たとえば、秘密鍵を使用して署名を生成する)を提供する必要があり、また、このアドレスのETH残高を提供する必要があります。たとえば、このアドレスが1001番目のブロックにどれだけのETHを保持しているかを証明するためにMerkle Proofを使用します。

アドレス、署名、およびMerkle Proofは開示できず、プライベート情報(プライベートウィットネス)です。

この証明が提示されると、Bobはブロック1001の状態ツリーのMerkle Root(State Rootとも呼ばれる)でこの証明を検証できます。各ブロックのState Rootは誰でも知っており、それは公開情報(公開入力)です。

Bobが知っている情報は、State Rootの公開情報と検証結果だけです。Aliceの個人情報のいずれも知ることはありません。

△アリスは2つのプライベート入力を提供します:Merkle Proofと署名;ボブは状態ルートの公開入力を提供します。zkステートメントは、アリスがアドレスを持っており、そのアドレスの残高が10 ETHを超えていることを検証できます

(1) トランザクション署名を検証する

取引署名の検証は2つの部分から構成されます: (a) 取引イニシエーターが合法であること、および (b) 取引署名が取引イニシエーターによって署名されていること。

(a) トランザクションイニシエーターのEthereumアドレスが正規なアドレスであり、ランダムな番号でないことを主に検証します。これにより、アドレスがEthereumの状態ツリーに存在することがMerkle Proofを通じて証明されます。

(b) トランザクション署名がトランザクションイニシエーターの秘密鍵によって署名されていることを検証します。

△ この証明は、(a) トランザクション発信者のアドレス(送信者公開鍵Merkle証明を介して)および(b) トランザクション内の署名が正当であることを検証します(署名はtxプレーンテキストに含まれます)。 txプレーンテキストは、トランザクションの原始の暗号化されていないトランザクションデータであり、これはトランザクション発信者によって提供された個人情報です。

画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_736

読み取りのヒント:上の画像の赤いテキストは、検証に合格した後のこの証明書が意味するものを指します(つまり、「取引の署名が正当である」ことを示します)。これはzkステートメントの一部ではありません。青い部分は、暗号化された(公開)取引データと非暗号化された(非公開)取引データを含む、取引そのものに関連する情報です。緑の部分は、証明を完了するために必要な追加データであり、公開データと非公開データの両方が含まれています。

△ トランザクションイニシエーターのアドレスがEthereumの状態ツリーに存在すること、およびトランザクションイニシエーターが実際にその場所の秘密鍵を持っていることを証明してください

(2) トランザクションイニシエーターが手数料を支払うのに十分なETHを持っていることを確認します

前述のアリスとボブの例と同様に、残高が10 ETHを超えることを証明する、トランザクションイニシエーターは自分のアドレスの残高のMerkle Proofを提供する必要があります。証明されるべき声明は「アドレスの残高≧トランザクション手数料」です。トランザクション手数料はガス価格にガスリミットを乗じたものです。ガス価格とガスリミットの情報は元の非暗号化トランザクションデータ(txプレーンテキスト)に含まれています。txプレーンテキストはトランザクションイニシエーターによって提供されるプライベート情報です。

△ この証明は、取引イニシエータのアドレスの残高(送信者の残高Merkleプルーフ経由)が取引手数料以上であることを検証します(取引手数料情報はtx平文に含まれています)。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_743

トランザクションイニシエーターのアドレスの残高がガス価格よりも大きいことを証明する

(3) トランザクションイニシエーターのNonce値を検証します

NonceもEthereumの状態に記録されているため、Merkle Proofも使用され、トランザクションのイニシエーターの現在のNonce値を証明し、その後、トランザクションで指定されたNonce値と比較して、トランザクションがリプレイされていないことを確認します。

△ この証明は、取引イニシエータのアドレスのNonce値(Nonce Merkle証明を介して)と取引で指定されたNonce値(取引で指定されたNonce値はtxプレーンテキストに含まれています)を比較しています。 画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g19ee04031ad_0_327

△ トランザクションイニシエーターのアドレスのノンスを証明する= txのノンス

ただし、このチェックでは、悪意のある攻撃者が同じ Nonce 値を持つ複数のトランザクションを生成して DoS 攻撃を行うのを防ぐことはできないため (これらのトランザクションはすべて Nonce 値チェックに合格できます)、追加のチェックを追加する必要があります。

トランザクションイニシエーターには、同じNonce値を持つトランザクションが1つだけであることを確実にするために、1つのReplay Tagを提供するように要求します。Replay TagはNonce値とトランザクションイニシエーターの秘密鍵のハッシュ値です:replay tag = H(nonce、private key)、したがって、同じトランザクションイニシエーターの異なるNonce値は、それぞれ固有のReplay Tagに対応します。

したがって、ノードはリプレイタグを使用して、トランザクションイニシエーターが同じNonce値で複数のトランザクションを開始したかどうかを識別し(これらのトランザクションのリプレイタグは同じになります)、同じリプレイタグを持つ2番目のトランザクションを拒否するかどうかを判別できます。

△ この証明では、再生タグを計算し、公開入力で渡された再生タグと比較します。取引のNonce値は、txプレーンテキストに含まれており、秘密鍵はプライベートウィットネスに含まれています。

Image source:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_750

△ トランザクションイニシエーターアドレスのnonceを証明する = tx nonceおよびreplay tag = H(nonce, key)

または、トランザクション発行者が元のトランザクションを実行したくないか、トランザクションをより速く収集するためにガス価格を上げたいと思うかもしれないため、同じNonce値でトランザクションを別のトランザクションで置き換えたいと考える可能性があると考えることもできます。

この時点では、PoSのSlot値をReplay Tagの計算に導入することができます。replay tag = H(nonce, private key, slot)。たとえば、ボブはスロット1001でNonceが5のトランザクションを送信しましたが、まだ受信されていません。そのため、他のフィールドを変更せずにトランザクションのガス価格を倍にし、更新されたトランザクションをスロット1005で送信しました。スロットが変更されたため、Replay Tagも異なり、この新しいトランザクションはNonce値が同じであるため拒否されません。

△ リプレイタグの計算には、公開入力が追加のスロット値を通過します。 画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_757

5.取引サイズ

一部の暗号化手法は、暗号化前と同じサイズになる暗号化トランザクションデータを生成します。ただし、サイズを通じていくつかの情報を推測する可能性は依然としてあります。たとえば、Uniswapで実行されたトランザクションのトランザクションデータは、単純なETHの送金のトランザクションデータよりも大きくなければなりません。したがって、トランザクションサイズはプライバシーを漏洩させる可能性があるメタデータと同じです。

トランザクションデータを暗号化する前に、直感的なアプローチは、トランザクションサイズが2の累乗になるまでゼロの塊をパディングするなど、パディングアクションを実行することです。これにより、観察者がサイズによってトランザクションを特定する可能性が低減されます。ブロックビルダーは、パディングされたトランザクションをブロックに組み合わせます。

△ ホワイトはパディングです。 ブルーとオレンジのディールは同じサイズなので、サイズで区別する方法はありません。 画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_860

ただし、このアプローチの欠点は、(1) ブロック内の多くのスペースがパディングに無駄になるため効率が悪く、(2) 十分なプライバシー保護を提供しない可能性があることです。例えば、上記の図の赤いトランザクションのサイズ(四角形が四つ)は珍しいかもしれませんが、それでも特定される可能性があります。すべてのトランザクションを固定サイズ(たとえば64ブロック)にパディングするとプライバシーが向上しますが、ブロックスペースの無駄が比較的大きくなります。

△欠点は効率の悪さとプライバシー保護の限界です。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_812

より良いアプローチは、最初に取引を固定サイズにパディングすることですが、ホモモーフィック暗号化を使用してパディングを削除することもできます。

トランザクションはすべて固定サイズにパディングされているため、観察者が見るすべてのトランザクションは同じサイズになります。ブロックビルダーは、暗号化されたトランザクションを関数を介して結合し、同時にパディングを削除することができます。

△ 暗号化された取引を組み合わせる際に、ホモモーフィック暗号化を使用してパディングを削除します。 画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_908

読書のヒント:純粋な信頼または信頼できるハードウェアを備えたブロックビルダーは、同様の効果を実現できますが、ホモモーフィック暗号化は必要ありません(結局、誰もがそれを信頼しています)。

ブロックビルダーが効率的なブロックを構築する方法

暗号化されたトランザクションをホモモーフィック暗号化を使って効率的にブロックに組み合わせることができたとしても、まだいくつかの問題が解決される必要があります。(1)異なるトランザクションが同じ状態を読み書きする可能性があるため(たとえば、すべてUniswapで取引を行っている)、これが低ランクのトランザクションが失敗しやすくなる可能性があること、および(2) ブロックビルダーが取引を取扱手数料のレベルに応じて収集することができないことなどがあります。

理想的な解決策は、EVMを全同型暗号化で実行することです。まるでEVMを実行用のブラックボックスに入れるようなもので、それによってブロックビルダーはEVMを介してトランザクションの実行をシミュレートし、最も効率的で収益性の高いブロックを形成することができます。ただし、この技術の技術的複雑さは非常に高く、実現するには長い時間がかかります。

代替手段として、トランザクションに暗号化された取引手数料と暗号化されたアクセスリストを添付し、正当性を検証するために同型暗号化を使用します(アクセスリストは、トランザクションが読み取りおよび書き込む状態を示すために使用されます)。これにより、ブロックビルダーは取引手数料を通じて取引収入の順序を決定し、アクセスリストを使用してトランザクションがお互いに影響し、トランザクションの実行効率が低下するのを防ぎます。

△ 手数料とアクセスリストによって、収集される取引とその収集順序が決まります。画像ソース:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_1133

取引が発生する時刻

暗号化された取引がP2Pネットワークに送信される時刻がプライバシーを漏洩する可能性がある場合(たとえば、アリスがUTC+8 00:00–04:00に取引を行う場合)、私たちはバリデータに定期的に複数の暗号化されたダミートランザクションを送信するように依頼することができます。これにより、観察者を混乱させます。

ダミートランザクションは、検証者によって送信されたことを証明するためにゼロ知識証明と一緒に添付する必要があり、頻度を制限してダミートランザクションでネットワークが満たされるのを防ぎます(観察者はこれがダミートランザクションであることはわかりません、ただし「合法かつ有効である」とのみ知ることができます)。

ダミートランザクションは、グループブロックの同型暗号化操作中に特定され、破棄されます。

△バリデータは定期的に(灰色の)ダミートランザクションを送信して観察者を混乱させますが、これによりネットワークとノードの負担が増加します。画像の出典:https://docs.google.com/presentation/d/1eKt6nR15umuxcej8Nj-osiDm_4ZvG32FdfAqG2-1-cI/edit#slide=id.g1a0b1827f35_0_1210

暗号化されたメンプール対FSS

前述の記事でFSSは取引を暗号化し、その後Chainlink Oracleに手渡すことも紹介しました。FSSが取引を暗号化し、暗号化された取引の妥当性を検証するプロセスは、実際には、暗号化メンプールと同じですが、異なる点もあります。

  • FSSのトランザクション暗号化には、メタデータの保護について言及されていませんが、暗号化されたメンプールはメタデータを隠し、ゼロ知識証明を使用してトランザクションの妥当性を証明します。
  • FSSは現在、しきい値暗号化/復号化を使用しており、Chainlink Oracleによって共同で復号化されています。これはChainlink Oracleを信頼する必要があることを意味します。暗号化されたメンプールは並べ替え方を指定していませんが、トランザクションを暗号化し、ゼロ知識証明でその有効性を証明することに焦点を当てています。
  • FSSが「公平性」に重点を置いているのに対し、暗号化されたメンプールは「ブロックの内容を効率的に組み立てる方法や、単にトランザクションの順序をランダムに決定するのではなく、プロポーザーが最も有益なブロックを組み立てる方法に重点を置いています。」

将来、FSSは暗号化メモリプールの技術を使用して、暗号化および復号化トランザクションを強化または置換する可能性があります。

暗号技術を用いたMEVへの取り組み

このトークは、著者が、暗号化されたメンプールに関して、暗号技術やEthereumコンセンサスレイヤーの改善が、MEVによって引き起こされる問題にどのように対処できるかを共有している内容です。詳細はこちらをご確認ください:https://www.youtube.com/watch?v=mpRq-WFihz8

概要とハイライト

  1. 暗号化されたメンプールの目的は、トランザクションを暗号化することでMEVおよび検閲に対抗することです。他の人はあなたのトランザクションが有効であることしか知ることはできませんが、あなたのトランザクション内で何を行っているかは分かりません。

  2. ただし、検閲に対する効果的な抵抗を実現するには、PBS Inclusion Listなどのメカニズムを使用する必要があります。そうでないと、ビルダーは依然として暗号化された取引を受け取らないことで検閲を行うことができます。

  3. 暗号化された取引が有効であることを証明するのは簡単ではありません。取引の署名、取引イニシエータのNonce値、十分な手数料などを証明するには複数のゼロ知識証明が必要です。

  4. さらに、IP、トランザクションデータのサイズ、トランザクション送信時間などのメタデータが取引のプライバシー漏洩を回避する必要があります。

  5. 最後に、最も重要なことは、取引が復号化できることを確認することです —— 保証された暗号化。純粋な信頼(飛行中)、信頼できるハードウェアエンクレーブ、閾値暗号化/復号化、遅延暗号化/復号化、証人暗号化/復号化の5つの異なる方法があります。それぞれの方法にはそれぞれ利点と欠点があります。

参考データと推奨されるさらなる読書

暗号化されたメンプール

この投稿のレビューと改善に協力してくれた Steven Wu、Kimi Wu、Kevin Mai-Hsuan Chia、Anton Cheng に感謝します。

免責事項:

  1. この記事は[から転載されましたtechflowpostすべての著作権は元の著者に帰属しますWill 阿望;Diane Cheung].この転載に異議がある場合は、Gate Learnチームが promptly に対応します。
  2. 責任の免責事項:この記事で表現されている意見や見解は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳は、Gate Learnチームによって行われます。特に言及されていない限り、翻訳された記事のコピー、配布、あるいは盗用は禁止されています。
Comece agora
Registe-se e ganhe um cupão de
100 USD
!