コンテンツへスキップ
0%

オプティミスティックrollupsの仕組み(完全ガイド)

Alchemy team headshot

執筆者 Alchemy

2023年8月9日 公開読了時間 2 分

かつては傍流のアイデアと見なされていたEthereum――世界初のスマートコントラクトプラットフォーム――は、この数年で大きく成長し、現在では分散型アプリケーションが約3,000、スマートコントラクトが4,000以上、1日あたりのトランザクション数が90,000を超えるまでになっている。

しかし、Ethereum上の活動の増加には代償があった。スケーラビリティだ。

ブロックサイズとブロックタイムの制限は、分散性とセキュリティを維持する上で必要なものだが、Ethereumがスケールしてより多くのユーザーを受け入れる能力を制限する。その結果として生じるのが、多くのEthereumユーザーにとってなじみ深い一連の問題――すなわち、高いガス代と遅いトランザクションだ。

Ethereumを安全にスケールするには、信頼の前提を新たに持ち込むことなく、ネットワークのスループットとレイテンシを向上させる必要がある。これこそがLayer 2 rollupsやサイドチェーンといった複数のスケーリングソリューションが目指しているものだ。

本記事では、Ethereumをより安く速く利用可能にするために設計されたL2 rollupソリューションの一種、Optimistic Rollups(ORU)について解説する。

Optimistic rollupsとは何か

Optimistic rollupsとは、計算とデータストレージをオフチェーンに移すことで、Ethereumのベースレイヤーのスループットとレイテンシを改善するlayer 2(L2)構成のことである。 Optimistic rollupはEthereum Mainnetの外でトランザクションを処理することで、ベースレイヤーの混雑を軽減し、スケーラビリティを向上させる。

「optimistic(楽観的)」という呼び名は、Optimistic rollupsの特徴的な性質を示している。それは、オンチェーンに公開する取引情報を最小限に抑え、すべてのトランザクションを自動的に有効なものとみなす、という点だ。「rollup」と呼ばれるのは、何千ものトランザクションを集約(roll up)してバッチにまとめ、それをMainnetに提出するためである。

Optimistic rollupのアーキテクチャ

1. Optimistic rollupへの参加

Optimistic rollupsは、L2チェーンとL1ブロックチェーン(Ethereum)間のやり取りを管理するために、Ethereum上にデプロイされたスマートコントラクトを使用する。rollupのユーザーは、rollup上で同等の額をアンロックしてもらう前に、これらのスマートコントラクトの一つに資金をデポジットする必要がある。

_sequencer_と呼ばれる第三者が、ユーザーによるrollupコントラクトへのデポジットの証明を受け取った後、そのユーザーにrollup上の資金をクレジットする。その後ユーザーは、残高を使い切るまでrollup上で自由に取引できるようになる。

Optimistic rollupのアーキテクチャ
Source

2. Optimistic rollupの利用

rollup上では、ユーザーがトランザクションに署名し、それをsequencerに提出する。sequencerはトランザクションの順序付けと実行を担う。sequencerはトランザクションを検証し、データを圧縮してブロックにまとめ、そのバッチを単一のトランザクションとしてEthereumに提出する。

ここでもrollupコントラクトが関わってくる。オンチェーンのコントラクトは、rollupの状態のMerkle rootである「state root」を保存する。これをさらに詳しく見ていこう。

State

_State_とは、特定の時点におけるネットワークの利用可能な情報を指す概念である。「rollupのstate」はL2チェーンの現在の状態を表し、既存のアカウント、残高、スマートコントラクトなどの詳細を特定する。

rollup上で実行されるすべてのトランザクションは、そのstateに変化を引き起こす――例えば、Aliceが5 ETHをBobに送ると、Aliceの残高は減少する。したがって、トランザクションは_state transitions(状態遷移)_と呼ばれる。トランザクションを実行することで、rollupが古いstateから新しいstateへと移行するためだ。

Merkle root

Merkle rootは、暗号学的ハッシュを使って大量の情報をエンコードすることを可能にする。Merkle rootはまた、あるデータ(例えばトランザクション)がより大きなデータセット(例えばトランザクションのバッチ)の一部であるかどうかを確認しやすくする。

