OPスタック L2チェーン
Sunriseのデータ可用性レイヤーは、OP Stackを使用して作成されたレイヤー2ブロックチェーンをサポートしています。 これは、OP Stackを使用して作成されたL2チェーンをSunrise DataでSunriseチェーンに接続するためのガイドです。データ可用性レイヤーは、Sunrise v0.3.0以降でサポートされています。
このバージョンのOPスタックでは、L1 EVMチェーンの運用が必要です。何らかのテストネットまたはローカルチェーンを使用してください。
OPスタックの設定方法
「OPスタックの設定方法」セクションへのリンク例として、OP Stackを使用してL2チェーンを作成し、Sunriseのデータ可用性レイヤーで実行する方法を以下に示します。
このガイドでは、OPスタックの要件を満たすためにEthereum Sepoliaテストネットを使用していますが、ローカルEVMチェーンでも動作します。
sequenceDiagram autonumber L2 ->> Ethereum Sepolia: トランザクションを送信(例:トークン転送) Ethereum Sepolia --> L2: APIとトランザクションの応答 L2 ->> Sunrise: ブロックデータを送信して保存
依存関係
「依存関係」セクションへのリンクUbuntu 22.04の依存関係と一般的なインストール手順。
-
node
ターミナル curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs -
ターミナル curl -fsSL https://get.pnpm.io/install.sh | sh - -
ターミナル curl -L https://foundry.paradigm.xyz | bash -
just
ターミナル wget -qO - 'https://proget.makedeb.org/debian-feeds/prebuilt-mpr.pub' | gpg --dearmor | sudo tee /usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg 1> /dev/nullecho "deb [arch=all,$(dpkg --print-architecture) signed-by=/usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg] https://proget.makedeb.org prebuilt-mpr $(lsb_release -cs)" | sudo tee /etc/apt/sources.list.d/prebuilt-mpr.listsudo apt updatesudo apt install just
Optimismロールアップテストネットの設定
「Optimismロールアップテストネットの設定」セクションへのリンクOptimism
「Optimism」セクションへのリンク-
optimismリポジトリをクローンします
ターミナル git clone https://github.com/ethereum-optimism/optimism.git -
正しいブランチをチェックアウトします
ターミナル cd optimismgit checkout v1.9.1
ドキュメント更新時点で最新バージョンでの動作を確認しています。他のバージョンを使用する場合は、差異を確認してください。
-
すべての依存関係があることを確認するために以下を実行します
ターミナル ./packages/contracts-bedrock/scripts/getting-started/versions.sh -
Optimismに関連するすべてのパッケージをビルドします
ターミナル make op-node op-batcher op-proposerこの手順で問題が発生した場合は、バージョンがoptimismのドキュメントと一致していることを確認してください。具体的には、goのバージョンをダウングレードする必要がある場合があります。
-
op-gethをクローンしてビルドします
ターミナル cd ~git clone https://github.com/ethereum-optimism/op-geth.gitcd op-gethmake geth
サポートされているop-gethの詳細については、optimismリポジトリのProduction Releasesを確認してください。
-
環境変数を入力します
ターミナル cd ~/optimismcp .envrc.example .envrcoptimismリポジトリで次のコマンドを使用してアドレスを生成するスクリプトを実行します:
./packages/contracts-bedrock/scripts/getting-started/wallets.sh出力は次のようになり、これを環境ファイルに貼り付ける必要があります:
ターミナル ################################################### はじめに #################################################### 管理者アカウントexport GS_ADMIN_ADDRESS=0x82eeB61600f290ce3F9400d345aAEcBe5faF7AEBexport GS_ADMIN_PRIVATE_KEY=0x7c726817d047ee62cbb060312fe2620ba5462495e34f7e8279ba22faa96bca20# バッチャーアカウントexport GS_BATCHER_ADDRESS=0x7BECbC4C747922d92e4F917951D9D8c3Ada7eb60export GS_BATCHER_PRIVATE_KEY=0xc7dfaa7b8449f00480196377da50d29318b2397fd0296d0ab4f11d48ee3cf723# 提案者アカウントexport GS_PROPOSER_ADDRESS=0x773F4527fECc889d6DD3Cd7d044F4AC1Ad765a31export GS_PROPOSER_PRIVATE_KEY=0xed6029a5928e83c5d2a28d9574304bae9a825e19f7f18a50d34edc13b505afed# シーケンサーアカウントexport GS_SEQUENCER_ADDRESS=0x2B43c41FCbabc5437A6E1B97F47cA085a4B16f61export GS_SEQUENCER_PRIVATE_KEY=0x0a7d4ce467fe4d00b8930215c98335e06c16db34cd501c8c3f3173015487662e################################################### チェーン情報 #################################################### L1チェーン情報export L1_CHAIN_ID=11155111export L1_BLOCK_TIME=12# L2チェーン情報export L2_CHAIN_ID=42069export L2_BLOCK_TIME=2################################################### op-node設定 #################################################### RPCプロバイダーの種類。最適なトランザクションレシートの# 取得方法を通知するために使用されます。有効なオプション:alchemy、quicknode、infura、parity、nethermind、# debug_geth、erigon、basic、any。export L1_RPC_KIND=infura################################################### コントラクトのデプロイ #################################################### 対話するL1ネットワークのRPC URLexport L1_RPC_URL=https://sepolia.infura.io/v3/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxRPC URLのAPIキーはInfuraまたは他のプロバイダーで見つけることができます。
-
十分なSepolia ETHでアドレスに資金を供給します。optimismのドキュメントでは以下を推奨しています:
- 管理者 — 0.5 Sepolia ETH
- 提案者 — 0.2 Sepolia ETH
- バッチャー — 0.1 Sepolia ETH
-
direnvで環境変数をロードします
direnv allowその後、次のようなものが表示されるはずです:ターミナル direnv: loading ~/optimism/.envrc direnv: export +DEPLOYMENT_CONTEXT +ETHERSCAN_API_KEY +GS_ADMIN_ADDRESS +GS_ADMIN_PRIVATE_KEY +GS_BATCHER_ADDRESS +GS_BATCHER_PRIVATE_KEY +GS_PROPOSER_ADDRESS +GS_PROPOSER_PRIVATE_KEY +GS_SEQUENCER_ADDRESS +GS_SEQUENCER_PRIVATE_KEY +IMPL_SALT +L1_RPC_KIND +L1_RPC_URL +PRIVATE_KEY +TENDERLY_PROJECT +TENDERLY_USERNAME何も出力されない場合は、試してください
nano ~/.zshrcnano ~/.bashrcbashとzshのどちらを使用するかに応じて、次の行を追加します
ターミナル eval "$(direnv hook zsh)"ターミナル eval "$(direnv hook bash)"変更を保存します
source ~/.zshrcsource ~/.bashrc -
ネットワークを設定します
ターミナル cd ~/optimism/packages/contracts-bedrock./scripts/getting-started/config.sh**
deploy-config/getting-started.json**ファイルで設定を表示できます 生成された設定の末尾に以下を追加しますターミナル nano deploy-config/getting-started.json..."preimageOracleMinProposalSize": 1800000,"preimageOracleChallengePeriod": 300,"useAltDA": true,"daCommitmentType": "GenericCommitment","daChallengeWindow": 160,"daResolveWindow": 160,"daBondSize": 1000000,"daResolverRefundPercentage": 0} -
L1コントラクトをデプロイします
ターミナル just installDEPLOYMENT_OUTFILE=deployments/artifact.json \DEPLOY_CONFIG_PATH=deploy-config/getting-started.json \forge script scripts/deploy/Deploy.s.sol:Deploy \--broadcast --private-key $GS_ADMIN_PRIVATE_KEY \--rpc-url $L1_RPC_URL --slowL2 Allocs
ターミナル CONTRACT_ADDRESSES_PATH=deployments/artifact.json \DEPLOY_CONFIG_PATH=deploy-config/getting-started.json \STATE_DUMP_PATH=deploy-config/statedump.json \forge script scripts/L2Genesis.s.sol:L2Genesis \--sig 'runWithStateDump()' \--chain 42069--chainにL2チェーンIDを使用してください。EvmError: RevertとScript failedを含む不明なエラーが表示された場合は、IMPL_SALT環境変数を変更する必要がある可能性があります。この変数は、CREATE2(新しいタブで開く)を介してデプロイされるさまざまなスマートコントラクトのアドレスを決定します。同じIMPL_SALTを使用して同じコントラクトを2回デプロイすると、2回目のデプロイは失敗します。Optimism Monorepoのどこでもdirenv allowを実行することで、新しいIMPL_SALTを生成できます。 -
L2設定ファイルを生成します
ターミナル cd ~/optimism/op-node./bin/op-node genesis l2 \--deploy-config ../packages/contracts-bedrock/deploy-config/getting-started.json \--l1-deployments ../packages/contracts-bedrock/deployments/artifact.json \--outfile.l2 genesis.json \--outfile.rollup rollup.json \--l1-rpc $L1_RPC_URL \--l2-allocs ../packages/contracts-bedrock/deploy-config/statedump.json生成された
rollup.jsonの末尾を確認します"alt_da": {"da_challenge_contract_address": "0x0000000000000000000000000000000000000000","da_commitment_type": "GenericCommitment","da_challenge_window": 160,"da_resolve_window": 160} -
認証キーを作成します
ターミナル openssl rand -hex 32 > jwt.txt -
genesisファイルをop-gethディレクトリにコピーします
ターミナル cp genesis.json ~/op-gethcp jwt.txt ~/op-geth -
op-gethを初期化しますターミナル cd ~/op-gethmkdir datadirmake gethbuild/bin/geth init --datadir=datadir genesis.json
L2を開始
「L2を開始」セクションへのリンクoptimismを開始する前に、sunrisedとsunrise-dataなどを設定してください。
-
op-gethを開始しますターミナル ./build/bin/geth \--datadir ./datadir \--http \--http.corsdomain="*" \--http.vhosts="*" \--http.addr=0.0.0.0 \--http.port=9545 \--http.api=web3,debug,eth,txpool,net,engine \--ws \--ws.addr=0.0.0.0 \--ws.port=9546 \--ws.origins="*" \--ws.api=debug,eth,txpool,net,engine \--syncmode=full \--nodiscover \--maxpeers=0 \--networkid=42069 \--authrpc.vhosts="*" \--authrpc.addr=0.0.0.0 \--authrpc.port=9551 \--authrpc.jwtsecret=./jwt.txt \--rollup.disabletxpoolgossip=true -
op-nodeを開始しますターミナル cd ~/optimism/op-node./bin/op-node \--l2=http://localhost:9551 \--l2.jwt-secret=./jwt.txt \--sequencer.enabled \--sequencer.l1-confs=5 \--verifier.l1-confs=4 \--rollup.config=./rollup.json \--rpc.addr=0.0.0.0 \--rpc.port=8547 \--p2p.disable \--rpc.enable-admin \--p2p.sequencer.key=$GS_SEQUENCER_PRIVATE_KEY \--l1=$L1_RPC_URL \--l1.rpckind=$L1_RPC_KIND \--altda.enabled=true \--altda.da-server=http://localhost:3100 \--altda.da-service=true \--l1.beacon.ignore=true—altda.da-serverは、da-sererのhttp URLです
-
op-batcherを開始しますターミナル cd ~/optimism/op-batcher./bin/op-batcher \--l2-eth-rpc=http://localhost:9545 \--rollup-rpc=http://localhost:8547 \--poll-interval=1s \--sub-safety-margin=6 \--num-confirmations=1 \--safe-abort-nonce-too-low-count=3 \--resubmission-timeout=30s \--rpc.addr=0.0.0.0 \--rpc.port=8548 \--rpc.enable-admin \--max-channel-duration=1 \--l1-eth-rpc=$L1_RPC_URL \--private-key=$GS_BATCHER_PRIVATE_KEY \--altda.enabled=true \--altda.da-service=true \--altda.da-server=http://localhost:3100 -
op-proposerを開始しますターミナル cd ~/optimism/op-proposer./bin/op-proposer \--poll-interval=12s \--rpc.port=9560 \--rollup-rpc=http://localhost:8547 \--l2oo-address=$(cat ../packages/contracts-bedrock/deployments/42069-deploy.json | jq -r .L2OutputOracleProxy) \--private-key=$GS_PROPOSER_PRIVATE_KEY \--l1-eth-rpc=$L1_RPC_URL -
動作