Skip to Content

JSON-RPC

The Solidus blockchain exposes a JSON-RPC 2.0 endpoint for querying blocks, transactions, accounts, and DID documents directly from the network.

Endpoint: https://rpc.solidus.network

All requests use POST with Content-Type: application/json. No authentication is required.

Request Format

Every request follows the JSON-RPC 2.0 specification.

{ "jsonrpc": "2.0", "method": "method_name", "params": [], "id": 1 }

Error Format

Errors follow the JSON-RPC 2.0 error object structure.

{ "jsonrpc": "2.0", "error": { "code": -32602, "message": "Invalid params: DID not found" }, "id": 1 }
CodeMeaning
-32700Parse error — invalid JSON
-32600Invalid request — missing required fields
-32601Method not found
-32602Invalid params
-32603Internal error

Methods

There is no solidus_getAccount method — a call to it returns {"error":{"code":-32601,"message":"Method not found"}}. Account balance and nonce are two separate calls: solidus_getBalance and solidus_getNonce. All hashes below are lowercase hex with no 0x prefix, timestamps are Unix milliseconds (timestamp_ms), and response shapes below were captured live from rpc.solidus.network.

solidus_getBalance

Returns the balance (smallest units) for a base58 address.

ParamTypeDescription
addressstringBase58-encoded account address
curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_getBalance","params":["3GfjBM7v6LZ1N5zp1b12gfpwCN8j"],"id":1}'
// Response { "jsonrpc": "2.0", "id": 1, "result": 1000000000000 }

solidus_getNonce

Returns the current nonce (next expected transaction index) for a base58 address.

ParamTypeDescription
addressstringBase58-encoded account address
{ "jsonrpc": "2.0", "id": 1, "result": 0 }

solidus_getLatestBlock

Returns the most recent committed block, or null if no blocks exist.

curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_getLatestBlock","params":[],"id":1}'
// Response (measured live) { "jsonrpc": "2.0", "id": 1, "result": { "height": 82054, "round": 6495, "hash": "7bdd7ba192080a011f4564bae0d065401e2efa6a257f52df0eeb0ae284e01d02", "parent_hash": "261c0ac7955a5359b653f189a720ddd1358650772e35734003093fb2bc324800", "state_root": "c2a009a8fc5f869aee238febb2e362694bd3828748158d758e52420f5a15c89d", "transactions_root": "0000000000000000000000000000000000000000000000000000000000000000", "timestamp_ms": 1785314852140, "tx_count": 0, "proposer": "KoYahYf66hCp2wqTJFCxrzYpQ5r", "transactions": [] } }

transactions is a bare array of hex transaction-hash strings, not an array of objects. round is the consensus round the block was proposed in; tx_count mirrors transactions.length.

solidus_getBlock

Returns a block by height, or null if it does not exist. Same response shape as solidus_getLatestBlock.

ParamTypeDescription
heightnumberThe block height to retrieve
curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_getBlock","params":[1],"id":1}'

solidus_getBlockBySeq

Returns a block by its contiguous canonical sequence number (distinct from height, which can be lossy under fast leader rotation), or null if nothing is canonized at that seq. Response shape matches solidus_getLatestBlock.

ParamTypeDescription
seqnumberCanonical sequence number

solidus_canonHead

Returns the head of the canonical ledger, or null if no blocks have been canonized.

curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_canonHead","params":[],"id":1}'
{ "jsonrpc": "2.0", "id": 1, "result": { "seq": 80335, "hash": "7bdd7ba192080a011f4564bae0d065401e2efa6a257f52df0eeb0ae284e01d02" } }

solidus_blockNumber

Returns just the latest committed block height.

{ "jsonrpc": "2.0", "id": 1, "result": 82054 }

solidus_chainInfo

Returns chain metadata — id, native token, genesis hash, latest height, node version.

curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_chainInfo","params":[],"id":1}'
// Response (measured live) { "jsonrpc": "2.0", "id": 1, "result": { "chain_id": "solidus-testnet-1", "native_token": { "symbol": "SLDS", "name": "Solidus", "decimals": 8 }, "genesis_hash": "fd5c6ad7951a6a0352290e0731feb05e2fc96650030b8280a52518267e23a312", "latest_block": 82054, "version": "0.1.0" } }

solidus_nodeInfo

Returns process-level node observability: version, uptime, resident memory.

// Response (measured live) { "jsonrpc": "2.0", "id": 1, "result": { "version": "0.1.0", "uptime_seconds": 1244870, "rss_bytes": 165449728 } }

solidus_getReceipt

Returns the execution receipt for a transaction hash, or null if not found.

ParamTypeDescription
tx_hashstringHex transaction hash (no 0x prefix)
{ "jsonrpc": "2.0", "id": 1, "result": { "tx_hash": "<hex>", "status": "success", "block_height": 82054, "fee_paid": 10000, "events": [{ "type": "Transfer", "from": "...", "to": "...", "amount": 500 }] } }

