JSON-RPC Reference

Lichen exposes a JSON-RPC 2.0 API for querying blockchain state and submitting transactions. Every validator node runs the RPC server, typically on port 8899. Requests are rate-limited per IP (configurable, default 100 req/s). A companion WebSocket API provides real-time event subscriptions on port 8900.

Implementation-verified surface for v0.5.10: the live server exposes 182 JSON-RPC dispatch names across native, Solana-compatible, and EVM-compatible dispatch, plus REST route families across the DEX, prediction market, launchpad, and shielded APIs.

Endpoint & Format

Public testnet endpoint: https://testnet-rpc.lichen.network

Mainnet endpoint target: https://rpc.lichen.network

The request examples below use public testnet. Swap to the mainnet endpoint only when you are ready to target mainnet.

All requests are HTTP POST with Content-Type: application/json.

Security model: Production TLS terminates at the repo-managed Caddy reverse proxy. Raw RPC and WebSocket listeners on 8899/8900 or 9899/9900 are internal-only and direct public exposure is unsupported.

Admin token rotation: LICHEN_ADMIN_TOKEN hot-reloads every 30 seconds, so operator rotation does not require an RPC restart.

JSON
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "METHOD_NAME",
  "params": [...]
}

Successful responses contain a result field. Errors contain an error object with code and message.

Units: All LICN amounts are returned in spores (1 LICN = 1,000,000,000 spores) unless a separate lichen field is provided.

Chain Methods

getSlot

Returns the current slot number of the chain tip.

Parameters

None

Returns

u64 — Current slot number.

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

# Response
{"jsonrpc":"2.0","id":1,"result":42}

getLatestBlock

Returns the most recently produced block.

Parameters

None

Returns

Object — { slot, hash, parentHash, transactions, timestamp, validator, stateRoot }

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

# Response
{"jsonrpc":"2.0","id":1,"result":{
  "slot":42,"hash":"a1b2c3...","parentHash":"d4e5f6...",
  "transactions":5,"timestamp":1738800000,"validator":"7xK...","stateRoot":"abc..."
}}

getRecentBlockhash

Returns a recent blockhash required for signing transactions. The blockhash is valid for a limited number of slots.

Parameters

None

Returns

string — Hex-encoded recent blockhash, or object { blockhash }.

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

# Response
{"jsonrpc":"2.0","id":1,"result":"a1b2c3d4e5f6..."}

health

Returns node health status. Use this as a liveness probe.

Parameters

None

Returns

Object — { "status": "ok" }

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

# Response
{"jsonrpc":"2.0","id":1,"result":{"status":"ok"}}

getMetrics

Returns current chain performance metrics including TPS, total transactions, total blocks, and average block time.

Parameters

None

Returns

Object — { tps, peak_tps, total_transactions, daily_transactions, total_blocks, average_block_time, avg_block_time_ms, avg_txs_per_block, total_accounts, active_accounts, total_supply, projected_supply, circulating_supply, total_burned, total_minted, total_staked, treasury_balance, total_contracts, validator_count, slot_duration_ms, fee_burn_percent, current_epoch, slots_into_epoch, inflation_rate_bps }

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

# Response
{"jsonrpc":"2.0","id":1,"result":{
    "tps":120.0,
    "peak_tps":180.0,
    "total_transactions":500000,
    "daily_transactions":12000,
    "total_blocks":42000,
    "average_block_time":0.8,
    "avg_block_time_ms":800.0,
    "avg_txs_per_block":11.9,
    "total_accounts":18420,
    "active_accounts":6912,
    "total_supply":500000000000000000,
    "projected_supply":500000012500000000,
    "circulating_supply":421500000000000000,
    "total_burned":2200000000,
    "total_minted":12500000000,
    "total_staked":185000000000000,
    "treasury_balance":32000000000000,
    "total_contracts":29,
    "validator_count":5,
    "slot_duration_ms":800,
    "fee_burn_percent":40,
    "current_epoch":12,
    "slots_into_epoch":3456,
    "inflation_rate_bps":395
}}

getChainStatus

Returns comprehensive chain status including current slot, validator count, total stake, TPS, transaction & block counts, average block time, and health flag.

Parameters

None

Returns

