blockchainjapan’s blog

旬のブロックチェーンを記事を厳選して提供!

Optimistic vs. ZK Rollup: 相違と比較


Optimistic vs. ZK Rollup: 相違と比較

Alex Gluchowski

BIG UPDATE 2021: ZK RollupはEVM互換として対応しました!!!

Optimus Prime vs. Wing Zero

TL;DR:簡単な概要

Optimistic Rollupは、Ethereum上の汎用スマートコントラクトを短期的にスケールアップする為の有望技術です。早期の構築が実現すれば、セキュリティ/スケーラビリティのトレードオフを考慮した上で、既存のdappsやサービスの移行のより簡易化された方法を提供することができるでしょう。これにより、ETH 1.0は増大する需要に対応することができるようになります。

ZK Rollupは、より洗練された技術であり、現在、トークン転送や特殊なアプリケーションに使用することができます。しかし、汎用的なスマートコントラクトの実装にはもう少し時間が必要であり、EVMにゼロ知識証明を効率的に対応させるにはさらに多くの研究作業が必要となります。しかし、ZK Rollupが完成した場合、既存の全てのEthereum dappsやサービスは、シームレスかつスムーズな移行が可能になります。

ZK RollupはOptimistic Rollupが抱える複数の問題を根本的に解決します:

  • テールリスクの排除:複雑でありながら実行可能な攻撃ベクトルを介したORからの資金の盗難
  • 引き出しにかかる時間を1~2週間から数分に短縮
  • 実質的に無制限の量での迅速なtxの確認と終了を実現
  • デフォルトでのプライバシー保護を導入

Optimistic Rollupの存在と発展は、ZK Rollupにとっても素晴らしいニュースです。L2スケーリングへの移行には、ウォレットやオラクル、Dapps、ユーザーが慣れ親しんだプロセスに大きな変化を必要とします。Optimistic Rollupは、この移行の為のエコシステムも準備として役立ち、現状のZK Rollupではまだ構築できないdappsに対してもスケールをもたらすことが可能です。これにより、Ethereumの成長の勢いを維持しつつ、ZK Rollupが成熟して完全にシームレスに採用されるまでの時間が得られます。

Rollup101

Rollupとは?

Rollupは、Plasmaに似たL2スケーリングソリューションです。

単一のメインチェーンコントラクトは、全ての資金と、より大きなサイドチェーンの状態(アカウント、残高、その状態のMerkleツリー)への簡潔な暗号化コミットメントを保持します。サイドチェーンの状態は、ユーザーやオペレーターがオフチェーンで維持し、L1ストレージに依存しません(これこそが最大のスケーラビリティの勝利の源です)

RollupがPlasmaと異なるのは、Plasmaの大きな課題であるデータの可用性を、L1ネットワークを介して各トランザクションの一部のデータを公開することで解決している点です(Ethereumでは特にtx CALLDATAがこの目的に使用されます)。これにより、何千ものトランザクションを単一のRollupブロックにまとめて(「Rollupブロックにまとめて」これを「Rollup」「Rollupする」として使いましょう)おくことができます。

このアプローチは、コストが厳密に線形に増加する(トランザクション数のO(n))一方で、CALLDATAはL1のストレージや計算よりもはるかに安価であるため、実際にはスループットが100倍改善されます。

Rollupは、Vitalik Buterin氏がお気に入りのL2スケーリングソリューションとして繰り返し推奨されているものです。
状態遷移の正しさをどのように保証するかによって、Rollupには2つの機能化手法が存在します。これが、ZK RollupとOptimistic Rollupです。

両ソリューションの簡単な歴史はこちらに解りやすく示されています。

ZK Rollup(ZKR)とは?

ZK Rollupでは、オペレーターは全ての状態遷移に対してゼロ知識証明(SNARK)を生成する必要があり、メインチェーン上のRollupコントラクトにより検証されます。このSNARKは、所有者により署名され、アカウントの残高を更新し、古いMerkleルートから新しいMerkleルートに繋がる一連のトランザクションが存在することを証明します。その為、オペレーターが無効な状態や改ざんされた状態をコミットすることは不可能となります。

