Testnet Access

resources external-dapp

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

FieldValue
Network nameMaroo Testnet
Chain ID (EVM)450815
Cosmos chain-idmaroo-testnet-1
Tooling slugmaroo-testnet
Native currencytOKRW (Testnet OKRW), 18 decimals, base unit atokrw, display unit tokrw
RPChttps://rpc-testnet.maroo.io
WebSocketwss://ws-testnet.maroo.io
Block Explorerhttps://explorer-testnet.maroo.io
Faucethttps://faucet.maroo.io
KYChttps://kyc-testnet.maroo.io
Indexer (Blockscout API)https://explorer-testnet.maroo.io/blockscout/api/v2
Cosmos RESThttps://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_multiplier is 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 at 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE: an ERC-20 transaction sent there is mined and moves nothing, a client read such as balanceOf gets empty data back (viem throws), and a contract's IERC20(…) call reverts with empty data; see deployed-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.

ServiceTestnet
RPCrpc-testnet.maroo.io
WebSocketws-testnet.maroo.io
Explorerexplorer-testnet.maroo.io
Faucetfaucet.maroo.io
KYCkyc-testnet.maroo.io
Cosmos RESTapi-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:

  • 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 (preCall before, postCall after). 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.

Next Steps

ESC
Type to search