ethereum-optimism / ethereum-optimism/optimism
Feature: Add `verify-release` Command to `op-deployer`
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 4k
- Avg merge
- 2d 38m
- Merged PRs (30d)
- 164
Description
## Summary
Automate the release verification process described below as a new `op-deployer` command (e.g., `op-deployer verify-release`). It will
have two subcommands: `opcm` and `single`.
This command should encapsulate as many of the [manual steps](https://oplabs.notion.site/Contracts-Release-Checklist-1f8f153ee162805e8236f022ebb8c868?source=copy_link) currently performed by the EVM Safety team during a release as possible.
This command must be documented in the `op-deployer` devdocs.
_Note: This issue describes the ideal end state of having a new opd command. For the sake of U16 however, in order to avoid the [backporting](https://devdocs.optimism.io/op-deployer/reference-guide/releases.html#version-backports) process it may be simpler to write a simple bash script or just command._
## `op-deployer verify-release opcm` usage instructions
```
op-deployer verify-release opcm -h
NAME:
op-deployer verify-release opcm - Verify a release.
USAGE:
op-deployer verify-release opcm [command options]
OPTIONS:
--artifacts-locator value The locator of the artifacts to verify.
--rpc-url value The RPC URL to use.
--etherscan-api-key value The Etherscan API key to use.
--opcm-address value The OPCM address to verify.
--validator-address value The StandardValidator address to verify.
--help, -h show help
```
**Output**
When the command is run, it will output the following information:
1. the result of bytecode verification for the OPCM and StandardValidator contracts.
2. the result of the state variable verification for the OPCM and StandardValidator contracts, including the following:
- OPCM variables:
- `opcm.upgradeController()`
- `opcm.superchainConfig()`
- `opcm.protocolVersions()`
- `opcm.superchainProxyAdmin()`
- StandardValidator variables:
- `validator.superchainConfig()`
- `validator.l1PAOMultisig()`
- `validator.challenger()`
- `validator.withdrawalDelaySeconds()`
## `op-deployer verify-release single` usage instructions
```
op-deployer verify-release single -h
NAME:
op-deployer verify-release single - Verify a single contract.
USAGE:
op-deployer verify-release single [command options]
OPTIONS:
--artifacts-locator value The locator of the artifacts to verify.
--contract-name value The name of the contract to verify.
--contract-address value The address of the contract to verify.
--rpc-url value The RPC URL to use.
--etherscan-api-key value The Etherscan API key to use.
--help, -h show help
```
**Output**
When the command is run, it will output:
1. the result of bytecode verification for the contract.
2. a message indicating that the contract's state variables should be verified manually.
Contributor guide
Assessment
This issue has not been assessed yet.