01 Connect
Add this network in MetaMask or another EVM wallet. Once access opens, the wallet button supplies the configuration directly.
curl https://rpc-testnet.cuocoin.com \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'The expected chain ID is 0x13528f4. Applications should check the chain ID and published genesis hash before submitting transactions.
02 Claim and transfer
Open the faucet, enter a public wallet address and complete verification. Each address may claim 10 tCUO every 24 hours, each IP may claim 20 times per UTC day, and the faucet distributes at most 1,000 tCUO per UTC day. Retries retain the same claim ID.
After confirmation, select tCUO in your wallet, enter the recipient and amount, and sign. Look up the transaction hash in the explorer. The minimum transaction gas price is 1 Gwei; ordinary account transfers generally use 21,000 gas.
03 Deploy an ERC-20
The example uses Solidity 0.8.28 and OpenZeppelin Contracts 5.6.1. Explicitly select Cancun so the compiler only emits supported instructions.
Hardhat
import { defineConfig } from "hardhat/config";
export default defineConfig({
solidity: {
version: "0.8.28",
settings: { evmVersion: "cancun", optimizer: { enabled: true, runs: 200 } }
},
networks: {
cuocoinTestnet: {
type: "http", chainType: "l1", chainId: 20261108,
url: "https://rpc-testnet.cuocoin.com"
}
}
});Foundry
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc_version = "0.8.28"
evm_version = "cancun"
optimizer = true
optimizer_runs = 200
remappings = ["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/"]
[rpc_endpoints]
cuocoin_testnet = "https://rpc-testnet.cuocoin.com"TestToken.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract TestToken is ERC20 {
constructor() ERC20("Cuo Test Token", "CTT") {
_mint(msg.sender, 1_000_000 * 10 ** decimals());
}
}Download the complete Hardhat / Foundry examples ↓
Set CUO_PRIVATE_KEY locally for your test wallet. Do not enter private keys on this website or commit them to source control. The examples read signing keys only from local environment variables.
04 Subscribe to blocks and events
WebSocket supports newHeads and logs. Reconnect and resubscribe after disconnection. Recover missed events using eth_getLogs in windows of at most 2,000 blocks.
import WebSocket from "ws";
function connect() {
const ws = new WebSocket("wss://ws-testnet.cuocoin.com");
ws.on("open", () => ws.send(JSON.stringify({
jsonrpc: "2.0", id: 1, method: "eth_subscribe", params: ["newHeads"]
})));
ws.on("message", data => console.log(JSON.parse(data.toString())));
ws.on("error", error => console.error(error.message));
ws.on("close", () => setTimeout(connect, 2000));
}
connect();For contract events, replace params with ["logs", {"address": "YOUR_CONTRACT_ADDRESS"}].
05 Verify contract source
Open the contract in the explorer and select Verify & publish. Use the exact deployment settings: Solidity 0.8.28, Cancun, optimizer enabled with 200 runs. Submit all sources or standard JSON input. This example has no constructor arguments.
forge verify-contract --chain-id 20261108 \
--verifier blockscout \
--verifier-url https://explorer-testnet.cuocoin.com/api \
--watch "$CONTRACT_ADDRESS" src/TestToken.sol:TestTokenUse the included Foundry configuration to keep verification and deployment settings identical.
06 Public endpoint limits
HTTP batches contain at most 20 items and HTTP/WS payloads are limited to 1 MiB. Read limits are 10 requests/second per IP per gateway and 50 requests/second globally. Transaction submissions are limited to 1/second per IP and 5/second globally. Every batch item is counted.
Simulations allow at most 10,000,000 gas and log queries cover at most 2,000 blocks. Reduce concurrency and wait after rate-limit errors. Resend transactions with the same signed bytes. WebSocket clients must resubscribe after disconnecting. Administration, debugging, tracing and validator voting interfaces are private.
Network files
Genesis block hash: Pending isolated validation