Contract Verification

Verify your contracts on fork
For contracts that have been verified, the simulated transactions can be debugged using the Debug Transaction feature of Phalcon Explorer.
Verifying a contract means making its source code available in that Fork, along with the compiler settings you used.
If you want to delete the source code, delete the associated Fork.
Contract verification is supported for Hardhat, Foundry and Truffle. Others should be supported.

Get Acess Key, Fork RPC ID and Fork ID

The first step is getting the API access key (FORK_API_ACCESSS_KEY), the Fork RPC ID (FORK_RPC_ID) and the FORK_ID. Please refer to this link.


Verifying a contract in Fork is similar to verifying it on Etherscan. Read this manual on Hardhat on contract verification on Etherscan.
You need to change the configuration to verify a contract on Phalcon Fork.
module.exports = {
networks: {
phalcon: {
//The Fork RPC URL
url: ""
accounts: ['private_key']
etherscan: {
apiKey: {
customChains: [
network: "phalcon",
chainId: 1,
urls: {
apiURL: "",
browserURL: ""
solidity: "0.8.17",
Then using the following command to verify the deployed contract.
npx hardhat verify --network phalcon <deployed contract address> <constructor parameters>
If you have not deployed your contract, using the following command to deploy your contract first.
npx hardhat run scripts/deploy.ts --network phalcon


In Foundry, you can use the verify-contract for verification. Please refer the document on Foundry.
forge verify-contract \
--chain-id 1 \
--num-of-optimizations 200 \
--watch \
--verifier-url ''\
<the_contract_address> \
<the_contract_code_path> \
--etherscan-api-key FORK_API_ACCESSS_KEY
  • the_contract_address: The contract address
  • the_contract_code_path: The path of the local contract code, e.g., src/MyToken.sol:MyToken.
The verification process is showing in the terminal.
forge verify-contract --chain-id 1 --num-of-optimizations 200 --watch --verifier-url '' 0x3bd7eFCdd52Fe1E4329CA5D2a86F4c9224Fb27DD 'src/Contract.sol:Contract' --etherscan-api-key FORK_API_ACCESSS_KEY
Start verifying contract `0x3bd7efcdd52fe1e4329ca5d2a86f4c9224fb27dd` deployed on mainnet
Submitting verification for [src/Contract.sol:Contract] "0x3bd7eFCdd52Fe1E4329CA5D2a86F4c9224Fb27DD".
Submitted contract for verification:
Response: `OK`
GUID: `ciox2qu87u53h0mdz0vhfcztximzhitkmxkk7gyx8zq1r97lkm`
Contract verification status:
Response: `OK`
Details: `Pass - Verified`
Contract successfully verified


Please refer this document for how to verify the contract using Truffle.
Phalcon Fork provides the compatible APIs of Etherscan. One convenient way is to add the Phalcon Fork into verify section of a network.
networks: {
mainnet: {
provider: () => new HDWalletProvider([privateKey], [YOUR_RPC]),
network_id: "*", // Match any network id
gas: 5500000, // Gas limit
confirmations: 0,
timeoutBlocks: 200,
skipDryRun: true,
verify: {
apiUrl: '',
explorerUrl: '',
#truffle run verify YOUR_CONTRACT --network mainnet
Note that the previous configuration is just an example. Since our API is Etherscan compatible, please refer to the development framework document for more information on contract verification.

Verified Contracts

Detailed information on the verified contracts is shown in the Contracts of the Phalcon Fork Panel.
Click on the contract address to see detailed information on the contract.