@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,48 @@
1
+ import { RLP } from '@feelyourprotocol/rlp';
2
+ export class BranchMPTNode {
3
+ constructor() {
4
+ this._branches = new Array(16).fill(null);
5
+ this._value = null;
6
+ }
7
+ static fromArray(arr) {
8
+ const node = new BranchMPTNode();
9
+ node._branches = arr.slice(0, 16);
10
+ node._value = arr[16];
11
+ return node;
12
+ }
13
+ value(v) {
14
+ if (v !== null && v !== undefined) {
15
+ this._value = v;
16
+ }
17
+ return this._value && this._value.length > 0 ? this._value : null;
18
+ }
19
+ setBranch(i, v) {
20
+ this._branches[i] = v;
21
+ }
22
+ raw() {
23
+ return [...this._branches, this._value];
24
+ }
25
+ serialize() {
26
+ return RLP.encode(this.raw());
27
+ }
28
+ getBranch(i) {
29
+ const b = this._branches[i];
30
+ if (b !== null && b.length > 0) {
31
+ return b;
32
+ }
33
+ else {
34
+ return null;
35
+ }
36
+ }
37
+ getChildren() {
38
+ const children = [];
39
+ for (let i = 0; i < 16; i++) {
40
+ const b = this._branches[i];
41
+ if (b !== null && b.length > 0) {
42
+ children.push([i, b]);
43
+ }
44
+ }
45
+ return children;
46
+ }
47
+ }
48
+ //# sourceMappingURL=branch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../src/node/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAIrC,MAAM,OAAO,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,GAAG,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"}
@@ -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,10 @@
1
+ import { ExtensionOrLeafMPTNodeBase } from "./extensionOrLeafNodeBase.js";
2
+ export class ExtensionMPTNode extends ExtensionOrLeafMPTNodeBase {
3
+ constructor(nibbles, value) {
4
+ super(nibbles, value, false);
5
+ }
6
+ raw() {
7
+ return super.raw();
8
+ }
9
+ }
10
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/node/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,MAAM,OAAO,gBAAiB,SAAQ,0BAA0B;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"}
@@ -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,38 @@
1
+ import { RLP } from '@feelyourprotocol/rlp';
2
+ import { addHexPrefix, removeHexPrefix } from "../util/hex.js";
3
+ import { nibblesTypeToPackedBytes } from "../util/nibbles.js";
4
+ export class ExtensionOrLeafMPTNodeBase {
5
+ constructor(nibbles, value, isLeaf) {
6
+ this._nibbles = nibbles;
7
+ this._value = value;
8
+ this._isLeaf = isLeaf;
9
+ }
10
+ static decodeKey(key) {
11
+ return removeHexPrefix(key);
12
+ }
13
+ encodedKey() {
14
+ return addHexPrefix(this._nibbles.slice(0), this._isLeaf);
15
+ }
16
+ key(k) {
17
+ if (k !== undefined) {
18
+ this._nibbles = k;
19
+ }
20
+ return this._nibbles.slice(0);
21
+ }
22
+ keyLength() {
23
+ return this._nibbles.length;
24
+ }
25
+ value(v) {
26
+ if (v !== undefined) {
27
+ this._value = v;
28
+ }
29
+ return this._value;
30
+ }
31
+ raw() {
32
+ return [nibblesTypeToPackedBytes(this.encodedKey()), this._value];
33
+ }
34
+ serialize() {
35
+ return RLP.encode(this.raw());
36
+ }
37
+ }
38
+ //# sourceMappingURL=extensionOrLeafNodeBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensionOrLeafNodeBase.js","sourceRoot":"","sources":["../../../src/node/extensionOrLeafNodeBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAErC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAI7D,MAAM,OAAgB,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,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,UAAU;QACR,OAAO,YAAY,CAAC,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,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnE,CAAC;IAED,SAAS;QACP,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -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,5 @@
1
+ export * from "./branch.js";
2
+ export * from "./extension.js";
3
+ export * from "./leaf.js";
4
+ export * from "./util.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","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,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,10 @@
1
+ import { ExtensionOrLeafMPTNodeBase } from "./extensionOrLeafNodeBase.js";
2
+ export class LeafMPTNode extends ExtensionOrLeafMPTNodeBase {
3
+ constructor(nibbles, value) {
4
+ super(nibbles, value, true);
5
+ }
6
+ raw() {
7
+ return super.raw();
8
+ }
9
+ }
10
+ //# sourceMappingURL=leaf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaf.js","sourceRoot":"","sources":["../../../src/node/leaf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,MAAM,OAAO,WAAY,SAAQ,0BAA0B;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"}
@@ -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,33 @@
1
+ import { RLP } from '@feelyourprotocol/rlp';
2
+ import { EthereumJSErrorWithoutCode } from '@feelyourprotocol/util';
3
+ import { isTerminator } from "../util/hex.js";
4
+ import { bytesToNibbles } from "../util/nibbles.js";
5
+ import { BranchMPTNode } from "./branch.js";
6
+ import { ExtensionMPTNode } from "./extension.js";
7
+ import { LeafMPTNode } from "./leaf.js";
8
+ export function decodeRawMPTNode(raw) {
9
+ if (raw.length === 17) {
10
+ return BranchMPTNode.fromArray(raw);
11
+ }
12
+ else if (raw.length === 2) {
13
+ const nibbles = bytesToNibbles(raw[0]);
14
+ if (isTerminator(nibbles)) {
15
+ return new LeafMPTNode(LeafMPTNode.decodeKey(nibbles), raw[1]);
16
+ }
17
+ return new ExtensionMPTNode(ExtensionMPTNode.decodeKey(nibbles), raw[1]);
18
+ }
19
+ else {
20
+ throw EthereumJSErrorWithoutCode('Invalid node');
21
+ }
22
+ }
23
+ export function isRawMPTNode(n) {
24
+ return Array.isArray(n) && !(n instanceof Uint8Array);
25
+ }
26
+ export function decodeMPTNode(node) {
27
+ const decodedNode = RLP.decode(Uint8Array.from(node));
28
+ if (!isRawMPTNode(decodedNode)) {
29
+ throw EthereumJSErrorWithoutCode('Invalid node');
30
+ }
31
+ return decodeRawMPTNode(decodedNode);
32
+ }
33
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/node/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,0BAA0B,EAAyB,MAAM,kBAAkB,CAAA;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,0BAA0B,CAAC,cAAc,CAAC,CAAA;IAClD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAgC;IAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACrD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,0BAA0B,CAAC,cAAc,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
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,3 @@
1
+ export * from "./proof.js";
2
+ export * from "./range.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/proof/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -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,113 @@
1
+ import { EthereumJSErrorWithoutCode, bytesToHex, concatBytes, equalsBytes } from '@feelyourprotocol/util';
2
+ import { MerklePatriciaTrie, createMPTFromProof } from "../index.js";
3
+ /**
4
+ * An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof contains the encoded trie nodes
5
+ * from the root node to the leaf node storing state data.
6
+ * @param rootHash Root hash of the trie that this proof was created from and is being verified for
7
+ * @param key Key that is being verified and that the proof is created for
8
+ * @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.
9
+ * @param opts optional, the opts may include a custom hashing function to use with the trie for proof verification
10
+ * @throws If proof is found to be invalid.
11
+ * @returns The value from the key, or null if valid proof of non-existence.
12
+ */
13
+ export async function verifyMerkleProof(key, proof, opts) {
14
+ try {
15
+ const proofTrie = await createMPTFromProof(proof, opts);
16
+ const value = await proofTrie.get(key, true);
17
+ return value;
18
+ }
19
+ catch {
20
+ throw EthereumJSErrorWithoutCode('Invalid proof provided');
21
+ }
22
+ }
23
+ /**
24
+ * 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
25
+ * 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
26
+ * serialized branch, extension, and/or leaf nodes.
27
+ * @param key key to create a proof for
28
+ */
29
+ export async function createMerkleProof(trie, key) {
30
+ trie['DEBUG'] && trie['debug'](`Creating Proof for Key: ${bytesToHex(key)}`, ['create_proof']);
31
+ const { stack } = await trie.findPath(trie['appliedKey'](key));
32
+ const p = stack.map((stackElem) => {
33
+ return stackElem.serialize();
34
+ });
35
+ trie['DEBUG'] && trie['debug'](`Proof created with (${stack.length}) nodes`, ['create_proof']);
36
+ return p;
37
+ }
38
+ /**
39
+ * Updates a trie from a proof by putting all the nodes in the proof into the trie. Pass {@param shouldVerifyRoot} as true to check
40
+ * that root key of proof matches root of trie and throw if not.
41
+ * 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.
42
+ * @param trie The trie to update from the proof.
43
+ * @param proof An (EIP-1186)[https://eips.ethereum.org/EIPS/eip-1186] proof to update the trie from.
44
+ * @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).
45
+ * @returns The root of the proof
46
+ */
47
+ export async function updateMPTFromMerkleProof(trie, proof, shouldVerifyRoot = false) {
48
+ trie['DEBUG'] && trie['debug'](`Saving (${proof.length}) proof nodes in DB`, ['from_proof']);
49
+ const opStack = proof.map((nodeValue) => {
50
+ let key = Uint8Array.from(trie['hash'](nodeValue));
51
+ key = trie['_opts'].keyPrefix ? concatBytes(trie['_opts'].keyPrefix, key) : key;
52
+ return {
53
+ type: 'put',
54
+ key,
55
+ value: nodeValue,
56
+ };
57
+ });
58
+ if (shouldVerifyRoot) {
59
+ if (opStack[0] !== undefined && opStack[0] !== null) {
60
+ if (!equalsBytes(trie.root(), opStack[0].key)) {
61
+ throw EthereumJSErrorWithoutCode('The provided proof does not have the expected trie root');
62
+ }
63
+ }
64
+ }
65
+ await trie['_db'].batch(opStack);
66
+ if (opStack[0] !== undefined) {
67
+ return opStack[0].key;
68
+ }
69
+ }
70
+ /**
71
+ * 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
72
+ * contains the encoded trie nodes from the root node to the leaf node storing state data.
73
+ * @param trie The trie to verify the proof against
74
+ * @param rootHash Root hash of the trie that this proof was created from and is being verified for
75
+ * @param key Key that is being verified and that the proof is created for
76
+ * @param proof an EIP-1186 proof to verify the key against
77
+ * @throws If proof is found to be invalid.
78
+ * @returns The value from the key, or null if valid proof of non-existence.
79
+ */
80
+ export async function verifyMPTWithMerkleProof(trie, rootHash, key, proof) {
81
+ trie['DEBUG'] &&
82
+ trie['debug'](`Verifying Proof:\n|| Key: ${bytesToHex(key)}\n|| Root: ${bytesToHex(rootHash)}\n|| Proof: (${proof.length}) nodes
83
+ `, ['VERIFY_PROOF']);
84
+ const proofTrie = new MerklePatriciaTrie({
85
+ root: rootHash,
86
+ useKeyHashingFunction: trie['_opts'].useKeyHashingFunction,
87
+ common: trie['_opts'].common,
88
+ });
89
+ try {
90
+ await updateMPTFromMerkleProof(proofTrie, proof, true);
91
+ }
92
+ catch {
93
+ throw EthereumJSErrorWithoutCode('Invalid proof nodes given');
94
+ }
95
+ try {
96
+ trie['DEBUG'] &&
97
+ trie['debug'](`Verifying proof by retrieving key: ${bytesToHex(key)} from proof trie`, [
98
+ 'VERIFY_PROOF',
99
+ ]);
100
+ const value = await proofTrie.get(trie['appliedKey'](key), true);
101
+ trie['DEBUG'] && trie['debug'](`PROOF VERIFIED`, ['VERIFY_PROOF']);
102
+ return value;
103
+ }
104
+ catch (err) {
105
+ if (err.message === 'Missing node in DB') {
106
+ throw EthereumJSErrorWithoutCode('Invalid proof provided');
107
+ }
108
+ else {
109
+ throw err;
110
+ }
111
+ }
112
+ }
113
+ //# 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"}