Verify Contracts
Verify Solidity contract source on Rome via the hosted Sourcify service — standard forge verify-contract and hardhat-verify flows, badges on the Via explorer.
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
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.20If 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
hardhat-verify ships with the Hardhat 3 toolbox. Point its Sourcify provider at Rome's verifier in hardhat.config.ts and run hardhat verify:
On success the verifier links the published source, e.g. https://verify.testnet.romeprotocol.xyz/repo-ui/<CHAIN_ID>/<ADDRESS>.
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?