API Documentation

[ Base URL: http://localhost:4000/api ]

This API is provided for developers transitioning their applications from Bharat Blockchain to BlockScout. It supports GET and POST requests.

Account

Mimics Bharat Blockchain JSON RPC's eth_getBalance. Returns the balance as of the provided block (defaults to latest)

?module=account&action=eth_get_balance&address={addressHash}

eth_get_balance

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: eth_get_balance

address *required

string (query)

The address of the account.

block

string (query)

Either the block number as a string, or one of latest, earliest or pending latest will be the latest balance in a *consensus* block. earliest will be the first recorded balance for the address. pending will be the latest balance in consensus *or* nonconsensus blocks.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x0234c8a3397aab58"
}

Result {

id
string
example: "1"
jsonrpc
string
example: "2.0"
result
string
example: "767969"

}

Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
Get balance for address. Also available through a GraphQL 'addresses' query. If the balance hasn't been updated in a long time, we will double check with the node to fetch the absolute latest balance. This will not be reflected in the current request, but once it is updated, subsequent requests will show the updated balance. If you want to know whether or not we are checking for another balance, use the `balancemulti` action. That contains a property called `stale` that will let you know to recheck that balance in the near future.

?module=account&action=balance&address={addressHash}

balance

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: balance

address *required

string (query)

A 160-bit code used for identifying Accounts.

Curl

          
Request URL

          
Server Response

Code

Details

Response Body


            

Responses

Code

Description
200
successful operation
{
  "message": "OK",
  "result": "663046792267785498951364",
  "status": "1"
}

Result {

message
string
example: "OK"
result
wei
example: "663046792267785498951364"
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

200
error
{
  "message": "Invalid address hash",
  "result": null,
  "status": "0"
}
Get balance for multiple addresses. Also available through a GraphQL 'addresses' query. If the balance hasn't been updated in a long time, we will double check with the node to fetch the absolute latest balance. This will not be reflected in the current request, but once it is updated, subsequent requests will show the updated balance. You can know that this is taking place via the `stale` attribute, which is set to `true` if a new balance is being fetched.

?module=account&action=balancemulti&address={addressHash1,addressHash2,addressHash3}

balancemulti

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: balancemulti

address *required

string (query)

A 160-bit code used for identifying Accounts. Separate addresses by comma. Maximum of 20 addresses.

Curl

          
Request URL

          
Server Response

Code

Details

Response Body


            

Responses

Code

Description
200
successful operation
{
  "message": "OK",
  "result": [
    {
      "account": "0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a",
      "balance": "40807168566070000000000",
      "stale": true
    },
    {
      "account": "0x63a9975ba31b0b9626b34300f7f627147df1f526",
      "balance": "332567136222827062478",
      "stale": false
    },
    {
      "account": "0x198ef1ec325a96cc354c7266a038be8b5c558f67",
      "balance": "185178830000000000",
      "stale": false
    }
  ],
  "status": "1"
}

Result {

message
string
example: "OK"
result
array
[AddressBalance]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

AddressBalance {

address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
balance
wei
example: "663046792267785498951364"
stale
boolean
example: true

}

200
error
{
  "message": "Invalid address hash",
  "result": null,
  "status": "0"
}
Get pending transactions by address.

?module=account&action=pendingtxlist&address={addressHash1}

pendingtxlist

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: pendingtxlist

address *required

string (query)

A 160-bit code used for identifying Accounts.

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": [
                    {
                      "contractAddress": "",
                      "cumulativeGasUsed": "122207",
                      "from": "0x3fb1cd2cd96c6d5c0b5eb3322d807b34482481d4",
                      "gas": "122261",
                      "gasPrice": "50000000000",
                      "gasUsed": "122207",
                      "hash": "0x98beb27135aa0a25650557005ad962919d6a278c4b3dde7f4f6a3a1e65aa746c",
                      "input": "0xf00d4b5d000000000000000000000000036c8cecce8d8bbf0831d840d7f29c9e3ddefa63000000000000000000000000c5a96db085dda36ffbe390f455315d30d6d3dc52",
                      "nonce": "0",
                      "to": "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae",
                      "value": "0"
                    }
                  ],
                  "status": "1"
                }

