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
| Standard | Type | Ethereum Equivalent | Status |
|---|---|---|---|
| VSC-7 | Fungible tokens | ERC-20 | Live |
| VSC-8 | Stablecoins (regulated, issuer-controlled) | FiatTokenV2 + protocol security | Live |
| VSC-21 | Non-fungible tokens (NFTs) | ERC-721 | Live |
| VSC-55 | Multi-token (fungible + NFT) | ERC-1155 | Live |
| VSC-88 | Protocol governance + multi-sig | Governor + Gnosis Safe | Live |
| VSC-99 | DAO program (token-weighted governance) | Compound Governor | Coming Soon |
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 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 .
| Parameter | Description |
|---|---|
name | Token name (e.g. "MyToken") |
symbol | Ticker symbol (e.g. "MTK") |
decimals | Decimal places (typically 9) |
supply | Total supply in human units |
owner | Address 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 + RocksDBtoken:<hex>keys) - Balance tracking: Per-account balance maps keyed by token mint address
- EVM compat:
eth_callsimulates 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 .
| Parameter | Description |
|---|---|
name | Collection name (1-64 chars) |
symbol | Ticker symbol (1-10 chars, alphanumeric) |
base_uri | Base URI for token metadata (IPFS/Arweave/HTTPS) |
max_supply | Maximum tokens (null = unlimited) |
royalty_bps | Royalty in basis points (500 = 5%, max 5000) |
owner | Collection creator/owner address |
description | Collection description (optional) |
icon_uri | Collection icon URI (optional) |
banner_uri | Collection banner image URI (optional) |
external_url | Project 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
| Method | Description |
|---|---|
vex_createNftCollection | Create a new NFT collection with metadata |
vex_mintNft | Mint an NFT within a collection |
vex_transferNft | Transfer an NFT to another address |
vex_burnNft | Burn an NFT (owner only) |
vex_getNft | Query NFT by collection + token ID |
vex_listNftsByOwner | List NFTs owned by an address |
vex_getNftCollection | Collection 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 topicseth_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 .
| Parameter | Description |
|---|---|
collection | Collection mint address |
token_type_id | Unique type ID (u64) |
name | Human-readable name |
metadata_uri | Metadata URI for this type |
max_supply | Maximum supply (null = unlimited) |
is_fungible | true = fungible, false = non-fungible (set max_supply=1) |
sender | Must 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
| Method | Description |
|---|---|
vex_createMultiTokenCollection | Create a multi-token collection |
vex_defineTokenType | Define a new token type in a collection |
vex_mintMultiToken | Mint tokens of a type |
vex_batchMintMultiToken | Batch mint multiple types |
vex_transferMultiToken | Transfer tokens of a type |
vex_batchTransferMultiToken | Batch transfer multiple types |
vex_burnMultiToken | Burn tokens |
vex_getMultiTokenBalance | Query balance (collection, type, owner) |
vex_getTokenType | Token type definition |
vex_getMultiTokenCollection | Collection metadata |
vex_listTokenTypes | List types in a collection |
EVM Compatibility
eth_callsupports ERC-1155 selectors:balanceOf(address,uint256),uri(uint256)eth_getLogs: TransferSingle/TransferBatch eventseth_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
| Chain | Fee (bps) | Min Fee | Notes |
|---|---|---|---|
| Ethereum | 30 (0.3%) | ~1 unit | Light client verified (Tier 2) |
| Solana | 10 (0.1%) | ~0.1 unit | Light client verified (Tier 2) |
| Bitcoin | 50 (0.5%) | ~5 units | Oracle consensus (Tier 3) |
| Other | 25 (0.25%) | ~0.5 units | Default |
RPC Methods
| Method | Description |
|---|---|
vex_bridgeToken | Deposit tokens from external chain to Vexidus |
vex_bridgeWithdraw | Withdraw tokens from Vexidus to external chain |
vex_getBridgeStatus | Query deposit/withdrawal status |
vex_getBridgeHistory | List bridge operations for an address |
vex_getBridgeFees | Query 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
| Method | Params | Description |
|---|---|---|
vex_createPool | token_a, token_b, amount_a, amount_b, lp_lock_duration, sender | Create a new liquidity pool |
vex_addLiquidity | token_a, token_b, amount_a, amount_b, min_lp_tokens, sender | Add liquidity to existing pool |
vex_removeLiquidity | token_a, token_b, lp_amount, min_amount_a, min_amount_b, sender | Remove liquidity and redeem LP tokens |
vex_swap | from_token, to_token, amount_in, min_amount_out, sender | Swap tokens through a pool |
vex_getPool | token_a, token_b | Get pool info by token pair |
vex_listPools | limit | List all pools |
vex_quoteSwap | from_token, to_token, amount_in | Get 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
| Feature | VexForge (Vexidus) | Smart Contracts (Ethereum) |
|---|---|---|
| Token creation | Single RPC call | Deploy Solidity contract |
| Execution | State machine native | EVM bytecode |
| Audit surface | Protocol-level (audited once) | Per-contract (each needs audit) |
| Gas cost | Minimal (no bytecode) | High (contract deployment + calls) |
| Composability | Via IntentVM | Via contract-to-contract calls |
| Upgradability | Protocol upgrades | Proxy patterns |
| Custom logic | IntentVM programs (future) | Arbitrary Solidity |