CUOCOIN / DEVELOPER NETWORK

从第一笔交易,
开始构建。

连接钱包、领取测试币、部署 Solidity 合约。一个面向开发者的 EVM 测试网络。

开始开发 →

部署准备中:公共接入尚未开放。以下参数用于即将启用的新测试链。
领取 tCUO ↗每个地址每 24 小时可领取 10 枚测试币。查看链上活动 ↗查询区块、交易、地址与合约源码。网络运行状态 ↗检查 RPC、浏览器和水龙头当前状态。

01 接入网络

使用 MetaMask 或其他兼容 EVM 的钱包添加下列网络。接入开放后,点击“一键添加网络”即可向钱包提交配置。

curl https://rpc-testnet.cuocoin.com \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

Chain ID 的正确返回值为 0x13528f4。应用应检查 Chain ID 和发布的创世哈希后再提交交易。

02 领取与转账

前往水龙头,输入公开钱包地址并完成验证。每个地址 24 小时可领取 10 tCUO,每个 IP 每天最多 20 次,全站每天最多发放 1,000 tCUO。领取状态会保留,网络超时后可重试同一个领取编号。

打开测试币水龙头 →

领取确认后,在钱包中选择 tCUO,填写接收地址和数量并签名。使用交易哈希在区块浏览器查询结果。最低交易 Gas 价格为 1 Gwei,普通账户转账一般使用 21,000 Gas。

03 部署 ERC-20 合约

示例使用 Solidity 0.8.28、OpenZeppelin Contracts 5.6.1。务必明确设置 Cancun,避免编译器生成本链尚未启用的指令。

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());
    }
}

下载完整 Hardhat / Foundry 示例 ↓

在本地环境中设置测试钱包私钥 CUO_PRIVATE_KEY。私钥不应填写到此网站或提交到代码仓库。示例只从本地环境变量读取签名密钥。

04 订阅区块与事件

WebSocket 支持 newHeads 和 logs。连接中断后重新连接并重新订阅;如需补齐事件,使用 eth_getLogs 分段查询,每段最多 2,000 个区块。

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();

订阅合约事件时,将 params 改为 ["logs", {"address": "YOUR_CONTRACT_ADDRESS"}]。

05 验证合约源码

在浏览器打开合约地址,选择 Verify & publish。使用与部署时完全一致的 Solidity 0.8.28、Cancun、优化开关及 200 次优化参数,上传完整源码或标准 JSON 输入。示例构造函数没有参数。

forge verify-contract --chain-id 20261108 \
  --verifier blockscout \
  --verifier-url https://explorer-testnet.cuocoin.com/api \
  --watch "$CONTRACT_ADDRESS" src/TestToken.sol:TestToken

请使用下载示例中的 Foundry 配置,使验证与部署编译参数保持一致。

06 公共接口限制

HTTP 批量最多 20 项,请求或 WebSocket 消息最多 1 MiB。每个网关每 IP 读取额度为 10 次/秒,全站预算 50 次/秒;交易提交每 IP 1 次/秒,全站 5 次/秒。批量中的每项分别计数。

模拟调用最多 10,000,000 Gas,日志查询最多 2,000 个区块。遇到限流请降低并发并等待后重试。重发交易应使用相同签名字节;WebSocket 断线需要重新订阅。管理、调试、追踪及验证者投票接口不公开。

网络文件

创世区块哈希: 隔离验证完成后固定