API del explorador
xrs-node 0.1.1puerto 50008
JSON-RPC 2.0 en /, REST bajo /v2.
Base
| Dato | Valor |
|---|---|
| Base | http://<host>:50008 |
| Envoltorio | {"success":true, |
| Error | {"success":false,, HTTP 200 |
| Las listas añaden | "pagination":{total, |
page_size | 1–100 |
| Historial de cuenta | page_size ≤ 200, page ≤ 50, cursor before |
| Rutas de registro | after / next_after, 32 por página |
| Búsquedas por firma o hash | los últimos 1,000 bloques |
/v2/block/slot/{n} | llega al disco |
| CORS | * |
JSON-RPC
| Método | Parámetros | Resultado |
|---|---|---|
getBalance | [address] | {context:{slot}, value: lamports} |
getAccountInfo | [address] | value:{lamports, owner:"system", executable:false, stake, isValidator} |
getSlot | — | último slot |
getBlockHeight | — | altura de la cadena |
getLatestBlockhash, alias getRecentBlockhash | — | value:{blockhash: hex, lastValidBlockHeight: slot + 150} |
getBlock | [slot] | {blockhash, parentSlot, blockTime, blockHeight, transactions: cuenta} |
getTransaction | [signature] | {slot, blockTime, meta:{err, fee, instructionOutcomes}, transaction} |
getSignaturesForAddress | [address, {limit}] | una fila por recibo, el más reciente primero; limit ≤ 200 |
getHealth | — | "ok" |
getVersion | — | {"solana-core": "1.0.0", "xeriscoin": "1.0.0"}, fijo en el código |
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 e id son obligatorios. Los errores llegan en result.error, nunca en el nivel superior. Connection de @solana/web3.js falla aquí: sendTransaction, requestAirdrop, getEpochInfo responden Unknown method.REST v2
| Ruta | Devuelve |
|---|---|
/v2/stats | altura, slot, totales, tps_estimate |
/ | más recientes primero; hash hex |
/v2/block/slot/{slot} | detalle del bloque; las filas dicen included |
/v2/block/hash/{hash} | igual, solo memoria |
/ | más recientes primero |
/v2/tx/{signature} | status, instructions[], confirmations |
/v2/account/{address} | balance, stake, is_validator; nunca 404 |
/ | recibos; 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 | tokens RWA |
/v2/rwa/{id} | token, rwa, contract, holders |
/v2/contracts | contract_id, type, owner, is_active |
/ | contract; registros paginados, límite 32 |
/v2/pools | reserve_a, reserve_b, fee_bps; precios como strings |
Las rutas heredadas /blocks, /balances, /stakes y /wallet/{address} siguen respondiendo, sin envoltorio.
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":…}
Estado de la transacción
status | Significado |
|---|---|
confirmed | todas las instrucciones confirmadas |
partial | algunas |
failed | ninguna, o el pagador no cubrió la comisión |
included | en un bloque; resultado no indexado |
| Almacén de recibos | meta.err | instructionOutcomes |
|---|---|---|
| ninguno | "OutcomeUnknown" | null |
| sin filas | "ExecutionFailed" | [] |
| todas ok | null | [{index, ok:true}…] |
| alguna falló | {"InstructionError":[index, | lista completa |
confirmations es current_slot − block_slot. Pasados 64 el bloque es final en la ruta pública. Envío: POST /submit; formato: sobre.
Formas
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 } }
Unidades
| Campo | Unidad |
|---|---|
poh_timestamp | Unix ms |
blockTime | Unix s |
amount | lamports |
amount_xrs | XRS |
amount en attest_reputation | puntuación |
amount en oracle_submit | valor |
amount en open_dispute, dispute_deal | fianza |
amount en open_channel | depósito |
tx_type es contract_call:<method> en las vistas en vivo y contract_call en los recibos; el historial de cuenta antepone sent: o received:.