@brightchain/brightchain-lib 0.29.19 → 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 (47) hide show
  1. package/package.json +1 -1
  2. package/src/browser.d.ts +1 -0
  3. package/src/browser.d.ts.map +1 -1
  4. package/src/browser.js +3 -1
  5. package/src/browser.js.map +1 -1
  6. package/src/lib/errors/ledgerError.d.ts +4 -1
  7. package/src/lib/errors/ledgerError.d.ts.map +1 -1
  8. package/src/lib/errors/ledgerError.js +3 -0
  9. package/src/lib/errors/ledgerError.js.map +1 -1
  10. package/src/lib/interfaces/ledger/consistencyProof.d.ts +22 -0
  11. package/src/lib/interfaces/ledger/consistencyProof.d.ts.map +1 -0
  12. package/src/lib/interfaces/ledger/consistencyProof.js +12 -0
  13. package/src/lib/interfaces/ledger/consistencyProof.js.map +1 -0
  14. package/src/lib/interfaces/ledger/index.d.ts +4 -0
  15. package/src/lib/interfaces/ledger/index.d.ts.map +1 -1
  16. package/src/lib/interfaces/ledger/index.js +4 -1
  17. package/src/lib/interfaces/ledger/index.js.map +1 -1
  18. package/src/lib/interfaces/ledger/merkleProof.d.ts +42 -0
  19. package/src/lib/interfaces/ledger/merkleProof.d.ts.map +1 -0
  20. package/src/lib/interfaces/ledger/merkleProof.js +23 -0
  21. package/src/lib/interfaces/ledger/merkleProof.js.map +1 -0
  22. package/src/lib/interfaces/ledger/proofVerificationResult.d.ts +19 -0
  23. package/src/lib/interfaces/ledger/proofVerificationResult.d.ts.map +1 -0
  24. package/src/lib/interfaces/ledger/proofVerificationResult.js +12 -0
  25. package/src/lib/interfaces/ledger/proofVerificationResult.js.map +1 -0
  26. package/src/lib/interfaces/ledger/validationResult.d.ts +1 -1
  27. package/src/lib/interfaces/ledger/validationResult.d.ts.map +1 -1
  28. package/src/lib/ledger/browserSignatureVerifier.d.ts +18 -0
  29. package/src/lib/ledger/browserSignatureVerifier.d.ts.map +1 -0
  30. package/src/lib/ledger/browserSignatureVerifier.js +35 -0
  31. package/src/lib/ledger/browserSignatureVerifier.js.map +1 -0
  32. package/src/lib/ledger/incrementalMerkleTree.d.ts +179 -0
  33. package/src/lib/ledger/incrementalMerkleTree.d.ts.map +1 -0
  34. package/src/lib/ledger/incrementalMerkleTree.js +372 -0
  35. package/src/lib/ledger/incrementalMerkleTree.js.map +1 -0
  36. package/src/lib/ledger/ledger.d.ts +91 -1
  37. package/src/lib/ledger/ledger.d.ts.map +1 -1
  38. package/src/lib/ledger/ledger.js +363 -10
  39. package/src/lib/ledger/ledger.js.map +1 -1
  40. package/src/lib/ledger/ledgerChainValidator.d.ts +48 -2
  41. package/src/lib/ledger/ledgerChainValidator.d.ts.map +1 -1
  42. package/src/lib/ledger/ledgerChainValidator.js +145 -2
  43. package/src/lib/ledger/ledgerChainValidator.js.map +1 -1
  44. package/src/lib/ledger/proofSerializer.d.ts +60 -0
  45. package/src/lib/ledger/proofSerializer.d.ts.map +1 -0
  46. package/src/lib/ledger/proofSerializer.js +206 -0
  47. package/src/lib/ledger/proofSerializer.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightchain/brightchain-lib",
3
- "version": "0.29.19",
3
+ "version": "0.29.22",
4
4
  "description": "BrightChain core library - browser-compatible blockchain storage",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
package/src/browser.d.ts CHANGED
@@ -28,6 +28,7 @@ export type { ILedgerSignatureVerifier } from './lib/interfaces/ledger/ledgerSig
28
28
  export type { ILedgerSigner } from './lib/interfaces/ledger/ledgerSigner';
29
29
  export type { ILedgerValidationError, IValidationResult as ILedgerValidationResult, LedgerValidationErrorType, } from './lib/interfaces/ledger/validationResult';
30
30
  export { EciesSignatureVerifier } from './lib/ledger/eciesSignatureVerifier';
