LoginSignup
13
3

More than 1 year has passed since last update.

詳解Optimism

Last updated at Posted at 2021-12-01

こんにちはCryptoGames Inc.のyamapyblackです。
最近FrontierDAOというDAOを立ち上げました。フルオンチェーンゲーム作ってます。
https://medium.com/@yamapyblack/full-on-chained-game-by-frontierdao-b8e50549811d

今回はLayer2のOptimisticRollupの「Optimism」を取り上げます。
Optimismのexplorerやコントラクトを実際に見ながら、Rollupの仕組みを見ていきたいと思います。
※ざっくりLayer2に関する知識がある方を対象としています

Optimistic Ethereum Explorer

OptimismのExplorerはこちらです。
https://optimistic.etherscan.io/

パッと見た感じ、L1のEtherscanと変わらんやん、と思いかもしれませんが、結構カスタマイズされています。

まず一番左から。
image.png

ブロックナンバーは?
この「Ba」ってやつがブロックナンバーに見えるんですが、実は違います。クリックすると「Batch Index」であり、ブロックナンバーではないんですね。

ブロックナンバーみたいなもんじゃん?と思うかもしれませんが、間隔が一定ではありません
画像を見ると、9分、3分、9分、3分となっており、一定ではないようです。

Optimismは決まった時間で生成されるBlockはなく、処理したトランザクションをまとめて送っているだけなので、こうなってます。

トランザクションのところをクリックすると、以下画面に飛びます。
image.png

Indexがカウントアップしてますね。シーケンサによって作られていることがわかります。

続いて、Hashのところをクリックしてみましょう。Rollup先のL1のトランザクションが見れます

image.png

※L1のEtherscanに飛んでます。

なるほどー、L2の複数トランザクションをまとめてL1にRollupしている。それをExplorerから見ることができるんですね。

Rollup先のコントラクトは?

Rollupのトランザクションを見ればわかるのですが、「CanonicalTransactionChain」というコントラクトの「appendSequencerBatch」を実行しています。

githubはこれだと思います。
https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/rollup/CanonicalTransactionChain.sol#L276

引数はないように見えますが、calldataの中身を分解して、実際のデータは「ChainStorageContainer」に入れています。

internalトランザクション
https://etherscan.io/tx/0x2a6914c453dd775eca6b50391795db895746a38e2e5c58abc433827aa217dda8/advanced#internal

中身あまり見てないですが、txのMarkleRootと、tx数などを入れているようです。

State

ここまでトランザクションのRollupを見てきましたが、OptimisticRollupでは、txとstateをL1に書き込んでいます。Stateのほうも見てみましょう。

StateCommitmentChain」というコントラクトのappendStateBatchを実行しています。

こちらはbyte配列でいれています。
実際のデータは「ChainStorageContainer」に入れています。txを保存しているコントラクトと同じコントラクトですが、コントラクトは2個存在し、異なるアドレスとなっています。
以下にoptimsimのコントラクトアドレス一覧があります。

チャレンジはどうなってるの?

Optimismのドキュメントを読むと、BondManagerにシーケンサのETHが担保としてプールしていて、チャレンジ成功するとそのETHがスラッシュされると記載があります。

BondManagerはこちら
https://etherscan.io/address/0xcd626E1328b41fCF24737F137BcD4CE0c32bc8d1#code

うーん、みた感じプールされてない?ですかね。。。

image.png

isCollateralizedというfunctionがあったので、シーケンサのアドレス「0x473300df21D047806A082244b417f96b32f13A33」を入れてみたところ、trueとなりました。
担保していると言い張っているようです。

ここがtrueじゃないとrollUpのtxを起こせないので、まあ当然といえば当然です。が、実際は担保していないように見えます。
Optimismが「Proofs disabled」になっているのは、こーゆーことなんでしょうかね。

まとめ

optimismがtxとstateをきちんとRollupしていることがわかりました。
explorerを見れば、L2のどのtxがL1のRollupに対応するか簡単にわかっていいですね。
ただ、チャレンジのしくみはまだ整っていないようなので、そこが早くLIVEになることが期待されます!

13
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
3