@ckb-firewall/cli 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +11 -6
  2. package/dist/commands/anchor.d.ts +23 -0
  3. package/dist/commands/anchor.d.ts.map +1 -0
  4. package/dist/commands/anchor.js +412 -0
  5. package/dist/commands/anchor.js.map +1 -0
  6. package/dist/commands/config.d.ts +4 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +59 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/execute.d.ts +9 -1
  11. package/dist/commands/execute.d.ts.map +1 -1
  12. package/dist/commands/execute.js +394 -229
  13. package/dist/commands/execute.js.map +1 -1
  14. package/dist/commands/gui.d.ts +6 -0
  15. package/dist/commands/gui.d.ts.map +1 -0
  16. package/dist/commands/gui.js +112 -0
  17. package/dist/commands/gui.js.map +1 -0
  18. package/dist/commands/import.d.ts.map +1 -1
  19. package/dist/commands/import.js +15 -48
  20. package/dist/commands/import.js.map +1 -1
  21. package/dist/commands/inspect.d.ts.map +1 -1
  22. package/dist/commands/inspect.js +32 -0
  23. package/dist/commands/inspect.js.map +1 -1
  24. package/dist/commands/proposals.d.ts.map +1 -1
  25. package/dist/commands/proposals.js +2 -4
  26. package/dist/commands/proposals.js.map +1 -1
  27. package/dist/commands/propose.d.ts +5 -0
  28. package/dist/commands/propose.d.ts.map +1 -1
  29. package/dist/commands/propose.js +91 -7
  30. package/dist/commands/propose.js.map +1 -1
  31. package/dist/commands/reclaim.d.ts +18 -0
  32. package/dist/commands/reclaim.d.ts.map +1 -0
  33. package/dist/commands/reclaim.js +214 -0
  34. package/dist/commands/reclaim.js.map +1 -0
  35. package/dist/commands/sign.d.ts.map +1 -1
  36. package/dist/commands/sign.js +40 -94
  37. package/dist/commands/sign.js.map +1 -1
  38. package/dist/commands/vote.d.ts +2 -0
  39. package/dist/commands/vote.d.ts.map +1 -1
  40. package/dist/commands/vote.js +31 -25
  41. package/dist/commands/vote.js.map +1 -1
  42. package/dist/index.js +101 -16
  43. package/dist/index.js.map +1 -1
  44. package/dist/lib/Transaction Firewall.html +201 -0
  45. package/dist/lib/blkl.d.ts +17 -2
  46. package/dist/lib/blkl.d.ts.map +1 -1
  47. package/dist/lib/blkl.js +133 -17
  48. package/dist/lib/blkl.js.map +1 -1
  49. package/dist/lib/capacity.d.ts +12 -0
  50. package/dist/lib/capacity.d.ts.map +1 -0
  51. package/dist/lib/capacity.js +18 -0
  52. package/dist/lib/capacity.js.map +1 -0
  53. package/dist/lib/config.d.ts +7 -0
  54. package/dist/lib/config.d.ts.map +1 -0
  55. package/dist/lib/config.js +35 -0
  56. package/dist/lib/config.js.map +1 -0
  57. package/dist/lib/defaults.d.ts +19 -0
  58. package/dist/lib/defaults.d.ts.map +1 -1
  59. package/dist/lib/defaults.js +34 -7
  60. package/dist/lib/defaults.js.map +1 -1
  61. package/dist/lib/governance-v4.d.ts +39 -0
  62. package/dist/lib/governance-v4.d.ts.map +1 -0
  63. package/dist/lib/governance-v4.js +194 -0
  64. package/dist/lib/governance-v4.js.map +1 -0
  65. package/dist/lib/gui-bundle.html +4266 -0
  66. package/dist/lib/gui-server.d.ts +12 -0
  67. package/dist/lib/gui-server.d.ts.map +1 -0
  68. package/dist/lib/gui-server.js +1634 -0
  69. package/dist/lib/gui-server.js.map +1 -0
  70. package/dist/lib/hints.d.ts +1 -1
  71. package/dist/lib/hints.d.ts.map +1 -1
  72. package/dist/lib/hints.js +3 -9
  73. package/dist/lib/hints.js.map +1 -1
  74. package/dist/lib/portless.d.ts +41 -0
  75. package/dist/lib/portless.d.ts.map +1 -0
  76. package/dist/lib/portless.js +194 -0
  77. package/dist/lib/portless.js.map +1 -0
  78. package/dist/lib/proposals.d.ts +17 -9
  79. package/dist/lib/proposals.d.ts.map +1 -1
  80. package/dist/lib/proposals.js +4 -26
  81. package/dist/lib/proposals.js.map +1 -1
  82. package/dist/lib/rpc.d.ts +5 -0
  83. package/dist/lib/rpc.d.ts.map +1 -1
  84. package/dist/lib/rpc.js +21 -0
  85. package/dist/lib/rpc.js.map +1 -1
  86. package/dist/lib/treasury-status.d.ts +28 -0
  87. package/dist/lib/treasury-status.d.ts.map +1 -0
  88. package/dist/lib/treasury-status.js +70 -0
  89. package/dist/lib/treasury-status.js.map +1 -0
  90. package/dist/lib/treasury.d.ts +15 -0
  91. package/dist/lib/treasury.d.ts.map +1 -0
  92. package/dist/lib/treasury.js +62 -0
  93. package/dist/lib/treasury.js.map +1 -0
  94. package/dist/lib/tx-deps.d.ts +9 -0
  95. package/dist/lib/tx-deps.d.ts.map +1 -0
  96. package/dist/lib/tx-deps.js +15 -0
  97. package/dist/lib/tx-deps.js.map +1 -0
  98. package/dist/lib/witness.d.ts +13 -11
  99. package/dist/lib/witness.d.ts.map +1 -1
  100. package/dist/lib/witness.js +85 -48
  101. package/dist/lib/witness.js.map +1 -1
  102. package/package.json +2 -2