Object — { slot, _slot, epoch, _epoch, block_height, _block_height, current_slot, latest_block, validator_count, validators, _validators, total_stake, total_staked, tps, peak_tps, total_transactions, total_blocks, average_block_time, block_time_ms, total_supply, projected_supply, total_burned, total_minted, peer_count, chain_id, network, is_healthy, inflation_rate_bps }

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

# Response
{"jsonrpc":"2.0","id":1,"result":{
    "slot":12345,
    "_slot":12345,
    "epoch":12,
    "_epoch":12,
    "block_height":12345,
    "_block_height":12345,
    "current_slot":12345,
    "latest_block":12345,
    "validator_count":5,
    "validators":5,
    "_validators":5,
    "total_stake":185000000000000,
    "total_staked":185000000000000,
    "tps":120.0,
    "peak_tps":180.0,
    "total_transactions":500000,
    "total_blocks":42000,
    "average_block_time":0.8,
    "block_time_ms":800.0,
    "total_supply":500000000000000000,
    "projected_supply":500000012500000000,
    "total_burned":2200000000,
    "total_minted":12500000000,
    "peer_count":8,
    "chain_id":"lichen-testnet-1",
    "network":"testnet",
    "is_healthy":true,
    "inflation_rate_bps":395
}}

Account Methods

getBalance

Returns the LICN balance for the given public key, in both spores (raw) and LICN.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key

Returns

Object — { spores: u64, licn: f64 }

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

# Response
{"jsonrpc":"2.0","id":1,"result":{"spores":5000000000,"licn":5.0}}

getAccount

Returns raw account data including balance, owner, executable flag, and data field.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key

Returns

Object — { spores, owner, executable, data }

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

getAccountProof

Returns an anchored inclusion proof for an existing account and binds it to the requested block commitment context. This is an inclusion-proof surface for existing accounts, not a full authenticated-state or non-existence-proof protocol.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key for an existing account
commitment string No Anchor context to use: processed, confirmed, or finalized. Defaults to finalized.

Returns

Object — { pubkey, accountData, inclusionProof, anchor }

Notes

  • Returns an error if the account does not exist or if the proof cannot be anchored to the requested block context.
  • Proofs are inclusion proofs over the current cached account leaf set; they do not provide non-existence proofs.
cURL
curl -X POST https://testnet-rpc.lichen.network \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getAccountProof","params":["7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", {"commitment":"finalized"}]}'

# Response
{"jsonrpc":"2.0","id":1,"result":{
  "pubkey":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
  "account_data":"deadbeef...",
  "inclusion_proof":{"leaf_hash":"...","siblings":["..."],"path":[true,false]},
  "anchor":{"slot":1,"commitment":"finalized","state_root":"...","commit_round":0}
}}

getAccountAtSlot

Returns historical account state at or before the given slot. Requires archive mode to be enabled on the validator via --archive-mode. Pair archival nodes with --cold-store <path> to keep old block and transaction history off the hot DB.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key
slot integer Yes Target slot number (returns latest snapshot at or before this slot)

Returns

Object — { pubkey, slot, spores, licn, spendable, staked, locked, owner, executable, data_len }

Errors

  • -32003 — Archive mode is not enabled on this node
  • -32001 — No snapshot found for the account at or before the given slot
cURL
curl -X POST https://testnet-rpc.lichen.network \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getAccountAtSlot","params":["7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", 1000]}'

getAccountInfo

Returns enhanced account information including balance, transaction count, and additional metadata.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key

Returns

Object — Enhanced account details with balance, owner, executable flag, transaction history summary.

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

getAccountTxCount

Returns the number of transactions involving the given account.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key

Returns

u64 — Transaction count.

Block Methods

getBlock

Returns a block by its slot number, including header fields and transaction list.

Parameters

Name Type Required Description
slot u64 Yes Slot number of the block

Returns

Object — { slot, hash, parentHash, transactions, timestamp, validator, stateRoot }

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

# Response
{"jsonrpc":"2.0","id":1,"result":{
  "slot":42,"hash":"a1b2...","parentHash":"d4e5...",
  "transactions":[...],"timestamp":1738800000
}}

Transaction Methods

getTransaction

Returns detailed transaction information by its signature hash.

Parameters

Name Type Required Description
signature string Yes Hex-encoded transaction signature

