Skip to content

Latest commit

 

History

History
304 lines (192 loc) · 21.2 KB

jsonrpc.md

File metadata and controls

304 lines (192 loc) · 21.2 KB

JSON-RPC

JSON-RPC smartBCH

Here is a list of all the supported RPC endpoints of smartBCH, sorted by the prefixes. The endpoints with "sbch" prefix are smartBCH-specific, which are used by the BasicBrowser. The endpoints with "web3", "net" and "eth" prefixes have the same function as infura, except for some features which are described below.

Web3

JSON-RPC methods Doc (eth.wiki) Doc (infura.io/docs) Implemented?
web3_clientVersion https://eth.wiki/json-rpc/API#web3_clientVersion https://infura.io/docs/ethereum/json-rpc/web3-clientVersion
web3_sha3 https://eth.wiki/json-rpc/API#web3_sha3

Net

JSON-RPC methods Doc (eth.wiki) Doc (infura.io/docs) Implemented?
net_version https://eth.wiki/json-rpc/API#net_version https://infura.io/docs/ethereum/json-rpc/net-version
net_peerCount https://eth.wiki/json-rpc/API#net_peercount https://infura.io/docs/ethereum/json-rpc/net-peerCount
net_listening https://eth.wiki/json-rpc/API#net_listening https://infura.io/docs/ethereum/json-rpc/net-listening

ETH

⚠️the 'pending' block number parameter is not supported, because the mempool of smartbchd is invisable now.

The throughput of smartBCH is very high, and no transactions will be waiting in the mempool for a long time, so there is no need to check whether a transaction is accepted by mempool.

