Sync workspace: config, docs, scripts, CI, operator rules, and submodule pointers.
- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains - Omit embedded publish git dirs and empty placeholders from index Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user