@feelyourprotocol/mpt 8141.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +448 -0
  2. package/dist/cjs/constructors.d.ts +12 -0
  3. package/dist/cjs/constructors.d.ts.map +1 -0
  4. package/dist/cjs/constructors.js +57 -0
  5. package/dist/cjs/constructors.js.map +1 -0
  6. package/dist/cjs/db/checkpointDB.d.ts +87 -0
  7. package/dist/cjs/db/checkpointDB.d.ts.map +1 -0
  8. package/dist/cjs/db/checkpointDB.js +258 -0
  9. package/dist/cjs/db/checkpointDB.js.map +1 -0
  10. package/dist/cjs/db/index.d.ts +2 -0
  11. package/dist/cjs/db/index.d.ts.map +1 -0
  12. package/dist/cjs/db/index.js +18 -0
  13. package/dist/cjs/db/index.js.map +1 -0
  14. package/dist/cjs/index.d.ts +8 -0
  15. package/dist/cjs/index.d.ts.map +1 -0
  16. package/dist/cjs/index.js +24 -0
  17. package/dist/cjs/index.js.map +1 -0
  18. package/dist/cjs/mpt.d.ts +261 -0
  19. package/dist/cjs/mpt.d.ts.map +1 -0
  20. package/dist/cjs/mpt.js +900 -0
  21. package/dist/cjs/mpt.js.map +1 -0
  22. package/dist/cjs/node/branch.d.ts +14 -0
  23. package/dist/cjs/node/branch.d.ts.map +1 -0
  24. package/dist/cjs/node/branch.js +52 -0
  25. package/dist/cjs/node/branch.js.map +1 -0
  26. package/dist/cjs/node/extension.d.ts +7 -0
  27. package/dist/cjs/node/extension.d.ts.map +1 -0
  28. package/dist/cjs/node/extension.js +14 -0
  29. package/dist/cjs/node/extension.js.map +1 -0
  30. package/dist/cjs/node/extensionOrLeafNodeBase.d.ts +15 -0
  31. package/dist/cjs/node/extensionOrLeafNodeBase.d.ts.map +1 -0
  32. package/dist/cjs/node/extensionOrLeafNodeBase.js +42 -0
  33. package/dist/cjs/node/extensionOrLeafNodeBase.js.map +1 -0
  34. package/dist/cjs/node/index.d.ts +5 -0
  35. package/dist/cjs/node/index.d.ts.map +1 -0
  36. package/dist/cjs/node/index.js +21 -0
  37. package/dist/cjs/node/index.js.map +1 -0
  38. package/dist/cjs/node/leaf.d.ts +7 -0
  39. package/dist/cjs/node/leaf.d.ts.map +1 -0
  40. package/dist/cjs/node/leaf.js +14 -0
  41. package/dist/cjs/node/leaf.js.map +1 -0
  42. package/dist/cjs/node/util.d.ts +8 -0
  43. package/dist/cjs/node/util.d.ts.map +1 -0
  44. package/dist/cjs/node/util.js +38 -0
  45. package/dist/cjs/node/util.js.map +1 -0
  46. package/dist/cjs/package.json +3 -0
  47. package/dist/cjs/proof/index.d.ts +3 -0
  48. package/dist/cjs/proof/index.d.ts.map +1 -0
  49. package/dist/cjs/proof/index.js +19 -0
  50. package/dist/cjs/proof/index.js.map +1 -0
  51. package/dist/cjs/proof/proof.d.ts +41 -0
  52. package/dist/cjs/proof/proof.d.ts.map +1 -0
  53. package/dist/cjs/proof/proof.js +119 -0
  54. package/dist/cjs/proof/proof.js.map +1 -0
  55. package/dist/cjs/proof/range.d.ts +35 -0
  56. package/dist/cjs/proof/range.d.ts.map +1 -0
  57. package/dist/cjs/proof/range.js +456 -0
  58. package/dist/cjs/proof/range.js.map +1 -0
  59. package/dist/cjs/types.d.ts +110 -0
  60. package/dist/cjs/types.d.ts.map +1 -0
  61. package/dist/cjs/types.js +6 -0
  62. package/dist/cjs/types.js.map +1 -0
  63. package/dist/cjs/util/asyncWalk.d.ts +20 -0
  64. package/dist/cjs/util/asyncWalk.d.ts.map +1 -0
  65. package/dist/cjs/util/asyncWalk.js +50 -0
  66. package/dist/cjs/util/asyncWalk.js.map +1 -0
  67. package/dist/cjs/util/encoding.d.ts +31 -0
  68. package/dist/cjs/util/encoding.d.ts.map +1 -0
  69. package/dist/cjs/util/encoding.js +200 -0
  70. package/dist/cjs/util/encoding.js.map +1 -0
  71. package/dist/cjs/util/genesisState.d.ts +6 -0
  72. package/dist/cjs/util/genesisState.d.ts.map +1 -0
  73. package/dist/cjs/util/genesisState.js +45 -0
  74. package/dist/cjs/util/genesisState.js.map +1 -0
  75. package/dist/cjs/util/hex.d.ts +20 -0
  76. package/dist/cjs/util/hex.d.ts.map +1 -0
  77. package/dist/cjs/util/hex.js +48 -0
  78. package/dist/cjs/util/hex.js.map +1 -0
  79. package/dist/cjs/util/index.d.ts +4 -0
  80. package/dist/cjs/util/index.d.ts.map +1 -0
  81. package/dist/cjs/util/index.js +20 -0
  82. package/dist/cjs/util/index.js.map +1 -0
  83. package/dist/cjs/util/nibbles.d.ts +30 -0
  84. package/dist/cjs/util/nibbles.d.ts.map +1 -0
  85. package/dist/cjs/util/nibbles.js +79 -0
  86. package/dist/cjs/util/nibbles.js.map +1 -0
  87. package/dist/cjs/util/walkController.d.ts +72 -0
  88. package/dist/cjs/util/walkController.d.ts.map +1 -0
  89. package/dist/cjs/util/walkController.js +138 -0
  90. package/dist/cjs/util/walkController.js.map +1 -0
  91. package/dist/esm/constructors.d.ts +12 -0
  92. package/dist/esm/constructors.d.ts.map +1 -0
  93. package/dist/esm/constructors.js +53 -0
  94. package/dist/esm/constructors.js.map +1 -0
  95. package/dist/esm/db/checkpointDB.d.ts +87 -0
  96. package/dist/esm/db/checkpointDB.d.ts.map +1 -0
  97. package/dist/esm/db/checkpointDB.js +254 -0
  98. package/dist/esm/db/checkpointDB.js.map +1 -0
  99. package/dist/esm/db/index.d.ts +2 -0
  100. package/dist/esm/db/index.d.ts.map +1 -0
  101. package/dist/esm/db/index.js +2 -0
  102. package/dist/esm/db/index.js.map +1 -0
  103. package/dist/esm/index.d.ts +8 -0
  104. package/dist/esm/index.d.ts.map +1 -0
  105. package/dist/esm/index.js +8 -0
  106. package/dist/esm/index.js.map +1 -0
  107. package/dist/esm/mpt.d.ts +261 -0
  108. package/dist/esm/mpt.d.ts.map +1 -0
  109. package/dist/esm/mpt.js +897 -0
  110. package/dist/esm/mpt.js.map +1 -0
  111. package/dist/esm/node/branch.d.ts +14 -0
  112. package/dist/esm/node/branch.d.ts.map +1 -0
  113. package/dist/esm/node/branch.js +48 -0
  114. package/dist/esm/node/branch.js.map +1 -0
  115. package/dist/esm/node/extension.d.ts +7 -0
  116. package/dist/esm/node/extension.d.ts.map +1 -0
  117. package/dist/esm/node/extension.js +10 -0
  118. package/dist/esm/node/extension.js.map +1 -0
  119. package/dist/esm/node/extensionOrLeafNodeBase.d.ts +15 -0
  120. package/dist/esm/node/extensionOrLeafNodeBase.d.ts.map +1 -0
  121. package/dist/esm/node/extensionOrLeafNodeBase.js +38 -0
  122. package/dist/esm/node/extensionOrLeafNodeBase.js.map +1 -0
  123. package/dist/esm/node/index.d.ts +5 -0
  124. package/dist/esm/node/index.d.ts.map +1 -0
  125. package/dist/esm/node/index.js +5 -0
  126. package/dist/esm/node/index.js.map +1 -0
  127. package/dist/esm/node/leaf.d.ts +7 -0
  128. package/dist/esm/node/leaf.d.ts.map +1 -0
  129. package/dist/esm/node/leaf.js +10 -0
  130. package/dist/esm/node/leaf.js.map +1 -0
  131. package/dist/esm/node/util.d.ts +8 -0
  132. package/dist/esm/node/util.d.ts.map +1 -0
  133. package/dist/esm/node/util.js +33 -0
  134. package/dist/esm/node/util.js.map +1 -0
  135. package/dist/esm/package.json +3 -0
  136. package/dist/esm/proof/index.d.ts +3 -0
  137. package/dist/esm/proof/index.d.ts.map +1 -0
  138. package/dist/esm/proof/index.js +3 -0
  139. package/dist/esm/proof/index.js.map +1 -0
  140. package/dist/esm/proof/proof.d.ts +41 -0
  141. package/dist/esm/proof/proof.d.ts.map +1 -0
  142. package/dist/esm/proof/proof.js +113 -0
  143. package/dist/esm/proof/proof.js.map +1 -0
  144. package/dist/esm/proof/range.d.ts +35 -0
  145. package/dist/esm/proof/range.d.ts.map +1 -0
  146. package/dist/esm/proof/range.js +453 -0
  147. package/dist/esm/proof/range.js.map +1 -0
  148. package/dist/esm/types.d.ts +110 -0
  149. package/dist/esm/types.d.ts.map +1 -0
  150. package/dist/esm/types.js +3 -0
  151. package/dist/esm/types.js.map +1 -0
  152. package/dist/esm/util/asyncWalk.d.ts +20 -0
  153. package/dist/esm/util/asyncWalk.d.ts.map +1 -0
  154. package/dist/esm/util/asyncWalk.js +47 -0
  155. package/dist/esm/util/asyncWalk.js.map +1 -0
  156. package/dist/esm/util/encoding.d.ts +31 -0
  157. package/dist/esm/util/encoding.d.ts.map +1 -0
  158. package/dist/esm/util/encoding.js +188 -0
  159. package/dist/esm/util/encoding.js.map +1 -0
  160. package/dist/esm/util/genesisState.d.ts +6 -0
  161. package/dist/esm/util/genesisState.d.ts.map +1 -0
  162. package/dist/esm/util/genesisState.js +42 -0
  163. package/dist/esm/util/genesisState.js.map +1 -0
  164. package/dist/esm/util/hex.d.ts +20 -0
  165. package/dist/esm/util/hex.d.ts.map +1 -0
  166. package/dist/esm/util/hex.js +43 -0
  167. package/dist/esm/util/hex.js.map +1 -0
  168. package/dist/esm/util/index.d.ts +4 -0
  169. package/dist/esm/util/index.d.ts.map +1 -0
  170. package/dist/esm/util/index.js +4 -0
  171. package/dist/esm/util/index.js.map +1 -0
  172. package/dist/esm/util/nibbles.d.ts +30 -0
  173. package/dist/esm/util/nibbles.d.ts.map +1 -0
  174. package/dist/esm/util/nibbles.js +73 -0
  175. package/dist/esm/util/nibbles.js.map +1 -0
  176. package/dist/esm/util/walkController.d.ts +72 -0
  177. package/dist/esm/util/walkController.d.ts.map +1 -0
  178. package/dist/esm/util/walkController.js +134 -0
  179. package/dist/esm/util/walkController.js.map +1 -0
  180. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  181. package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
  182. package/package.json +85 -0
  183. package/src/constructors.ts +71 -0
  184. package/src/db/checkpointDB.ts +298 -0
  185. package/src/db/index.ts +1 -0
  186. package/src/index.ts +7 -0
  187. package/src/mpt.ts +1090 -0
  188. package/src/node/branch.ts +60 -0
  189. package/src/node/extension.ts +13 -0
  190. package/src/node/extensionOrLeafNodeBase.ts +54 -0
  191. package/src/node/index.ts +4 -0
  192. package/src/node/leaf.ts +13 -0
  193. package/src/node/util.ts +35 -0
  194. package/src/proof/index.ts +2 -0
  195. package/src/proof/proof.ts +135 -0
  196. package/src/proof/range.ts +542 -0
  197. package/src/types.ts +151 -0
  198. package/src/util/asyncWalk.ts +60 -0
  199. package/src/util/encoding.ts +209 -0
  200. package/src/util/genesisState.ts +52 -0
  201. package/src/util/hex.ts +47 -0
  202. package/src/util/index.ts +3 -0
  203. package/src/util/nibbles.ts +80 -0
  204. package/src/util/walkController.ts +172 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpt.js","sourceRoot":"","sources":["../../src/mpt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { BranchMPTNodeBranchValue, NodeReferenceOrRawMPTNode } from '../types.ts';