JSON-RPC methods Doc (eth.wiki) Doc (infura.io/docs) Implemented?
eth_protocolVersion https://eth.wiki/json-rpc/API#eth_protocolversion https://infura.io/docs/ethereum/json-rpc/eth-protocolVersion
eth_syncing https://eth.wiki/json-rpc/API#eth_syncing https://infura.io/docs/ethereum/json-rpc/eth-syncing
eth_coinbase https://eth.wiki/json-rpc/API#eth_coinbase ✅ (returns 0)
eth_mining https://eth.wiki/json-rpc/API#eth_mining https://infura.io/docs/ethereum/json-rpc/eth-mining
eth_hashrate https://eth.wiki/json-rpc/API#eth_hashrate https://infura.io/docs/ethereum/json-rpc/eth-hashrate
eth_gasPrice https://eth.wiki/json-rpc/API#eth_gasprice https://infura.io/docs/ethereum/json-rpc/eth-gasPrice ✅ (returns 0)
eth_accounts https://eth.wiki/json-rpc/API#eth_accounts https://infura.io/docs/ethereum/json-rpc/eth-accounts
eth_blockNumber https://eth.wiki/json-rpc/API#eth_blocknumber https://infura.io/docs/ethereum/json-rpc/eth-blockNumber
eth_getBalance https://eth.wiki/json-rpc/API#eth_getbalance https://infura.io/docs/ethereum/json-rpc/eth-getBalance ✅ ❌pending
eth_getStorageAt https://eth.wiki/json-rpc/API#eth_getstorageat https://infura.io/docs/ethereum/json-rpc/eth-getStorageAt ✅ ❌pending
eth_getTransactionCount https://eth.wiki/json-rpc/API#eth_gettransactioncount https://infura.io/docs/ethereum/json-rpc/eth-getTransactionCount ✅ ❌pending
eth_getBlockTransactionCountByHash https://eth.wiki/json-rpc/API#eth_getblocktransactioncountbyhash https://infura.io/docs/ethereum/json-rpc/eth-getBlockTransactionCountByHash
eth_getBlockTransactionCountByNumber https://eth.wiki/json-rpc/API#eth_getblocktransactioncountbynumber https://infura.io/docs/ethereum/json-rpc/eth-getBlockTransactionCountByNumber ✅ ❌pending
eth_getUncleCountByBlockHash https://eth.wiki/json-rpc/API#eth_getunclecountbyblockhash https://infura.io/docs/ethereum/json-rpc/eth-getUncleCountByBlockHash
eth_getUncleCountByBlockNumber https://eth.wiki/json-rpc/API#eth_getunclecountbyblocknumber https://infura.io/docs/ethereum/json-rpc/eth-getUncleCountByBlockNumber
eth_getCode https://eth.wiki/json-rpc/API#eth_getcode https://infura.io/docs/ethereum/json-rpc/eth-getCode ✅ ❌pending
eth_sign https://eth.wiki/json-rpc/API#eth_sign
eth_signTransaction https://eth.wiki/json-rpc/API#eth_signtransaction
eth_sendTransaction https://eth.wiki/json-rpc/API#eth_sendtransaction
eth_sendRawTransaction https://eth.wiki/json-rpc/API#eth_sendrawtransaction https://infura.io/docs/ethereum/json-rpc/eth-sendRawTransaction
eth_call https://eth.wiki/json-rpc/API#eth_call https://infura.io/docs/ethereum/json-rpc/eth-call ✅ ❌pending
eth_estimateGas https://eth.wiki/json-rpc/API#eth_estimategas https://infura.io/docs/ethereum/json-rpc/eth-estimateGas
eth_getBlockByHash https://eth.wiki/json-rpc/API#eth_getblockbyhash https://infura.io/docs/ethereum/json-rpc/eth-getBlockByHash
eth_getBlockByNumber https://eth.wiki/json-rpc/API#eth_getblockbynumber https://infura.io/docs/ethereum/json-rpc/eth-getBlockByNumber ✅ ❌pending
eth_getTransactionByHash https://eth.wiki/json-rpc/API#eth_gettransactionbyhash https://infura.io/docs/ethereum/json-rpc/eth-getTransactionByHash
eth_getTransactionByBlockHashAndIndex https://eth.wiki/json-rpc/API#eth_gettransactionbyblockhashandindex https://infura.io/docs/ethereum/json-rpc/eth-getTransactionByBlockHashAndIndex
eth_getTransactionByBlockNumberAndIndex https://eth.wiki/json-rpc/API#eth_gettransactionbyblocknumberandindex https://infura.io/docs/ethereum/json-rpc/eth-getTransactionByBlockNumberAndIndex ✅ ❌pending
eth_getTransactionReceipt https://eth.wiki/json-rpc/API#eth_gettransactionreceipt https://infura.io/docs/ethereum/json-rpc/eth-getTransactionReceipt
eth_getUncleByBlockHashAndIndex https://eth.wiki/json-rpc/API#eth_getunclebyblockhashandindex https://infura.io/docs/ethereum/json-rpc/eth-getUncleByBlockHashAndIndex
eth_getUncleByBlockNumberAndIndex https://eth.wiki/json-rpc/API#eth_getunclebyblocknumberandindex https://infura.io/docs/ethereum/json-rpc/eth-getUncleByBlockNumberAndIndex
eth_getCompiles https://eth.wiki/json-rpc/API#eth_getcompilers
eth_compileLLL https://eth.wiki/json-rpc/API#eth_compilelll
eth_compileSolidity https://eth.wiki/json-rpc/API#eth_compilesolidity
eth_compileSerpent https://eth.wiki/json-rpc/API#eth_compileserpent
eth_newFilter https://eth.wiki/json-rpc/API#eth_newfilter https://infura.io/docs/ethereum/json-rpc/eth-newFilter ✅ ❌pending
eth_newBlockFilter https://eth.wiki/json-rpc/API#eth_newblockfilter https://infura.io/docs/ethereum/json-rpc/eth-newBlockFilter
eth_newPendingTransactionFilter https://eth.wiki/json-rpc/API#eth_newpendingtransactionfilter
eth_uninstallFilter https://eth.wiki/json-rpc/API#eth_uninstallfilter https://infura.io/docs/ethereum/json-rpc/eth-uninstallFilter
eth_getFilterChanges https://eth.wiki/json-rpc/API#eth_getfilterchanges https://infura.io/docs/ethereum/json-rpc/eth-getFilterChanges
eth_getFilterLogs https://eth.wiki/json-rpc/API#eth_getfilterlogs
eth_getLogs https://eth.wiki/json-rpc/API#eth_getlogs https://infura.io/docs/ethereum/json-rpc/eth-getLogs ✅ ❌pending
eth_getWork https://eth.wiki/json-rpc/API#eth_getwork https://infura.io/docs/ethereum/json-rpc/eth-getWork
eth_submitWork https://eth.wiki/json-rpc/API#eth_submitwork https://infura.io/docs/ethereum/json-rpc/eth-submitWork
eth_submitHashrate https://eth.wiki/json-rpc/API#eth_submithashrate https://infura.io/docs/ethereum/json-rpc/eth-hashrate
eth_chainId https://infura.io/docs/ethereum/json-rpc/eth-chainId
eth_subscribe https://infura.io/docs/ethereum/wss/eth-subscribe
eth_unsubscribe https://infura.io/docs/ethereum/wss/eth-unsubscribe