技術的な詳細はこちらこちらをご覧ください。
Matter LabsのERC-20トークン転送用ZK Rollupのライブデモで遊ぶこともできます。

Optimistic Rollup(OR)とは?

Optimistic Rollupでは、Rollupスマートコントラクトによって毎回チェックされることなく、新たな状態のルートがオペレーター(複数)により公開されます。代わりに、誰もがその状態遷移が正しいことを期待します。誤った状態遷移が公開された場合、他のオペレーターやユーザーは、無効なトランザクションを指摘し、該当ブロックを元に戻し、悪意のあるオペレーターをスラッシュする事ができます。

ORの考え方は、John Adlerが提唱したものであり、詳細はOptimistic Rollupに関するAMAセッションご覧いただけます。

相違と比較

柔軟性:汎用的な計算能力

BIG UPDATE 2021:このセクションは廃止されZK RollupはEVM互換として対応しました!

Optimistic Rollup
Optimistic Rollupは特殊な用途にも使えますが、Plasma Groupの最も重要なイノベーションはOVM(Optimistic Virtual Machine)です。OVMは、任意のスマートコントラクトロジックの実装を可能にします。イーサリアムで可能なことは、スマートコントラクトのコンポーザビリティも含めて、ほぼ全てOVMでも実現できます。EVMやEWASM、その他のVMをベースにすることが可能です。

OVMの利点は、EVMと一緒に使うことでSolidityでのコード記述がサポートされる事です。これにより既存のコードベースの大部分を、労力をあまりかけずにORに移植することができます。

OVMが既存のEVMのコードを直接再利用できれば理想的ですが、これは簡単な事ではありません。適切な実装には、取引データ(CALLDATA)フォーマットの変更や、不正証明の為のチャレンジ/レスポンス・プロトコルの洗練されたTruebit/Plasma Leapスタイルの実装が必要になります。これは、エッジケースを適切に処理する為にEVMからの乖離につながる可能性が高く、既存のコントラクトをOVMに適合させるための作業が必要になることを意味します。

もう1つの実装上の課題として、大規模なブロックに対する不正行為の証明にL1ブロックのガス制限で認められている量を超えるガスが必要になるという事実です。このような不正行為の証明には、複数のETHトランザクションに分割する必要があります。

ZK Rollup
ZK Rollupの既存の全ての実装は、これまでトークン転送やアトミックスワップなどの特殊な操作にのみ焦点を当てたものです。これにはいくつかの理由があります。

まず、異なるスマートコントラクトの実行を1つのブロックに集約するために必要となる、異なるゼロ知識証明(ZKP)の為の簡潔な再帰的証明構成の為の効率的な技術が存在しなかった事です。Codaで使用されている楕円曲線サイクル上のGroth16は適していましたが、長いフィールド上での計算を必要とする事から大規模な計算では全く効率的ではありませんでした。

第二に、短いフィールドがあったとしてもGroth16はスマートコントラクトごと、または新たなバージョンごとに、個別の信頼できるセットアップセレモニーを必要とします。これでは、明らかに非現実的です。

信頼できるセットアップを必要としない唯一の効率的なZKP技術は、FRIベースのSTARKsでした。しかし、検証者は限られたクラスの問題に対してのみ簡潔となります。STARKの検証者は、証明される計算文の各制約を少なくとも1回は実行しなければならず、これは異種のスマートコントラクトの集まりを反復することができないことを意味しています。これらの状況は、SNORKsの登場により変化し始めました。SNORKsは、異なる暗号プリミティブ(特に多項式コミットメントスキーム)に基づいた新世代のZKPです。SonicのSean Boweが提案したもので、2019年夏にはPLONKとMarlinがこれに続きました。これらに共通するのは、信頼できる設定が必要である事に変わりはないが、普遍的で更新可能なモノになるという事です。つまり、何種類ものプログラムに再利用する事が可能です。ただし、これらの証明システムで使用されるKate多項式コミットメントスキームでは、再帰の為に楕円曲線の効率的なサイクルが必要となり、現在は利用できません。 これが、Halo、SuperSonic、Fractalなどの最新の完全に簡潔で透過的な(信頼できるセットアップがない)証明システム、およびMatterLabsチームが現在取り組んでいるエキサイティングな構築物に興奮している理由です。

