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 name | WarmUp Chain Testnet |
| Chain ID | 931931 hex 0xe385b |
| Public RPC | https://rpc.warmupchain.com Read-only; 10 req/s per IP, batches ≤ 20, eth_getLogs ≤ 5,000 blocks |
| Developer RPC | https://rpc.warmupchain.com/<token> Can send transactions; adds debug_trace* and trace_* |
| Explorer | scan.warmupchain.com |
| Explorer API | https://api.warmupchain.com/api/v2 Blockscout v2 compatible |
| Contract registry | api.warmupchain.com/registry/contracts.json Name, address, version, status and ABI of platform contracts |
| Native coin | WGAS (gas only; the price is 0) |
| Blocks | About 1 s while there are transactions; one empty block every 60 s when idle |
| Gas | Price 0; block gas limit 30M; up to 64 queued transactions per sender |
| EVM | cancun; platform contracts use Solidity 0.8.36 |
| Stablecoin | wUSD, 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.
- 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.
- 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.
- 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.
cast wallet new
# Address: 0x… ← send this to the team
# Private key: 0x… ← keep it in a password manager or env var
.env.Your first call
No permission needed; try it now:
curl -s https://rpc.warmupchain.com \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
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 EVM | Mode B · signed + relayer | |
|---|---|---|
| Who sends transactions | The platform, signing with the player's custodial key | A relayer, carrying the player's EIP-712 signature |
| How funds move | approve + transferFrom, capped per game | Debits bound to the signature |
| Porting an existing EVM game | Small: usually only the randomness changes | Larger: every entry point handles signatures |
| Use it for | Most games | Third-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_calland gas estimation use the latest block's timestamp, which can be about 60 s old. Send calls like a drand settle with--gas-limitand 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
Get access
Create a key, request access, RPC endpoints and limits.
Two ways to build
Mode A and Mode B compared, with examples.
Testing your game
Local tests and the on-chain sbUSD sandbox.
Migrating from BSC
What changes: decimals, randomness, deploy config.
Listing checklist
What to prepare before review.
Troubleshooting
401, 429 and revert reasons.