Skip to main content
Vana supports building on two networks. Your app code is identical on both — you pick the network with one setting, and the SDK resolves the right chain, contracts, and escrow for you.
Moksha (testnet)Mainnet
Use it forDevelopment and testingYour live app
Chain ID148001480
Block explorermoksha.vanascan.iovanascan.io
Vana Account (app identity + escrow)account.vana.org/developers, Protocol network: Testnetaccount.vana.org/developers, Protocol network: Mainnet
Vana app (test users connect data)app.vana.org/sources, network set to Testnetapp.vana.org/sources, network set to Mainnet
Fee asset for paid readsnative VANAUSDC.e
How to get fundsFaucet — free, 10 VANA per address per 24hFund your wallet below
Testnet and mainnet data do not mix. A grant approved on testnet cannot be read on mainnet, and escrow balances are separate per network. Use the same network on your app (VANA_NETWORK) and in the Vana app your test user signs into.

Switch networks

One environment variable selects the network in both the example app and the SDK:
VANA_ENV=production
VANA_NETWORK=moksha   # development and testing
# VANA_NETWORK=mainnet  # your live app
VANA_ENV stays production in both cases — it selects the Vana product stack, while VANA_NETWORK selects the chain. In SDK code, the same choice is the network option:
const vana = createDirectDataController({
  env: "production",
  network: "moksha", // or "mainnet"
  // ...
});
When you move an app from testnet to mainnet: switch VANA_NETWORK, register your app identity on mainnet (same flow, Protocol network: Mainnet), and fund mainnet escrow. Nothing else changes.

Fund your wallet (mainnet)

Mainnet paid reads settle in USDC.e, and on-chain actions (registration, escrow funding) need a small amount of VANA for gas. You’ll need both in the wallet you use on account.vana.org.

Get VANA

VANA is the network’s native token, used for gas (and for all fees on testnet). Two ways to get it: Withdraw from an exchange (simplest). Major exchanges that list VANA (Binance, Bybit) support deposits and withdrawals directly on the Vana network: withdraw to your wallet address and native VANA lands on Vana L1, gas-ready — no bridging or wrapping needed. See CoinGecko markets for the current venue list. Buy on-chain and bridge in. VANA trades as a cross-chain ERC-20 at the same address on every supported chain: 0x7FF7Fa94b8b66Ef313f7970d4EEbd2CB3103a2C0. Swap USDC for VANA on Aerodrome (Base) or Uniswap v3 (Ethereum), then bridge to Vana with Stargate — it arrives as native VANA, gas-ready, no unwrapping step.
These DEXs only list VANA once you select it by contract address (0x7FF7…a2C0) — the links above pre-select it. Sell USDC (the paired asset), and keep test swaps small: the VANA/USDC pools are new (~$130K liquidity each), so a large swap moves the price.
Exchange withdrawalBinance / Bybit → withdraw on the Vana network → native VANA
Buy VANA on-chainAerodrome (Base) · Uniswap v3 (Ethereum) — VANA/USDC, token 0x7FF7…a2C0
Bridge to Vana mainnetStargate — delivers native VANA

Get USDC on Vana

Paid reads on mainnet are charged in USDC.e from your app’s escrow balance. Bridge USDC from Base or Ethereum with Stargate — it arrives on Vana as USDC.e.
USDC.e token on Vana mainnet0xF1815bd50389c46847f0Bda824eC8da914045D14 — “Bridged USDC (Stargate)”, 6 decimals
Bridge USDC inStargate: USDC on Base/Ethereum → USDC.e on Vana

Check fees before you fund

Fee amounts and assets are set on-chain in FeeRegistry and can change — check it (and the Fund escrow section of Vana Account) before funding:
You never pay fees manually. When a read requires payment, the Personal Server returns a 402 challenge and the SDK settles it from your escrow automatically — see Fund escrow and check fees.