長くなりましたが、ZKP上で汎用のスマートコントラクトを構築する為の障壁は取り除かれました。ZK Rollupは、EVMと同じプログラミングモデル(シームレスなコンポーザビリティと相互運用性を含む)を完璧にサポートすることができます。最初のコントラクトには、専門のDSLが必要になると思われますが、最終的には、全ての既存のETH(そしてEWASMも)コントラクトが最小限の労力で効率的にポータブルになる事を期待しています。

スケーラビリティとトランザクションコスト

Optimistic Rollup
John Adler氏によると、EIP2028/イスタンブール以降は1回の転送で約4kのガスの発生が予測されており、これは約100TPSに相当します。

また、BLSの署名を集約した場合には約500TPSが想定できます。

もしEVMの互換性が崩れると、理論的にはスループットはZKRの限界まで伸びる可能性があります。

現実的なスループット上限(トークン転送):500TPS

今のところはこれでいいでしょう。

ZK Rollup
Matterテストネットの転送における、txあたりのパブリックデータのコストは現在16バイトで、EIP2028/イスタンブール以降は272になります。

さらに、証明の為の償却費がかかり、これは30万程度と見積もられます。

仮に100万ガスの証明コストという最悪のシナリオを想定した場合でも、推定される転送上限は2140TPS以上となります。

いくつかの議論において「ZKPは計算上のオーバーヘッドが大きいので、コストが高い」という意見を聞いたことがあります。実際には、検閲に強い非中央集権のために真のボトルネックとなっているガスのコストに比べれば、計算コストは無視できる程度のものです。また、この要素は時間とともに大きく下がると予想しています。

現実的なスループット上限(トークンの転送):2000TPS以上 — 使い古された言い回しですがVisa相当のスケールです。

実際に、多くのユースケースにおいてZK Rollupの方がはるかに大きな節約になります。というのも、状態遷移の差分を再構築するのに必要のない大きな部分を(ZKサーキット・ウィットネスに移動させる事により)公開データから省略する事ができるからです。ORではユーザーは常に完全なトランザクション入力を公開する必要がありますが、ZKでは、1)トランザクション入力から状態遷移に影響しないウィットネスを除いたもの、2)トランザクション出力のみ、のいずれかを柔軟に選択する事が可能です。この選択は、非常にエレガントに、複雑さを伴わずに実装することができます。

注目すべき例:

  • マルチシグ・ウォレット、アルゼンチンスタイルのアカウント抽象化を持つウォレットまたはDEXでは、ユーザーはコントラクトにより検証される署名を提出する必要があります。これらの署名は状態のデルタ更新には必要なく、公開データからは省略することができます
  • GnosisのDfusion dutch DEXのようなコントラクトでは、ストレージに直接影響を与えない大規模なデータセットの入力が必要ですが、計算結果の検証にのみ使用されます

ETH2.0以降

どのRollupも単一のシャードに存在するため、帯域幅が一般的に安くならない限り、CALLDATAのコスト(ひいてはRollupのトランザクションコスト)が大きく変化することは無いと想定されます。

メタトランザクション

どちらのRollupも、メタトランザクションとアカウントの抽象化をサポートするのに適しています。

セキュリティ

Optimistic Rollup
支払いチャネルとは異なり、Rollupの全ての資金は単一のスマートコントラクトにより保持されます。Rollupは最も有望なスケーリング手法であるため、多くのユーザーがRollupに移行し、この1つのコントラクトに多くの価値が集中すると考えられます。数千万から数億ドル(あるいは数十億ドル)相当の資産が危機に瀕しているため、Rollupコントラクトは著名なハッカーにとって非常に魅力的なハニーポットとなります。このような状況下では、攻撃のチャンスがあれば、どんなに複雑なものであっても攻撃が試みられるでしょう。

ORのセキュリティモデルは2つの仮定に基づいています:

  1. 全てのORトランザクションを実行し、無効な状態遷移が公開された場合に不正行為の証明を提出する少なくとも1/Nの誠実な参加者
  2. 基盤となるL1ネットワークの強い検閲耐性

