Verification publishes a contract’s human-readable source code and proves it matches the bytecode deployed on-chain.
What Is Verification?
Smart contracts are deployed as compiled bytecode — opaque strings of hex. Source-code verification recompiles the original source (Solidity or Vyper) with the exact compiler version and settings, and checks that the output matches the deployed bytecode. When it matches, the explorer can show you the real code the contract runs.
Why It Matters
- Transparency — anyone can audit what a contract actually does before trusting it with funds.
- Trust — verified contracts are the baseline expectation for legitimate projects; unverified contracts warrant caution.
- Usability — verification unlocks decoded transaction data, readable function names, and direct interaction through the explorer.
What You Get on a Verified Contract Page
- Source code — the full, syntax-highlighted source with compiler settings.
- ABI — the contract’s interface, used to decode calls and events.
- Read functions — query contract state (balances, configuration) for free, directly in the browser.
- Write functions — build and send state-changing transactions through a connected wallet.
- Decoded transactions — human-readable function names and parameters instead of raw hex input data.
Similar-Match vs. Exact-Match
Explorers distinguish between an exact match (source and metadata hash identical to deployment) and a partial match (code matches but metadata differs). Both let you read the code, but exact matches give the strongest guarantee.
For Developers
Verifying your contract makes your dApp dramatically easier to use and audit. Submit your source through the contract-verification tools on the explorer or via the REST API, including:
- The contract address.
- Source files (or standard JSON input).
- Compiler version and optimization settings.
- Constructor arguments, if any.
Next Steps
- Logs & Events — decoded events from verified contracts.
- AI Insights — AI-generated explanations of contract behavior.