Txpool (non-standard)

JSON-RPC methods Doc Implemented?
txpool_content https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_content ✅ (returns empty data)
txpool_status https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_status ✅ (returns empty data)
txpool_inspect https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_inspect ✅ (returns empty data)

SBCH

JSON-RPC methods Doc (eth.wiki) Doc (infura.io/docs) Since
sbch_queryTxBySrc N/A N/A v0.1.0
sbch_queryTxByDst N/A N/A v0.1.0
sbch_queryTxByAddr N/A N/A v0.1.0
sbch_queryLogs N/A N/A v0.1.0
sbch_getTxListByHeight N/A N/A v0.1.0
sbch_getTxListByHeightWithRange N/A N/A v0.1.0
sbch_getAddressCount N/A N/A v0.1.0
sbch_getSep20AddressCount N/A N/A v0.2.0
sbch_getTransactionReceipt N/A N/A v0.4.0
sbch_validatorsInfo N/A N/A V0.4.1

sbch_queryTxBySrc

Returns the information about transactions requested by sender address and block range.

Parameters:

  1. DATA, 20 Bytes - from address
  2. QUANTITY - integer, start number
  3. QUANTITY - integer, end number
  4. QUANTITY - integer, the maximal number of txs to return, 0 stands for default limit

Note: the start number can be greater than the end number, if so, the results will be sorted by block height in descending order.

Retrns:

Array - array of transaction objects, see eth_getTransactionByHash

sbch_queryTxByDst

Returns the information about transactions requested by recipient address and block range.

Parameters:

  1. DATA, 20 Bytes - to address
  2. QUANTITY|TAG - integer of start number, or string "latest" for the last mined block
  3. QUANTITY|TAG - integer of end number, or string "latest" for the last mined block
  4. QUANTITY - integer, the maximal number of txs to return, 0 stands for default limit

Note: the start number can be greater than the end number, if so, the results will be sorted by block height in descending order.

Retrns:

Array - array of transaction objects, see eth_getTransactionByHash

sbch_queryTxByAddr

Returns the information about transactions requested by address (sender or recipient) and block range.

Parameters:

  1. DATA, 20 Bytes - from or to address
  2. QUANTITY|TAG - integer of start number, or string "latest" for the last mined block
  3. QUANTITY|TAG - integer of end number, or string "latest" for the last mined block
  4. QUANTITY - integer, the maximal number of txs to return, 0 stands for default limit

Note: the start number can be greater than the end number, if so, the results will be sorted by block height in descending order.

Retrns:

Array - array of transaction objects, see eth_getTransactionByHash

sbch_queryLogs

Query logs by address, topics and block range. It is different from eth_getLogs in:

  1. the contract address is required, not optional;
  2. the topics are position-independent, which means as long as a log has the specified topics in any position, it will be included in the returned result.

