@brightchain/brightchain-lib 0.29.21 → 0.29.22

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 (39) hide show
  1. package/package.json +1 -1
  2. package/src/lib/errors/ledgerError.d.ts +4 -1
  3. package/src/lib/errors/ledgerError.d.ts.map +1 -1
  4. package/src/lib/errors/ledgerError.js +3 -0
  5. package/src/lib/errors/ledgerError.js.map +1 -1
  6. package/src/lib/interfaces/ledger/consistencyProof.d.ts +22 -0
  7. package/src/lib/interfaces/ledger/consistencyProof.d.ts.map +1 -0
  8. package/src/lib/interfaces/ledger/consistencyProof.js +12 -0
  9. package/src/lib/interfaces/ledger/consistencyProof.js.map +1 -0
  10. package/src/lib/interfaces/ledger/index.d.ts +4 -0
  11. package/src/lib/interfaces/ledger/index.d.ts.map +1 -1
  12. package/src/lib/interfaces/ledger/index.js +4 -1
  13. package/src/lib/interfaces/ledger/index.js.map +1 -1
  14. package/src/lib/interfaces/ledger/merkleProof.d.ts +42 -0
  15. package/src/lib/interfaces/ledger/merkleProof.d.ts.map +1 -0
  16. package/src/lib/interfaces/ledger/merkleProof.js +23 -0
  17. package/src/lib/interfaces/ledger/merkleProof.js.map +1 -0
  18. package/src/lib/interfaces/ledger/proofVerificationResult.d.ts +19 -0
  19. package/src/lib/interfaces/ledger/proofVerificationResult.d.ts.map +1 -0
  20. package/src/lib/interfaces/ledger/proofVerificationResult.js +12 -0
  21. package/src/lib/interfaces/ledger/proofVerificationResult.js.map +1 -0
  22. package/src/lib/interfaces/ledger/validationResult.d.ts +1 -1
  23. package/src/lib/interfaces/ledger/validationResult.d.ts.map +1 -1
  24. package/src/lib/ledger/incrementalMerkleTree.d.ts +179 -0
  25. package/src/lib/ledger/incrementalMerkleTree.d.ts.map +1 -0
  26. package/src/lib/ledger/incrementalMerkleTree.js +372 -0
  27. package/src/lib/ledger/incrementalMerkleTree.js.map +1 -0
  28. package/src/lib/ledger/ledger.d.ts +91 -1
  29. package/src/lib/ledger/ledger.d.ts.map +1 -1
  30. package/src/lib/ledger/ledger.js +363 -10
  31. package/src/lib/ledger/ledger.js.map +1 -1
  32. package/src/lib/ledger/ledgerChainValidator.d.ts +48 -2
  33. package/src/lib/ledger/ledgerChainValidator.d.ts.map +1 -1
  34. package/src/lib/ledger/ledgerChainValidator.js +145 -2
  35. package/src/lib/ledger/ledgerChainValidator.js.map +1 -1
  36. package/src/lib/ledger/proofSerializer.d.ts +60 -0
  37. package/src/lib/ledger/proofSerializer.d.ts.map +1 -0
  38. package/src/lib/ledger/proofSerializer.js +206 -0
  39. package/src/lib/ledger/proofSerializer.js.map +1 -0
@@ -14,8 +14,11 @@
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.LedgerChainValidator = void 0;
17
+ const checksum_service_1 = require("../services/checksum.service");
17
18
  const authorizedSignerSet_1 = require("./authorizedSignerSet");
18
19
  const governancePayloadSerializer_1 = require("./governancePayloadSerializer");
20
+ const incrementalMerkleTree_1 = require("./incrementalMerkleTree");
21
+ const ledger_1 = require("./ledger");
19
22
  /**
20
23
  * Validates ledger chain integrity by walking entries and verifying:
21
24
  * - Contiguous sequence numbers
@@ -46,8 +49,19 @@ class LedgerChainValidator {
46
49
  * - Each entry's signer is authorized at that chain position
47
50
  * - Governance entries have admin role and satisfy quorum
48
51
  * - Governance actions pass safety constraints
52
+ *
53
+ * When a merkleRoot is provided, also validates:
54
+ * - Reconstructs the Merkle tree from entry hashes
55
+ * - Verifies the computed root matches the provided Merkle root
56
+ *
57
+ * @param entries - The chain entries to validate
58
+ * @param merkleRoot - Optional Merkle root to verify against. When provided,
59
+ * the validator reconstructs the Merkle tree from entry hashes and compares
60
+ * the computed root to this value.
61
+ *
62
+ * @see Requirements 11.1, 11.3, 11.4
49
63
  */
