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.

Hardhat

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: "https://rpc.phalcon.xyz/FORK_RPC_ID"
accounts: ['private_key']
}
},
etherscan: {
apiKey: {
phalcon: "FORK_API_ACCESSS_KEY"
},
customChains: [
{
network: "phalcon",
chainId: 1,
urls: {
apiURL: "https://api.phalcon.xyz/api/FORK_RPC_ID",
browserURL: "https://scan.phalcon.xyz/FORK_ID"
}
}
]
},
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

Foundry

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 'https://api.phalcon.xyz/api/FORK_RPC_ID'\
<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 'https://api.phalcon.xyz/api/FORK_RPC_ID' 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`
URL:
https://etherscan.io/address/0x3bd7efcdd52fe1e4329ca5d2a86f4c9224fb27dd
Contract verification status:
Response: `OK`
Details: `Pass - Verified`
Contract successfully verified

Truffle

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: 'https://api.phalcon.xyz/api/FORK_RPC_ID',
apiKey: 'FORK_API_ACCESSS_KEY'
explorerUrl: 'https://scan.phalcon.xyz/FORK_ID/address',
},
},
}
#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.