Skip to content

How to Anchor a Proposal On-chain

Anchoring locks the proposal on-chain as a PBLK cell. The governance transaction spends this cell with a relative since delay, so CKB consensus enforces the 72-hour review window.

For registries with a treasury-lock (the canonical testnet registry):

Terminal window
# Build and write the anchor tx to a file
ckb-firewall anchor --proposal <id> --tx-out gov_anchor_tx.json
# Or build and submit in one step
ckb-firewall anchor --proposal <id> --submit

No private key required. The CLI auto-discovers treasury cells from the registry’s v3 governance header.

For registries without a treasury:

Terminal window
ckb-firewall anchor \
--proposal <id> \
--to-address <proposal-cell-owner-address> \
--from-account <funding-address> \
--submit

Without --submit, the CLI prints the exact ckb-cli wallet transfer --to-data ... command. Run that command, then record the accepted outpoint:

Terminal window
ckb-firewall anchor \
--proposal <id> \
--proposal-tx <anchor-tx-hash> \
--proposal-index <data-output-index>

The proposal anchor outpoint is stored on the proposal JSON. Export and share the proposal with validators — see How to share proposals. Validators can now vote.

The review window clock starts when the anchor transaction is mined.