Testnet Deployment
Deployed contracts
Section titled “Deployed contracts”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.
| Contract | Tx | Index | Type ID |
|---|---|---|---|
governance-lock | 0x5033e680...711 | 0 | 0x95d5e88d...1c40 |
firewall-lock | 0x128193cc...8d2 | 0 | 0x8192c9df...c54 |
blacklist-registry | 0xa165e5af...294d | 0 | 0x493f1700...cd09 |
proposal-anchor | 0x0daff588...ea9 | 0 | 0x89decc85...6a12 |
spawn-aware-secp256k1 | 0x0fe5d476...9e | 0 | 0x9be62e04...465 |
Full outpoints are in notes/deployments/testnet.registry.json.
Live registry cell
Section titled “Live registry cell”tx_hash: 0xa3dcb46fdeb92735e7f9f0393811a8541b71e275e8f713e62ea35f59746c78a8index: 0This cell moves after each governance update. Always fetch the current outpoint before building spending transactions.
Fetch the live payload:
ckb-cli --url https://testnet.ckb.dev rpc get_live_cell \ --tx-hash 0xa3dcb46fdeb92735e7f9f0393811a8541b71e275e8f713e62ea35f59746c78a8 \ --index 0 \ --with-data \ --output-format jsonOr via the SDK:
import { fetchRegistryPayload } from "@ckb-firewall/sdk";
const registry = await fetchRegistryPayload( "https://testnet.ckb.dev", "0xa3dcb46fdeb92735e7f9f0393811a8541b71e275e8f713e62ea35f59746c78a8", 0);Registry spec (for SDK config)
Section titled “Registry spec (for SDK config)”{ 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.
Governance committee
Section titled “Governance committee”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.
Registry treasury
Section titled “Registry treasury”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:
ckt1qzpf4txhkw8vwtycyy5vjru0jv6q5wk3cwd8w22nzsz4e2sge9h7jq546h5gm2ln9m6ehs5j68ujthe0z72g77z9m2jw2te5hq0myugugzyaany9q7kaky2wxhp29c4wjscgnqegsjqcl3avdh3u8wxd4e4py8dwlf3Treasury cells are consumed and recreated during governance operations; use ckb-firewall inspect for the current pool balance rather than tracking individual cell outpoints.
Inspect
Section titled “Inspect”ckb-firewall inspectUses the canonical testnet registry cell by default.