@ckb-firewall/cli 0.2.3 → 0.3.1
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.
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +21 -8
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +82 -41
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +27 -11
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/sign.d.ts +5 -2
- package/dist/commands/sign.d.ts.map +1 -1
- package/dist/commands/sign.js +103 -41
- package/dist/commands/sign.js.map +1 -1
- package/dist/commands/vote.d.ts +4 -1
- package/dist/commands/vote.d.ts.map +1 -1
- package/dist/commands/vote.js +56 -29
- package/dist/commands/vote.js.map +1 -1
- package/dist/index.js +12 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/blkl.d.ts.map +1 -1
- package/dist/lib/blkl.js +3 -0
- package/dist/lib/blkl.js.map +1 -1
- package/dist/lib/defaults.d.ts +6 -0
- package/dist/lib/defaults.d.ts.map +1 -1
- package/dist/lib/defaults.js +33 -12
- package/dist/lib/defaults.js.map +1 -1
- package/dist/lib/proposals.d.ts +1 -1
- package/dist/lib/proposals.d.ts.map +1 -1
- package/dist/lib/proposals.js +40 -9
- package/dist/lib/proposals.js.map +1 -1
- package/dist/lib/registry.js +1 -1
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/rpc.d.ts.map +1 -1
- package/dist/lib/rpc.js +11 -0
- package/dist/lib/rpc.js.map +1 -1
- package/dist/lib/witness.d.ts +4 -1
- package/dist/lib/witness.d.ts.map +1 -1
- package/dist/lib/witness.js +24 -8
- package/dist/lib/witness.js.map +1 -1
- package/package.json +2 -2
package/dist/lib/defaults.js
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
|
+
import { secp256k1 } from "@noble/curves/secp256k1.js";
|
|
1
2
|
export const TESTNET_RPC_URL = "https://testnet.ckb.dev";
|
|
2
3
|
// v2 registry spec: matches registry cell dep by type_id_value (bytes 34..66 of 66-byte v2 type args).
|
|
3
4
|
// Survives governance-lock upgrades — update only typeIdValue if the registry cell is re-bootstrapped.
|
|
4
5
|
export const TESTNET_REGISTRY_SPEC = {
|
|
5
|
-
codeHash: "
|
|
6
|
+
codeHash: "0x5812b3f0f68ded4d61e8f12117caa011f295dbe88a29c07b86c9caec14bd6c55",
|
|
6
7
|
hashType: "type",
|
|
7
|
-
typeIdValue: "
|
|
8
|
+
typeIdValue: "0xc70a072cdfb7d25a5e92d27a47f9c8a0f30513de683e56e16d55ae30775f3951",
|
|
8
9
|
required: true,
|
|
9
10
|
};
|
|
10
11
|
// Live registry cell outpoint on testnet. Moves after each governance update.
|
|
11
12
|
export const TESTNET_REGISTRY_CELL = {
|
|
12
|
-
txHash: "
|
|
13
|
+
txHash: "0x685dc49bfe466a198a01abd94117f5fe7dd79f28570d6ceba744616d7aa51eb4",
|
|
13
14
|
index: 0,
|
|
14
15
|
};
|
|
15
|
-
// Deployed contract binary cells (2026-05-
|
|
16
|
+
// Deployed contract binary cells (2026-05-26 deployment).
|
|
16
17
|
export const TESTNET_CONTRACT_OUTPOINTS = {
|
|
17
18
|
firewallLock: {
|
|
18
19
|
txHash: "0x128193cc2d547b224ccf10a6e299cb0749c633c5f9354ff5a9a5fd3e894318d2",
|
|
19
20
|
index: 0,
|
|
20
21
|
},
|
|
21
22
|
blacklistRegistry: {
|
|
22
|
-
txHash: "
|
|
23
|
+
txHash: "0x410864a6815cec51cbc3a86dfe5cf7c1ff62f1c56648ea0a0bdb2feeb6831973",
|
|
23
24
|
index: 1,
|
|
24
25
|
},
|
|
25
26
|
governanceLock: {
|
|
26
|
-
txHash: "
|
|
27
|
+
txHash: "0x410864a6815cec51cbc3a86dfe5cf7c1ff62f1c56648ea0a0bdb2feeb6831973",
|
|
27
28
|
index: 0,
|
|
28
29
|
},
|
|
29
30
|
spawnAwareSecp256k1: {
|
|
@@ -37,14 +38,34 @@ export const SECP256K1_DEP_GROUP = {
|
|
|
37
38
|
index: 0,
|
|
38
39
|
};
|
|
39
40
|
// Governance committee — 5 compressed secp256k1 pubkeys (33 bytes each).
|
|
40
|
-
//
|
|
41
|
+
// WARNING: These are TESTNET-ONLY keys. NEVER use them for mainnet or any
|
|
42
|
+
// deployment with real value.
|
|
41
43
|
export const TESTNET_GOVERNANCE_PUBKEYS = [
|
|
42
|
-
new Uint8Array([0x03,
|
|
43
|
-
new Uint8Array([
|
|
44
|
-
new Uint8Array([
|
|
45
|
-
new Uint8Array([0x03,
|
|
46
|
-
new Uint8Array([
|
|
44
|
+
new Uint8Array([0x03, 0xc6, 0x0a, 0xaf, 0x53, 0x51, 0x94, 0xf8, 0x0f, 0x45, 0xdc, 0x59, 0xe8, 0xe9, 0xd0, 0xc4, 0x37, 0x35, 0xc6, 0xa1, 0xf2, 0xa3, 0x59, 0xeb, 0x9e, 0x42, 0xcf, 0xcf, 0x95, 0xab, 0x76, 0x3d, 0xaf]),
|
|
45
|
+
new Uint8Array([0x03, 0xdd, 0xee, 0xa1, 0x9e, 0xe4, 0x52, 0xac, 0xae, 0xc2, 0xfe, 0x23, 0xbe, 0x86, 0xdf, 0xef, 0x14, 0x8e, 0xb0, 0x06, 0x15, 0x70, 0x2b, 0xbd, 0x4f, 0x28, 0x7d, 0xa6, 0x6a, 0x19, 0x54, 0x24, 0x38]),
|
|
46
|
+
new Uint8Array([0x03, 0x8f, 0x5f, 0xf1, 0xcb, 0xbb, 0x8e, 0x14, 0x00, 0x68, 0xf4, 0x9f, 0x67, 0x18, 0x3d, 0xb9, 0x5e, 0x06, 0xba, 0xa2, 0x1c, 0xcf, 0x06, 0x97, 0x59, 0x89, 0x35, 0x0b, 0x8d, 0x4f, 0xa9, 0xf2, 0xa0]),
|
|
47
|
+
new Uint8Array([0x03, 0x99, 0x2a, 0xc4, 0xc9, 0x37, 0xd1, 0xe8, 0x80, 0xcb, 0x47, 0x9b, 0x55, 0x39, 0x15, 0x85, 0xf2, 0xad, 0x88, 0x83, 0x5a, 0xa9, 0xac, 0xc7, 0xcd, 0x82, 0x2f, 0x91, 0x25, 0x62, 0xd1, 0x63, 0x22]),
|
|
48
|
+
new Uint8Array([0x02, 0x42, 0x93, 0x3e, 0xbb, 0x42, 0x76, 0xe5, 0x82, 0x0c, 0xab, 0xd2, 0xc0, 0x68, 0x45, 0xa5, 0x8a, 0xcb, 0x8f, 0x98, 0x1f, 0xcd, 0x79, 0xa2, 0x78, 0x39, 0x86, 0xe5, 0x51, 0x34, 0xc3, 0xfa, 0xc2]),
|
|
47
49
|
];
|
|
48
50
|
export const TESTNET_GOVERNANCE_THRESHOLD = 3;
|
|
49
51
|
export const TESTNET_GOVERNANCE_VALIDATOR_COUNT = 5;
|
|
52
|
+
// Known trivial private keys (0x01*32 through 0x05*32) used for testnet bootstrapping.
|
|
53
|
+
// Any deployment using these keys is insecure — anyone can read this source and take control.
|
|
54
|
+
const TRIVIAL_TEST_PRIVKEYS = Array.from({ length: 5 }, (_, i) => new Uint8Array(32).fill(i + 1));
|
|
55
|
+
/**
|
|
56
|
+
* Emits a CRITICAL warning to stderr if any of the configured governance pubkeys
|
|
57
|
+
* correspond to known trivial test private keys (0x01*32 … 0x05*32).
|
|
58
|
+
* Call this before any governance write operation.
|
|
59
|
+
*/
|
|
60
|
+
export function warnIfTrivialTestKeys(pubkeys) {
|
|
61
|
+
const trivialPubkeys = TRIVIAL_TEST_PRIVKEYS.map((priv) => secp256k1.getPublicKey(priv, true));
|
|
62
|
+
const hasTrivial = pubkeys.some((pub) => trivialPubkeys.some((tp) => tp.length === pub.length && tp.every((b, i) => b === pub[i])));
|
|
63
|
+
if (hasTrivial) {
|
|
64
|
+
process.stderr.write("\n⚠️ CRITICAL SECURITY WARNING ⚠️\n" +
|
|
65
|
+
"The governance committee contains keys derived from trivial test private keys.\n" +
|
|
66
|
+
"Any attacker who reads this repository's source code can sign governance proposals.\n" +
|
|
67
|
+
"DO NOT use this deployment for any real-value or production purpose.\n" +
|
|
68
|
+
"Rotate to freshly generated keys before any non-test use.\n\n");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
50
71
|
//# sourceMappingURL=defaults.js.map
|
package/dist/lib/defaults.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/lib/defaults.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/lib/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAEzD,uGAAuG;AACvG,uGAAuG;AACvG,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,QAAQ,EACN,oEAAoE;IACtE,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,oEAAoE;IACtE,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EACJ,oEAAoE;IACtE,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,YAAY,EAAE;QACZ,MAAM,EACJ,oEAAoE;QACtE,KAAK,EAAE,CAAC;KACT;IACD,iBAAiB,EAAE;QACjB,MAAM,EACJ,oEAAoE;QACtE,KAAK,EAAE,CAAC;KACT;IACD,cAAc,EAAE;QACd,MAAM,EACJ,oEAAoE;QACtE,KAAK,EAAE,CAAC;KACT;IACD,mBAAmB,EAAE;QACnB,MAAM,EACJ,oEAAoE;QACtE,KAAK,EAAE,CAAC;KACT;CACF,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EACJ,oEAAoE;IACtE,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,yEAAyE;AACzE,0EAA0E;AAC1E,8BAA8B;AAC9B,MAAM,CAAC,MAAM,0BAA0B,GAAiB;IACtD,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtN,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtN,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtN,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtN,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACvN,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAEpD,uFAAuF;AACvF,8FAA8F;AAC9F,MAAM,qBAAqB,GAAiB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC7E,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAC/B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CACnC,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACtC,cAAc,CAAC,IAAI,CACjB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACrE,CACF,CAAC;IACF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC;YACtC,kFAAkF;YAClF,uFAAuF;YACvF,wEAAwE;YACxE,+DAA+D,CAChE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/lib/proposals.d.ts
CHANGED
|
@@ -60,6 +60,6 @@ export declare function countYes(votes: ProposalVote[]): number;
|
|
|
60
60
|
export declare function isReviewWindowPassed(proposal: Proposal): boolean;
|
|
61
61
|
export declare function isVoteApproved(proposal: Proposal): boolean;
|
|
62
62
|
export declare function isReadyToExecute(proposal: Proposal): boolean;
|
|
63
|
-
export declare function signingMessage(proposal: Proposal): Uint8Array;
|
|
63
|
+
export declare function signingMessage(proposal: Proposal, oldRoot: Uint8Array, newRoot: Uint8Array, reviewWindowEndMs: bigint): Uint8Array;
|
|
64
64
|
export {};
|
|
65
65
|
//# sourceMappingURL=proposals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposals.d.ts","sourceRoot":"","sources":["../../src/lib/proposals.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,QAAQ,GACR,UAAU,GACV,UAAU,GACV,UAAU,CAAC;AACf,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAClD,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,MAAM,GACN,MAAM,GACN,WAAW,GACX,OAAO,CAAC;AACZ,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,gBAAgB,QAAsB,CAAC;AAEpD,wBAAgB,eAAe,IAAI,MAAM,CAIxC;
|
|
1
|
+
{"version":3,"file":"proposals.d.ts","sourceRoot":"","sources":["../../src/lib/proposals.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/proposals.js
CHANGED
|
@@ -13,7 +13,13 @@ export function getProposalsDir() {
|
|
|
13
13
|
return dir;
|
|
14
14
|
}
|
|
15
15
|
function proposalPath(dir, proposalIdHash) {
|
|
16
|
-
|
|
16
|
+
const short = proposalIdHash.startsWith("0x")
|
|
17
|
+
? proposalIdHash.slice(2, 14)
|
|
18
|
+
: proposalIdHash.slice(0, 12);
|
|
19
|
+
if (!/^[0-9a-f]{12}$/i.test(short)) {
|
|
20
|
+
throw new Error(`Invalid proposalIdHash format: "${proposalIdHash}" — expected 0x-prefixed hex.`);
|
|
21
|
+
}
|
|
22
|
+
return join(dir, `${short}.json`);
|
|
17
23
|
}
|
|
18
24
|
export function saveProposal(proposal) {
|
|
19
25
|
const dir = getProposalsDir();
|
|
@@ -54,10 +60,23 @@ export function loadProposal(id) {
|
|
|
54
60
|
}
|
|
55
61
|
export function listProposals() {
|
|
56
62
|
const dir = getProposalsDir();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
const results = [];
|
|
64
|
+
for (const f of readdirSync(dir).filter((f) => f.endsWith(".json"))) {
|
|
65
|
+
try {
|
|
66
|
+
const p = validateProposalSchema(JSON.parse(readFileSync(join(dir, f), "utf8")));
|
|
67
|
+
// Auto-reject proposals whose review window has passed without reaching the vote threshold.
|
|
68
|
+
if ((p.status === "pending-review" || p.status === "voting") &&
|
|
69
|
+
isReviewWindowPassed(p) && !isVoteApproved(p)) {
|
|
70
|
+
p.status = "rejected";
|
|
71
|
+
saveProposal(p);
|
|
72
|
+
}
|
|
73
|
+
results.push(p);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
process.stderr.write(`Warning: skipping malformed proposal file: ${f}\n`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return results.sort((a, b) => a.submittedAt.localeCompare(b.submittedAt));
|
|
61
80
|
}
|
|
62
81
|
// Canonical representation used as input to proposalIdHash.
|
|
63
82
|
function proposalCanonical(fields) {
|
|
@@ -111,13 +130,25 @@ export function isReadyToExecute(proposal) {
|
|
|
111
130
|
isVoteApproved(proposal) &&
|
|
112
131
|
proposal.signatures.length >= SIG_THRESHOLD);
|
|
113
132
|
}
|
|
114
|
-
// The message each governance signer signs (
|
|
115
|
-
|
|
133
|
+
// The message each governance signer signs (GOV1 v3, 136-byte preimage).
|
|
134
|
+
// proposal_id_hash(32) || vote_digest_hash(32) || old_root(32) || new_root(32) || review_window_end_ms(8 LE u64)
|
|
135
|
+
export function signingMessage(proposal, oldRoot, newRoot, reviewWindowEndMs) {
|
|
136
|
+
if (oldRoot.length !== 32)
|
|
137
|
+
throw new Error(`oldRoot must be 32 bytes, got ${oldRoot.length}`);
|
|
138
|
+
if (newRoot.length !== 32)
|
|
139
|
+
throw new Error(`newRoot must be 32 bytes, got ${newRoot.length}`);
|
|
116
140
|
const proposalBytes = hexToBytes(proposal.proposalIdHash);
|
|
117
141
|
const voteBytes = hexToBytes(proposal.voteDigestHash);
|
|
118
|
-
const combined = new Uint8Array(
|
|
142
|
+
const combined = new Uint8Array(136);
|
|
119
143
|
combined.set(proposalBytes, 0);
|
|
120
|
-
combined.set(voteBytes,
|
|
144
|
+
combined.set(voteBytes, 32);
|
|
145
|
+
combined.set(oldRoot, 64);
|
|
146
|
+
combined.set(newRoot, 96);
|
|
147
|
+
let ms = reviewWindowEndMs;
|
|
148
|
+
for (let i = 0; i < 8; i++) {
|
|
149
|
+
combined[128 + i] = Number(ms & 0xffn);
|
|
150
|
+
ms >>= 8n;
|
|
151
|
+
}
|
|
121
152
|
return ckbBlake2b(combined);
|
|
122
153
|
}
|
|
123
154
|
//# sourceMappingURL=proposals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../src/lib/proposals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAqDnD,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAEhE,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;IAC1D,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,cAAsB;IACvD,
|
|
1
|
+
{"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../src/lib/proposals.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/registry.js
CHANGED
|
@@ -10,7 +10,7 @@ import { findLiveRegistryCell } from "./rpc.js";
|
|
|
10
10
|
// For custom registries, callers always pass an explicit --registry-tx and this falls through
|
|
11
11
|
// to the configured outpoint immediately.
|
|
12
12
|
export async function resolveRegistryOutpoint(rpcUrl, registryTx, registryIndex) {
|
|
13
|
-
if (rpcUrl === TESTNET_RPC_URL && registryTx === TESTNET_REGISTRY_CELL.txHash) {
|
|
13
|
+
if (rpcUrl.replace(/\/$/, "") === TESTNET_RPC_URL && registryTx === TESTNET_REGISTRY_CELL.txHash) {
|
|
14
14
|
try {
|
|
15
15
|
const found = await findLiveRegistryCell(rpcUrl, TESTNET_REGISTRY_SPEC);
|
|
16
16
|
return { txHash: found.txHash, index: found.index };
|
package/dist/lib/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,oDAAoD;AACpD,EAAE;AACF,6FAA6F;AAC7F,+FAA+F;AAC/F,2FAA2F;AAC3F,8DAA8D;AAC9D,EAAE;AACF,8FAA8F;AAC9F,0CAA0C;AAC1C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,UAAkB,EAClB,aAAqB;IAErB,IAAI,MAAM,KAAK,eAAe,IAAI,UAAU,KAAK,qBAAqB,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,oDAAoD;AACpD,EAAE;AACF,6FAA6F;AAC7F,+FAA+F;AAC/F,2FAA2F;AAC3F,8DAA8D;AAC9D,EAAE;AACF,8FAA8F;AAC9F,0CAA0C;AAC1C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,UAAkB,EAClB,aAAqB;IAErB,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,eAAe,IAAI,UAAU,KAAK,qBAAqB,CAAC,MAAM,EAAE,CAAC;QACjG,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YACxE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AACtD,CAAC"}
|
package/dist/lib/rpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA2E1D,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACrE;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CA+BnB;AAOD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA2C1D"}
|
package/dist/lib/rpc.js
CHANGED
|
@@ -6,7 +6,18 @@ function rpcTimeoutMs() {
|
|
|
6
6
|
const parsed = Number.parseInt(raw, 10);
|
|
7
7
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_RPC_TIMEOUT_MS;
|
|
8
8
|
}
|
|
9
|
+
function assertHttps(url, method) {
|
|
10
|
+
if (!url.startsWith("https://") &&
|
|
11
|
+
!url.startsWith("http://localhost") &&
|
|
12
|
+
!url.startsWith("http://127.0.0.1") &&
|
|
13
|
+
!url.startsWith("http://[::1]")) {
|
|
14
|
+
throw new Error(`RPC ${method} requires HTTPS for remote URLs (got: ${url}). ` +
|
|
15
|
+
"Registry data integrity cannot be guaranteed over plaintext HTTP. " +
|
|
16
|
+
"Use an https:// URL or a local node (localhost / 127.0.0.1 / [::1]).");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
9
19
|
async function call(url, method, params) {
|
|
20
|
+
assertHttps(url, method);
|
|
10
21
|
const timeoutMs = rpcTimeoutMs();
|
|
11
22
|
const controller = new AbortController();
|
|
12
23
|
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
package/dist/lib/rpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/witness.d.ts
CHANGED
|
@@ -5,7 +5,10 @@ export interface Gov1BindingParams {
|
|
|
5
5
|
oldRoot: Uint8Array;
|
|
6
6
|
newRoot: Uint8Array;
|
|
7
7
|
}
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function buildGov1WitnessV3(params: Gov1BindingParams & {
|
|
9
|
+
reviewWindowEndMs: bigint;
|
|
10
|
+
}): Uint8Array;
|
|
11
|
+
export declare function encodeAbsoluteTimestampSince(timestampMs: bigint): string;
|
|
9
12
|
export declare function buildGovernanceSigWitness(signers: Array<{
|
|
10
13
|
index: number;
|
|
11
14
|
sig: Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../../src/lib/witness.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEvD;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,UAAU,CAAC;IAC3B,cAAc,EAAE,UAAU,CAAC;IAC3B,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../../src/lib/witness.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEvD;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,UAAU,CAAC;IAC3B,cAAc,EAAE,UAAU,CAAC;IAC3B,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;CACrB;AAKD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,GAAG;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACxD,UAAU,CAyBZ;AAID,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKxE;AAID,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,GAAG,UAAU,CAiBxG;AAmBD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,GAAG,UAAU,CAqBb;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,CAAC,GAAG,CAAC,GAAG,CAAK,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,CAUlG"}
|
package/dist/lib/witness.js
CHANGED
|
@@ -3,9 +3,10 @@ const CKB_PERSONALIZATION = new TextEncoder().encode("ckb-default-hash");
|
|
|
3
3
|
export function ckbBlake2b(data) {
|
|
4
4
|
return blake2b(data, { personalization: CKB_PERSONALIZATION, dkLen: 32 });
|
|
5
5
|
}
|
|
6
|
-
// GOV1
|
|
7
|
-
//
|
|
8
|
-
|
|
6
|
+
// GOV1 v3 — 141 bytes. governance-lock verifies that the input's `since` field encodes an
|
|
7
|
+
// absolute median-time-past timestamp >= reviewWindowEndMs, enforcing the review window at
|
|
8
|
+
// consensus level. reviewWindowEndMs is included in the signing preimage to prevent tampering.
|
|
9
|
+
export function buildGov1WitnessV3(params) {
|
|
9
10
|
for (const [name, val] of [
|
|
10
11
|
["proposalIdHash", params.proposalIdHash],
|
|
11
12
|
["voteDigestHash", params.voteDigestHash],
|
|
@@ -15,14 +16,14 @@ export function buildGov1WitnessV2(params) {
|
|
|
15
16
|
if (val.length !== 32)
|
|
16
17
|
throw new Error(`${name} must be exactly 32 bytes, got ${val.length}`);
|
|
17
18
|
}
|
|
18
|
-
// 4 magic + 1 version + 32*4 hashes =
|
|
19
|
-
const buf = new Uint8Array(
|
|
19
|
+
// 4 magic + 1 version + 32*4 hashes + 8 reviewWindowEndMs = 141 bytes
|
|
20
|
+
const buf = new Uint8Array(141);
|
|
20
21
|
let off = 0;
|
|
21
22
|
buf[off++] = 0x47;
|
|
22
23
|
buf[off++] = 0x4f;
|
|
23
24
|
buf[off++] = 0x56;
|
|
24
25
|
buf[off++] = 0x31; // GOV1
|
|
25
|
-
buf[off++] =
|
|
26
|
+
buf[off++] = 0x03; // version 3
|
|
26
27
|
buf.set(params.proposalIdHash, off);
|
|
27
28
|
off += 32;
|
|
28
29
|
buf.set(params.voteDigestHash, off);
|
|
@@ -31,8 +32,22 @@ export function buildGov1WitnessV2(params) {
|
|
|
31
32
|
off += 32;
|
|
32
33
|
buf.set(params.newRoot, off);
|
|
33
34
|
off += 32;
|
|
35
|
+
// reviewWindowEndMs as LE u64
|
|
36
|
+
let ms = params.reviewWindowEndMs;
|
|
37
|
+
for (let i = 0; i < 8; i++) {
|
|
38
|
+
buf[off++] = Number(ms & 0xffn);
|
|
39
|
+
ms >>= 8n;
|
|
40
|
+
}
|
|
34
41
|
return buf;
|
|
35
42
|
}
|
|
43
|
+
// Encodes a Unix timestamp (milliseconds) as a CKB absolute median-time-past `since` value.
|
|
44
|
+
// Format: bit62=1 (timestamp metric), bit63=0 (absolute), bits55-0 = timestamp_ms.
|
|
45
|
+
export function encodeAbsoluteTimestampSince(timestampMs) {
|
|
46
|
+
const TIMESTAMP_FLAG = 0x4000000000000000n;
|
|
47
|
+
const VALUE_MASK = 0x00ffffffffffffffn;
|
|
48
|
+
const since = TIMESTAMP_FLAG | (timestampMs & VALUE_MASK);
|
|
49
|
+
return `0x${since.toString(16).padStart(16, "0")}`;
|
|
50
|
+
}
|
|
36
51
|
// Builds the WitnessArgs.lock content for governance transactions (v2).
|
|
37
52
|
// Format: signer_count(1) | [signer_index(1) + r+s+v(65)] * N
|
|
38
53
|
export function buildGovernanceSigWitness(signers) {
|
|
@@ -90,8 +105,9 @@ export function buildWitnessArgs(params) {
|
|
|
90
105
|
buf.set(outputTypeOpt, offOutputType);
|
|
91
106
|
return buf;
|
|
92
107
|
}
|
|
93
|
-
//
|
|
94
|
-
//
|
|
108
|
+
// FOR UNIT TESTING ONLY — generates structurally-valid but cryptographically fake signatures.
|
|
109
|
+
// governance-lock verifies secp256k1 signatures on-chain for GOV1 v3; these WILL be rejected by the chain.
|
|
110
|
+
// Never use in a real governance transaction. Only valid in test environments that mock the contract.
|
|
95
111
|
export function placeholderSigners(count = 3) {
|
|
96
112
|
return Array.from({ length: count }, (_, i) => ({
|
|
97
113
|
index: i,
|
package/dist/lib/witness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness.js","sourceRoot":"","sources":["../../src/lib/witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEzE,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,OAAO,OAAO,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5E,CAAC;AASD,
|
|
1
|
+
{"version":3,"file":"witness.js","sourceRoot":"","sources":["../../src/lib/witness.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckb-firewall/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "CLI for managing the CKB Transaction Firewall blacklist registry",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dev": "tsc --watch -p tsconfig.build.json"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@ckb-firewall/sdk": "^0.3.
|
|
25
|
+
"@ckb-firewall/sdk": "^0.3.3",
|
|
26
26
|
"@noble/curves": "^2.2.0",
|
|
27
27
|
"@noble/hashes": "^1.5.0",
|
|
28
28
|
"cfonts": "^3.3.0",
|