ethereum-optimism / ethereum-optimism/optimism

Feature: Add `verify-release` Command to `op-deployer`

Open
#16,477 1 comment 1 reaction 0 assignees View on GitHub
A-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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.