Result {

message
string
example: "OK"
result
array
[Transaction]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Transaction {

blockHash
block hash
example: "0xd3cabad6adab0b52eb632c386ea194036805713682c62cb589b5abcd76de2159"
blockNumber
block number
example: "34092"
confirmations
confirmations
example: "6005998"
contractAddress
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
cumulativeGasUsed
gas
example: "122261"
from
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
gas
gas
example: "122261"
gasPrice
wei
example: "663046792267785498951364"
gasUsed
gas
example: "122261"
hash
transaction hash
example: "0x9c81f44c29ff0226f835cd0a8a2f2a7eca6db52a711f8211b566fd15d3e0e8d4"
input
input
example: "0x797af627d02e23b68e085092cd0d47d6cfb54be025f37b5989c0264398f534c08af7dea9"
isError
error
enum: ["0", "1"]
enum
interpretation
"0"
ok
"1"
error
nonce
nonce
example: "0"
timeStamp
timestamp
example: "1439232889"
to
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
transactionIndex
transaction index
example: "0"
txreceipt_status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok
value
wei
example: "663046792267785498951364"

}

200
error
{
                  "message": "No transactions found",
                  "result": [],
                  "status": "0"
                }
Get transactions by address. Up to a maximum of 10,000 transactions. Also available through a GraphQL 'address' query.

?module=account&action=txlist&address={addressHash1}

txlist

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: txlist

address *required

string (query)

A 160-bit code used for identifying Accounts.

sort

string (query)

A string representing the order by block number direction. Defaults to descending order. Available values: asc, desc

start_block

integer (query)

A nonnegative integer that represents the starting block number.

end_block

integer (query)

A nonnegative integer that represents the ending block number.

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction.

filter_by

string (query)

A string representing the field to filter by. If none is given it returns transactions that match to, from, or contract address. Available values: to, from

start_timestamp

unix timestamp (query)

Represents the starting block timestamp.

end_timestamp

unix timestamp (query)

Represents the ending block timestamp.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": [
                    {
                      "blockHash": "0x373d339e45a701447367d7b9c7cef84aab79c2b2714271b908cda0ab3ad0849b",
                      "blockNumber": "65204",
                      "confirmations": "5994246",
                      "contractAddress": "",
                      "cumulativeGasUsed": "122207",
                      "from": "0x3fb1cd2cd96c6d5c0b5eb3322d807b34482481d4",
                      "gas": "122261",
                      "gasPrice": "50000000000",
                      "gasUsed": "122207",
                      "hash": "0x98beb27135aa0a25650557005ad962919d6a278c4b3dde7f4f6a3a1e65aa746c",
                      "input": "0xf00d4b5d000000000000000000000000036c8cecce8d8bbf0831d840d7f29c9e3ddefa63000000000000000000000000c5a96db085dda36ffbe390f455315d30d6d3dc52",
                      "isError": "0",
                      "nonce": "0",
                      "timeStamp": "1439232889",
                      "to": "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae",
                      "transactionIndex": "0",
                      "txreceipt_status": "1",
                      "value": "0"
                    }
                  ],
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
array
[Transaction]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Transaction {

blockHash
block hash
example: "0xd3cabad6adab0b52eb632c386ea194036805713682c62cb589b5abcd76de2159"
blockNumber
block number
example: "34092"
confirmations
confirmations
example: "6005998"
contractAddress
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
cumulativeGasUsed
gas
example: "122261"
from
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
gas
gas
example: "122261"
gasPrice
wei
example: "663046792267785498951364"
gasUsed
gas
example: "122261"
hash
transaction hash
example: "0x9c81f44c29ff0226f835cd0a8a2f2a7eca6db52a711f8211b566fd15d3e0e8d4"
input
input
example: "0x797af627d02e23b68e085092cd0d47d6cfb54be025f37b5989c0264398f534c08af7dea9"
isError
error
enum: ["0", "1"]
enum
interpretation
"0"
ok
"1"
error
nonce
nonce
example: "0"
timeStamp
timestamp
example: "1439232889"
to
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
transactionIndex
transaction index
example: "0"
txreceipt_status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok
value
wei
example: "663046792267785498951364"

}

200
error
{
                  "message": "No transactions found",
                  "result": [],
                  "status": "0"
                  }
Get internal transactions by transaction or address hash. Up to a maximum of 10,000 internal transactions. Also available through a GraphQL 'transaction' query.

?module=account&action=txlistinternal&txhash={transactionHash}

txlistinternal

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: txlistinternal

txhash *required

string (query)

Transaction hash. Hash of contents of the transaction. A transaction hash or address hash is required.

address

string (query)

A 160-bit code used for identifying accounts. An address hash or transaction hash is required.

sort

string (query)

A string representing the order by block number direction. Defaults to ascending order. Available values: asc, desc. WARNING: Only available if 'address' is provided.

start_block

integer (query)

A nonnegative integer that represents the starting block number. WARNING: Only available if 'address' is provided.

end_block

integer (query)

A nonnegative integer that represents the ending block number. WARNING: Only available if 'address' is provided.

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction. WARNING: Only available if 'address' is provided.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction. WARNING: Only available if 'address' is provided.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": [
                    {
                      "blockNumber": "6153702",
                      "callType": "delegatecall",
                      "contractAddress": "0x883103875d905c11f9ac7dacbfc16deb39655361",
                      "errCode": "",
                      "from": "0x2ca1e3f250f56f1761b9a52bc42db53986085eff",
                      "gas": "814937",
                      "gasUsed": "536262",
                      "index": "0",
                      "input": "",
                      "isError": "0",
                      "timeStamp": "1534362606",
                      "to": "",
                      "transactionHash": "0xd65b788c610949704a5f9aac2228c7c777434dfe11c863a12306f57fcbd8cdbb",
                      "type": "call",
                      "value": "5488334153118633"
                    }
                  ],
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
array
[InternalTransaction]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

InternalTransaction {

blockNumber
block number
example: "34092"
callType
type
example: "delegatecall"
contractAddress
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
errCode
string
example: "Out of gas"
from
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
gas
gas
example: "122261"
gasUsed
gas
example: "122261"
input
input
example: "0x797af627d02e23b68e085092cd0d47d6cfb54be025f37b5989c0264398f534c08af7dea9"
isError
error
enum: ["0", "1"]
enum
interpretation
"0"
ok
"1"
rejected/cancelled
timeStamp
timestamp
example: "1439232889"
to
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
type
type
example: "create"
value
wei
example: "663046792267785498951364"

}