31
+ export { BrowserSignatureVerifier } from './lib/ledger/browserSignatureVerifier';
31
32
  export { Ledger } from './lib/ledger/ledger';
32
33
  export { LedgerChainValidator } from './lib/ledger/ledgerChainValidator';
33
34
  export { LedgerEntrySerializer } from './lib/ledger/ledgerEntrySerializer';
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"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"}
package/src/browser.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Minimal browser-compatible exports
3
3
  // Only exports core functionality that works without Node.js modules
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.GovernanceActionType = exports.QuorumType = exports.SignerStatus = exports.SignerRole = exports.AuthorizedSignerSet = exports.GovernancePayloadSerializer = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.EciesSignatureVerifier = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.RawDataBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = void 0;
5
+ exports.GovernanceActionType = exports.QuorumType = exports.SignerStatus = exports.SignerRole = exports.AuthorizedSignerSet = exports.GovernancePayloadSerializer = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.BrowserSignatureVerifier = exports.EciesSignatureVerifier = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.RawDataBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  tslib_1.__exportStar(require("./lib/brightChain"), exports);
8
8
  tslib_1.__exportStar(require("./lib/enumerations/blockSize"), exports);
@@ -50,6 +50,8 @@ var messagePriority_1 = require("./lib/enumerations/messaging/messagePriority");
50
50
  Object.defineProperty(exports, "MessagePriority", { enumerable: true, get: function () { return messagePriority_1.MessagePriority; } });
51
51
  var eciesSignatureVerifier_1 = require("./lib/ledger/eciesSignatureVerifier");
52
52
  Object.defineProperty(exports, "EciesSignatureVerifier", { enumerable: true, get: function () { return eciesSignatureVerifier_1.EciesSignatureVerifier; } });
53
+ var browserSignatureVerifier_1 = require("./lib/ledger/browserSignatureVerifier");
54
+ Object.defineProperty(exports, "BrowserSignatureVerifier", { enumerable: true, get: function () { return browserSignatureVerifier_1.BrowserSignatureVerifier; } });
53
55
  var ledger_1 = require("./lib/ledger/ledger");
54
56
  Object.defineProperty(exports, "Ledger", { enumerable: true, get: function () { return ledger_1.Ledger; } });
55
57
  var ledgerChainValidator_1 = require("./lib/ledger/ledgerChainValidator");
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAsBxB,8EAA6E;AAApE,gIAAA,sBAAsB,OAAA;AAC/B,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,0EAAyE;AAAhE,4HAAA,oBAAoB,OAAA;AAC7B,4EAA2E;AAAlE,8HAAA,qBAAqB,OAAA;AAC9B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAE5B,sBAAsB;AACtB,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA;AAEpC,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qEAAoE;AAA3D,4GAAA,YAAY,OAAA;AACrB,qEAAkE;AAAzD,0GAAA,UAAU,OAAA;AACnB,6EAAgF;AAAvE,wHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAsBxB,8EAA6E;AAApE,gIAAA,sBAAsB,OAAA;AAC/B,kFAAiF;AAAxE,oIAAA,wBAAwB,OAAA;AACjC,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,0EAAyE;AAAhE,4HAAA,oBAAoB,OAAA;AAC7B,4EAA2E;AAAlE,8HAAA,qBAAqB,OAAA;AAC9B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAE5B,sBAAsB;AACtB,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA;AAEpC,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qEAAoE;AAA3D,4GAAA,YAAY,OAAA;AACrB,qEAAkE;AAAzD,0GAAA,UAAU,OAAA;AACnB,6EAAgF;AAAvE,wHAAA,oBAAoB,OAAA"}
@@ -19,7 +19,10 @@ export declare enum LedgerErrorType {
19
19
  QuorumNotMet = "QuorumNotMet",
20
20
  GovernanceSafetyViolation = "GovernanceSafetyViolation",
21
21
  InvalidStateTransition = "InvalidStateTransition",
22
- InvalidGovernanceTarget = "InvalidGovernanceTarget"
22
+ InvalidGovernanceTarget = "InvalidGovernanceTarget",
23
+ MerkleProofFailed = "MerkleProofFailed",
24
+ ConsistencyProofFailed = "ConsistencyProofFailed",
25
+ MerkleReconstructionFailed = "MerkleReconstructionFailed"
23
26
  }
