@feelyourprotocol/statemanager 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 (169) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +331 -0
  3. package/dist/cjs/cache/account.d.ts +85 -0
  4. package/dist/cjs/cache/account.d.ts.map +1 -0
  5. package/dist/cjs/cache/account.js +252 -0
  6. package/dist/cjs/cache/account.js.map +1 -0
  7. package/dist/cjs/cache/cache.d.ts +23 -0
  8. package/dist/cjs/cache/cache.d.ts.map +1 -0
  9. package/dist/cjs/cache/cache.js +31 -0
  10. package/dist/cjs/cache/cache.js.map +1 -0
  11. package/dist/cjs/cache/caches.d.ts +19 -0
  12. package/dist/cjs/cache/caches.d.ts.map +1 -0
  13. package/dist/cjs/cache/caches.js +107 -0
  14. package/dist/cjs/cache/caches.js.map +1 -0
  15. package/dist/cjs/cache/code.d.ts +87 -0
  16. package/dist/cjs/cache/code.d.ts.map +1 -0
  17. package/dist/cjs/cache/code.js +258 -0
  18. package/dist/cjs/cache/code.js.map +1 -0
  19. package/dist/cjs/cache/index.d.ts +7 -0
  20. package/dist/cjs/cache/index.d.ts.map +1 -0
  21. package/dist/cjs/cache/index.js +23 -0
  22. package/dist/cjs/cache/index.js.map +1 -0
  23. package/dist/cjs/cache/originalStorageCache.d.ts +21 -0
  24. package/dist/cjs/cache/originalStorageCache.d.ts.map +1 -0
  25. package/dist/cjs/cache/originalStorageCache.js +52 -0
  26. package/dist/cjs/cache/originalStorageCache.js.map +1 -0
  27. package/dist/cjs/cache/storage.d.ts +101 -0
  28. package/dist/cjs/cache/storage.d.ts.map +1 -0
  29. package/dist/cjs/cache/storage.js +337 -0
  30. package/dist/cjs/cache/storage.js.map +1 -0
  31. package/dist/cjs/cache/types.d.ts +36 -0
  32. package/dist/cjs/cache/types.d.ts.map +1 -0
  33. package/dist/cjs/cache/types.js +8 -0
  34. package/dist/cjs/cache/types.js.map +1 -0
  35. package/dist/cjs/index.d.ts +8 -0
  36. package/dist/cjs/index.d.ts.map +1 -0
  37. package/dist/cjs/index.js +24 -0
  38. package/dist/cjs/index.js.map +1 -0
  39. package/dist/cjs/merkleStateManager.d.ts +260 -0
  40. package/dist/cjs/merkleStateManager.d.ts.map +1 -0
  41. package/dist/cjs/merkleStateManager.js +616 -0
  42. package/dist/cjs/merkleStateManager.js.map +1 -0
  43. package/dist/cjs/package.json +3 -0
  44. package/dist/cjs/proof/index.d.ts +3 -0
  45. package/dist/cjs/proof/index.d.ts.map +1 -0
  46. package/dist/cjs/proof/index.js +19 -0
  47. package/dist/cjs/proof/index.js.map +1 -0
  48. package/dist/cjs/proof/merkle.d.ts +40 -0
  49. package/dist/cjs/proof/merkle.d.ts.map +1 -0
  50. package/dist/cjs/proof/merkle.js +182 -0
  51. package/dist/cjs/proof/merkle.js.map +1 -0
  52. package/dist/cjs/proof/rpc.d.ts +10 -0
  53. package/dist/cjs/proof/rpc.d.ts.map +1 -0
  54. package/dist/cjs/proof/rpc.js +20 -0
  55. package/dist/cjs/proof/rpc.js.map +1 -0
  56. package/dist/cjs/rpcStateManager.d.ts +162 -0
  57. package/dist/cjs/rpcStateManager.d.ts.map +1 -0
  58. package/dist/cjs/rpcStateManager.js +313 -0
  59. package/dist/cjs/rpcStateManager.js.map +1 -0
  60. package/dist/cjs/simpleStateManager.d.ts +54 -0
  61. package/dist/cjs/simpleStateManager.d.ts.map +1 -0
  62. package/dist/cjs/simpleStateManager.js +125 -0
  63. package/dist/cjs/simpleStateManager.js.map +1 -0
  64. package/dist/cjs/statefulBinaryTreeStateManager.d.ts +69 -0
  65. package/dist/cjs/statefulBinaryTreeStateManager.d.ts.map +1 -0
  66. package/dist/cjs/statefulBinaryTreeStateManager.js +576 -0
  67. package/dist/cjs/statefulBinaryTreeStateManager.js.map +1 -0
  68. package/dist/cjs/types.d.ts +92 -0
  69. package/dist/cjs/types.d.ts.map +1 -0
  70. package/dist/cjs/types.js +3 -0
  71. package/dist/cjs/types.js.map +1 -0
  72. package/dist/cjs/util.d.ts +4 -0
  73. package/dist/cjs/util.d.ts.map +1 -0
  74. package/dist/cjs/util.js +21 -0
  75. package/dist/cjs/util.js.map +1 -0
  76. package/dist/esm/cache/account.d.ts +85 -0
  77. package/dist/esm/cache/account.d.ts.map +1 -0
  78. package/dist/esm/cache/account.js +248 -0
  79. package/dist/esm/cache/account.js.map +1 -0
  80. package/dist/esm/cache/cache.d.ts +23 -0
  81. package/dist/esm/cache/cache.d.ts.map +1 -0
  82. package/dist/esm/cache/cache.js +27 -0
  83. package/dist/esm/cache/cache.js.map +1 -0
  84. package/dist/esm/cache/caches.d.ts +19 -0
  85. package/dist/esm/cache/caches.d.ts.map +1 -0
  86. package/dist/esm/cache/caches.js +103 -0
  87. package/dist/esm/cache/caches.js.map +1 -0
  88. package/dist/esm/cache/code.d.ts +87 -0
  89. package/dist/esm/cache/code.d.ts.map +1 -0
  90. package/dist/esm/cache/code.js +254 -0
  91. package/dist/esm/cache/code.js.map +1 -0
  92. package/dist/esm/cache/index.d.ts +7 -0
  93. package/dist/esm/cache/index.d.ts.map +1 -0
  94. package/dist/esm/cache/index.js +7 -0
  95. package/dist/esm/cache/index.js.map +1 -0
  96. package/dist/esm/cache/originalStorageCache.d.ts +21 -0
  97. package/dist/esm/cache/originalStorageCache.d.ts.map +1 -0
  98. package/dist/esm/cache/originalStorageCache.js +48 -0
  99. package/dist/esm/cache/originalStorageCache.js.map +1 -0
  100. package/dist/esm/cache/storage.d.ts +101 -0
  101. package/dist/esm/cache/storage.d.ts.map +1 -0
  102. package/dist/esm/cache/storage.js +333 -0
  103. package/dist/esm/cache/storage.js.map +1 -0
  104. package/dist/esm/cache/types.d.ts +36 -0
  105. package/dist/esm/cache/types.d.ts.map +1 -0
  106. package/dist/esm/cache/types.js +5 -0
  107. package/dist/esm/cache/types.js.map +1 -0
  108. package/dist/esm/index.d.ts +8 -0
  109. package/dist/esm/index.d.ts.map +1 -0
  110. package/dist/esm/index.js +8 -0
  111. package/dist/esm/index.js.map +1 -0
  112. package/dist/esm/merkleStateManager.d.ts +260 -0
  113. package/dist/esm/merkleStateManager.d.ts.map +1 -0
  114. package/dist/esm/merkleStateManager.js +612 -0
  115. package/dist/esm/merkleStateManager.js.map +1 -0
  116. package/dist/esm/package.json +3 -0
  117. package/dist/esm/proof/index.d.ts +3 -0
  118. package/dist/esm/proof/index.d.ts.map +1 -0
  119. package/dist/esm/proof/index.js +3 -0
  120. package/dist/esm/proof/index.js.map +1 -0
  121. package/dist/esm/proof/merkle.d.ts +40 -0
  122. package/dist/esm/proof/merkle.d.ts.map +1 -0
  123. package/dist/esm/proof/merkle.js +175 -0
  124. package/dist/esm/proof/merkle.js.map +1 -0
  125. package/dist/esm/proof/rpc.d.ts +10 -0
  126. package/dist/esm/proof/rpc.d.ts.map +1 -0
  127. package/dist/esm/proof/rpc.js +17 -0
  128. package/dist/esm/proof/rpc.js.map +1 -0
  129. package/dist/esm/rpcStateManager.d.ts +162 -0
  130. package/dist/esm/rpcStateManager.d.ts.map +1 -0
  131. package/dist/esm/rpcStateManager.js +308 -0
  132. package/dist/esm/rpcStateManager.js.map +1 -0
  133. package/dist/esm/simpleStateManager.d.ts +54 -0
  134. package/dist/esm/simpleStateManager.d.ts.map +1 -0
  135. package/dist/esm/simpleStateManager.js +121 -0
  136. package/dist/esm/simpleStateManager.js.map +1 -0
  137. package/dist/esm/statefulBinaryTreeStateManager.d.ts +69 -0
  138. package/dist/esm/statefulBinaryTreeStateManager.d.ts.map +1 -0
  139. package/dist/esm/statefulBinaryTreeStateManager.js +572 -0
  140. package/dist/esm/statefulBinaryTreeStateManager.js.map +1 -0
  141. package/dist/esm/types.d.ts +92 -0
  142. package/dist/esm/types.d.ts.map +1 -0
  143. package/dist/esm/types.js +2 -0
  144. package/dist/esm/types.js.map +1 -0
  145. package/dist/esm/util.d.ts +4 -0
  146. package/dist/esm/util.d.ts.map +1 -0
  147. package/dist/esm/util.js +18 -0
  148. package/dist/esm/util.js.map +1 -0
  149. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  150. package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
  151. package/package.json +74 -0
  152. package/src/cache/account.ts +277 -0
  153. package/src/cache/cache.ts +35 -0
  154. package/src/cache/caches.ts +125 -0
  155. package/src/cache/code.ts +277 -0
  156. package/src/cache/index.ts +6 -0
  157. package/src/cache/originalStorageCache.ts +57 -0
  158. package/src/cache/storage.ts +369 -0
  159. package/src/cache/types.ts +38 -0
  160. package/src/index.ts +7 -0
  161. package/src/merkleStateManager.ts +737 -0
  162. package/src/proof/index.ts +2 -0
  163. package/src/proof/merkle.ts +264 -0
  164. package/src/proof/rpc.ts +24 -0
  165. package/src/rpcStateManager.ts +381 -0
  166. package/src/simpleStateManager.ts +154 -0
  167. package/src/statefulBinaryTreeStateManager.ts +789 -0
  168. package/src/types.ts +103 -0
  169. package/src/util.ts +28 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/cache/storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,CAAA;AAC9D,KAAK,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAE9C,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,SAAS,CAAA;IACxD,gBAAgB,EAAE,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,SAAS,CAAA;IAEjE;;;;;;;;OAQG;IACH,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,CAAK;gBAEvC,IAAI,EAAE,SAAS;IAkB3B,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAuBrD;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IA+B/D;;;;;;;OAOG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS;IAoB9D;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI;IA0B5C;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASpC;;;OAGG;IACH,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,EAAE;IAmCnD;;OAEG;IACH,MAAM,IAAI,IAAI;IAuCd;;OAEG;IACH,MAAM,IAAI,IAAI;IA6Bd;;;OAGG;IACH,UAAU,IAAI,IAAI;IAQlB;;;OAGG;IACH,IAAI;IAQJ;;;OAGG;IACH,KAAK,CAAC,KAAK,UAAO;;;;;;;IAelB;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS;CASpD"}
