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 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
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
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
- 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.
- 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.
- 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":"…"}, …]} - 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 - Transfer. Send from MircoWallet (Send → choose the asset → a MIRCO Testnet address). Every write is a signed transaction bound to
mirco-testnetand 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. - 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.
- 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. - 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 - 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.
- Read the contract.
symbol()is selector0x95d89b41;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 - Transfer. From MircoWallet (Send → the token), or from any EIP-155 signer:
transfer(address,uint256), selector0xa9059cbb, sent witheth_sendRawTransaction. - Receipt and log.
eth_getTransactionReceiptreturns the status and the ERC-20Transferlog (topic0xddf252ad…);eth_getLogsreads logs over a bounded block range. - 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.
- Connect. RPC
https://rpc.mircochain.com/v1/chains/mirco-svm-test/svm. CheckgetGenesisHashfirst (above). - 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 - 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).
- 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 - 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 withgetTokenAccountsByOwner(owner, {"programId": "TokenkegQ…"}, {"encoding":"base64"}). - Transfer. From MircoWallet (Send → the token), or a signed SPL
TransferCheckedsent withsendTransaction(base64). The recipient's ATA is created first if it does not exist; that costs rent lamports, not a fee. - Token-2022. Program
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb: the core mint only. Studio refuses every extension. Public qualification: see status labels. - 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 Testnet | MIRCO EVM Testnet | MIRCO SVM Testnet | |
|---|---|---|---|
| Status | Available (pre-launch) | Deployed (pre-launch, experimental network) · contracts | Deployed (pre-launch, experimental network) · program |
| Pool identity | MarketId = H(base ‖ quote), ordered | Pair contract (CREATE2 from the factory) | Pool PDA ["pool", mintA, mintB] |
| Deadline | A block height | The block's logical timestamp, not wall-clock time | A slot |
- 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.
- Seed it. The first deposit sets the price: you choose both amounts. Later deposits are made at the pool's ratio.
- 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":"…"} - Quote a swap.
sideissell(base in) orbuy(quote in); amounts are base units:
A quote is indicative. The signed swap carries your minimum output, so the chain refuses it rather than fill at a worse price.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} - Your position.
…/markets/<base>/<quote>/shares?owner=<account-id>returns your shares and what they withdraw now. Shares are not transferable tokens. - 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
| Factory | 0x2FE72833C4f96937f6F7AdA7745c267b66D515Bf |
|---|---|
| Router | 0xA247Da2cCb12AcC509B22CD9Fe7ea201Ad40D042 |
| Pair init code hash | 0xf24f0b991fa9de26399f52fcabcc836d4cf2c98f583ce525291603c06d500783 |
| Pools | ERC-20 / ERC-20 only. No native-currency pool: the EVM native currency is not yet defined (OD-3). |
| Admin | None: no owner, no protocol fee, no pause, no upgrade. The fee is 0.30% to liquidity providers. |
- Find a pair.
factory.getPair(tokenA, tokenB)(selector0xe6a43905). 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() - Quote.
router.getAmountsOut(amountIn, [tokenIn, tokenOut])gives the exact output, with the 0.30% fee included. - Swap and liquidity. First
approve(Router, amount)on the token you send. Then callswapExactTokensForTokens(amountIn, amountOutMin, path, to, deadline),addLiquidity(...)orremoveLiquidity(...). The first deposit sets the price and locks 1,000 LP units for good. LP shares are the pair's own ERC-20. - Deadline.
block.timestampon 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
| Program | 7Dm9sx76jdCeoR76XBt8dZZwYW344d8quZH1Q1rWTHhX · immutable (upgrade authority none) |
|---|---|
| Program ELF sha256 | 993c69d0f29d4d81964b220fbd7238ec7fd22e4e7d882560477429f658fc42dd |
| Pool address | PDA ["pool", mintA, mintB], with the mints sorted bytewise |
| Other accounts | Authority ["authority", pool] · vaults ["vault", pool, mint] · LP mint ["lp", pool] (SPL Token, 9 decimals) |
| Tokens | SPL Token, and Token-2022 core mints only: a mint with extensions is refused. |
- 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.getProgramAccountsis not offered publicly, so a pool is found by its address. - Instructions. Each is a 1-byte tag followed by little-endian u64 fields:
0InitializePool[deadline]1AddLiquidity[max_a, max_b, min_lp, deadline]2RemoveLiquidity[lp_in, min_a, min_b, deadline]3Swap[amount_in, min_out, deadline]
- Deadline. A slot: the current slot plus your window.
- Errors. A failed transaction's status carries no error code here. Simulate first (
simulateTransaction): the program logsmirco-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
| Network | A token is named by | Format | Where it comes from |
|---|---|---|---|
| MIRCO Testnet | AssetId | 64 hex | Issued by the chain when the create transaction finalizes |
| MIRCO EVM Testnet | Contract address | 0x + 40 hex | The deployment's transaction receipt |
| MIRCO SVM Testnet | Mint address | Base58, 32 bytes | The 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
| Methods | An 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 methods | Anything else, including every admin_, debug_, personal_ and signing method, requestAirdrop and getProgramAccounts: JSON-RPC error -32601. One refused call refuses its whole batch. |
| Request size | EVM 384 KiB, SVM 64 KiB per HTTP body (larger: HTTP 413). Content-Type: application/json only, POST only. |
| Batch | At most 10 calls per batch; an empty batch is refused (-32600). |
| Rate | Per 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. |
| Timeout | 15 s per request. An answer larger than 4 MiB is refused whole (-32005), never truncated: narrow the request. |
| Browsers | CORS is open for reads and writes from any origin; no API key. |
| WebSocket | Not 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_switchEthereumChainonce it is connected. - Connect. MIRCO and EVM: find MircoWallet's provider by EIP-6963 discovery (its own
rdns), theneth_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 Testnet | MIRCO EVM Testnet | MIRCO SVM Testnet | |
|---|---|---|---|
| Kind | Public Testnet | Experimental Public Testnet | Experimental Public Testnet |
| Validators | 4 | 1 | 1 |
| BFT fault tolerance | 1 of 4 | None | None |
| Production ready | NO | NO | NO |
| Tokens | Native assets | ERC-20 (fixed supply) | SPL Token · Token-2022 core (no extensions): QUALIFIED ON THE PUBLIC TESTNET |
| AMM | Available (pre-launch) | Deployed (experimental) | Deployed (experimental) |
| Live status | status.mircochain.com ↗ | ||