Skip to main content

RPC Reference

Vexidus exposes 100+ JSON-RPC endpoints organized into two namespaces: vex_* (native) and eth_* (EVM compatibility).

tip

All examples use the public testnet endpoint https://testnet.vexidus.io. Replace with your local node address (e.g. http://localhost:9933) if running your own validator.

All endpoints accept standard JSON-RPC 2.0 format:

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"METHOD_NAME","params":[...],"id":1}'
Pending Nonce Tracking

All write RPC methods use a pending nonce tracker to prevent nonce collisions during concurrent submissions. The tracker assigns the next available nonce (accounting for in-flight transactions) so multiple RPC calls from the same address can be submitted simultaneously without conflicts.


Native (vex_*)

Token and Balance

MethodDescription
vex_getBalanceGet token balance for an address. Params: [address, token_symbol]
vex_transferTransfer tokens (convenience, unsigned). Params: [from, to, token, amount]
vex_createTokenCreate a VSC-7 fungible token. Params: [name, symbol, decimals, supply, owner]
vex_getTokenInfoGet token metadata by symbol or mint address. Params: [symbol_or_mint]
vex_listTokensList all registered tokens. Params: [limit]
vex_updateTokenMetadataUpdate mutable token metadata (creator only). Params: [mint, sender, metadata_uri?, image?, description?, external_url?, twitter?, discord?, telegram?, github?]
vex_lockTokenMetadataPermanently lock token metadata (one-way). Params: [mint, sender]
vex_getTokenReputationGet token reputation score (VSC-REP). Params: [mint]

DEX (VexiDEX)

MethodDescription
vex_createPoolCreate a new liquidity pool. Params: [token_a, token_b, amount_a, amount_b, lp_lock_duration, sender]
vex_addLiquidityAdd liquidity to existing pool. Params: [token_a, token_b, amount_a, amount_b, min_lp_tokens, sender]
vex_removeLiquidityRemove liquidity and redeem LP tokens. Params: [token_a, token_b, lp_amount, min_amount_a, min_amount_b, sender]
vex_swapSwap tokens through a pool. Params: [from_token, to_token, amount_in, min_amount_out, sender]
vex_getPoolGet pool info by token pair. Params: [token_a, token_b]
vex_listPoolsList all pools. Params: [limit]
vex_quoteSwapGet swap quote (read-only). Params: [from_token, to_token, amount_in]

NFT (VSC-21)

MethodDescription
vex_createNftCollectionCreate NFT collection. Params: [name, symbol, base_uri, max_supply, royalty_bps, owner, description?, icon_uri?, banner_uri?, external_url?]
vex_mintNftMint an NFT. Params: [collection, token_id, metadata_uri, recipient, sender]
vex_transferNftTransfer an NFT. Params: [collection, token_id, to, owner]
vex_burnNftBurn an NFT (owner only). Params: [collection, token_id, owner]
vex_getNftQuery NFT by collection + token ID. Params: [collection, token_id]
vex_listNftsByOwnerList NFTs owned by address. Params: [owner, collection?, limit]
vex_getNftCollectionCollection metadata and stats. Params: [collection]

Multi-Token (VSC-55)

MethodDescription
vex_createMultiTokenCollectionCreate multi-token collection. Params: [name, symbol, base_uri, royalty_bps, owner, description?, icon_uri?, banner_uri?, external_url?]
vex_defineTokenTypeDefine a token type in collection. Params: [collection, type_id, name, metadata_uri, max_supply, is_fungible, sender]
vex_mintMultiTokenMint tokens of a type. Params: [collection, type_id, recipient, amount, sender]
vex_batchMintMultiTokenBatch mint multiple types. Params: [collection, mints_array, sender]
vex_transferMultiTokenTransfer tokens of a type. Params: [collection, type_id, to, amount, from]
vex_batchTransferMultiTokenBatch transfer multiple types. Params: [collection, transfers_array, sender]
vex_burnMultiTokenBurn tokens. Params: [collection, type_id, amount, owner]
vex_getMultiTokenBalanceQuery balance. Params: [collection, type_id, owner]
vex_getTokenTypeToken type definition. Params: [collection, type_id]
vex_getMultiTokenCollectionCollection metadata. Params: [collection]
vex_listTokenTypesList types in collection. Params: [collection, limit]

Presale (VSC-LAUNCH)

MethodDescription
vex_createPresaleCreate a presale with anti-rug protection.
vex_contributePresaleContribute to a presale.
vex_finalizePresaleFinalize presale and auto-create LP.
vex_refundPresaleRefund if presale fails.
vex_getPresaleGet presale details.
vex_listPresalesList all presales.
vex_getPresaleContributionsList contributions for a presale.
vex_getPresaleStatusGet presale status summary.

