CTMScan endpoints

NetworkExplorerVerifier APIEVM RPC
Mainnetctmscan.iohttps://ctmscan.io/apihttps://public-evm-rpc.c8ntinuum.com
Testnettestnet.ctmscan.iohttps://testnet.ctmscan.io/apihttps://public-testnet-evm.c8ntinuum.link

API keys

CTMScan verification can be submitted anonymously, and anonymous flow is the supported path today - no signup URL exists. Anonymous traffic is rate-limited to 3 r/s on both mainnet and testnet, which is sufficient for typical Hardhat verification jobs. The Hardhat Etherscan plugin still requires an apiKey field to be present in config; use the placeholder value shown below to keep the plugin configuration valid. If CTMScan exposes per-account API keys later, replace the placeholder with process.env.CTMSCAN_API_KEY.

Published scope

This guide documents the Hardhat Etherscan-compatible verification flow against CTMScan. The supported source format is Solidity Standard JSON. Flattened source, proxy verification, and library-linking behavior should be confirmed against CTMScan before relying on them in release automation. The testnet verifier API mirrors mainnet at https://testnet.ctmscan.io/api.

Configure Verification

Add the explorer configuration to hardhat.config.js:
module.exports = {
  // ... existing config
  networks: {
    continuum: {
      url: "https://public-evm-rpc.c8ntinuum.com",
      chainId: 2184,
      accounts: [process.env.PRIVATE_KEY],
    },
  },
  etherscan: {
    apiKey: {
      continuum: process.env.CTMSCAN_API_KEY ?? "ctmscan",
    },
    customChains: [
      {
        network: "continuum",
        chainId: 2184,
        urls: {
          apiURL: "https://ctmscan.io/api",
          browserURL: "https://ctmscan.io",
        },
      },
    ],
  },
};

Verify on mainnet

npx hardhat verify --network continuum $CONTRACT_ADDRESS

With Constructor Arguments

npx hardhat verify --network continuum $CONTRACT_ADDRESS "arg1" "arg2"
Or create an arguments file:
// arguments.js
module.exports = [42, "0x..."];
npx hardhat verify --network continuum --constructor-args arguments.js $CONTRACT_ADDRESS

Testnet status

ItemStatusSource
Testnet chain IDAvailable nowNetwork Information - Testnet
Public testnet EVM RPCAvailable nowNetwork Information - Testnet
Testnet explorerAvailable nowBlock Explorers
Testnet verifier APIAvailable nowhttps://testnet.ctmscan.io/api - see Block Explorers