Developers / JSON-RPC reference

JSON-RPC reference

Methods exposed by the observer node. Standard Ethereum JSON-RPC (EIP-1474) plus QBFT consensus methods. Endpoint: https://chain.kxco.ai/rpc

eth_*

eth_chainId

#

Returns the chain ID. Use to verify you are connected to KXCO Armature (0x457 = 1111).

Returns

QUANTITY — chain ID as hex

Example
curl -s -X POST https://chain.kxco.ai/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
# → {"jsonrpc":"2.0","id":1,"result":"0x457"}

eth_blockNumber

#

Returns the number of the most recent block.

Returns

QUANTITY — latest block number

Example
curl -s -X POST https://chain.kxco.ai/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

eth_getBlockByNumber

#

Returns block information by number.

Params
blockNumberQUANTITY|TAGhex block number, "latest", "earliest", or "pending"
fullTxsBOOLEANtrue to include full tx objects, false for hashes only
Returns

Object — block header, transactions, miner, gas, etc.

Example
curl -s -X POST https://chain.kxco.ai/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}'

eth_getBlockByHash

#

Returns block information by hash.

Params
blockHashDATA(32)32-byte block hash
fullTxsBOOLEANtrue for full tx objects, false for hashes
Returns

Object — same shape as eth_getBlockByNumber

eth_getTransactionByHash

#

Returns a transaction by hash.

Params
txHashDATA(32)32-byte transaction hash
Returns

Object — tx fields: from, to, value, gas, gasPrice, nonce, input, blockNumber

eth_getTransactionReceipt

#

Returns the receipt of a mined transaction. Null while pending.

Params
txHashDATA(32)32-byte transaction hash
Returns

Object — status (0x1=success, 0x0=failed), gasUsed, logs, contractAddress

eth_getBalance

#

Returns the ARMR balance of an account in wei.

Params
addressDATA(20)20-byte account address
blockNumberQUANTITY|TAGhex block number or "latest"
Returns

QUANTITY — balance in wei (hex)

Example
curl -s -X POST https://chain.kxco.ai/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xc0f4710f6d73ee812d64a9f0d2a909ae702df91e","latest"],"id":1}'

eth_getCode

#

Returns the bytecode at an address. Empty for EOAs.

Params
addressDATA(20)20-byte account address
blockNumberQUANTITY|TAGhex block number or "latest"
Returns

DATA — contract bytecode

eth_getStorageAt

#

Returns the value at a storage slot.

Params
addressDATA(20)contract address
slotQUANTITY32-byte storage slot
blockNumberQUANTITY|TAGhex block number or "latest"
Returns

DATA(32) — 32-byte storage value

eth_getTransactionCount

#

Returns the number of transactions sent from an address (nonce).

Params
addressDATA(20)account address
blockNumberQUANTITY|TAGhex block number or "latest"
Returns

QUANTITY — transaction count

eth_call

#

Executes a read-only contract call without creating a transaction.

Params
callObjectObject{to, data, from?, value?, gas?, gasPrice?}
blockNumberQUANTITY|TAGhex block number or "latest"
Returns

DATA — encoded return value

eth_estimateGas

#

Estimates gas required for a transaction.

Params
callObjectObject{from, to, data, value?}
Returns

QUANTITY — gas estimate

eth_sendRawTransaction

#

Submits a signed transaction.

Params
signedTxDATARLP-encoded signed transaction
Returns

DATA(32) — transaction hash

eth_gasPrice

#

Returns the current gas price. Always 0 on KXCO Armature (free transactions for permissioned participants).

Returns

QUANTITY — gas price in wei

eth_getLogs

#

Returns logs matching a filter. Use for event indexing.

Params
filterObject{fromBlock, toBlock, address?, topics?}
Returns

Array — matching log objects

eth_syncing

#

Returns sync status of the observer node.

Returns

Object or false — {startingBlock, currentBlock, highestBlock} when syncing, false when caught up

qbft_*

qbft_getValidatorsByBlockNumber

#

Returns the set of active validators for a given block.

Params
blockNumberQUANTITY|TAGhex block number or "latest"
Returns

Array<DATA(20)> — validator addresses

Example
curl -s -X POST https://chain.kxco.ai/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"],"id":1}'

qbft_getValidatorsByBlockHash

#

Returns the validator set at the given block hash.

Params
blockHashDATA(32)32-byte block hash
Returns

Array<DATA(20)> — validator addresses

qbft_getPendingVotes

#

Returns pending validator add/remove proposals.

Returns

Object — {validatorAddress: true|false} (true=add, false=remove)

net_*

net_version

#

Returns the network ID as a string. "1111" for KXCO Armature.

Returns

String

net_listening

#

Returns true if the client is listening for connections.

Returns

BOOLEAN

net_peerCount

#

Returns the number of connected peers.

Returns

QUANTITY

web3_*

web3_clientVersion

#

Returns the Besu client version string.

Returns

String — e.g. "besu/v26.4.0"

web3_sha3

#

Returns keccak-256 of the given data.

Params
dataDATAhex-encoded input
Returns

DATA(32) — hash

Enabled APIs on the observer: ETH, NET, WEB3, TXPOOL, ADMIN. QBFT methods are served by the validator nodes; the observer relays them.

For full JSON-RPC semantics see the Hyperledger Besu API reference.