RPC methods
Solana-compatible methods plus null's pool and bridge extensions.
The node exposes a Solana-compatible JSON-RPC endpoint (default
http://127.0.0.1:8899). Standard tooling (@solana/web3.js, solana CLI) works
unmodified against the Solana-compatible subset.
Solana-compatible
Core (the ten required by standard clients):
getVersion, getHealth, getGenesisHash, getLatestBlockhash, getSlot,
getBalance, getAccountInfo, sendTransaction, getSignatureStatuses,
requestAirdrop (dev/local-only).
Additional methods real clients call:
getBlockHeight, getEpochInfo, getTransactionCount,
getMinimumBalanceForRentExemption, getFeeForMessage, isBlockhashValid,
getRecentBlockhash (legacy), getMultipleAccounts, getIdentity,
getClusterNodes, getFirstAvailableBlock, minimumLedgerSlot.
Every status is reported finalized — with a single PoA sequencer, inclusion in a
block is finality. There is no WebSocket pubsub; poll getSignatureStatuses.
Pool extensions
| Method | Params | Returns |
|---|---|---|
getPoolState | — | { root, nextIndex, recentRoots[], leaves[], shieldedInTotal, shieldedOutTotal, vaultBalance } |
getPoolNullifier | [hex32] | { spent: boolean } |
getPoolEvents | [sinceSeq] | array of pool-op records (kind, public amounts, fee, recipient/relayer, root, commitments + leaf index, nullifiers) |
getPoolState.leaves is the ordered commitment list a client uses to rebuild the
Merkle tree; getPoolEvents is the incremental, indexer-facing event log.
Bridge extensions
| Method | Params | Returns |
|---|---|---|
getBridgeConfig | — | { bridgeProgramId, sequencerPubkey } |
getBridgeStats | — | { mintedTotal, burnedTotal, netBacking } |
getBridgeEvents | — | { deposits[], withdrawals[] } |
bridgeMintCredit | [destination, amount, deposit_nonce, attestation] | signature (privileged; sequencer-authorized, idempotent per nonce) |
All extension responses expose public data only — opaque hashes, public amounts, and already-public addresses. See What's public vs private.