Step 2: Import a Proposal
Governance proposals travel as JSON files shared out-of-band — email, Signal, IPFS, a shared drive. The proposer runs ckb-firewall propose and then ckb-firewall export, producing a file like proposal-abc123.json.
For this tutorial, create a sample proposal file to import. Save the following as proposal-tutorial.json:
{ "id": "tutorial-abc123", "proposalIdHash": "0x0000000000000000000000000000000000000000000000000000000000000001", "action": "add", "lockArgs": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef", "expiresAt": "0", "evidence": "https://example.com/evidence", "classification": "theft", "severity": "high", "rationale": "Tutorial sample proposal.", "proposer": "tutorial", "status": "voting", "votes": [], "voteDigestHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "createdAt": "2026-06-04T00:00:00.000Z"}Import it:
ckb-firewall import proposal-tutorial.jsonExpected output:
✔ Imported proposal tutorial-abc123 Action: add 0xdeadbeef... Status: votingThe proposal is now stored at ~/.ckb-firewall/proposals/tutorial-abc123.json. List all proposals to confirm:
ckb-firewall proposalsYou should see the tutorial proposal listed with status voting.
Continue to Step 3.