Returns

Object — Transaction details including signatures, instructions, slot, timestamp, fee, and status.

Hash fields:

  • signature — Canonical transaction ID: SHA-256(bincode(message) || sig_0 || sig_1 || ...). Includes signatures for unique deduplication (matches Cosmos/CometBFT and Bitcoin wtxid convention).
  • message_hash — Message-only hash: SHA-256(bincode(message)). Signature-independent — useful for multi-sig coordination and client-side txid prediction before all parties have signed.

Contract execution fields (present for contract call transactions):

  • return_code — Raw WASM return value. The meaning is contract-specific; many contracts use 0 or 1 as success, while getters may return the value directly. Omitted when null.
  • return_data — Base64-encoded bytes set via set_return_data(). Omitted when empty.
  • contract_logs — Array of log strings emitted via log(). Omitted when empty.
cURL
curl -X POST https://testnet-rpc.lichen.network \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getTransaction","params":["a1b2c3d4..."]}'

sendTransaction

Submits a signed, serialized transaction to the mempool. The transaction must be base64-encoded bincode.

Parameters

Name Type Required Description
transaction string Yes Base64-encoded serialized transaction

Returns

string — Hex-encoded transaction signature.

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

# Response
{"jsonrpc":"2.0","id":1,"result":"a1b2c3d4e5f6..."}

simulateTransaction

Dry-runs a transaction without committing it to the chain. Useful for estimating fees and checking validity.

Parameters

Name Type Required Description
transaction string Yes Base64-encoded serialized transaction

Returns

Object — Simulation result with logs, runtime error messages, and returnCode for contract-level result inspection.

Debugging tip: A transaction can be structurally valid but contract-semantically rejected. Inspect success, runtime errors, and the contract-specific returnCode together.

getTransactionsByAddress

Returns a list of transactions involving the given address.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key
limit u64 No Max number of results (default 10)

Returns

Array — List of transaction objects.

getTransactionHistory

Alias for getTransactionsByAddress. Both methods use the same handler and return identical responses.

Parameters

Name Type Required Description
pubkey string Yes Base58-encoded public key
limit u64 No Max results (default 10)

Returns

Object — Paginated transaction history.

getTransactionProof

Returns a binary Merkle inclusion proof for a confirmed transaction. The proof can be used to verify that a transaction is included in a block's tx_root without downloading the entire block.

Parameters

Name Type Required Description
signature string Yes Hex-encoded transaction hash

Returns

Object with the following fields:

Field Type Description
slot u64 Block slot containing the transaction
tx_index u64 Index of the transaction within the block
tx_hash string Hex-encoded transaction hash (leaf)
root string Hex-encoded Merkle root (matches block tx_root)
proof array Array of proof steps, each with hash (hex) and direction ("left" or "right")

Example

curl -s https://testnet-rpc.lichen.network -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getTransactionProof","params":["a1b2c3d4..."]}'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "slot": 162,
    "tx_index": 0,
    "tx_hash": "a1b2c3d4...",
    "root": "efca18b2...",
    "proof": [
      { "hash": "86bf5cf6...", "direction": "right" },
      { "hash": "d1f8afed...", "direction": "right" }
    ]
  }
}

Verification

The Merkle tree uses domain-separated SHA-256: leaves are prefixed with 0x00, internal nodes with 0x01. To verify a proof, start with the leaf hash SHA256(0x00 || tx_hash), then for each step combine with the sibling according to direction: SHA256(0x01 || left || right). The final result must equal the root.

Validator Methods

getValidators

Returns the list of all registered validators with their stake, reputation, blocks proposed, votes cast, and last active slot.

Parameters

None

Returns

Object — { validators: [ { pubkey, stake, reputation, blocksProposed, votesCast, correctVotes, lastActiveSlot } ] }

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

getValidatorInfo

Returns detailed information for a specific validator by its public key.

Parameters

Name Type Required Description
pubkey string Yes Validator's base58-encoded public key

Returns

Object — Validator details including stake, reputation, and performance counters.

getValidatorPerformance

Returns performance metrics for a validator including block production rate, vote accuracy, and uptime.

Parameters

Name Type Required Description
pubkey string Yes Validator's base58-encoded public key

