DEVELOPER QUICKSTART · PRE-LAUNCH

Three public Testnets.
One identity rule.

MIRCO runs three public Testnets today: MIRCO Testnet (MIRCO Native), MIRCO EVM Testnet and MIRCO SVM Testnet. Everything here is test value with no monetary value. None of them is production ready, and MIRCO Main is not launched. Every example on this page is a plain HTTPS call you can paste into a terminal.

Networks

Testnets only. Tokens and balances here have no monetary value and are not redeemable. Do not use real funds or real keys. MIRCO EVM Testnet and MIRCO SVM Testnet are experimental: one validator each, so no Byzantine fault tolerance — if that validator stops, the network stops. Production Ready: NO for all three.

MIRCO NATIVE · PUBLIC TESTNET

MIRCO Testnet

ChainId
mirco-testnet
GenesisId
b0f7cfe243f895fd5530e7b1c6a223fa6d79338a250bc1f6fae8656a3fcf71d4
Profile
MIRCO_NATIVE
RPC
https://rpc.testnet.mircochain.com/v1/chains/mirco-testnet
Explorer
explorer.testnet.mircochain.com ↗
Faucet
Testnet MTU ↗
Native coin
Mirco Test Unit (MTU), 6 decimals, no value
Wallet
MircoWallet: MIRCO address mrc1_…
Validators
4 · tolerates 1 faulty
Production ready
NO
EVM PROFILE · EXPERIMENTAL PUBLIC TESTNET

MIRCO EVM Testnet

Internal network
mirco-evm-test
EVM chain ID
7965 · 0x1f1d
GenesisId
3a245dea190e287fc8d60240cda7d594b399cf6b11be28ec0b251c2fd87d20b3
Profile
EVM_LITE
JSON-RPC
https://rpc.mircochain.com/v1/chains/mirco-evm-test/evm
Explorer
explorer.testnet.mircochain.com ↗
Faucet
Testnet EVM balance ↗
Native currency
Not yet defined (open owner decision OD-3). Balances are in wei; no name or symbol is shown.
Gas
Gas price is 0: transactions cost nothing.
Wallet
MircoWallet: EVM address 0x…
Validators
1 · no BFT fault tolerance
Production ready
NO
SVM PROFILE · EXPERIMENTAL PUBLIC TESTNET

MIRCO SVM Testnet

Internal network
mirco-svm-test
GenesisId
037671d2bdee3a3abab0c942576d3443f87db2b9c5174e7b31d10cf4bfbdf329
Genesis hash
EWycfD4MKZwyojYHXuQM2uvqtpdDPtZ9vhxZnAdkpb2
Profile
SVM_RUNTIME_V2_SOLANA_COMPAT_V1
JSON-RPC
https://rpc.mircochain.com/v1/chains/mirco-svm-test/svm
Explorer
explorer.testnet.mircochain.com ↗
Faucet
Testnet lamports ↗
Fees
Signatures cost 0 lamports; new accounts need rent-exempt lamports.
Wallet
MircoWallet: SVM address (Base58)
Validators
1 · no BFT fault tolerance
Production ready
NO

The same facts, machine-readable: https://rpc.mircochain.com/v1/public-networks ↗

Check the identity first

A hostname is not an identity. Before you trust an endpoint, read what it answers for and compare it with the table above.

curl -s https://rpc.testnet.mircochain.com/v1/chains/mirco-testnet/status
# "genesis_id": "b0f7cfe2…71d4", "chain_id": "mirco-testnet", "execution_profile": "MIRCO_NATIVE"
curl -s -X POST -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}' \
  https://rpc.mircochain.com/v1/chains/mirco-evm-test/evm
# {"jsonrpc":"2.0","id":1,"result":"0x1f1d"}      (7965)
curl -s -X POST -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getGenesisHash"}' \
  https://rpc.mircochain.com/v1/chains/mirco-svm-test/svm