Bridge

MethodDescription
vex_bridgeTokenDeposit tokens from external chain. Params: [chain, tx_hash, symbol, amount, recipient, proof]
vex_bridgeWithdrawWithdraw tokens to external chain. Params: [token_mint, amount, chain, destination, sender]
vex_getBridgeStatusQuery bridge operation status. Params: [chain, tx_hash]
vex_getBridgeHistoryList bridge operations for address. Params: [address, limit]
vex_getBridgeFeesGet fee config for a chain. Params: [chain?] (null for all)
vex_autobridgeUniversal receive -- auto-detect and process.
vex_getPendingReceivesList pending auto-detected receives.

Anchor (Data Attestation)

MethodDescription
vex_anchorAnchor data to the blockchain. Params: [namespace, key, value_hash, sender]
vex_getAnchorsQuery anchored data by namespace. Params: [namespace, limit]
vex_verifyAnchorVerify an anchor exists and return its metadata. Params: [namespace, key]

IntentVM

MethodDescription
vex_submitIntentSubmit intent (NL or JSON). Params: [intent_string, sender_address]
vex_simulateIntentDry-run intent against current state. Returns per-pool quotes, price impact (bps), balance checks, auto-routing details, and warnings array. Params: [intent_string, sender_address]
vex_previewIntentHuman-readable wallet confirmation. Returns summary text, fee in VXS, price impact %, route type, slippage tolerance, and warnings. Designed for wallet confirmation UIs. Params: [intent_string, sender_address]
vex_getExecutionPlanPreview execution steps + gas estimate. Params: [intent_string]
vex_getIntentStatusQuery intent result by hash. Params: [bundle_hash]
vex_getPriceGet spot price between two tokens. Returns direct price or auto-routed price through intermediate pools. Params: [from_symbol, to_symbol]

VIP (Vexidus Intent Programs)

MethodDescription
vex_registerProgramRegister a VIP program on-chain. Params: [program_json, sender]
vex_getProgramGet a registered VIP program by name. Params: [name]
vex_listProgramsList all registered VIP programs. Params: [limit]
vex_simulateProgramSimulate VIP execution (dry run). Params: [name, params, sender]
vex_executeProgramExecute a VIP program. Params: [name, params, sender]

Staking

MethodDescription
vex_stakeStake VXS as validator. Params: [staker_address, amount, validator_pubkey]
vex_unstakeBegin unbonding. Params: [address, amount]
vex_getValidatorGet validator details. Params: [address]
vex_listValidatorsList all validators. Params: [limit]
vex_stakingInfoNetwork staking summary. Params: []
vex_setCommissionSet commission rate (basis points). Params: [address, commission_bps]
vex_unjailUnjail validator after cooldown. Params: [address]
vex_setValidatorMetadataSet validator profile. Params: [address, name, description, website, avatar]
vex_getDelegationsGet delegations for address (includes auto_compound status). Params: [address]
vex_setAutoCompoundToggle auto-compound for a delegation. Params: [validator, enable, sender]
vex_setPoolConfigConfigure staking pool settings (validator only). Params: [pool_enabled, pool_name, min_delegation, auto_compound_default, sender]

Staking Pools (VSC-20)

MethodDescription
vex_createStakingPoolCreate a programmable staking pool. Params: [token_mint, reward_source, reward_rate, lock_period, capacity, per_user_cap, sender]
vex_stakeToPoolStake tokens into a pool. Params: [pool_address, amount, sender]
vex_unstakeFromPoolUnstake tokens from a pool. Params: [pool_address, amount, sender]
vex_claimPoolRewardsClaim accumulated pool rewards. Params: [pool_address, sender]
vex_listStakingPoolsList all staking pools. Params: [limit]
vex_getStakingPoolGet pool details. Params: [pool_address]

Explorer

MethodDescription
vex_getBlockByHeightGet block by height (includes tx stats). Params: [height]
vex_getRecentBlocksGet recent blocks. Params: [limit]
vex_getRecentTransactionsGet recent transactions. Params: [limit]
vex_getNetworkStatsNetwork statistics. Params: []
vex_getBlockTransactionsTransactions in a specific block. Params: [height]
vex_getAddressHistoryTransaction history for address. Params: [address, limit]
vex_getTokenHoldersToken holder list. Params: [token_mint, limit]
vex_getTokenTransfersToken transfer history. Params: [token_mint, limit]
vex_searchSearch by hash, address, or block. Params: [query]
vex_getTransactionReceiptTransaction receipt by hash. Params: [tx_hash]
vex_getAddressTokensList tokens held by address. Params: [address]