したがって、rollupコントラクトに保存されている「state root」は、異なる時点におけるrollupの状態を検証する暗号学的コミットメントである。sequencerがトランザクションのバッチをrollupコントラクトに提出する際には、pre-state rootと_post_-state rootの両方を含める必要がある。

  1. Pre-state root:提出されたトランザクションが実行される前のrollupの状態を表す、_古い_state root。

  2. Post-state root:提出されたトランザクションが実行された後のrollupの状態を表す、新しいstate root。

sequencerがバッチを提出すると、コントラクトは_pre_-state rootが既存のstate rootと一致するかを検証する。両者が一致すれば、コントラクトは古いstate rootを破棄し、sequencerが提案した新しいstate rootを保存する。

これは、post-state rootで参照されているトランザクションが確定し、取り消せなくなったことを意味する。なお、sequencerはバッチ化されたトランザクションの有効性の証明を提出する必要はない。

証明が必要になるのは、verifierがfraud proofを使って不正なrollupトランザクションを報告した場合のみである。fraud proofの仕組みについては、本記事の後の節で説明する。

Optimistic rollupでstate rootを生成するMerkle treeの図
Source

3. Optimistic rollupからの退出

Alice(ユーザー)がこのrollupにうんざりして、Ethereum Mainnet上のrollupコントラクトから資金を引き出したいとしよう。そのためには、彼女のトランザクションがrollupのstate rootに含まれていることを証明するMerkle proofが必要になる――そう、お察しの通りだ。

Merkle proofを構築するには、初期のトランザクションデータにアクセスできる必要があり、これはsequencerが提供することになっている。すべてがうまくいけば、Aliceはそのデータを取得し、Merkle proofを作成して、rollupコントラクトに提出する。

しかし、トランザクションデータの提供をsequencerに依存することは、信頼の前提を持ち込むことになる。sequencerが不正な行動に出て、Aliceのトークンを自分のウォレットに移すトランザクションを実行し、彼女が資金の所有権を証明するために必要なデータを与えないという事態も起こり得る。sequencerがオフラインになるといった、それほど悪意のないケースであっても、Optimistic rollupsの分散性とセキュリティを脅かす可能性がある。

Optimistic rollupsは、sequencerにEthereumのメイン実行レイヤー上へトランザクションデータ全体を投稿させることでこの問題を解決している。この情報はEthereum Mainnet上に「calldata」として公開される。これは、Ethereum Virtual Machineのメモリやストレージに保存するよりも安価であり(rollupの手数料をさらに抑えることにつながる)。

これにより、以下の二つの目的が達成される。

  1. あるsequencerがオフラインになった場合、別のsequencerがそのトランザクションデータを使ってrollupのstateを再構築し、ブロックの生成を続行できる。

  2. Alice(ユーザー)自身がそのデータをダウンロードし、Merkle proofの作成に利用できる。

オンチェーンのデータ可用性を利用することが、Optimistic rollupsを他のスケーリングソリューションよりもはるかに安全なものにしている要因である。トランザクションデータがEthereum上に保存されている限り、Ethereumが稼働し続ける限りにおいて、ユーザーの資金は常に安全である。

こうしていずれかの方法で、Aliceは資金の所有権を証明するMerkle proofを作成することができる。ただし、資金を引き出す前に_dispute period(異議申立期間)_が経過するのを待つ必要がある。Optimistic rollupsでは、この異議申立期間は、引き出しリクエストの提出から実際に資金を受け取るまでの1〜2週間の間隔である。

この期間中、誰でも特定のトランザクション、またはトランザクションのバッチが無効であると主張するfraud proofを公開できる。fraud proofが成功すると、sequencerのボンド(誠実な振る舞いの保証として提供されたもの)が没収され、Aliceの「資金」は元に戻され、「内部告発者」(_verifier_と呼ばれる)はその功績に対して報酬を受け取る。

Aliceの引き出しリクエストに異議が申し立てられなければ、彼女は1〜2週間後にrollupコントラクトから資金を受け取ることができる。

Fraud proofとは何か

Fraud proofとは、あるstate transition(すなわちトランザクション)が無効であり、その結果としてバッチ全体が取り消されるべきだという主張である。複雑な仕組みではあるが、fraud proofは前述のstate rootに大きく依存して機能する。

このプロセスは、ある当事者(verifier)が、L1チェーン上のstate rootで参照されているrollupのstateと、rollupチェーンの実際のstateとの間の不一致を検知したときに始まる。