Returns

Object — Performance metrics.

Staking Methods

getStakingStatus

Returns staking status for an account — active stake, delegated validator, rewards earned.

Parameters

Name Type Required Description
pubkey string Yes Staker's base58-encoded public key

Returns

Object — Staking status details.

getStakingRewards

Returns settled and projected staking reward details for the given account.

Parameters

Name Type Required Description
pubkey string Yes Staker's base58-encoded public key

Returns

Object — Reward details including pending_rewards (settled but unclaimed), projected_pending and projected_epoch_reward (current-epoch estimates), claimed_rewards / liquid_claimed_rewards (historical liquid rewards only), and claimed_total_rewards (liquid rewards plus bootstrap debt repayment already credited through claims).

stake

Submits a signed stake transaction (system instruction opcode 9).

Parameters

Name Type Required Description
transaction_base64 string Yes Base64-encoded signed transaction payload. Call shape: stake([transaction_base64])

Returns

string — Transaction signature.

unstake

Submits a signed unstake transaction (system instruction opcode 10).

Parameters

Name Type Required Description
transaction_base64 string Yes Base64-encoded signed transaction payload. Call shape: unstake([transaction_base64])

Returns

string — Transaction signature.

Network Methods

getNetworkInfo

Returns network-level information including chain ID, network ID, version, current slot, validator count, and peer count.

Parameters

None

Returns

Object — { chainId, networkId, version, currentSlot, validatorCount, peerCount }

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

getPeers

Returns a list of connected P2P peers.

Parameters

None

Returns

Object — { peers: [ address strings ] }

Contract Methods

getContractInfo

Returns information about a deployed smart contract including owner, code size, storage, call count, and token metadata. For tokens registered in the symbol registry, includes total_supply resolved from on-chain storage with a fallback to registry metadata.

Parameters

Name Type Required Description
contractId string Yes Base58-encoded contract public key

Returns

Object — Contract metadata including: contract_id, owner, code_size, is_executable, has_abi, abi_functions, code_hash, version.

For tokens registered in the symbol registry, also includes a token_metadata object:

Field Type Description
total_supply number Total supply in base units (resolved from on-chain storage, fallback to registry). JavaScript clients should treat large u64 values carefully once they exceed the safe-integer range.
decimals number Decimal precision (e.g. 9)
token_symbol string Registry symbol (e.g. "LICN")
token_name string Display name from registry metadata
mintable boolean Whether the contract has a mint function
burnable boolean Whether the contract has a burn function

The registry metadata JSON (set via --metadata at deploy) must be a flat object of strings, numbers, and booleans (1024 bytes max). Common profile fields: description, website, logo_url, twitter, telegram, discord. Capability flags such as mintable and burnable in getContractInfo are derived from the contract ABI.

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

getAllContracts

Returns a list of all deployed contracts on the chain.

Parameters

None

Returns

Array — List of contract info objects.

getContractLogs

Returns execution logs emitted by a contract.

Parameters

Name Type Required Description
contractId string Yes Base58-encoded contract public key

Returns

Array — Log entries.

getContractAbi

Returns the ABI/IDL (machine-readable interface definition) for a contract, if one has been registered.

Parameters

Name Type Required Description
contractId string Yes Base58-encoded contract public key

Returns

Object — ABI JSON, or null if not set.

Program Methods

getProgram

Returns detailed information about a deployed program.

Parameters

Name Type Required Description
programId string Yes Base58-encoded program public key

Returns

Object — Program info including owner, code size, deploy slot.

getPrograms

Returns a list of all deployed programs.

Parameters

None (optional limit param).

Returns

Array — List of program summaries.

getProgramStats

Returns execution statistics for a program — call count, unique callers, storage used.

Parameters

Name Type Required Description
programId string Yes Base58-encoded program public key

Returns

Object — Program stats.

getProgramCalls

Returns recent call history for a program.

Parameters

Name Type Required Description
programId string Yes Base58-encoded program public key

Returns

Array — Call records.

getProgramStorage

Returns on-chain storage summary for a program.

Parameters

Name Type Required Description
programId string Yes Base58-encoded program public key

Returns

Object — Storage summary.

Token Methods

getTokenBalance

Returns the balance of a specific token for an account.

Parameters

