Verifying Contracts Programmatically
If you'd like to verify contracts via our website, you may do so using the Verify and Publish Source Code page.
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, BscScan 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 BscScan API key.
Point your API request URL to
https://api.bscscan.com/api
and set your request method to POST.If you'd like to deploy this to the BNB Smart Chain testnet, replace the request URL with
https://api-testnet.bscscan.com/api

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 BscScan and it will be listed under the Verified Contracts page.
✅

Last modified 1yr ago