Verifying Contracts Programmatically
IfSource code verification doesn't have to be done manually, chances are you are already using an IDE that supports verification!
Source code verification provides a way for projects to open source their smart contract code for end users to inspect and verify that it does what it claims to do.
🌍
By uploading source code, Etherscan will match the compiled contract bytecode with that on the blockchain and display it under the Contract tab.
For repeated or multiple verification of contracts, it may be more productive to programmatically verify your contracts through an API endpoint .
🎯
The tools needed to follow along with this guide is Postman, an API development application and a valid Etherscan API key.
Point your API request URL to
https://api.etherscan.io/api
and set your request method to POST.If you'd like to deploy this to any other testnet such as Rinkeby/Ropsten/Goerli, replace the request URL to your specific testnet API endpoint.

Under the Request Body, set the format to
x-www-form-urlencoded
.Include your API key under the
apikey
field, set the module to contract
, and action to verifysourcecode
.
Paste your contract source code under the
sourceCode
parameter.If your contract uses "imports", you will need to concatenate the code into one file ( otherwise known as "flattening" ) as we do not support "imports" in separate files.
Examples of Solidity flatteners that can be used are solidity-flattener by @BlockCatIO or SolidityFlattery by @DaveAppleton

Configure the details of your deployed contract such as
contractname
, compilerversion
, optimizationUsed
and so on.You have to specify the fields marked as required, and optional fields if applicable to your contract.
Parameter | Field | Description |
---|---|---|
contractaddress | Required | contract address, eg. 0x4c113f627fe35231fd11131a9974b9a99f584cb6 |
codeformat | Required | solidity-single-file by default, or solidity-standard-json-input |
contractname | Required | contract name, eg HelloWorld |
compilerversion | Required | compiler version used, eg. v0.7.6+commit.7338295f |
optimizationUsed | Required | use 0 for no optimization, and 1 if optimization was used |
runs | Optional | the no. of runs if optimization was used, eg. 200 |
constructorArguements | Optional | |
evmversion | Optional | leave blank for default compiler, specify if others such as tangerineWhistle , spuriousDragon , byzantium etc |
licenseType | Optional | default value of 1 indicating No License |
libraryname | Optional | library used in contract, eg. SafeMath supports up to 10 different libraries |
libraryaddress | Optional | library address eg. 0xCfE28868F6E0A24b7333D22D8943279e76aC2cdc a matching pair of libraryname - libraryaddress must be provided |

apikey:3KVM8TSNFSZT9B9DFTY9H1QJ1U1QJESNXB
module:contract
action:verifysourcecode
sourceCode:pragma solidity ^0.7.6;↵contract HelloWorl {↵ string public greet = "Hello Worl!";↵}
contractaddress:0x9Dca580D2c8B8e19e9d77345a5b4C2820B25b386
codeformat:solidity-single-file
contractname:HelloWorld
compilerversion:v0.7.6+commit.7338295f
optimizationused:1
runs:200
constructorArguements:0xfce353f66162630000000000000000000000000
evmversion://leave blank for compiler default
licenseType:1
libraryname1:SafeMath
libraryaddress1:0xCfE28868F6E0A24b7333D22D8943279e76aC2cdc
libraryname2://if applicable, matching pair required
libraryaddress2://if applicable, matching pair required
libraryname3://if applicable, matching pair required
libraryaddress3://if applicable, matching pair required
libraryname4://if applicable, matching pair required
libraryaddress4://if applicable, matching pair required
Upon sending your request, you should receive a GUID ( 50 characters ) as your submission receipt.

You may check the status of your source code verification using the "Check Source Code Verification Status" endpoint. The average processing time is between 30 - 60 seconds.
Upon successful verification , users will be able to interact with your contract on Etherscan and it will be listed under the Verified Contracts page.
✅

Last modified 4mo ago