@brightchain/brightchain-lib 0.29.17 → 0.29.21

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 (59) hide show
  1. package/package.json +1 -1
  2. package/src/browser.d.ts +12 -0
  3. package/src/browser.d.ts.map +1 -1
  4. package/src/browser.js +16 -1
  5. package/src/browser.js.map +1 -1
  6. package/src/lib/errors/ledgerError.d.ts +7 -1
  7. package/src/lib/errors/ledgerError.d.ts.map +1 -1
  8. package/src/lib/errors/ledgerError.js +6 -0
  9. package/src/lib/errors/ledgerError.js.map +1 -1
  10. package/src/lib/interfaces/ledger/authorizedSigner.d.ts +17 -0
  11. package/src/lib/interfaces/ledger/authorizedSigner.d.ts.map +1 -0
  12. package/src/lib/interfaces/ledger/authorizedSigner.js +11 -0
  13. package/src/lib/interfaces/ledger/authorizedSigner.js.map +1 -0
  14. package/src/lib/interfaces/ledger/governanceAction.d.ts +46 -0
  15. package/src/lib/interfaces/ledger/governanceAction.d.ts.map +1 -0
  16. package/src/lib/interfaces/ledger/governanceAction.js +22 -0
  17. package/src/lib/interfaces/ledger/governanceAction.js.map +1 -0
  18. package/src/lib/interfaces/ledger/governancePayload.d.ts +19 -0
  19. package/src/lib/interfaces/ledger/governancePayload.d.ts.map +1 -0
  20. package/src/lib/interfaces/ledger/governancePayload.js +11 -0
  21. package/src/lib/interfaces/ledger/governancePayload.js.map +1 -0
  22. package/src/lib/interfaces/ledger/index.d.ts +8 -0
  23. package/src/lib/interfaces/ledger/index.d.ts.map +1 -1
  24. package/src/lib/interfaces/ledger/index.js +10 -0
  25. package/src/lib/interfaces/ledger/index.js.map +1 -1
  26. package/src/lib/interfaces/ledger/quorumPolicy.d.ts +19 -0
  27. package/src/lib/interfaces/ledger/quorumPolicy.d.ts.map +1 -0
  28. package/src/lib/interfaces/ledger/quorumPolicy.js +18 -0
  29. package/src/lib/interfaces/ledger/quorumPolicy.js.map +1 -0
  30. package/src/lib/interfaces/ledger/signerRole.d.ts +14 -0
  31. package/src/lib/interfaces/ledger/signerRole.d.ts.map +1 -0
  32. package/src/lib/interfaces/ledger/signerRole.js +18 -0
  33. package/src/lib/interfaces/ledger/signerRole.js.map +1 -0
  34. package/src/lib/interfaces/ledger/signerStatus.d.ts +15 -0
  35. package/src/lib/interfaces/ledger/signerStatus.d.ts.map +1 -0
  36. package/src/lib/interfaces/ledger/signerStatus.js +19 -0
  37. package/src/lib/interfaces/ledger/signerStatus.js.map +1 -0
  38. package/src/lib/interfaces/ledger/validationResult.d.ts +1 -1
  39. package/src/lib/interfaces/ledger/validationResult.d.ts.map +1 -1
  40. package/src/lib/ledger/authorizedSignerSet.d.ts +47 -0
  41. package/src/lib/ledger/authorizedSignerSet.d.ts.map +1 -0
  42. package/src/lib/ledger/authorizedSignerSet.js +287 -0
  43. package/src/lib/ledger/authorizedSignerSet.js.map +1 -0
  44. package/src/lib/ledger/browserSignatureVerifier.d.ts +18 -0
  45. package/src/lib/ledger/browserSignatureVerifier.d.ts.map +1 -0
  46. package/src/lib/ledger/browserSignatureVerifier.js +35 -0
  47. package/src/lib/ledger/browserSignatureVerifier.js.map +1 -0
  48. package/src/lib/ledger/governancePayloadSerializer.d.ts +70 -0
  49. package/src/lib/ledger/governancePayloadSerializer.d.ts.map +1 -0
  50. package/src/lib/ledger/governancePayloadSerializer.js +499 -0
  51. package/src/lib/ledger/governancePayloadSerializer.js.map +1 -0
  52. package/src/lib/ledger/ledger.d.ts +58 -8
  53. package/src/lib/ledger/ledger.d.ts.map +1 -1
  54. package/src/lib/ledger/ledger.js +217 -45
  55. package/src/lib/ledger/ledger.js.map +1 -1
  56. package/src/lib/ledger/ledgerChainValidator.d.ts +30 -4
  57. package/src/lib/ledger/ledgerChainValidator.d.ts.map +1 -1
  58. package/src/lib/ledger/ledgerChainValidator.js +155 -4
  59. package/src/lib/ledger/ledgerChainValidator.js.map +1 -1
