Files
proxmox/docs/03-deployment/ALL_NETWORK_CONTRACT_VERIFICATION_AND_PUBLICATION_RUNBOOK.md

132 lines
5.1 KiB
Markdown
Raw Normal View History

# All-Network Contract Verification And Publication Runbook
**Last updated:** 2026-04-10
**Scope:** Chain 138, Ethereum mainnet, and every cross-chain deployment currently tracked in the repo inventories.
## Purpose
This runbook defines the repo-standard meaning of **verified and published** for deployed contracts on all tracked networks.
Use it together with:
- [CONTRACT_VERIFICATION_AND_PUBLICATION_MATRIX_ALL_NETWORKS](../11-references/CONTRACT_VERIFICATION_AND_PUBLICATION_MATRIX_ALL_NETWORKS.md)
- [PUBLICATION_PACK_EXPLORER_STATUS](../11-references/PUBLICATION_PACK_EXPLORER_STATUS.md)
- [PUBLICATION_ACTIONABLE_BACKLOG](../11-references/PUBLICATION_ACTIONABLE_BACKLOG.md)
- `reports/status/contract_verification_publish_matrix.json`
## Definition of done
A deployment is only considered closed when all of the following are true:
1. The contract address is present in the correct repo inventory.
2. The deployed runtime exists on the target chain.
3. Source code or equivalent explorer verification is completed on the target chain explorer.
4. The address is published in every required repo-facing surface:
- `config/smart-contracts-master.json` when canonical
- `cross-chain-pmm-lps/config/deployment-status.json` when part of PMM/cW rollout
- token list or mapping docs when user-facing
- deployment/status docs where operators rely on them
## Chain 138
### Canonical verification
Run from a host that can reach Blockscout and the Chain 138 RPC:
```bash
bash scripts/verify/run-contract-verification-with-proxy.sh
bash scripts/verify/check-contracts-on-chain-138.sh
```
### DODO v3 / pilot verification
```bash
bash scripts/verify/verify-dodo-v3-chain138-blockscout.sh
```
### Publication
After Blockscout verification completes:
1. Confirm the address set in `config/smart-contracts-master.json`
2. Confirm the route/token/pool surfaces that depend on it
3. Regenerate the all-network matrix:
```bash
node scripts/verify/generate-contract-verification-publish-matrix.mjs
```
## Other EVM chains
The repo currently tracks cross-chain deployments and inventory on:
- Ethereum mainnet (`1`)
- Optimism (`10`)
- Cronos (`25`)
- BSC (`56`)
- Gnosis (`100`)
- Polygon (`137`)
- Wemix (`1111`)
- Arbitrum (`42161`)
- Celo (`42220`)
- Avalanche (`43114`)
- Base (`8453`)
### Required steps
1. Open the chain explorer shown in the generated matrix.
2. Verify source or deployment metadata for repo-owned contracts.
3. If the address is an external anchor/reference venue, mark it as reference-only in operator notes rather than pretending the repo owns verification.
4. Regenerate the matrix and update the chain-specific runbook or token mapping if anything changed.
### Ethereum mainnet historical-source example
`DODOPMMIntegration (Mainnet)` at `0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84` was closed on 2026-04-11 by verifying against the historical `smom-dbis-138` source snapshot that actually matches the deployed bytecode, not current HEAD. Keep the provenance note in [ETHEREUM_MAINNET_DODOPMMINTEGRATION_VERIFICATION.md](ETHEREUM_MAINNET_DODOPMMINTEGRATION_VERIFICATION.md) with the matching commit, constructor arguments, and create transaction. Explorer-side public name tags remain a manual Etherscan account workflow after source verification passes.
### Requested publication packs
For the current execution pass, the requested packs are:
- Ethereum mainnet
- Optimism
- BSC
- Polygon
- Base
Use the generated artifacts to distinguish what is actually closable from the repo:
```bash
ETHERSCAN_API_KEY=... node scripts/verify/check-publication-pack-explorer-status.mjs
node scripts/verify/generate-publication-actionable-backlog.mjs
```
Closure rule for these five packs:
1. **Auto-submittable backlog empty** in `PUBLICATION_ACTIONABLE_BACKLOG.md` means the repo-owned automatic submission pass is complete.
2. Remaining `manual-or-external` rows are not honest candidates for automatic closure until source provenance or explorer ownership is established.
3. `inventory-only` and `reference-only` rows must stay aligned in repo inventories, but should not be misrepresented as repo-owned verification work.
## ALL Mainnet / non-EVM adjacent inventories
Not every tracked address lands on a conventional EVM verification path.
- `651940` (ALL Mainnet) still needs publication and documentation closure even where explorer verification is manual or non-standard.
- Non-EVM reference inventories should still be published consistently in the repo, even when source verification uses a different platform.
## Canonical inventory refresh
Regenerate the repo-wide matrix after any deployment or publication sweep:
```bash
node scripts/verify/generate-contract-verification-publish-matrix.mjs
```
This writes:
- `reports/status/contract_verification_publish_matrix.json`
- `docs/11-references/CONTRACT_VERIFICATION_AND_PUBLICATION_MATRIX_ALL_NETWORKS.md`
## Honest limits
This runbook improves closure and removes ambiguity, but it does not magically invent missing constructor arguments, compiler settings, or third-party explorer API credentials. Where those are missing, the matrix should remain **pending** until the source bundle is assembled and the publication step is actually completed.