200
error
{
                  "message": "No internal transactions found",
                  "result": [],
                  "status": "0"
                  }
Get token transfer events by address. Up to a maximum of 10,000 token transfer events. Also available through a GraphQL 'token_transfers' query.

?module=account&action=tokentx&txhash={addressHash}

tokentx

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: tokentx

address *required

string (query)

A 160-bit code used for identifying accounts.

contractaddress

string (query)

A 160-bit code used for identifying contracts.

sort

string (query)

A string representing the order by block number direction. Defaults to ascending order. Available values: asc, desc

start_block

integer (query)

A nonnegative integer that represents the starting block number.

end_block

integer (query)

A nonnegative integer that represents the ending block number.

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": [
                    {
                      "blockHash": "0x6169c5dc05d0051564ba3eae8ebfbdefda640c5f5ffc095846b8aed0b44f64ea",
                      "blockNumber": "5997843",
                      "confirmations": "199384",
                      "contractAddress": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2",
                      "cumulativeGasUsed": "1043649",
                      "from": "0x4e83362442b8d1bec281594cea3050c8eb01311c",
                      "gas": "44758",
                      "gasPrice": "7000000000",
                      "gasUsed": "37298",
                      "hash": "0xd65b788c610949704a5f9aac2228c7c777434dfe11c863a12306f57fcbd8cdbb",
                      "input": "0xa9059cbb00000000000000000000000021e21ba085289f81a86921de890eed30f1ad23750000000000000000000000000000000000000000000000008ac7230489e80000",
                      "logIndex": "0",
                      "nonce": "765",
                      "timeStamp": "1532086946",
                      "to": "0x21e21ba085289f81a86921de890eed30f1ad2375",
                      "tokenDecimal": "18",
                      "tokenName": "Maker",
                      "tokenSymbol": "MKR",
                      "transactionIndex": "27",
                      "value": "10000000000000000000"
                    }
                  ],
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
array
[TokenTransfer]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

TokenTransfer {

blockHash
block hash
example: "0xd3cabad6adab0b52eb632c386ea194036805713682c62cb589b5abcd76de2159"
blockNumber
block number
example: "34092"
confirmations
confirmations
example: "6005998"
contractAddress
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
cumulativeGasUsed
gas
example: "122261"
from
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
gas
gas
example: "122261"
gasPrice
wei
example: "663046792267785498951364"
gasUsed
gas
example: "122261"
hash
transaction hash
example: "0x9c81f44c29ff0226f835cd0a8a2f2a7eca6db52a711f8211b566fd15d3e0e8d4"
input
input
example: "0x797af627d02e23b68e085092cd0d47d6cfb54be025f37b5989c0264398f534c08af7dea9"
nonce
nonce
example: "0"
timeStamp
timestamp
example: "1439232889"
to
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
tokenDecimal
integer
example: "18"
tokenID
integer
example: "0"
tokenIDs
array
[Token ID]
tokenName
string
example: "Some Token Name"
tokenSymbol
string
example: "SYMBOL"
transactionIndex
transaction index
example: "0"
value
integer
example: "663046792267785498951364"
values
array
[Transferred amount]

}

200
error
{
                  "message": "No token transfers found",
                  "result": [],
                  "status": "0"
                  }
Get token account balance for token contract address.

?module=account&action=tokenbalance&contractaddress={contractAddressHash}&address={addressHash}

tokenbalance

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: tokenbalance

contractaddress *required

string (query)

A 160-bit code used for identifying contracts.

address *required

string (query)

A 160-bit code used for identifying accounts.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": "135499",
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
integer
example: "135499"
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

200
error
{
                  "message": "Invalid address format",
                  "result": null,
                  "status": "0"
                  }
Get list of tokens owned by address.

?module=account&action=tokenlist&address={addressHash}

tokenlist

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: tokenlist

address *required

string (query)

A 160-bit code used for identifying accounts.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": [
                    {
                      "balance": "135499",
                      "contractAddress": "0x0000000000000000000000000000000000000000",
                      "decimals": "18",
                      "name": "Example Token",
                      "symbol": "ET",
                      "type": "BRC-20"
                    },
                    {
                      "balance": "1",
                      "contractAddress": "0x0000000000000000000000000000000000000001",
                      "decimals": "18",
                      "name": "Example BRC-721 Token",
                      "symbol": "ET7",
                      "type": "BRC-721"
                    }
                  ],
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
array
[TokenBalance]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

TokenBalance {

balance
integer
example: "135499"
contractAddress
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
decimals
integer
example: "18"
name
string
example: "Some Token Name"
symbol
string
example: "SYMBOL"

}

200
error
{
                  "message": "Invalid address format",
                  "result": null,
                  "status": "0"
                  }
Get list of blocks mined by address.

?module=account&action=getminedblocks&address={addressHash}

getminedblocks

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getminedblocks

address *required

string (query)

A 160-bit code used for identifying accounts.

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": [
                    {
                      "blockNumber": "3462296",
                      "blockReward": "5194770940000000000",
                      "timeStamp": "1491118514"
                    }
                  ],
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
array
[Block]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Block {

blockNumber
block number
example: "34092"
timeStamp
timestamp
example: "1480072029"

}

200
error
{
                  "message": "No blocks found",
                  "result": [],
                  "status": "0"
                  }
Get a list of accounts and their balances, sorted ascending by the time they were first seen by the explorer.

?module=account&action=listaccounts