@@ -4,13 +4,10 @@ import ora from "ora";
4
4
  import inquirer from "inquirer";
5
5
  import { secp256k1 } from "@noble/curves/secp256k1.js";
6
6
  import { loadProposal, saveProposal, listProposals, isReviewWindowPassed, isVoteApproved, signingMessage, SIG_THRESHOLD, } from "../lib/proposals.js";
7
- import { hexToBytes, bytesToHex, encodeRegistryPayload, extractGovernanceHeaderRaw, parseGovernanceHeader, insertSorted, removeEntry } from "../lib/blkl.js";
8
- import { parseRegistryPayload } from "@ckb-firewall/sdk";
9
- import { getLiveCell } from "../lib/rpc.js";
10
- import { resolveRegistryOutpoint } from "../lib/registry.js";
11
- import { ckbBlake2b } from "../lib/witness.js";
12
- import { printHints } from "../lib/hints.js";
7
+ import { bytesToHex, hexToBytes } from "../lib/blkl.js";
8
+ import { proposalV4Fields, loadRegistryStateForProposal } from "../lib/governance-v4.js";
13
9
  import { TESTNET_RPC_URL, TESTNET_REGISTRY_CELL, warnIfTrivialTestKeys } from "../lib/defaults.js";
10
+ import { printHints } from "../lib/hints.js";
14
11
  export function signDefaults() {
15
12
  return {
16
13
  rpcUrl: TESTNET_RPC_URL,
@@ -23,7 +20,7 @@ function isValidPrivKey(hex) {
23
20
  const bytes = hexToBytes(hex);
24
21
  if (bytes.length !== 32)
25
22
  return false;
26
- secp256k1.getPublicKey(bytes); // throws if invalid
23
+ secp256k1.getPublicKey(bytes);
27
24
  return true;
28
25
  }
29
26
  catch {
@@ -39,11 +36,8 @@ export function parseSignerIndex(value, maxExclusive = 5) {
39
36
  return n;
40
37
  }
41
38
  export async function signCommand(opts) {
42
- // ── select proposal ──────────────────────────────────────────────────────
43
39
  let proposalId = opts.proposal?.trim() ?? "";
44
40
  if (!proposalId) {
45
- // Use SIG_THRESHOLD as a conservative filter; the real on-chain threshold
46
- // is checked after fetching the registry cell.
47
41
  const signable = listProposals().filter((p) => (p.status === "approved" || p.status === "voting" || p.status === "pending-review") &&
48
42
  p.signatures.length < SIG_THRESHOLD);
49
43
  if (signable.length === 0) {
@@ -56,7 +50,7 @@ export async function signCommand(opts) {
56
50
  name: "chosen",
57
51
  message: "Select proposal to sign:",
58
52
  choices: signable.map((p) => ({
59
- name: `${chalk.bold(p.id)} ${p.action} ${p.lockArgs.slice(0, 24)} (${p.signatures.length}/${SIG_THRESHOLD} sigs)`,
53
+ name: `${chalk.bold(p.id)} ${p.action} ${p.lockArgs.slice(0, 24)}... (${p.signatures.length}/${SIG_THRESHOLD} sigs)`,
60
54
  value: p.id,
61
55
  })),
62
56
  },
@@ -64,7 +58,6 @@ export async function signCommand(opts) {
64
58
  proposalId = chosen;
65
59
  }
66
60
  const proposal = loadProposal(proposalId);
67
- // ── checks ───────────────────────────────────────────────────────────────
68
61
  if (proposal.status === "executed") {
69
62
  console.log(logSymbols.error, chalk.red("Proposal is already executed."));
70
63
  process.exit(1);
@@ -74,87 +67,57 @@ export async function signCommand(opts) {
74
67
  process.exit(1);
75
68
  }
76
69
  if (!isReviewWindowPassed(proposal)) {
77
- const endsAt = new Date(proposal.reviewWindowEndsAt);
78
- const ms = endsAt.getTime() - Date.now();
70
+ const ms = new Date(proposal.reviewWindowEndsAt).getTime() - Date.now();
79
71
  const h = Math.floor(ms / 3_600_000);
80
72
  const m = Math.floor((ms % 3_600_000) / 60_000);
81
- console.log(logSymbols.error, chalk.red(`Review window has not passed yet ${h}h ${m}m remaining.`));
73
+ console.log(logSymbols.error, chalk.red(`Review window has not passed yet: ${h}h ${m}m remaining.`));
82
74
  console.log(chalk.dim(` Window ends: ${proposal.reviewWindowEndsAt}`));
83
75
  process.exit(1);
84
76
  }
85
77
  if (!isVoteApproved(proposal)) {
86
- console.log(logSymbols.error, chalk.red("Vote threshold not met cannot sign yet."));
87
- console.log(chalk.dim(` Use: ckb-firewall vote --proposal ${proposal.id}`));
78
+ console.log(logSymbols.error, chalk.red("Vote threshold not met; cannot sign yet."));
88
79
  process.exit(1);
89
80
  }
90
- // ── fetch registry cell (before signer index prompt so we can use on-chain committee size) ──
91
81
  if (!/^\d+$/.test(opts.registryIndex.trim())) {
92
82
  console.error(logSymbols.error, chalk.red("--registry-index must be a non-negative integer."));
93
83
  process.exit(1);
94
84
  }
95
- const registryIndexInt = Number.parseInt(opts.registryIndex.trim(), 10);
96
- const spinner = ora("Fetching current registry cell to compute signing roots").start();
97
- let oldRoot;
98
- let newRoot;
99
- let committeeSize = null;
100
- let onChainThreshold = null;
85
+ const spinner = ora("Loading registry and computing GOV1 v4 signing roots").start();
86
+ let state;
87
+ let proposalDataHash;
88
+ let reviewDelayMs;
101
89
  try {
102
- const { txHash, index } = await resolveRegistryOutpoint(opts.rpcUrl, opts.registryTx, registryIndexInt);
103
- const cell = await getLiveCell(opts.rpcUrl, txHash, index);
104
- const currentPayload = parseRegistryPayload(cell.data);
105
- const govHeaderRaw = extractGovernanceHeaderRaw(cell.data);
106
- const govHeader = govHeaderRaw ? parseGovernanceHeader(govHeaderRaw) : null;
107
- if (govHeader && govHeader.pubkeys.length > 0) {
108
- warnIfTrivialTestKeys(govHeader.pubkeys);
109
- committeeSize = govHeader.pubkeys.length;
110
- onChainThreshold = govHeader.threshold;
111
- if (onChainThreshold !== SIG_THRESHOLD) {
112
- process.stderr.write(`Warning: on-chain signature threshold (${onChainThreshold}) differs from compile-time default (${SIG_THRESHOLD}). ` +
113
- `Using the on-chain value.\n`);
114
- }
115
- }
116
- const oldBlkl = hexToBytes(cell.data);
117
- let newEntries;
118
- if (proposal.action === "add") {
119
- newEntries = insertSorted(currentPayload.entries, {
120
- identifier: proposal.lockArgs,
121
- expiresAt: BigInt(proposal.expiresAt),
122
- });
123
- }
124
- else {
125
- newEntries = removeEntry(currentPayload.entries, proposal.lockArgs);
126
- }
127
- const newBlkl = encodeRegistryPayload({ version: currentPayload.version, entries: newEntries }, govHeaderRaw ?? undefined);
128
- oldRoot = ckbBlake2b(oldBlkl);
129
- newRoot = ckbBlake2b(newBlkl);
130
- spinner.succeed("Registry roots computed");
90
+ state = await loadRegistryStateForProposal(opts.rpcUrl, opts.registryTx, Number.parseInt(opts.registryIndex.trim(), 10), proposal);
91
+ if (state.governanceHeader?.pubkeys.length)
92
+ warnIfTrivialTestKeys(state.governanceHeader.pubkeys);
93
+ const fields = proposalV4Fields(proposal, state.registryTypeIdValue);
94
+ proposalDataHash = fields.proposalDataHash;
95
+ reviewDelayMs = fields.reviewDelayMs;
96
+ proposal.proposalDataHash = bytesToHex(proposalDataHash);
97
+ proposal.reviewDelayMs = reviewDelayMs.toString();
98
+ spinner.succeed("GOV1 v4 signing roots computed");
131
99
  }
132
100
  catch (err) {
133
- spinner.fail("Could not fetch registry cell");
101
+ spinner.fail("Could not compute GOV1 v4 signing roots");
134
102
  console.error(chalk.red(err instanceof Error ? err.message : String(err)));
135
103
  process.exit(1);
136
104
  }
137
- // ── signer index ─────────────────────────────────────────────────────────
138
- // committeeSize comes from the on-chain governance header so the prompt
139
- // accurately reflects which indices are valid for this deployment.
105
+ const committeeSize = state.governanceHeader?.pubkeys.length ?? 5;
106
+ const effectiveThreshold = state.governanceHeader?.threshold ?? SIG_THRESHOLD;
140
107
  let signerIndex;
141
108
  if (opts.signerIndex !== undefined) {
142
- const maxExclusive = committeeSize ?? Number.MAX_SAFE_INTEGER;
143
- const parsed = parseSignerIndex(opts.signerIndex, maxExclusive);
109
+ const parsed = parseSignerIndex(opts.signerIndex, committeeSize);
144
110
  if (parsed === null) {
145
- console.error(logSymbols.error, chalk.red(committeeSize !== null
146
- ? `--signer-index must be 0–${committeeSize - 1} for this committee.`
147
- : "--signer-index must be a non-negative integer."));
111
+ console.error(logSymbols.error, chalk.red(`--signer-index must be 0-${committeeSize - 1}.`));
148
112
  process.exit(1);
149
113
  }
150
114
  signerIndex = parsed;
151
115
  }
152
116
  else {
153
117
  const usedIndices = new Set(proposal.signatures.map((s) => s.signerIndex));
154
- const totalSigners = committeeSize ?? 5;
155
- const available = Array.from({ length: totalSigners }, (_, i) => i).filter((i) => !usedIndices.has(i));
118
+ const available = Array.from({ length: committeeSize }, (_, i) => i).filter((i) => !usedIndices.has(i));
156
119
  if (available.length === 0) {
157
- console.log(logSymbols.success, chalk.green(`All ${totalSigners} signers have already signed.`));
120
+ console.log(logSymbols.success, chalk.green(`All ${committeeSize} signers have already signed.`));
158
121
  process.exit(0);
159
122
  }
160
123
  const { idx } = await inquirer.prompt([
@@ -167,12 +130,11 @@ export async function signCommand(opts) {
167
130
  ]);
168
131
  signerIndex = idx;
169
132
  }
170
- // Check if this index already signed.
171
133
  if (proposal.signatures.some((s) => s.signerIndex === signerIndex)) {
172
134
  console.log(logSymbols.warning, chalk.yellow(`Signer ${signerIndex} has already signed this proposal.`));
135
+ saveProposal(proposal);
173
136
  process.exit(0);
174
137
  }
175
- // ── private key ──────────────────────────────────────────────────────────
176
138
  console.log();
177
139
  const { keyInput } = await inquirer.prompt([
178
140
  {
@@ -186,48 +148,32 @@ export async function signCommand(opts) {
186
148
  console.error(logSymbols.error, chalk.red("A private key is required."));
187
149
  process.exit(1);
188
150
  }
189
- else if (!isValidPrivKey(keyInput.trim())) {
190
- console.error(logSymbols.error, chalk.red("Invalid private key must be 32-byte hex."));
151
+ if (!isValidPrivKey(keyInput.trim())) {
152
+ console.error(logSymbols.error, chalk.red("Invalid private key; must be 32-byte hex."));
191
153
  process.exit(1);
192
154
  }
193
155
  const privateKeyBytes = hexToBytes(keyInput.trim());
194
- // ── sign ─────────────────────────────────────────────────────────────────
195
- // Derive pubkey before zeroing key material.
196
156
  const pubKey = bytesToHex(new Uint8Array(secp256k1.getPublicKey(privateKeyBytes, true)));
197
- // Use v3 signing (includes reviewWindowEndMs) so governance-lock can verify the since constraint.
198
- const reviewWindowEndMs = BigInt(new Date(proposal.reviewWindowEndsAt).getTime());
199
- const msgHash = signingMessage(proposal, oldRoot, newRoot, reviewWindowEndMs);
200
- // @noble/curves v2 'recovered' format: [recovery_bit(1), r(32), s(32)].
201
- // CKB secp256k1 expects: [r(32), s(32), recovery_bit(1)].
157
+ const msgHash = signingMessage(proposal, state.oldRoot, state.newRoot, proposalDataHash, reviewDelayMs);
202
158
  const recoveredSig = secp256k1.sign(msgHash, privateKeyBytes, { lowS: true, format: "recovered" });
203
159
  const sigBytes = new Uint8Array(65);
204
- sigBytes.set(recoveredSig.slice(1), 0); // r + s at bytes 0-63
205
- sigBytes[64] = recoveredSig[0] ?? 0; // recovery bit at byte 64
206
- privateKeyBytes.fill(0); // zero key material immediately after use
160
+ sigBytes.set(recoveredSig.slice(1), 0);
161
+ sigBytes[64] = recoveredSig[0] ?? 0;
162
+ privateKeyBytes.fill(0);
207
163
  proposal.signatures.push({
208
164
  signerIndex,
209
165
  signature: bytesToHex(sigBytes),
210
166
  timestamp: new Date().toISOString(),
211
167
  });
212
- const effectiveThreshold = onChainThreshold ?? SIG_THRESHOLD;
213
- const sigCount = proposal.signatures.length;
214
- if (sigCount >= effectiveThreshold) {
168
+ if (proposal.signatures.length >= effectiveThreshold)
215
169
  proposal.status = "approved";
216
- }
217
170
  saveProposal(proposal);
218
171
  console.log();
219
172
  console.log(logSymbols.success, chalk.green(`Signed by signer ${signerIndex}`));
220
- console.log(` Public key: ${chalk.dim(pubKey)}`);
221
- console.log(` Signature: ${chalk.dim(bytesToHex(sigBytes).slice(0, 20) + "…")}`);
222
- console.log(` Signatures: ${sigCount}/${effectiveThreshold} collected`);
223
- if (sigCount >= effectiveThreshold) {
224
- console.log();
225
- console.log(logSymbols.success, chalk.green("Signature threshold met — ready to execute."));
226
- console.log(` Next: ${chalk.dim(`ckb-firewall execute --proposal ${proposal.id}`)}`);
227
- }
228
- else {
229
- console.log(` Need ${effectiveThreshold - sigCount} more signature(s).`);
230
- }
173
+ console.log(` Public key: ${chalk.dim(pubKey)}`);
174
+ console.log(` Proposal data: ${chalk.dim(bytesToHex(proposalDataHash))}`);
175
+ console.log(` Review delay ms: ${reviewDelayMs.toString()}`);
176
+ console.log(` Signatures: ${proposal.signatures.length}/${effectiveThreshold} collected`);
231
177
  console.log();
232
178
  printHints("sign");
233
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/commands/sign.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/commands/sign.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export interface VoteOptions {
4
4
  rpcUrl: string;
5
5
  registryTx: string;
6
6
  registryIndex: string;
7
+ /** Private key hex (non-interactive use, e.g. scripted drills). */
8
+ privateKey?: string;
7
9
  }
8
10
  export declare function voteDefaults(): Partial<VoteOptions>;
9
11
  export declare function voteCommand(opts: VoteOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"vote.d.ts","sourceRoot":"","sources":["../../src/commands/vote.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAMnD;AAaD,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwLlE"}
1
+ {"version":3,"file":"vote.d.ts","sourceRoot":"","sources":["../../src/commands/vote.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAMnD;AAaD,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0LlE"}
@@ -61,15 +61,21 @@ export async function voteCommand(opts) {
61
61
  process.exit(1);
62
62
  }
63
63
  // ── private key → pubkey ─────────────────────────────────────────────────
64
- console.log();
65
- const { keyInput } = await inquirer.prompt([
66
- {
67
- type: "password",
68
- name: "keyInput",
69
- message: "Validator private key (32-byte hex):",
70
- mask: "*",
71
- },
72
- ]);
64
+ let keyInput;
65
+ if (opts.privateKey?.trim()) {
66
+ keyInput = opts.privateKey.trim();
67
+ }
68
+ else {
69
+ console.log();
70
+ ({ keyInput } = await inquirer.prompt([
71
+ {
72
+ type: "password",
73
+ name: "keyInput",
74
+ message: "Validator private key (32-byte hex):",
75
+ mask: "*",
76
+ },
77
+ ]));
78
+ }
73
79
  if (!keyInput.trim()) {
74
80
  console.error(logSymbols.error, chalk.red("A private key is required."));
75
81
  process.exit(1);
@@ -91,8 +97,9 @@ export async function voteCommand(opts) {
91
97
  process.exit(1);
92
98
  }
93
99
  const { proof: merkleProof, leafIndex: merkleLeafIndex } = merkleResult;
94
- // Verify the local validator set matches the on-chain Merkle root so votes won't be
95
- // silently rejected at execution time if the validator set has rotated.
100
+ // On-chain Merkle root check is mandatory. A vote recorded against a stale or wrong
101
+ // validator set will be rejected at execute time, so we must confirm on-chain state now.
102
+ // Network failure is not safe to ignore — fail hard rather than record an invalid vote.
96
103
  const localRoot = computeMerkleRoot(validatorSet);
97
104
  try {
98
105
  const registryIndexInt = Number.parseInt(opts.registryIndex, 10);
@@ -103,15 +110,19 @@ export async function voteCommand(opts) {
103
110
  if (govHeader && govHeader.validatorCount > 0) {
104
111
  const onChainRoot = bytesToHex(govHeader.validatorMerkleRoot);
105
112
  if (onChainRoot.toLowerCase() !== localRoot.toLowerCase()) {
106
- console.error(logSymbols.error, chalk.red("Validator set mismatch: local TESTNET_GOVERNANCE_PUBKEYS do not match the on-chain Merkle root."));
107
- console.error(chalk.dim(" This vote will be rejected at execution time. Update to the current validator set."));
113
+ console.error(logSymbols.error, chalk.red("Validator set mismatch: your governance pubkeys do not match the on-chain Merkle root."));
114
+ console.error(chalk.dim(" The validator set may have been rotated. Update your local governance pubkeys before voting."));
108
115
  privateKeyBytes.fill(0);
109
116
  process.exit(1);
110
117
  }
111
118
  }
112
119
  }
113
- catch {
114
- console.log(chalk.dim(" Note: could not verify on-chain validator set network unavailable, proceeding with local check."));
120
+ catch (err) {
121
+ console.error(logSymbols.error, chalk.red("Cannot reach the CKB node — on-chain validator set verification is required before voting."));
122
+ console.error(chalk.dim(` RPC: ${opts.rpcUrl}`));
123
+ console.error(chalk.dim(` ${err instanceof Error ? err.message : String(err)}`));
124
+ privateKeyBytes.fill(0);
125
+ process.exit(1);
115
126
  }
116
127
  // Duplicate check by pubkey.
117
128
  if (proposal.votes.some((v) => v.pubkey.toLowerCase() === pubkey.toLowerCase())) {
@@ -149,21 +160,16 @@ export async function voteCommand(opts) {
149
160
  // ── sign vote ────────────────────────────────────────────────────────────
150
161
  const timestamp = new Date().toISOString();
151
162
  const msgHash = voteSigningMessage(proposal.proposalIdHash, vote, timestamp, pubkey);
163
+ // prehash:false — msgHash is already blake2b; skip noble/curves' internal sha256 step.
152
164
  // format:"recovered" returns Uint8Array[recovery_id(1), r(32), s(32)]
153
- const sigRaw = secp256k1.sign(msgHash, privateKeyBytes, { lowS: true, format: "recovered" });
154
- // Store as [r(32), s(32), recovery_id(1)] matches ProposalSignature convention
165
+ const sigRaw = secp256k1.sign(msgHash, privateKeyBytes, { lowS: true, prehash: false, format: "recovered" });
166
+ // Store as [r(32), s(32), recovery_id(1)] for the on-chain vote witness.
155
167
  const sigBytes = new Uint8Array(65);
156
168
  sigBytes.set(sigRaw.slice(1), 0);
157
169
  sigBytes[64] = sigRaw[0] ?? 0;
158
170
  privateKeyBytes.fill(0); // zero key material immediately after use
159
171
  const signature = bytesToHex(sigBytes);
160
172
  // ── record vote ──────────────────────────────────────────────────────────
161
- // Block new votes once signing has started — adding a vote would change voteDigestHash
162
- // and invalidate any signatures already collected.
163
- if (proposal.signatures.length > 0) {
164
- console.error(logSymbols.error, chalk.red("Cannot record vote — signing has already begun. Adding a vote would invalidate existing signatures."));
165
- process.exit(1);
166
- }
167
173
  proposal.votes.push({ pubkey, vote, timestamp, signature, merkleLeafIndex, merkleProof });
168
174
  proposal.voteDigestHash = computeVoteDigestHash(proposal.votes);
169
175
  const yesCount = countYes(proposal.votes);
@@ -177,8 +183,8 @@ export async function voteCommand(opts) {
177
183
  console.log(` Yes votes: ${yesCount}/${VOTE_THRESHOLD} required`);
178
184
  if (approved) {
179
185
  console.log();
180
- console.log(logSymbols.success, chalk.green("Vote threshold met — proposal approved for signing."));
181
- console.log(` Next: ${chalk.dim(`ckb-firewall sign --proposal ${proposal.id}`)}`);
186
+ console.log(logSymbols.success, chalk.green("Vote threshold met — proposal approved for execution."));
187
+ console.log(` Next: ${chalk.dim(`ckb-firewall execute --proposal ${proposal.id}`)}`);
182
188
  }
183
189
  else {
184
190
  console.log(` Need ${VOTE_THRESHOLD - yesCount} more yes vote(s).`);
@@ -1 +1 @@
1
- {"version":3,"file":"vote.js","sourceRoot":"","sources":["../../src/commands/vote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vote.js","sourceRoot":"","sources":["../../src/commands/vote.ts"],"names":[],"mappings":"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"}