status is either "success" or "failed: <reason>".

solidus_getTransaction

Returns the full transaction JSON for a hash (scanning blocks backwards from the latest — acceptable on testnet), or null if not found.

ParamTypeDescription
tx_hashstringHex transaction hash
curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_getTransaction","params":["<hex tx hash>"],"id":1}'

The result is the raw signed transaction — {sender_pubkey, nonce, payload, signature} — not a {tx, receipt} wrapper. Use solidus_getReceipt separately for execution status.

solidus_sendTransaction

Submit a signed transaction (a JSON-encoded string, not an object) to the network. Returns the transaction hash as a hex string.

ParamTypeDescription
tx_jsonstringJSON-stringified signed transaction
curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_sendTransaction","params":["<JSON-stringified signed tx>"],"id":1}'
{ "jsonrpc": "2.0", "id": 1, "result": "<hex tx hash>" }

The transaction is added to the mempool. Use solidus_getReceipt with the returned hash to check when it is included in a block. In practice, use the SDK rather than constructing raw transactions — it handles nonce management, signing, and serialization.

solidus_didResolve

Resolve a DID to its DID Document, or null if it does not exist.

ParamTypeDescription
didstringThe DID to resolve
curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_didResolve","params":["did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K"],"id":1}'

The result is the DID document itself (not wrapped in a document field), including active, created_ms, updated_ms, and version_id. See DIDs for the full field-by-field shape, which this method matches exactly.

solidus_credentialVerify

Verify a credential by ID. Returns validity and the credential record, or null if the credential does not exist.

ParamTypeDescription
credential_idstringThe credential ID (e.g. urn:solidus:credential:...)
{ "jsonrpc": "2.0", "id": 1, "result": { "valid": true, "credential": { "id": "...", "issuer_did": "...", "subject_did": "...", "credential_type": "Email", "hash": "<hex>", "issued_ms": 0, "revoked": false, "revoked_ms": null }, "revoked": false } }

solidus_credentialsBySubject

Returns all credentials where the given DID is the subject, as a bare array (empty array if none).

ParamTypeDescription
didstringThe subject DID

solidus_credentialsByIssuer

Returns all credentials where the given DID is the issuer, as a bare array. Same record shape as solidus_credentialsBySubject.

ParamTypeDescription
didstringThe issuer DID

solidus_getValidators

Returns the active validator set as a bare array — not wrapped in {validators: [...]}.

curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"solidus_getValidators","params":[],"id":1}'
// Response (measured live — 5 validators currently active) { "jsonrpc": "2.0", "id": 1, "result": [ { "address": "3GfjBM7v6LZ1N5zp1b12gfpwCN8j", "staked": 1000000000000, "unbonding": 0, "reputation": 1000, "active": true }, { "address": "28gvczeVVVQjy6MpP4yexmd3xEsm", "staked": 0, "unbonding": 0, "reputation": 0, "active": true }, { "address": "2ddrNYxwr5V42QJmDgpphzGuWrAK", "staked": 0, "unbonding": 0, "reputation": 0, "active": true }, { "address": "2VnFvB9X8BW5QxDAD1wJjjd8AJvT", "staked": 0, "unbonding": 0, "reputation": 0, "active": true }, { "address": "KoYahYf66hCp2wqTJFCxrzYpQ5r", "staked": 0, "unbonding": 0, "reputation": 0, "active": true } ] }

There is no public_key, isLeader, totalStake, or quorum field. Each entry carries address, staked, unbonding (amount in the 21-day unbonding lock), reputation (0–1000), and active.

solidus_getValidatorStake

Returns a single validator’s info for a base58 address, or null if not found. Same record shape as one entry in solidus_getValidators.

ParamTypeDescription
addressstringBase58 validator address

solidus_bbsVerifyProof

Verify a BBS+ selective-disclosure proof statelessly (no chain lookup). All hex inputs must be lowercase.

ParamTypeDescription
proof_hexstringHex-encoded BBS+ proof
pubkey_hexstringHex-encoded BBS+ public key
header_hexstringHex-encoded signature header
ph_hexstringHex-encoded presentation header
disclosed_messages{index: number, message: string}[]Disclosed message indices + hex message bytes
total_message_countnumberTotal messages in the originally signed vector

Returns true iff the proof is cryptographically valid.

solidus_bbsVerifyCredentialProof

Verify a BBS+ proof against an on-chain credential record — looks up the credential by ID, pulls its bbs_pubkey/bbs_message_count from chain state, then verifies. Combines proof validity with revocation status.

ParamTypeDescription
credential_idstringThe credential ID
proof_hexstringHex-encoded BBS+ proof
header_hexstringHex-encoded signature header
ph_hexstringHex-encoded presentation header
disclosed_messages{index: number, message: string}[]Disclosed message indices + hex message bytes
{ "jsonrpc": "2.0", "id": 1, "result": { "valid": true, "proof_valid": true, "is_bbs": true, "revoked": false, "credential": { "...": "..." } } }
Last updated on