0x56ebc5c4870f5367b836081610592241ad3e07340xbb43313d206a9b02032c749ca0828a07c962b4b50x76fc2f971fb355d0453cf9f64d3f9e4f640e1754git-sig<aside> ⚠️
This step is only necessary if your release includes the deployment of an OPCM or StandardValidator contract. You may skip this step if your release does not include one of these two contracts.
</aside>
[x] Checkout the release commit.
[x] Export required environment variables.
export OPCM_ADDRESS=<address>
export VALIDATOR_ADDRESS=<address>
export ETH_RPC_URL=<rpc>
export ETHERSCAN_API_KEY=<apikey>
[x] Verify the OPCM bytecode with VerifyOPCM.
forge script ./scripts/deploy/VerifyOPCM.s.sol --rpc-url $ETH_RPC_URL
[x] Verify variables on the OPCM contract.
cast call $OPCM_ADDRESS "upgradeController()(address)"
cast call $OPCM_ADDRESS "superchainConfig()(address)"
cast call $OPCM_ADDRESS "protocolVersions()(address)"
cast call $OPCM_ADDRESS "superchainProxyAdmin()(address)"
cast call $OPCM_ADDRESS "l1ContractsRelease()(string)"
[x] Verify the container addresses on the OPCM component contracts
# Get submodule addresses from the main OPCM
export OPCM_GAME_TYPE_ADDER=$(cast call $OPCM_ADDRESS "opcmGameTypeAdder()(address)")
export OPCM_DEPLOYER=$(cast call $OPCM_ADDRESS "opcmDeployer()(address)")
export OPCM_UPGRADER=$(cast call $OPCM_ADDRESS "opcmUpgrader()(address)")
export OPCM_INTEROP_MIGRATOR=$(cast call $OPCM_ADDRESS "opcmInteropMigrator()(address)")
# Query contractsContainer from each submodule
cast call $OPCM_GAME_TYPE_ADDER "contractsContainer()(address)"
cast call $OPCM_DEPLOYER "contractsContainer()(address)"
cast call $OPCM_UPGRADER "contractsContainer()(address)"
cast call $OPCM_INTEROP_MIGRATOR "contractsContainer()(address)"
[x] Verify the StandardValidator bytecode with VerifyOPCM.
forge script ./scripts/deploy/VerifyOPCM.s.sol --sig "runSingle(string,address,bool)" "StandardValidator" $VALIDATOR_ADDRESS false --rpc-url $ETH_RPC_URL
[x] Verify variables on the StandardValidator contract.
cast call $VALIDATOR_ADDRESS "superchainConfig()(address)"
cast call $VALIDATOR_ADDRESS "l1PAOMultisig()(address)"
cast call $VALIDATOR_ADDRESS "challenger()(address)"
cast call $VALIDATOR_ADDRESS "withdrawalDelaySeconds()(uint256)"
[x] Review the OPCM contract for any new variables not reflected above and verify.