💻

Arbitrum Orbitを使ってLayer3の独自チェーンを作る

2024/07/13に公開

はじめに

私がブロックチェーン業界に入った2018年ごろ、独自チェーンは人気だった。
特に大企業はパブリックチェーン上にアプリケーションを作りたがらず、Hyperledger Fabricなどを使って、自分たちのプライベートチェーンやコンソーシアムチェーンを運営する方法をとっていた。

しかし、これではブロックチェーンの利点をほんの一部しか享受できない。
パブリックにデータの共有もできないし、みんなで築く堅牢なセキュリティも利用できない。
ブロックチェーンはパブリックであってこそ本来の価値が発揮される。

2024年現在、再び独自チェーンの波が来ている。
しかし今回の独自チェーンは、プライベートでもコンソーシアムでもない。
イーサリアムなどの大きなパブリックチェーンに接続する形で作られる「Layer2」だ。

Layer2として作られた独自チェーンはパブリックなチェーンであり、閉じていない。
自分たちのアプリケーションのためにカスタマイズできる柔軟性を持ちつつ、パブリックなチェーンのセキュリティやエコシステムを利用できる。

これが、私が以前独自チェーンに興味がなく、今独自チェーンに興味がある理由である。

目的

Layer2の独自チェーンが簡単に作成できることを伝える

本文

Arbitrum Orbitを使った独自チェーンの作り方をStep by Stepで説明

Arbitrum Orbitのページを開く

https://orbit.arbitrum.io/

Step by Step ガイド に進む

Launch on testnet からガイドに進む

Arbitrum SepoliaのETHを入手

Alchemyのfaucetなどから入手する。
足りない場合は、通常のSepoliaのETHをbridgeしたりするのがおすすめ。

チェーンのタイプを選ぶ

とりあえずRollupを選んでおくと良い。

a. Rollup

Layer2上のトランザクションの検証をLayer1(Ethereum)で行う。いわゆるRollup。
Arbitrum OrbitはLayer3の作成もできるので、その場合はLayer2(Arbitrum One)でトランザクションの検証を行う。
Arbiturm Oneはこのモードで作られている。

b. AnyTrust

データの検証(というかData Availability)の役割をAnyTrustが担う。
AnyTrustはArbitrumが運用するDA用の仕組み。Rollupに比べてセキュリティが落ちる一方で、ガス代が安くなる。
Arbiturm Novaはこのモードで作られている。

チェーンの設定をしてデプロイ

以下の項目が設定可能。

  • CHAIN ID

    • 開発ネットワークでは気にしなくてよいが、本番環境ではチェーンを一意に識別するための整数IDが必要。
  • CHAIN NAME

    • 他のOrbitチェーンと区別するための名前。ユーザーや開発者が認識しやすい名前を選ぶ。
  • CHALLENGE PERIOD BLOCKS

    • チェーンの状態を異議申し立てできる期間(ブロック数)。長い期間は不正状態を検出しやすいが、ユーザーの資産引き出し待ち時間も長くなる。
  • STAKE TOKEN

    • バリデータがステークするためのトークン。Arbitrum Sepolia上のコントラクトアドレスで指定。ETHの場合は「ETH」。
  • BASE STAKE

    • バリデータがステークするトークン量。低いと参加障壁が低くなるが攻撃に弱く、高いと参加障壁が高くなるが攻撃への耐性が増す。
  • OWNER

    • Orbitチェーンのbase contractをデプロイ、更新する責任を持つアカウントアドレス。デプロイ時にはEOAを設定する必要がある。
  • GAS TOKEN

    • ガスの支払いに使用するトークン。AnyTrustでのみ設定可能。ETH以外のカスタムトークンを使用する場合、そのトークンは親チェーン上にデプロイされている必要がある。
  • VALIDATORS

    • バリデータの数と各バリデータのアドレス。
  • BATCH POSTER

    • トランザクションのバッチをbase chainにpostする責任を持つアドレス。自動生成され、秘密鍵はJSON設定ファイルに保存される。

デプロイボタンを押すと、このチェーンのためのBase ContractがArbitrum One上にデプロイされる。

作成されたconfigファイルのダウンロード


※ 十分なETHがなかったので、別のタイミングでデプロイしたときのスクショを貼っています。

Orbit Chainをローカルでデプロイ・起動

この際、parent chain上のbatch posterやvalidatorにETHを送ってあげて設定を完了させるので、十分なETHがないと失敗する。