listaccounts

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: account

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: listaccounts

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": [
                    {
                      "address": "0x0000000000000000000000000000000000000000",
                      "balance": "135499"
                    }
                  ],
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
array
[Account]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Account {

address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
balance
wei
example: "663046792267785498951364"

}

Logs

Get event logs for an address and/or topics. Up to a maximum of 1,000 event logs.

?module=logs&action=getLogs&fromBlock={blockNumber}&toBlock={blockNumber}&address={addressHash}&topic0={firstTopic}

getLogs

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: logs

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getLogs

fromBlock *required

integer (query)

A nonnegative integer that represents the starting block number. The use of 'latest' is also supported.

toBlock *required

integer (query)

A nonnegative integer that represents the ending block number. The use of 'latest' is also supported.

address *required

string (query)

A 160-bit code used for identifying contracts. An address and/or topic{x} is required.

topic0 *required

string (query)

A string equal to the first topic. A topic{x} and/or address is required.

topic1

string (query)

A string equal to the second topic. A topic{x} and/or address is required.

topic2

string (query)

A string equal to the third topic. A topic{x} and/or address is required.

topic3

string (query)

A string equal to the fourth topic. A topic{x} and/or address is required.

topic0_1_opr

string (query)

A string representing the and|or operator for topic0 and topic1. Required if topic0 and topic1 is used. Available values: and, or

topic0_2_opr

string (query)

A string representing the and|or operator for topic0 and topic2. Required if topic0 and topic2 is used. Available values: and, or

topic0_3_opr

string (query)

A string representing the and|or operator for topic0 and topic3. Required if topic0 and topic3 is used. Available values: and, or

topic1_2_opr

string (query)

A string representing the and|or operator for topic1 and topic2. Required if topic1 and topic2 is used. Available values: and, or

topic1_3_opr

string (query)

A string representing the and|or operator for topic1 and topic3. Required if topic1 and topic3 is used. Available values: and, or

topic2_3_opr

string (query)

A string representing the and|or operator for topic2 and topic3. Required if topic2 and topic3 is used. Available values: and, or

Curl

          
Request URL

          
Server Response

Code

Details

Response Body


            

Responses

Code

Description
200
successful operation
{
  "message": "OK",
  "result": [
    {
      "address": "0x33990122638b9132ca29c723bdf037f1a891a70c",
      "blockNumber": "0x5c958",
      "data": "0x",
      "gasPrice": "0xba43b7400",
      "gasUsed": "0x10682",
      "logIndex": "0x",
      "timeStamp": "0x561d688c",
      "topics": [
        "0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545",
        "0x72657075746174696f6e00000000000000000000000000000000000000000000",
        "0x000000000000000000000000d9b2f59f3b5c7b3c67047d2f03c3e8052470be92"
      ],
      "transactionHash": "0x0b03498648ae2da924f961dda00dc6bb0a8df15519262b7e012b7d67f4bb7e83",
      "transactionIndex": "0x"
    }
  ],
  "status": "1"
}

Result {

message
string
example: "OK"
result
array
[Log]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Log {

address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
blockNumber
block number
example: "0x5c958"
data
data
example: "0x"
gasPrice
wei
example: "0xba43b7400"
gasUsed
gas
example: "0x10682"
logIndex
hexadecimal
example: "0x"
timeStamp
timestamp
example: "0x561d688c"
topics
topics
example: ["0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545"]
transactionHash
transaction hash
example: "0x9c81f44c29ff0226f835cd0a8a2f2a7eca6db52a711f8211b566fd15d3e0e8d4"
transactionIndex
hexadecimal
example: "0x"

}

200
error
{
  "message": "Invalid address format",
  "result": null,
  "status": "0"
}

Token

Get BRC-20 or BRC-721 token by contract address.

?module=token&action=getToken&contractaddress={contractAddressHash}

getTokenHolders

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: token

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getToken

contractaddress *required

string (query)

A 160-bit code used for identifying contracts.

Curl

          
Request URL

          
Server Response

Code

Details

Response Body


            

Responses

Code

Description
200
successful operation
{
  "message": "OK",
  "result": {
    "cataloged": true,
    "contractAddress": "0x0000000000000000000000000000000000000000",
    "decimals": "18",
    "name": "Example Token",
    "symbol": "ET",
    "totalSupply": "1000000000",
    "type": "BRC-20"
  },
  "status": "1"
}

Result {

message
string
example: "OK"
result
Token
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Token {

cataloged
boolean
example: true
contractAddress
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
decimals
integer
example: "18"
name
string
example: "Some Token Name"
symbol
string
example: "SYMBOL"
totalSupply
integer
example: "1000000000"
type
token type
enum: ["BRC-20", "BRC-721"]
enum
interpretation
"BRC-20"
BRC-20 token standard
"BRC-721"
BRC-721 token standard

}

200
error
{
  "message": "Invalid contract address format",
  "result": null,
  "status": "0"
}
Get token holders by contract address.

?module=token&action=getTokenHolders&address={contractAddressHash}

getTokenHolders

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: token

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getTokenHolders

contractaddress *required

string (query)

A 160-bit code used for identifying contracts.

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": [
  {
    "address": "0x0000000000000000000000000000000000000000",
    "value": "965208500001258757122850"
  }
],
"status": "1"
}