VNS (Vexidus Name Service)

MethodDescription
vex_resolveNameResolve .vex name to address. Params: [name]
vex_registerNameRegister a .vex name. Params: [name, sender]
vex_reverseResolveReverse lookup: address to name. Params: [address]
vex_getNameInfoFull name details. Params: [name]

Upgrade Governance (VexVisor)

MethodDescription
vex_scheduleUpgradeSchedule a network upgrade.
vex_cancelUpgradeCancel a scheduled upgrade.
vex_voteUpgradeVote on a scheduled upgrade.
vex_getUpgradePlanView the active upgrade plan.

Protocol Governance (VSC-88)

MethodDescription
vex_createProposalCreate a governance proposal. Params: [from, proposal_type, title, description, parameter_key?, parameter_value?, treasury_recipient?, treasury_amount?, safety_chain?, safety_contract?, safety_level?, safety_collection?]
vex_voteProposalVote on an active proposal. Params: [from, proposal_id, approve]
vex_executeProposalExecute an approved proposal. Params: [from, proposal_id]
vex_cancelProposalCancel a proposal (proposer only). Params: [from, proposal_id]
vex_getProposalGet proposal details by ID. Params: [proposal_id]
vex_listProposalsList proposals (optional status filter). Params: [status?]

Multi-Sig (VSC-88)

MethodDescription
vex_createMultiSigCreate an M-of-N multi-sig account. Params: [from, signers_array, threshold, label]
vex_proposeMultiSigTxPropose a transaction from a multi-sig. Params: [from, multisig_address, operations_json, description]
vex_approveMultiSigTxApprove a pending multi-sig transaction. Params: [from, multisig_address, tx_id]
vex_revokeMultiSigApprovalRevoke approval on a pending tx. Params: [from, multisig_address, tx_id]
vex_getMultiSigGet multi-sig account details. Params: [address]
vex_listMultiSigTxsList transactions for a multi-sig. Params: [address]

DAO (VSC-99)

MethodDescription
vex_createDaoCreate a new DAO. Params: [name, token_mint, config, sender]
vex_daoProposeSubmit a proposal to a DAO. Params: [dao_address, title, description, proposal_type, sender]
vex_daoVoteVote on a DAO proposal. Params: [dao_address, proposal_id, vote, sender]
vex_daoExecuteExecute a passed DAO proposal. Params: [dao_address, proposal_id, sender]
vex_daoCancelCancel a DAO proposal. Params: [dao_address, proposal_id, sender]
vex_getDaoGet DAO details. Params: [dao_address]
vex_listDaosList all DAOs. Params: [limit]
vex_getDaoProposalGet proposal details. Params: [dao_address, proposal_id]

Safety (VSC-SAFE)

MethodDescription
vex_getContractSafetyGet safety record for a bridge contract. Params: [chain, contract_address]
vex_listContractSafetyList contract safety records (optional chain filter). Params: [chain?, limit]

Dragonfly Stream

MethodDescription
vex_getDragonflyStatsDragonfly Stream statistics (forwarded/received counts, seal type, enabled status). Params: []

Vexcel (Attestation DAG)

MethodDescription
vex_getAttestationsGet attestation blocks at a given height. Params: [height]
vex_getBlockDAGGet canonical block + attestation blocks (full DAG structure). Params: [height]

Bridge Mappings

MethodDescription
vex_registerBridgeMappingRegister a canonical bridge mapping (Foundation-gated). Params: [chain, contract, mint, sender]
vex_getBridgeMappingsList bridge mappings (optional chain filter). Params: [chain?]

Node Health

MethodDescription
vex_validatorHealthNode health: block height, peers, sync status, uptime, version. Params: []
vex_getStorageStatsStorage tier statistics (ElasticState hot/warm/cold). Params: []
vex_getCurrentLeaderCurrent block leader for a height. Params: [height?] (null = current)

Bushido Passport

MethodDescription
vex_getPassportGet a Bushido Passport by owner address. Params: [owner]
vex_lookupPassportLook up passport by gamertag. Params: [gamertag]
vex_getPassportStatsGet global passport statistics. Params: []
vex_getGameProfileGet a game profile for a passport. Params: [passport_owner, game_id]

Utility

