Testnet, tokens have no value. Do not send real assets.
Skip to Content
Testnet appsOverview

Testnet apps

The Aeva testnet runs a small market on top of the chain: six test assets that pay a test dividend every hour, a DEX, a trade desk, a lender, an asset launcher, quests and network stats. Each has a page in the app at aevachain.app  and a public API; these guides drive them from a shell, so you can see every transaction for what it is.

Testnet, tokens have no value. The test stocks are not shares of any company, their dividends are paid in testnet aeUSD, and the network may be reset at any time.

GuideApp pageWhat it does
Hold a test stock/faucet claim a test stock, watch the hourly dividend accrue, claim it
Swap and pools/swap , /pools quote and swap on the Uniswap v2 DEX with cast
Trade desk/trade sell a dividend strip to the desk in one settlement
Borrow against your stock/borrow pledge shares, receive aeUSD, repay, get them back
Launch an asset/launch register metadata, create and issue your own asset
Quests and badges/quests read your quest progress and the leaderboard
Network statsexplorer /stats totals, daily activity and TVL from the indexer and the pools
Build on Aeva/ecosystem the pieces every app above is built from

Set up the shell

You need: aevad (download and verify), curl and jq; the swap guide also uses cast. Every guide below starts from this block. It uses a throwaway keyring in ~/.aeva-apps and one faucet claim.

export AEVA_NODE=${AEVA_NODE:-https://rpc.aevachain.com} export AEVA_INDEXER=${AEVA_INDEXER:-https://indexer.aevachain.com} export AEVA_EVM=${AEVA_EVM:-https://evm.aevachain.com} export AEVA_APP=${AEVA_APP:-https://aevachain.app} export AEVA_FAUCET=${AEVA_FAUCET:-https://faucet.aevachain.com} export AEVA_EXPLORER=${AEVA_EXPLORER:-https://explorer.aevachain.com} export AEVA_CHAIN_ID=${AEVA_CHAIN_ID:-aeva-testnet-1} export AEVA_HOME=${AEVA_HOME:-$HOME/.aeva-apps} alias_tx() { aevad tx "$@" --node "$AEVA_NODE" --chain-id "$AEVA_CHAIN_ID" --home "$AEVA_HOME" --keyring-backend test --gas 400000 --fees 10000000000000000aaeva -y -o json; } wait_tx() { local t=""; for _ in $(seq 1 30); do t=$(aevad query tx "$1" --node "$AEVA_NODE" -o json 2>/dev/null) && break; sleep 1; done; [ -n "$t" ] || { echo "tx $1 not found" >&2; return 1; }; [ "$(jq -r '.code // 0' <<<"$t")" = 0 ] || { jq -r '"tx refused: code \(.code) (\(.codespace)): \(.raw_log)"' <<<"$t" >&2; return 1; }; echo "$t"; } aevad keys add me --home "$AEVA_HOME" --keyring-backend test --no-backup >/dev/null 2>&1 || true ME=$(aevad keys show me -a --home "$AEVA_HOME" --keyring-backend test) echo "me: $ME"

alias_tx pays a fee of 0.01 AEVA (400 000 gas at 25 gwei); wait_tx waits for the transaction’s block and prints the reason if the chain refused it.

One wallet at a time

A MetaMask transaction and a Keplr one from the same account cannot wait in the mempool together: while an EVM transaction (a swap, an approve) is pending, a native one from the same address is refused with address already reserved. Wait for the first to be in a block, a second or two, and sign the next. The launch load test hit it three times in 3 300 steps (bench/LAUNCH-LOAD.md).

Last updated