例えば、Aliceが一度も送金を行っていないにもかかわらず、sequencerがAliceの残高を5 ETH減らし、Bobの残高を同額増やすpost-state rootを提出するケースが挙げられる。

verifierはこのstate transitionに「異議を申し立て」、それが無効であることを証明できる。これが可能なのは、verifierがすべてのトランザクションのデータをダウンロードし、それを自身のrollup stateのコピーに適用して、post-state rootを計算しているからである。

sequencerのpost-state rootがverifierのものと一致すれば、何も起こらない。しかし、sequencerのpost-state rootが異なる場合――おそらくAliceのケースで説明したような不正なトランザクションが含まれているため――verifierはfraud proofの計算をトリガーできる。

Optimistic rollupトランザクションに異議を申し立てるfraud proofプロセスの図
Source: https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/#disputing-transactions

Fraud proofはどのように機能するのか

以下は、fraud proofプロセスの大まかな説明である。

  1. verifierが異議申し立てを開始し、以下の情報を提供する。

    a. 争われているstate transition

    b. Pre-state root

    c. Rollupのstateデータ

    d. verifier自身が計算したpost-state root

    1. 挑戦者が提供した情報などを用いて、L1チェーン上のサンドボックス環境でそのトランザクションが再実行される。

この「サンドボックス環境」は、Ethereum上で動作するスマートコントラクトであり、仮想マシン(VM)としても機能する。

  1. その計算の結果が挑戦者のpost-state rootと一致した場合、sequencerが確かに無効なstate transitionを含むバッチを公開していたことが分かる。

無効なバッチ(およびそれ以降に公開されたバッチ)は取り消され、rollupは以前の状態に戻される。

なお、実際のfraud proofの仕組みは、ここで説明した以上に複雑であることに注意されたい。

こちらのrollupにおけるfraud proofについての記事も、追加の理解に役立つかもしれない。

Fraud proofとvalidity proofの違いは何か

Fraud proofがvalidity proofと異なる主な点は、それがオンチェーンで計算されることである。Validity proof(zero-knowledge proofとも呼ばれる)はオフチェーン(すなわちrollup上)で計算され、Ethereum上で検証される。

zero-knowledge proofの種類を比較した記事で説明されているように、SNARKやSTARKといったvalidity proofは、オフチェーンで実行されたトランザクションの有効性を証明するために使用される。これがzero-knowledge rollupの基盤となっている。

ZK-rollupでは、トランザクションデータを入力として、バッチごとにvalidity proofが生成される。このvalidity proofはバッチとともにEthereum Mainnetに提出され、オンチェーンのコントラクトによって検証される。これにより、(Optimistic rollupsのように)異議申し立てを待つことなく、トランザクションを即座に有効と宣言できる。

Fraud proofとZK proofのもう一つの違いは、後者の方がオンチェーンでの検証が幾分容易であるという点だ。スマートコントラクトがすべきことは、validity proofを実行してバッチ化されたトランザクションの有効性を判定することだけである。一方、fraud proofの場合は、fraud proofの計算を完了させる前に、state transition全体を再実行する必要がある。

Optimistic rollupsとZK rollupsの違いは何か

Optimistic rollupsとZK rollupsの主な違いは、前者がスマートコントラクトをサポートしていること、引き出しに遅延があること、暗号経済学的インセンティブに依存していること、そしてセキュリティ特性にある。

以下はOptimistic rollupsとZK rollupsの詳細な比較である。

