Skip to main content
Verify your smart contract source code on the TeQoin block explorer to make it publicly visible and enable users to interact with your contract directly.
Why Verify Your Contract?
  • ✅ Users can read your contract source code
  • ✅ Builds trust and transparency
  • ✅ Enables direct interaction on the explorer
  • ✅ Required for many integrations
  • ✅ Shows you’re a legitimate project

🎯 Benefits of Verification

Transparency

Users can read your contract code and verify what it does

Trust

Verified contracts are trusted by the community

Direct Interaction

Users can call functions directly on the block explorer

Integration Support

Many services require verified contracts

🔧 Verification Methods


✅ Verify Verification Success

After submitting, check if your contract was verified:
2

Check for Green Checkmark

You should see:
  • ✅ Green checkmark next to contract address
  • “Contract” tab shows source code
  • “Read Contract” and “Write Contract” tabs appear
3

Test Read Functions

Click “Read Contract” tabTry calling a view function to verify it works

🔧 Troubleshooting

The compiler version must match exactly.Solution:
    # Check what version you used to compile
    # In Hardhat:
    cat hardhat.config.js | grep solidity
    
    # In Foundry:
    cat foundry.toml | grep solc_version
    
    # Make sure this EXACT version is selected on the explorer
    # Including the commit hash!
The compiled bytecode doesn’t match the deployed bytecode.Possible reasons:
  • Wrong compiler version
  • Optimization settings don’t match
  • Constructor arguments incorrect
  • Wrong source code
Solution:
    // Check your hardhat.config.js settings
    solidity: {
      version: "0.8.20",  // Must match exactly
      settings: {
        optimizer: {
          enabled: true,   // Must match deployment
          runs: 200        // Must match deployment
        }
      }
    }
Constructor arguments are not encoded correctly.Solution:
    # Use cast to encode (Foundry)
    cast abi-encode "constructor(string,string)" "MyToken" "MTK"
    
    # Or use ethers.js
    const encoded = abiCoder.encode(["string", "string"], ["MyToken", "MTK"]);
    
    # Make sure to remove the "0x" prefix when pasting!
You’ve exceeded the API rate limit.Solution:
  • Wait a few minutes before trying again
  • If using Hardhat, it might be retrying automatically
  • Contact support for higher rate limits
The verification is queued but taking a long time.Solution:
  • Wait 5-10 minutes
  • Check the explorer’s status page
  • Try manual verification via UI
  • Contact support if stuck for > 1 hour
Contract was verified but source code not visible.Solution:
  • Clear browser cache
  • Wait a few minutes for indexer to update
  • Try accessing in incognito mode
  • Contact support if persists

📊 Verification Best Practices

Verify Immediately

Verify your contract right after deployment while settings are fresh

Keep Records

Save compiler settings, constructor args, and verification commands

Test on Testnet

Practice verification on testnet before mainnet

Use Automation

Use Hardhat/Foundry auto-verification to avoid manual errors

📝 Verification Checklist

1

Before Deployment

  • Know your compiler version
  • Know your optimization settings
  • Have constructor arguments ready
  • Have API key from block explorer
2

During Deployment

  • Save contract address
  • Save transaction hash
  • Save deployment command
  • Note block number
3

After Deployment

  • Verify contract immediately
  • Check verification succeeded
  • Test read/write functions on explorer
  • Document verification for records

🎯 After Verification

Once your contract is verified, users can:

Read Source Code

Anyone can view and audit your contract code

Interact Directly

Users can call functions via the block explorer

Verify Security

Security researchers can audit your code

Trust Your Project

Verified contracts build user confidence

💡 Pro Tips

Automate VerificationAdd verification to your deployment script:
// Hardhat deployment script
const token = await MyToken.deploy();
await token.waitForDeployment();

// Automatically verify
await hre.run("verify:verify", {
  address: await token.getAddress(),
  constructorArguments: []
});
Keep a Verification Log
# Create a verification log
echo "MyToken: 0x5E3A... - Verified on $(date)" >> verification_log.txt
Verify All ContractsDon’t forget to verify:
  • Main contract
  • Proxy contracts (if using proxies)
  • Implementation contracts
  • Library contracts

🎯 Next Steps

Integrate with Frontend

Connect your verified contract to a dApp

Deploy Another Contract

Deploy and verify more contracts

Write Documentation

Document your contract functions for users

Get Security Audit

Consider professional audit for production contracts

Contract verified? Now integrate it with your frontend