Skip to main content

VexForge -- Protocol-Level Token Standards

VexForge is Vexidus's built-in token factory. Unlike Ethereum where tokens require deploying Solidity smart contracts, Vexidus tokens are native protocol primitives -- created via RPC, validated by the state machine, and stored directly in RocksDB.

No bytecode deployment. No gas-intensive contract calls. No audit surface for user-deployed code.

VSC Standards

StandardTypeEthereum EquivalentStatus
VSC-7Fungible tokensERC-20Live
VSC-8Stablecoins (regulated, issuer-controlled)FiatTokenV2 + protocol securityLive
VSC-21Non-fungible tokens (NFTs)ERC-721Live
VSC-55Multi-token (fungible + NFT)ERC-1155Live
VSC-88Protocol governance + multi-sigGovernor + Gnosis SafeLive
VSC-99DAO program (token-weighted governance)Compound GovernorComing Soon
VSC-8: Protocol-Native Stablecoins

VSC-8 is a dedicated standard for regulated fiat-backed stablecoins with 6 protocol-enforced security layers, quantum-ready keys, and canonical cross-chain bridging. 18 stablecoins across 10 currencies are pre-mapped at genesis. Read more →

VSC-88: On-Chain Governance + Multi-Sig

VSC-88 adds protocol-level governance (parameter changes, treasury spending, signal votes) with stake-weighted validator voting, plus M-of-N multi-sig shared wallets for teams and treasuries. Protocol Governance → | Multi-Sig Wallets →


VSC-7: Fungible Tokens

Overview

VSC-7 tokens are fungible assets with configurable name, symbol, decimals, and supply. Created in a single RPC call, immediately tradeable.

Create a Token

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_createToken",
"params": ["MyToken", "MTK", 9, "1000000", "OWNER_ADDRESS"],
"id": 1
}' | jq .
ParameterDescription
nameToken name (e.g. "MyToken")
symbolTicker symbol (e.g. "MTK")
decimalsDecimal places (typically 9)
supplyTotal supply in human units
ownerAddress to receive initial supply

Query Token Info

# By mint address or symbol
curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"vex_getTokenInfo","params":["MTK"],"id":1}' | jq .

List All Tokens

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"vex_listTokens","params":[100],"id":1}' | jq .

Transfer Tokens

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_transfer",
"params": ["FROM_ADDRESS", "TO_ADDRESS", "MTK", "100"],
"id": 1
}' | jq .

Internal Architecture

  • Mint address: Deterministic Blake3 hash of creator + name + symbol + timestamp -> 32-byte Address
  • Display format: Vx1... (base58 with version 0x02)
  • Storage: StateMachine.token_registry (DashMap + RocksDB token:<hex> keys)
  • Balance tracking: Per-account balance maps keyed by token mint address
  • EVM compat: eth_call simulates ERC-20 functions (name(), symbol(), decimals(), totalSupply(), balanceOf())

VSC-21: Non-Fungible Tokens (NFTs)

Overview

Each NFT is a unique asset identified by (collection_mint, token_id). Collections are created like VSC-7 tokens but individual tokens within are non-fungible. Enhanced metadata support includes collection icons, banners, and royalty configuration.

Create a Collection

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_createNftCollection",
"params": ["My NFTs", "MNFT", "ipfs://QmBaseUri/", 10000, 500, "OWNER_ADDRESS", "A cool NFT collection", "ipfs://icon.png", null, "https://myproject.io"],
"id": 1
}' | jq .
ParameterDescription
nameCollection name (1-64 chars)
symbolTicker symbol (1-10 chars, alphanumeric)
base_uriBase URI for token metadata (IPFS/Arweave/HTTPS)
max_supplyMaximum tokens (null = unlimited)
royalty_bpsRoyalty in basis points (500 = 5%, max 5000)
ownerCollection creator/owner address
descriptionCollection description (optional)
icon_uriCollection icon URI (optional)
banner_uriCollection banner image URI (optional)
external_urlProject website URL (optional)

Mint an NFT

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_mintNft",
"params": ["COLLECTION_ADDRESS", 1, "ipfs://QmTokenMetadata/1.json", "RECIPIENT_ADDRESS", "CREATOR_ADDRESS"],
"id": 1
}' | jq .

