Testnet Access
Connect Hardhat / Foundry / wagmi / ethers / viem to Maroo Testnet — endpoints, chain ID, wallet config, env-var template.
Everything you need to point your tooling at Maroo Testnet. The chain is EVM-compatible — Hardhat / Foundry / wagmi / ethers / viem connect without Maroo-specific patches. Two Ethereum habits to drop: a transfer sent with a fixed 21,000 gas limit, and a gas limit padded far above the estimate, since at least half of the limit is charged (see Gas and fees). Add the network with the config below, fund a test wallet from the faucet, and you're connected.
Network configuration
| Field | Value |
|---|---|
| Network name | Maroo Testnet |
| Chain ID (EVM) | 450815 |
| Cosmos chain-id | maroo-testnet-1 |
| Tooling slug | maroo-testnet |
| Native currency | tOKRW (Testnet OKRW), 18 decimals, base unit atokrw, display unit tokrw |
| RPC | https://rpc-testnet.maroo.io |
| WebSocket | wss://ws-testnet.maroo.io |
| Block Explorer | https://explorer-testnet.maroo.io |
| Faucet | https://faucet.maroo.io |
| KYC | https://kyc-testnet.maroo.io |
| Indexer (Blockscout API) | https://explorer-testnet.maroo.io/blockscout/api/v2 |
| Cosmos REST | https://api-testnet.maroo.io |
The Cosmos chain-id is what a privacy withdrawal's
chainId and a privacy authorization's cosmosChainIdHash carry; EIP-712 domains themselves use the EVM chain ID (450815). The tooling slug is the name tool settings such as MAROO_NETWORK use — it is not a chain-id. Read either value at runtime when you can: default_node_info.network from https://api-testnet.maroo.io/cosmos/base/tendermint/v1beta1/node_info, and the native denom from /cosmos/evm/vm/v1/params (evm_denom). The KYC service is a real identity check through Kakao: it needs a Korean mobile number and links one wallet per person.Mainnet has not launched. Its chain ID is fixed at
815; its endpoints will be published when it launches.Gas and fees
- A plain transfer costs about 104,000 gas, not 21,000. The compliance (PCL) and agent checks that run after every transaction are metered as that transaction's gas. A transaction sent with a fixed 21,000 limit is mined, fails, and is still charged — let your tool call
eth_estimateGas(ethers, viem, Hardhat and MetaMask do by default). A transfer from an ERC-8004 agent wallet costs more, because the global policy looks up the owner of each agent that uses the wallet: about 283,000 gas when one agent uses it, about 461,000–471,000 when two do. A transfer to an agent's EOA wallet costs the ordinary figure, but one to a contract wallet — such as the AA wallet MAWS creates for an agent — costs more, since that wallet's code runs. In every case, use the estimate rather than a fixed figure. - At least half of the gas limit is charged, even when a transaction uses less (
min_gas_multiplieris 0.5), so do not set a limit far above the estimate. - OKRW has no ERC-20 surface. tOKRW moves as the native coin — a transaction's
value/msg.value. No code answers ERC-20 calls at0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE: an ERC-20 transaction sent there is mined and moves nothing, a client read such asbalanceOfgets empty data back (viem throws), and a contract'sIERC20(…)call reverts with empty data; seedeployed-contracts.
Domain naming convention
Testnet services follow one pattern,
<service>-testnet.maroo.io; the faucet is faucet.maroo.io. Some sites have a single URL for every environment: maroo.io (landing), litepaper.maroo.io, docs.maroo.io. Mainnet has not launched, and its endpoints will be published when it does.| Service | Testnet |
|---|---|
| RPC | rpc-testnet.maroo.io |
| WebSocket | ws-testnet.maroo.io |
| Explorer | explorer-testnet.maroo.io |
| Faucet | faucet.maroo.io |
| KYC | kyc-testnet.maroo.io |
| Cosmos REST | api-testnet.maroo.io |
viem chain config
Drop this into your viem setup:
import { defineChain } from 'viem';
export const marooTestnet = defineChain({
id: 450815,
name: 'Maroo Testnet',
network: 'maroo-testnet',
nativeCurrency: {
name: 'Testnet OKRW',
symbol: 'tOKRW',
decimals: 18,
},
rpcUrls: {
default: {
http: ['https://rpc-testnet.maroo.io'],
webSocket: ['wss://ws-testnet.maroo.io'],
},
},
blockExplorers: {
default: {
name: 'Maroo Explorer',
url: 'https://explorer-testnet.maroo.io',
},
},
testnet: true,
}); viem chain config
Use with wagmi by passing
marooTestnet into createConfig's chains array.Adding to MetaMask
Open MetaMask → Settings → Networks → Add network → Add a network manually. Fill in:
After saving, switch to Maroo Testnet and visit the faucet (
- Network name:
Maroo Testnet - New RPC URL:
https://rpc-testnet.maroo.io - Chain ID:
450815 - Currency symbol:
tOKRW - Block explorer URL:
https://explorer-testnet.maroo.io
After saving, switch to Maroo Testnet and visit the faucet (
https://faucet.maroo.io) to receive test tOKRW.Quick-start snippets
ethers.js v6:
import { JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider('https://rpc-testnet.maroo.io');
const block = await provider.getBlockNumber();
console.log('current block:', block); Quick-start snippets
web3.js:
import Web3 from 'web3';
const web3 = new Web3('https://rpc-testnet.maroo.io');
const block = await web3.eth.getBlockNumber();
console.log('current block:', block); Quick-start snippets
Hardhat (
hardhat.config.ts):import type { HardhatUserConfig } from 'hardhat/config';
// Hardhat 3: the project must be ESM ("type": "module" in package.json),
// and @nomicfoundation/hardhat-toolbox must NOT be installed.
const config: HardhatUserConfig = {
solidity: '0.8.28', // matches the compiler Maroo builds with
networks: {
marooTestnet: {
type: 'http', // required by Hardhat 3
url: 'https://rpc-testnet.maroo.io',
chainId: 450815,
accounts: [process.env.PRIVATE_KEY!],
},
},
};
export default config; Quick-start snippets
Foundry (
foundry.toml):[rpc_endpoints]
maroo_testnet = "https://rpc-testnet.maroo.io"
[etherscan]
maroo_testnet = { key = "unused", url = "https://explorer-testnet.maroo.io/blockscout/api" } Environment variables template
Drop into your
.env:# Maroo Testnet
MAROO_RPC_URL=https://rpc-testnet.maroo.io
MAROO_WS_URL=wss://ws-testnet.maroo.io
MAROO_CHAIN_ID=450815
MAROO_COSMOS_CHAIN_ID=maroo-testnet-1
MAROO_NETWORK=maroo-testnet
MAROO_EXPLORER_URL=https://explorer-testnet.maroo.io
MAROO_FAUCET_URL=https://faucet.maroo.io
MAROO_INDEXER_URL=https://explorer-testnet.maroo.io/blockscout/api/v2
MAROO_KYC_URL=https://kyc-testnet.maroo.io
MAROO_REST_URL=https://api-testnet.maroo.io What you can do on testnet
- Get test tOKRW from the faucet.
- Run basic transfers between accounts — tOKRW is the native coin, sent as a transaction's value (about 104,000 gas each between ordinary accounts, more when sending from an agent wallet or to a contract wallet; let your tool estimate it).
- Deploy Solidity contracts with Hardhat / Foundry.
- Walk through the KYC attestation flow at
https://kyc-testnet.maroo.io— a real identity check through Kakao, so it needs a Korean mobile number. - Exercise both PCL paths: the Open Path for plain transfers, and the Regulated Path, where PCL evaluates calls routed through a PCL-wrapped proxy around their execution (
preCallbefore,postCallafter). The Open Path is still under the global policy: a sender without an EAS attestation can send at most 2,000,000 OKRW per transaction and 10,000,000 OKRW per UTC day. An agent wallet's transfers count toward its owner's daily total, so it takes the owner's attestation to lift both caps. - Look up agent identity on the ERC-8004 IdentityRegistry preinstall (
0x8004000000000000000000000000000000000001); the Agent precompile returns the registry's address and maps an agent wallet to its agent IDs.