@@ -1,17 +1,21 @@
1
1
  "use strict";
2
2
  /**
3
3
  * @fileoverview LedgerChainValidator — validates chain integrity by walking
4
- * entries and checking hashes, signatures, and sequence links.
4
+ * entries and checking hashes, signatures, authorization, and governance
5
+ * constraints.
5
6
  *
6
7
  * Validation does not throw — it returns an IValidationResult with error
7
8
  * descriptors. All errors are collected (validation does not stop at the
8
9
  * first error).
9
10
  *
10
11
  * @see Design: Block Chain Ledger — LedgerChainValidator
11
- * @see Requirements 3.2, 3.3, 4.3–4.6, 8.1–8.4
12
+ * @see Requirements 3.2, 3.3, 4.3–4.6, 8.1–8.4, 12.6–12.7, 13.6–13.7,
13
+ * 14.5, 15.6, 16.1–16.6
12
14
  */
13
15
  Object.defineProperty(exports, "__esModule", { value: true });
14
16
  exports.LedgerChainValidator = void 0;
17
+ const authorizedSignerSet_1 = require("./authorizedSignerSet");
18
+ const governancePayloadSerializer_1 = require("./governancePayloadSerializer");
15
19
  /**
16
20
  * Validates ledger chain integrity by walking entries and verifying:
17
21
  * - Contiguous sequence numbers
@@ -19,25 +23,36 @@ exports.LedgerChainValidator = void 0;
19
23
  * - Hash-chain links (previousEntryHash)
20
24
  * - EntryHash recomputation
21
25
  * - Signature verification
26
+ * - Authorization (signer is in the authorized set)
27
+ * - Governance constraints (admin role, quorum, safety)
22
28
  */
23
29
  class LedgerChainValidator {
24
30
  serializer;
25
31
  signatureVerifier;
26
- constructor(serializer, signatureVerifier) {
32
+ governanceSerializer;
33
+ constructor(serializer, signatureVerifier, governanceSerializer) {
27
34
  this.serializer = serializer;
28
35
  this.signatureVerifier = signatureVerifier;
36
+ this.governanceSerializer = governanceSerializer;
29
37
  }
30
38
  /**
31
39
  * Validate the entire chain from genesis to head.
32
40
  *
33
41
  * Expects entries ordered by sequenceNumber starting from 0.
34
42
  * Returns { isValid: true, entriesChecked: 0, errors: [] } for an empty chain.
43
+ *
44
+ * When a governanceSerializer is provided, also validates:
45
+ * - Genesis entry initializes the signer set
46
+ * - Each entry's signer is authorized at that chain position
47
+ * - Governance entries have admin role and satisfy quorum
48
+ * - Governance actions pass safety constraints
35
49
  */
36
50
  validateAll(entries) {
37
51
  if (entries.length === 0) {
38
52
  return { isValid: true, entriesChecked: 0, errors: [] };
39
53
  }
40
54
  const errors = [];
55
+ let signerSet = null;
41
56
  for (let i = 0; i < entries.length; i++) {
42
57
  const entry = entries[i];
43
58
  const expectedSeq = i;
@@ -58,6 +73,10 @@ class LedgerChainValidator {
58
73
  message: 'Genesis entry (sequenceNumber 0) must have null previousEntryHash',
59
74
  });
60
75
  }
76
+ // Initialize signer set from genesis if governance is enabled
77
+ if (this.governanceSerializer) {
78
+ signerSet = this.initSignerSetFromGenesis(entry, errors);
79
+ }
61
80
  }
62
81
  else {
63
82
  // Non-genesis: previousEntryHash must equal preceding entry's entryHash
@@ -70,6 +89,10 @@ class LedgerChainValidator {
70
89
  message: `previousEntryHash does not match preceding entry's entryHash at sequenceNumber ${entry.sequenceNumber}`,
71
90
  });
72
91
  }