N人に1人の正直な参加者
最初の部分に関しては、ロールアップの運営者だけが実際にトランザクションを監視し、実行すると考えるのが現実的でしょう。通常のユーザーには、インセンティブも高負荷時にトランザクションを処理する技術的な能力もありません。幸いなことに、不正なブロックの上にブロックを作成することはスラッシュ条件となるため、演算子は自然とお互いのブロックが正しいかどうかをチェックするインセンティブとなりえます。

十分に信頼できる参加者が集まればN人に1人の正直なオペレータがいるというのは合理的な仮定です。しかし、アクティブな参加者の数は限られているので、より合理的な攻撃としては、全てのオペレータのインフラを標的にする事(非常に難しいが、実現不可能ではない)、Devopsエンジニアを買収/脅迫して悪意のあるコードを密かにインストールさせる事、ロールアップソフトウェアなどのアップデート配布チャネルを標的にする事、そしてもちろんそれらの組み合わせたパターンが想定されます。これらの攻撃は難しく、積極的に防御する必要がありますが、例えば、Ethereumのマイナーを同様にに攻撃しようとするより遥かに現実的です。特に、ORへの攻撃が成功した場合、完了するまで気づかれないでしょう。

L1の強い検閲耐性
2つ目の仮定はより厄介なものです。実際、Ethereumの設計では、通常の検閲を防ぐのに非常に効果的な経済的メカニズムが提供されています。しかし、このメカニズムは、アンチメカニズムの存在下では機能しなくなります。攻撃者は、完全に自動化された賄賂メカニズムを作成して、マイナーによる51%攻撃を調整することができ、これにより、正直なマイナーがブロックに不正証明を含める事が困難になります。興味深い事に、この攻撃に参加しているマイナーの直接的なコストはゼロで、検閲の原因が明らかになった場合のコミュニティの反応から生じる社会的コストは計算に入れていません。この部分がまた厄介なのですが、このメカニズムは攻撃の参加者に最もらしい否認性をエレガントに提供しているからです。“攻撃をする多数派による信頼できるコミットメントを考えると、私が参加しなければ私のブロックは放棄されるので、利益のためではなくむしろ損失を回避するためにやった”という論理です。

読者の皆様にはこの攻撃パターンに関する議論Vitalik氏による51%検閲攻撃に関する分析を追っていただきたいと思います。

以下では、いくつかの興味深い洞察を紹介します。

この種の攻撃は、残念ながらPoWの下では非常に現実的なものです。それに参加した匿名のマイナーを罰する有効な方法はありません。

PoSへの移行後、社会的な合意が得られれば、コミュニティは検閲を行っているマイナーをステークのスラッシュにより罰する事が可能になります。結局、このような検閲攻撃は、ネットワーク全体に対する攻撃と考えられます。しかし、DAO-fork後には非常に物議を醸す議論が生じ、予測不可能な結果を生み出す事にもなるでしょう。Vitalikによる最近のコミュニティ投票では投票の63%が攻撃の程度にかかわらず、「ユーザーを救済するために不変的なブロックチェーンに介入する事」に厳しく反対しました。言うまでもなく、1人の検証者のステークを一掃することは、大多数のステークを一掃することはおろか、押し通すことも極めて困難です。

Update Nov 26 2019最近、共謀に関するさらなる研究が発表され、また、PoS環境での不正証明に対する新たな攻撃も発表され、PoSにおけるORの検閲攻撃リスクは、少なくともPoWと同レベルに高いことが実証されました。

この種の攻撃に対抗するためのより現実的な方法は、UASF(User-Activated Soft Fork)でコミュニティを迅速に動員し、マイナーに特定の取引を含めるよう強制することです。このシナリオは工学的にも社会的にも複雑であり、不正行為を証明するためのチャレンジ期間を最低でも1週間、より良いものであれば2週間という比較的長い期間に設定する必要があります。一方で、主要なDeFi事業者が事実上このようなフォークの結果を決定する立場にあり、大きな混乱を避けることが彼らの利益になる事を考慮すると、最善の策は攻撃者に黙って従う事になってしまうのかもしれません(その方がEthereumを最も長いチェーンに残すことができ、ソフトフォークの成功よりも議論を呼ぶことのない結果になるからです)

