https://instance_base_url/api?module=contract
Get a list of contracts
listcontracts
List sorted in ascending order based on the time a contact was first indexed by the explorer. With filters `unverified(2)` the results will not be sorted for performance reasons.
Example:
https://instance_base_url/api
?module=contract
&action=listcontracts
Request Param
Example Result
| Parameter | Description |
|---|
| page | optional nonnegative integer representing the page number used for pagination. ‘offset’ must also be provided. |
| offset | optional nonnegative integer representing the max number of records to return when paginating. ‘page’ must also be provided. |
| filter | optional string verified|unverified|empty, or 1|2|3 respectively. Returns contracts with the requested status. |
| verified_at_start_timestamp | optional unix timestamp Represents the starting timestamp for verified contracts. Only used with verified filter. |
| verified_at_end_timestamp | optional unix timestamp Represents the ending timestamp for verified contracts. Only used with verified filter. |
Get ABI for a verified contract
getabi
Also available through a GraphQL addresses query.
Example:
https://instance_base_url/api
?module=contract
&action=getabi
&address={addressHash}
Request Params
Example Result
| Parameter | Description |
|---|
| address | string containing the address hash. |
Get contract source code for a verified contract
getsourcecode
Also available through a GraphQL addresses query.
Example:
https://instance_base_url/api
?module=contract
&action=getsourcecode
&address={addressHash}
Request Param
Example Result
| Parameter | Description |
|---|
| address | string containing the address hash. |
Get contract creator address hash and creation transaction hash
getcontractcreation
Returns contract creator and transaction hash. Up to 10 contracts at the one request
Example:
https://instance_base_url/api
?module=contract
&action=getcontractcreation
&contractaddresses={addressHash},{addressHash}
Request Params
Example Result
| Parameter | Description |
|---|
| contractaddresses | string containing address hashes, separated by , |
verify
Example:
https://instance_base_url/api
?module=contract
&action=verify
&addressHash={addressHash}
&name={name}
&compilerVersion={compilerVersion}
&optimization={false}
&contractSourceCode={contractSourceCode}
Curl Post Example
curl -d '{"addressHash":"0xc63BB6555C90846afACaC08A0F0Aa5caFCB382a1","compilerVersion":"v0.5.4+commit.9549d8ff", "contractSourceCode":"pragma solidity ^0.5.4; contract Test { }","name":"Test","optimization":false}' -H "Content-Type: application/json" -X POST "https://blockscout.com/poa/sokol/api?module=contract&action=verify"
On successful submission you will receive a guid as a receipt. Use this with checkverifystatusto view verification status.
| Parameter | Description |
|---|
| addressHash | string containing the address hash of the contract. |
| name | string containing the name of the contract. |
| compilerVersion | string containing the compiler version for the contract. |
| optimization | enum whether or not compiler optimizations were enabled 0=false, 1=true |
| contractSourceCode | string containing the source code of the contract. |
| constructorArguments | optional string constructor argument data provided. |
| autodetectConstructorArguments | optional boolean whether or not automatically detect constructor argument. |
| evmVersion | optional EVM version for the contract. |
| optimizationRuns | optional number of optimization runs used during compilation |
| library1Name | optional string name of the first library used. |
| library1Address | optional string address of the first library used. |
| library2Name | optional string name of the second library used. |
| library2Address | optional string address of the second library used. |
| library3Name | optional string name of the third library used. |
| library3Address | optional string address of the third library used. |
| library4Name | optional string name of the fourth library used. |
| library4Address | optional string address of the fourth library used. |
| library5Name | optional string name of the fifth library used. |
| library5Address | optional string address of the fifth library used. |
Verify a contract through Sourcify
verify_via_sourcify
-
if a smart contract is already verified on Sourcify, it will automatically fetch the data from the repo
-
otherwise you need to upload source files and JSON metadata file(s).
Example:
https://instance_base_url/api
?module=contract
&action=verify_via_sourcify
&addressHash={addressHash}
POST body example
--6e1e4c11657c62dc1e4349d024de9e28
Content-Disposition: form-data; name="addressHash"
0xb77b7443e0F32F1FEBf0BE0fBd7124D135d0a525
--6e1e4c11657c62dc1e4349d024de9e28
Content-Disposition: form-data; name="files[0]"; filename="contract.sol"
Content-Type: application/json
...Source code...
--6e1e4c11657c62dc1e4349d024de9e28
Content-Disposition: form-data; name="files[1]"; filename="metadata.json"
Content-Type: application/json
...JSON metadata...
--6e1e4c11657c62dc1e4349d024de9e28--
| Parameter | Description |
|---|
| addressHash | string containing the address hash. |
| files | array with sources and metadata files |
verify_vyper_contract
Example
https://instance_base_url/api
?module=contract
&action=verify_vyper_contract
&addressHash={addressHash}
&name={name}
&compilerVersion={compilerVersion}
&contractSourceCode={contractSourceCode}
curl POST example
curl --location --request POST 'http://localhost:4000/api?module=contract&action=verify_vyper_contract' --form 'contractSourceCode="SOURCE_CODE"' --form 'name="Vyper_contract"' --form 'addressHash="0xE60B1B8bD493569a3E945be50A6c89d29a560Fa1"' --form 'compilerVersion="v0.2.12"'
| Parameter | Description |
|---|
| addressHash | string containing the address hash of the contract. |
| name | string containing the name of the contract. |
| compilerVersion | string containing the compiler version for the contract. |
| contractSourceCode | string containing the source code of the contract. |
| constructorArguments | string constructor argument data provided. |
verifysourcecode
Example
https://instance_base_url/api
?module=contract
&action=verifysourcecode
&codeformat={solidity-standard-json-input}
&contractaddress={contractaddress}
&contractname={contractname}
&compilerversion={compilerversion}
&sourceCode={sourceCode}
solidity-single-file:
curl --location 'localhost:4000/api?module=contract&action=verifysourcecode' \
--form 'contractaddress="0xDc2082945d55596bf39F362d9EC0F7F65eDBB9DD"' \
--form 'sourceCode="// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Storage {
uint256 number;
function store(uint256 num) public {
number = num;
}
function retrieve() public view returns (uint256){
return number;
}
}"' \
--form 'contractname="Storage"' \
--form 'codeformat="solidity-single-file"' \
--form 'compilerversion="v0.8.17+commit.8df45f5f"' \
--form 'optimizationUsed="1"' \
--form 'runs="199"' \
--form 'constructorArguements=""' \
--form 'evmversion="london"' \
--form 'libraryname1="qwe"' \
--form 'libraryaddress1="0xDc2082945d55596bf39F362d9EC0F7F65eDBB9DD"'
--form 'licenseType=0'
| Parameter | Description |
|---|
| codeformat | Format of sourceCode (solidity-standard-json-input or solidity-single-file) |
| contractaddress | string containing the address hash of the contract. |
| contractname | string name of the contract. It an be an empty string(""), just the contract name(“ContractName”), or a filename and contract name(“contracts/contract_1.sol:ContractName”) |
| compilerversion | string containing the compiler version for the contract. |
| sourceCode | string standard input json or flattened solidity code |
| optimizationUsed | could be 0, false, 1, true. Should be set when codeformat=solidity-single-file |
| runs | integer is equal to optimization runs number set on compilation. Should be set when optimizationUsed is 1 or true |
| evmversion | string EVM version. Should be set when codeformat=solidity-single-file |
| constructorArguments | optional string constructor argument data provided. |
| autodetectConstructorArguments | optional boolean whether or not automatically detect constructor argument. |
| licenseType | string or number representing the license type. |
License type“See available license types.”
Return status of a verification attempt
checkverifystatus
guid is received as a receipt from the verifysourcecode method.
Example
https://instance_base_url/api
?module=contract
&action=checkverifystatus
&guid={identifierString}
| Parameter | Description |
|---|
| guid | stringused for identifying verification attempt |
Return Options: Pending in queue | Pass - Verified | Fail - Unable to verify | Unknown UID
Verify proxy contract
verifyproxycontract
Example
https://instance_base_url/api
?module=contract
&action=verifyproxycontract
&address={addressHash}
| Parameter | Description |
|---|
| address | string containing the address hash of the contract |
Return status of a proxy contract verification attempt
checkproxyverification
guid is received as a receipt from the verifyproxycontract method.
Example
https://instance_base_url/api
?module=contract
&action=checkproxyverification
&guid={identifierString}
| Parameter | Description |
|---|
| guid | stringused for identifying verification attempt |