Parameters:

  1. DATA, 20 Bytes - contract address
  2. Array of DATA, topics
  3. QUANTITY|TAG - integer of start number, or string "latest" for the last mined block
  4. QUANTITY|TAG - integer of end number, or string "latest" for the last mined block
  5. QUANTITY - integer, the maximal number of txs to return, 0 stands for default limit.

Note: the start number can be greater than the end number, if so, the results will be sorted by block height in descending order.

Returns:

Array - array of log objects, see eth_getLogs

sbch_getTxListByHeight

Get tx list by height.

Parameters:

  1. QUANTITY|TAG - integer of start number, or string "latest" for the last mined block

Returns:

Array - array of transaction objects, see sbch_getTransactionReceipt

sbch_getTxListByHeightWithRange

Get tx list by height and tx index range.

Parameters:

  1. QUANTITY|TAG - integer of start number, or string "latest" for the last mined block
  2. QUANTITY - integer of start tx index
  3. QUANTITY - integer of end tx index, or "0x0" which stands for "the largest tx index"

Returns:

Array - array of transaction objects, see sbch_getTransactionReceipt

sbch_getAddressCount

Returns the times addr acts as a to-address or from-address of a transaction.

Parameters:

  1. String, kind of the query, could be "from", "to", or "both"
  2. DATA, 20 Bytes - EOA or contract address

Returns:

QUANTITY - integer of count

sbch_getSep20AddressCount

Returns the times addr acts as a to-address or from-address of a SEP20 Transfer event at some contract.

Parameters:

  1. String, kind of the query, could be "from", "to", or "both"
  2. DATA, 20 Bytes - SEP20 contract address
  3. DATA, 20 Bytes - EOA or contract address

Returns:

QUANTITY - integer of count

sbch_getTransactionReceipt

Enhanced version of eth_getTransactionReceipt, the returned array of objects contain additional information about internal transactions.

Parameters: same as eth_getTransactionReceipt

Returns: array of objects sepcified by eth_getTransactionReceipt plus one more field of type Array: internalTransactions.

Each object in internalTransactions array contains the following fields:

  • callPath: string - a string representation of call type, depth and index of internal transaction (e.g. staticcall_0_1_1).
  • from: DATA, 20 Bytes - address of the sender.
  • to: DATA, 20 Bytes - address of the receiver.
  • gas: QUANTITY - gas provided by the sender.
  • value: QUANTITY - value transferred in Wei.
  • input: DATA - the data send along with the internal transaction.
  • status: QUANTITY - either 1 (success) or 0 (failure).
  • gasUsed: QUANTITY - the amount of gas used by this internal transaction.
  • output: DATA - the data returned by the internal transaction.
  • contractAddress: DATA, 20 Bytes - The contract address created, if the transaction was a contract creation, otherwise null.

sbch_validatorsInfo

Returns the validators info.

Parameters: N/A

Returns: a validator info object:

  • genesisMainnetBlockHeight: QUANTITY - The BCH mainnet height when smartbch chain mint genesis block.
  • currEpochNum: QUANTITY - The epoch number of current epoch.
  • validators: Array - Array of validator object, which mean validators created by call stakingContract.createValidator method.
  • validatorsUpdate: Array - Array of validator object, which mean validators whose voting power updated when epoch switch.
  • pendingRewards: Array - Array of pending rewards object, which mean validator pending rewards.
  • minGasPrice: QUANTITY - The minimum gas price decided in current block.
  • lastMinGasPrice: QUANTITY - The minimum gas price used in current block.
  • currValidators: Array - Array of validator object, which mean validators who on duty in current epoch.

And the validator object has fields:

  • address: DATA, 20 Bytes - Address of the validator.
  • pubkey: DATA, 32 Bytes - Consensus pubkey of the validator.
  • reward_to: DATA, 20 Bytes - Address to receive block mint rewards.
  • voting_power: QUANTITY - The minimum gas price decided in current block.
  • introduction: String - The introduction of validator.
  • staked_coins DATA, 32 Bytes - Staked coins of the validator.
  • is_retiring: Boolean - Indicate whether validator is retired.