# {"jsonrpc":"2.0","id":1,"result":"EWycfD4MKZwyojYHXuQM2uvqtpdDPtZ9vhxZnAdkpb2"}
# Each experimental network also answers MIRCO's own status read:
curl -s https://rpc.mircochain.com/v1/chains/mirco-evm-test/status     # "genesis_id": "3a245dea…20b3"
curl -s https://rpc.mircochain.com/v1/chains/mirco-svm-test/status     # "genesis_id": "037671d2…f329"

MIRCO Testnet (Native): tokens

  1. Get Testnet MTU. Open the faucet ↗, connect MircoWallet on MIRCO Testnet and press Get Testnet MTU. Fees are paid in MTU, by the work a transaction does.
  2. Create an asset. In MIRCO Studio ↗ choose MIRCO Testnet → Tokens → Create token. MircoWallet shows the exact transaction and signs it locally. The chain issues the token's AssetId (64 hex) when the transaction finalizes.
  3. Read assets. Every asset on the network, with its AssetId, symbol, decimals and total supply:
    curl -s https://rpc.testnet.mircochain.com/v1/chains/mirco-testnet/assets
    # {"completeness":"COMPLETE","chain_id":"mirco-testnet","assets":[{"asset_id":"…","symbol":"…","decimals":6,"total_supply":"…"}, …]}
  4. Read a balance. A MIRCO address is mrc1_<network>_<account id>_<checksum>; the API takes its 32-hex account id and the AssetIds you ask about:
    curl -s "https://rpc.testnet.mircochain.com/v1/chains/mirco-testnet/accounts/<account-id>/balances?assets=<AssetId>"
    curl -s  https://rpc.testnet.mircochain.com/v1/chains/mirco-testnet/accounts/<account-id>/nonce
  5. Transfer. Send from MircoWallet (Send → choose the asset → a MIRCO Testnet address). Every write is a signed transaction bound to mirco-testnet and its GenesisId; a node refuses a transaction for another chain. The TypeScript SDK and CLI are not published yet, so MircoWallet and Studio are the signers today.
  6. See it. The Explorer ↗ shows the transaction, the asset and both balances.

MIRCO EVM Testnet: ERC-20 tokens

Standard Ethereum JSON-RPC, a measured subset (see limits). Not Ethereum, and not a full Ethereum client: BLOCKHASH returns 0 and block.timestamp is a logical clock. The native currency is not yet defined, so there is no MetaMask “Add network” entry for it.

  1. Connect. RPC https://rpc.mircochain.com/v1/chains/mirco-evm-test/evm, chain ID 7965 (0x1f1d). Sign every transaction with EIP-155 chain ID 7965. A gas price of 0 is accepted.
  2. Get a balance. The faucet ↗ sends a test-only native balance to a 0x… address. You do not need it for gas (gas costs nothing): it is value you can transfer or send with a call.
    curl -s -X POST -H 'Content-Type: application/json' \
      -d '{"jsonrpc":"2.0","id":1,"method":"eth_getBalance","params":["0xYourAddress","latest"]}' \
      https://rpc.mircochain.com/v1/chains/mirco-evm-test/evm          # wei, as hex
  3. Create an ERC-20. In Studio choose MIRCO EVM Testnet → Tokens → Create token (fixed supply). MircoWallet, on MIRCO EVM Testnet, signs the deployment. The token is named by its contract address, from the transaction receipt.
  4. Read the contract. symbol() is selector 0x95d89b41; decimals() 0x313ce567; totalSupply() 0x18160ddd; balanceOf(address) 0x70a08231:
    curl -s -X POST -H 'Content-Type: application/json' \
      -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0xTokenContract","data":"0x95d89b41"},"latest"]}' \
      https://rpc.mircochain.com/v1/chains/mirco-evm-test/evm
  5. Transfer. From MircoWallet (Send → the token), or from any EIP-155 signer: transfer(address,uint256), selector 0xa9059cbb, sent with eth_sendRawTransaction.
  6. Receipt and log. eth_getTransactionReceipt returns the status and the ERC-20 Transfer log (topic 0xddf252ad…); eth_getLogs reads logs over a bounded block range.
  7. See it. Explorer: https://explorer.testnet.mircochain.com/networks/3a245dea…20b3/evm/transactions/<hash> and …/evm/addresses/<address>.