@@ -0,0 +1,333 @@
1
+ import { EthereumJSErrorWithoutCode, bytesToUnprefixedHex, hexToBytes } from '@feelyourprotocol/util';
2
+ import { OrderedMap } from '@js-sdsl/ordered-map';
3
+ import debugDefault from 'debug';
4
+ import { LRUCache } from 'lru-cache';
5
+ import { Cache } from "./cache.js";
6
+ import { CacheType } from "./types.js";
7
+ export class StorageCache extends Cache {
8
+ constructor(opts) {
9
+ super();
10
+ /**
11
+ * Diff cache collecting the state of the cache
12
+ * at the beginning of checkpoint height
13
+ * (respectively: before a first modification)
14
+ *
15
+ * If the whole cache element is undefined (in contrast
16
+ * to the account), the element didn't exist in the cache
17
+ * before.
18
+ */
19
+ this._diffCache = [];
20
+ if (opts.type === CacheType.LRU) {
21
+ this._lruCache = new LRUCache({
22
+ max: opts.size,
23
+ updateAgeOnGet: true,
24
+ });
25
+ }
26
+ else {
27
+ this._orderedMapCache = new OrderedMap();
28
+ }
29
+ this._diffCache.push(new Map());
30
+ if (this.DEBUG) {
31
+ this._debug = debugDefault('statemanager:cache:storage');
32
+ }
33
+ }
34
+ _saveCachePreState(addressHex, keyHex) {
35
+ const addressStoragePreState = this._diffCache[this._checkpoints].get(addressHex);
36
+ const diffStorageMap = addressStoragePreState ?? new Map();
37
+ if (!diffStorageMap.has(keyHex)) {
38
+ let oldStorageMap;
39
+ let oldStorage = undefined;
40
+ if (this._lruCache) {
41
+ oldStorageMap = this._lruCache.get(addressHex);
42
+ if (oldStorageMap) {
43
+ oldStorage = oldStorageMap.get(keyHex);
44
+ }
45
+ }
46
+ else {
47
+ oldStorageMap = this._orderedMapCache.getElementByKey(addressHex);
48
+ if (oldStorageMap) {
49
+ oldStorage = oldStorageMap.get(keyHex);
50
+ }
51
+ }
52
+ diffStorageMap.set(keyHex, oldStorage);
53
+ this._diffCache[this._checkpoints].set(addressHex, diffStorageMap);
54
+ }
55
+ }
56
+ /**
57
+ * Puts storage value to cache under address_key cache key.
58
+ * @param address - Account address
59
+ * @param key - Storage key
60
+ * @param val - RLP-encoded storage value
61
+ */
62
+ put(address, key, value) {
63
+ // Using deprecated bytesToUnprefixedHex for performance: used as Map keys for cache lookups.
64
+ const addressHex = bytesToUnprefixedHex(address.bytes);
65
+ const keyHex = bytesToUnprefixedHex(key);
66
+ this._saveCachePreState(addressHex, keyHex);
67
+ if (this.DEBUG) {
68
+ this._debug(`Put storage for ${addressHex}: ${keyHex} -> ${value !== undefined ? bytesToUnprefixedHex(value) : ''}`);
69
+ }
70
+ if (this._lruCache) {
71
+ let storageMap = this._lruCache.get(addressHex);
72
+ if (!storageMap) {
73
+ storageMap = new Map();
74
+ }
75
+ storageMap.set(keyHex, value);
76
+ this._lruCache.set(addressHex, storageMap);
77
+ }
78
+ else {
79
+ let storageMap = this._orderedMapCache.getElementByKey(addressHex);
80
+ if (!storageMap) {
81
+ storageMap = new Map();
82
+ }
83
+ storageMap.set(keyHex, value);
84
+ this._orderedMapCache.setElement(addressHex, storageMap);
85
+ }
86
+ this._stats.writes += 1;
87
+ }
88
+ /**
89
+ * Returns the queried slot as the RLP encoded storage value
90
+ * hexToBytes('0x80'): slot is known to be empty
91
+ * undefined: slot is not in cache
92
+ * @param address - Address of account
93
+ * @param key - Storage key
94
+ * @returns Storage value or undefined
95
+ */
96
+ get(address, key) {
97
+ const addressHex = bytesToUnprefixedHex(address.bytes);
98
+ const keyHex = bytesToUnprefixedHex(key);
99
+ if (this.DEBUG) {
100
+ this._debug(`Get storage for ${addressHex}`);
101
+ }
102
+ let storageMap;
103
+ if (this._lruCache) {
104
+ storageMap = this._lruCache.get(addressHex);
105
+ }
106
+ else {
107
+ storageMap = this._orderedMapCache.getElementByKey(addressHex);
108
+ }
109
+ this._stats.reads += 1;
110
+ if (storageMap) {
111
+ this._stats.hits += 1;
112
+ return storageMap.get(keyHex);
113
+ }
114
+ }
115
+ /**
116
+ * Marks storage key for address as deleted in cache.
117
+ * @param address - Address
118
+ * @param key - Storage key
119
+ */
120
+ del(address, key) {
121
+ const addressHex = bytesToUnprefixedHex(address.bytes);
122
+ const keyHex = bytesToUnprefixedHex(key);
123
+ this._saveCachePreState(addressHex, keyHex);
124
+ if (this.DEBUG) {
125
+ this._debug(`Delete storage for ${addressHex}: ${keyHex}`);
126
+ }
127
+ if (this._lruCache) {
128
+ let storageMap = this._lruCache.get(addressHex);
129
+ if (!storageMap) {
130
+ storageMap = new Map();
131
+ }
132
+ storageMap.set(keyHex, hexToBytes('0x80'));
133
+ this._lruCache.set(addressHex, storageMap);
134
+ }
135
+ else {
136
+ let storageMap = this._orderedMapCache.getElementByKey(addressHex);
137
+ if (!storageMap) {
138
+ storageMap = new Map();
139
+ }
140
+ storageMap.set(keyHex, hexToBytes('0x80'));
141
+ this._orderedMapCache.setElement(addressHex, storageMap);
142
+ }
143
+ this._stats.deletions += 1;
144
+ }
145
+ /**
146
+ * Deletes all storage slots for address from the cache
147
+ * @param address
148
+ */
149
+ clearStorage(address) {
150
+ const addressHex = bytesToUnprefixedHex(address.bytes);
151
+ if (this._lruCache) {
152
+ this._lruCache.set(addressHex, new Map());
153
+ }
154
+ else {
155
+ this._orderedMapCache.setElement(addressHex, new Map());
156
+ }
157
+ }
158
+ /**
159
+ * Flushes cache by returning storage slots that have been modified
160
+ * or deleted and resetting the diff cache (at checkpoint height).
161
+ */
162
+ flush() {
163
+ if (this.DEBUG) {
164
+ this._debug(`Flushing cache on checkpoint ${this._checkpoints}`);
165
+ }
166
+ const diffMap = this._diffCache[this._checkpoints];
167
+ const items = [];
168
+ for (const entry of diffMap.entries()) {
169
+ const addressHex = entry[0];
170
+ const diffStorageMap = entry[1];
171
+ let storageMap;
172
+ if (this._lruCache) {
173
+ storageMap = this._lruCache.get(addressHex);
174
+ }
175
+ else {
176
+ storageMap = this._orderedMapCache.getElementByKey(addressHex);
177
+ }
178
+ if (storageMap !== undefined) {
179
+ for (const entry of diffStorageMap.entries()) {
180
+ const keyHex = entry[0];
181
+ const value = storageMap.get(keyHex);
182
+ items.push([addressHex, keyHex, value]);
183
+ }
184
+ }
185
+ else {
186
+ throw EthereumJSErrorWithoutCode('internal error: storage cache map for account should be defined');
187
+ }
188
+ }
189
+ this._diffCache[this._checkpoints] = new Map();
190
+ return items;
191
+ }
192
+ /**
193
+ * Revert changes to cache last checkpoint (no effect on trie).
194
+ */
195
+ revert() {
196
+ this._checkpoints -= 1;
197
+ if (this.DEBUG) {
198
+ this._debug(`Revert to checkpoint ${this._checkpoints}`);
199
+ }
200
+ const diffMap = this._diffCache.pop();
201
+ for (const entry of diffMap.entries()) {
202
+ const addressHex = entry[0];
203
+ const diffStorageMap = entry[1];
204
+ for (const entry of diffStorageMap.entries()) {
205
+ const keyHex = entry[0];
206
+ const value = entry[1];
207
+ if (this._lruCache) {
208
+ const storageMap = this._lruCache.get(addressHex) ?? new Map();
209
+ if (value === undefined) {
210
+ // Value is known not to be in the cache before
211
+ // -> delete from cache
212
+ storageMap.delete(keyHex);
213
+ }
214
+ else {
215
+ // Value is known to be in the cache before
216
+ // (being either some storage value or the RLP-encoded empty Uint8Array)
217
+ storageMap.set(keyHex, value);
218
+ }
219
+ this._lruCache.set(addressHex, storageMap);
220
+ }
221
+ else {
222
+ const storageMap = this._orderedMapCache.getElementByKey(addressHex) ?? new Map();
223
+ if (!value) {
224
+ storageMap.delete(keyHex);
225
+ }
226
+ else {
227
+ storageMap.set(keyHex, value);
228
+ }
229
+ this._orderedMapCache.setElement(addressHex, storageMap);
230
+ }
231
+ }
232
+ }
233
+ }
234
+ /**
235
+ * Commits to current state of cache (no effect on trie).
236
+ */
237
+ commit() {
238
+ this._checkpoints -= 1;
239
+ if (this.DEBUG) {
240
+ this._debug(`Commit to checkpoint ${this._checkpoints}`);
241
+ }
242
+ const higherHeightDiffMap = this._diffCache.pop();
243
+ const lowerHeightDiffMap = this._diffCache[this._checkpoints];
244
+ // Go through diffMap from the pre-commit checkpoint height.
245
+ // 1. Iterate through all state pre states
246
+ // 2. If state pre-state is not in the new (lower) height diff map, take pre commit pre state value
247
+ // 3. If state is in new map, take this one, since this supersedes subsequent changes
248
+ for (const entry of higherHeightDiffMap.entries()) {
249
+ const addressHex = entry[0];
250
+ const higherHeightStorageDiff = entry[1];
251
+ const lowerHeightStorageDiff = lowerHeightDiffMap.get(addressHex) ?? new Map();
252
+ for (const entry of higherHeightStorageDiff.entries()) {
253
+ const keyHex = entry[0];
254
+ if (!lowerHeightStorageDiff.has(keyHex)) {
255
+ const elem = entry[1];
256
+ lowerHeightStorageDiff.set(keyHex, elem);
257
+ }
258
+ }
259
+ lowerHeightDiffMap.set(addressHex, lowerHeightStorageDiff);
260
+ }
261
+ }
262
+ /**
263
+ * Marks current state of cache as checkpoint, which can
264
+ * later on be reverted or committed.
265
+ */
266
+ checkpoint() {
267
+ this._checkpoints += 1;
268
+ if (this.DEBUG) {
269
+ this._debug(`New checkpoint ${this._checkpoints}`);
270
+ }
271
+ this._diffCache.push(new Map());
272
+ }
273
+ /**
274
+ * Returns the size of the cache
275
+ * @returns
276
+ */
277
+ size() {
278
+ if (this._lruCache) {
279
+ return this._lruCache.size;
280
+ }
281
+ else {
282
+ return this._orderedMapCache.size();
283
+ }
284
+ }
285
+ /**
286
+ * Returns a dict with cache stats
287
+ * @param reset
288
+ */
289
+ stats(reset = true) {
290
+ const stats = { ...this._stats };
291
+ stats.size = this.size();
292
+ if (reset) {
293
+ this._stats = {
294
+ size: 0,
295
+ reads: 0,
296
+ hits: 0,
297
+ writes: 0,
298
+ deletions: 0,
299
+ };
300
+ }
301
+ return stats;
302
+ }
303
+ /**
304
+ * Clears cache.
305
+ */
306
+ clear() {
307
+ if (this.DEBUG) {
308
+ this._debug(`Clear cache`);
309
+ }
310
+ if (this._lruCache) {
311
+ this._lruCache.clear();
312
+ }
313
+ else {
314
+ this._orderedMapCache.clear();
315
+ }
316
+ }
317
+ /**
318
+ * Dumps the RLP-encoded storage values for an `account` specified by `address`.
319
+ * @param address - The address of the `account` to return storage for
320
+ * @returns {StorageCacheMap | undefined} - The storage values for the `account` or undefined if the `account` is not in the cache
321
+ */
322
+ dump(address) {
323
+ let storageMap;
324
+ if (this._lruCache) {
325
+ storageMap = this._lruCache.get(bytesToUnprefixedHex(address.bytes));
326
+ }
327
+ else {
328
+ storageMap = this._orderedMapCache?.getElementByKey(bytesToUnprefixedHex(address.bytes));
329
+ }
330
+ return storageMap;
331
+ }
332
+ }
333
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/cache/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export type CacheType = (typeof CacheType)[keyof typeof CacheType];
2
+ export declare const CacheType: {
3
+ readonly LRU: "lru";
4
+ readonly ORDERED_MAP: "ordered_map";
5
+ };
6
+ export interface CacheOpts {
7
+ /**
8
+ * Size of the cache (only for LRU cache)
9
+ *
10
+ * Default: 100000 (account cache) / 20000 (storage cache) / 20000 (code cache)
11
+ *
12
+ * Note: the cache/trie interplay mechanism is designed in a way that
13
+ * the theoretical number of max modified accounts between two flush operations
14
+ * should be smaller than the cache size, otherwise the cache will "forget" the
15
+ * old modifications resulting in an incomplete set of trie-flushed accounts.
16
+ */
17
+ size: number;
18
+ /**
19
+ * Cache type to use.
20
+ *
21
+ * Available options:
22
+ *
23
+ * ORDERED_MAP: Cache with no fixed upper bound and dynamic allocation,
24
+ * use for dynamic setups like testing or similar.
25
+ *
26
+ * LRU: LRU cache with pre-allocation of memory and a fixed size.
27
+ * Use for larger and more persistent caches.
28
+ */
29
+ type: CacheType;
30
+ }
31
+ export interface CachesStateManagerOpts {
32
+ account?: Partial<CacheOpts>;
33
+ code?: Partial<CacheOpts>;
34
+ storage?: Partial<CacheOpts>;
35
+ }
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cache/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAA;AAElE,eAAO,MAAM,SAAS;;;CAGZ,CAAA;AAEV,MAAM,WAAW,SAAS;IACxB;;;;;;;;;OASG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;;;OAUG;IACH,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC7B"}
@@ -0,0 +1,5 @@
1
+ export const CacheType = {
2
+ LRU: 'lru',
3
+ ORDERED_MAP: 'ordered_map',
4
+ };
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cache/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,KAAK;IACV,WAAW,EAAE,aAAa;CAClB,CAAA"}
@@ -0,0 +1,8 @@
1
+ export * from './cache/index.ts';
2
+ export * from './merkleStateManager.ts';
3
+ export * from './proof/index.ts';
4
+ export * from './rpcStateManager.ts';
5
+ export * from './simpleStateManager.ts';
6
+ export * from './statefulBinaryTreeStateManager.ts';
7
+ export * from './types.ts';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qCAAqC,CAAA;AACnD,cAAc,YAAY,CAAA"}
@@ -0,0 +1,8 @@
1
+ export * from "./cache/index.js";
2
+ export * from "./merkleStateManager.js";
3
+ export * from "./proof/index.js";
4
+ export * from "./rpcStateManager.js";
5
+ export * from "./simpleStateManager.js";
6
+ export * from "./statefulBinaryTreeStateManager.js";
7
+ export * from "./types.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qCAAqC,CAAA;AACnD,cAAc,YAAY,CAAA"}