Result {

message
string
example: "OK"
result
array
[Token holder Detail]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Token holder Detail {

address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
value
value
example: "1000000000000000000"

}

200
error
{
"message": "Invalid contract address format",
"result": null,
"status": "0"
}

Stats

Get BRC-20 or BRC-721 token total supply by contract address.

?module=stats&action=tokensupply&contractaddress={contractAddressHash}

tokensupply

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: stats

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: tokensupply

contractaddress *required

string (query)

A 160-bit code used for identifying contracts.

Curl

          
Request URL

          
Server Response

Code

Details

Response Body


            

Responses

Code

Description
200
successful operation
{
  "message": "OK",
  "result": "21265524714464",
  "status": "1"
}

Result {

message
string
example: "OK"
result
integer
example: "1000000000"
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

200
error
{
  "message": "Invalid contract address format",
  "result": null,
  "status": "0"
}
Get total supply in Wei from exchange.

?module=stats&action=ethsupplyexchange

ethsupplyexchange

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: stats

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: ethsupplyexchange

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": "101959776311500000000000000",
"status": "1"
}

Result {

message
string
example: "OK"
result
integer
example: "101959776311500000000000000"
description: The total supply.
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Get total supply in Wei from DB.

?module=stats&action=ethsupply

ethsupply

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: stats

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: ethsupply

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": "101959776311500000000000000",
"status": "1"
}

Result {

message
string
example: "OK"
result
integer
example: "101959776311500000000000000"
description: The total supply in Wei from DB.
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Get total coin supply from DB minus burnt number.

?module=stats&action=coinsupply

eth_get_balance

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: stats

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: coinsupply

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
101959776.3115

Result {

result
integer
example: 101959776.3115
description: The total supply from DB minus burnt number in coin dimension.

}

Get latest price of native coin in USD and BTC.

?module=statss&action=coinprice

coinprice

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: stats

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: coinprice

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": {
  "coin_btc": "0.03246",
  "coin_btc_timestamp": "1537212510",
  "coin_usd": "204",
  "coin_usd_timestamp": "1537212513"
},
"status": "1"
}

Result {

message
string
example: "OK"
result
CoinPrice
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

CoinPrice {

coin_btc
coin_btc
example: "0.03161"
coin_btc_timestamp
timestamp
example: "1537234460"
coin_usd
coin_usd
example: "197.57"
coin_usd_timestamp
timestamp
example: "1537234460"

}

Gets total transaction fees in Wei are paid by users to validators per day.

?module=stats&action=totalfees&date={date}

totalfees

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: stats

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: totalfees

date *required

string (query)

day in ISO 8601 format (yyyy-mm-dd)

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": {
  "total_fees": "75411956011480008034"
},
"status": "1"
}

Result {

message
string
example: "OK"
result
TotalFees
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

TotalFees {

total_fees
total_fees
example: "75411956011480008034"

}

200
error
{
"message": "An incorrect input date provided. It should be in ISO 8601 format (yyyy-mm-dd).",
"result": null,
"status": "0"
}

Block

Get block reward by block number.

?module=block&action=getblockreward&blockno={blockNumber}

getblockreward

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: block

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getblockreward

blockno *required

integer (query)

A nonnegative integer that represents the block number.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": {
  "blockMiner": "0x13a06d3dfe21e0db5c016c03ea7d2509f7f8d1e3",
  "blockNumber": "2165403",
  "blockReward": "5314181600000000000",
  "timeStamp": "1472533979",
  "uncleInclusionReward": null,
  "uncles": null
},
"status": "1"
}

Result {

message
string
example: "OK"
result
BlockReward
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

BlockReward {

blockMiner
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
blockNumber
block number
example: "34092"
blockReward
block reward
example: "5003251945421042780"
timeStamp
timestamp
example: "1480072029"
uncleInclusionReward
null
uncles
null

}

200
error
{
"message": "Invalid block number",
"result": null,
"status": "0"
}
Get Block Number by Timestamp.

?module=block&action=getblocknobytime&address={blockTimestamp}

getblocknobytime

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: block

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getblocknobytime

timestamp *required

integer (query)

A nonnegative integer that represents the block timestamp (Unix timestamp in seconds).

closest *required

string (query)

Direction to find the closest block number to given timestamp. Available values: before/after.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": {
  "blockNumber": "2165403"
},
"status": "1"
}