Name Type Required Description
owner string Yes Base58-encoded owner public key
tokenMint string Yes Base58-encoded token mint address

Returns

Object — Token balance details.

getTokenHolders

Returns a list of holders for a given token.

Parameters

Name Type Required Description
tokenMint string Yes Base58-encoded token mint address

Returns

Array — Token holder entries.

getTokenTransfers

Returns recent transfer events for a token.

Parameters

Name Type Required Description
tokenMint string Yes Base58-encoded token mint address

Returns

Array — Transfer event records.

NFT & Marketplace Methods

getCollection

Returns metadata for an NFT collection.

Parameters

Name Type Required Description
collectionId string Yes Base58-encoded collection public key

Returns

Object — Collection metadata (name, symbol, total supply, etc.).

getNFT

Returns a specific NFT by collection and token ID.

Parameters

Name Type Required Description
collectionId string Yes Collection public key
tokenId u64 Yes Token ID within the collection

Returns

Object — NFT details (owner, metadata URI, attributes).

getNFTsByOwner

Returns all NFTs owned by a given address.

Parameters

Name Type Required Description
owner string Yes Base58-encoded owner public key

Returns

Array — List of NFT objects.

getMarketListings

Returns active marketplace listings with price, seller, and collection info.

Parameters

Name Type Required Description
collectionId string No Filter by collection (optional)

Returns

Array — Active listings.

getMarketSales

Returns recent marketplace sales history.

Parameters

Name Type Required Description
collectionId string No Filter by collection (optional)

Returns

Array — Completed sale records.

getMarketOffers

Returns active marketplace offers (bids) optionally filtered by collection or token.

Parameters

Name Type Required Description
collectionId string No Filter by collection public key
tokenId u64 No Filter by specific token ID

Returns

Array — Active offer records.

getMarketAuctions

Returns active and recent marketplace auctions with current bid state.

Parameters

Name Type Required Description
collectionId string No Filter by collection public key
status string No Filter by auction status (`active`, `ended`, `cancelled`)

Returns

Array — Auction records including reserve, leading bid, and end slot/time.

Burn Methods

getTotalBurned

Returns the total amount of LICN that has been permanently burned (removed from circulation).

Parameters

None

Returns

Object — { spores: u64, licn: f64 }

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

# Response
{"jsonrpc":"2.0","id":1,"result":{"spores":1500000000000,"licn":1500.0}}

Fee & Rent Methods

getFeeConfig

Returns the current fee configuration for the chain (base fee, priority fee multiplier).

Parameters

None

Returns

Object — Fee configuration.

getRentParams

Returns the current rent parameters (rent per byte per epoch, rent-exempt minimum).

Parameters

None

Returns

Object — Rent parameters.

getSignedMetadataManifest

Returns the release-signed metadata envelope used by browser apps to verify token, symbol, and contract-resolution metadata.

Parameters

None

Returns

Object — { schema_version, manifest_type, signed_at, signer, payload, signature }.

Trust boundary: Wallet, DEX, Explorer, Marketplace, Monitoring, and Programs verify this envelope against the pinned release signer before trusting payload.symbol_registry. Custom RPC overrides stay transport-only for generic reads and do not replace this signer check.

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

# Response
{"jsonrpc":"2.0","id":1,"result":{
  "schema_version":1,
  "manifest_type":"signed_metadata",
  "signed_at":"2026-04-03T12:00:00Z",
  "signer":"7xK...ReleaseSigner",
    "payload":{"schema_version":1,"network":"testnet","generated_at":"2026-04-03T12:00:00Z","symbol_registry":[]},
  "signature":{"scheme_version":1,"public_key":{"scheme_version":1,"bytes":"..."},"sig":"..."}
}}

Additional Implemented Methods

These JSON-RPC methods are implemented in the live server dispatch (`rpc/src/lib.rs`) and may not yet have individual method cards on this page.

Compatibility endpoints: POST /solana-compat and POST /evm are also supported in addition to POST /.

Chain / Account / Tx

  • confirmTransaction
  • getRecentTransactions
  • getTokenAccounts
  • getTreasuryInfo
  • getGenesisAccounts
  • getBlockCommit — BFT commit certificate for a block (signatures, voter set)
  • getGovernedProposal — query a governed transfer proposal by ID

