Files
proxmox/docs/03-deployment/ALL_NETWORK_CONTRACT_VERIFICATION_AND_PUBLICATION_RUNBOOK.md
defiQUG dbd517b279 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
2026-04-12 06:12:20 -07:00

5.1 KiB

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:

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 scripts/verify/run-contract-verification-with-proxy.sh
bash scripts/verify/check-contracts-on-chain-138.sh

DODO v3 / pilot verification

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:
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 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:

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:

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.