MIRCO SVM Testnet: SPL tokens

Solana-style JSON-RPC, a measured subset (see limits). Not Solana, and not full Solana parity: account data is served base64 only (jsonParsed is refused), and getProgramAccounts is not offered publicly.

  1. Connect. RPC https://rpc.mircochain.com/v1/chains/mirco-svm-test/svm. Check getGenesisHash first (above).
  2. Get lamports. The faucet ↗ sends lamports to a Base58 address. Signatures cost nothing; lamports pay rent for the accounts a token needs (the mint and each token account).
    curl -s -X POST -H 'Content-Type: application/json' \
      -d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["YourBase58Address"]}' \
      https://rpc.mircochain.com/v1/chains/mirco-svm-test/svm
  3. Create an SPL token. In Studio choose MIRCO SVM Testnet → Tokens → Create token (SPL Token). MircoWallet, on MIRCO SVM Testnet, signs it. The token is named by its Mint address (Base58).
  4. Read the mint.
    curl -s -X POST -H 'Content-Type: application/json' \
      -d '{"jsonrpc":"2.0","id":1,"method":"getTokenSupply","params":["MintAddress"]}' \
      https://rpc.mircochain.com/v1/chains/mirco-svm-test/svm
    # getAccountInfo(mint, {"encoding":"base64"}) returns the raw 82-byte mint, owner TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
  5. Token accounts (ATA). A holder's balance lives in an associated token account, derived from owner + mint by the Associated Token program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL. List an owner's token accounts with getTokenAccountsByOwner(owner, {"programId": "TokenkegQ…"}, {"encoding":"base64"}).
  6. Transfer. From MircoWallet (Send → the token), or a signed SPL TransferChecked sent with sendTransaction (base64). The recipient's ATA is created first if it does not exist; that costs rent lamports, not a fee.
  7. Token-2022. Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb: the core mint only. Studio refuses every extension. Public qualification: see status labels.
  8. See it. Explorer: https://explorer.testnet.mircochain.com/networks/037671d2…f329/svm/transactions/<signature> and …/svm/accounts/<address-or-mint>.

AMM: pools and swaps

A constant-product pool (x·y = k) holds two assets. A swap pays a 0.30% fee to the pool's liquidity providers. There is no protocol fee, no admin withdrawal and no operator custody. Every swap and liquidity action carries a minimum you will accept and a deadline. Numbers shown are the chain's own; there is no USD value, TVL, volume, APR or APY.

MIRCO TestnetMIRCO EVM TestnetMIRCO SVM Testnet
StatusAvailable (pre-launch)Deployed (pre-launch, experimental network) · contractsDeployed (pre-launch, experimental network) · program
Pool identityMarketId = H(base ‖ quote), orderedPair contract (CREATE2 from the factory)Pool PDA ["pool", mintA, mintB]
DeadlineA block heightThe block's logical timestamp, not wall-clock timeA slot
  1. Create a market (Native). In MIRCO DEX ↗ → Liquidity → Create market, choose two assets. MircoWallet signs Publish market, then Create pool. Both are permissionless and permanent: a market or pool cannot be deleted. The order matters: base ‖ quote is a different market from quote ‖ base. An existing pool is opened, never duplicated.
  2. Seed it. The first deposit sets the price: you choose both amounts. Later deposits are made at the pool's ratio.
  3. Read a pool.
    curl -s https://rpc.testnet.mircochain.com/v1/chains/mirco-testnet/markets/<base>/<quote>/pool
    # {"market_id":"…","base_reserve":"…","quote_reserve":"…","total_shares":"…"}
  4. Quote a swap. side is sell (base in) or buy (quote in); amounts are base units:
    curl -s "https://rpc.testnet.mircochain.com/v1/chains/mirco-testnet/markets/<base>/<quote>/quote?side=sell&input=1000000"
    # {"side":"sell","input":"1000000","output":"…","indicative":true}
    A quote is indicative. The signed swap carries your minimum output, so the chain refuses it rather than fill at a worse price.
  5. Your position. …/markets/<base>/<quote>/shares?owner=<account-id> returns your shares and what they withdraw now. Shares are not transferable tokens.
  6. Swap, add, remove. In the DEX (Swap, Liquidity, My positions). MircoWallet shows each action with its minimums and its deadline: liquidity carries an expiry height, and a swap carries the transaction's valid_until_height. A node refuses either once that height has passed.

