Reference
Devnet reference
Every devnet address, route and price, and the faucet that funds you.
Every address, endpoint and price for the public TOON devnet, in one place. These are testnets. Base Sepolia and Solana devnet carry no real value, and the USDC on both is a mock mint anyone can draw from the faucet.
The live values come from the node
Ask the node, not this page:
curl -s https://proxy.ario.devnet.toonprotocol.dev/ilp | jq
GET /ilp is free and unauthenticated. Its batchSettlements are the x402 channel terms the node is paid under, one per chain, and voucherSigners the keys it expects vouchers from. The tables below are a convenience. When the two disagree, the node is right, and the client never consults a preset in preference to the document a node answers with.
Nodes
Three nodes, six routes. Each node is the receiver of its own channels, so a channel opened with one buys nothing at the others.
| Node | Client-edge URL | Route | Price | Carriage |
|---|---|---|---|---|
| Store | https://proxy.ario.devnet.toonprotocol.dev | g.toon.store | 1000 + 10 per KiB | HTTP or BTP |
| Gas station | https://proxy.gas.devnet.toonprotocol.dev | g.toon.gas | 1000 (0.001 USDC) | HTTP or BTP |
| Relay | https://proxy.relay.devnet.toonprotocol.dev | g.toon.relay | 1 (0.000001 USDC) | BTP only |
g.toon.relay.ephemeral | free | HTTP or BTP | ||
g.toon.relay.store | 1001 + 10 per KiB | HTTP or BTP | ||
g.toon.relay.gas | 1001 | HTTP or BTP |
The last two are forwarded: the relay carries the packet to the store or the gas station and charges its own hop on top. Forwarding runs one way. A forwarded route needs one thing a direct one does not: the payload is sealed to the connector that terminates the route, so you name the far node yourself with sealTo. Seal to the relay instead and the packet is undeliverable (F01).
const answer = await client.send( 'g.toon.relay.gas', { body: 'hello' }, { sealTo: 'https://proxy.gas.devnet.toonprotocol.dev' } );
Chains
| EVM | Solana | |
|---|---|---|
| Network | Base Sepolia, eip155:84532 | Solana devnet |
| RPC | https://base-sepolia-rpc.publicnode.com | https://api.devnet.solana.com |
| Channel contract | 0x4020074e9dF2ce1deE5A9C1b5c3f541D02a10003, x402BatchSettlement | CHNLxYvVA28MJP9PrFuDXccuoGXAx7jBacfLEkahyGsX, payment-channels |
| Token | 0x0C996d7c934c79a6255254875607Fe69df25C0E1, devnet USDC (Circle FiatToken v2.2, ERC-3009), 6 decimals | 34eSxY7qxQ4GzyhDJ8GpUcTz1WWzruGbJbR8q6TtxfQU, mock USDC mint, 6 decimals |
| Facilitator | https://onboard.devnet.toonprotocol.dev, TOON's Onboarder | none needed: the node sponsors opens |
| Funds | USDC from the faucet; Base Sepolia ETH from a public faucet, only to leave a channel | USDC from the faucet; devnet SOL from solana airdrop, only to leave a channel |
The faucet
faucet.devnet.toonprotocol.dev mints devnet USDC on both chains to any address. npx toon-client faucet calls it for the wallet in your keystore. The devnet USDC on Base Sepolia is minter-gated, so it comes from the faucet or nowhere.
Mainnet
The node that serves toon.ar.io settles on Base mainnet and Solana mainnet-beta, in USDC, on the same contract and program at the same addresses. Its prices are on the ecosystem page and at its own GET /ilp. There is no mainnet faucet; a mainnet payer funds its own wallet with USDC.
Written from toon-client/docs/devnet.md and connector/docs/guide/get-paid.md. The same values ship as DEVNET in @toon-protocol/client.