Fee / Network / Validator

  • setFeeConfig
  • setRentParams
  • getClusterInfo

Liquid Staking

  • getStakingPosition
  • getMossStakePoolInfo
  • getUnstakingQueue
  • getRewardAdjustmentInfo

Contracts / Registry / Program

  • setContractAbi
  • deployContract
  • upgradeContract
  • getContractEvents
  • getGovernanceEvents
  • getSignedMetadataManifest
  • getSymbolRegistry
  • getSymbolRegistryByProgram
  • getAllSymbolRegistry (alias: getAllSymbols)

LichenID / Names / Identity

  • getLichenIdIdentity, getLichenIdReputation, getLichenIdSkills, getLichenIdVouches, getLichenIdAchievements, getLichenIdProfile
  • resolveLichenName, reverseLichenName, batchReverseLichenNames, searchLichenNames
  • getLichenIdAgentDirectory, getLichenIdStats
  • getEvmRegistration, lookupEvmAddress

NFT / Market / Prediction / Platform Stats

  • getNFTsByCollection
  • getNFTActivity
  • getPredictionMarketStats, getPredictionMarkets, getPredictionMarket, getPredictionPositions, getPredictionTraderStats, getPredictionLeaderboard, getPredictionTrending, getPredictionMarketAnalytics
  • getDexCoreStats, getDexAmmStats, getDexMarginStats, getDexRewardsStats, getDexRouterStats, getDexAnalyticsStats, getDexGovernanceStats
  • getLichenSwapStats, getThallLendStats, getSporePayStats, getSporeVaultStats, getBountyBoardStats, getComputeMarketStats, getMossStorageStats, getLichenMarketStats, getLichenAuctionStats, getLichenPunksStats
  • getLusdStats (alias: getMusdStats), getWethStats, getWsolStats, getLichenBridgeStats, getLichenDaoStats, getLichenOracleStats
  • requestAirdrop (testnet utility)

Bridge

  • createBridgeDeposit — initiate a cross-chain bridge deposit with a wallet-signed bridge access auth object; each new deposit request must use a freshly signed auth envelope, while exact retries with the same request remain idempotent
  • getBridgeDeposit — query a bridge deposit by ID for the authenticated wallet address using the current unexpired bridge auth

Shielded Pool (Privacy)

  • getShieldedPoolState — query shielded pool state (tree size, root, nullifier count)
  • getShieldedPoolStats — aggregated pool statistics
  • getShieldedMerkleRoot — current Merkle tree root
  • getShieldedMerklePath — Merkle proof for a leaf index
  • isNullifierSpent — check if a nullifier has been spent
  • checkNullifier — alias for isNullifierSpent
  • getShieldedCommitments — list commitments in the tree
  • computeShieldCommitment — compute commitment hash for shield operation
  • generateShieldProof — generate ZK proof for shield (deposit)
  • generateUnshieldProof — generate ZK proof for unshield (withdraw)
  • generateTransferProof — generate ZK proof for private transfer

Contract Execution

  • callContract — execute a read-only contract call (no state change). Accepts optional from/caller pubkey to set the calling context (defaults to zero address).
  • getNameAuction — query LichenID .lichen name auction by name

Solana-Format Endpoint (/solana-compat)

Accepts Lichen transactions in Solana wire format. Does not accept native Solana transactions.

  • getLatestBlockhash, getRecentBlockhash, getBalance, getAccountInfo, getBlock, getBlockHeight, getSignaturesForAddress, getSignatureStatuses, getSlot, getTransaction, sendTransaction, getHealth, getVersion

EVM-Compatible Endpoint (/evm)

  • eth_getBalance, eth_sendRawTransaction, eth_call, eth_chainId, eth_blockNumber, eth_getTransactionReceipt, eth_getTransactionByHash, eth_accounts, net_version
  • eth_gasPrice, eth_maxPriorityFeePerGas, eth_estimateGas, eth_getCode, eth_getTransactionCount
  • eth_getBlockByNumber, eth_getBlockByHash, eth_getLogs, eth_getStorageAt
  • net_listening, web3_clientVersion

Looking for real-time events? Check out the WebSocket Reference for subscription-based streaming of blocks, transactions, and account changes.