Result {

message
string
example: "OK"
result
BlockNo
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

BlockNo {

blockNumber
block number
example: "34092"

}

200
error
{
"message": "Invalid params",
"result": null,
"status": "0"
}
Mimics Bharat Blockchain JSON RPC's eth_blockNumber. Returns the latest block number

?module=block&action=eth_block_number

eth_block_number

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: block

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: eth_block_number

id

integer (query)

A nonnegative integer that represents the json rpc request id.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful request
{
"id": 1,
"jsonrpc": "2.0",
"result": "0xb33bf1"
}

Result {

id
string
example: "1"
jsonrpc
string
example: "2.0"
result
string
example: "767969"

}

Contract

Get a list of contracts, sorted ascending by the time they were first seen by the explorer. If you provide the filters `not_decompiled`(`4`) or `not_verified(4)` the results will not be sorted for performance reasons.

?module=contract&action=listcontracts

listcontracts

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: listcontracts

page

integer (query)

A nonnegative integer that represents the page number to be used for pagination. 'offset' must be provided in conjunction.

offset

integer (query)

A nonnegative integer that represents the maximum number of records to return when paginating. 'page' must be provided in conjunction.

filter

string (query)

verified|decompiled|unverified|not_decompiled|empty, or 1|2|3|4|5 respectively. This requests only contracts with that status.

not_decompiled_with_version

string (query)

Ensures that none of the returned contracts were decompiled with the provided version. Ignored unless filtering for decompiled contracts.

verified_at_start_timestamp

unix timestamp (query)

Represents the starting timestamp when contracts verified. Taking into account only with `verified` filter.

verified_at_end_timestamp

unix timestamp (query)

Represents the ending timestamp when contracts verified. Taking into account only with `verified` filter.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": [
  {
    "ABI": "[{\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event\"\n}, {\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event2\"\n}, {\n\"type\":\"function\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}],\n\"name\":\"foo\",\n\"outputs\": []\n}]\n",
    "CompilerVersion": "v0.2.1-2016-01-30-91a6b35",
    "ContractName": "Test",
    "OptimizationUsed": "1",
    "SourceCode": "pragma solidity >0.4.24;\n\ncontract Test {\nconstructor() public { b = hex\"12345678901234567890123456789012\"; }\nevent Event(uint indexed a, bytes32 b);\nevent Event2(uint indexed a, bytes32 b);\nfunction foo(uint a) public { emit Event(a, b); }\nbytes32 b;\n}\n"
  }
],
"status": "1"
}

Result {

message
string
example: "OK"
result
array
[Contract]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Contract {

ABI
ABI
example: "[{ \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event\" }, { \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event2\" }, { \"type\":\"function\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}], \"name\":\"foo\", \"outputs\": [] }]"
Address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
ContractName
string
example: "Some name"
OptimizationUsed
optimization used
enum: ["0", "1"]
enum
interpretation
"0"
false
"1"
true

}

Get ABI for verified contract. Also available through a GraphQL 'addresses' query.

?module=contract&action=getabi&address={addressHash}

getabi

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getabi

address *required

string (query)

A 160-bit code used for identifying contracts.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": "[{\"constant\":false,\"inputs\":[{\"name\":\"voucher_token\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"voucher_token\",\"type\":\"bytes32\"}],\"name\":\"is_expired\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"voucher_token\",\"type\":\"bytes32\"}],\"name\":\"is_burnt\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"voucher_token\",\"type\":\"bytes32\"},{\"name\":\"_lifetime\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]",
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
abi
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

200
error
{
                  "message": "Contract source code not verified",
                  "result": null,
                  "status": "0"
                  }
Get contract source code for verified contract. Also available through a GraphQL 'addresses' query.

?module=contract&action=getsourcecode&address={addressHash}

getsourcecode

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getsourcecode

address *required

string (query)

A 160-bit code used for identifying contracts.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": {
                    "ABI": "[{\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event\"\n}, {\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event2\"\n}, {\n\"type\":\"function\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}],\n\"name\":\"foo\",\n\"outputs\": []\n}]\n",
                    "CompilerVersion": "v0.2.1-2016-01-30-91a6b35",
                    "ContractName": "Test",
                    "FileName": "{sourcify path or empty}",
                    "ImplementationAddress": "0x000000000000000000000000000000000000000e",
                    "IsProxy": "true",
                    "OptimizationUsed": "1",
                    "SourceCode": "pragma solidity >0.4.24;\n\ncontract Test {\nconstructor() public { b = hex\"12345678901234567890123456789012\"; }\nevent Event(uint indexed a, bytes32 b);\nevent Event2(uint indexed a, bytes32 b);\nfunction foo(uint a) public { emit Event(a, b); }\nbytes32 b;\n}\n"
                  },
                  "status": "1"
                  }

Result {

message
string
example: "OK"
result
array
[Contract]
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

Contract {

ABI
ABI
example: "[{ \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event\" }, { \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event2\" }, { \"type\":\"function\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}], \"name\":\"foo\", \"outputs\": [] }]"
Address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
ContractName
string
example: "Some name"
DecompiledSourceCode
contract decompiled source code
example: const name() = 'CryptoKitties' const GEN0_STARTING_PRICE() = 10^16 const GEN0_AUCTION_DURATION() = 86400 const GEN0_CREATION_LIMIT() = 45000 const symbol() = 'CK' const PROMO_CREATION_LIMIT() = 5000 def storage: ceoAddress is addr # mask(160, 0) at storage #0 cfoAddress is addr # mask(160, 0) at storage #1 stor1.768 is uint16 => uint256 # mask(256, 768) at storage #1 cooAddress is addr # mask(160, 0) at storage #2 stor2.0 is uint256 => uint256 # mask(256, 0) at storage #2 paused is uint8 # mask(8, 160) at storage #2 stor2.256 is uint256 => uint256 # mask(256, 256) at storage #2 stor3 is uint32 # ...<continues>
DecompilerVersion
decompiler version
example: decompiler.version
OptimizationUsed
optimization used
enum: ["0", "1"]
enum
interpretation
"0"
false
"1"
true
SourceCode
contract source code
example: "pragma solidity >0.4.24; contract Test { constructor() public { b = hex"12345678901234567890123456789012"; } event Event(uint indexed a, bytes32 b); event Event2(uint indexed a, bytes32 b); function foo(uint a) public { emit Event(a, b); } bytes32 b; }"

}

200
error
{
                  "message": "Invalid address hash",
                  "result": null,
                  "status": "0"
                  }
Verify a contract with its source code and contract creation information.
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"

?module=contract&action=verify&addressHash={addressHash}&name={name}&compilerVersion={compilerVersion}&optimization={false}&contractSourceCode={contractSourceCode}

verify

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: verify

addressHash *required

string (query)

The address of the contract.

name *required

string (query)

The name of the contract.

compilerVersion *required

string (query)

The compiler version for the contract.

optimization *required

boolean (query)

Whether or not compiler optimizations were enabled.

contractSourceCode *required

string (query)

The source code of the contract.

constructorArguments

string (query)

The constructor argument data provided.

autodetectConstructorArguments

boolean (query)

Whether or not automatically detect constructor argument.

evmVersion

string (query)

The EVM version for the contract.

optimizationRuns

integer (query)

The number of optimization runs used during compilation

library1Name

string (query)

The name of the first library used.

library1Address

string (query)

The address of the first library used.

library2Name

string (query)

The name of the second library used.

library2Address

string (query)

The address of the second library used.

library3Name

string (query)

The name of the third library used.

library3Address

string (query)

The address of the third library used.

library4Name

string (query)

The name of the fourth library used.

library4Address

string (query)

The address of the fourth library used.

library5Name

string (query)

The name of the fourth library used.

library5Address

string (query)

The address of the fourth library used.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": {
                    "ABI": "[{\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event\"\n}, {\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event2\"\n}, {\n\"type\":\"function\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}],\n\"name\":\"foo\",\n\"outputs\": []\n}]\n",
                    "CompilerVersion": "v0.2.1-2016-01-30-91a6b35",
                    "ContractName": "Test",
                    "ImplementationAddress": "0x000000000000000000000000000000000000000e",
                    "IsProxy": "true",
                    "OptimizationUsed": "1",
                    "SourceCode": "pragma solidity >0.4.24;\n\ncontract Test {\nconstructor() public { b = hex\"12345678901234567890123456789012\"; }\nevent Event(uint indexed a, bytes32 b);\nevent Event2(uint indexed a, bytes32 b);\nfunction foo(uint a) public { emit Event(a, b); }\nbytes32 b;\n}\n"
                  },
                  "status": "1"
                  }

