Skip to Content
ConceptsNetwork & Testnet

Network and Testnet

The Solidus testnet is live and producing blocks. This page covers how to connect, the available RPC methods, the block explorer, and the testnet faucet.

Testnet Status

The testnet is running with the following configuration:

ParameterValue
Validators4
ConsensusHotStuff BFT
Block time~2.5 seconds
Finality3-chain (~7.5 seconds)
RPC endpointhttps://rpc.solidus.network
Explorerexplorer.solidus.network
Faucet balance~1.9M SLDS available
Native tokenSLDS

Connecting to the Testnet

Using the SDK

The simplest way to connect is through @solidus-network/sdk:

import { createSdk } from '@solidus-network/sdk' const sdk = createSdk({ mode: 'testnet', chain: { rpcUrl: 'https://rpc.solidus.network', signerPrivateKey: privateKeyHex, network: 'testnet', }, })

Using curl

You can query the testnet directly via JSON-RPC:

curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "solidus_getLatestBlock", "params": [], "id": 1 }'

Using JavaScript

For direct RPC calls without the SDK:

async function rpcCall(method: string, params: unknown[] = []) { const response = await fetch('https://rpc.solidus.network', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', method, params, id: 1, }), }) const data = await response.json() return data.result }

RPC Methods

The testnet exposes the following JSON-RPC 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", "id": 1, "result": { "height": 584210, "hash": "0x3a8f1b2c...d7e9f0a1", "previousHash": "0x7c2d4e6f...b8a1c3d5", "stateRoot": "0x9f0e1d2c...4b5a6c7d", "timestamp": 1746612345, "proposer": "0x4a2b3c...validator-pubkey", "transactionCount": 12 } }

solidus_getBlock

Returns a block by height.

Parameters: [blockHeight: number]

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

Response includes the full block with header and transactions.

solidus_didResolve

Resolves a DID and returns its DID Document.

Parameters: [did: string]

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

Response:

{ "jsonrpc": "2.0", "id": 1, "result": { "document": { "@context": [ "https://www.w3.org/ns/did/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], "id": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR", "verificationMethod": [ { "id": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR#key-1", "type": "Ed25519VerificationKey2020", "controller": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR", "publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK" } ], "authentication": [ "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR#key-1" ], "assertionMethod": [ "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR#key-1" ] }, "active": true } }

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", "id": 1, "result": { "validators": [ { "publicKey": "0x4a2b3c...key1", "stake": 250000, "isLeader": true }, { "publicKey": "0x5b3c4d...key2", "stake": 250000, "isLeader": false }, { "publicKey": "0x6c4d5e...key3", "stake": 250000, "isLeader": false }, { "publicKey": "0x7d5e6f...key4", "stake": 250000, "isLeader": false } ], "totalStake": 1000000, "quorum": 3 } }

solidus_getAccount

Returns account information including balance and nonce.

Parameters: [address: string]

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

Response:

{ "jsonrpc": "2.0", "id": 1, "result": { "address": "7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR", "balance": 1000000, "nonce": 5, "did": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR" } }

solidus_getTransaction

Returns a transaction by hash.

Parameters: [transactionHash: string]

curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "solidus_getTransaction", "params": ["0x3a8f1b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f"], "id": 1 }'

Response:

{ "jsonrpc": "2.0", "id": 1, "result": { "hash": "0x3a8f1b2c...9e0f", "type": "CredentialIssue", "blockHeight": 584200, "timestamp": 1746612300, "from": "7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR", "status": "finalized", "data": { "credentialHash": "0x9f0e1d2c...hash", "issuer": "did:solidus:testnet:4Wp9xKjRvNmQ3eYhT8bC2aFs7gDzLpUk", "subject": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR", "credentialType": "KycLevel1Credential" } } }

solidus_sendTransaction

Submits a signed transaction to the network.

Parameters: [signedTransaction: object]

curl -X POST https://rpc.solidus.network \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "solidus_sendTransaction", "params": [{ "type": "Transfer", "from": "7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR", "to": "9Jm5nPsVuRxT4wBhL2cD7gFk8iEzMqXy", "amount": 1000, "nonce": 6, "signature": "0xabc123...signed" }], "id": 1 }'

Response:

{ "jsonrpc": "2.0", "id": 1, "result": { "transactionHash": "0x5d1a2b3c...hash", "status": "pending" } }

In practice, use the SDK rather than constructing raw transactions. The SDK handles nonce management, signing, and serialization.

Block Explorer

The block explorer at explorer.solidus.network provides a web interface for browsing the testnet. You can:

  • View the latest blocks and their transactions
  • Look up accounts by address
  • Search for transactions by hash
  • Inspect DID Documents
  • Monitor validator activity and network health

Testnet Faucet

The testnet faucet distributes test SLDS tokens for development. Approximately 1.9 million SLDS are available.

To request testnet tokens, use the faucet endpoint:

curl -X POST https://rpc.solidus.network/faucet \ -H "Content-Type: application/json" \ -d '{ "address": "7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR" }'

Testnet tokens have no monetary value. They are used for paying transaction fees during development.

Mainnet Status

Mainnet has not yet launched. The testnet is the current production network for development and testing. Key differences to expect when mainnet launches:

  • Validator set — mainnet will have a larger, permissionless validator set
  • Token value — mainnet SLDS tokens will have real economic value for staking and fees
  • Credential permanence — credentials issued on testnet will not carry over to mainnet
  • Breaking changes — the protocol may undergo breaking changes before mainnet launch

All SDKs and applications currently target the testnet. When mainnet launches, switching will require changing the network and rpcUrl in the SDK configuration.

Network Health Monitoring

You can check the network status by querying the latest block and comparing the timestamp to the current time. If the latest block is more than 10 seconds old, the network may be experiencing issues.

import { createSdk } from '@solidus-network/sdk' const sdk = createSdk({ mode: 'testnet', chain: { rpcUrl: 'https://rpc.solidus.network', network: 'testnet', }, }) const block = await sdk.chain.getLatestBlock() const age = Date.now() / 1000 - block.timestamp if (age > 10) { console.warn('Network may be slow. Latest block is', age, 'seconds old.') } else { console.log('Network healthy. Block height:', block.height) }

Next Steps

  • Getting Started — start building with the SDK
  • Architecture — understand consensus, state model, and transaction types
  • DIDs — create and resolve identifiers on the testnet
  • Credentials — issue and verify credentials on-chain
Last updated on