💿

Optimism公式Docsの要点をまとめる

2022/09/26に公開

はじめに

Optimismを雰囲気でやってたので公式Docをメモ程度にまとめました

まとめ

  • Optimismのtxなどのブロックチェーンを構成するデータをEthereum上のコントラクトに保存している
  • Optimismのノードはそのコントラクトから情報を取得し、コントラクトのEventと同期しながらローカルで動いている
  • Optimismのtxは、sequencerに渡され順番に処理される
  • 現在は、Sequencerと呼ばれるOPLabsが提供するノードのみが動いている

所感

  • Ethereum2.0ではLayer2はexecution layerとなり、改めてOptimismはきちんとLayer2なんだなと改めて実感できました
    • 「ConsensusはEthereum、Storageはコントラクトで管理、Exusecutionはsequencer」
  • ただ、現状の仕組みだとnodeが分散したときにスケールしそうにないため、execution layerといいつつも少し気持ち悪さを感じてます

How Optimism Works

Design philosophy

4つのデザインフィロソフィーを置いている

  • Simplicity
    • シンプルにすることで移行コストをさげ、シンプルだからこそセキュリティーも上がる
  • Pragmatism
    • 理論的な完成よりも利用者や開発者の必要性に重きを置く
  • Sustainability
    • スケーラビリティーへのショートカットではなく、長期的な持続可能性
    • At the end of the day, a scalable system means nothing without the ecosystem that sustains it.
      • いい言葉!
  • Optimism

Rollup Protocol

参考:https://community.optimism.io/docs/protocol/2-rollup-protocol/

  • Block storage
  • Block production
    • “sequencer”によって管理されている
      • tx confirmation, state update
      • L2のblockの構成と実行
      • L1へのtx提出
    • sequencerにはmempoolはなく、txを順次検証(十分なガス代があるか)し、ローカルのブロックに書き込んでいる
      • ある程度溜まったら一気に書き込み
        • どのくらいためてる?
    • sequncerは現在、OP Labs PBCのみ
    • sequencerをスキップしてL1に書き込むことも可能
  • Block execution
    • Ethereum nodeではp2pでデータのダウンロードが行われるが、Optimism nodeの場合はCanonicalTransactionChainからダウンロードされる
    • Optimism nodeの2つの役割
      • DTL (Data Transport Layer)
        • ≒ Ethereum Data indexer
        • CanonicalTransactionChainからOptimism Blockchainを構築する
          • CanonicalTransactionChainのEventでOptimismのblockを同期
      • Optimism client software
        • RPCとほぼ同義
        • DLTの監視

Bridging assets between layers

  • Ethereum to Optimism
    • CanonicalTransactionChainにてblockを生成するだけ
  • Optimism to Ethereum
    • Ethereum上のStateCommitmentChainにOptimismのコミットメントが1時間に1~2回発行される
    • このコミットからOptimismのMerkleTreeを証明でき、任意のブロック高での特定のOptimismでのコントラクトのデータの検証可能なステートメントを作成できる

Contract Overview

参考:https://community.optimism.io/docs/protocol/protocol-2.0

System Overview

  • Chain
    • Layer1にあるコントラクト群
    • Layer2のtx orderとL2-state rootsのに紐ずくコミットメントを管理している
  • Verification
    • 上記Chainへの書き込みが正しいかを検証する
    • 書き込みが正しくないと証明されたらSequencerのbondから報酬を獲得できる
    • まだ詳細は開発中
  • Bridge
    • L1-L2間のcross domain messageを行うコントラクト
  • Predeploys
    • genesis stateとして利用可能なすでにデプロイされてるコントラクト。0x42から始まる
    • Ethereumのprecompilesに近いけど、solidityで書かれてる

Chain

Verification

  • BondManagr
    • Bondの管理
    • faud proofの検証にかかったガス代の計算を行い、ガス代も報酬として渡す

Bridge

  • L1CrossDomainMessenger
  • L2CrossDomainMessenger

The Standard Bridge

cros domain messagingの一つのもうしわとしてERC20やETHのLayer間transferがある

L1→L2の場合、L1のコントラクトにトークンをデポジットして、L2でデポジットと同額をmintする

Predeploy Contract

@eth-optimism/contractsのパッケージでpredeployを管理できる

  • OVM_L1MessageSender
    • L1→L2のmessageの際に、L1でのsender addressを返す
    • solidityではないみたい
  • OVM_L2ToL1MessagePasser
    • sentMessagesのmappingにtxhashを格納しL2のメッセージをL1で証明する際に使う
  • OVM_SequencerFeeVault

The Cannonical Transaction Chain (CTC) Format

Cannonical Transaction Chainに書き込むフォーマット

Batch Submitter

Discussion