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
}| Code | Meaning |
|---|---|
-32700 | Parse error — invalid JSON |
-32600 | Invalid request — missing required fields |
-32601 | Method not found |
-32602 | Invalid params |
-32603 | Internal error |
Methods
solidus_getLatestBlock
Returns the most recent finalized block.
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getLatestBlock",
"params": [],
"id": 1
}'// Response
{
"jsonrpc": "2.0",
"result": {
"height": 284731,
"hash": "0x9a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a",
"parent_hash": "0x1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b",
"state_root": "0x4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d",
"timestamp": "2026-05-07T14:30:05Z",
"transactions": [
{
"hash": "0x7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f",
"type": "did_create",
"from": "0x3Vn9wLkDfT8Kj2mNpQxR",
"nonce": 42
}
]
},
"id": 1
}solidus_getBlock
Returns a block at the specified height.
| Param | Type | Description |
|---|---|---|
height | number | The block height to retrieve |
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getBlock",
"params": [284731],
"id": 1
}'// Response
{
"jsonrpc": "2.0",
"result": {
"height": 284731,
"hash": "0x9a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a",
"parent_hash": "0x1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b",
"state_root": "0x4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d",
"timestamp": "2026-05-07T14:30:05Z",
"transactions": [
{
"hash": "0x7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f",
"type": "did_create",
"from": "0x3Vn9wLkDfT8Kj2mNpQxR",
"nonce": 42
}
]
},
"id": 1
}Returns null as the result if the block does not exist.
solidus_getTransaction
Returns a transaction and its receipt by hash.
| Param | Type | Description |
|---|---|---|
hash | string | The transaction hash |
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getTransaction",
"params": ["0x7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f"],
"id": 1
}'// Response
{
"jsonrpc": "2.0",
"result": {
"tx": {
"hash": "0x7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f",
"type": "did_create",
"from": "0x3Vn9wLkDfT8Kj2mNpQxR",
"nonce": 42,
"payload": {
"did": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K",
"publicKey": "ed25519:7Hk3mRtQZvXp2nBw9Lj4KxYm8..."
},
"signature": "0xed25519sig...",
"timestamp": "2026-05-07T14:30:04Z"
},
"receipt": {
"status": "success",
"blockHeight": 284731,
"blockHash": "0x9a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a",
"gasUsed": 21000
}
},
"id": 1
}solidus_sendTransaction
Submit a signed transaction to the network.
| Param | Type | Description |
|---|---|---|
signedTx | object | The signed transaction object |
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_sendTransaction",
"params": [{
"type": "did_create",
"from": "0x3Vn9wLkDfT8Kj2mNpQxR",
"nonce": 43,
"payload": {
"did": "did:solidus:9Xm4pLkWnR2nBw7Tj8K",
"publicKey": "ed25519:9Xm4pLkWnR2nBw7Tj8K..."
},
"signature": "0xed25519sig..."
}],
"id": 1
}'// Response
{
"jsonrpc": "2.0",
"result": {
"hash": "0x2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c"
},
"id": 1
}The transaction is added to the mempool. Use solidus_getTransaction with the returned hash to check when it is included in a block.
solidus_didResolve
Resolve a DID to its DID Document. Returns the full W3C-compliant DID Document if the DID exists, or null if it does not.
| Param | Type | Description |
|---|---|---|
did | string | The DID to resolve (e.g., did:solidus:7Hk3mRtQZv...) |
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
}'// Response — DID found
{
"jsonrpc": "2.0",
"result": {
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/ed25519-2020/v1"
],
"id": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K",
"verificationMethod": [
{
"id": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K#key-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K",
"publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
}
],
"authentication": [
"did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K#key-1"
],
"assertionMethod": [
"did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K#key-1"
],
"created": "2026-04-15T08:00:00Z",
"updated": "2026-04-15T08:00:00Z"
},
"id": 1
}// Response — DID not found
{
"jsonrpc": "2.0",
"result": null,
"id": 1
}solidus_getValidators
Returns the current validator set.
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getValidators",
"params": [],
"id": 1
}'// Response
{
"jsonrpc": "2.0",
"result": {
"validators": [
{
"address": "0x3Vn9wLkDfT8Kj2mNpQxR",
"public_key": "ed25519:7Hk3mRtQZvXp2nBw9Lj4KxYm8...",
"stake": "1000000"
},
{
"address": "0x8Kj2mNpQxR3Vn9wLkDfT",
"public_key": "ed25519:9Xm4pLkWnR2nBw7Tj8KzAb3...",
"stake": "1000000"
},
{
"address": "0x5Wn2kLpMxR9Xm4pLkWnR",
"public_key": "ed25519:4Tn7mLkPxR6Wn9pMkRxTcD5...",
"stake": "1000000"
},
{
"address": "0x6Wn9pMkRxT4Tn7mLkPxR",
"public_key": "ed25519:2Kn5mTpLxR8Rn3mKpWxTfG7...",
"stake": "1000000"
}
]
},
"id": 1
}solidus_getAccount
Returns the account state for a given address, including balance, nonce, and optional DID association.
| Param | Type | Description |
|---|---|---|
address | string | The account address |
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getAccount",
"params": ["0x3Vn9wLkDfT8Kj2mNpQxR"],
"id": 1
}'// Response
{
"jsonrpc": "2.0",
"result": {
"balance": "50000000",
"nonce": 43,
"did": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K"
},
"id": 1
}The did field is present only if the account has a registered DID. The balance is returned as a string to avoid integer overflow.