92
+ // Validate authorization and governance for non-genesis entries
93
+ if (signerSet && this.governanceSerializer) {
94
+ this.validateEntryAuthorization(entry, signerSet, errors);
95
+ }
73
96
  }
74
97
  // Recompute entryHash and verify
75
98
  this.verifyEntryHash(entry, errors);
@@ -88,13 +111,16 @@ class LedgerChainValidator {
88
111
  * @param entries - The sub-range of entries to validate (ordered by sequenceNumber).
89
112
  * @param predecessor - The entry immediately before the sub-range, or null if
90
113
  * the sub-range starts at genesis.
114
+ * @param signerSetAtPredecessor - Optional AuthorizedSignerSet state at the predecessor
115
+ * for governance validation of the sub-range.
91
116
  */
92
- validateRange(entries, predecessor) {
117
+ validateRange(entries, predecessor, signerSetAtPredecessor) {
93
118
  if (entries.length === 0) {
94
119
  return { isValid: true, entriesChecked: 0, errors: [] };
95
120
  }
96
121
  const errors = [];
97
122
  const startSeq = predecessor !== null ? predecessor.sequenceNumber + 1 : 0;
123
+ let signerSet = signerSetAtPredecessor?.clone() ?? null;
98
124
  for (let i = 0; i < entries.length; i++) {
99
125
  const entry = entries[i];
100
126
  const expectedSeq = startSeq + i;
@@ -127,6 +153,10 @@ class LedgerChainValidator {
127
153
  message: 'Genesis entry (sequenceNumber 0) must have null previousEntryHash',
128
154
  });
129
155
  }
156
+ // Initialize signer set from genesis if governance is enabled
157
+ if (this.governanceSerializer && !signerSet) {
158
+ signerSet = this.initSignerSetFromGenesis(entry, errors);
159
+ }
130
160
  }
131
161
  }
132
162
  else {
@@ -141,6 +171,12 @@ class LedgerChainValidator {
141
171
  });
142
172
  }
143
173
  }
174
+ // Validate authorization for non-genesis entries
175
+ if (i > 0 || predecessor !== null) {
176
+ if (signerSet && this.governanceSerializer) {
177
+ this.validateEntryAuthorization(entry, signerSet, errors);
178
+ }
179
+ }
144
180
  // Recompute entryHash and verify
145
181
  this.verifyEntryHash(entry, errors);
146
182
  // Verify signature
@@ -153,6 +189,121 @@ class LedgerChainValidator {
153
189
  };
154
190
  }
155
191
  // ── private helpers ──────────────────────────────────────────────────