要約すると、不正証明検閲リスクは比較的低いですが、無視できません。不正証明の挑戦期間が1~2週間で、あまりお金が絡んでいない状態では、恐らくORは問題ないと思われます。この場合、オペレーターとマイナーの結託が、手間とリスクに見合うものにはならないからです。しかし、ロールアップの価値が高まるにつれ、潜在的ブラックスワンは、ますます心配のタネとして存在し続ける事なるでしょう。

ZKロールアップ
zk Rollupでは、全ての状態遷移が有効になる前にRollupスマートコントラクトによって検証されます。運用者が資金を盗んだり、Rollupの状態を破損したりすることは厳禁です。ZKRがL1の検閲耐性に依存しているのは、その有効性の為だけであり、セキュリティの為ではありません。ZKRを誰かが監視する必要はありません。ブロック検証後、運用者が協力を拒否したとしても、ユーザーの資金は常に最終的に回収できることが保証されています。

このように、ZKRは暗号の基本的な理想をより完全に具現化しています。信頼できるパーティを暗号に置き換えてレジリエンスを実現し、ゲーム理論的なインセンティブの調整を行っていますが、念のため、ZKRに特有の潜在的なリスクについても触れておきます。

信頼できるセットアップ
ZKロールアップで使用されるZKPが普遍的な信頼できるセットアップを必要とする場合、1-of-Nの正直な参加者という仮定になります。これは、参加者の数や質によって、許容できるリスクかどうかが決定します。しかし、安全なのです。だからこそ、最近の効率的で信頼性の高いSNARKの進歩、特にMatter Labsが現在取り組んでいる作品にはとても期待しています。

暗号技術
最新世代のSNARKは、Groth16よりも強固で実績のある複数の暗号プリミティブを使用しています。先ほどのMatter Labsの作品はFRIをベースにしているので、ポスト量子の安全性も十分に考えられます。しかし、完全に冷静になるためには、2つの緩和策を適用する必要があります:

  • RSAチャレンジのように、実際の製品版よりもはるかに低いセキュリティパラメータで、大きな報奨金を展開しなければなりません。もし実用的な攻撃が発見された場合、製品コードを破ることが可能になる前に、研究者によってチャレンジが破られることになります。
  • 全ての状態遷移は、2ファクタの保護層としての役割を果たすZKRの運用者のみが送信可能でなければなりません

レイテンシー

Optimistic Rollup
上記のセキュリティセクションで述べた問題のため、Optimistic Rollupは1–2週間の不正証明チャレンジウィンドウでのみ安全に行う事ができます。この期間が経過するまでは、どのような取引も最終的なものとはみなされません(内部ロールアップのtxもexitも含む)

残念ながら、エンドユーザーがトランザクションが最終的なものであるかどうかを確認するのに、最後のチャレンジ期間全体の全てのトランザクションを実行する以上に迅速な方法はありません。ユーザーは、純粋にゲーム理論上のブロック最終化の保証に頼ることはできないことに注意する事が重要です。なぜならば、単一のオペレータのノードのバグ(またはハッキング)がリバートにつながる可能性があるからです。

完成までの期間(PoWの場合):2週間
Time-to-finality(PoSの場合):1週間

ZK Rollup
現在、ZKPはかなりの計算量を必要とします。現時点では、1000 txのブロックに対して、通常のサーバーハードウェアで20分の証明生成時間が必要です。

現在進められているGPUプロバーの実装 (Matter LabsCoda)により、少なくとも10倍以上のスピードアップが期待できます。近い将来、特殊なハードウェアがより高い計算能力を持つようになるでしょう。

最終的には、ブロック確認が1分以下になることを期待しています。

Time-to-finality(現在):20分
Time-to-Finality(将来):1分未満。

Rollup内のトランザクションの迅速な確認
どちらのタイプのRollupでも、事業者は、トランザクションが約束のブロックに含まれなかった場合に減額される一定の保証金を預けることで、ユーザーに即時の取引確認書の発行が可能です。これにより経済的に最終的な保証が得られます。

この方法にはいくつかの限界があります。複製可能なトークンの譲渡には有効ですが、NFTや一般化されたコントラクトコールでは難しくなります。これはチェーン内の以前のトランザクションが戻された場合の金銭的価値を正確に定量化する事が困難であるからです。簡単な例として、ステーブルコインのオラクル価格ブロードキャストを最終的なものとして受け入れるためには、運営者の資金がどれだけ必要でしょうか?

