Skip to content

PBLK Proposal Cell

A PBLK cell is an on-chain proposal cell created by ckb-firewall anchor. The registry type script (blacklist-registry) reads this cell during the execute transaction and verifies that the BLKL state transition exactly matches what the proposal commits to.

Used for add and remove actions.

FieldOffsetSizeValue
magic04 bytesPBLK (0x50 0x42 0x4c 0x4b)
version41 byte0x01
registry_type_id_value532 bytesType ID value of the registry this proposal targets
action371 byte0x01 = add, 0x02 = remove
identifier_len381 byteByte length of the lock-args identifier
identifier39identifier_len bytesLock or type args to add or remove
expires_atafter identifier8 bytesLE u64 Unix timestamp in seconds; 0 = permanent
evidence_hashfinal 32 bytes32 bytesblake2b of the evidence text

Minimum size (0-byte identifier): 4 + 1 + 32 + 1 + 1 + 0 + 8 + 32 = 79 bytes.

Used for set-treasury actions. Updates the governance header treasury lock script without changing blacklist entries.

FieldOffsetSizeValue
magic04 bytesPBLK (0x50 0x42 0x4c 0x4b)
version41 byte0x02
registry_type_id_value532 bytesType ID value of the registry this proposal targets
action371 byte0x03 = set-treasury
treasury_lock_hash3832 bytesblake2b hash of the new treasury lock script
evidence_hash7032 bytesblake2b of the evidence text

Total: 102 bytes.

The blacklist-registry type script rejects the execute transaction if:

  • The proposal cell is missing from the inputs
  • More than one input cell hashes to the same proposal_data_hash
  • The registry_type_id_value in the cell does not match the registry being updated
  • For v1: the BLKL output contains any change beyond the single proposed add/remove
  • For v2: the BLKL output changes blacklist entries, or sets a treasury lock hash that does not match treasury_lock_hash

PBLK cells created by the treasury-funded flow carry the proposal-anchor type script. This type script additionally enforces that:

  • The cell is locked by the registry treasury lock
  • The anchor targets the correct registry Type ID
  • At reclaim or execute time, the capacity returns to the treasury

See Proposal anchor for the proposal-anchor contract’s validation rules.

  • Encoder: sdk/cli/src/lib/governance-v4.tsencodeProposalCellData, proposalCellDataHash
  • GOV1 witness binding: GOV1 v4 Witnessproposal_data_hash