@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":"account.js","sourceRoot":"","sources":["../../../src/cache/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Debugger } from 'debug';
2
+ export declare class Cache {
3
+ _debug: Debugger;
4
+ _checkpoints: number;
5
+ _stats: {
6
+ size: number;
7
+ reads: number;
8
+ hits: number;
9
+ writes: number;
10
+ deletions: number;
11
+ };
12
+ /**
13
+ * StateManager cache is run in DEBUG mode (default: false)
14
+ * Taken from DEBUG environment variable
15
+ *
16
+ * Safeguards on debug() calls are added for
17
+ * performance reasons to avoid string literal evaluation
18
+ * @hidden
19
+ */
20
+ protected readonly DEBUG: boolean;
21
+ constructor();
22
+ }
23
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/cache/cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,qBAAa,KAAK;IAChB,MAAM,EAAE,QAAQ,CAAA;IAEhB,YAAY,SAAI;IAEhB,MAAM;;;;;;MAML;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAQ;;CAQ1C"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cache = void 0;
4
+ const util_1 = require("@feelyourprotocol/util");
5
+ const debug_1 = require("debug");
6
+ class Cache {
7
+ constructor() {
8
+ this._checkpoints = 0;
9
+ this._stats = {
10
+ size: 0,
11
+ reads: 0,
12
+ hits: 0,
13
+ writes: 0,
14
+ deletions: 0,
15
+ };
16
+ /**
17
+ * StateManager cache is run in DEBUG mode (default: false)
18
+ * Taken from DEBUG environment variable
19
+ *
20
+ * Safeguards on debug() calls are added for
21
+ * performance reasons to avoid string literal evaluation
22
+ * @hidden
23
+ */
24
+ this.DEBUG = false;
25
+ // Skip DEBUG calls unless 'ethjs' included in environmental DEBUG variables
26
+ this.DEBUG = (0, util_1.isDebugEnabled)('ethjs');
27
+ this._debug = (0, debug_1.default)('statemanager:cache');
28
+ }
29
+ }
30
+ exports.Cache = Cache;
31
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/cache/cache.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,iCAAgC;AAIhC,MAAa,KAAK;IAuBhB;QApBA,iBAAY,GAAG,CAAC,CAAA;QAEhB,WAAM,GAAG;YACP,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;SACb,CAAA;QAED;;;;;;;WAOG;QACgB,UAAK,GAAY,KAAK,CAAA;QAGvC,4EAA4E;QAC5E,IAAI,CAAC,KAAK,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAA;QAEpC,IAAI,CAAC,MAAM,GAAG,IAAA,eAAY,EAAC,oBAAoB,CAAC,CAAA;IAClD,CAAC;CACF;AA7BD,sBA6BC"}
@@ -0,0 +1,19 @@
1
+ import { AccountCache } from './account.ts';
2
+ import { CodeCache } from './code.ts';
3
+ import { StorageCache } from './storage.ts';
4
+ import { type CacheOpts, type CachesStateManagerOpts } from './types.ts';
5
+ import type { Address } from '@feelyourprotocol/util';
6
+ export declare class Caches {
7
+ account?: AccountCache;
8
+ code?: CodeCache;
9
+ storage?: StorageCache;
10
+ settings: Record<'account' | 'code' | 'storage', CacheOpts>;
11
+ constructor(opts?: CachesStateManagerOpts);
12
+ checkpoint(): void;
13
+ clear(): void;
14
+ commit(): void;
15
+ deleteAccount(address: Address): void;
16
+ shallowCopy(downlevelCaches: boolean): Caches | undefined;
17
+ revert(): void;
18
+ }
19
+ //# sourceMappingURL=caches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caches.d.ts","sourceRoot":"","sources":["../../../src/cache/caches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,KAAK,SAAS,EAAa,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,qBAAa,MAAM;IACjB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB,QAAQ,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,CAAA;gBAE/C,IAAI,GAAE,sBAA2B;IA4C7C,UAAU;IAMV,KAAK;IAML,MAAM;IAMN,aAAa,CAAC,OAAO,EAAE,OAAO;IAM9B,WAAW,CAAC,eAAe,EAAE,OAAO;IAqCpC,MAAM;CAKP"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Caches = void 0;
4
+ const account_ts_1 = require("./account.js");
5
+ const code_ts_1 = require("./code.js");
6
+ const storage_ts_1 = require("./storage.js");
7
+ const types_ts_1 = require("./types.js");
8
+ class Caches {
9
+ constructor(opts = {}) {
10
+ const accountSettings = {
11
+ type: opts.account?.type ?? types_ts_1.CacheType.ORDERED_MAP,
12
+ size: opts.account?.size ?? 100000,
13
+ };
14
+ const codeSettings = {
15
+ type: opts.code?.type ?? types_ts_1.CacheType.ORDERED_MAP,
16
+ size: opts.code?.size ?? 20000,
17
+ };
18
+ const storageSettings = {
19
+ type: opts.storage?.type ?? types_ts_1.CacheType.ORDERED_MAP,
20
+ size: opts.storage?.size ?? 20000,
21
+ };
22
+ this.settings = {
23
+ account: accountSettings,
24
+ code: codeSettings,
25
+ storage: storageSettings,
26
+ };
27
+ if (this.settings.account.size !== 0) {
28
+ this.account = new account_ts_1.AccountCache({
29
+ size: this.settings.account.size,
30
+ type: this.settings.account.type,
31
+ });
32
+ }
33
+ if (this.settings.code.size !== 0) {
34
+ this.code = new code_ts_1.CodeCache({
35
+ size: this.settings.code.size,
36
+ type: this.settings.code.type,
37
+ });
38
+ }
39
+ if (this.settings.storage.size !== 0) {
40
+ this.storage = new storage_ts_1.StorageCache({
41
+ size: this.settings.storage.size,
42
+ type: this.settings.storage.type,
43
+ });
44
+ }
45
+ }
46
+ checkpoint() {
47
+ this.account?.checkpoint();
48
+ this.storage?.checkpoint();
49
+ this.code?.checkpoint();
50
+ }
51
+ clear() {
52
+ this.account?.clear();
53
+ this.storage?.clear();
54
+ this.code?.clear();
55
+ }
56
+ commit() {
57
+ this.account?.commit();
58
+ this.storage?.commit();
59
+ this.code?.commit();
60
+ }
61
+ deleteAccount(address) {
62
+ this.code?.del(address);
63
+ this.account?.del(address);
64
+ this.storage?.clearStorage(address);
65
+ }
66
+ shallowCopy(downlevelCaches) {
67
+ let cacheOptions;
68
+ // Account cache options
69
+ if (this.settings.account.size !== 0) {
70
+ cacheOptions = {
71
+ account: downlevelCaches
72
+ ? { size: this.settings.account.size, type: types_ts_1.CacheType.ORDERED_MAP }
73
+ : this.settings.account,
74
+ };
75
+ }
76
+ // Storage cache options
77
+ if (this.settings.storage.size !== 0) {
78
+ cacheOptions = {
79
+ ...cacheOptions,
80
+ storage: downlevelCaches
81
+ ? { size: this.settings.storage.size, type: types_ts_1.CacheType.ORDERED_MAP }
82
+ : this.settings.storage,
83
+ };
84
+ }
85
+ // Code cache options
86
+ if (this.settings.code.size !== 0) {
87
+ cacheOptions = {
88
+ ...cacheOptions,
89
+ code: downlevelCaches
90
+ ? { size: this.settings.code.size, type: types_ts_1.CacheType.ORDERED_MAP }
91
+ : this.settings.code,
92
+ };
93
+ }
94
+ if (cacheOptions !== undefined) {
95
+ return new Caches(cacheOptions);
96
+ }
97
+ else
98
+ return undefined;
99
+ }
100
+ revert() {
101
+ this.account?.revert();
102
+ this.storage?.revert();
103
+ this.code?.revert();
104
+ }
105
+ }
106
+ exports.Caches = Caches;
107
+ //# sourceMappingURL=caches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caches.js","sourceRoot":"","sources":["../../../src/cache/caches.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { OrderedMap } from '@js-sdsl/ordered-map';
2
+ import { LRUCache } from 'lru-cache';
3
+ import { Cache } from './cache.ts';
4
+ import type { Address } from '@feelyourprotocol/util';
5
+ import type { CacheOpts } from './types.ts';
6
+ /**
7
+ * Represents a cached code element.
8
+ */
9
+ type CodeCacheElement = {
10
+ code: Uint8Array | undefined;
11
+ };
12
+ export declare class CodeCache extends Cache {
13
+ _lruCache: LRUCache<string, CodeCacheElement> | undefined;
14
+ _orderedMapCache: OrderedMap<string, CodeCacheElement> | undefined;
15
+ /**
16
+ * Diff cache collecting the state of the cache
17
+ * at the beginning of checkpoint height
18
+ * (respectively: before a first modification)
19
+ *
20
+ * If the whole cache element is undefined (in contrast
21
+ * to the code), the element didn't exist in the cache
22
+ * before.
23
+ */
24
+ _diffCache: Map<string, CodeCacheElement | undefined>[];
25
+ constructor(opts: CacheOpts);
26
+ /**
27
+ * Saves the state of the code cache before making changes to it.
28
+ *
29
+ * @param cacheKeyHex Account key for which code is being modified.
30
+ */
31
+ _saveCachePreState(cacheKeyHex: string): void;
32
+ /**
33
+ * Puts code into the cache under its hash.
34
+ *
35
+ * @param address - Address of account code is being modified for.
36
+ * @param code - Bytecode or undefined if code doesn't exist.
37
+ */
38
+ put(address: Address, code: Uint8Array | undefined): void;
39
+ /**
40
+ * Returns the queried code or undefined if it doesn't exist.
41
+ *
42
+ * @param address - Account address for which code is being fetched.
43
+ */
44
+ get(address: Address): CodeCacheElement | undefined;
45
+ /**
46
+ * Marks code as deleted in the cache.
47
+ *
48
+ * @param address - Account address for which code is being fetched.
49
+ */
50
+ del(address: Address): void;
51
+ /**
52
+ * Flushes the cache by returning codes that have been modified
53
+ * or deleted and resetting the diff cache (at checkpoint height).
54
+ */
55
+ flush(): [string, CodeCacheElement][];
56
+ /**
57
+ * Revert changes to the cache to the last checkpoint (no effect on trie).
58
+ */
59
+ revert(): void;
60
+ /**
61
+ * Commits the current state of the cache (no effect on trie).
62
+ */
63
+ commit(): void;
64
+ /**
65
+ * Marks the current state of the cache as a checkpoint, which can
66
+ * later be reverted or committed.
67
+ */
68
+ checkpoint(): void;
69
+ /**
70
+ * Returns the size of the cache
71
+ * @returns
72
+ */
73
+ size(): number;
74
+ /**
75
+ * Returns a dictionary with cache statistics.
76
+ *
77
+ * @param reset - Whether to reset statistics after retrieval.
78
+ * @returns A dictionary with cache statistics.
79
+ */
80
+ stats(reset?: boolean): any;
81
+ /**
82
+ * Clears the cache.
83
+ */
84
+ clear(): void;
85
+ }
86
+ export {};
87
+ //# sourceMappingURL=code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/cache/code.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;;GAEG;AACH,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;CAC7B,CAAA;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAA;IACzD,gBAAgB,EAAE,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAA;IAElE;;;;;;;;OAQG;IACH,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC,EAAE,CAAK;gBAEhD,IAAI,EAAE,SAAS;IAe3B;;;;OAIG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM;IAatC;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI;IAmBzD;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS;IAoBnD;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAoB3B;;;OAGG;IACH,KAAK,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE;IA0BrC;;OAEG;IACH,MAAM,IAAI,IAAI;IAyBd;;OAEG;IACH,MAAM,IAAI,IAAI;IAgBd;;;OAGG;IACH,UAAU,IAAI,IAAI;IAQlB;;;OAGG;IACH,IAAI;IAQJ;;;;;OAKG;IACH,KAAK,CAAC,KAAK,UAAO,GAAG,GAAG;IAexB;;OAEG;IACH,KAAK,IAAI,IAAI;CAUd"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeCache = void 0;
4
+ const util_1 = require("@feelyourprotocol/util");
5
+ const ordered_map_1 = require("@js-sdsl/ordered-map");
6
+ const debug_1 = require("debug");
7
+ const lru_cache_1 = require("lru-cache");
8
+ const cache_ts_1 = require("./cache.js");
9
+ const types_ts_1 = require("./types.js");
10
+ class CodeCache extends cache_ts_1.Cache {
11
+ constructor(opts) {
12
+ super();
13
+ /**
14
+ * Diff cache collecting the state of the cache
15
+ * at the beginning of checkpoint height
16
+ * (respectively: before a first modification)
17
+ *
18
+ * If the whole cache element is undefined (in contrast
19
+ * to the code), the element didn't exist in the cache
20
+ * before.
21
+ */
22
+ this._diffCache = [];
23
+ if (opts.type === types_ts_1.CacheType.LRU) {
24
+ this._lruCache = new lru_cache_1.LRUCache({
25
+ max: opts.size,
26
+ updateAgeOnGet: true,
27
+ });
28
+ }
29
+ else {
30
+ this._orderedMapCache = new ordered_map_1.OrderedMap();
31
+ }
32
+ this._diffCache.push(new Map());
33
+ this._debug = (0, debug_1.default)('statemanager:cache:code');
34
+ }
35
+ /**
36
+ * Saves the state of the code cache before making changes to it.
37
+ *
38
+ * @param cacheKeyHex Account key for which code is being modified.
39
+ */
40
+ _saveCachePreState(cacheKeyHex) {
41
+ const diffMap = this._diffCache[this._checkpoints];
42
+ if (!diffMap.has(cacheKeyHex)) {
43
+ let oldElem;
44
+ if (this._lruCache) {
45
+ oldElem = this._lruCache.get(cacheKeyHex);
46
+ }
47
+ else {
48
+ oldElem = this._orderedMapCache.getElementByKey(cacheKeyHex);
49
+ }
50
+ diffMap.set(cacheKeyHex, oldElem);
51
+ }
52
+ }
53
+ /**
54
+ * Puts code into the cache under its hash.
55
+ *
56
+ * @param address - Address of account code is being modified for.
57
+ * @param code - Bytecode or undefined if code doesn't exist.
58
+ */
59
+ put(address, code) {
60
+ // Using deprecated bytesToUnprefixedHex for performance: used as Map keys for cache lookups.
61
+ const addressHex = (0, util_1.bytesToUnprefixedHex)(address.bytes);
62
+ this._saveCachePreState(addressHex);
63
+ const elem = {
64
+ code,
65
+ };
66
+ if (this.DEBUG) {
67
+ this._debug(`Put code ${addressHex}`);
68
+ }
69
+ if (this._lruCache) {
70
+ this._lruCache.set(addressHex, elem);
71
+ }
72
+ else {
73
+ this._orderedMapCache.setElement(addressHex, elem);
74
+ }
75
+ this._stats.writes += 1;
76
+ }
77
+ /**
78
+ * Returns the queried code or undefined if it doesn't exist.
79
+ *
80
+ * @param address - Account address for which code is being fetched.
81
+ */
82
+ get(address) {
83
+ // Using deprecated bytesToUnprefixedHex for performance: used as Map keys for cache lookups.
84
+ const addressHex = (0, util_1.bytesToUnprefixedHex)(address.bytes);
85
+ if (this.DEBUG) {
86
+ this._debug(`Get code ${addressHex}`);
87
+ }
88
+ let elem;
89
+ if (this._lruCache) {
90
+ elem = this._lruCache.get(addressHex);
91
+ }
92
+ else {
93
+ elem = this._orderedMapCache.getElementByKey(addressHex);
94
+ }
95
+ this._stats.reads += 1;
96
+ if (elem) {
97
+ this._stats.hits += 1;
98
+ }
99
+ return elem;
100
+ }
101
+ /**
102
+ * Marks code as deleted in the cache.
103
+ *
104
+ * @param address - Account address for which code is being fetched.
105
+ */
106
+ del(address) {
107
+ // Using deprecated bytesToUnprefixedHex for performance: used as Map keys for cache lookups.
108
+ const addressHex = (0, util_1.bytesToUnprefixedHex)(address.bytes);
109
+ this._saveCachePreState(addressHex);
110
+ if (this.DEBUG) {
111
+ this._debug(`Delete code ${addressHex}`);
112
+ }
113
+ if (this._lruCache) {
114
+ this._lruCache.set(addressHex, {
115
+ code: undefined,
116
+ });
117
+ }
118
+ else {
119
+ this._orderedMapCache.setElement(addressHex, {
120
+ code: undefined,
121
+ });
122
+ }
123
+ this._stats.deletions += 1;
124
+ }
125
+ /**
126
+ * Flushes the cache by returning codes that have been modified
127
+ * or deleted and resetting the diff cache (at checkpoint height).
128
+ */
129
+ flush() {
130
+ if (this.DEBUG) {
131
+ this._debug(`Flushing cache on checkpoint ${this._checkpoints}`);
132
+ }
133
+ const diffMap = this._diffCache[this._checkpoints];
134
+ const items = [];
135
+ for (const entry of diffMap.entries()) {
136
+ const cacheKeyHex = entry[0];
137
+ let elem;
138
+ if (this._lruCache) {
139
+ elem = this._lruCache.get(cacheKeyHex);
140
+ }
141
+ else {
142
+ elem = this._orderedMapCache.getElementByKey(cacheKeyHex);
143
+ }
144
+ if (elem !== undefined) {
145
+ items.push([cacheKeyHex, elem]);
146
+ }
147
+ }
148
+ this._diffCache[this._checkpoints] = new Map();
149
+ return items;
150
+ }
151
+ /**
152
+ * Revert changes to the cache to the last checkpoint (no effect on trie).
153
+ */
154
+ revert() {
155
+ this._checkpoints -= 1;
156
+ if (this.DEBUG) {
157
+ this._debug(`Revert to checkpoint ${this._checkpoints}`);
158
+ }
159
+ const diffMap = this._diffCache.pop();
160
+ for (const entry of diffMap.entries()) {
161
+ const addressHex = entry[0];
162
+ const elem = entry[1];
163
+ if (elem === undefined) {
164
+ if (this._lruCache) {
165
+ this._lruCache.delete(addressHex);
166
+ }
167
+ else {
168
+ this._orderedMapCache.eraseElementByKey(addressHex);
169
+ }
170
+ }
171
+ else {
172
+ if (this._lruCache) {
173
+ this._lruCache.set(addressHex, elem);
174
+ }
175
+ else {
176
+ this._orderedMapCache.setElement(addressHex, elem);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ /**
182
+ * Commits the current state of the cache (no effect on trie).
183
+ */
184
+ commit() {
185
+ this._checkpoints -= 1;
186
+ if (this.DEBUG) {
187
+ this._debug(`Commit to checkpoint ${this._checkpoints}`);
188
+ }
189
+ const diffMap = this._diffCache.pop();
190
+ for (const entry of diffMap.entries()) {
191
+ const addressHex = entry[0];
192
+ const oldEntry = this._diffCache[this._checkpoints].has(addressHex);
193
+ if (!oldEntry) {
194
+ const elem = entry[1];
195
+ this._diffCache[this._checkpoints].set(addressHex, elem);
196
+ }
197
+ }
198
+ }
199
+ /**
200
+ * Marks the current state of the cache as a checkpoint, which can
201
+ * later be reverted or committed.
202
+ */
203
+ checkpoint() {
204
+ this._checkpoints += 1;
205
+ if (this.DEBUG) {
206
+ this._debug(`New checkpoint ${this._checkpoints}`);
207
+ }
208
+ this._diffCache.push(new Map());
209
+ }
210
+ /**
211
+ * Returns the size of the cache
212
+ * @returns
213
+ */
214
+ size() {
215
+ if (this._lruCache) {
216
+ return this._lruCache.size;
217
+ }
218
+ else {
219
+ return this._orderedMapCache.size();
220
+ }
221
+ }
222
+ /**
223
+ * Returns a dictionary with cache statistics.
224
+ *
225
+ * @param reset - Whether to reset statistics after retrieval.
226
+ * @returns A dictionary with cache statistics.
227
+ */
228
+ stats(reset = true) {
229
+ const stats = { ...this._stats };
230
+ stats.size = this.size();
231
+ if (reset) {
232
+ this._stats = {
233
+ size: 0,
234
+ reads: 0,
235
+ hits: 0,
236
+ writes: 0,
237
+ deletions: 0,
238
+ };
239
+ }
240
+ return stats;
241
+ }
242
+ /**
243
+ * Clears the cache.
244
+ */
245
+ clear() {
246
+ if (this.DEBUG) {
247
+ this._debug(`Clear cache`);
248
+ }
249
+ if (this._lruCache) {
250
+ this._lruCache.clear();
251
+ }
252
+ else {
253
+ this._orderedMapCache.clear();
254
+ }
255
+ }
256
+ }
257
+ exports.CodeCache = CodeCache;
258
+ //# sourceMappingURL=code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../../../src/cache/code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './account.ts';
2
+ export * from './caches.ts';
3
+ export * from './code.ts';
4
+ export * from './originalStorageCache.ts';
5
+ export * from './storage.ts';
6
+ export * from './types.ts';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,2BAA2B,CAAA;AACzC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,23 @@
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("./account.js"), exports);
18
+ __exportStar(require("./caches.js"), exports);
19
+ __exportStar(require("./code.js"), exports);
20
+ __exportStar(require("./originalStorageCache.js"), exports);
21
+ __exportStar(require("./storage.js"), exports);
22
+ __exportStar(require("./types.js"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,8CAA2B;AAC3B,4CAAyB;AACzB,4DAAyC;AACzC,+CAA4B;AAC5B,6CAA0B"}
@@ -0,0 +1,21 @@
1
+ import type { Address } from '@feelyourprotocol/util';
2
+ type getStorage = (address: Address, key: Uint8Array) => Promise<Uint8Array>;
3
+ /**
4
+ * Helper class to cache original storage values (so values already being present in
5
+ * the pre-state of a call), mainly for correct gas cost calculation in EVM/VM.
6
+ *
7
+ * TODO: Usage of this class is very implicit through the injected `getStorage()`
8
+ * method bound to the calling state manager. It should be examined if there are alternative
9
+ * designs being more transparent and direct along the next breaking release round.
10
+ *
11
+ */
12
+ export declare class OriginalStorageCache {
13
+ private map;
14
+ private getStorage;
15
+ constructor(getStorage: getStorage);
16
+ get(address: Address, key: Uint8Array): Promise<Uint8Array>;
17
+ put(address: Address, key: Uint8Array, value: Uint8Array): void;
18
+ clear(): void;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=originalStorageCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"originalStorageCache.d.ts","sourceRoot":"","sources":["../../../src/cache/originalStorageCache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAE5E;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAsC;IACjD,OAAO,CAAC,UAAU,CAAY;gBAClB,UAAU,EAAE,UAAU;IAK5B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBjE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;IAcxD,KAAK,IAAI,IAAI;CAGd"}