高速引き出し
高速な引き出しは、高速なロールアップ内の確認に似ています。オペレーターは流動性プロバイダーと協力して、ロールアップ内でエグジット取引が確定するのを待たずに、迅速にユーザーにファンジブルトークンの引き出しを開始することができます。

その為には、確定までの時間に比例した大量の担保が必要となります。現実的な近未来のファイナリティ時間をORは1週間、JKRは5分と仮定すると、ORはJKRと同じ週の出金量をサポートするために2000倍の担保が必要となります。

プライバシー

Optimistic Rollup
Optimistic Rollupは、L2イーサリアムで利用可能なあらゆるプライバシー・ソリューション(ミキサーなど)をサポートします。OR自体はL2なので、そこに実装されたプライバシーソリューションはL3として生きることになります。これにより、プライバシーサービスが更に細分化され、結果として匿名セットが小さくなり、プライバシーの有用性が非常に低くなる可能性があります(デフォルトでトランザクションがシールドされていないzcashでも観察できます)

ZK Rollup
真のプライバシーを実現するためには、システムがデフォルトでそれをサポートする必要があります。技術的な観点から言えば、ZKRはある時点で、プロトコルレベルでのトークン転送の機密取引をデフォルトで簡単にサポートすることができますし、スマートコントラクトのパブリックとプライベートを区別することもできます。

一方で、完全な匿名取引をZcashスタイルで構築する(額だけでなく参加者も隠す)には、ZK RollupのストレージモデルをアカウントベースからUTXOベースに変更する必要がありますが、これはあまりにも多くの問題を引き起こすため、現時点では実現の可能性は低いと考えられます。

結論

Optimistic Rollupは現在、PoCの段階にあります。近いうちにプロダクショングレードの実装が行われることを期待しています。既存のコードを移植することが比較的容易であることがわかれば、プロジェクトは徐々に採用し、新しいインフラを構築し始めるでしょう。ウォレットにL2サポートが登場したり、オラクルがORにブロードキャストを開始したりするでしょう。

ZK Rollupは、特殊なアプリケーション(ERC-20トークンの転送などERC-20 token transfers)に関しては既に成熟の域に達していますが、完全に一般化されたスマートコントラクトに関しては、より緩やかな道を歩むことになるでしょう。最終的には、EVMやWASMベースのスマートコントラクトをZK Rollupに移植することが可能になりますが、現在の技術開発のペースでは、何年もかかるという事は想定されません。

ウォレットやオラクル、その他のスマートコントラクトコンポーネントのインフラを、両方のロールアップタイプで同様に変更する必要があります。これには膨大な作業が必要ですが、L2スケーリング技術に興味を持つプロジェクトが増えれば加速していくでしょう。Optimistic RollupはZK-Rollupよりも早く一般化されたEVMベースのスマートコントラクトをコミットしているため、L2を採用するコミュニティのモチベーションを大きく向上させることができるでしょう。

ユーザーやDappsにとって、あるRollupから別のロールアップへの移行は、ETHからL2への最初の移行よりも簡単です。数多く誕生するブリッジはこのプロセスをさらにスムーズにしてくれるでしょう。このように切り替えが容易であることから、個人的には、UXで大きな優位性を持つソリューションこそが、長期的には唯一の勝者となる可能性が高いと考えています。

結果がどうであれ、これは非常に重要でエキサイティングな進化となるでしょう。そして最終的な勝者は、いずれにしてもEthereumコミュニティである事に変わりはないでしょう!


zkSyncは、検証 ツールではなく 、数学に依存する

zkSyncは、セキュリティへの妥協なく イーサリアムのスケーラビリティを 解決していきます。楽しいゲームや貢献することなく何かが得られるようなイベントなどは一切ありませんが、DYORが得意で、トークンよりもプロジェクトに興味をお持ちであるという方は、下記リンクより各コンテンツをご覧になり、フォローすることをお勧めします。

WebsiteTwitterDiscordTelegramGitter|Medium(Matter Labs)

日本版 TwitterMedium|Telegram