Transfer an NFT

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_transferNft",
"params": ["COLLECTION_ADDRESS", 1, "TO_ADDRESS", "OWNER_ADDRESS"],
"id": 1
}' | jq .

Burn an NFT

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_burnNft",
"params": ["COLLECTION_ADDRESS", 1, "OWNER_ADDRESS"],
"id": 1
}' | jq .

Query

# Get single NFT
curl -s https://testnet.vexidus.io \
-d '{"jsonrpc":"2.0","method":"vex_getNft","params":["COLLECTION_ADDRESS", 1],"id":1}' | jq .

# List NFTs by owner
curl -s https://testnet.vexidus.io \
-d '{"jsonrpc":"2.0","method":"vex_listNftsByOwner","params":["OWNER_ADDRESS", null, 100],"id":1}' | jq .

# Get collection info
curl -s https://testnet.vexidus.io \
-d '{"jsonrpc":"2.0","method":"vex_getNftCollection","params":["COLLECTION_ADDRESS"],"id":1}' | jq .

RPC Methods

MethodDescription
vex_createNftCollectionCreate a new NFT collection with metadata
vex_mintNftMint an NFT within a collection
vex_transferNftTransfer an NFT to another address
vex_burnNftBurn an NFT (owner only)
vex_getNftQuery NFT by collection + token ID
vex_listNftsByOwnerList NFTs owned by an address
vex_getNftCollectionCollection metadata and token count

Data Model

NftCollection {
mint_address: Address, // Deterministic Blake3 hash
name: String, // Collection name
symbol: String, // Ticker symbol
creator: Address, // Creator address
base_uri: String, // Base metadata URI
max_supply: Option<u64>, // None = unlimited
total_minted: u64, // Current mint count
royalty_bps: u16, // Royalty basis points (0-5000)
metadata: NftCollectionMetadata, // Rich metadata
created_at: u64, // Unix timestamp
standard: "VSC-21",
}

NftToken {
collection: Address, // Collection mint address
token_id: u64, // Unique within collection
owner: Address, // Current owner
creator: Address, // Original minter
metadata_uri: String, // Individual token metadata URI
created_at: u64, // Block height at mint
}

EVM Compatibility

  • ERC-721 simulation via eth_call: ownerOf(uint256), tokenURI(uint256), balanceOf(address)
  • eth_getLogs: ERC-721 Transfer events with 4 indexed topics
  • eth_getCode: Returns bytecode stub for collections (appears as contract to MetaMask/OpenSea)

VSC-55: Multi-Token Standard

Overview

A single collection can contain both fungible and non-fungible token types. Supports batch operations for efficiency. Analogous to ERC-1155. Each collection has named token types -- a game might have "Gold Coins" (fungible, supply=1M) and "Legendary Sword" (non-fungible, supply=1) in one collection.

Create a Collection

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_createMultiTokenCollection",
"params": ["Game Items", "GAME", "ipfs://QmBase/", 500, "OWNER_ADDRESS", "In-game items collection", "ipfs://icon.png", null, "https://mygame.io"],
"id": 1
}' | jq .

Define a Token Type

curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_defineTokenType",
"params": ["COLLECTION_ADDRESS", 1, "Gold Coins", "ipfs://QmGold.json", "1000000", true, "CREATOR_ADDRESS"],
"id": 1
}' | jq .
ParameterDescription
collectionCollection mint address
token_type_idUnique type ID (u64)
nameHuman-readable name
metadata_uriMetadata URI for this type
max_supplyMaximum supply (null = unlimited)
is_fungibletrue = fungible, false = non-fungible (set max_supply=1)
senderMust be collection creator

Mint Tokens

# Single mint
curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_mintMultiToken",
"params": ["COLLECTION_ADDRESS", 1, "RECIPIENT_ADDRESS", "500", "CREATOR_ADDRESS"],
"id": 1
}' | jq .

# Batch mint
curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_batchMintMultiToken",
"params": ["COLLECTION_ADDRESS", [{"token_type_id":1,"to":"ADDR1","amount":"100"},{"token_type_id":2,"to":"ADDR2","amount":"1"}], "CREATOR_ADDRESS"],
"id": 1
}' | jq .

Transfer Tokens

# Single transfer
curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_transferMultiToken",
"params": ["COLLECTION_ADDRESS", 1, "TO_ADDRESS", "50", "FROM_ADDRESS"],
"id": 1
}' | jq .