> setup
> ts-node scripts/setup.ts

Funding batch-poster accounts on parent chain with 0.3 ETH
Transaction hash on parent chain: 0xecec03b5e0ce83725575c07bf0cfdb390f909e2a16bede88a6337ad18c49e206
Transaction was mined in block 41136643 on parent chain
Funding staker accounts on parent chain with 0.3 ETH
Transaction hash on parent chain: 0x25cb8df37381116996ed61dd136d6bf355a833c4d73e14096afd49ca0c239095
Transaction was mined in block 41136659 on parent chain
Running Orbit Chain Native token deposit to Deposit ETH or native ERC20 token from parent chain to your account on Orbit chain ... 💰💰💰💰💰💰
Transaction hash on parent chain:  0x118f8d483234bd44341f9373f02929825dcaae5876ad7115d51f424e955b23f6
0.4 ETHs are deposited to your account
Balance not changed yet. Waiting for another 30 seconds ⏰⏰⏰⏰⏰⏰
Balance not changed yet. Waiting for another 30 seconds ⏰⏰⏰⏰⏰⏰
Balance of your account on Orbit chain increased by the native token you have just sent.
Running tokenBridgeDeployment or erc20TokenBridge script to deploy token bridge contracts on parent chain and your Orbit chain 🌉🌉🌉🌉🌉
Creating token bridge for rollup 0x4622bE792Ac106Fbd76F44C0787fcC3335a8a736
Token bridge deployed in transaction 0x5e1a4f045b200b59a9c97e4c44637ed02f07b94aee5d9a8926e5505c6e08f32d
Waiting for retryables...
Retryable #1: 0xadb0f4638daac654a9de14bd0153c1a1fcd72a88e4543ef18ac1a95233d141b2
Retryable #2: 0xb9debb123a1bb966f6c812aa986d7a4998bc860bb6a8a69261434b827f67cc32
Done!
Weth gateway set in tx 0xcf511ff25cd57aaf6408795c1bb70eddf835c17dc8db750dd662d89d32b61842
Waiting for retryables...
Retryable #1: 0x74b392d0a7fb0126d08a45ebd4ab5e3ffac48a0912d63dfa5470cc726f830624
Done!
network.json updated
Done!
Running l3Configuration script to configure your Orbit chain 📝📝📝📝📝
Setting the Minimum Base Fee for the Orbit chain
Minimum Base Fee is set on the block number 14 on the Orbit chain
Setting the  network fee receiver for the Orbit chain
network fee receiver is set on the block number 15 on the Orbit chain
Setting the infrastructure fee collector address for the Orbit chain
infrastructure fee collector address is set on the block number 16 on the Orbit chain
Getting L1 base fee estimate
L1 Base Fee estimate on L2 is 1725894245
Setting L1 base fee estimate on L3 to 2673764245
L1 base fee estimate is set on the block number 17 on the Orbit chain
All things done! Enjoy your Orbit chain. LFG 🚀🚀🚀🚀
Transferring ownership on L3, from rollup owner to upgrade executor 🔃🔃🔃
Adding Upgrade Executor contract to the chain owners
Executor has been added to chain owners on TX: 0xb63d380176b516958c0de0a69ccfdff8176f305ef52340f875a41d4fc4a3f6f4
Executing removeChainOwner through the UpgradeExecutor contract
Transaction complete, rollup owner removed from chain owners on TX: 0xfde314ea6b113af8753a5e481b2bf5d86ff3bc14137e5efc5a91382bc304d032
....

Blockscoutですぐに自作チェーンのエクスプローラーを起動できる

dockerを起動してからlocalhostにアクセスすると、すぐに自作チェーンのエクスプローラーが起動できる。APIも充実していて、チェーンとのインタラクションが簡単。
https://youtu.be/eAd3JjEP8UA

メインネットにローンチするには?

ローカルでのテストとは違い、ノードの運用やRPC URLの提供など、セキュアで安定して稼働させることが求められる。
CalderaやAltLayerなどは、それらをend-to-endでサポートしてくれるサービス。
基本的にはこれらのサービスを使うのが良い。

まとめ

自分のWeb3アプリケーションのために特化したチェーンの開発は以前から盛んだった。
しかし、2024年現在では、「独自チェーンかつパブリックなチェーン」を簡単に作ることができる。

お知らせ

X(旧Twitter)ではより高頻度にWeb3関連の情報を発信しています🔊
フォローよろしくお願いします!
https://x.com/ryoheikomy

Discussion