Skip to content

Testnet Deployment

The canonical testnet deployment was refreshed on 2026-05-31 for the treasury model. firewall-lock and spawn-aware-secp256k1 are unchanged from 2026-05-20; governance-lock remains the GOV1 v4 deployment; blacklist-registry was redeployed with treasury semantics; and proposal-anchor is live for treasury-funded proposal anchors.

ContractTxIndexType ID
governance-lock0x5033e680...71100x95d5e88d...1c40
firewall-lock0x128193cc...8d200x8192c9df...c54
blacklist-registry0xa165e5af...294d00x493f1700...cd09
proposal-anchor0x0daff588...ea900x89decc85...6a12
spawn-aware-secp256k10x0fe5d476...9e00x9be62e04...465

Full outpoints are in notes/deployments/testnet.registry.json.

tx_hash: 0xa3dcb46fdeb92735e7f9f0393811a8541b71e275e8f713e62ea35f59746c78a8
index: 0

This cell moves after each governance update. Always fetch the current outpoint before building spending transactions.

Fetch the live payload:

Terminal window
ckb-cli --url https://testnet.ckb.dev rpc get_live_cell \
--tx-hash 0xa3dcb46fdeb92735e7f9f0393811a8541b71e275e8f713e62ea35f59746c78a8 \
--index 0 \
--with-data \
--output-format json

Or via the SDK:

import { fetchRegistryPayload } from "@ckb-firewall/sdk";
const registry = await fetchRegistryPayload(
"https://testnet.ckb.dev",
"0xa3dcb46fdeb92735e7f9f0393811a8541b71e275e8f713e62ea35f59746c78a8",
0
);
{
codeHash: "0x493f1700508125b0e281b8fb1d168b03bd5ef71480399dd59221224901a9cd09",
hashType: "type",
typeIdValue: "0x9be0ad6e4e5039a64d9725ff037057c16ef59f126e3bdd9841b802f0e0a112fe",
required: true,
}

The typeIdValue identifies this registry instance. It changes when the registry is re-bootstrapped and remains stable across normal governance updates of that instance.

The governance committee is 5 members with a 3-of-5 signing threshold. The canonical testnet registry was re-bootstrapped with rotated testnet-only governance keys and treasury metadata on 2026-05-31. Never use these keys outside local or testnet environments.

The committee pubkeys and the validator Merkle root are embedded in the BLKL v2 governance header of the registry cell.

The canonical testnet registry carries a v3 governance header with a discoverable treasury lock script. The CLI discovers treasury cells automatically from the lock script embedded in the registry header. ckb-firewall inspect and the GUI show blacklist pool usage and the donation address when usage reaches 70% or more.

Donate testnet CKB to the treasury at:

ckt1qzpf4txhkw8vwtycyy5vjru0jv6q5wk3cwd8w22nzsz4e2sge9h7jq546h5gm2ln9m6ehs5j68ujthe0z72g77z9m2jw2te5hq0myugugzyaany9q7kaky2wxhp29c4wjscgnqegsjqcl3avdh3u8wxd4e4py8dwlf3

Treasury cells are consumed and recreated during governance operations; use ckb-firewall inspect for the current pool balance rather than tracking individual cell outpoints.

Terminal window
ckb-firewall inspect

Uses the canonical testnet registry cell by default.