MethodDescription
vex_submitBundleSubmit a signed transaction bundle (Borsh hex). Params: [borsh_hex]
vex_generateKeypairGenerate Ed25519 keypair (testnet only). Params: []
vex_deriveAddressDerive Vexidus Smart Address from a public key. Params: [pubkey_hex]

WebSocket Subscriptions

Vexidus supports push-based event streaming via WebSocket on the same RPC port (9933). Connect with any WebSocket client to receive real-time notifications.

Connection

# Connect via wscat
wscat -c ws://localhost:9933

# Or use the public endpoint
wscat -c wss://testnet.vexidus.io

Subscribe to New Block Headers

Receive a notification each time a new block is finalized.

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

Notification format:

{
"height": 925290,
"hash": "Vxh...",
"parentHash": "Vxh...",
"timestamp": 1773376771,
"proposer": "Vx0...",
"stateRoot": "Vxh...",
"transactionsRoot": "Vxh...",
"gasUsed": 210000,
"gasLimit": 5242880,
"baseFee": 10,
"bundleCount": 3
}

Unsubscribe: {"jsonrpc":"2.0","method":"vex_unsubscribe_newHeads","params":["SUBSCRIPTION_ID"],"id":2}

Subscribe to New Transactions

Receive a notification for each transaction bundle included in a new block.

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

Notification format:

{
"blockHeight": 925290,
"blockHash": "Vxh...",
"bundleHash": "Vxh...",
"bundleIndex": 0,
"from": "Vx0...",
"operations": ["Transfer", "Swap"],
"gasUsed": 42000,
"timestamp": 1773376771
}

Subscribe to Logs (with Filter)

Receive operation-level logs with optional filtering by operation type and/or address.

{"jsonrpc":"2.0","method":"vex_subscribe_logs","params":[{"opType":["Transfer","Swap"]}],"id":1}

Filter options:

  • opType -- Array of operation types: "Transfer", "Swap", "Stake", "BridgeDeposit", etc.
  • address -- Array of Vx0 addresses to filter by sender

Notification format:

{
"blockHeight": 925290,
"blockHash": "Vxh...",
"bundleHash": "Vxh...",
"bundleIndex": 0,
"opIndex": 0,
"opType": "Transfer",
"from": "Vx0...",
"data": { "to": "Vx0...", "token": "Vx1...", "amount": 1000000000 },
"timestamp": 1773376771
}

Subscription Methods Summary

SubscribeUnsubscribeItem Type
vex_subscribe_newHeadsvex_unsubscribe_newHeadsBlock header
vex_subscribe_newTransactionsvex_unsubscribe_newTransactionsTransaction bundle
vex_subscribe_logsvex_unsubscribe_logsOperation log (filterable)

Notes

  • Subscriptions use a 64-block buffer. Slow consumers that fall behind will skip missed blocks (no backfill).
  • During initial sync, subscriptions are paused to avoid flooding with historical blocks.
  • All hash and address values use native Vexidus format (Vxh for hashes, Vx0 for addresses).

EVM Compatibility (eth_*)

These endpoints provide MetaMask and EVM tooling compatibility. They translate EVM-format requests into native Vexidus state queries.

MethodDescription
eth_callSimulate contract call (ERC-20/721/1155 function selectors supported)
eth_sendRawTransactionSubmit an ECDSA-signed transaction
eth_getBalanceGet VXS balance (scaled to 18 decimals for MetaMask)
eth_getTransactionCountGet account nonce
eth_chainIdReturns chain ID (0x18b070 testnet, 0x18b071 mainnet)
eth_blockNumberCurrent block height (hex)
eth_getBlockByNumberBlock data by height
eth_getBlockByHashBlock data by hash
eth_getTransactionByHashTransaction data by hash
eth_getTransactionReceiptTransaction receipt
eth_getLogsEvent logs (ERC-20 Transfer, ERC-721 Transfer, ERC-1155 events)
eth_getCodeReturns bytecode stub for VSC tokens (appears as contract to wallets)
eth_estimateGasGas estimation
net_versionNetwork version
web3_clientVersionClient version string

Notes on EVM Compatibility

  • Decimal scaling: eth_getBalance returns VXS scaled to 18 decimals (native is 9). MetaMask displays correct human-readable amounts.
  • Address format: eth_* methods use 20-byte 0x addresses. The adapter right-aligns to 32 bytes internally.
  • ERC-20 simulation: eth_call with standard function selectors (balanceOf, name, symbol, decimals, totalSupply) works on VSC-7 tokens.
  • No bytecode execution: Vexidus does NOT run EVM opcodes. The eth_* layer translates wallet RPC formats into native state queries.