Contract {

ABI
ABI
example: "[{ \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event\" }, { \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event2\" }, { \"type\":\"function\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}], \"name\":\"foo\", \"outputs\": [] }]"
Address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
ContractName
string
example: "Some name"
OptimizationUsed
optimization used
enum: ["0", "1"]
enum
interpretation
"0"
false
"1"
true

}

200
error
{
                  "message": "There was an error verifying the contract.",
                  "result": null,
                  "status": "0"
                  }

Verify a contract through Sourcify.
a) if smart-contract already verified on Sourcify, it will automatically fetch the data from the repo
b) otherwise you have to upload source files and JSON metadata file(s).

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--

?module=contract&action=verify_via_sourcify&addressHash={addressHash}

verify_via_sourcify

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: verify_via_sourcify

addressHash *required

string (query)

The address of the contract.

files

file[] (query)

Array with sources and metadata files

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": {
                    "ABI": "[{\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event\"\n}, {\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event2\"\n}, {\n\"type\":\"function\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}],\n\"name\":\"foo\",\n\"outputs\": []\n}]\n",
                    "CompilerVersion": "v0.2.1-2016-01-30-91a6b35",
                    "ContractName": "Test",
                    "ImplementationAddress": "0x000000000000000000000000000000000000000e",
                    "IsProxy": "true",
                    "OptimizationUsed": "1",
                    "SourceCode": "pragma solidity >0.4.24;\n\ncontract Test {\nconstructor() public { b = hex\"12345678901234567890123456789012\"; }\nevent Event(uint indexed a, bytes32 b);\nevent Event2(uint indexed a, bytes32 b);\nfunction foo(uint a) public { emit Event(a, b); }\nbytes32 b;\n}\n"
                  },
                  "status": "1"
                  }

Contract {

ABI
ABI
example: "[{ \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event\" }, { \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event2\" }, { \"type\":\"function\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}], \"name\":\"foo\", \"outputs\": [] }]"
Address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
ContractName
string
example: "Some name"
OptimizationUsed
optimization used
enum: ["0", "1"]
enum
interpretation
"0"
false
"1"
true

}

200
error
{
                  "message": "There was an error verifying the contract.",
                  "result": null,
                  "status": "0"
                  }

Verify a vyper contract with its source code and contract creation information.

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"'

?module=contract&action=verify_vyper_contract&addressHash={addressHash}&name={name}&compilerVersion={compilerVersion}&contractSourceCode={contractSourceCode}

verify_vyper_contract

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: verify_vyper_contract

addressHash *required

string (query)

The address of the contract.

name *required

string (query)

The name of the contract.

compilerVersion *required

string (query)

The compiler version for the contract.

contractSourceCode *required

string (query)

The source code of the contract.

constructorArguments

string (query)