EVM: MIRCO AMM V1 on MIRCO EVM Testnet

Factory0x2FE72833C4f96937f6F7AdA7745c267b66D515Bf
Router0xA247Da2cCb12AcC509B22CD9Fe7ea201Ad40D042
Pair init code hash0xf24f0b991fa9de26399f52fcabcc836d4cf2c98f583ce525291603c06d500783
PoolsERC-20 / ERC-20 only. No native-currency pool: the EVM native currency is not yet defined (OD-3).
AdminNone: no owner, no protocol fee, no pause, no upgrade. The fee is 0.30% to liquidity providers.
  1. Find a pair. factory.getPair(tokenA, tokenB) (selector 0xe6a43905). A pair's address is also computable: CREATE2 from the factory, keccak256(token0 ‖ token1) with token0 < token1, and the init code hash above.
    curl -s -X POST -H 'Content-Type: application/json' \
      -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x2FE72833C4f96937f6F7AdA7745c267b66D515Bf","data":"0x574f2ba3"},"latest"]}' \
      https://rpc.mircochain.com/v1/chains/mirco-evm-test/evm          # allPairsLength()
  2. Quote. router.getAmountsOut(amountIn, [tokenIn, tokenOut]) gives the exact output, with the 0.30% fee included.
  3. Swap and liquidity. First approve(Router, amount) on the token you send. Then call swapExactTokensForTokens(amountIn, amountOutMin, path, to, deadline), addLiquidity(...) or removeLiquidity(...). The first deposit sets the price and locks 1,000 LP units for good. LP shares are the pair's own ERC-20.
  4. Deadline. block.timestamp on MIRCO EVM Testnet is a logical clock: base + block number × 2, not wall-clock time. Set a deadline as the latest block's timestamp plus your window, never from your own clock.

SVM: MIRCO AMM V1 on MIRCO SVM Testnet

Program7Dm9sx76jdCeoR76XBt8dZZwYW344d8quZH1Q1rWTHhX · immutable (upgrade authority none)
Program ELF sha256993c69d0f29d4d81964b220fbd7238ec7fd22e4e7d882560477429f658fc42dd
Pool addressPDA ["pool", mintA, mintB], with the mints sorted bytewise
Other accountsAuthority ["authority", pool] · vaults ["vault", pool, mint] · LP mint ["lp", pool] (SPL Token, 9 decimals)
TokensSPL Token, and Token-2022 core mints only: a mint with extensions is refused.
  1. Find a pool. Derive the pool PDA from the two mints and read it with getAccountInfo(pool, {"encoding":"base64"}). That returns the 264-byte pool state, including its reserves. getProgramAccounts is not offered publicly, so a pool is found by its address.
  2. Instructions. Each is a 1-byte tag followed by little-endian u64 fields:
    • 0 InitializePool [deadline]
    • 1 AddLiquidity [max_a, max_b, min_lp, deadline]
    • 2 RemoveLiquidity [lp_in, min_a, min_b, deadline]
    • 3 Swap [amount_in, min_out, deadline]
    The account lists are fixed, and the program refuses any account that is not the derived one.
  3. Deadline. A slot: the current slot plus your window.
  4. Errors. A failed transaction's status carries no error code here. Simulate first (simulateTransaction): the program logs mirco-amm error N.

MIRCO EVM Testnet and MIRCO SVM Testnet run on a single validator with no BFT fault tolerance. Nothing here is a production AMM, and test tokens have no value.

Three kinds of token identifier

NetworkA token is named byFormatWhere it comes from
MIRCO TestnetAssetId64 hexIssued by the chain when the create transaction finalizes
MIRCO EVM TestnetContract address0x + 40 hexThe deployment's transaction receipt
MIRCO SVM TestnetMint addressBase58, 32 bytesThe mint account's key, chosen before submission