50
- validateAll(entries) {
64
+ validateAll(entries, merkleRoot) {
51
65
  if (entries.length === 0) {
52
66
  return { isValid: true, entriesChecked: 0, errors: [] };
53
67
  }
@@ -99,6 +113,20 @@ class LedgerChainValidator {
99
113
  // Verify signature
100
114
  this.verifySignature(entry, errors);
101
115
  }
116
+ // Merkle root verification: reconstruct tree from entry hashes and compare
117
+ if (merkleRoot !== undefined) {
118
+ const checksumService = new checksum_service_1.ChecksumService();
119
+ const entryHashes = entries.map((e) => e.entryHash);
120
+ const computedTree = incrementalMerkleTree_1.IncrementalMerkleTree.fromLeaves(entryHashes, checksumService);
121
+ const computedRoot = computedTree.root;
122
+ if (!computedRoot.equals(merkleRoot)) {
123
+ errors.push({
124
+ sequenceNumber: entries[entries.length - 1].sequenceNumber,
125
+ errorType: 'merkle_root_mismatch',
126
+ message: 'Reconstructed Merkle root does not match the stored Merkle root',
127
+ });
128
+ }
129
+ }
102
130
  return {
103
131
  isValid: errors.length === 0,
104
132
  entriesChecked: entries.length,
@@ -113,8 +141,15 @@ class LedgerChainValidator {
113
141
  * the sub-range starts at genesis.
114
142
  * @param signerSetAtPredecessor - Optional AuthorizedSignerSet state at the predecessor
115
143
  * for governance validation of the sub-range.
144
+ * @param merkleRoot - Optional Merkle root to verify entry hashes against.
145
+ * When provided along with merkleProofs, each entry's entryHash is verified
146
+ * against its corresponding Merkle proof.
147
+ * @param merkleProofs - Optional array of Merkle proofs corresponding 1:1 with
148
+ * the entries array. Required for Merkle validation when merkleRoot is provided.
149
+ *
150
+ * @see Requirements 11.2
116
151
  */
117
- validateRange(entries, predecessor, signerSetAtPredecessor) {
152
+ validateRange(entries, predecessor, signerSetAtPredecessor, merkleRoot, merkleProofs) {
118
153
  if (entries.length === 0) {
119
154
  return { isValid: true, entriesChecked: 0, errors: [] };
120
155
  }
@@ -182,13 +217,121 @@ class LedgerChainValidator {
182
217
  // Verify signature
183
218
  this.verifySignature(entry, errors);
184
219
  }
220
+ // Merkle proof verification: when both merkleRoot and merkleProofs are provided,
221
+ // verify each entry's entryHash is consistent with its Merkle proof.
222
+ if (merkleRoot !== undefined && merkleProofs !== undefined) {
223
+ for (let i = 0; i < entries.length; i++) {
224
+ if (i < merkleProofs.length) {
225
+ const result = ledger_1.Ledger.verifyInclusionProof(merkleProofs[i], merkleRoot);
226
+ if (!result.isValid) {
227
+ errors.push({
228
+ sequenceNumber: entries[i].sequenceNumber,
229
+ errorType: 'merkle_root_mismatch',
230
+ message: `Merkle proof verification failed for entry at sequenceNumber ${entries[i].sequenceNumber}: ${result.error ?? 'unknown error'}`,
231
+ });
232
+ }
233
+ }
234
+ }
235
+ }
185
236
  return {
186
237
  isValid: errors.length === 0,
187
238
  entriesChecked: entries.length,
188
239
  errors,
189
240
  };
190
241
  }
242
+ /**
243
+ * Validate the entire chain in parallel by splitting into chunks and
244
+ * verifying each chunk concurrently via Promise.all.
245
+ *
246
+ * Produces the same validation result as sequential `validateAll()`:
247
+ * same `isValid`, same `entriesChecked`, same error types (though error
248
+ * ordering may differ).
249
+ *
250
+ * Hash verification and signature verification — the expensive operations —
251
+ * run in parallel across chunks. Governance validation is run as a separate
252
+ * sequential pass since it requires tracking the AuthorizedSignerSet state
253
+ * across the chain.
254
+ *
255
+ * @param entries - The chain entries to validate (ordered by sequenceNumber from 0)
256
+ * @param merkleRoot - Optional Merkle root to verify against
257
+ * @returns Promise resolving to the same IValidationResult as validateAll()
258
+ *
259
+ * @see Requirements 17.1, 17.2, 17.3
260
+ */
261
+ async validateAllParallel(entries, merkleRoot) {
262
+ if (entries.length === 0) {
263
+ return { isValid: true, entriesChecked: 0, errors: [] };
264
+ }
265
+ // Determine chunk count: 2-4 chunks based on entry count
266
+ const chunkCount = Math.min(entries.length, entries.length <= 4 ? entries.length : Math.min(4, Math.max(2, Math.ceil(entries.length / 4))));
267
+ const chunkSize = Math.ceil(entries.length / chunkCount);
268
+ // Build chunk descriptors: each chunk has its entries and predecessor
269
+ const chunkTasks = [];
270
+ for (let i = 0; i < entries.length; i += chunkSize) {
271
+ const chunk = entries.slice(i, Math.min(i + chunkSize, entries.length));
272
+ const predecessor = i === 0 ? null : entries[i - 1];
273
+ chunkTasks.push({ chunk, predecessor });
274
+ }
275
+ // Run all chunk validations concurrently (without governance — that's sequential)
276
+ // Create a temporary validator without governance for the parallel pass
277
+ const noGovValidator = new LedgerChainValidator(this.serializer, this.signatureVerifier);
278
+ const chunkResults = await Promise.all(chunkTasks.map(({ chunk, predecessor }) => Promise.resolve(noGovValidator.validateRange(chunk, predecessor))));
279
+ // Merge chunk results
280
+ const allErrors = [];
281
+ let totalChecked = 0;
282
+ for (const result of chunkResults) {
283
+ allErrors.push(...result.errors);
284
+ totalChecked += result.entriesChecked;
285
+ }
286
+ // Governance validation: run sequentially if a governance serializer is present
287
+ if (this.governanceSerializer) {
288
+ const govResult = this.validateGovernanceSequential(entries);
289
+ allErrors.push(...govResult.errors);
290
+ }
291
+ // Merkle root verification: reconstruct tree from entry hashes and compare
292
+ if (merkleRoot !== undefined) {
293
+ const checksumService = new checksum_service_1.ChecksumService();
294
+ const entryHashes = entries.map((e) => e.entryHash);
295
+ const computedTree = incrementalMerkleTree_1.IncrementalMerkleTree.fromLeaves(entryHashes, checksumService);
296
+ const computedRoot = computedTree.root;
297
+ if (!computedRoot.equals(merkleRoot)) {
298
+ allErrors.push({
299
+ sequenceNumber: entries[entries.length - 1].sequenceNumber,
300
+ errorType: 'merkle_root_mismatch',
301
+ message: 'Reconstructed Merkle root does not match the stored Merkle root',
302
+ });
303
+ }
304
+ }
305
+ return {
306
+ isValid: allErrors.length === 0,
307
+ entriesChecked: totalChecked,
308
+ errors: allErrors,
309
+ };
310
+ }
191
311
  // ── private helpers ──────────────────────────────────────────────────
312
+ /**
313
+ * Run governance validation sequentially across the full chain.
314
+ * This is separated from the parallel chunk validation because governance
315
+ * requires tracking the AuthorizedSignerSet state across entries.
316
+ */
317
+ validateGovernanceSequential(entries) {
318
+ const errors = [];
319
+ let signerSet = null;
320
+ for (let i = 0; i < entries.length; i++) {
321
+ const entry = entries[i];
322
+ if (i === 0) {
323
+ // Initialize signer set from genesis
324
+ signerSet = this.initSignerSetFromGenesis(entry, errors);
325
+ }
326
+ else {
327
+ // Validate authorization for non-genesis entries
328
+ if (signerSet && this.governanceSerializer) {
329
+ this.validateEntryAuthorization(entry, signerSet, errors);
330
+ }
331
+ }
332
+ }
333
+ return { errors };
334
+ }
192
335
  /**
193
336
  * Initialize the AuthorizedSignerSet from a genesis entry.
194
337
  * Returns the signer set, or null if the genesis is not a valid governance payload.
@@ -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":";AAAA;;;;;;;;;;;;GAYG;;;AAUH,mEAA+D;AAE/D,+DAA4D;AAC5D,+EAA4E;AAC5E,mEAAgE;AAChE,qCAAkC;AAGlC;;;;;;;;;GASG;AACH,MAAa,oBAAoB;IAEZ;IACA;IACA;IAHnB,YACmB,UAAiC,EACjC,iBAA2C,EAC3C,oBAAkD;QAFlD,eAAU,GAAV,UAAU,CAAuB;QACjC,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,yBAAoB,GAApB,oBAAoB,CAA8B;IAClE,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,WAAW,CAAC,OAAuB,EAAE,UAAqB;QACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,IAAI,SAAS,GAA+B,IAAI,CAAC;QAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,WAAW,GAAG,CAAC,CAAC;YAEtB,qDAAqD;YACrD,IAAI,KAAK,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC;oBACV,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,SAAS,EAAE,cAAc;oBACzB,OAAO,EAAE,2BAA2B,WAAW,SAAS,KAAK,CAAC,cAAc,EAAE;iBAC/E,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,gDAAgD;gBAChD,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC;wBACV,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,SAAS,EAAE,iBAAiB;wBAC5B,OAAO,EACL,mEAAmE;qBACtE,CAAC,CAAC;gBACL,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC9B,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,wEAAwE;gBACxE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,IACE,KAAK,CAAC,iBAAiB,KAAK,IAAI;oBAChC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAC/C,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,SAAS,EAAE,wBAAwB;wBACnC,OAAO,EAAE,kFAAkF,KAAK,CAAC,cAAc,EAAE;qBAClH,CAAC,CAAC;gBACL,CAAC;gBAED,gEAAgE;gBAChE,IAAI,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC3C,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpC,mBAAmB;YACnB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,2EAA2E;QAC3E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,eAAe,GAAG,IAAI,kCAAe,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,6CAAqB,CAAC,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACpF,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;YAEvC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC;oBACV,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc;oBAC1D,SAAS,EAAE,sBAAsB;oBACjC,OAAO,EAAE,iEAAiE;iBAC3E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,cAAc,EAAE,OAAO,CAAC,MAAM;YAC9B,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CACX,OAAuB,EACvB,WAAgC,EAChC,sBAA4C,EAC5C,UAAqB,EACrB,YAA6B;QAE7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,SAAS,GAAG,sBAAsB,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;QAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,CAAC;YAEjC,qCAAqC;YACrC,IAAI,KAAK,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC;oBACV,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,SAAS,EAAE,cAAc;oBACzB,OAAO,EAAE,2BAA2B,WAAW,SAAS,KAAK,CAAC,cAAc,EAAE;iBAC/E,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;oBACzB,gDAAgD;oBAChD,IACE,KAAK,CAAC,iBAAiB,KAAK,IAAI;wBAChC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EACtD,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC;4BACV,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,SAAS,EAAE,wBAAwB;4BACnC,OAAO,EAAE,8EAA8E,KAAK,CAAC,cAAc,EAAE;yBAC9G,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8CAA8C;oBAC9C,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;wBACrC,MAAM,CAAC,IAAI,CAAC;4BACV,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,SAAS,EAAE,iBAAiB;4BAC5B,OAAO,EACL,mEAAmE;yBACtE,CAAC,CAAC;oBACL,CAAC;oBAED,8DAA8D;oBAC9D,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,SAAS,EAAE,CAAC;wBAC5C,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,IACE,KAAK,CAAC,iBAAiB,KAAK,IAAI;oBAChC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAC/C,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,SAAS,EAAE,wBAAwB;wBACnC,OAAO,EAAE,kFAAkF,KAAK,CAAC,cAAc,EAAE;qBAClH,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBAClC,IAAI,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC3C,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpC,mBAAmB;YACnB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,iFAAiF;QACjF,qEAAqE;QACrE,IAAI,UAAU,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,eAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;oBACxE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC;4BACV,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc;4BACzC,SAAS,EAAE,sBAAsB;4BACjC,OAAO,EAAE,gEAAgE,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE;yBACzI,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,cAAc,EAAE,OAAO,CAAC,MAAM;YAC9B,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,mBAAmB,CACvB,OAAuB,EACvB,UAAqB;QAErB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC1D,CAAC;QAED,yDAAyD;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/F,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QAEzD,sEAAsE;QACtE,MAAM,UAAU,GAGX,EAAE,CAAC;QAER,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,kFAAkF;QAClF,wEAAwE;QACxE,MAAM,cAAc,GAAG,IAAI,oBAAoB,CAC7C,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,iBAAiB,CAEvB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CACxC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAClE,CACF,CAAC;QAEF,sBAAsB;QACtB,MAAM,SAAS,GAA6B,EAAE,CAAC;QAC/C,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC;QACxC,CAAC;QAED,gFAAgF;QAChF,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;YAC7D,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,2EAA2E;QAC3E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,eAAe,GAAG,IAAI,kCAAe,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,6CAAqB,CAAC,UAAU,CACnD,WAAW,EACX,eAAe,CAChB,CAAC;YACF,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;YAEvC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,SAAS,CAAC,IAAI,CAAC;oBACb,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc;oBAC1D,SAAS,EAAE,sBAAsB;oBACjC,OAAO,EACL,iEAAiE;iBACpE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC;YAC/B,cAAc,EAAE,YAAY;YAC5B,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IAED,wEAAwE;IAExE;;;;OAIG;IACK,4BAA4B,CAClC,OAAuB;QAEvB,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,IAAI,SAAS,GAA+B,IAAI,CAAC;QAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,qCAAqC;gBACrC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,iDAAiD;gBACjD,IAAI,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC3C,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,wBAAwB,CAC9B,KAAmB,EACnB,MAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO,IAAI,CAAC;QAE5C,IAAI,CAAC,yDAA2B,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC;gBACV,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,SAAS,EAAE,4BAA4B;gBACvC,OAAO,EAAE,oDAAoD;aAC9D,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC;oBACV,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,SAAS,EAAE,4BAA4B;oBACvC,OAAO,EAAE,wCAAwC;iBAClD,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,yCAAmB,CACvC,MAAM,CAAC,OAAO,CAAC,OAA8B,EAC7C,MAAM,CAAC,OAAO,CAAC,YAAY,CAC5B,CAAC;YAEF,sCAAsC;YACtC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC;oBACV,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,SAAS,EAAE,qBAAqB;oBAChC,OAAO,EAAE,2DAA2D;iBACrE,CAAC,CAAC;YACL,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACV,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,SAAS,EAAE,4BAA4B;gBACvC,OAAO,EAAE,kDAAkD;aAC5D,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,0BAA0B,CAChC,KAAmB,EACnB,SAA8B,EAC9B,MAAgC;QAEhC,MAAM,YAAY,GAChB,IAAI,CAAC,oBAAoB;YACzB,yDAA2B,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjE,IAAI,YAAY,EAAE,CAAC;YACjB,0CAA0C;YAC1C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC;oBACV,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,SAAS,EAAE,yBAAyB;oBACpC,OAAO,EAAE,gDAAgD;iBAC1D,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,wCAAwC;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAqB,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAErE,mDAAmD;gBACnD,MAAM,UAAU,GAAG;oBACjB,KAAK,CAAC,eAAe;oBACrB,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;iBACrD,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC;wBACV,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,SAAS,EAAE,gBAAgB;wBAC3B,OAAO,EAAE,yDAAyD,KAAK,CAAC,cAAc,EAAE;qBACzF,CAAC,CAAC;gBACL,CAAC;gBAED,6DAA6D;gBAC7D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpC,IAAI,CAAC;wBACH,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAChC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,IAAI,CAAC;4BACV,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,SAAS,EAAE,6BAA6B;4BACxC,OAAO,EAAE,6BAA6B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;yBACnF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,4DAA4D;gBAC5D,IACE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;oBACrB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAC/C,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,SAAS,EAAE,4BAA4B;wBACvC,OAAO,EAAE,uCAAuC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;qBAC7F,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC;oBACV,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,SAAS,EAAE,qBAAqB;oBAChC,OAAO,EAAE,wDAAwD,KAAK,CAAC,cAAc,EAAE;iBACxF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,eAAe,CACrB,KAAmB,EACnB,MAAgC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC;gBACV,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,0EAA0E,KAAK,CAAC,cAAc,EAAE;aAC1G,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,eAAe,CACrB,KAAmB,EACnB,MAAgC;QAEhC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAC3C,KAAK,CAAC,eAAe,EACrB,cAAc,EACd,KAAK,CAAC,SAAS,CAChB,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC;gBACV,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,SAAS,EAAE,mBAAmB;gBAC9B,OAAO,EAAE,mDAAmD,KAAK,CAAC,cAAc,EAAE;aACnF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AApiBD,oDAoiBC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @fileoverview Deterministic binary serialization for Merkle inclusion proofs
3
+ * and consistency proofs.
4
+ *
5
+ * Uses only browser-compatible APIs (DataView, Uint8Array) — no Node.js Buffer.
6
+ *
7
+ * @see Design: Merkle Tree Commitment Layer — Proof Serialization
8
+ * @see Requirements 10.1, 10.2, 10.3, 10.4, 10.7, 10.8, 15.4
9
+ */
10
+ import { IMerkleProof } from '../interfaces/ledger/merkleProof';
11
+ import { IConsistencyProof } from '../interfaces/ledger/consistencyProof';
12
+ /**
13
+ * Deterministic binary serializer for Merkle inclusion proofs and consistency proofs.
14
+ *
15
+ * All methods are static. Uses only Uint8Array and DataView for browser compatibility.
16
+ */
17
+ export declare class ProofSerializer {
18
+ /**
19
+ * Serialize an inclusion proof to a Uint8Array.
20
+ *
21
+ * Binary format:
22
+ * | Offset | Size | Field |
23
+ * |--------|-----------------|------------|
24
+ * | 0 | 1 | version |
25
+ * | 1 | 1 | proofType |
26
+ * | 2 | 64 | leafHash |
27
+ * | 66 | 4 | leafIndex |
28
+ * | 70 | 4 | treeSize |
29
+ * | 74 | 2 | pathLength |
30
+ * | 76 | pathLength × 65 | path |
31
+ */
32
+ static serializeInclusionProof(proof: IMerkleProof): Uint8Array;
33
+ /**
34
+ * Deserialize a Uint8Array into an inclusion proof.
35
+ *
36
+ * @throws LedgerSerializationError for truncated, malformed, or unrecognized data
37
+ */
38
+ static deserializeInclusionProof(data: Uint8Array): IMerkleProof;
39
+ /**
40
+ * Serialize a consistency proof to a Uint8Array.
41
+ *
42
+ * Binary format:
43
+ * | Offset | Size | Field |
44
+ * |--------|-------------------|-------------|
45
+ * | 0 | 1 | version |
46
+ * | 1 | 1 | proofType |
47
+ * | 2 | 4 | earlierSize |
48
+ * | 6 | 4 | laterSize |
49
+ * | 10 | 2 | hashCount |
50
+ * | 12 | hashCount × 64 | hashes |
51
+ */
52
+ static serializeConsistencyProof(proof: IConsistencyProof): Uint8Array;
53
+ /**
54
+ * Deserialize a Uint8Array into a consistency proof.
55
+ *
56
+ * @throws LedgerSerializationError for truncated, malformed, or unrecognized data
57
+ */
58
+ static deserializeConsistencyProof(data: Uint8Array): IConsistencyProof;
59
+ }
60
+ //# sourceMappingURL=proofSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofSerializer.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/proofSerializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,EACL,YAAY,EAGb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AA6B1E;;;;GAIG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,UAAU;IAiC/D;;;;OAIG;IACH,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY;IA6EhE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU;IA6BtE;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB;CA8DxE"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Deterministic binary serialization for Merkle inclusion proofs
4
+ * and consistency proofs.
5
+ *
6
+ * Uses only browser-compatible APIs (DataView, Uint8Array) — no Node.js Buffer.
7
+ *
8
+ * @see Design: Merkle Tree Commitment Layer — Proof Serialization
9
+ * @see Requirements 10.1, 10.2, 10.3, 10.4, 10.7, 10.8, 15.4
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ProofSerializer = void 0;
13
+ const checksum_1 = require("../types/checksum");
14
+ const ledgerSerializationError_1 = require("../errors/ledgerSerializationError");
15
+ const merkleProof_1 = require("../interfaces/ledger/merkleProof");
16
+ /** Current serialization format version. */
17
+ const FORMAT_VERSION = 0x01;
18
+ /** Proof type byte for inclusion proofs. */
19
+ const PROOF_TYPE_INCLUSION = 0x01;
20
+ /** Proof type byte for consistency proofs. */
21
+ const PROOF_TYPE_CONSISTENCY = 0x02;
22
+ /** SHA3-512 hash size in bytes. */
23
+ const HASH_SIZE = 64;
24
+ /**
25
+ * Minimum size of a serialized inclusion proof (no path steps):
26
+ * version(1) + proofType(1) + leafHash(64) + leafIndex(4) + treeSize(4) + pathLength(2) = 76
27
+ */
28
+ const INCLUSION_HEADER_SIZE = 76;
29
+ /** Size of each inclusion proof path step: hash(64) + direction(1) = 65 */
30
+ const PATH_STEP_SIZE = 65;
31
+ /**
32
+ * Minimum size of a serialized consistency proof (no hashes):
33
+ * version(1) + proofType(1) + earlierSize(4) + laterSize(4) + hashCount(2) = 12
34
+ */
35
+ const CONSISTENCY_HEADER_SIZE = 12;
36
+ /**
37
+ * Deterministic binary serializer for Merkle inclusion proofs and consistency proofs.
38
+ *
39
+ * All methods are static. Uses only Uint8Array and DataView for browser compatibility.
40
+ */
41
+ class ProofSerializer {
42
+ /**
43
+ * Serialize an inclusion proof to a Uint8Array.
44
+ *
45
+ * Binary format:
46
+ * | Offset | Size | Field |
47
+ * |--------|-----------------|------------|
48
+ * | 0 | 1 | version |
49
+ * | 1 | 1 | proofType |
50
+ * | 2 | 64 | leafHash |
51
+ * | 66 | 4 | leafIndex |
52
+ * | 70 | 4 | treeSize |
53
+ * | 74 | 2 | pathLength |
54
+ * | 76 | pathLength × 65 | path |
55
+ */
56
+ static serializeInclusionProof(proof) {
57
+ const pathLength = proof.path.length;
58
+ const totalSize = INCLUSION_HEADER_SIZE + pathLength * PATH_STEP_SIZE;
59
+ const buffer = new Uint8Array(totalSize);
60
+ const view = new DataView(buffer.buffer);
61
+ // version + proofType
62
+ buffer[0] = FORMAT_VERSION;
63
+ buffer[1] = PROOF_TYPE_INCLUSION;
64
+ // leafHash (64 bytes)
65
+ buffer.set(proof.leafHash.toUint8Array(), 2);
66
+ // leafIndex (uint32 BE)
67
+ view.setUint32(66, proof.leafIndex, false);
68
+ // treeSize (uint32 BE)
69
+ view.setUint32(70, proof.treeSize, false);
70
+ // pathLength (uint16 BE)
71
+ view.setUint16(74, pathLength, false);
72
+ // path steps
73
+ let offset = INCLUSION_HEADER_SIZE;
74
+ for (const step of proof.path) {
75
+ buffer.set(step.hash.toUint8Array(), offset);
76
+ buffer[offset + HASH_SIZE] = step.direction;
77
+ offset += PATH_STEP_SIZE;
78
+ }
79
+ return buffer;
80
+ }
81
+ /**
82
+ * Deserialize a Uint8Array into an inclusion proof.
83
+ *
84
+ * @throws LedgerSerializationError for truncated, malformed, or unrecognized data
85
+ */
86
+ static deserializeInclusionProof(data) {
87
+ if (data.length < INCLUSION_HEADER_SIZE) {
88
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.DataTooShort, `Inclusion proof data too short: expected at least ${INCLUSION_HEADER_SIZE} bytes, got ${data.length}`);
89
+ }
90
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
91
+ // version
92
+ const version = data[0];
93
+ if (version !== FORMAT_VERSION) {
94
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.UnsupportedVersion, `Unrecognized proof version: 0x${version.toString(16).padStart(2, '0')}`);
95
+ }
96
+ // proofType
97
+ const proofType = data[1];
98
+ if (proofType !== PROOF_TYPE_INCLUSION) {
99
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.InvalidMagic, `Expected inclusion proof type 0x${PROOF_TYPE_INCLUSION.toString(16).padStart(2, '0')}, got 0x${proofType.toString(16).padStart(2, '0')}`);
100
+ }
101
+ // leafHash
102
+ const leafHash = checksum_1.Checksum.fromUint8Array(data.slice(2, 2 + HASH_SIZE));
103
+ // leafIndex
104
+ const leafIndex = view.getUint32(66, false);
105
+ // treeSize
106
+ const treeSize = view.getUint32(70, false);
107
+ // pathLength
108
+ const pathLength = view.getUint16(74, false);
109
+ // Validate remaining data is sufficient for path
110
+ const expectedSize = INCLUSION_HEADER_SIZE + pathLength * PATH_STEP_SIZE;
111
+ if (data.length < expectedSize) {
112
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.FieldOverflow, `Inclusion proof path truncated: expected ${expectedSize} bytes, got ${data.length}`);
113
+ }
114
+ // Parse path steps
115
+ const path = [];
116
+ let offset = INCLUSION_HEADER_SIZE;
117
+ for (let i = 0; i < pathLength; i++) {
118
+ const hash = checksum_1.Checksum.fromUint8Array(data.slice(offset, offset + HASH_SIZE));
119
+ const directionByte = data[offset + HASH_SIZE];
120
+ if (directionByte !== merkleProof_1.MerkleDirection.LEFT &&
121
+ directionByte !== merkleProof_1.MerkleDirection.RIGHT) {
122
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.InvalidMagic, `Invalid proof step direction byte: 0x${directionByte.toString(16).padStart(2, '0')}`);
123
+ }
124
+ path.push({ hash, direction: directionByte });
125
+ offset += PATH_STEP_SIZE;
126
+ }
127
+ return { leafHash, leafIndex, treeSize, path };
128
+ }
129
+ /**
130
+ * Serialize a consistency proof to a Uint8Array.
131
+ *
132
+ * Binary format:
133
+ * | Offset | Size | Field |
134
+ * |--------|-------------------|-------------|
135
+ * | 0 | 1 | version |
136
+ * | 1 | 1 | proofType |
137
+ * | 2 | 4 | earlierSize |
138
+ * | 6 | 4 | laterSize |
139
+ * | 10 | 2 | hashCount |
140
+ * | 12 | hashCount × 64 | hashes |
141
+ */
142
+ static serializeConsistencyProof(proof) {
143
+ const hashCount = proof.hashes.length;
144
+ const totalSize = CONSISTENCY_HEADER_SIZE + hashCount * HASH_SIZE;
145
+ const buffer = new Uint8Array(totalSize);
146
+ const view = new DataView(buffer.buffer);
147
+ // version + proofType
148
+ buffer[0] = FORMAT_VERSION;
149
+ buffer[1] = PROOF_TYPE_CONSISTENCY;
150
+ // earlierSize (uint32 BE)
151
+ view.setUint32(2, proof.earlierSize, false);
152
+ // laterSize (uint32 BE)
153
+ view.setUint32(6, proof.laterSize, false);
154
+ // hashCount (uint16 BE)
155
+ view.setUint16(10, hashCount, false);
156
+ // hashes
157
+ let offset = CONSISTENCY_HEADER_SIZE;
158
+ for (const hash of proof.hashes) {
159
+ buffer.set(hash.toUint8Array(), offset);
160
+ offset += HASH_SIZE;
161
+ }
162
+ return buffer;
163
+ }
164
+ /**
165
+ * Deserialize a Uint8Array into a consistency proof.
166
+ *
167
+ * @throws LedgerSerializationError for truncated, malformed, or unrecognized data
168
+ */
169
+ static deserializeConsistencyProof(data) {
170
+ if (data.length < CONSISTENCY_HEADER_SIZE) {
171
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.DataTooShort, `Consistency proof data too short: expected at least ${CONSISTENCY_HEADER_SIZE} bytes, got ${data.length}`);
172
+ }
173
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
174
+ // version
175
+ const version = data[0];
176
+ if (version !== FORMAT_VERSION) {
177
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.UnsupportedVersion, `Unrecognized proof version: 0x${version.toString(16).padStart(2, '0')}`);
178
+ }
179
+ // proofType
180
+ const proofType = data[1];
181
+ if (proofType !== PROOF_TYPE_CONSISTENCY) {
182
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.InvalidMagic, `Expected consistency proof type 0x${PROOF_TYPE_CONSISTENCY.toString(16).padStart(2, '0')}, got 0x${proofType.toString(16).padStart(2, '0')}`);
183
+ }
184
+ // earlierSize
185
+ const earlierSize = view.getUint32(2, false);
186
+ // laterSize
187
+ const laterSize = view.getUint32(6, false);
188
+ // hashCount
189
+ const hashCount = view.getUint16(10, false);
190
+ // Validate remaining data is sufficient for hashes
191
+ const expectedSize = CONSISTENCY_HEADER_SIZE + hashCount * HASH_SIZE;
192
+ if (data.length < expectedSize) {
193
+ throw new ledgerSerializationError_1.LedgerSerializationError(ledgerSerializationError_1.LedgerSerializationErrorType.FieldOverflow, `Consistency proof hashes truncated: expected ${expectedSize} bytes, got ${data.length}`);
194
+ }
195
+ // Parse hashes
196
+ const hashes = [];
197
+ let offset = CONSISTENCY_HEADER_SIZE;
198
+ for (let i = 0; i < hashCount; i++) {
199
+ hashes.push(checksum_1.Checksum.fromUint8Array(data.slice(offset, offset + HASH_SIZE)));
200
+ offset += HASH_SIZE;
201
+ }
202
+ return { earlierSize, laterSize, hashes };
203
+ }
204
+ }
205
+ exports.ProofSerializer = ProofSerializer;
206
+ //# sourceMappingURL=proofSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofSerializer.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/proofSerializer.ts"],"names":[],"mappings":"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"}