# Batch transfer
curl -s https://testnet.vexidus.io \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "vex_batchTransferMultiToken",
"params": ["COLLECTION_ADDRESS", [{"token_type_id":1,"to":"ADDR","amount":"10"},{"token_type_id":2,"to":"ADDR","amount":"1"}], "SENDER_ADDRESS"],
"id": 1
}' | jq .

RPC Methods

MethodDescription
vex_createMultiTokenCollectionCreate a multi-token collection
vex_defineTokenTypeDefine a new token type in a collection
vex_mintMultiTokenMint tokens of a type
vex_batchMintMultiTokenBatch mint multiple types
vex_transferMultiTokenTransfer tokens of a type
vex_batchTransferMultiTokenBatch transfer multiple types
vex_burnMultiTokenBurn tokens
vex_getMultiTokenBalanceQuery balance (collection, type, owner)
vex_getTokenTypeToken type definition
vex_getMultiTokenCollectionCollection metadata
vex_listTokenTypesList types in a collection

EVM Compatibility

  • eth_call supports ERC-1155 selectors: balanceOf(address,uint256), uri(uint256)
  • eth_getLogs: TransferSingle/TransferBatch events
  • eth_getCode: Returns stub for collections (visible as contract)

VexBridge v2: Cross-Chain Bridge

VexBridge enables bidirectional token transfers between Vexidus and external blockchains. Tokens bridged into Vexidus are minted as VSC-7 assets with deterministic addresses.

For full details, see the VexBridge documentation.

Fee Schedule

ChainFee (bps)Min FeeNotes
Ethereum30 (0.3%)~1 unitLight client verified (Tier 2)
Solana10 (0.1%)~0.1 unitLight client verified (Tier 2)
Bitcoin50 (0.5%)~5 unitsOracle consensus (Tier 3)
Other25 (0.25%)~0.5 unitsDefault

RPC Methods

MethodDescription
vex_bridgeTokenDeposit tokens from external chain to Vexidus
vex_bridgeWithdrawWithdraw tokens from Vexidus to external chain
vex_getBridgeStatusQuery deposit/withdrawal status
vex_getBridgeHistoryList bridge operations for an address
vex_getBridgeFeesQuery fee schedule (per-chain or all)

VexiDEX -- On-Chain Decentralized Exchange

VexiDEX is a constant-product AMM (x*y=k) built as a native protocol primitive. Like VexForge tokens, pools are created via RPC calls -- no smart contract deployment needed. 0.3% swap fee.

Pool RPC Endpoints

MethodParamsDescription
vex_createPooltoken_a, token_b, amount_a, amount_b, lp_lock_duration, senderCreate a new liquidity pool
vex_addLiquiditytoken_a, token_b, amount_a, amount_b, min_lp_tokens, senderAdd liquidity to existing pool
vex_removeLiquiditytoken_a, token_b, lp_amount, min_amount_a, min_amount_b, senderRemove liquidity and redeem LP tokens
vex_swapfrom_token, to_token, amount_in, min_amount_out, senderSwap tokens through a pool
vex_getPooltoken_a, token_bGet pool info by token pair
vex_listPoolslimitList all pools
vex_quoteSwapfrom_token, to_token, amount_inGet swap quote (read-only, no transaction)

Pool Mechanics

  • Pool address: Deterministic Blake3("pool_{sorted_a_hex}_{sorted_b_hex}") -- same pair in any order produces the same pool
  • LP tokens: Mint address = pool address. Initial LP = sqrt(amount_a * amount_b), subsequent additions proportional
  • LP locking: Optional lock duration (seconds) prevents removal until expiry
  • Presale auto-LP: Finalized presales (VSC-LAUNCH) auto-create real pools with locked LP

VexForge vs Smart Contracts

FeatureVexForge (Vexidus)Smart Contracts (Ethereum)
Token creationSingle RPC callDeploy Solidity contract
ExecutionState machine nativeEVM bytecode
Audit surfaceProtocol-level (audited once)Per-contract (each needs audit)
Gas costMinimal (no bytecode)High (contract deployment + calls)
ComposabilityVia IntentVMVia contract-to-contract calls
UpgradabilityProtocol upgradesProxy patterns
Custom logicIntentVM programs (future)Arbitrary Solidity