Features
Optimistic Rollups
ZK Rollups
Proof
fraud proofを使ってトランザクションの有効性を証明する。
validity(zero-knowledge)proofを使ってトランザクションの有効性を証明する。
Capital Efficieny
資金を引き出す前に1週間の遅延(dispute period)を待つ必要がある。
validity proofがオフチェーンのトランザクションの真正性を否定できない証拠として機能するため、ユーザーは即座に資金を引き出せる。
Data Compression
トランザクションの全データをcalldataとしてEthereum Mainnetに公開するため、rollupのコストが増加する。
ZK-SNARKとZK-STARKがすでにrollup stateの正確性を保証しているため、Ethereum上にトランザクションデータを公開する必要がない。
EVM Compatibility
Ethereum Virtual Machine(EVM)のシミュレーションを使用しており、任意のロジックを実行してスマートコントラクトをサポートできる。
EVM互換のZK-rollupがいくつか登場してはいるものの、EVMの計算を広くはサポートしていない。
Rollup Costs
Ethereum上に公開するデータが最小限であり、特別な場合を除いてトランザクションの証明を投稿する必要がないため、コストが抑えられる。
すべてのトランザクションブロックに対して証明を生成・検証するコストがかかるため、オーバーヘッドが大きい。ZK proofの生成には専用の高価なハードウェアが必要であり、オンチェーンでの検証コストも高い。
Trust Assumptions
trusted setupを必要としない。
動作にtrusted setupを必要とする。
Liveness Requirements
不正を検知するために、実際のrollup stateとstate rootで参照されているstateを監視するverifierが必要となる。
ユーザーは不正を検知するためにL2チェーンを監視する誰かを必要としない。
Security Properties
rollupのセキュリティをユーザーに保証するために、暗号経済学的インセンティブに依存している。
セキュリティを暗号学的な保証に依存している。

主要なOptimistic rollupブロックチェーンは何か

Total Value Locked(TVL)で見た主要なOptimistic rollupブロックチェーンは、Arbitrum、Optimism、Metis Andromeda、Boba Networkである。 以下に、それぞれのOptimistic rollup(ORU)の概要を示す。

1. Arbitrum

Arbitrumは、計算とデータストレージをオフチェーンに移すことで、Ethereumのユーザーコストとトランザクション速度を改善するために設計されたOptimistic rollupプロジェクトである。Arbitrum Virtual Machine(AVM)はEVM互換のスマートコントラクトをサポートしており、ユーザーは普段使っているアプリを、Ethereumのコストのごく一部で利用できる。

2. Optimism

Optimismは、Ethereumのセキュリティ保証を活用したEVM互換のOptimistic rollupチェーンである。Optimismは、Optimistic rollup(OR)構成を用いて何千ものオフチェーントランザクションをまとめ、ユーザーのガス代を削減する。

3. Metis Andromeda

Metis Andromedaは、Optimistic rollupsをベースにした、スケーラブルで低コストかつ機能的なL2プロトコルである。Metis Andromedaの独自のスタックは、アプリ、DAO、DeFiなど、さまざまなユースケースに適用できる。

4. Boba Network

Boba Networkは、Optimistic rollup設計によってスループットをスケールするEthereumのL2である。Boba NetworkはLiquidity Provider(LP)サービスを提供しており、これにより、7日間の異議申し立て期間が経過するのを待つことなく、ユーザーは即座に資金を引き出すことができる。

トークンを持つOptimisticブロックチェーンやプロジェクトは何か

以下のOptimistic rollupプロジェクトはトークンを持っている。

  • Optimism(OP)
  • Boba Network(BOBA)
  • Metis Andromeda(METIS)

Optimistic rollupツール

Optimistic rollupsは、アプリをスケールさせ、より低コストかつ効率的にスマートコントラクトとやり取りするために有用なソリューションである。ただし、Optimistic rollupsを簡単かつ安全に利用するためには、まずさまざまなツールが必要になる。

以下は、開発者とエンドユーザー向けのさまざまなOptimistic rollupツールである。

Optimisticレイヤー2ブロックチェーンへのクロスチェーンブリッジ

Optimistic rollupsはEthereumのベースレイヤー上に構築されているが、両チェーン上の資産はネイティブには互換性がない。しかし、クロスチェーンブリッジを使えば、Ethereumのような L1チェーンからOptimistic rollupへ資金を移動させることができる。

以下は、L1チェーンと各種L2 rollupを接続するブリッジの例である。

Arbitrumとの間のブリッジ

  • Arbitrum Token Bridge
  • cBridge
  • Hop Protocol
  • Synapse Protocol
  • Anyway Bridge
  • DeGate Bridge

Optimismとの間のブリッジ

  • Connext
  • Celer Bridge
  • Li.Fi
  • Optimism Bridge
  • Poly Network
  • Via Protocol
  • Synapse Protocol
  • Across

Metis Andromedaとの間のブリッジ

  • Metis Bridge
  • cBridge
  • AnySwap
  • Synapse Protocol

