Skip to main content

Networks

warning

Sign with chainId 114514, not 31337. 31337 is what a node picks when you run one yourself and set no chain id. It is not the network behind api.testnet.mtf.exchange. The chain id is part of the EIP-712 domain, so a wrong one does not mostly work — the first signed write is rejected.

Confirm it at any time:

curl -s https://api.testnet.mtf.exchange/evm -X POST \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
# {"id":1,"jsonrpc":"2.0","result":"0x1bf52"} 0x1bf52 = 114514

Summary

NetworkStatuschainIdStable wire?
Testnet (api.testnet.mtf.exchange)open for integration114514yes
Your own node, default configself-hosted31337yes
Mainnetnot launched8964yes

Testnet is the only network with a public endpoint. Mainnet endpoints are published before launch.

info

api.devnet.mtf.exchange is not the integration endpoint. An earlier revision of this page named it. It resolves, and it answers /info, so a client pointed at it looks connected — but its faucet reserve is empty and its books are one-sided, so a claim credits nothing and an order finds no counterparty. Point your client at api.testnet.mtf.exchange.

Testnet

The integration network. Free USDC and MTF from the faucet, real matching, real consensus, no economic value.

The gateway is the single public front door. The MTF-native surface is served at /info · /exchange · /ws; EVM JSON-RPC at /evm.

ServiceEndpoint
Gateway front doorhttps://api.testnet.mtf.exchange
MTF-nativePOST /info · POST /exchange · GET /ws
EVM JSON-RPCPOST /evm
FaucetPOST /faucet
Gateway WS (native)wss://api.testnet.mtf.exchange/ws
Explorerhttps://app.mtf.exchange/explorer

Running the node yourself? It serves the same native surface directly at http://localhost:8080 (/info · /exchange · /ws · /faucet), and its raw EVM RPC at http://localhost:8545. Those are self-hosted ports, not public URLs.

Signing parameterValue
chainId114514. Use 31337 ONLY against a node you run yourself that sets no chain id
EIP-712 domain name"MetaFlux"
EIP-712 domain version"1"
EIP-712 domain verifyingContract0x0000000000000000000000000000000000000000

USDC bridging goes through the MetaBridge custody bridge (bridge), not Circle CCTP. Testnet deposits use the Base Sepolia Bridge deployment and Circle's Base Sepolia test USDC.

Differences from mainnet:

  • USDC is bridged from a testnet source chain (Base Sepolia test USDC), not real USDC.
  • The validator set is operator-controlled.
  • No real economic value.

The wire shape is identical to mainnet's. A client tested here should need only the chainId and the base URL changed to flip to mainnet.

Faucet

POST /faucet on the gateway front door credits an address with test funds. The route is never mounted on mainnet (chainId 8964). Full contract: POST /faucet.

curl -X POST https://api.testnet.mtf.exchange/faucet \
-H 'content-type: application/json' \
-d '{"address":"0x<YOUR_ADDRESS>"}'
# -> {"address":"0x…","usdc":3000,"mtf":10,"status":"queued"}
  • Grants 3000 USDC cross-collateral and 10 MTF spot — once ever per address (a second claim returns 429 address already funded).
  • amount is optional (whole USDC) and caps the USDC grant downward (≤ 3000). The MTF grant is fixed — see Limits.
  • Per source IP: one claim per minute. The per-IP window crosses with the per-address rule: a new address behind a used IP waits, and a used address is refused from any IP.
  • 400 invalid address · 429 already funded or IP-throttled · 503 backlog full — body {"error":"…"}.
info

"queued" means staged, not credited. The faucet transfers out of a reserve account rather than creating tokens, so the grant lands about one block later. The reserve is checked before the response, so a 200 means the reserve could pay at that moment. Confirm the balance with account_state before you trade — see the reserve.

State resets

Testnet may be reset for protocol upgrades: on demand during pre-mainnet development, with notice where possible.

Mainnet (planned)

Production network. Real USDC, real value, real validators.

ServiceEndpoint
Gateway RESTTBD
Gateway WSTBD
ExplorerTBD

Mainnet chainId: 8964 (0x2304).

Differences from testnet:

  • USDC is real, bridged via MetaBridge custody from Base (and later Arbitrum).
  • The validator set is permissionless (governance-elected).
  • Real economic value.
  • Rate limits and fees per rate limits and fees.

Bridge corridors

USDC and other assets bridge through the MetaBridge custody bridge — validator ⅔ stake-weighted co-signing, no Circle CCTP dependency. Source chains:

ChainStatus
BaseDeployed on Base Sepolia (Bridge 0x655ab51b607cb0ef94af69525e3c98e28a8af6ad); bring-up is not complete and withdrawals are halted; mainnet pre-audit
ArbitrumNo contract on the current chain; mainnet pre-audit

See bridge for the deposit and withdraw flow and the deployment table.

Compatibility windows

NetworkWire-shape commitment
TestnetStable; a breaking change carries a 30-day deprecation notice
MainnetStable; breaking changes per the versioning policy

See also

  • Quickstart — a first call against testnet
  • Signing — how chainId enters the digest
  • Bridge — MetaBridge custody bridge details
  • Versioning — wire-shape change policy