For the complete documentation index, see llms.txt. This page is also available as Markdown.

Verify Contracts

Rome runs a hosted Sourcify verification service. Once you verify a contract, its source and ABI become publicly reproducible and show up with a ✓ Source verified badge on the Rome block explorer (Via).

Verification works with the standard forge verify-contract and hardhat-verify flows — you just point them at Rome's verifier.

Verifier endpoint

Environment
Verifier URL

Testnet & Devnet

https://verify.testnet.romeprotocol.xyz

One shared instance serves every Rome testnet/devnet chain — you select the chain with the standard --chain-id flag.

Foundry

After deploying (see Deploy Solidity Contracts):

forge verify-contract <CONTRACT_ADDRESS> src/MyContract.sol:MyContract \
  --verifier sourcify \
  --verifier-url https://verify.testnet.romeprotocol.xyz/ \
  --chain-id <YOUR_CHAIN_ID> \
  --compiler-version 0.8.20

If the constructor took arguments, pass them so the bytecode matches:

  --constructor-args $(cast abi-encode "constructor(uint256)" 42)

You can also verify at deploy time with forge create … --verify or forge script … --verify (Foundry infers the chain id from --rpc-url).

Hardhat

Add Sourcify to hardhat.config.js and run hardhat verify:

Checking verification status

The explorer reads verification status from the verifier's API. You can query it directly:

A verified contract returns a match field:

  • exact_match — bytecode and metadata hash match (a perfect, "full" match).

  • match — bytecode matches; metadata differs slightly (still a genuine, verified match).

  • 404 / null — not verified.

Notes

  • Verification needs only your contract's deployed bytecode + the source and compiler settings you submit — the same inputs as on any EVM chain.

  • New Rome chains are onboarded to the verifier automatically; if you deploy to a fresh chain and verification can't find it yet, give it a short while or reach out.

Last updated

Was this helpful?