WarmUpChain Testnet

Developers

Standard EVM, zero gas

Solidity, Foundry, viem and ethers work unchanged. Reading the chain is open to everyone; sending transactions needs your address on the allowlist, which the team adds on request.

Chain parameters

Testnet · developer preview. State may be reset; no stability guarantees yet.

Add to wallet

Add WarmUp Chain Testnet to MetaMask or another EVM wallet in one click. The public RPC is read-only: your wallet can show balances and transactions; to send, switch the network's RPC to your developer URL.

Network nameWarmUp Chain Testnet
Chain ID931931
hex 0xe385b
Public RPChttps://rpc.warmupchain.com
Read-only; 10 req/s per IP, batches ≤ 20, eth_getLogs ≤ 5,000 blocks
Developer RPChttps://rpc.warmupchain.com/<token>
Can send transactions; adds debug_trace* and trace_*
Explorerscan.warmupchain.com
Explorer APIhttps://api.warmupchain.com/api/v2
Blockscout v2 compatible
Contract registryapi.warmupchain.com/registry/contracts.json
Name, address, version, status and ABI of platform contracts
Native coinWGAS (gas only; the price is 0)
BlocksAbout 1 s while there are transactions; one empty block every 60 s when idle
GasPrice 0; block gas limit 30M; up to 64 queued transactions per sender
EVMcancun; platform contracts use Solidity 0.8.36
StablecoinwUSD, 6 decimals, backed 1:1 by USDT in the BSC vault
For testing, sbUSD: self-service faucet, ≤ 10,000 per call, ≤ 50,000 per day

Get developer access

Reading needs no permission. To deploy and send transactions you need three things: an allowlisted address, a developer RPC token and some test coins.

  1. 1Create a key on your own machine. Give the team only the address; never send anyone your private key. A MetaMask account's address works too.
  2. 2Contact the WarmUp team. They add your address to the sender allowlist (effective at once), issue your personal RPC token and, if you need it, send some test wUSD.
  3. 3Test for free with sbUSD. sbUSD is an on-chain sandbox coin anyone can claim and approve, with no review. Once your game works, submit it for review and switch to wUSD.
Foundry
cast wallet new
# Address:     0x…   ← send this to the team
# Private key: 0x…   ← keep it in a password manager or env var
Never commit keys. Keep RPC tokens and private keys in environment variables or a git-ignored .env.

Your first call

No permission needed; try it now:

curl
curl -s https://rpc.warmupchain.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
viem
import { defineChain, createPublicClient, http } from 'viem';

export const warmup = defineChain({
  id: 931931,
  name: 'WarmUp Chain Testnet',
  nativeCurrency: { name: 'WarmUp Gas', symbol: 'WGAS', decimals: 18 },
  rpcUrls: { default: { http: ['https://rpc.warmupchain.com'] } },
  blockExplorers: { default: { name: 'WarmUp Scan', url: 'https://scan.warmupchain.com' } },
});

const client = createPublicClient({ chain: warmup, transport: http() });
console.log(await client.getBlockNumber());

Once you have a token, use https://rpc.warmupchain.com/$WARMUP_RPC_TOKEN as the RPC URL, or keep the URL clean and send the token in an Authorization: Bearer header.

Two ways to build

Both run on the same chain with the same wUSD. Games ported from another EVM chain usually pick Mode A.

Mode A · standard EVMMode B · signed + relayer
Who sends transactionsThe platform, signing with the player's custodial keyA relayer, carrying the player's EIP-712 signature
How funds moveapprove + transferFrom, capped per gameDebits bound to the signature
Porting an existing EVM gameSmall: usually only the randomness changesLarger: every entry point handles signatures
Use it forMost gamesThird-party relayers, or when every debit must be player-signed

For randomness, use drand: inherit the platform's DrandRandom library, fix the round when betting closes, and let anyone submit that round's signature to settle; the DrandEvmnet contract verifies it on chain. Don't use block hashes for randomness. See Fairness.

Things to know

  • Send legacy transactions with gas price 0: Foundry --legacy --with-gas-price 0, cast --gas-price 0. Some tools default to a tip above 0.
  • Give time-sensitive calls an explicit gas limit: when the chain is idle a block comes every 60 s, and eth_call and gas estimation use the latest block's timestamp, which can be about 60 s old. Send calls like a drand settle with --gas-limit and skip estimation.
  • Contracts must stay under 24 KB (EIP-170).
  • New contracts show up in the explorer within a minute: once platform contracts are in the registry, the explorer shows their name and version and decodes calls.
  • Going live needs review: after testing on sbUSD, submit the contract address, source, tests and deploy script. After the audit, one person approves and a second switches it live.

Docs index