24
27
  export declare class LedgerError extends Error {
25
28
  readonly errorType: LedgerErrorType;
@@ -1 +1 @@
1
- {"version":3,"file":"ledgerError.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/errors/ledgerError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oBAAY,eAAe;IACzB,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IACjD,YAAY,iBAAiB;IAC7B,yBAAyB,8BAA8B;IACvD,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;CACpD;AAED,qBAAa,WAAY,SAAQ,KAAK;aAElB,SAAS,EAAE,eAAe;gBAA1B,SAAS,EAAE,eAAe,EAC1C,OAAO,CAAC,EAAE,MAAM;CAKnB"}
1
+ {"version":3,"file":"ledgerError.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/errors/ledgerError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oBAAY,eAAe;IACzB,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IACjD,YAAY,iBAAiB;IAC7B,yBAAyB,8BAA8B;IACvD,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IACnD,iBAAiB,sBAAsB;IACvC,sBAAsB,2BAA2B;IACjD,0BAA0B,+BAA+B;CAC1D;AAED,qBAAa,WAAY,SAAQ,KAAK;aAElB,SAAS,EAAE,eAAe;gBAA1B,SAAS,EAAE,eAAe,EAC1C,OAAO,CAAC,EAAE,MAAM;CAKnB"}
@@ -24,6 +24,9 @@ var LedgerErrorType;
24
24
  LedgerErrorType["GovernanceSafetyViolation"] = "GovernanceSafetyViolation";
25
25
  LedgerErrorType["InvalidStateTransition"] = "InvalidStateTransition";
26
26
  LedgerErrorType["InvalidGovernanceTarget"] = "InvalidGovernanceTarget";
27
+ LedgerErrorType["MerkleProofFailed"] = "MerkleProofFailed";
28
+ LedgerErrorType["ConsistencyProofFailed"] = "ConsistencyProofFailed";
29
+ LedgerErrorType["MerkleReconstructionFailed"] = "MerkleReconstructionFailed";
27
30
  })(LedgerErrorType || (exports.LedgerErrorType = LedgerErrorType = {}));
