# JSON-RPC API

Each Vite node provides JSON-RPC API that allows applications to connect to the blockchain. Developers can interact with on-chain data and send different types of transactions to the network by utilizing the endpoints provided by the API. The API follows a JSON-RPC standard, a stateless, lightweight, remote procedure call (RPC) protocol that is commonly used when interacting with blockchain.

# Protocol

JSON-RPC 2.0 HTTP Publish–Subscribe WebSocket
Protocol Default Port
HTTP 48132
Websocket 41420

Transaction IS Account Block

On Vite, a transaction is equivalent to an account block. When we mention a transaction, it also refers to an account block, and vice versa.

# Type Convertion

  • Bytes (byte[]) are converted to a base64 string
  • hash is a 32 byte hex string
  • hex and base64 is strings in hex or base64 format
  • For Numeric types such as uint64, float and bigint, when they are tailed with string type, means they should be passed as strings
  • address and tokenId are passed in as strings

# Common Models

# AccountInfo

Name Type Description
address address Account address
blockCount uint64 string The total number of transactions
balanceInfoMap map<tokenId, BalanceInfo> Account balance

# BalanceInfo

Name Type Description
tokenInfo TokenInfo Token's information
balance bigint string Token balance
transactionCount uint64 string The total number of transactions for this token

# TokenInfo

Name Type Description
tokenName string Token name
tokenSymbol string Token symbol
totalSupply bigint string Token total supply
decimals uint8 Decimal places
owner address Token owner
tokenId tokenId Token id
isReIssuable bool true means the token can be re-issued
maxSupply bigint string The maximum supply of the token. 0 for non-reissuable token
isOwnerBurnOnly bool true means only the token owner can burn the tokens. Deprecated
index uint16 A number between 0-999 to distinguish tokens with the same symbol

# AccountBlock

Name Type Description
blockType byte Block type. 1 - request (create contract), 2 - request (send transaction), 3 - request (mint token), 4 - response (receive transaction), 5 - response (execute contract failed), 6 - request (refund), 7 - response (genesis).
height uint64 string Account block height
hash hash 32-byte block hash
previousHash hash The hash of previous account block. For the first transaction in account, the value is a string of 64 zeros
address address Account address
publicKey base64 Producer's public key
producer address Block producer address. For user account, producer is the account address itself; for contract account, the address is the delegate node of the consensus group
fromAddress address The address of account the transaction is sent from
toAddress address The address of account the transaction is sent to
sendBlockHash hash The hash of the corresponding request transaction. For request transaction, the value is a string of 64 zeros
tokenId tokenId Token id
amount bigint string Transfer amount
tokenInfo TokenInfo Token transferred
fee bigint string Transaction fee
data base64 Additional block data
difficulty bigint string PoW difficulty
nonce base64 PoW nonce
signature base64 Block signature
quotaByStake uint64 string Quota consumed by the transaction, excluding quota obtained through PoW
totalQuota uint64 string Quota consumed by the transaction in total
vmLogHash hash The hash of event log generated in smart contract response
triggeredSendBlockList Array<AccountBlock> A list of request transactions sent within this block. RS blocks only.
confirmations uint64 string Confirmation number
firstSnapshotHash hash The hash of snapshot block which snapshot the transaction
timestamp int64 The timestamp (in seconds) when the transaction is snapshotted
receiveBlockHeight uint64 string The height of the corresponding response transaction. Request block only
receiveBlockHash hash The hash of the corresponding response transaction. Request block only

# SnapshotBlock

Name Type Description
producer address Block producer address
hash hash Snapshot block hash
previousHash hash The hash of previous snapshot block
height uint64 Snapshot block height
publicKey base64 Producer's public key
signature base64 Block signature
timestamp int64 The timestamp (in second) when the block is produced
seed uint64 Random seed generated by the same producer in previous round
nextSeedHash hash Hash of random seed generated in current round
snapshotData SnapshotContent Content of the snapshot
version uint32 Snapshot version

# VmLog

Name Type Description
topics Array<hash> Event topics
data base64 Event log data

# Logs

Name Type Description
vmlog VmLog Event log
accountBlockHash hash The hash of account block which contains the log
accountBlockHeight uint64 string The height of account block which contains the log
address address Contract address

# Common RPC Errors

Description Code Example
Failed to parse JSON string -32700 {"code":-32700,"message":"missing request id"}
Invalid JSON request -32600 {"code":-32600,"message":"Unable to parse subscription request"}
Method not found. Please check if corresponding namespace has been added in PublicModules -32601 {"code":-32601,"message":"The method tx_sendRawTx does not exist/is not available"}
Parameter type error -32602 {"code":-32602,"message":"missing value for required argument"}
Service stopped -32000 {"code":-32000,"message":"server is shutting down"}
Service temporarily unavailable. Please try again later -32001 {"code":-32001,"message":"server execute panic"}
Callback error -32002 {"code":-32002,"message":"notifications not supported"}

# Common Errors

Description Code Example
Wrong password -34001 {"code":-34001,"message":"error decrypting key"}
Insufficient balance -35001 {"code":-35001,"message":"insufficient balance for transfer"}
Insufficient quota -35002 {"code":-35002,"message":"out of quota"}
Invalid parameter -35004 {"code":-35004,"message":"invalid method param"}
Too many PoW requests -35005 {"code":-35005,"message":"calc PoW twice referring to one snapshot block"}
ABI not found -35006 {"code":-35006,"message":"abi: method not found"}
Invalid response latency -35007 {"code":-35007,"message":"invalid confirm time"}
Contract not found -35008 {"code":-35008,"message":"contract not exists"}
Invalid quota multiplier -35010 {"code":-35010,"message":"invalid quota ratio"}
PoW not available due to network jam -35011 {"code":-35011,"message":"PoW service not supported"}
Maximum quota for single transaction reached -35012 {"code":-35012,"message":"quota limit for block reached"}
Invalid block producing address -36001 {"code":-36001, "message":"general account's sendBlock.Height must be larger than 1"}
Hash verification failure -36002 {"code":-36002,"message":"verify hash failed"}
Signature verification failure -36003 {"code":-36003,"message":"verify signature failed"}
Invalid PoW nonce -36004 {"code":-36004,"message":"check pow nonce failed"}
Hash verification failure for previous block -36005 {"code":-36005,"message":"verify prevBlock failed, incorrect use of prevHash or fork happened"}
Waiting for block -36006 {"code":-36006,"message":"verify referred block failed, pending for them"}