@warptoad/skinny-fat-imt-js 0.0.3 → 0.0.5
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.
- package/dist/Trees.d.ts +17 -4
- package/dist/Trees.d.ts.map +1 -1
- package/dist/Trees.js +113 -56
- package/dist/Trees.js.map +1 -1
- package/dist/eventScanning.d.ts.map +1 -1
- package/dist/eventScanning.js +2 -2
- package/dist/eventScanning.js.map +1 -1
- package/package.json +1 -1
- package/src/Trees.ts +132 -62
- package/src/eventScanning.ts +31 -28
package/dist/Trees.d.ts
CHANGED
|
@@ -602,6 +602,11 @@ export type CachedTree = {
|
|
|
602
602
|
lastSynced: bigint;
|
|
603
603
|
insertOnlyTree?: boolean;
|
|
604
604
|
};
|
|
605
|
+
/** A {@link LeanIMT} without the four methods that mutate it. `leaves` already hands back a copy. */
|
|
606
|
+
export type ReadonlyLeanIMT = Omit<LeanIMT<bigint>, "insert" | "insertMany" | "update" | "updateMany">;
|
|
607
|
+
export type ReadonlyCachedTree = Readonly<Omit<CachedTree, "tree"> & {
|
|
608
|
+
tree: ReadonlyLeanIMT;
|
|
609
|
+
}>;
|
|
605
610
|
/**
|
|
606
611
|
* A detached LeanIMT holding the same leaves *and* internal nodes as `tree`, so it can be grown
|
|
607
612
|
* without touching the original. Copies the nodes rather than replaying the leaves on purpose:
|
|
@@ -609,10 +614,17 @@ export type CachedTree = {
|
|
|
609
614
|
* growing a cached tree is trying to avoid. This is array copies only, no hashing.
|
|
610
615
|
*/
|
|
611
616
|
export declare function copyTree(tree: LeanIMT<bigint>, hashFunc: LeanIMTHashFunction): LeanIMT<bigint>;
|
|
617
|
+
export declare function copyCachedTree(cached: CachedTree, hashFunc: LeanIMTHashFunction): CachedTree;
|
|
612
618
|
export declare class Trees {
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
619
|
+
private _cache;
|
|
620
|
+
/**
|
|
621
|
+
* The trees this instance has synced, keyed by treeId. Read only: growing one of these behind the
|
|
622
|
+
* lib's back leaves it claiming a `lastSynced` its leaves don't match, and the next sync merges
|
|
623
|
+
* into it as if it were the state at that block. {@link copyCachedTree} gives you one to keep.
|
|
624
|
+
*/
|
|
625
|
+
get cache(): Readonly<{
|
|
626
|
+
readonly [treeId: Hex]: ReadonlyCachedTree;
|
|
627
|
+
}>;
|
|
616
628
|
/** last known size per tree, with the block it was read at. See {@link getTreeSizeStorage}. */
|
|
617
629
|
private sizes;
|
|
618
630
|
contractAddress: Address;
|
|
@@ -669,12 +681,13 @@ export declare class Trees {
|
|
|
669
681
|
}>;
|
|
670
682
|
getContract(): Promise<ReadableContract>;
|
|
671
683
|
getOldestSyncTreeId(treeIds: Hex[]): Hex;
|
|
672
|
-
getOldestSyncBlock(treeIds: bigint[]): bigint;
|
|
684
|
+
getOldestSyncBlock(treeIds: bigint[], chainId: number): bigint;
|
|
673
685
|
getTreeType(treeId: Hex, chainId: number): Promise<TREE_TYPE>;
|
|
674
686
|
getLeavesStorage(treeId: Hex, chainId: number, startIndex: bigint, endIndex: bigint, blockNumber: bigint): Promise<readonly bigint[]>;
|
|
675
687
|
getTreeSizeStorage(treeId: Hex, chainId: number, blockNumber: bigint): Promise<bigint>;
|
|
676
688
|
getRootStorage(treeId: Hex, chainId: number, blockNumber: bigint): Promise<bigint>;
|
|
677
689
|
initTree(treeId: Hex, chainId: number): Promise<CachedTree>;
|
|
690
|
+
private initTreeCached;
|
|
678
691
|
}
|
|
679
692
|
export declare function identifyTree(treeId: bigint, contract: AnyContract): Promise<TREE_TYPE>;
|
|
680
693
|
type SyncState = {
|
package/dist/Trees.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trees.d.ts","sourceRoot":"","sources":["../src/Trees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAsB,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,GAAG,EAAE,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AAI1I,OAAO,EAAsD,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQnH,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,EAKhB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAEvF,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;CACzD,CAAA;AAED,KAAK,kBAAkB,GAAG,SAAS;IAC/B,GAAG,OAAO,gBAAgB;IAC1B,GAAG,OAAO,aAAa;CAC1B,CAAC;AAEF,KAAK,gBAAgB,GAAG,SAAS;IAC7B,GAAG,OAAO,cAAc;IACxB,GAAG,OAAO,WAAW;IACrB,GAAG,OAAO,aAAa;CAC1B,CAAA;AAED,KAAK,WAAW,GAAG,SAAS,CAAC,GAAG,kBAAkB,EAAE,GAAG,gBAAgB,CAAC,CAAA;AAExE;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAG3G,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGD,CAAC;AAE/B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAID,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAC9F,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAE1F,MAAM,MAAM,2BAA2B,GAAG,qBAAqB,CAAC,OAAO,cAAc,EAAE,YAAY,CAAC,CAAC;AACrG,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,OAAO,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACzG,MAAM,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,OAAO,WAAW,EAAE,YAAY,CAAC,CAAC;AAC/F,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,OAAO,aAAa,EAAE,YAAY,CAAC,CAAC;AAEnG,eAAO,MAAM,UAAU;;;;;CAKiB,CAAC;AAOzC,oBAAY,SAAS;IACjB,OAAO,IAAA;IACP,WAAW,IAAA;IACX,SAAS,IAAA;IACT,cAAc,IAAA;IACd,YAAY,IAAA;IACZ,YAAY,IAAA;CACf;AAED,eAAO,MAAM,wBAAwB,EAAE,mBAAqE,CAAA;AAE5G,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEjH;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAM9F;AAED,qBAAa,KAAK;IACd,
|
|
1
|
+
{"version":3,"file":"Trees.d.ts","sourceRoot":"","sources":["../src/Trees.ts"],"names":[],"mappings":"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"}
|
package/dist/Trees.js
CHANGED
|
@@ -50,8 +50,19 @@ export function copyTree(tree, hashFunc) {
|
|
|
50
50
|
copy._nodes = nodes.map((level) => level.slice());
|
|
51
51
|
return copy;
|
|
52
52
|
}
|
|
53
|
+
export function copyCachedTree(cached, hashFunc) {
|
|
54
|
+
return { ...cached, tree: copyTree(cached.tree, hashFunc) };
|
|
55
|
+
}
|
|
53
56
|
export class Trees {
|
|
54
|
-
|
|
57
|
+
_cache = {};
|
|
58
|
+
/**
|
|
59
|
+
* The trees this instance has synced, keyed by treeId. Read only: growing one of these behind the
|
|
60
|
+
* lib's back leaves it claiming a `lastSynced` its leaves don't match, and the next sync merges
|
|
61
|
+
* into it as if it were the state at that block. {@link copyCachedTree} gives you one to keep.
|
|
62
|
+
*/
|
|
63
|
+
get cache() {
|
|
64
|
+
return this._cache;
|
|
65
|
+
}
|
|
55
66
|
/** last known size per tree, with the block it was read at. See {@link getTreeSizeStorage}. */
|
|
56
67
|
sizes = {};
|
|
57
68
|
contractAddress;
|
|
@@ -67,18 +78,28 @@ export class Trees {
|
|
|
67
78
|
let syncedTrees;
|
|
68
79
|
// fullNode mode syncs all cached trees, non fullNode mode will auto discover them, so left empty
|
|
69
80
|
const treeIdsNotSet = treeIds === undefined || treeIds.length === 0;
|
|
70
|
-
treeIds = treeIdsNotSet ? fullNodeMode ? Object.keys(this.
|
|
81
|
+
treeIds = treeIdsNotSet ? fullNodeMode ? Object.keys(this._cache).map((v) => BigInt(v)) : [] : treeIds;
|
|
71
82
|
if (autoDiscovery && fullNodeMode) {
|
|
72
83
|
throw new Error(`auto treeId discovery not supported in fullNodeMode, please provide treeIds to sync. Or turn off fullNodeMode: \`Trees.sync([],{fullNodeMode:false})\``);
|
|
73
84
|
}
|
|
85
|
+
// TODO if fullNode mode is on but one treeType is event only, it breaks. But it should still try and only warn it is scanning more then 1 year of events if it actually needs to
|
|
74
86
|
if (fullNodeMode) {
|
|
75
87
|
syncedTrees = await this.syncTreesStorage(treeIds, { chunkSize: storageChunkSize, attemptFastSizeMatch, blockNumber });
|
|
76
88
|
// syncing to a specific root is not possible with pure storage, so we sync with storage first
|
|
77
89
|
// then syncTreesEvent will look for the root and try to trim off the leaves that happened after the root we want
|
|
78
90
|
// in tree with only inserts this will work and will allows us to get any tree that is up to 1 year old
|
|
79
91
|
// if there are updates or resets, currently syncTreesEvent will have to go down till it found all leaves
|
|
92
|
+
// TODO optimize the syncToRoot + fullNodeMode case. The storage read above already has every leaf
|
|
93
|
+
// at head, so the event pass only needs the update events between head and the NewRoot we want:
|
|
94
|
+
// replay those backwards onto the storage tree (and shrink it, which it already does) and stop at
|
|
95
|
+
// that NewRoot, instead of being free to walk all the way down to the deployment block.
|
|
96
|
+
// Until that lands, a caller after a specific root is better off with fullNodeMode: false.
|
|
97
|
+
// TODO
|
|
80
98
|
if (syncToRoot !== undefined) {
|
|
81
|
-
|
|
99
|
+
const someNotSynced = treeIds?.some((v) => syncedTrees[toHex(v)].tree.root !== syncToRoot);
|
|
100
|
+
if (someNotSynced) {
|
|
101
|
+
syncedTrees = await this.syncTreesEvent(treeIds, { blockNumber, attemptFastSizeMatch, syncToRoot, chunkSize: eventChunkSize, insertOnlyTree, autoDiscovery, hasRepeatedLeafs });
|
|
102
|
+
}
|
|
82
103
|
}
|
|
83
104
|
}
|
|
84
105
|
else {
|
|
@@ -97,7 +118,7 @@ export class Trees {
|
|
|
97
118
|
*/
|
|
98
119
|
async syncTreesStorage(treeIds = undefined, { chunkSize = 2000n, attemptFastSizeMatch = true, blockNumber } = {}) {
|
|
99
120
|
// default syncs all previously synced trees
|
|
100
|
-
treeIds ??= Object.keys(this.
|
|
121
|
+
treeIds ??= Object.keys(this._cache).map((v) => BigInt(v));
|
|
101
122
|
if (treeIds.length === 0) {
|
|
102
123
|
throw new Error(`Nothing to sync. No treeIds in cache and no treeIds provided. Please specify which treeIds to sync. SyncTreesStorage cant automatically find them. If you don't know the treeIds, use syncTreesEvent or maybe the contract using the skinny/fat-imt library if it can provide the treeId.`);
|
|
103
124
|
}
|
|
@@ -106,10 +127,10 @@ export class Trees {
|
|
|
106
127
|
}
|
|
107
128
|
const treeIdsHex = treeIds.map((id) => toHex(id));
|
|
108
129
|
const chainId = await this.publicClient.getChainId();
|
|
109
|
-
const cachedTrees = treeIdsHex.filter((id) => this.
|
|
110
|
-
if (attemptFastSizeMatch === false && cachedTrees.length > 0) {
|
|
111
|
-
|
|
112
|
-
}
|
|
130
|
+
const cachedTrees = treeIdsHex.filter((id) => this._cache[id] !== undefined && this._cache[id].tree.size > 0);
|
|
131
|
+
// if (attemptFastSizeMatch === false && cachedTrees.length > 0) {
|
|
132
|
+
// console.warn(`treeIds:${cachedTrees} where found in cache from a previous sync. But attemptFastSizeMatch=false so this cache is not tried and every leaf is read again. The attempt is checked against the onchain root, so it can't cache a wrong tree, it only costs a re-read when it doesn't hold.`)
|
|
133
|
+
// }
|
|
113
134
|
const identifiedTreesEnt = await Promise.all(treeIdsHex.map(async (id) => [id, await this.getTreeType(id, chainId)]));
|
|
114
135
|
const unsupportedTypes = [TREE_TYPE.NO_INTERFACE, TREE_TYPE.UNKNOWN, TREE_TYPE.SKINNY_EVENT];
|
|
115
136
|
const unsupportedTrees = identifiedTreesEnt.filter(([id, type]) => unsupportedTypes.includes(type));
|
|
@@ -123,9 +144,11 @@ export class Trees {
|
|
|
123
144
|
blockNumber ??= (await this.publicClient.getBlock({ blockTag: "safe" })).number;
|
|
124
145
|
const syncedTrees = {};
|
|
125
146
|
for (const treeId of treeIdsHex) {
|
|
147
|
+
// we could check early if cache.root === onchainRoot
|
|
148
|
+
// but not doing it yet because that only really saves one rpc call from the getTreeSizeStorage
|
|
126
149
|
const targetSize = await this.getTreeSizeStorage(treeId, chainId, blockNumber);
|
|
127
150
|
const onchainRoot = await this.getRootStorage(treeId, chainId, blockNumber);
|
|
128
|
-
const cached = this.
|
|
151
|
+
const cached = this._cache[treeId];
|
|
129
152
|
const cacheSize = BigInt(cached ? cached.tree.size : 0);
|
|
130
153
|
let tree = undefined;
|
|
131
154
|
// leaves the attempt below already read from the contract, covering [readFrom, targetSize).
|
|
@@ -175,19 +198,19 @@ export class Trees {
|
|
|
175
198
|
if ((tree.root ?? 0n) !== onchainRoot) {
|
|
176
199
|
// every leaf came straight from the contract at this block, so this is not a stale
|
|
177
200
|
// cache. Drop what's cached for this tree, the attempt above may have grown it.
|
|
178
|
-
delete this.
|
|
201
|
+
delete this._cache[treeId];
|
|
179
202
|
throw new Error(`Synced treeId:${treeId} to root:${tree.root ?? 0n} at block:${blockNumber}, but the contract reports root:${onchainRoot} for it. Its leaves and its root disagree, so one of the two reads is not what this lib expects.`);
|
|
180
203
|
}
|
|
181
204
|
}
|
|
182
|
-
this.
|
|
205
|
+
this._cache[treeId] = {
|
|
183
206
|
tree: tree,
|
|
184
|
-
type: this.
|
|
207
|
+
type: this._cache[treeId].type, // getTreeType() above put every treeId in the cache
|
|
185
208
|
lastSynced: blockNumber,
|
|
186
209
|
// attemptFastSizeMatch is a guess this sync made, not something it learned about the tree,
|
|
187
210
|
// so whatever is known about updates stays as it was
|
|
188
|
-
insertOnlyTree: this.
|
|
211
|
+
insertOnlyTree: this._cache[treeId].insertOnlyTree
|
|
189
212
|
};
|
|
190
|
-
syncedTrees[treeId] = this.
|
|
213
|
+
syncedTrees[treeId] = copyCachedTree(this._cache[treeId], this.hashFunc);
|
|
191
214
|
}
|
|
192
215
|
return syncedTrees;
|
|
193
216
|
}
|
|
@@ -227,38 +250,62 @@ export class Trees {
|
|
|
227
250
|
// in discovery we go all the way down, if treeIds are provided, we go down till all them are synced
|
|
228
251
|
// if all of them are synced before, we don't sync all leaves, just those who happened after the most out of date tree was synced at
|
|
229
252
|
// when looking for a specific root we need to also go down to the lowest block since the root might be older then the last sync
|
|
230
|
-
const oldestBlock = discoverAllIds || syncToRoot !== undefined ? BigInt(getDeploymentBlock(chainId)) : this.getOldestSyncBlock(treeIds);
|
|
231
|
-
const syncState = { treeCache: this.
|
|
253
|
+
const oldestBlock = discoverAllIds || syncToRoot !== undefined ? BigInt(getDeploymentBlock(chainId)) : this.getOldestSyncBlock(treeIds, chainId);
|
|
254
|
+
const syncState = { treeCache: this._cache, treeState: {}, lastBlockSynced: newestBlock, unsyncedIds: new Set(treeIds.map((id) => toHex(id))) };
|
|
255
|
+
// check if something is already synced in cache, so we don't waste time looking for a NewRoot tx
|
|
256
|
+
for (const id of syncState.unsyncedIds) {
|
|
257
|
+
const cachedTree = syncState.treeCache[id] && syncState.treeCache[id];
|
|
258
|
+
// TODO we can also support this if we instead look for that NewRoot event instead of eth_Call lookup, but then we need to store the block number of the last NewRoot event we found in the cached tree, so we can O(1) find `NewRoot event at block: X`
|
|
259
|
+
const hasGetRoot = cachedTree && [TREE_TYPE.UNKNOWN, TREE_TYPE.NO_INTERFACE].includes(cachedTree.type) === false;
|
|
260
|
+
if (hasGetRoot) {
|
|
261
|
+
const expectedRoot = syncToRoot ?? await this.getRootStorage(id, chainId, newestBlock);
|
|
262
|
+
if (syncState.treeCache[id] && syncState.treeCache[id].tree.root === expectedRoot) {
|
|
263
|
+
syncState.unsyncedIds.delete(id);
|
|
264
|
+
// not "syncingToRoot"? or lastSynced is more recent then "newestBlock". Keep lastSynced
|
|
265
|
+
cachedTree.lastSynced = syncToRoot !== undefined || cachedTree.lastSynced > newestBlock ? cachedTree.lastSynced : newestBlock;
|
|
266
|
+
syncState.treeState[id] = {
|
|
267
|
+
expectedRoot: expectedRoot,
|
|
268
|
+
tree: syncState.treeCache[id].tree,
|
|
269
|
+
leaves: [],
|
|
270
|
+
count: 0n,
|
|
271
|
+
targetSize: BigInt(syncState.treeCache[id].tree.size),
|
|
272
|
+
lastSynced: cachedTree.lastSynced
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
232
277
|
const insertEvents = hasRepeatedLeafs ? ["NewLeaf", "RepeatedLeafs"] : ["NewLeaf"];
|
|
233
278
|
const leafEvents = insertOnlyTree ? insertEvents : ["UpdatedLeaf", ...insertEvents];
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
279
|
+
if (discoverAllIds || syncState.unsyncedIds.size > 0) {
|
|
280
|
+
do {
|
|
281
|
+
const foundAllRoots = syncState.unsyncedIds.size === 0 && syncToRoot === undefined && discoverAllIds == false;
|
|
282
|
+
await queryMultiEventsInChunks({
|
|
283
|
+
publicClient: this.publicClient,
|
|
284
|
+
contract: await this.getContract(),
|
|
285
|
+
eventNames: foundAllRoots ? leafEvents : ["NewRoot", ...leafEvents],
|
|
286
|
+
// only our treeIds. treeId is the 1st indexed param of NewRoot, an array means "any of these"
|
|
287
|
+
sharedEventFilterArgs: discoverAllIds ? undefined : { treeId: [...syncState.unsyncedIds].map((id) => BigInt(id)) },
|
|
288
|
+
firstBlock: oldestBlock,
|
|
289
|
+
lastBlock: syncState.lastBlockSynced,
|
|
290
|
+
reverseOrder: true,
|
|
291
|
+
maxEvents: Infinity,
|
|
292
|
+
chunkSize: chunkSize,
|
|
293
|
+
// if we need all treeIds?
|
|
294
|
+
postQueryFilter: getEventFilter(oldestBlock, syncState, { hashFunc: this.hashFunc, attemptFastSizeMatch: attemptFastSizeMatch, autoDiscover: discoverAllIds, syncToRoot: syncToRoot })
|
|
295
|
+
});
|
|
296
|
+
} while (syncState.unsyncedIds.size > 0 && syncState.lastBlockSynced > oldestBlock);
|
|
297
|
+
}
|
|
251
298
|
// cache the tree, or update the new/updated leafs of an existing cache tree.
|
|
252
299
|
const syncedTrees = {};
|
|
253
300
|
const allTreeIds = new Set([...treeIds.map((id) => toHex(id)), ...Object.keys(syncState.treeState)]);
|
|
254
301
|
for (const treeId of allTreeIds) {
|
|
255
302
|
const newSyncState = syncState.treeState[treeId];
|
|
256
|
-
const cacheTree = this.
|
|
303
|
+
const cacheTree = this._cache[treeId];
|
|
257
304
|
const isNotOld = cacheTree === undefined
|
|
258
305
|
|| (newSyncState !== undefined && newSyncState.lastSynced >= cacheTree.lastSynced);
|
|
259
306
|
// no-op, no new state and no rollback (syncToRoot on old root can be used to go back to a older root)
|
|
260
307
|
if (isNotOld === false && syncToRoot === undefined) {
|
|
261
|
-
syncedTrees[treeId] = cacheTree;
|
|
308
|
+
syncedTrees[treeId] = copyCachedTree(cacheTree, this.hashFunc);
|
|
262
309
|
continue;
|
|
263
310
|
}
|
|
264
311
|
const canMerge = newSyncState !== undefined && cacheTree !== undefined && isNotOld
|
|
@@ -293,8 +340,8 @@ export class Trees {
|
|
|
293
340
|
};
|
|
294
341
|
}
|
|
295
342
|
else if (canMerge) {
|
|
296
|
-
// @notice
|
|
297
|
-
//
|
|
343
|
+
// @notice merges into a copy, never cacheTree.tree itself. otherwise a throw at the root check below.
|
|
344
|
+
// can leave the cache with a invalid tree
|
|
298
345
|
const updatedIndexes = [];
|
|
299
346
|
const updatedLeaves = [];
|
|
300
347
|
const newLeafs = [];
|
|
@@ -307,12 +354,19 @@ export class Trees {
|
|
|
307
354
|
newLeafs.push(leaf);
|
|
308
355
|
}
|
|
309
356
|
});
|
|
310
|
-
cacheTree.tree
|
|
357
|
+
const merged = copyTree(cacheTree.tree, this.hashFunc);
|
|
358
|
+
if (updatedIndexes.length > 0) {
|
|
359
|
+
merged.updateMany(updatedIndexes, updatedLeaves);
|
|
360
|
+
}
|
|
311
361
|
if (newLeafs.length > 0) {
|
|
312
|
-
|
|
362
|
+
merged.insertMany(newLeafs);
|
|
313
363
|
}
|
|
314
|
-
|
|
315
|
-
|
|
364
|
+
synced = {
|
|
365
|
+
tree: merged,
|
|
366
|
+
type: cacheTree.type,
|
|
367
|
+
lastSynced: newSyncState.lastSynced,
|
|
368
|
+
insertOnlyTree: cacheTree.insertOnlyTree
|
|
369
|
+
};
|
|
316
370
|
}
|
|
317
371
|
else {
|
|
318
372
|
// cached tree does not exist or synced tree is smaller and newSyncState.leaves is complete
|
|
@@ -330,9 +384,9 @@ export class Trees {
|
|
|
330
384
|
// a sync may only ever move the cache forward. A syncToRoot rollback is handed to the
|
|
331
385
|
// caller, but the cache keeps the newer tree it already had.
|
|
332
386
|
if (isNotOld) {
|
|
333
|
-
this.
|
|
387
|
+
this._cache[treeId] = synced;
|
|
334
388
|
}
|
|
335
|
-
syncedTrees[treeId] = synced;
|
|
389
|
+
syncedTrees[treeId] = copyCachedTree(synced, this.hashFunc);
|
|
336
390
|
}
|
|
337
391
|
if (syncToRoot !== undefined) {
|
|
338
392
|
const allTreeIds = Object.keys(syncedTrees);
|
|
@@ -377,7 +431,7 @@ export class Trees {
|
|
|
377
431
|
let oldest = treeIds[0];
|
|
378
432
|
let oldestBlock = 2n ** 256n; // Infinity replacement
|
|
379
433
|
for (const id of treeIds) {
|
|
380
|
-
const tree = this.
|
|
434
|
+
const tree = this._cache[id];
|
|
381
435
|
if (tree === undefined) {
|
|
382
436
|
return id;
|
|
383
437
|
}
|
|
@@ -388,19 +442,19 @@ export class Trees {
|
|
|
388
442
|
}
|
|
389
443
|
return oldest;
|
|
390
444
|
}
|
|
391
|
-
getOldestSyncBlock(treeIds) {
|
|
392
|
-
const oldestTree = this.
|
|
393
|
-
return oldestTree ? oldestTree.lastSynced :
|
|
445
|
+
getOldestSyncBlock(treeIds, chainId) {
|
|
446
|
+
const oldestTree = this._cache[this.getOldestSyncTreeId(treeIds.map((id) => toHex(id)))];
|
|
447
|
+
return oldestTree ? oldestTree.lastSynced : BigInt(DEPLOY_BLOCK[chainId]);
|
|
394
448
|
}
|
|
395
449
|
async getTreeType(treeId, chainId) {
|
|
396
|
-
return (await this.
|
|
450
|
+
return (await this.initTreeCached(treeId, chainId)).type;
|
|
397
451
|
}
|
|
398
452
|
async getLeavesStorage(treeId, chainId, startIndex, endIndex, blockNumber) {
|
|
399
453
|
const size = await this.getTreeSizeStorage(treeId, chainId, blockNumber);
|
|
400
454
|
if (startIndex > endIndex || endIndex > size) {
|
|
401
455
|
throw new Error(`Leaf range [${startIndex}, ${endIndex}) is out of range for treeId:${treeId}, which holds ${size} leaves at block:${blockNumber}.`);
|
|
402
456
|
}
|
|
403
|
-
const treeType = (await this.
|
|
457
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type;
|
|
404
458
|
const contract = await this.getContract();
|
|
405
459
|
switch (treeType) {
|
|
406
460
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -423,7 +477,7 @@ export class Trees {
|
|
|
423
477
|
if (cachedSize !== undefined && cachedSize.blockNumber === blockNumber) {
|
|
424
478
|
return cachedSize.size;
|
|
425
479
|
}
|
|
426
|
-
const treeType = (await this.
|
|
480
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type;
|
|
427
481
|
const contract = await this.getContract();
|
|
428
482
|
let size;
|
|
429
483
|
switch (treeType) {
|
|
@@ -442,7 +496,7 @@ export class Trees {
|
|
|
442
496
|
return size;
|
|
443
497
|
}
|
|
444
498
|
async getRootStorage(treeId, chainId, blockNumber) {
|
|
445
|
-
const treeType = (await this.
|
|
499
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type;
|
|
446
500
|
const contract = await this.getContract();
|
|
447
501
|
switch (treeType) {
|
|
448
502
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -456,16 +510,19 @@ export class Trees {
|
|
|
456
510
|
}
|
|
457
511
|
}
|
|
458
512
|
async initTree(treeId, chainId) {
|
|
459
|
-
|
|
460
|
-
|
|
513
|
+
return copyCachedTree(await this.initTreeCached(treeId, chainId), this.hashFunc);
|
|
514
|
+
}
|
|
515
|
+
async initTreeCached(treeId, chainId) {
|
|
516
|
+
if (this._cache[treeId]) {
|
|
517
|
+
return this._cache[treeId];
|
|
461
518
|
}
|
|
462
519
|
const treeType = await identifyTree(BigInt(treeId), await this.getContract());
|
|
463
|
-
this.
|
|
520
|
+
this._cache[treeId] = {
|
|
464
521
|
tree: new LeanIMT(this.hashFunc),
|
|
465
522
|
type: treeType,
|
|
466
523
|
lastSynced: BigInt(getDeploymentBlock(chainId))
|
|
467
524
|
};
|
|
468
|
-
return this.
|
|
525
|
+
return this._cache[treeId];
|
|
469
526
|
}
|
|
470
527
|
}
|
|
471
528
|
export async function identifyTree(treeId, contract) {
|
|
@@ -524,7 +581,7 @@ export function getEventFilter(firstBlock, syncState, { autoDiscover, syncToRoot
|
|
|
524
581
|
const trimmedTree = new LeanIMT(hashFunc, trimmed);
|
|
525
582
|
const endTime = performance.now();
|
|
526
583
|
if (event.args.root === trimmedTree.root) {
|
|
527
|
-
console.log(`success full trim on treeId: ${treeId}`)
|
|
584
|
+
//console.log(`success full trim on treeId: ${treeId}`)
|
|
528
585
|
syncState.treeState[treeId] = {
|
|
529
586
|
leaves: [],
|
|
530
587
|
count: 0n,
|
package/dist/Trees.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trees.js","sourceRoot":"","sources":["../src/Trees.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Trees.js","sourceRoot":"","sources":["../src/Trees.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventScanning.d.ts","sourceRoot":"","sources":["../src/eventScanning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,GAAG,EACH,QAAQ,EACR,YAAY,EACZ,2BAA2B,EAC3B,OAAO,EACP,iBAAiB,EACjB,GAAG,EAEH,YAAY,EACf,MAAM,MAAM,CAAA;AAEb;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAE7C;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,SAAS,SAAS,QAAQ,IAC3C,SAAS,SAAS,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAGrF,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,QAAQ,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"eventScanning.d.ts","sourceRoot":"","sources":["../src/eventScanning.ts"],"names":[],"mappings":"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"}
|
package/dist/eventScanning.js
CHANGED
|
@@ -227,7 +227,7 @@ async function scanInChunks({ publicClient, queryChunk, firstBlock, lastBlock, r
|
|
|
227
227
|
}
|
|
228
228
|
allEvents = allEvents.slice(-maxEvents);
|
|
229
229
|
if (done || allEvents.length >= maxEvents) {
|
|
230
|
-
console.log(`stopped scanning at chunk ${index}/${numIters
|
|
230
|
+
//console.log(`stopped scanning at chunk ${index}/${numIters-1}`);
|
|
231
231
|
break;
|
|
232
232
|
}
|
|
233
233
|
;
|
|
@@ -242,7 +242,7 @@ async function scanInChunks({ publicClient, queryChunk, firstBlock, lastBlock, r
|
|
|
242
242
|
}
|
|
243
243
|
allEvents = allEvents.slice(0, maxEvents);
|
|
244
244
|
if (done || allEvents.length >= maxEvents) {
|
|
245
|
-
console.log(`stopped scanning at chunk ${index}/${numIters
|
|
245
|
+
//console.log(`stopped scanning at chunk ${index}/${numIters-1}`);
|
|
246
246
|
break;
|
|
247
247
|
}
|
|
248
248
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventScanning.js","sourceRoot":"","sources":["../src/eventScanning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAahF;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AA0DD;;;GAGG;AACH,SAAS,YAAY,CAA6B,GAAQ,EAAE,SAAiB;IACzE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAgB,CAAC;IACtG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,oBAAoB,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAItC,EACE,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,eAAe,EACf,UAAU,GAAG,EAAE,EACf,SAAS,EACT,YAAY,GAAG,KAAK,EACpB,SAAS,GAAG,QAAQ,EACpB,SAAS,GAAG,MAAM,EAClB,eAAe,GAYlB;IACG,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,YAAY,CAAY,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,MAAM,YAAY,CAAY;QACjC,YAAY;QACZ,UAAU;QACV,SAAS;QACT,YAAY;QACZ,SAAS;QACT,SAAS;QACT,eAAe;QACf,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC;YACjE,OAAO;YACP,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,eAAe;YACrB,SAAS;YACT,OAAO;SACV,CAA0B;KAC9B,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAI5C,EACE,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,UAAU,GAAG,EAAE,EACf,SAAS,EACT,YAAY,GAAG,KAAK,EACpB,SAAS,GAAG,QAAQ,EACpB,SAAS,GAAG,MAAM,EAClB,eAAe,GAYlB;IACG,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IAEzB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAW,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,OAAO,MAAM,YAAY,CAAY;QACjC,YAAY;QACZ,UAAU;QACV,SAAS;QACT,YAAY;QACZ,SAAS;QACT,SAAS;QACT,eAAe;QACf,0FAA0F;QAC1F,+FAA+F;QAC/F,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;gBACvC,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,CAAC;wBACL,OAAO;wBACP,MAAM;wBACN,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC;wBACjC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;qBAChC,CAAC;aACL,CAAC,CAAC;YACH,OAAO,cAAc,CAAC;gBAClB,GAAG,EAAE,GAAU;gBACf,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC;gBAC1B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,EAAE,IAAI;aACf,CAAqC,CAAC;QAC3C,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,SAAqB,EAAE,qBAA+C;IAC7F,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,IAAI,EAAE,CAAC;SAC1D,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,qBAAqB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvD,QAAQ;QACR,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;KAC3D,CAAC,CAAC,CAAC;IAEJ,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC7B,yFAAyF;QACzF,uEAAuE;QACvE,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;YAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAClE,OAAO;gBACH,SAAS,EAAE,QAAQ,CAAC,IAAI;gBACxB,QAAQ;gBACR,IAAI,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI;gBACzD,iBAAiB,EAAE,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;aAC7F,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,OAAO;iBAClB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,EAAE,CACtC,GAAG,SAAS,KAAK,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC;iBAC3E,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM,IAAI,KAAK,CACX,qBAAqB,IAAI,qEAAqE,OAAO,IAAI;gBACzG,4FAA4F,CAC/F,CAAC;QACN,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrG,MAAM,IAAI,KAAK,CACX,qBAAqB,IAAI,wEAAwE,QAAQ,KAAK;gBAC9G,mEAAmE,CACtE,CAAC;QACN,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,IAAI,KAAK,CACX,qBAAqB,IAAI,mDAAmD,QAAQ,IAAI,CAC3F,CAAC;QACN,CAAC;IACL,CAAC;IAED,gGAAgG;IAChG,0CAA0C;IAC1C,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,iBAAiB,CAAC;QACvC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAQ;QAC1B,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;QAC5B,IAAI,EAAE,qBAAqB;KAC9B,CAAC,CAAC;IAEH,kEAAkE;IAClE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxE,SAAS,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAe,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,KAAK,UAAU,YAAY,CAA6B,EACpD,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACT,eAAe,GAUlB;IACG,SAAS,KAAK,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;IAClD,IAAI,SAAS,GAA0B,EAAE,CAAC;IAC1C,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,MAAM,SAAS,GAAG,KAAK,EAAE,KAAa,
|
|
1
|
+
{"version":3,"file":"eventScanning.js","sourceRoot":"","sources":["../src/eventScanning.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Trees.ts
CHANGED
|
@@ -99,6 +99,11 @@ export const LeanIMTHashFuncPoseidon2: LeanIMTHashFunction = (a: bigint, b: bigi
|
|
|
99
99
|
|
|
100
100
|
export type CachedTree = { tree: LeanIMT<bigint>, type: TREE_TYPE, lastSynced: bigint, insertOnlyTree?: boolean }
|
|
101
101
|
|
|
102
|
+
/** A {@link LeanIMT} without the four methods that mutate it. `leaves` already hands back a copy. */
|
|
103
|
+
export type ReadonlyLeanIMT = Omit<LeanIMT<bigint>, "insert" | "insertMany" | "update" | "updateMany">
|
|
104
|
+
|
|
105
|
+
export type ReadonlyCachedTree = Readonly<Omit<CachedTree, "tree"> & { tree: ReadonlyLeanIMT }>
|
|
106
|
+
|
|
102
107
|
/**
|
|
103
108
|
* A detached LeanIMT holding the same leaves *and* internal nodes as `tree`, so it can be grown
|
|
104
109
|
* without touching the original. Copies the nodes rather than replaying the leaves on purpose:
|
|
@@ -113,8 +118,22 @@ export function copyTree(tree: LeanIMT<bigint>, hashFunc: LeanIMTHashFunction):
|
|
|
113
118
|
return copy
|
|
114
119
|
}
|
|
115
120
|
|
|
121
|
+
export function copyCachedTree(cached: CachedTree, hashFunc: LeanIMTHashFunction): CachedTree {
|
|
122
|
+
return { ...cached, tree: copyTree(cached.tree, hashFunc) }
|
|
123
|
+
}
|
|
124
|
+
|
|
116
125
|
export class Trees {
|
|
117
|
-
|
|
126
|
+
private _cache: { [treeId: Hex]: CachedTree } = {}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* The trees this instance has synced, keyed by treeId. Read only: growing one of these behind the
|
|
130
|
+
* lib's back leaves it claiming a `lastSynced` its leaves don't match, and the next sync merges
|
|
131
|
+
* into it as if it were the state at that block. {@link copyCachedTree} gives you one to keep.
|
|
132
|
+
*/
|
|
133
|
+
get cache(): Readonly<{ readonly [treeId: Hex]: ReadonlyCachedTree }> {
|
|
134
|
+
return this._cache
|
|
135
|
+
}
|
|
136
|
+
|
|
118
137
|
/** last known size per tree, with the block it was read at. See {@link getTreeSizeStorage}. */
|
|
119
138
|
private sizes: { [treeId: Hex]: { blockNumber: bigint, size: bigint } } = {}
|
|
120
139
|
|
|
@@ -134,8 +153,9 @@ export class Trees {
|
|
|
134
153
|
|
|
135
154
|
// fullNode mode syncs all cached trees, non fullNode mode will auto discover them, so left empty
|
|
136
155
|
const treeIdsNotSet = treeIds === undefined || treeIds.length === 0;
|
|
137
|
-
treeIds = treeIdsNotSet ? fullNodeMode ? (Object.keys(this.
|
|
156
|
+
treeIds = treeIdsNotSet ? fullNodeMode ? (Object.keys(this._cache) as Hex[]).map((v) => BigInt(v)) : [] : treeIds
|
|
138
157
|
if (autoDiscovery && fullNodeMode) { throw new Error(`auto treeId discovery not supported in fullNodeMode, please provide treeIds to sync. Or turn off fullNodeMode: \`Trees.sync([],{fullNodeMode:false})\``) }
|
|
158
|
+
// TODO if fullNode mode is on but one treeType is event only, it breaks. But it should still try and only warn it is scanning more then 1 year of events if it actually needs to
|
|
139
159
|
if (fullNodeMode) {
|
|
140
160
|
syncedTrees = await this.syncTreesStorage(
|
|
141
161
|
treeIds,
|
|
@@ -145,11 +165,21 @@ export class Trees {
|
|
|
145
165
|
// then syncTreesEvent will look for the root and try to trim off the leaves that happened after the root we want
|
|
146
166
|
// in tree with only inserts this will work and will allows us to get any tree that is up to 1 year old
|
|
147
167
|
// if there are updates or resets, currently syncTreesEvent will have to go down till it found all leaves
|
|
168
|
+
// TODO optimize the syncToRoot + fullNodeMode case. The storage read above already has every leaf
|
|
169
|
+
// at head, so the event pass only needs the update events between head and the NewRoot we want:
|
|
170
|
+
// replay those backwards onto the storage tree (and shrink it, which it already does) and stop at
|
|
171
|
+
// that NewRoot, instead of being free to walk all the way down to the deployment block.
|
|
172
|
+
// Until that lands, a caller after a specific root is better off with fullNodeMode: false.
|
|
173
|
+
// TODO
|
|
174
|
+
|
|
148
175
|
if (syncToRoot !== undefined) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
176
|
+
const someNotSynced = treeIds?.some((v) => syncedTrees[toHex(v)].tree.root !== syncToRoot);
|
|
177
|
+
if (someNotSynced) {
|
|
178
|
+
syncedTrees = await this.syncTreesEvent(
|
|
179
|
+
treeIds,
|
|
180
|
+
{ blockNumber, attemptFastSizeMatch, syncToRoot, chunkSize: eventChunkSize, insertOnlyTree, autoDiscovery, hasRepeatedLeafs }
|
|
181
|
+
)
|
|
182
|
+
}
|
|
153
183
|
}
|
|
154
184
|
} else {
|
|
155
185
|
syncedTrees = await this.syncTreesEvent(
|
|
@@ -174,7 +204,7 @@ export class Trees {
|
|
|
174
204
|
{ chunkSize = 2000n, attemptFastSizeMatch = true, blockNumber }: { attemptFastSizeMatch?: boolean, chunkSize?: bigint, blockNumber?: bigint } = {}
|
|
175
205
|
): Promise<{ [treeId: Hex]: CachedTree }> {
|
|
176
206
|
// default syncs all previously synced trees
|
|
177
|
-
treeIds ??= (Object.keys(this.
|
|
207
|
+
treeIds ??= (Object.keys(this._cache) as Hex[]).map((v) => BigInt(v));
|
|
178
208
|
if (treeIds.length === 0) {
|
|
179
209
|
throw new Error(`Nothing to sync. No treeIds in cache and no treeIds provided. Please specify which treeIds to sync. SyncTreesStorage cant automatically find them. If you don't know the treeIds, use syncTreesEvent or maybe the contract using the skinny/fat-imt library if it can provide the treeId.`)
|
|
180
210
|
}
|
|
@@ -184,10 +214,10 @@ export class Trees {
|
|
|
184
214
|
const treeIdsHex = treeIds.map((id) => toHex(id));
|
|
185
215
|
|
|
186
216
|
const chainId = await this.publicClient.getChainId();
|
|
187
|
-
const cachedTrees = treeIdsHex.filter((id) => this.
|
|
188
|
-
if (attemptFastSizeMatch === false && cachedTrees.length > 0) {
|
|
189
|
-
|
|
190
|
-
}
|
|
217
|
+
const cachedTrees = treeIdsHex.filter((id) => this._cache[id] !== undefined && this._cache[id].tree.size > 0)
|
|
218
|
+
// if (attemptFastSizeMatch === false && cachedTrees.length > 0) {
|
|
219
|
+
// console.warn(`treeIds:${cachedTrees} where found in cache from a previous sync. But attemptFastSizeMatch=false so this cache is not tried and every leaf is read again. The attempt is checked against the onchain root, so it can't cache a wrong tree, it only costs a re-read when it doesn't hold.`)
|
|
220
|
+
// }
|
|
191
221
|
const identifiedTreesEnt = await Promise.all(treeIdsHex.map(async (id) => [id, await this.getTreeType(id, chainId)])) as [Hex, TREE_TYPE][]
|
|
192
222
|
const unsupportedTypes = [TREE_TYPE.NO_INTERFACE, TREE_TYPE.UNKNOWN, TREE_TYPE.SKINNY_EVENT]
|
|
193
223
|
const unsupportedTrees = identifiedTreesEnt.filter(([id, type]) => unsupportedTypes.includes(type))
|
|
@@ -202,9 +232,11 @@ export class Trees {
|
|
|
202
232
|
blockNumber ??= (await this.publicClient.getBlock({ blockTag: "safe" })).number
|
|
203
233
|
const syncedTrees: { [treeId: Hex]: CachedTree } = {}
|
|
204
234
|
for (const treeId of treeIdsHex) {
|
|
235
|
+
// we could check early if cache.root === onchainRoot
|
|
236
|
+
// but not doing it yet because that only really saves one rpc call from the getTreeSizeStorage
|
|
205
237
|
const targetSize = await this.getTreeSizeStorage(treeId, chainId, blockNumber)
|
|
206
238
|
const onchainRoot = await this.getRootStorage(treeId, chainId, blockNumber)
|
|
207
|
-
const cached = this.
|
|
239
|
+
const cached = this._cache[treeId]
|
|
208
240
|
const cacheSize = BigInt(cached ? cached.tree.size : 0)
|
|
209
241
|
|
|
210
242
|
let tree: LeanIMT<bigint> | undefined = undefined
|
|
@@ -254,20 +286,20 @@ export class Trees {
|
|
|
254
286
|
if ((tree.root ?? 0n) !== onchainRoot) {
|
|
255
287
|
// every leaf came straight from the contract at this block, so this is not a stale
|
|
256
288
|
// cache. Drop what's cached for this tree, the attempt above may have grown it.
|
|
257
|
-
delete this.
|
|
289
|
+
delete this._cache[treeId]
|
|
258
290
|
throw new Error(`Synced treeId:${treeId} to root:${tree.root ?? 0n} at block:${blockNumber}, but the contract reports root:${onchainRoot} for it. Its leaves and its root disagree, so one of the two reads is not what this lib expects.`)
|
|
259
291
|
}
|
|
260
292
|
}
|
|
261
293
|
|
|
262
|
-
this.
|
|
294
|
+
this._cache[treeId] = {
|
|
263
295
|
tree: tree,
|
|
264
|
-
type: this.
|
|
296
|
+
type: this._cache[treeId].type, // getTreeType() above put every treeId in the cache
|
|
265
297
|
lastSynced: blockNumber,
|
|
266
298
|
// attemptFastSizeMatch is a guess this sync made, not something it learned about the tree,
|
|
267
299
|
// so whatever is known about updates stays as it was
|
|
268
|
-
insertOnlyTree: this.
|
|
300
|
+
insertOnlyTree: this._cache[treeId].insertOnlyTree
|
|
269
301
|
}
|
|
270
|
-
syncedTrees[treeId] = this.
|
|
302
|
+
syncedTrees[treeId] = copyCachedTree(this._cache[treeId], this.hashFunc)
|
|
271
303
|
}
|
|
272
304
|
return syncedTrees
|
|
273
305
|
}
|
|
@@ -289,7 +321,7 @@ export class Trees {
|
|
|
289
321
|
return leaves
|
|
290
322
|
}
|
|
291
323
|
|
|
292
|
-
async syncTreesEvent(treeIds: bigint[] | undefined = undefined, {blockNumber, attemptFastSizeMatch = true, syncToRoot, chunkSize = 2000n, insertOnlyTree, autoDiscovery, hasRepeatedLeafs = true }: {blockNumber?:bigint, attemptFastSizeMatch?: boolean, syncToRoot?: bigint, chunkSize?: bigint, hasRepeatedLeafs?: boolean, insertOnlyTree?: boolean, autoDiscovery?: boolean | undefined } = {}) {
|
|
324
|
+
async syncTreesEvent(treeIds: bigint[] | undefined = undefined, { blockNumber, attemptFastSizeMatch = true, syncToRoot, chunkSize = 2000n, insertOnlyTree, autoDiscovery, hasRepeatedLeafs = true }: { blockNumber?: bigint, attemptFastSizeMatch?: boolean, syncToRoot?: bigint, chunkSize?: bigint, hasRepeatedLeafs?: boolean, insertOnlyTree?: boolean, autoDiscovery?: boolean | undefined } = {}) {
|
|
293
325
|
treeIds ??= [];
|
|
294
326
|
if (treeIds.length !== 0 && autoDiscovery === true) {
|
|
295
327
|
throw new Error(`TreeIds where provided while autoDiscovery=true. Either turn off autoDiscovery to only sync those specific ids or set treeIds=undefined to automatically discover and sync all treeId.`)
|
|
@@ -312,43 +344,69 @@ export class Trees {
|
|
|
312
344
|
// in discovery we go all the way down, if treeIds are provided, we go down till all them are synced
|
|
313
345
|
// if all of them are synced before, we don't sync all leaves, just those who happened after the most out of date tree was synced at
|
|
314
346
|
// when looking for a specific root we need to also go down to the lowest block since the root might be older then the last sync
|
|
315
|
-
const oldestBlock = discoverAllIds || syncToRoot !== undefined ? BigInt(getDeploymentBlock(chainId)) : this.getOldestSyncBlock(treeIds)
|
|
316
|
-
|
|
317
|
-
const syncState: SyncState = { treeCache: this.
|
|
347
|
+
const oldestBlock = discoverAllIds || syncToRoot !== undefined ? BigInt(getDeploymentBlock(chainId)) : this.getOldestSyncBlock(treeIds, chainId)
|
|
348
|
+
|
|
349
|
+
const syncState: SyncState = { treeCache: this._cache, treeState: {}, lastBlockSynced: newestBlock, unsyncedIds: new Set(treeIds.map((id) => toHex(id))) }
|
|
350
|
+
|
|
351
|
+
// check if something is already synced in cache, so we don't waste time looking for a NewRoot tx
|
|
352
|
+
for (const id of syncState.unsyncedIds) {
|
|
353
|
+
const cachedTree = syncState.treeCache[id] && syncState.treeCache[id];
|
|
354
|
+
// TODO we can also support this if we instead look for that NewRoot event instead of eth_Call lookup, but then we need to store the block number of the last NewRoot event we found in the cached tree, so we can O(1) find `NewRoot event at block: X`
|
|
355
|
+
const hasGetRoot = cachedTree && [TREE_TYPE.UNKNOWN, TREE_TYPE.NO_INTERFACE].includes(cachedTree.type) === false
|
|
356
|
+
if (hasGetRoot) {
|
|
357
|
+
const expectedRoot = syncToRoot ?? await this.getRootStorage(id, chainId, newestBlock);
|
|
358
|
+
if (syncState.treeCache[id] && syncState.treeCache[id].tree.root === expectedRoot) {
|
|
359
|
+
syncState.unsyncedIds.delete(id)
|
|
360
|
+
// not "syncingToRoot"? or lastSynced is more recent then "newestBlock". Keep lastSynced
|
|
361
|
+
cachedTree.lastSynced = syncToRoot !== undefined || cachedTree.lastSynced > newestBlock ? cachedTree.lastSynced : newestBlock
|
|
362
|
+
syncState.treeState[id] = {
|
|
363
|
+
expectedRoot: expectedRoot,
|
|
364
|
+
tree: syncState.treeCache[id].tree,
|
|
365
|
+
leaves: [],
|
|
366
|
+
count: 0n,
|
|
367
|
+
targetSize: BigInt(syncState.treeCache[id].tree.size),
|
|
368
|
+
lastSynced: cachedTree.lastSynced
|
|
318
369
|
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
319
374
|
const insertEvents = hasRepeatedLeafs ? ["NewLeaf", "RepeatedLeafs"] as const : ["NewLeaf"] as const;
|
|
320
375
|
const leafEvents = insertOnlyTree ? insertEvents : ["UpdatedLeaf", ...insertEvents] as const
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
376
|
+
if (discoverAllIds || syncState.unsyncedIds.size > 0) {
|
|
377
|
+
do {
|
|
378
|
+
const foundAllRoots = syncState.unsyncedIds.size === 0 && syncToRoot === undefined && discoverAllIds == false
|
|
379
|
+
await queryMultiEventsInChunks({
|
|
380
|
+
publicClient: this.publicClient,
|
|
381
|
+
contract: await this.getContract(),
|
|
382
|
+
eventNames: foundAllRoots ? leafEvents : ["NewRoot", ...leafEvents],
|
|
383
|
+
// only our treeIds. treeId is the 1st indexed param of NewRoot, an array means "any of these"
|
|
384
|
+
sharedEventFilterArgs: discoverAllIds ? undefined : { treeId: [...syncState.unsyncedIds].map((id) => BigInt(id)) },
|
|
385
|
+
firstBlock: oldestBlock,
|
|
386
|
+
lastBlock: syncState.lastBlockSynced,
|
|
387
|
+
reverseOrder: true,
|
|
388
|
+
maxEvents: Infinity,
|
|
389
|
+
chunkSize: chunkSize,
|
|
390
|
+
// if we need all treeIds?
|
|
391
|
+
postQueryFilter: getEventFilter(oldestBlock, syncState, { hashFunc: this.hashFunc, attemptFastSizeMatch: attemptFastSizeMatch, autoDiscover: discoverAllIds, syncToRoot: syncToRoot })
|
|
392
|
+
})
|
|
393
|
+
} while (syncState.unsyncedIds.size > 0 && syncState.lastBlockSynced > oldestBlock)
|
|
394
|
+
}
|
|
395
|
+
|
|
338
396
|
|
|
339
397
|
// cache the tree, or update the new/updated leafs of an existing cache tree.
|
|
340
398
|
const syncedTrees: { [treeId: Hex]: CachedTree } = {}
|
|
341
399
|
const allTreeIds = new Set([...treeIds.map((id) => toHex(id)), ...Object.keys(syncState.treeState) as Hex[]])
|
|
342
400
|
for (const treeId of allTreeIds) {
|
|
343
401
|
const newSyncState = syncState.treeState[treeId]
|
|
344
|
-
const cacheTree = this.
|
|
402
|
+
const cacheTree = this._cache[treeId];
|
|
345
403
|
|
|
346
404
|
const isNotOld = cacheTree === undefined
|
|
347
405
|
|| (newSyncState !== undefined && newSyncState.lastSynced >= cacheTree.lastSynced)
|
|
348
406
|
|
|
349
407
|
// no-op, no new state and no rollback (syncToRoot on old root can be used to go back to a older root)
|
|
350
408
|
if (isNotOld === false && syncToRoot === undefined) {
|
|
351
|
-
syncedTrees[treeId] = cacheTree
|
|
409
|
+
syncedTrees[treeId] = copyCachedTree(cacheTree, this.hashFunc)
|
|
352
410
|
continue
|
|
353
411
|
}
|
|
354
412
|
|
|
@@ -388,8 +446,8 @@ export class Trees {
|
|
|
388
446
|
insertOnlyTree: cacheTree!.insertOnlyTree
|
|
389
447
|
}
|
|
390
448
|
} else if (canMerge) {
|
|
391
|
-
// @notice
|
|
392
|
-
//
|
|
449
|
+
// @notice merges into a copy, never cacheTree.tree itself. otherwise a throw at the root check below.
|
|
450
|
+
// can leave the cache with a invalid tree
|
|
393
451
|
const updatedIndexes: number[] = [];
|
|
394
452
|
const updatedLeaves: bigint[] = [];
|
|
395
453
|
const newLeafs: bigint[] = [];
|
|
@@ -401,13 +459,20 @@ export class Trees {
|
|
|
401
459
|
newLeafs.push(leaf)
|
|
402
460
|
}
|
|
403
461
|
})
|
|
404
|
-
cacheTree.tree
|
|
462
|
+
const merged = copyTree(cacheTree.tree, this.hashFunc)
|
|
463
|
+
if (updatedIndexes.length > 0) {
|
|
464
|
+
merged.updateMany(updatedIndexes, updatedLeaves)
|
|
465
|
+
}
|
|
405
466
|
if (newLeafs.length > 0) {
|
|
406
|
-
|
|
467
|
+
merged.insertMany(newLeafs)
|
|
407
468
|
}
|
|
408
469
|
|
|
409
|
-
|
|
410
|
-
|
|
470
|
+
synced = {
|
|
471
|
+
tree: merged,
|
|
472
|
+
type: cacheTree.type,
|
|
473
|
+
lastSynced: newSyncState.lastSynced,
|
|
474
|
+
insertOnlyTree: cacheTree.insertOnlyTree
|
|
475
|
+
}
|
|
411
476
|
} else {
|
|
412
477
|
// cached tree does not exist or synced tree is smaller and newSyncState.leaves is complete
|
|
413
478
|
synced = {
|
|
@@ -426,9 +491,10 @@ export class Trees {
|
|
|
426
491
|
// a sync may only ever move the cache forward. A syncToRoot rollback is handed to the
|
|
427
492
|
// caller, but the cache keeps the newer tree it already had.
|
|
428
493
|
if (isNotOld) {
|
|
429
|
-
this.
|
|
494
|
+
this._cache[treeId] = synced
|
|
430
495
|
}
|
|
431
|
-
|
|
496
|
+
|
|
497
|
+
syncedTrees[treeId] = copyCachedTree(synced, this.hashFunc);
|
|
432
498
|
}
|
|
433
499
|
|
|
434
500
|
if (syncToRoot !== undefined) {
|
|
@@ -478,7 +544,7 @@ export class Trees {
|
|
|
478
544
|
let oldest = treeIds[0];
|
|
479
545
|
let oldestBlock = 2n ** 256n; // Infinity replacement
|
|
480
546
|
for (const id of treeIds) {
|
|
481
|
-
const tree = this.
|
|
547
|
+
const tree = this._cache[id]
|
|
482
548
|
if (tree === undefined) {
|
|
483
549
|
return id
|
|
484
550
|
}
|
|
@@ -490,13 +556,13 @@ export class Trees {
|
|
|
490
556
|
return oldest
|
|
491
557
|
}
|
|
492
558
|
|
|
493
|
-
getOldestSyncBlock(treeIds: bigint[]) {
|
|
494
|
-
const oldestTree = this.
|
|
495
|
-
return oldestTree ? oldestTree.lastSynced :
|
|
559
|
+
getOldestSyncBlock(treeIds: bigint[], chainId: number) {
|
|
560
|
+
const oldestTree = this._cache[this.getOldestSyncTreeId(treeIds.map((id) => toHex(id)))]
|
|
561
|
+
return oldestTree ? oldestTree.lastSynced : BigInt(DEPLOY_BLOCK[chainId])
|
|
496
562
|
}
|
|
497
563
|
|
|
498
564
|
async getTreeType(treeId: Hex, chainId: number) {
|
|
499
|
-
return (await this.
|
|
565
|
+
return (await this.initTreeCached(treeId, chainId)).type
|
|
500
566
|
}
|
|
501
567
|
|
|
502
568
|
async getLeavesStorage(treeId: Hex, chainId: number, startIndex: bigint, endIndex: bigint, blockNumber: bigint) {
|
|
@@ -504,7 +570,7 @@ export class Trees {
|
|
|
504
570
|
if (startIndex > endIndex || endIndex > size) {
|
|
505
571
|
throw new Error(`Leaf range [${startIndex}, ${endIndex}) is out of range for treeId:${treeId}, which holds ${size} leaves at block:${blockNumber}.`)
|
|
506
572
|
}
|
|
507
|
-
const treeType = (await this.
|
|
573
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type
|
|
508
574
|
const contract = await this.getContract()
|
|
509
575
|
switch (treeType) {
|
|
510
576
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -528,7 +594,7 @@ export class Trees {
|
|
|
528
594
|
if (cachedSize !== undefined && cachedSize.blockNumber === blockNumber) {
|
|
529
595
|
return cachedSize.size
|
|
530
596
|
}
|
|
531
|
-
const treeType = (await this.
|
|
597
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type
|
|
532
598
|
const contract = await this.getContract()
|
|
533
599
|
let size: bigint
|
|
534
600
|
switch (treeType) {
|
|
@@ -548,7 +614,7 @@ export class Trees {
|
|
|
548
614
|
}
|
|
549
615
|
|
|
550
616
|
async getRootStorage(treeId: Hex, chainId: number, blockNumber: bigint) {
|
|
551
|
-
const treeType = (await this.
|
|
617
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type
|
|
552
618
|
const contract = await this.getContract()
|
|
553
619
|
switch (treeType) {
|
|
554
620
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -562,17 +628,21 @@ export class Trees {
|
|
|
562
628
|
}
|
|
563
629
|
}
|
|
564
630
|
|
|
565
|
-
async initTree(treeId: Hex, chainId: number) {
|
|
566
|
-
|
|
567
|
-
|
|
631
|
+
async initTree(treeId: Hex, chainId: number): Promise<CachedTree> {
|
|
632
|
+
return copyCachedTree(await this.initTreeCached(treeId, chainId), this.hashFunc)
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
private async initTreeCached(treeId: Hex, chainId: number): Promise<CachedTree> {
|
|
636
|
+
if (this._cache[treeId]) {
|
|
637
|
+
return this._cache[treeId]
|
|
568
638
|
}
|
|
569
639
|
const treeType = await identifyTree(BigInt(treeId), await this.getContract());
|
|
570
|
-
this.
|
|
640
|
+
this._cache[treeId] = {
|
|
571
641
|
tree: new LeanIMT(this.hashFunc),
|
|
572
642
|
type: treeType,
|
|
573
643
|
lastSynced: BigInt(getDeploymentBlock(chainId))
|
|
574
644
|
}
|
|
575
|
-
return this.
|
|
645
|
+
return this._cache[treeId]
|
|
576
646
|
}
|
|
577
647
|
}
|
|
578
648
|
|
|
@@ -649,7 +719,7 @@ export function getEventFilter(
|
|
|
649
719
|
const trimmedTree = new LeanIMT(hashFunc, trimmed);
|
|
650
720
|
const endTime = performance.now();
|
|
651
721
|
if (event.args.root === trimmedTree.root) {
|
|
652
|
-
console.log(`success full trim on treeId: ${treeId}`)
|
|
722
|
+
//console.log(`success full trim on treeId: ${treeId}`)
|
|
653
723
|
syncState.treeState[treeId] = {
|
|
654
724
|
leaves: [],
|
|
655
725
|
count: 0n,
|
package/src/eventScanning.ts
CHANGED
|
@@ -26,13 +26,13 @@ export type EventLog<TAbiEvent extends AbiEvent> =
|
|
|
26
26
|
TAbiEvent extends AbiEvent ? Log<bigint, number, false, TAbiEvent, true> : never;
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
export type PostQueryEventFilter<TAbiEvent extends AbiEvent> = (allEvents: EventLog<TAbiEvent>[], newChunkEvents: EventLog<TAbiEvent>[],firstBlock:bigint, lastBlock:bigint) => [result:EventLog<TAbiEvent>[],quitEarly:boolean]
|
|
29
|
+
export type PostQueryEventFilter<TAbiEvent extends AbiEvent> = (allEvents: EventLog<TAbiEvent>[], newChunkEvents: EventLog<TAbiEvent>[], firstBlock: bigint, lastBlock: bigint) => [result: EventLog<TAbiEvent>[], quitEarly: boolean]
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
type UnionToIntersection<TUnion> =
|
|
33
33
|
(TUnion extends unknown ? (arg: TUnion) => void : never) extends (arg: infer TIntersection) => void
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
? TIntersection
|
|
35
|
+
: never;
|
|
36
36
|
|
|
37
37
|
type IndexedInput<TAbiEvent extends AbiEvent> = Extract<TAbiEvent['inputs'][number], { indexed: true }>;
|
|
38
38
|
|
|
@@ -49,18 +49,18 @@ type IndexedNames<TAbiEvent extends AbiEvent> =
|
|
|
49
49
|
*/
|
|
50
50
|
type SharedIndexedNames<TAbiEvent extends AbiEvent> =
|
|
51
51
|
UnionToIntersection<TAbiEvent extends AbiEvent ? { names: IndexedNames<TAbiEvent> } : never> extends { names: infer TNames }
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
? TNames & string
|
|
53
|
+
: never;
|
|
54
54
|
|
|
55
55
|
type IndexedInputByName<TAbiEvent extends AbiEvent, TName extends string> =
|
|
56
56
|
Extract<IndexedInput<TAbiEvent>, { name: TName }>;
|
|
57
57
|
|
|
58
58
|
type SharedArgValue<TAbiEvent extends AbiEvent, TName extends string> =
|
|
59
59
|
[IndexedInputByName<TAbiEvent, TName>] extends [never]
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
? unknown
|
|
61
|
+
: IndexedInputByName<TAbiEvent, TName> extends infer TInput
|
|
62
|
+
? TInput extends AbiParameter ? AbiParameterToPrimitiveType<TInput> : never
|
|
63
|
+
: never;
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* Filter on indexed params that all queried events share. A value may be a single value or an
|
|
@@ -68,10 +68,10 @@ type SharedArgValue<TAbiEvent extends AbiEvent, TName extends string> =
|
|
|
68
68
|
*/
|
|
69
69
|
export type SharedEventFilterArgs<TAbiEvent extends AbiEvent> = {
|
|
70
70
|
[TName in SharedIndexedNames<TAbiEvent>]?:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
| SharedArgValue<TAbiEvent, TName>
|
|
72
|
+
| readonly SharedArgValue<TAbiEvent, TName>[]
|
|
73
|
+
| null
|
|
74
|
+
| undefined
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
/**
|
|
@@ -109,9 +109,9 @@ function getEventAbis<TAbiEvent extends AbiEvent>(abi: Abi, eventName: string):
|
|
|
109
109
|
* @returns {Promise<EventLog<TAbiEvent>[]>} Array of event logs, earliest to latest.
|
|
110
110
|
*/
|
|
111
111
|
export async function queryEventInChunks<
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
const TAbi extends Abi,
|
|
113
|
+
const TEventName extends string,
|
|
114
|
+
TAbiEvent extends AbiEvent = Extract<TAbi[number], AbiEvent & { name: TEventName }>
|
|
115
115
|
>({
|
|
116
116
|
publicClient,
|
|
117
117
|
contract,
|
|
@@ -128,12 +128,12 @@ export async function queryEventInChunks<
|
|
|
128
128
|
contract: { address: Address; abi: TAbi };
|
|
129
129
|
eventName: TEventName;
|
|
130
130
|
eventFilterArgs?: GetLogsParameters<TAbiEvent>['args'];
|
|
131
|
-
firstBlock?:bigint;
|
|
131
|
+
firstBlock?: bigint;
|
|
132
132
|
lastBlock?: bigint;
|
|
133
133
|
reverseOrder?: boolean;
|
|
134
134
|
maxEvents?: number;
|
|
135
135
|
chunkSize?: bigint;
|
|
136
|
-
postQueryFilter?:PostQueryEventFilter<TAbiEvent>;
|
|
136
|
+
postQueryFilter?: PostQueryEventFilter<TAbiEvent>;
|
|
137
137
|
}): Promise<EventLog<TAbiEvent>[]> {
|
|
138
138
|
const address = contract.address;
|
|
139
139
|
|
|
@@ -182,9 +182,9 @@ export async function queryEventInChunks<
|
|
|
182
182
|
* @returns {Promise<EventLog<TAbiEvent>[]>} Array of logs of all requested events mixed together, earliest to latest.
|
|
183
183
|
*/
|
|
184
184
|
export async function queryMultiEventsInChunks<
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
185
|
+
const TAbi extends Abi,
|
|
186
|
+
const TEventName extends string,
|
|
187
|
+
TAbiEvent extends AbiEvent = Extract<TAbi[number], AbiEvent & { name: TEventName }>
|
|
188
188
|
>({
|
|
189
189
|
publicClient,
|
|
190
190
|
contract,
|
|
@@ -201,12 +201,12 @@ export async function queryMultiEventsInChunks<
|
|
|
201
201
|
contract: { address: Address; abi: TAbi };
|
|
202
202
|
eventNames: readonly TEventName[];
|
|
203
203
|
sharedEventFilterArgs?: SharedEventFilterArgs<TAbiEvent>;
|
|
204
|
-
firstBlock?:bigint;
|
|
204
|
+
firstBlock?: bigint;
|
|
205
205
|
lastBlock?: bigint;
|
|
206
206
|
reverseOrder?: boolean;
|
|
207
207
|
maxEvents?: number;
|
|
208
208
|
chunkSize?: bigint;
|
|
209
|
-
postQueryFilter?:PostQueryEventFilter<TAbiEvent>;
|
|
209
|
+
postQueryFilter?: PostQueryEventFilter<TAbiEvent>;
|
|
210
210
|
}): Promise<EventLog<TAbiEvent>[]> {
|
|
211
211
|
const address = contract.address;
|
|
212
212
|
const abi = contract.abi;
|
|
@@ -376,9 +376,9 @@ async function scanInChunks<TAbiEvent extends AbiEvent>({
|
|
|
376
376
|
let allEvents: EventLog<TAbiEvent>[] = [];
|
|
377
377
|
let done = false;
|
|
378
378
|
|
|
379
|
-
const scanLogic = async (index: bigint):Promise<[EventLog<TAbiEvent>[], bigint, bigint]> => {
|
|
379
|
+
const scanLogic = async (index: bigint): Promise<[EventLog<TAbiEvent>[], bigint, bigint]> => {
|
|
380
380
|
const start = firstBlock + index * chunkSize;
|
|
381
|
-
const stop
|
|
381
|
+
const stop = minBigInt(start + chunkSize - 1n, lastBlock);
|
|
382
382
|
return [(await queryChunk(start, stop)), start, stop];
|
|
383
383
|
};
|
|
384
384
|
|
|
@@ -393,11 +393,11 @@ async function scanInChunks<TAbiEvent extends AbiEvent>({
|
|
|
393
393
|
}
|
|
394
394
|
allEvents = allEvents.slice(-maxEvents);
|
|
395
395
|
if (done || allEvents.length >= maxEvents) {
|
|
396
|
-
console.log(`stopped scanning at chunk ${index}/${numIters-1}`);
|
|
396
|
+
//console.log(`stopped scanning at chunk ${index}/${numIters-1}`);
|
|
397
397
|
break
|
|
398
398
|
};
|
|
399
399
|
}
|
|
400
|
-
|
|
400
|
+
|
|
401
401
|
} else {
|
|
402
402
|
for (let index = 0n; index < BigInt(numIters); index++) {
|
|
403
403
|
const [events, firstBlock, lastBlock] = await scanLogic(index);
|
|
@@ -406,7 +406,10 @@ async function scanInChunks<TAbiEvent extends AbiEvent>({
|
|
|
406
406
|
[allEvents, done] = postQueryFilter(allEvents, events, firstBlock, lastBlock)
|
|
407
407
|
}
|
|
408
408
|
allEvents = allEvents.slice(0, maxEvents);
|
|
409
|
-
if (done || allEvents.length >= maxEvents) {
|
|
409
|
+
if (done || allEvents.length >= maxEvents) {
|
|
410
|
+
//console.log(`stopped scanning at chunk ${index}/${numIters-1}`);
|
|
411
|
+
break
|
|
412
|
+
};
|
|
410
413
|
}
|
|
411
414
|
}
|
|
412
415
|
|