The constructor argument data provided.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": {
                    "ABI": "[{\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event\"\n}, {\n\"type\":\"event\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}],\n\"name\":\"Event2\"\n}, {\n\"type\":\"function\",\n\"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}],\n\"name\":\"foo\",\n\"outputs\": []\n}]\n",
                    "CompilerVersion": "v0.2.1-2016-01-30-91a6b35",
                    "ContractName": "Test",
                    "ImplementationAddress": "0x000000000000000000000000000000000000000e",
                    "IsProxy": "true",
                    "OptimizationUsed": "1",
                    "SourceCode": "pragma solidity >0.4.24;\n\ncontract Test {\nconstructor() public { b = hex\"12345678901234567890123456789012\"; }\nevent Event(uint indexed a, bytes32 b);\nevent Event2(uint indexed a, bytes32 b);\nfunction foo(uint a) public { emit Event(a, b); }\nbytes32 b;\n}\n"
                  },
                  "status": "1"
                  }

Contract {

ABI
ABI
example: "[{ \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event\" }, { \"type\":\"event\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\",\"indexed\":true},{\"name\":\"b\",\"type\":\"bytes32\",\"indexed\":false}], \"name\":\"Event2\" }, { \"type\":\"function\", \"inputs\": [{\"name\":\"a\",\"type\":\"uint256\"}], \"name\":\"foo\", \"outputs\": [] }]"
Address
address hash
example: "0x95426f2bc716022fcf1def006dbc4bb81f5b5164"
ContractName
string
example: "Some name"
OptimizationUsed
optimization used
enum: ["0", "1"]
enum
interpretation
"0"
false
"1"
true

}

200
error
{
                  "message": "There was an error verifying the contract.",
                  "result": null,
                  "status": "0"
                  }

Verify a contract with Standard input JSON file. Its interface the same as Bharat Blockchain's API endpoint

?module=contract&action=verifysourcecode&codeformat={solidity-standard-json-input}&contractaddress={contractaddress}&contractname={contractname}&compilerversion={compilerversion}&sourceCode={sourceCode}

verifysourcecode

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: verifysourcecode

codeformat *required

string (query)

Format of sourceCode(supported only "solidity-standard-json-input")

contractaddress *required

string (query)

The address of the contract.

contractname *required

string (query)

The name of the contract. It could be empty string(""), just contract name("ContractName"), or filename and contract name("contracts/contract_1.sol:ContractName")

compilerversion *required

string (query)

The compiler version for the contract.

sourceCode *required

string (query)

Standard input json

constructorArguments

string (query)

The constructor argument data provided.

autodetectConstructorArguments

boolean (query)

Whether or not automatically detect constructor argument.

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": "b080b96bd06ad1c9341c2afb7e3730311388544961acde94",
                  "status": "1"
                  }

UID {

UID
string
example: b080b96bd06ad1c9341c2afb7e3730311388544961acde94

}

Return status of the verification attempt (works in addition to verifysourcecode method)

?module=contract&action=checkverifystatus&guid={identifierString}

checkverifystatus

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: contract

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: checkverifystatus

guid *required

string (query)

A string used for identifying verification attempt

Curl

                          
Request URL

                          
Server Response

Code

Details

Response Body


                            

Responses

Code

Description
200
successful operation
{
                  "message": "OK",
                  "result": "Pending in queue",
                  "status": "1"
                  }

Status {

status
string
example: `Pending in queue` | `Pass - Verified` | `Fail - Unable to verify` | `Unknown UID`

}

Transaction

Get transaction info.

?module=transaction&action=gettxreceiptstatus&address={transactionHash}

gettxreceiptstatus

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: transaction

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: gettxreceiptstatus

txhash *required

string (query)

Transaction hash. Hash of contents of the transaction.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": {
  "status": "1"
},
"status": "1"
}

Result {

message
string
example: "OK"
result
TransactionReceiptStatus
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

TransactionReceiptStatus {

status
status
enum: ["0", "1"]
enum
interpretation
"0"
fail
"1"
pass

}

200
error
{
"message": "Query parameter txhash is required",
"result": null,
"status": "0"
}
Get transaction receipt status. Also available through a GraphQL 'transaction' query.

?module=transaction&action=gettxreceiptstatus&address={transactionHash}

gettxreceiptstatus

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: transaction

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: gettxreceiptstatus

txhash *required

string (query)

Transaction hash. Hash of contents of the transaction.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": {
  "status": "1"
},
"status": "1"
}

Result {

message
string
example: "OK"
result
TransactionReceiptStatus
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

TransactionReceiptStatus {

status
status
enum: ["0", "1"]
enum
interpretation
"0"
fail
"1"
pass

}

200
error
{
"message": "Query parameter txhash is required",
"result": null,
"status": "0"
}
Get error status and error message. Also available through a GraphQL 'transaction' query.

?module=transaction&action=getstatus&address={transactionHash}

getstatus

GET POST


Parameters

Name

Description

Module *required

string (query)

A string with the name of the module to be invoked.

Must be set to: transaction

Action *required

string (query)

A string with the name of the action to be invoked.

Must be set to: getstatus

txhash *required

string (query)

Transaction hash. Hash of contents of the transaction.

Curl

        
Request URL

        
Server Response

Code

Details

Response Body


          

Responses

Code

Description
200
successful operation
{
"message": "OK",
"result": {
  "errDescription": "Out of gas",
  "isError": "1"
},
"status": "1"
}

Result {

message
string
example: "OK"
result
TransactionStatus
status
status
enum: ["0", "1"]
enum
interpretation
"0"
error
"1"
ok

}

TransactionStatus {

errDescription
string
example: "Out of gas"
isError
isError
enum: ["0", "1"]
enum
interpretation
"0"
pass
"1"
error

}

200
error
{
"message": "Query parameter txhash is required",
"result": null,
"status": "0"
}