28
31
  class LedgerError extends Error {
29
32
  errorType;
@@ -1 +1 @@
1
- {"version":3,"file":"ledgerError.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/errors/ledgerError.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,IAAY,eAWX;AAXD,WAAY,eAAe;IACzB,kDAA+B,CAAA;IAC/B,gDAA6B,CAAA;IAC7B,0DAAuC,CAAA;IACvC,gDAA6B,CAAA;IAC7B,4DAAyC,CAAA;IACzC,oEAAiD,CAAA;IACjD,gDAA6B,CAAA;IAC7B,0EAAuD,CAAA;IACvD,oEAAiD,CAAA;IACjD,sEAAmD,CAAA;AACrD,CAAC,EAXW,eAAe,+BAAf,eAAe,QAW1B;AAED,MAAa,WAAY,SAAQ,KAAK;IAElB;IADlB,YACkB,SAA0B,EAC1C,OAAgB;QAEhB,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;QAHZ,cAAS,GAAT,SAAS,CAAiB;QAI1C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AARD,kCAQC"}
1
+ {"version":3,"file":"ledgerError.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/errors/ledgerError.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,IAAY,eAcX;AAdD,WAAY,eAAe;IACzB,kDAA+B,CAAA;IAC/B,gDAA6B,CAAA;IAC7B,0DAAuC,CAAA;IACvC,gDAA6B,CAAA;IAC7B,4DAAyC,CAAA;IACzC,oEAAiD,CAAA;IACjD,gDAA6B,CAAA;IAC7B,0EAAuD,CAAA;IACvD,oEAAiD,CAAA;IACjD,sEAAmD,CAAA;IACnD,0DAAuC,CAAA;IACvC,oEAAiD,CAAA;IACjD,4EAAyD,CAAA;AAC3D,CAAC,EAdW,eAAe,+BAAf,eAAe,QAc1B;AAED,MAAa,WAAY,SAAQ,KAAK;IAElB;IADlB,YACkB,SAA0B,EAC1C,OAAgB;QAEhB,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;QAHZ,cAAS,GAAT,SAAS,CAAiB;QAI1C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AARD,kCAQC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @fileoverview Consistency proof interface for the blockchain ledger Merkle tree.
3
+ *
4
+ * Defines the consistency proof used to verify that an earlier ledger state
5
+ * is a prefix of the current state (append-only auditing).
6
+ *
7
+ * @see Design: Merkle Tree Commitment Layer — New Types
8
+ * @see Requirements 5.1, 6.1
9
+ */
10
+ import { Checksum } from '../../types/checksum';
11
+ /**
12
+ * A consistency proof between two tree states.
13
+ */
14
+ export interface IConsistencyProof {
15
+ /** Number of leaves in the earlier tree state. */
16
+ readonly earlierSize: number;
17
+ /** Number of leaves in the later tree state. */
18
+ readonly laterSize: number;
19
+ /** Intermediate hashes needed to verify consistency. */
20
+ readonly hashes: readonly Checksum[];
21
+ }
22
+ //# sourceMappingURL=consistencyProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consistencyProof.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/consistencyProof.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Consistency proof interface for the blockchain ledger Merkle tree.
4
+ *
5
+ * Defines the consistency proof used to verify that an earlier ledger state
6
+ * is a prefix of the current state (append-only auditing).
7
+ *
8
+ * @see Design: Merkle Tree Commitment Layer — New Types
9
+ * @see Requirements 5.1, 6.1
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=consistencyProof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consistencyProof.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/consistencyProof.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
@@ -11,4 +11,8 @@ export type { IQuorumPolicy } from './quorumPolicy';
11
11
  export { GovernanceActionType } from './governanceAction';
12
12
  export type { IGovernanceAction } from './governanceAction';
13
13
  export type { IGovernancePayload } from './governancePayload';
14
+ export { MerkleDirection } from './merkleProof';
15
+ export type { IMerkleProofStep, IMerkleProof } from './merkleProof';
16
+ export type { IConsistencyProof } from './consistencyProof';
17
+ export type { IProofVerificationResult } from './proofVerificationResult';
14
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,eAAe,CAAC;AACnC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,2BAA2B,CAAC;AAC/C,mBAAmB,gBAAgB,CAAC;AACpC,YAAY,EACV,sBAAsB,EACtB,iBAAiB,IAAI,uBAAuB,EAC5C,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,eAAe,CAAC;AACnC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,2BAA2B,CAAC;AAC/C,mBAAmB,gBAAgB,CAAC;AACpC,YAAY,EACV,sBAAsB,EACtB,iBAAiB,IAAI,uBAAuB,EAC5C,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GovernanceActionType = exports.QuorumType = exports.SignerStatus = exports.SignerRole = void 0;
3
+ exports.MerkleDirection = exports.GovernanceActionType = exports.QuorumType = exports.SignerStatus = exports.SignerRole = void 0;
4
4
  // Governance
5
5
  var signerRole_1 = require("./signerRole");
6
6
  Object.defineProperty(exports, "SignerRole", { enumerable: true, get: function () { return signerRole_1.SignerRole; } });
@@ -10,4 +10,7 @@ var quorumPolicy_1 = require("./quorumPolicy");
10
10
  Object.defineProperty(exports, "QuorumType", { enumerable: true, get: function () { return quorumPolicy_1.QuorumType; } });
11
11
  var governanceAction_1 = require("./governanceAction");
12
12
  Object.defineProperty(exports, "GovernanceActionType", { enumerable: true, get: function () { return governanceAction_1.GovernanceActionType; } });
13
+ // Merkle tree proofs
14
+ var merkleProof_1 = require("./merkleProof");
15
+ Object.defineProperty(exports, "MerkleDirection", { enumerable: true, get: function () { return merkleProof_1.MerkleDirection; } });
13
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/index.ts"],"names":[],"mappings":";;;AAUA,aAAa;AACb,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAErB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AAEnB,uDAA0D;AAAjD,wHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/index.ts"],"names":[],"mappings":";;;AAUA,aAAa;AACb,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAErB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AAEnB,uDAA0D;AAAjD,wHAAA,oBAAoB,OAAA;AAI7B,qBAAqB;AACrB,6CAAgD;AAAvC,8GAAA,eAAe,OAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @fileoverview Merkle proof types for the blockchain ledger.
3
+ *
4
+ * Defines the direction enum, proof step interface, and inclusion proof
5
+ * interface used by the IncrementalMerkleTree and proof verification logic.
6
+ *
7
+ * @see Design: Merkle Tree Commitment Layer — New Types
8
+ * @see Requirements 3.1, 3.2, 4.1
9
+ */
10
+ import { Checksum } from '../../types/checksum';
11
+ /**
12
+ * Direction indicator for a sibling hash in a Merkle proof path.
13
+ * LEFT means the sibling is on the left; the current hash is on the right.
14
+ * RIGHT means the sibling is on the right; the current hash is on the left.
15
+ */
16
+ export declare enum MerkleDirection {
17
+ LEFT = 0,
18
+ RIGHT = 1
19
+ }
20
+ /**
21
+ * A single step in a Merkle authentication path.
22
+ */
23
+ export interface IMerkleProofStep {
24
+ /** The sibling hash at this level. */
25
+ readonly hash: Checksum;
26
+ /** Whether the sibling is on the left or right. */
27
+ readonly direction: MerkleDirection;
28
+ }
29
+ /**
30
+ * An inclusion proof for a single leaf in the Merkle tree.
31
+ */
32
+ export interface IMerkleProof {
33
+ /** The leaf hash (entryHash of the ledger entry). */
34
+ readonly leafHash: Checksum;
35
+ /** Zero-based index of the leaf in the tree. */
36
+ readonly leafIndex: number;
37
+ /** Total number of leaves in the tree when the proof was generated. */
38
+ readonly treeSize: number;
39
+ /** Authentication path from leaf to root. */
40
+ readonly path: readonly IMerkleProofStep[];
41
+ }
42
+ //# sourceMappingURL=merkleProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkleProof.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/merkleProof.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;GAIG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC5C"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Merkle proof types for the blockchain ledger.
4
+ *
5
+ * Defines the direction enum, proof step interface, and inclusion proof
6
+ * interface used by the IncrementalMerkleTree and proof verification logic.
7
+ *
8
+ * @see Design: Merkle Tree Commitment Layer — New Types
9
+ * @see Requirements 3.1, 3.2, 4.1
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MerkleDirection = void 0;
13
+ /**
14
+ * Direction indicator for a sibling hash in a Merkle proof path.
15
+ * LEFT means the sibling is on the left; the current hash is on the right.
16
+ * RIGHT means the sibling is on the right; the current hash is on the left.
17
+ */
18
+ var MerkleDirection;
19
+ (function (MerkleDirection) {
20
+ MerkleDirection[MerkleDirection["LEFT"] = 0] = "LEFT";
21
+ MerkleDirection[MerkleDirection["RIGHT"] = 1] = "RIGHT";
22
+ })(MerkleDirection || (exports.MerkleDirection = MerkleDirection = {}));
23
+ //# sourceMappingURL=merkleProof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkleProof.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/merkleProof.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAIH;;;;GAIG;AACH,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,qDAAQ,CAAA;IACR,uDAAS,CAAA;AACX,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileoverview Proof verification result interface for the blockchain ledger.
3
+ *
4
+ * Defines the result type returned by inclusion proof and consistency proof
5
+ * verification operations.
6
+ *
7
+ * @see Design: Merkle Tree Commitment Layer — New Types
8
+ * @see Requirements 4.1, 4.2, 4.3, 6.2, 6.3
9
+ */
10
+ /**
11
+ * Result of a proof verification operation.
12
+ */
13
+ export interface IProofVerificationResult {
14
+ /** Whether the proof verified successfully. */
15
+ readonly isValid: boolean;
16
+ /** Error message when isValid is false. */
17
+ readonly error?: string;
18
+ }
19
+ //# sourceMappingURL=proofVerificationResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofVerificationResult.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/proofVerificationResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Proof verification result interface for the blockchain ledger.
4
+ *
5
+ * Defines the result type returned by inclusion proof and consistency proof
6
+ * verification operations.
7
+ *
8
+ * @see Design: Merkle Tree Commitment Layer — New Types
9
+ * @see Requirements 4.1, 4.2, 4.3, 6.2, 6.3
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=proofVerificationResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofVerificationResult.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/proofVerificationResult.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
@@ -8,7 +8,7 @@
8
8
  * @see Requirements 8.3
9
9
  */
10
10
  /** Discriminated union of ledger validation error types. */
11
- export type LedgerValidationErrorType = 'hash_mismatch' | 'signature_invalid' | 'sequence_gap' | 'genesis_invalid' | 'previous_hash_mismatch' | 'deserialization_error' | 'unauthorized_signer' | 'unauthorized_governance' | 'quorum_not_met' | 'governance_safety_violation' | 'invalid_governance_payload';
11
+ export type LedgerValidationErrorType = 'hash_mismatch' | 'signature_invalid' | 'sequence_gap' | 'genesis_invalid' | 'previous_hash_mismatch' | 'deserialization_error' | 'unauthorized_signer' | 'unauthorized_governance' | 'quorum_not_met' | 'governance_safety_violation' | 'invalid_governance_payload' | 'merkle_root_mismatch';
12
12
  /** Describes a single validation failure at a specific entry. */
13
13
  export interface ILedgerValidationError {
14
14
  /** The sequenceNumber of the entry that failed validation. */
@@ -1 +1 @@
1
- {"version":3,"file":"validationResult.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/validationResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,4DAA4D;AAC5D,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,mBAAmB,GACnB,cAAc,GACd,iBAAiB,GACjB,wBAAwB,GACxB,uBAAuB,GACvB,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,6BAA6B,GAC7B,4BAA4B,CAAC;AAEjC,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD"}
1
+ {"version":3,"file":"validationResult.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/ledger/validationResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,4DAA4D;AAC5D,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,mBAAmB,GACnB,cAAc,GACd,iBAAiB,GACjB,wBAAwB,GACxB,uBAAuB,GACvB,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,6BAA6B,GAC7B,4BAA4B,GAC5B,sBAAsB,CAAC;AAE3B,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview BrowserSignatureVerifier — lightweight ILedgerSignatureVerifier.
3
+ *
4
+ * Calls @noble/curves secp256k1 directly to verify compact ECDSA signatures
5
+ * without requiring an ECIESService instance. Useful in browser contexts
6
+ * (e.g. the showcase demo) where you want minimal dependencies.
7
+ *
8
+ * EciesSignatureVerifier is the full-featured alternative that wraps
9
+ * ECIESService.verifyMessage().
10
+ *
11
+ * @see eciesSignatureVerifier.ts for the ECIESService-backed version
12
+ */
13
+ import type { SignatureUint8Array } from '@digitaldefiance/ecies-lib';
14
+ import type { ILedgerSignatureVerifier } from '../interfaces/ledger/ledgerSignatureVerifier';
15
+ export declare class BrowserSignatureVerifier implements ILedgerSignatureVerifier {
16
+ verify(publicKey: Uint8Array, data: Uint8Array, signature: SignatureUint8Array): boolean;
17
+ }
18
+ //# sourceMappingURL=browserSignatureVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserSignatureVerifier.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/browserSignatureVerifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAE7F,qBAAa,wBAAyB,YAAW,wBAAwB;IACvE,MAAM,CACJ,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,mBAAmB,GAC7B,OAAO;CAYX"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview BrowserSignatureVerifier — lightweight ILedgerSignatureVerifier.
4
+ *
5
+ * Calls @noble/curves secp256k1 directly to verify compact ECDSA signatures
6
+ * without requiring an ECIESService instance. Useful in browser contexts
7
+ * (e.g. the showcase demo) where you want minimal dependencies.
8
+ *
9
+ * EciesSignatureVerifier is the full-featured alternative that wraps
10
+ * ECIESService.verifyMessage().
11
+ *
12
+ * @see eciesSignatureVerifier.ts for the ECIESService-backed version
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.BrowserSignatureVerifier = void 0;
16
+ const secp256k1_1 = require("@noble/curves/secp256k1");
17
+ const sha2_1 = require("@noble/hashes/sha2");
18
+ class BrowserSignatureVerifier {
19
+ verify(publicKey, data, signature) {
20
+ try {
21
+ if (!signature || signature.length !== 64)
22
+ return false;
23
+ const hash = (0, sha2_1.sha256)(data);
24
+ return secp256k1_1.secp256k1.verify(signature, hash, publicKey, {
25
+ prehash: false,
26
+ format: 'compact',
27
+ });
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ }
34
+ exports.BrowserSignatureVerifier = BrowserSignatureVerifier;
35
+ //# sourceMappingURL=browserSignatureVerifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserSignatureVerifier.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/browserSignatureVerifier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAGH,uDAAoD;AACpD,6CAA4C;AAG5C,MAAa,wBAAwB;IACnC,MAAM,CACJ,SAAqB,EACrB,IAAgB,EAChB,SAA8B;QAE9B,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;YACxD,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,qBAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClD,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAjBD,4DAiBC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * @fileoverview IncrementalMerkleTree — a frontier-based incremental Merkle tree
3
+ * built over SHA3-512 entry hashes.
4
+ *
5
+ * The tree supports O(log N) appends via a frontier (right-spine hashes) and
6
+ * maintains the full leaf list for proof generation. All binary data uses
7
+ * Uint8Array (no Node.js Buffer) for browser compatibility.
8
+ *
9
+ * @see Design: Merkle Tree Commitment Layer — IncrementalMerkleTree
10
+ * @see Requirements 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.1, 2.2, 14.1, 15.1, 15.2
11
+ */
12
+ import { IConsistencyProof } from '../interfaces/ledger/consistencyProof';
13
+ import { IMerkleProof } from '../interfaces/ledger/merkleProof';
14
+ import { ChecksumService } from '../services/checksum.service';
15
+ import { Checksum } from '../types/checksum';
16
+ /**
17
+ * Incremental Merkle tree using frontier-based O(log N) appends.
18
+ *
19
+ * Leaves are the entryHash (SHA3-512, 64 bytes) of each ledger entry.
20
+ * Internal nodes are SHA3-512(left_child || right_child).
21
+ * The frontier stores the root hashes of the perfect binary subtrees
22
+ * that compose the current tree.
23
+ */
24
+ export declare class IncrementalMerkleTree {
25
+ private readonly checksumService;
26
+ /** All leaf hashes, in order. */
27
+ private leaves;
28
+ /** Frontier: right-spine hashes for incremental root computation. */
29
+ private frontier;
30
+ /** Cached current root. */
31
+ private cachedRoot;
32
+ /**
33
+ * Tracked size, independent of leaves.length.
34
+ * For frontier-only trees (restored via fromFrontier), leaves may be empty
35
+ * while _size reflects the actual number of leaves the frontier represents.
36
+ */
37
+ private _size;
38
+ constructor(checksumService: ChecksumService);
39
+ /**
40
+ * Current Merkle root. SHA3-512 of empty bytes if tree is empty.
41
+ * Returns the leaf hash when there is a single leaf.
42
+ */
43
+ get root(): Checksum;
44
+ /** Number of leaves in the tree. */
45
+ get size(): number;
46
+ /** Current frontier (right-spine hashes). Returns a copy. */
47
+ get currentFrontier(): Checksum[];
48
+ /**
49
+ * Append a new leaf hash. Updates frontier and root in O(log N).
50
+ *
51
+ * Algorithm (trailing-ones merge):
52
+ * 1. Push leafHash onto frontier
53
+ * 2. Increment size
54
+ * 3. Count trailing 1-bits in binary(size) = mergeCount
55
+ * 4. For mergeCount iterations: pop right, pop left, push SHA3-512(left || right)
56
+ * 5. Recompute cachedRoot from frontier
57
+ */
58
+ append(leafHash: Checksum): void;
59
+ /**
60
+ * Generate an inclusion proof for the leaf at the given index.
61
+ *
62
+ * Uses the RFC 6962 recursive decomposition: split the N leaves into
63
+ * a left subtree of size k (largest power of 2 < N) and a right subtree
64
+ * of size N-k. Recurse into whichever subtree contains the target leaf,
65
+ * recording the sibling subtree's hash at each level.
66
+ *
67
+ * This guarantees path length = ceil(log2(N)), or 0 when N = 1.
68
+ *
69
+ * @param leafIndex - Zero-based index of the leaf
70
+ * @returns An IMerkleProof with the authentication path from leaf to root
71
+ * @throws LedgerError(MerkleProofFailed) if leafIndex is out of range
72
+ *
73
+ * @see Requirements 3.1, 3.2, 3.3, 3.4, 14.2
74
+ */
75
+ getInclusionProof(leafIndex: number): IMerkleProof;
76
+ /**
77
+ * Generate a consistency proof between an earlier tree size M and the current
78
+ * tree size N.
79
+ *
80
+ * Follows RFC 6962 Section 2.1.2: SUBPROOF(m, D[0:n], b).
81
+ *
82
+ * - M=0 or M=N → empty proof (trivially consistent)
83
+ * - M > N → throw LedgerError(ConsistencyProofFailed)
84
+ * - 0 < M < N → return minimal set of intermediate hashes
85
+ *
86
+ * @param earlierSize - The earlier tree size M
87
+ * @returns An IConsistencyProof with the intermediate hashes
88
+ * @throws LedgerError(ConsistencyProofFailed) if earlierSize > current size
89
+ *
90
+ * @see Requirements 5.1, 5.2, 5.3, 5.4, 14.3
91
+ */
92
+ getConsistencyProof(earlierSize: number): IConsistencyProof;
93
+ /**
94
+ * Batch-construct a tree from a list of leaf hashes.
95
+ * Produces the same root as appending each leaf one at a time.
96
+ *
97
+ * @param leaves - Array of leaf hashes (SHA3-512 Checksums)
98
+ * @param checksumService - ChecksumService for hashing
99
+ * @returns A fully populated IncrementalMerkleTree
100
+ *
101
+ * @see Requirements 2.3, 2.4, 8.2, 14.5
102
+ */
103
+ static fromLeaves(leaves: Checksum[], checksumService: ChecksumService): IncrementalMerkleTree;
104
+ /**
105
+ * Restore a tree from a persisted frontier and size.
106
+ * Creates a tree that can compute the root and accept further appends,
107
+ * but cannot generate inclusion or consistency proofs (no leaves stored).
108
+ *
109
+ * @param frontier - The persisted frontier (right-spine hashes)
110
+ * @param size - The number of leaves the frontier represents
111
+ * @param checksumService - ChecksumService for hashing
112
+ * @returns An IncrementalMerkleTree with frontier and size set, but no leaves
113
+ *
114
+ * @see Requirements 2.3, 2.4, 8.2, 14.5
115
+ */
116
+ static fromFrontier(frontier: Checksum[], size: number, checksumService: ChecksumService): IncrementalMerkleTree;
117
+ /**
118
+ * Compute the Merkle root for a given set of leaves without creating
119
+ * a full tree instance. Pure function for verification.
120
+ *
121
+ * @param leaves - Array of leaf hashes (SHA3-512 Checksums)
122
+ * @param checksumService - ChecksumService for hashing
123
+ * @returns The Merkle root Checksum
124
+ *
125
+ * @see Requirements 2.3, 2.4, 8.2, 14.5
126
+ */
127
+ static computeRoot(leaves: Checksum[], checksumService: ChecksumService): Checksum;
128
+ /**
129
+ * RFC 6962 Section 2.1.2 SUBPROOF(m, leaves, startFromOldRoot).
130
+ *
131
+ * Recursively decomposes the tree to produce the minimal set of hashes
132
+ * needed to prove consistency between tree sizes m and |leaves|.
133
+ *
134
+ * @param m - The earlier tree size within this subtree
135
+ * @param leaves - The leaves of the current subtree
136
+ * @param startFromOldRoot - If true, omit the hash when m == |leaves|
137
+ * (because the verifier can compute it from the earlier root)
138
+ * @param hashes - Accumulator for the proof hashes
139
+ */
140
+ private buildConsistencyProof;
141
+ /**
142
+ * Recursively build the inclusion proof path using RFC 6962 decomposition.
143
+ *
144
+ * Split leaves into left (size k = largest power of 2 < n) and right (n-k).
145
+ * Record the sibling subtree hash and recurse into the subtree containing
146
+ * the target leaf.
147
+ */
148
+ private buildInclusionPath;
149
+ /**
150
+ * Compute the Merkle hash of a subtree given its leaves.
151
+ * Uses the same RFC 6962 recursive decomposition.
152
+ */
153
+ private computeSubtreeHash;
154
+ /**
155
+ * Returns the largest power of 2 that is strictly less than n.
156
+ * For n=2, returns 1. For n=3, returns 2. For n=5, returns 4.
157
+ */
158
+ private largestPowerOf2LessThan;
159
+ /**
160
+ * Compute the root from the frontier by folding right-to-left.
161
+ * SHA3-512(frontier[i] || result) for i from second-to-last down to 0.
162
+ */
163
+ private computeRootFromFrontier;
164
+ /**
165
+ * Hash two child nodes: SHA3-512(left || right).
166
+ * Concatenates the 64-byte left and right hashes, then hashes the 128-byte result.
167
+ */
168
+ private hashPair;
169
+ /**
170
+ * Count the number of trailing 1-bits in the binary representation of n.
171
+ */
172
+ private trailingOnes;
173
+ /**
174
+ * Count the number of trailing 0-bits in the binary representation of n.
175
+ * For n=0, returns 0.
176
+ */
177
+ private trailingZeros;
178
+ }
179
+ //# sourceMappingURL=incrementalMerkleTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incrementalMerkleTree.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/incrementalMerkleTree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EACL,YAAY,EAGb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAcpB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAb5C,iCAAiC;IACjC,OAAO,CAAC,MAAM,CAAa;IAC3B,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAa;IAC7B,2BAA2B;IAC3B,OAAO,CAAC,UAAU,CAAkB;IACpC;;;;OAIG;IACH,OAAO,CAAC,KAAK,CAAS;gBAEO,eAAe,EAAE,eAAe;IAO7D;;;OAGG;IACH,IAAI,IAAI,IAAI,QAAQ,CAYnB;IAED,oCAAoC;IACpC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,6DAA6D;IAC7D,IAAI,eAAe,IAAI,QAAQ,EAAE,CAEhC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAgBhC;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAkClD;;;;;;;;;;;;;;;OAeG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAuC3D;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,QAAQ,EAAE,EAClB,eAAe,EAAE,eAAe,GAC/B,qBAAqB;IAQxB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,QAAQ,EAAE,EACpB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,eAAe,GAC/B,qBAAqB;IAQxB;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAChB,MAAM,EAAE,QAAQ,EAAE,EAClB,eAAe,EAAE,eAAe,GAC/B,QAAQ;IAKX;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,CAAC,aAAa;CAStB"}