A name, a symbol or a logo never identifies a token: two tokens can share them. An identifier is only meaningful together with its network (GenesisId).

Public RPC limits

MethodsAn allowlist. EVM: eth_chainId, eth_blockNumber, eth_getBalance, eth_getTransactionCount, eth_getCode, eth_getStorageAt, eth_call, eth_estimateGas, eth_sendRawTransaction, eth_getTransactionByHash, eth_getTransactionReceipt, eth_getBlockByNumber, eth_getBlockByHash, eth_getBlockTransactionCountByNumber, eth_getLogs, eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory, net_version, web3_clientVersion. SVM: getHealth, getGenesisHash, getMircoIdentity, getVersion, getSlot, getBlockHeight, getLatestBlockhash, isBlockhashValid, getBalance, getAccountInfo, getMultipleAccounts, getMinimumBalanceForRentExemption, getFeeForMessage, simulateTransaction, sendTransaction, getSignatureStatuses, getSignaturesForAddress, getTransaction, getTokenAccountsByOwner, getTokenAccountBalance, getTokenSupply, getTokenLargestAccounts.
Refused methodsAnything else, including every admin_, debug_, personal_ and signing method, requestAirdrop and getProgramAccounts: JSON-RPC error -32601. One refused call refuses its whole batch.
Request sizeEVM 384 KiB, SVM 64 KiB per HTTP body (larger: HTTP 413). Content-Type: application/json only, POST only.
BatchAt most 10 calls per batch; an empty batch is refused (-32600).
RatePer caller (client address): 10 requests/s sustained, bursts to 30, at most 4 in flight. Per network: 80 requests/s, 8 in flight. Over the limit: HTTP 429, code -32005, Retry-After: 1.
Timeout15 s per request. An answer larger than 4 MiB is refused whole (-32005), never truncated: narrow the request.
BrowsersCORS is open for reads and writes from any origin; no API key.
WebSocketNot offered. Subscriptions (eth_subscribe, accountSubscribe) are unavailable; poll instead.

MircoWallet

  • One wallet, three addresses. The same MircoWallet holds a MIRCO address (mrc1_…) on MIRCO Testnet, an EVM address (0x…) on MIRCO EVM Testnet and an SVM address (Base58) on MIRCO SVM Testnet.
  • Switch first, then connect. A site is given the address of the network MircoWallet is on. Choose the network in MircoWallet's network list, then connect. An EVM site may ask to switch with wallet_switchEthereumChain once it is connected.
  • Connect. MIRCO and EVM: find MircoWallet's provider by EIP-6963 discovery (its own rdns), then eth_requestAccounts. SVM: window.mircoSolana.connect().
  • Signing. Every transaction is shown in full and signed locally. Consequential approvals — a token allowance, an authority change, a deployment — are named as such before you approve them.
  • Tokens appear on their own. A token you create or receive is listed automatically once its transaction is final.
  • Other wallets. MetaMask and Phantom are not supported on these networks yet.

Where the test supply is

MIRCO EVM Testnet and MIRCO SVM Testnet allocated their genesis balance to accounts of a published test phrase (the standard development phrase). Anyone who knows that phrase can spend from those accounts, so a balance there is publicly spendable test supply, not rate-limited faucet supply.

On 2026-10-17 the whole balance of those accounts was moved into the faucet's own treasury, whose keys were generated on the faucet host and never leave it: the published accounts held 0 afterwards. The faucet pays only from that private treasury, within its per-address and per-source limits. Anything sent to a published account later is publicly spendable by anyone.

Status labels

MIRCO TestnetMIRCO EVM TestnetMIRCO SVM Testnet
KindPublic TestnetExperimental Public TestnetExperimental Public Testnet
Validators411
BFT fault tolerance1 of 4NoneNone
Production readyNONONO
TokensNative assetsERC-20 (fixed supply)SPL Token · Token-2022 core (no extensions): QUALIFIED ON THE PUBLIC TESTNET
AMMAvailable (pre-launch)Deployed (experimental)Deployed (experimental)
Live statusstatus.mircochain.com ↗