Explorer API
xrs-node 0.1.1port 50008
JSON-RPC 2.0 at /, REST under /v2.
Base
| Fact | Value |
|---|---|
| Base | http://<host>:50008 |
| Wrapper | {"success":true, |
| Error | {"success":false,, HTTP 200 |
| Lists add | "pagination":{total, |
page_size | 1–100 |
| Account history | page_size ≤ 200, page ≤ 50, cursor before |
| Registry routes | after / next_after, 32 per page |
| Lookups by signature or hash | the newest 1,000 blocks |
/v2/block/slot/{n} | reaches disk |
| CORS | * |
JSON-RPC
| Method | Params | Result |
|---|---|---|
getBalance | [address] | {context:{slot}, value: lamports} |
getAccountInfo | [address] | value:{lamports, owner:"system", executable:false, stake, isValidator} |
getSlot | — | newest slot |
getBlockHeight | — | chain height |
getLatestBlockhash, alias getRecentBlockhash | — | value:{blockhash: hex, lastValidBlockHeight: slot + 150} |
getBlock | [slot] | {blockhash, parentSlot, blockTime, blockHeight, transactions: count} |
getTransaction | [signature] | {slot, blockTime, meta:{err, fee, instructionOutcomes}, transaction} |
getSignaturesForAddress | [address, {limit}] | one row per receipt, newest first; limit ≤ 200 |
getHealth | — | "ok" |
getVersion | — | {"solana-core": "1.0.0", "xeriscoin": "1.0.0"}, hard-coded |
curl -s -X POST http://138.197.116.81:50008/ \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getLatestBlockhash"}'
# {"jsonrpc":"2.0","id":1,"result":{"context":{"slot":…},"value":{"blockhash":"<hex>","lastValidBlockHeight":…}}}
jsonrpc and id are required. Errors come back in result.error, never at the top level. @solana/web3.js Connection fails here: sendTransaction, requestAirdrop, getEpochInfo answer Unknown method.REST v2
| Route | Returns |
|---|---|
/v2/stats | height, slot, totals, tps_estimate |
/ | newest first; hash hex |
/v2/block/slot/{slot} | block detail; rows read included |
/v2/block/hash/{hash} | same, memory only |
/ | newest first |
/v2/tx/{signature} | status, instructions[], confirmations |
/v2/account/{address} | balance, stake, is_validator; never 404 |
/ | receipts; cursor |
/v2/validators | stake, stake_percentage, blocks_proposed |
/v2/search?q= | result_type: block, transaction, account, validator |
/v2/tokens?after=&limit= | tokens; next_after |
/v2/token/{id}/holders | holders[], holder_count |
/v2/rwa | RWA tokens |
/v2/rwa/{id} | token, rwa, contract, holders |
/v2/contracts | contract_id, type, owner, is_active |
/ | contract; registries paged, limit 32 |
/v2/pools | reserve_a, reserve_b, fee_bps; prices as strings |
The legacy /blocks, /balances, /stakes and /wallet/{address} still answer, unwrapped.
curl -s 'http://138.197.116.81:50008/v2/account/<address>/transactions?page_size=5'
# {"success":true,"data":[…],"pagination":{"total":…,"page":1,"page_size":5,"total_pages":…},"cursor":…}
Transaction status
status | Meaning |
|---|---|
confirmed | every instruction committed |
partial | some did |
failed | none did, or the payer could not cover the fee |
included | in a block; outcome not indexed |
| Receipt store | meta.err | instructionOutcomes |
|---|---|---|
| none | "OutcomeUnknown" | null |
| no rows | "ExecutionFailed" | [] |
| all ok | null | [{index, ok:true}…] |
| some failed | {"InstructionError":[index, | full list |
confirmations is current_slot − block_slot. Past 64 the block is final on the public path. Submit: POST /submit; layout: envelope.
Shapes
GET /v2/stats
{ "success": true, "data": {
"block_height": usize, "current_slot": u64,
"total_transactions": usize, "total_accounts": usize,
"total_staked": u64, "validator_count": usize,
"tps_estimate": f64 } }
GET /v2/tx/{signature}
{ "success": true, "data": {
"signature": "<base58>", "block_slot": u64, "block_hash": "<hex>",
"poh_timestamp": u128,
"from": "<str>", "to": "<str>", "amount": u64, "amount_xrs": f64,
"tx_type": "<str>", "details": object | null,
"status": "confirmed" | "partial" | "failed" | "included",
"instructions": [ { "index": u32, "status": "confirmed" | "failed" } ],
"confirmations": u64 } }
GET /v2/account/{address}
{ "success": true, "data": {
"address": "<str>", "balance": u64, "balance_xrs": f64,
"stake": u64, "is_validator": bool, "blocks_proposed": u64 } }
Units
| Field | Unit |
|---|---|
poh_timestamp | Unix ms |
blockTime | Unix s |
amount | lamports |
amount_xrs | XRS |
amount on attest_reputation | score |
amount on oracle_submit | value |
amount on open_dispute, dispute_deal | bond |
amount on open_channel | deposit |
tx_type is contract_call:<method> in live views and contract_call in receipts; account history prefixes sent: or received:.