192
+ /**
193
+ * Initialize the AuthorizedSignerSet from a genesis entry.
194
+ * Returns the signer set, or null if the genesis is not a valid governance payload.
195
+ */
196
+ initSignerSetFromGenesis(entry, errors) {
197
+ if (!this.governanceSerializer)
198
+ return null;
199
+ if (!governancePayloadSerializer_1.GovernancePayloadSerializer.isGovernancePayload(entry.payload)) {
200
+ errors.push({
201
+ sequenceNumber: entry.sequenceNumber,
202
+ errorType: 'invalid_governance_payload',
203
+ message: 'Genesis entry must be a governance genesis payload',
204
+ });
205
+ return null;
206
+ }
207
+ try {
208
+ const parsed = this.governanceSerializer.deserialize(entry.payload);
209
+ if (!parsed.genesis) {
210
+ errors.push({
211
+ sequenceNumber: entry.sequenceNumber,
212
+ errorType: 'invalid_governance_payload',
213
+ message: 'Genesis entry must use genesis subtype',
214
+ });
215
+ return null;
216
+ }
217
+ const signerSet = new authorizedSignerSet_1.AuthorizedSignerSet(parsed.genesis.signers, parsed.genesis.quorumPolicy);
218
+ // Verify genesis signer is authorized
219
+ if (!signerSet.canAppend(entry.signerPublicKey)) {
220
+ errors.push({
221
+ sequenceNumber: entry.sequenceNumber,
222
+ errorType: 'unauthorized_signer',
223
+ message: 'Genesis entry signer is not in the initial authorized set',
224
+ });
225
+ }
226
+ return signerSet;
227
+ }
228
+ catch {
229
+ errors.push({
230
+ sequenceNumber: entry.sequenceNumber,
231
+ errorType: 'invalid_governance_payload',
232
+ message: 'Failed to deserialize genesis governance payload',
233
+ });
234
+ return null;
235
+ }
236
+ }
237
+ /**
238
+ * Validate authorization and governance constraints for a non-genesis entry.
239
+ * If the entry is a governance payload, also validates admin role, quorum,
240
+ * and applies actions to the signer set.
241
+ */
242
+ validateEntryAuthorization(entry, signerSet, errors) {
243
+ const isGovernance = this.governanceSerializer &&
244
+ governancePayloadSerializer_1.GovernancePayloadSerializer.isGovernancePayload(entry.payload);
245
+ if (isGovernance) {
246
+ // Governance entries require active admin
247
+ if (!signerSet.isActiveAdmin(entry.signerPublicKey)) {
248
+ errors.push({
249
+ sequenceNumber: entry.sequenceNumber,
250
+ errorType: 'unauthorized_governance',
251
+ message: 'Governance entry signer is not an active admin',
252
+ });
253
+ return;
254
+ }
255
+ // Parse and validate governance payload
256
+ try {
257
+ const parsed = this.governanceSerializer.deserialize(entry.payload);
258
+ // Verify quorum from cosignatures + primary signer
259
+ const signerKeys = [
260
+ entry.signerPublicKey,
261
+ ...parsed.cosignatures.map((c) => c.signerPublicKey),
262
+ ];
263
+ if (!signerSet.verifyQuorum(signerKeys)) {
264
+ errors.push({
265
+ sequenceNumber: entry.sequenceNumber,
266
+ errorType: 'quorum_not_met',
267
+ message: `Quorum not met for governance entry at sequenceNumber ${entry.sequenceNumber}`,
268
+ });
269
+ }
270
+ // Apply actions to signer set (validates safety constraints)
271
+ for (const action of parsed.actions) {
272
+ try {
273
+ signerSet.applyAction(action);
274
+ }
275
+ catch (e) {
276
+ errors.push({
277
+ sequenceNumber: entry.sequenceNumber,
278
+ errorType: 'governance_safety_violation',
279
+ message: `Governance action failed: ${e instanceof Error ? e.message : String(e)}`,
280
+ });
281
+ }
282
+ }
283
+ }
284
+ catch (e) {
285
+ // Only push if not already a LedgerValidationError we added
286
+ if (!(e instanceof Error) ||
287
+ !e.message.includes('Governance action failed')) {
288
+ errors.push({
289
+ sequenceNumber: entry.sequenceNumber,
290
+ errorType: 'invalid_governance_payload',
291
+ message: `Failed to parse governance payload: ${e instanceof Error ? e.message : String(e)}`,
292
+ });
293
+ }
294
+ }
295
+ }
296
+ else {
297
+ // Regular entry: signer must be authorized to append
298
+ if (!signerSet.canAppend(entry.signerPublicKey)) {
299
+ errors.push({
300
+ sequenceNumber: entry.sequenceNumber,
301
+ errorType: 'unauthorized_signer',
302
+ message: `Signer is not authorized to append at sequenceNumber ${entry.sequenceNumber}`,
303
+ });
304
+ }
305
+ }
306
+ }
156
307
  /**
157
308
  * Recompute the entryHash for the given entry and compare it to the
158
309
  * stored entryHash. Pushes an error if they don't match.
@@ -1 +1 @@
1
- {"version":3,"file":"ledgerChainValidator.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledgerChainValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledgerChainValidator.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledgerChainValidator.ts"],"names":[],"mappings":"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"}