RPC Reference
Vexidus exposes 100+ JSON-RPC endpoints organized into two namespaces: vex_* (native) and eth_* (EVM compatibility).
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}'
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
| Method | Description |
|---|---|
vex_getBalance | Get token balance for an address. Params: [address, token_symbol] |
vex_transfer | Transfer tokens (convenience, unsigned). Params: [from, to, token, amount] |
vex_createToken | Create a VSC-7 fungible token. Params: [name, symbol, decimals, supply, owner] |
vex_getTokenInfo | Get token metadata by symbol or mint address. Params: [symbol_or_mint] |
vex_listTokens | List all registered tokens. Params: [limit] |
vex_updateTokenMetadata | Update mutable token metadata (creator only). Params: [mint, sender, metadata_uri?, image?, description?, external_url?, twitter?, discord?, telegram?, github?] |
vex_lockTokenMetadata | Permanently lock token metadata (one-way). Params: [mint, sender] |
vex_getTokenReputation | Get token reputation score (VSC-REP). Params: [mint] |
DEX (VexiDEX)
| Method | Description |
|---|---|
vex_createPool | Create a new liquidity pool. Params: [token_a, token_b, amount_a, amount_b, lp_lock_duration, sender] |
vex_addLiquidity | Add liquidity to existing pool. Params: [token_a, token_b, amount_a, amount_b, min_lp_tokens, sender] |
vex_removeLiquidity | Remove liquidity and redeem LP tokens. Params: [token_a, token_b, lp_amount, min_amount_a, min_amount_b, sender] |
vex_swap | Swap tokens through a pool. Params: [from_token, to_token, amount_in, min_amount_out, sender] |
vex_getPool | Get pool info by token pair. Params: [token_a, token_b] |
vex_listPools | List all pools. Params: [limit] |
vex_quoteSwap | Get swap quote (read-only). Params: [from_token, to_token, amount_in] |
NFT (VSC-21)
| Method | Description |
|---|---|
vex_createNftCollection | Create NFT collection. Params: [name, symbol, base_uri, max_supply, royalty_bps, owner, description?, icon_uri?, banner_uri?, external_url?] |
vex_mintNft | Mint an NFT. Params: [collection, token_id, metadata_uri, recipient, sender] |
vex_transferNft | Transfer an NFT. Params: [collection, token_id, to, owner] |
vex_burnNft | Burn an NFT (owner only). Params: [collection, token_id, owner] |
vex_getNft | Query NFT by collection + token ID. Params: [collection, token_id] |
vex_listNftsByOwner | List NFTs owned by address. Params: [owner, collection?, limit] |
vex_getNftCollection | Collection metadata and stats. Params: [collection] |
Multi-Token (VSC-55)
| Method | Description |
|---|---|
vex_createMultiTokenCollection | Create multi-token collection. Params: [name, symbol, base_uri, royalty_bps, owner, description?, icon_uri?, banner_uri?, external_url?] |
vex_defineTokenType | Define a token type in collection. Params: [collection, type_id, name, metadata_uri, max_supply, is_fungible, sender] |
vex_mintMultiToken | Mint tokens of a type. Params: [collection, type_id, recipient, amount, sender] |
vex_batchMintMultiToken | Batch mint multiple types. Params: [collection, mints_array, sender] |
vex_transferMultiToken | Transfer tokens of a type. Params: [collection, type_id, to, amount, from] |
vex_batchTransferMultiToken | Batch transfer multiple types. Params: [collection, transfers_array, sender] |
vex_burnMultiToken | Burn tokens. Params: [collection, type_id, amount, owner] |
vex_getMultiTokenBalance | Query balance. Params: [collection, type_id, owner] |
vex_getTokenType | Token type definition. Params: [collection, type_id] |
vex_getMultiTokenCollection | Collection metadata. Params: [collection] |
vex_listTokenTypes | List types in collection. Params: [collection, limit] |
Presale (VSC-LAUNCH)
| Method | Description |
|---|---|
vex_createPresale | Create a presale with anti-rug protection. |
vex_contributePresale | Contribute to a presale. |
vex_finalizePresale | Finalize presale and auto-create LP. |
vex_refundPresale | Refund if presale fails. |
vex_getPresale | Get presale details. |
vex_listPresales | List all presales. |
vex_getPresaleContributions | List contributions for a presale. |
vex_getPresaleStatus | Get presale status summary. |
Bridge
| Method | Description |
|---|---|
vex_bridgeToken | Deposit tokens from external chain. Params: [chain, tx_hash, symbol, amount, recipient, proof] |
vex_bridgeWithdraw | Withdraw tokens to external chain. Params: [token_mint, amount, chain, destination, sender] |
vex_getBridgeStatus | Query bridge operation status. Params: [chain, tx_hash] |
vex_getBridgeHistory | List bridge operations for address. Params: [address, limit] |
vex_getBridgeFees | Get fee config for a chain. Params: [chain?] (null for all) |
vex_autobridge | Universal receive -- auto-detect and process. |
vex_getPendingReceives | List pending auto-detected receives. |
Anchor (Data Attestation)
| Method | Description |
|---|---|
vex_anchor | Anchor data to the blockchain. Params: [namespace, key, value_hash, sender] |
vex_getAnchors | Query anchored data by namespace. Params: [namespace, limit] |
vex_verifyAnchor | Verify an anchor exists and return its metadata. Params: [namespace, key] |
IntentVM
| Method | Description |
|---|---|
vex_submitIntent | Submit intent (NL or JSON). Params: [intent_string, sender_address] |
vex_simulateIntent | Dry-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_previewIntent | Human-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_getExecutionPlan | Preview execution steps + gas estimate. Params: [intent_string] |
vex_getIntentStatus | Query intent result by hash. Params: [bundle_hash] |
vex_getPrice | Get spot price between two tokens. Returns direct price or auto-routed price through intermediate pools. Params: [from_symbol, to_symbol] |
VIP (Vexidus Intent Programs)
| Method | Description |
|---|---|
vex_registerProgram | Register a VIP program on-chain. Params: [program_json, sender] |
vex_getProgram | Get a registered VIP program by name. Params: [name] |
vex_listPrograms | List all registered VIP programs. Params: [limit] |
vex_simulateProgram | Simulate VIP execution (dry run). Params: [name, params, sender] |
vex_executeProgram | Execute a VIP program. Params: [name, params, sender] |
Staking
| Method | Description |
|---|---|
vex_stake | Stake VXS as validator. Params: [staker_address, amount, validator_pubkey] |
vex_unstake | Begin unbonding. Params: [address, amount] |
vex_getValidator | Get validator details. Params: [address] |
vex_listValidators | List all validators. Params: [limit] |
vex_stakingInfo | Network staking summary. Params: [] |
vex_setCommission | Set commission rate (basis points). Params: [address, commission_bps] |
vex_unjail | Unjail validator after cooldown. Params: [address] |
vex_setValidatorMetadata | Set validator profile. Params: [address, name, description, website, avatar] |
vex_getDelegations | Get delegations for address (includes auto_compound status). Params: [address] |
vex_setAutoCompound | Toggle auto-compound for a delegation. Params: [validator, enable, sender] |
vex_setPoolConfig | Configure staking pool settings (validator only). Params: [pool_enabled, pool_name, min_delegation, auto_compound_default, sender] |
Staking Pools (VSC-20)
| Method | Description |
|---|---|
vex_createStakingPool | Create a programmable staking pool. Params: [token_mint, reward_source, reward_rate, lock_period, capacity, per_user_cap, sender] |
vex_stakeToPool | Stake tokens into a pool. Params: [pool_address, amount, sender] |
vex_unstakeFromPool | Unstake tokens from a pool. Params: [pool_address, amount, sender] |
vex_claimPoolRewards | Claim accumulated pool rewards. Params: [pool_address, sender] |
vex_listStakingPools | List all staking pools. Params: [limit] |
vex_getStakingPool | Get pool details. Params: [pool_address] |
Explorer
| Method | Description |
|---|---|
vex_getBlockByHeight | Get block by height (includes tx stats). Params: [height] |
vex_getRecentBlocks | Get recent blocks. Params: [limit] |
vex_getRecentTransactions | Get recent transactions. Params: [limit] |
vex_getNetworkStats | Network statistics. Params: [] |
vex_getBlockTransactions | Transactions in a specific block. Params: [height] |
vex_getAddressHistory | Transaction history for address. Params: [address, limit] |
vex_getTokenHolders | Token holder list. Params: [token_mint, limit] |
vex_getTokenTransfers | Token transfer history. Params: [token_mint, limit] |
vex_search | Search by hash, address, or block. Params: [query] |
vex_getTransactionReceipt | Transaction receipt by hash. Params: [tx_hash] |
vex_getAddressTokens | List tokens held by address. Params: [address] |
VNS (Vexidus Name Service)
| Method | Description |
|---|---|
vex_resolveName | Resolve .vex name to address. Params: [name] |
vex_registerName | Register a .vex name. Params: [name, sender] |
vex_reverseResolve | Reverse lookup: address to name. Params: [address] |
vex_getNameInfo | Full name details. Params: [name] |
Upgrade Governance (VexVisor)
| Method | Description |
|---|---|
vex_scheduleUpgrade | Schedule a network upgrade. |
vex_cancelUpgrade | Cancel a scheduled upgrade. |
vex_voteUpgrade | Vote on a scheduled upgrade. |
vex_getUpgradePlan | View the active upgrade plan. |
Protocol Governance (VSC-88)
| Method | Description |
|---|---|
vex_createProposal | Create 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_voteProposal | Vote on an active proposal. Params: [from, proposal_id, approve] |
vex_executeProposal | Execute an approved proposal. Params: [from, proposal_id] |
vex_cancelProposal | Cancel a proposal (proposer only). Params: [from, proposal_id] |
vex_getProposal | Get proposal details by ID. Params: [proposal_id] |
vex_listProposals | List proposals (optional status filter). Params: [status?] |
Multi-Sig (VSC-88)
| Method | Description |
|---|---|
vex_createMultiSig | Create an M-of-N multi-sig account. Params: [from, signers_array, threshold, label] |
vex_proposeMultiSigTx | Propose a transaction from a multi-sig. Params: [from, multisig_address, operations_json, description] |
vex_approveMultiSigTx | Approve a pending multi-sig transaction. Params: [from, multisig_address, tx_id] |
vex_revokeMultiSigApproval | Revoke approval on a pending tx. Params: [from, multisig_address, tx_id] |
vex_getMultiSig | Get multi-sig account details. Params: [address] |
vex_listMultiSigTxs | List transactions for a multi-sig. Params: [address] |
DAO (VSC-99)
| Method | Description |
|---|---|
vex_createDao | Create a new DAO. Params: [name, token_mint, config, sender] |
vex_daoPropose | Submit a proposal to a DAO. Params: [dao_address, title, description, proposal_type, sender] |
vex_daoVote | Vote on a DAO proposal. Params: [dao_address, proposal_id, vote, sender] |
vex_daoExecute | Execute a passed DAO proposal. Params: [dao_address, proposal_id, sender] |
vex_daoCancel | Cancel a DAO proposal. Params: [dao_address, proposal_id, sender] |
vex_getDao | Get DAO details. Params: [dao_address] |
vex_listDaos | List all DAOs. Params: [limit] |
vex_getDaoProposal | Get proposal details. Params: [dao_address, proposal_id] |
Safety (VSC-SAFE)
| Method | Description |
|---|---|
vex_getContractSafety | Get safety record for a bridge contract. Params: [chain, contract_address] |
vex_listContractSafety | List contract safety records (optional chain filter). Params: [chain?, limit] |
Dragonfly Stream
| Method | Description |
|---|---|
vex_getDragonflyStats | Dragonfly Stream statistics (forwarded/received counts, seal type, enabled status). Params: [] |
Vexcel (Attestation DAG)
| Method | Description |
|---|---|
vex_getAttestations | Get attestation blocks at a given height. Params: [height] |
vex_getBlockDAG | Get canonical block + attestation blocks (full DAG structure). Params: [height] |
Bridge Mappings
| Method | Description |
|---|---|
vex_registerBridgeMapping | Register a canonical bridge mapping (Foundation-gated). Params: [chain, contract, mint, sender] |
vex_getBridgeMappings | List bridge mappings (optional chain filter). Params: [chain?] |
Node Health
| Method | Description |
|---|---|
vex_validatorHealth | Node health: block height, peers, sync status, uptime, version. Params: [] |
vex_getStorageStats | Storage tier statistics (ElasticState hot/warm/cold). Params: [] |
vex_getCurrentLeader | Current block leader for a height. Params: [height?] (null = current) |
Bushido Passport
| Method | Description |
|---|---|
vex_getPassport | Get a Bushido Passport by owner address. Params: [owner] |
vex_lookupPassport | Look up passport by gamertag. Params: [gamertag] |
vex_getPassportStats | Get global passport statistics. Params: [] |
vex_getGameProfile | Get a game profile for a passport. Params: [passport_owner, game_id] |
Utility
| Method | Description |
|---|---|
vex_submitBundle | Submit a signed transaction bundle (Borsh hex). Params: [borsh_hex] |
vex_generateKeypair | Generate Ed25519 keypair (testnet only). Params: [] |
vex_deriveAddress | Derive 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
| Subscribe | Unsubscribe | Item Type |
|---|---|---|
vex_subscribe_newHeads | vex_unsubscribe_newHeads | Block header |
vex_subscribe_newTransactions | vex_unsubscribe_newTransactions | Transaction bundle |
vex_subscribe_logs | vex_unsubscribe_logs | Operation 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 (
Vxhfor hashes,Vx0for addresses).
EVM Compatibility (eth_*)
These endpoints provide MetaMask and EVM tooling compatibility. They translate EVM-format requests into native Vexidus state queries.
| Method | Description |
|---|---|
eth_call | Simulate contract call (ERC-20/721/1155 function selectors supported) |
eth_sendRawTransaction | Submit an ECDSA-signed transaction |
eth_getBalance | Get VXS balance (scaled to 18 decimals for MetaMask) |
eth_getTransactionCount | Get account nonce |
eth_chainId | Returns chain ID (0x18b070 testnet, 0x18b071 mainnet) |
eth_blockNumber | Current block height (hex) |
eth_getBlockByNumber | Block data by height |
eth_getBlockByHash | Block data by hash |
eth_getTransactionByHash | Transaction data by hash |
eth_getTransactionReceipt | Transaction receipt |
eth_getLogs | Event logs (ERC-20 Transfer, ERC-721 Transfer, ERC-1155 events) |
eth_getCode | Returns bytecode stub for VSC tokens (appears as contract to wallets) |
eth_estimateGas | Gas estimation |
net_version | Network version |
web3_clientVersion | Client version string |
Notes on EVM Compatibility
- Decimal scaling:
eth_getBalancereturns VXS scaled to 18 decimals (native is 9). MetaMask displays correct human-readable amounts. - Address format:
eth_*methods use 20-byte0xaddresses. The adapter right-aligns to 32 bytes internally. - ERC-20 simulation:
eth_callwith 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.