2
+ export declare class BranchMPTNode {
3
+ _branches: BranchMPTNodeBranchValue[];
4
+ _value: Uint8Array | null;
5
+ constructor();
6
+ static fromArray(arr: Uint8Array[]): BranchMPTNode;
7
+ value(v?: Uint8Array | null): Uint8Array | null;
8
+ setBranch(i: number, v: BranchMPTNodeBranchValue): void;
9
+ raw(): BranchMPTNodeBranchValue[];
10
+ serialize(): Uint8Array;
11
+ getBranch(i: number): BranchMPTNodeBranchValue;
12
+ getChildren(): [number, NodeReferenceOrRawMPTNode][];
13
+ }
14
+ //# sourceMappingURL=branch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../src/node/branch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEtF,qBAAa,aAAa;IACxB,SAAS,EAAE,wBAAwB,EAAE,CAAA;IACrC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;;IAOzB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,aAAa;IAOlD,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI;IAQ/C,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,wBAAwB;IAIhD,GAAG,IAAI,wBAAwB,EAAE;IAIjC,SAAS,IAAI,UAAU;IAIvB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,wBAAwB;IAS9C,WAAW,IAAI,CAAC,MAAM,EAAE,yBAAyB,CAAC,EAAE;CAUrD"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BranchMPTNode = void 0;
4
+ const rlp_1 = require("@feelyourprotocol/rlp");
5
+ class BranchMPTNode {
6
+ constructor() {
7
+ this._branches = new Array(16).fill(null);
8
+ this._value = null;
9
+ }
10
+ static fromArray(arr) {
11
+ const node = new BranchMPTNode();
12
+ node._branches = arr.slice(0, 16);
13
+ node._value = arr[16];
14
+ return node;
15
+ }
16
+ value(v) {
17
+ if (v !== null && v !== undefined) {
18
+ this._value = v;
19
+ }
20
+ return this._value && this._value.length > 0 ? this._value : null;
21
+ }
22
+ setBranch(i, v) {
23
+ this._branches[i] = v;
24
+ }
25
+ raw() {
26
+ return [...this._branches, this._value];
27
+ }
28
+ serialize() {
29
+ return rlp_1.RLP.encode(this.raw());
30
+ }
31
+ getBranch(i) {
32
+ const b = this._branches[i];
33
+ if (b !== null && b.length > 0) {
34
+ return b;
35
+ }
36
+ else {
37
+ return null;
38
+ }
39
+ }
40
+ getChildren() {
41
+ const children = [];
42
+ for (let i = 0; i < 16; i++) {
43
+ const b = this._branches[i];
44
+ if (b !== null && b.length > 0) {
45
+ children.push([i, b]);
46
+ }
47
+ }
48
+ return children;
49
+ }
50
+ }
51
+ exports.BranchMPTNode = BranchMPTNode;
52
+ //# sourceMappingURL=branch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../src/node/branch.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAIrC,MAAa,aAAa;IAIxB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAiB;QAChC,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,CAAqB;QACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,CAAC;IAED,SAAS,CAAC,CAAS,EAAE,CAA2B;QAC9C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,SAAS;QACP,OAAO,SAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,SAAS,CAAC,CAAS;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAA;QACV,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,WAAW;QACT,MAAM,QAAQ,GAA0C,EAAE,CAAA;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAvDD,sCAuDC"}
@@ -0,0 +1,7 @@
1
+ import { ExtensionOrLeafMPTNodeBase } from './extensionOrLeafNodeBase.ts';
2
+ import type { Nibbles, RawExtensionMPTNode } from '../types.ts';
3
+ export declare class ExtensionMPTNode extends ExtensionOrLeafMPTNodeBase {
4
+ constructor(nibbles: Nibbles, value: Uint8Array);
5
+ raw(): RawExtensionMPTNode;
6
+ }
7
+ //# sourceMappingURL=extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/node/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAE/D,qBAAa,gBAAiB,SAAQ,0BAA0B;gBAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU;IAI/C,GAAG,IAAI,mBAAmB;CAG3B"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtensionMPTNode = void 0;
4
+ const extensionOrLeafNodeBase_ts_1 = require("./extensionOrLeafNodeBase.js");
5
+ class ExtensionMPTNode extends extensionOrLeafNodeBase_ts_1.ExtensionOrLeafMPTNodeBase {
6
+ constructor(nibbles, value) {
7
+ super(nibbles, value, false);
8
+ }
9
+ raw() {
10
+ return super.raw();
11
+ }
12
+ }
13
+ exports.ExtensionMPTNode = ExtensionMPTNode;
14
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/node/extension.ts"],"names":[],"mappings":";;;AAAA,6EAAyE;AAIzE,MAAa,gBAAiB,SAAQ,uDAA0B;IAC9D,YAAY,OAAgB,EAAE,KAAiB;QAC7C,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG;QACD,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC;CACF;AARD,4CAQC"}
@@ -0,0 +1,15 @@
1
+ import type { Nibbles, RawExtensionMPTNode, RawLeafMPTNode } from '../types.ts';
2
+ export declare abstract class ExtensionOrLeafMPTNodeBase {
3
+ _nibbles: Nibbles;
4
+ _value: Uint8Array;
5
+ _isLeaf: boolean;
6
+ constructor(nibbles: Nibbles, value: Uint8Array, isLeaf: boolean);
7
+ static decodeKey(key: Nibbles): Nibbles;
8
+ encodedKey(): Nibbles;
9
+ key(k?: Nibbles): Nibbles;
10
+ keyLength(): number;
11
+ value(v?: Uint8Array): Uint8Array<ArrayBufferLike>;
12
+ raw(): RawExtensionMPTNode | RawLeafMPTNode;
13
+ serialize(): Uint8Array;
14
+ }
15
+ //# sourceMappingURL=extensionOrLeafNodeBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensionOrLeafNodeBase.d.ts","sourceRoot":"","sources":["../../../src/node/extensionOrLeafNodeBase.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/E,8BAAsB,0BAA0B;IAC9C,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;gBAEJ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO;IAMhE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIvC,UAAU,IAAI,OAAO;IAIrB,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAQzB,SAAS;IAIT,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU;IAQpB,GAAG,IAAI,mBAAmB,GAAG,cAAc;IAI3C,SAAS,IAAI,UAAU;CAGxB"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtensionOrLeafMPTNodeBase = void 0;
4
+ const rlp_1 = require("@feelyourprotocol/rlp");
5
+ const hex_ts_1 = require("../util/hex.js");
6
+ const nibbles_ts_1 = require("../util/nibbles.js");
7
+ class ExtensionOrLeafMPTNodeBase {
8
+ constructor(nibbles, value, isLeaf) {
9
+ this._nibbles = nibbles;
10
+ this._value = value;
11
+ this._isLeaf = isLeaf;
12
+ }
13
+ static decodeKey(key) {
14
+ return (0, hex_ts_1.removeHexPrefix)(key);
15
+ }
16
+ encodedKey() {
17
+ return (0, hex_ts_1.addHexPrefix)(this._nibbles.slice(0), this._isLeaf);
18
+ }
19
+ key(k) {
20
+ if (k !== undefined) {
21
+ this._nibbles = k;
22
+ }
23
+ return this._nibbles.slice(0);
24
+ }
25
+ keyLength() {
26
+ return this._nibbles.length;
27
+ }
28
+ value(v) {
29
+ if (v !== undefined) {
30
+ this._value = v;
31
+ }
32
+ return this._value;
33
+ }
34
+ raw() {
35
+ return [(0, nibbles_ts_1.nibblesTypeToPackedBytes)(this.encodedKey()), this._value];
36
+ }
37
+ serialize() {
38
+ return rlp_1.RLP.encode(this.raw());
39
+ }
40
+ }
41
+ exports.ExtensionOrLeafMPTNodeBase = ExtensionOrLeafMPTNodeBase;
42
+ //# sourceMappingURL=extensionOrLeafNodeBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensionOrLeafNodeBase.js","sourceRoot":"","sources":["../../../src/node/extensionOrLeafNodeBase.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC,2CAA8D;AAC9D,mDAA6D;AAI7D,MAAsB,0BAA0B;IAK9C,YAAY,OAAgB,EAAE,KAAiB,EAAE,MAAe;QAC9D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAY;QAC3B,OAAO,IAAA,wBAAe,EAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,UAAU;QACR,OAAO,IAAA,qBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,GAAG,CAAC,CAAW;QACb,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,CAAc;QAClB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,GAAG;QACD,OAAO,CAAC,IAAA,qCAAwB,EAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnE,CAAC;IAED,SAAS;QACP,OAAO,SAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/B,CAAC;CACF;AA9CD,gEA8CC"}
@@ -0,0 +1,5 @@
1
+ export * from './branch.ts';
2
+ export * from './extension.ts';
3
+ export * from './leaf.ts';
4
+ export * from './util.ts';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./branch.js"), exports);
18
+ __exportStar(require("./extension.js"), exports);
19
+ __exportStar(require("./leaf.js"), exports);
20
+ __exportStar(require("./util.js"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,iDAA8B;AAC9B,4CAAyB;AACzB,4CAAyB"}
@@ -0,0 +1,7 @@
1
+ import { ExtensionOrLeafMPTNodeBase } from './extensionOrLeafNodeBase.ts';
2
+ import type { Nibbles, RawLeafMPTNode } from '../types.ts';
3
+ export declare class LeafMPTNode extends ExtensionOrLeafMPTNodeBase {
4
+ constructor(nibbles: Nibbles, value: Uint8Array);
5
+ raw(): RawLeafMPTNode;
6
+ }
7
+ //# sourceMappingURL=leaf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaf.d.ts","sourceRoot":"","sources":["../../../src/node/leaf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE1D,qBAAa,WAAY,SAAQ,0BAA0B;gBAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU;IAI/C,GAAG,IAAI,cAAc;CAGtB"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LeafMPTNode = void 0;
4
+ const extensionOrLeafNodeBase_ts_1 = require("./extensionOrLeafNodeBase.js");
5
+ class LeafMPTNode extends extensionOrLeafNodeBase_ts_1.ExtensionOrLeafMPTNodeBase {
6
+ constructor(nibbles, value) {
7
+ super(nibbles, value, true);
8
+ }
9
+ raw() {
10
+ return super.raw();
11
+ }
12
+ }
13
+ exports.LeafMPTNode = LeafMPTNode;
14
+ //# sourceMappingURL=leaf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaf.js","sourceRoot":"","sources":["../../../src/node/leaf.ts"],"names":[],"mappings":";;;AAAA,6EAAyE;AAIzE,MAAa,WAAY,SAAQ,uDAA0B;IACzD,YAAY,OAAgB,EAAE,KAAiB;QAC7C,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG;QACD,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC;CACF;AARD,kCAQC"}
@@ -0,0 +1,8 @@
1
+ import { type NestedUint8Array } from '@feelyourprotocol/util';
2
+ import { BranchMPTNode } from './branch.ts';
3
+ import { ExtensionMPTNode } from './extension.ts';
4
+ import { LeafMPTNode } from './leaf.ts';
5
+ export declare function decodeRawMPTNode(raw: Uint8Array[]): BranchMPTNode | ExtensionMPTNode | LeafMPTNode;
6
+ export declare function isRawMPTNode(n: Uint8Array | NestedUint8Array): n is Uint8Array[];
7
+ export declare function decodeMPTNode(node: Uint8Array): BranchMPTNode | ExtensionMPTNode | LeafMPTNode;
8
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/node/util.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAKpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,kDAYjD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,gBAAgB,GAAG,CAAC,IAAI,UAAU,EAAE,CAEhF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,kDAM7C"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeRawMPTNode = decodeRawMPTNode;
4
+ exports.isRawMPTNode = isRawMPTNode;
5
+ exports.decodeMPTNode = decodeMPTNode;
6
+ const rlp_1 = require("@feelyourprotocol/rlp");
7
+ const util_1 = require("@feelyourprotocol/util");
8
+ const hex_ts_1 = require("../util/hex.js");
9
+ const nibbles_ts_1 = require("../util/nibbles.js");
10
+ const branch_ts_1 = require("./branch.js");
11
+ const extension_ts_1 = require("./extension.js");
12
+ const leaf_ts_1 = require("./leaf.js");
13
+ function decodeRawMPTNode(raw) {
14
+ if (raw.length === 17) {
15
+ return branch_ts_1.BranchMPTNode.fromArray(raw);
16
+ }
17
+ else if (raw.length === 2) {
18
+ const nibbles = (0, nibbles_ts_1.bytesToNibbles)(raw[0]);
19
+ if ((0, hex_ts_1.isTerminator)(nibbles)) {
20
+ return new leaf_ts_1.LeafMPTNode(leaf_ts_1.LeafMPTNode.decodeKey(nibbles), raw[1]);
21
+ }
22
+ return new extension_ts_1.ExtensionMPTNode(extension_ts_1.ExtensionMPTNode.decodeKey(nibbles), raw[1]);
23
+ }
24
+ else {
25
+ throw (0, util_1.EthereumJSErrorWithoutCode)('Invalid node');
26
+ }
27
+ }
28
+ function isRawMPTNode(n) {
29
+ return Array.isArray(n) && !(n instanceof Uint8Array);
30
+ }
31
+ function decodeMPTNode(node) {
32
+ const decodedNode = rlp_1.RLP.decode(Uint8Array.from(node));
33
+ if (!isRawMPTNode(decodedNode)) {
34
+ throw (0, util_1.EthereumJSErrorWithoutCode)('Invalid node');
35
+ }
36
+ return decodeRawMPTNode(decodedNode);
37
+ }
38
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/node/util.ts"],"names":[],"mappings":";;AAUA,4CAYC;AAED,oCAEC;AAED,sCAMC;AAlCD,yCAAqC;AACrC,2CAAoF;AAEpF,2CAA6C;AAC7C,mDAAmD;AAEnD,2CAA2C;AAC3C,iDAAiD;AACjD,uCAAuC;AAEvC,SAAgB,gBAAgB,CAAC,GAAiB;IAChD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,yBAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAA,2BAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,IAAA,qBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,qBAAW,CAAC,qBAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,CAAC;QACD,OAAO,IAAI,+BAAgB,CAAC,+BAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,IAAA,iCAA0B,EAAC,cAAc,CAAC,CAAA;IAClD,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,CAAgC;IAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,CAAA;AACvD,CAAC;AAED,SAAgB,aAAa,CAAC,IAAgB;IAC5C,MAAM,WAAW,GAAG,SAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACrD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAA,iCAA0B,EAAC,cAAc,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ export * from './proof.ts';
2
+ export * from './range.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proof/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./proof.js"), exports);
18
+ __exportStar(require("./range.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/proof/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,6CAA0B"}
@@ -0,0 +1,41 @@
1
+ import { type MPTOpts, MerklePatriciaTrie, type Proof } from '../index.ts';
2
+ /**
3
+ * An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains the encoded trie nodes
4
+ * from the root node to the leaf node storing state data.
5
+ * @param rootHash Root hash of the trie that this proof was created from and is being verified for
6
+ * @param key Key that is being verified and that the proof is created for
7
+ * @param proof An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains the encoded trie nodes from the root node to the leaf node storing state data.
8
+ * @param opts optional, the opts may include a custom hashing function to use with the trie for proof verification
9
+ * @throws If proof is found to be invalid.
10
+ * @returns The value from the key, or null if valid proof of non-existence.
11
+ */
12
+ export declare function verifyMerkleProof(key: Uint8Array, proof: Proof, opts?: MPTOpts): Promise<Uint8Array | null>;
13
+ /**
14
+ * Creates a proof from a trie and key that can be verified using {@link verifyMPTWithMerkleProof}. An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains
15
+ * the encoded trie nodes from the root node to the leaf node storing state data. The returned proof will be in the format of an array that contains Uint8Arrays of
16
+ * serialized branch, extension, and/or leaf nodes.
17
+ * @param key key to create a proof for
18
+ */
19
+ export declare function createMerkleProof(trie: MerklePatriciaTrie, key: Uint8Array): Promise<Proof>;
20
+ /**
21
+ * Updates a trie from a proof by putting all the nodes in the proof into the trie. Pass {@param shouldVerifyRoot} as true to check
22
+ * that root key of proof matches root of trie and throw if not.
23
+ * An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains the encoded trie nodes from the root node to the leaf node storing state data.
24
+ * @param trie The trie to update from the proof.
25
+ * @param proof An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof to update the trie from.
26
+ * @param shouldVerifyRoot - defaults to false. If `true`, verifies that the root key of the proof matches the trie root and throws if not (i.e invalid proof).
27
+ * @returns The root of the proof
28
+ */
29
+ export declare function updateMPTFromMerkleProof(trie: MerklePatriciaTrie, proof: Proof, shouldVerifyRoot?: boolean): Promise<Uint8Array<ArrayBufferLike> | undefined>;
30
+ /**
31
+ * Verifies a proof by putting all of its nodes into a trie and attempting to get the proven key. An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof
32
+ * contains the encoded trie nodes from the root node to the leaf node storing state data.
33
+ * @param trie The trie to verify the proof against
34
+ * @param rootHash Root hash of the trie that this proof was created from and is being verified for
35
+ * @param key Key that is being verified and that the proof is created for
36
+ * @param proof an EIP-1186 proof to verify the key against
37
+ * @throws If proof is found to be invalid.
38
+ * @returns The value from the key, or null if valid proof of non-existence.
39
+ */
40
+ export declare function verifyMPTWithMerkleProof(trie: MerklePatriciaTrie, rootHash: Uint8Array, key: Uint8Array, proof: Proof): Promise<Uint8Array | null>;
41
+ //# sourceMappingURL=proof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../../../src/proof/proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,kBAAkB,EAAE,KAAK,KAAK,EAAsB,MAAM,aAAa,CAAA;AAI9F;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ5B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAQjG;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,KAAK,EACZ,gBAAgB,GAAE,OAAe,oDAyBlC;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,UAAU,EACpB,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAkC5B"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyMerkleProof = verifyMerkleProof;
4
+ exports.createMerkleProof = createMerkleProof;
5
+ exports.updateMPTFromMerkleProof = updateMPTFromMerkleProof;
6
+ exports.verifyMPTWithMerkleProof = verifyMPTWithMerkleProof;
7
+ const util_1 = require("@feelyourprotocol/util");
8
+ const index_ts_1 = require("../index.js");
9
+ /**
10
+ * An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains the encoded trie nodes
11
+ * from the root node to the leaf node storing state data.
12
+ * @param rootHash Root hash of the trie that this proof was created from and is being verified for
13
+ * @param key Key that is being verified and that the proof is created for
14
+ * @param proof An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains the encoded trie nodes from the root node to the leaf node storing state data.
15
+ * @param opts optional, the opts may include a custom hashing function to use with the trie for proof verification
16
+ * @throws If proof is found to be invalid.
17
+ * @returns The value from the key, or null if valid proof of non-existence.
18
+ */
19
+ async function verifyMerkleProof(key, proof, opts) {
20
+ try {
21
+ const proofTrie = await (0, index_ts_1.createMPTFromProof)(proof, opts);
22
+ const value = await proofTrie.get(key, true);
23
+ return value;
24
+ }
25
+ catch {
26
+ throw (0, util_1.EthereumJSErrorWithoutCode)('Invalid proof provided');
27
+ }
28
+ }
29
+ /**
30
+ * Creates a proof from a trie and key that can be verified using {@link verifyMPTWithMerkleProof}. An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains
31
+ * the encoded trie nodes from the root node to the leaf node storing state data. The returned proof will be in the format of an array that contains Uint8Arrays of
32
+ * serialized branch, extension, and/or leaf nodes.
33
+ * @param key key to create a proof for
34
+ */
35
+ async function createMerkleProof(trie, key) {
36
+ trie['DEBUG'] && trie['debug'](`Creating Proof for Key: ${(0, util_1.bytesToHex)(key)}`, ['create_proof']);
37
+ const { stack } = await trie.findPath(trie['appliedKey'](key));
38
+ const p = stack.map((stackElem) => {
39
+ return stackElem.serialize();
40
+ });
41
+ trie['DEBUG'] && trie['debug'](`Proof created with (${stack.length}) nodes`, ['create_proof']);
42
+ return p;
43
+ }
44
+ /**
45
+ * Updates a trie from a proof by putting all the nodes in the proof into the trie. Pass {@param shouldVerifyRoot} as true to check
46
+ * that root key of proof matches root of trie and throw if not.
47
+ * An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains the encoded trie nodes from the root node to the leaf node storing state data.
48
+ * @param trie The trie to update from the proof.
49
+ * @param proof An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof to update the trie from.
50
+ * @param shouldVerifyRoot - defaults to false. If `true`, verifies that the root key of the proof matches the trie root and throws if not (i.e invalid proof).
51
+ * @returns The root of the proof
52
+ */
53
+ async function updateMPTFromMerkleProof(trie, proof, shouldVerifyRoot = false) {
54
+ trie['DEBUG'] && trie['debug'](`Saving (${proof.length}) proof nodes in DB`, ['from_proof']);
55
+ const opStack = proof.map((nodeValue) => {
56
+ let key = Uint8Array.from(trie['hash'](nodeValue));
57
+ key = trie['_opts'].keyPrefix ? (0, util_1.concatBytes)(trie['_opts'].keyPrefix, key) : key;
58
+ return {
59
+ type: 'put',
60
+ key,
61
+ value: nodeValue,
62
+ };
63
+ });
64
+ if (shouldVerifyRoot) {
65
+ if (opStack[0] !== undefined && opStack[0] !== null) {
66
+ if (!(0, util_1.equalsBytes)(trie.root(), opStack[0].key)) {
67
+ throw (0, util_1.EthereumJSErrorWithoutCode)('The provided proof does not have the expected trie root');
68
+ }
69
+ }
70
+ }
71
+ await trie['_db'].batch(opStack);
72
+ if (opStack[0] !== undefined) {
73
+ return opStack[0].key;
74
+ }
75
+ }
76
+ /**
77
+ * Verifies a proof by putting all of its nodes into a trie and attempting to get the proven key. An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof
78
+ * contains the encoded trie nodes from the root node to the leaf node storing state data.
79
+ * @param trie The trie to verify the proof against
80
+ * @param rootHash Root hash of the trie that this proof was created from and is being verified for
81
+ * @param key Key that is being verified and that the proof is created for
82
+ * @param proof an EIP-1186 proof to verify the key against
83
+ * @throws If proof is found to be invalid.
84
+ * @returns The value from the key, or null if valid proof of non-existence.
85
+ */
86
+ async function verifyMPTWithMerkleProof(trie, rootHash, key, proof) {
87
+ trie['DEBUG'] &&
88
+ trie['debug'](`Verifying Proof:\n|| Key: ${(0, util_1.bytesToHex)(key)}\n|| Root: ${(0, util_1.bytesToHex)(rootHash)}\n|| Proof: (${proof.length}) nodes
89
+ `, ['VERIFY_PROOF']);
90
+ const proofTrie = new index_ts_1.MerklePatriciaTrie({
91
+ root: rootHash,
92
+ useKeyHashingFunction: trie['_opts'].useKeyHashingFunction,
93
+ common: trie['_opts'].common,
94
+ });
95
+ try {
96
+ await updateMPTFromMerkleProof(proofTrie, proof, true);
97
+ }
98
+ catch {
99
+ throw (0, util_1.EthereumJSErrorWithoutCode)('Invalid proof nodes given');
100
+ }
101
+ try {
102
+ trie['DEBUG'] &&
103
+ trie['debug'](`Verifying proof by retrieving key: ${(0, util_1.bytesToHex)(key)} from proof trie`, [
104
+ 'VERIFY_PROOF',
105
+ ]);
106
+ const value = await proofTrie.get(trie['appliedKey'](key), true);
107
+ trie['DEBUG'] && trie['debug'](`PROOF VERIFIED`, ['VERIFY_PROOF']);
108
+ return value;
109
+ }
110
+ catch (err) {
111
+ if (err.message === 'Missing node in DB') {
112
+ throw (0, util_1.EthereumJSErrorWithoutCode)('Invalid proof provided');
113
+ }
114
+ else {
115
+ throw err;
116
+ }
117
+ }
118
+ }
119
+ //# sourceMappingURL=proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.js","sourceRoot":"","sources":["../../../src/proof/proof.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { HashKeysFunction } from '../types.ts';
2
+ /**
3
+ * Checks whether the given leaf nodes and edge proof can prove the given trie leaves range is matched with the specific root.
4
+ *
5
+ * A range proof is a proof that includes the encoded trie nodes from the root node to leaf node for one or more branches of a trie,
6
+ * allowing an entire range of leaf nodes to be validated. This is useful in applications such as snap sync where contiguous ranges
7
+ * of state trie data is received and validated for constructing world state, locally.
8
+ *
9
+ * There are four situations:
10
+ *
11
+ * - All elements proof. In this case the proof can be null, but the range should
12
+ * be all the leaves in the trie.
13
+ *
14
+ * - One element proof. In this case no matter the edge proof is a non-existent
15
+ * proof or not, we can always verify the correctness of the proof.
16
+ *
17
+ * - Zero element proof. In this case a single non-existent proof is enough to prove.
18
+ * Besides, if there are still some other leaves available on the right side, then
19
+ * an error will be returned.
20
+ *
21
+ * - Two edge elements proof. In this case two existent or non-existent proof(first and last) should be provided.
22
+ *
23
+ * NOTE: Currently only supports verification when the length of firstKey and lastKey are the same.
24
+ *
25
+ * @param rootHash - root hash of state trie this proof is being verified against.
26
+ * @param firstKey - first key of range being proven.
27
+ * @param lastKey - last key of range being proven.
28
+ * @param keys - key list of leaf data being proven.
29
+ * @param values - value list of leaf data being proven, one-to-one correspondence with keys.
30
+ * @param proof - proof node list, if all-elements-proof where no proof is needed, proof should be null, and both `firstKey` and `lastKey` must be null as well
31
+ * @param opts - optional, the opts may include a custom hashing function to use with the trie for proof verification
32
+ * @returns a flag to indicate whether there exists more trie node in the trie
33
+ */
34
+ export declare function verifyMerkleRangeProof(rootHash: Uint8Array, firstKeyRaw: Uint8Array | null, lastKeyRaw: Uint8Array | null, keysRaw: Uint8Array[], values: Uint8Array[], proof: Uint8Array[] | null, useKeyHashingFunction?: HashKeysFunction): Promise<boolean>;
35
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../src/proof/range.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAA;AA2XrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,UAAU,GAAG,IAAI,EAC9B,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,EAAE,UAAU,EAAE,EACpB,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,EAC1B,qBAAqB,GAAE,gBAA6B,GACnD,OAAO,CAAC,OAAO,CAAC,CAkHlB"}