Boba Networkとの間のブリッジ

  • Across
  • Boba Standard Token Bridge/Fast Token Bridge
  • cBridge
  • Synapse Protocol

Optimistic rollupのテストネット

テストネットとは、対応するメインネットワーク(Mainnet)の挙動をシミュレートする公開ブロックチェーンネットワークである。実際のブロックチェーンとは異なり、テストネットでは実際の資金を使用しないため、開発者は最小限のリスクでスマートコントラクトをデプロイ・テストできる。

いくつかのOptimistic rollupには、RinkebyのようなEthereumテストネット版があり、これらをdAppのテストに利用できる。

1. Optimism Ethereum Kovan Testnet

Optimistic Ethereum Kovan Testnetは、テスト目的で設計されたEVM互換のOptimistic rollupチェーンである。Ethereum Mainnet上のOptimismと同様に、Optimistic Ethereum Kovan Testnetは、L1で得られるよりも速く安価なトランザクションを目的として設計されている。

2. Arbitrum Rinkeby Testnet

Arbitrumの開発元であるOffchain Labsは、Rinkebyネットワーク上にEVM同等のrollupチェーンをローンチした。Arbitrum Rinkeby testnetを使えば、開発者はソフトウェアをダウンロードすることなく、Arbitrum rollup上にSolidityのスマートコントラクトをデプロイできる。また、ブロックチェーンエクスプローラーと、ERC-20/ERC-721トークンを移動させるためのブリッジも備えている。

3. Boba Network Rinkeby Testnet

Boba Networkも、Rinkeby testnet上にEVM互換のrollupチェーンを持つプロジェクトの一つである。AlchemyのRinkeby faucetを使ってテストネットのETHをリクエストし、スマートコントラクトの作成やテストに利用できる。

まとめ

Optimistic rollupsは、layer 2アーキテクチャを用いてEthereumをスケールさせる取り組みの主要な一部である。Optimistic rollupsは、Ethereumのセキュリティと分散性を土台としながら、より安いガス代と速いトランザクションを実現する。

Alchemyは、Optimistic rollupsに基づく二つの主要なプロジェクト、ArbitrumとOptimismをサポートしている。今すぐ無料でサインアップして、Ethereumベースのoptimistic rollupsでdAppをどのようにスケールできるか確認してほしい。

よくある質問

Optimistic rollupsとは何か

Optimistic rollupsは、計算とデータストレージをオフチェーンに移し、異議が申し立てられない限りすべてのトランザクションを有効とみなすことで、Ethereumのスループットとレイテンシを改善するlayer 2スケーリングソリューションである。

Optimistic rollupへの資金のデポジット方法は

ユーザーはEthereum上にデプロイされたスマートコントラクトに資金をデポジットし、sequencerがそのデポジットの証明を受け取った後、rollup上で同等の額をクレジットする。

Optimistic rollupsにおけるchallenge periodとは何か

Challenge periodとは、引き出しリクエストの提出後の1〜2週間の期間であり、この間、誰でも不正なトランザクションに異議を申し立てるfraud proofを公開することができ、それが完了して初めて資金を引き出せる。

Sequencerはどのような役割を果たすのか

Sequencerはトランザクションの順序付けと実行を行い、トランザクションデータをブロックに圧縮し、バッチを単一のトランザクションとしてEthereumに提出し、デポジット後にユーザーへ資金をクレジットする。

Optimistic rollupsはZK rollupsとどう異なるのか

Optimistic rollupsはトランザクションを有効とみなし、異議が申し立てられた場合にのみfraud proofを使用するのに対し、ZK rollupsはすべてのバッチに対してvalidity proofを使用し、待機期間なしに即座の引き出しを可能にする。

Fraud proofとは何か

Fraud proofとは、あるstate transitionが無効であるという主張であり、verifierがrollupのstateの不一致を検知し、不正なバッチを取り消すための証拠を提出することでトリガーされる。

なぜOptimistic rollupsには引き出しの遅延があるのか

1〜2週間の引き出し遅延は、rollupコントラクトから資金が解放される前に、verifierが不正なトランザクションを検知して異議を申し立てるための時間を確保するためのものである。

主要なOptimistic rollupブロックチェーンは何か

Total Value Lockedで見た主要なOptimistic rollupブロックチェーンは、Arbitrum、Optimism、Metis Andromeda、Boba Networkである。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。