@warptoad/skinny-fat-imt-js 0.0.3 → 0.0.4
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 +16 -3
- package/dist/Trees.d.ts.map +1 -1
- package/dist/Trees.js +39 -25
- package/dist/Trees.js.map +1 -1
- package/package.json +1 -1
- package/src/Trees.ts +50 -26
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;
|
|
@@ -675,6 +687,7 @@ export declare class Trees {
|
|
|
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,7 +78,7 @@ 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
|
}
|
|
@@ -97,7 +108,7 @@ export class Trees {
|
|
|
97
108
|
*/
|
|
98
109
|
async syncTreesStorage(treeIds = undefined, { chunkSize = 2000n, attemptFastSizeMatch = true, blockNumber } = {}) {
|
|
99
110
|
// default syncs all previously synced trees
|
|
100
|
-
treeIds ??= Object.keys(this.
|
|
111
|
+
treeIds ??= Object.keys(this._cache).map((v) => BigInt(v));
|
|
101
112
|
if (treeIds.length === 0) {
|
|
102
113
|
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
114
|
}
|
|
@@ -106,7 +117,7 @@ export class Trees {
|
|
|
106
117
|
}
|
|
107
118
|
const treeIdsHex = treeIds.map((id) => toHex(id));
|
|
108
119
|
const chainId = await this.publicClient.getChainId();
|
|
109
|
-
const cachedTrees = treeIdsHex.filter((id) => this.
|
|
120
|
+
const cachedTrees = treeIdsHex.filter((id) => this._cache[id] !== undefined && this._cache[id].tree.size > 0);
|
|
110
121
|
if (attemptFastSizeMatch === false && cachedTrees.length > 0) {
|
|
111
122
|
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.`);
|
|
112
123
|
}
|
|
@@ -125,7 +136,7 @@ export class Trees {
|
|
|
125
136
|
for (const treeId of treeIdsHex) {
|
|
126
137
|
const targetSize = await this.getTreeSizeStorage(treeId, chainId, blockNumber);
|
|
127
138
|
const onchainRoot = await this.getRootStorage(treeId, chainId, blockNumber);
|
|
128
|
-
const cached = this.
|
|
139
|
+
const cached = this._cache[treeId];
|
|
129
140
|
const cacheSize = BigInt(cached ? cached.tree.size : 0);
|
|
130
141
|
let tree = undefined;
|
|
131
142
|
// leaves the attempt below already read from the contract, covering [readFrom, targetSize).
|
|
@@ -175,19 +186,19 @@ export class Trees {
|
|
|
175
186
|
if ((tree.root ?? 0n) !== onchainRoot) {
|
|
176
187
|
// every leaf came straight from the contract at this block, so this is not a stale
|
|
177
188
|
// cache. Drop what's cached for this tree, the attempt above may have grown it.
|
|
178
|
-
delete this.
|
|
189
|
+
delete this._cache[treeId];
|
|
179
190
|
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
191
|
}
|
|
181
192
|
}
|
|
182
|
-
this.
|
|
193
|
+
this._cache[treeId] = {
|
|
183
194
|
tree: tree,
|
|
184
|
-
type: this.
|
|
195
|
+
type: this._cache[treeId].type, // getTreeType() above put every treeId in the cache
|
|
185
196
|
lastSynced: blockNumber,
|
|
186
197
|
// attemptFastSizeMatch is a guess this sync made, not something it learned about the tree,
|
|
187
198
|
// so whatever is known about updates stays as it was
|
|
188
|
-
insertOnlyTree: this.
|
|
199
|
+
insertOnlyTree: this._cache[treeId].insertOnlyTree
|
|
189
200
|
};
|
|
190
|
-
syncedTrees[treeId] = this.
|
|
201
|
+
syncedTrees[treeId] = copyCachedTree(this._cache[treeId], this.hashFunc);
|
|
191
202
|
}
|
|
192
203
|
return syncedTrees;
|
|
193
204
|
}
|
|
@@ -228,7 +239,7 @@ export class Trees {
|
|
|
228
239
|
// 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
240
|
// 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
241
|
const oldestBlock = discoverAllIds || syncToRoot !== undefined ? BigInt(getDeploymentBlock(chainId)) : this.getOldestSyncBlock(treeIds);
|
|
231
|
-
const syncState = { treeCache: this.
|
|
242
|
+
const syncState = { treeCache: this._cache, treeState: {}, lastBlockSynced: newestBlock, unsyncedIds: new Set(treeIds.map((id) => toHex(id))) };
|
|
232
243
|
const insertEvents = hasRepeatedLeafs ? ["NewLeaf", "RepeatedLeafs"] : ["NewLeaf"];
|
|
233
244
|
const leafEvents = insertOnlyTree ? insertEvents : ["UpdatedLeaf", ...insertEvents];
|
|
234
245
|
do {
|
|
@@ -253,12 +264,12 @@ export class Trees {
|
|
|
253
264
|
const allTreeIds = new Set([...treeIds.map((id) => toHex(id)), ...Object.keys(syncState.treeState)]);
|
|
254
265
|
for (const treeId of allTreeIds) {
|
|
255
266
|
const newSyncState = syncState.treeState[treeId];
|
|
256
|
-
const cacheTree = this.
|
|
267
|
+
const cacheTree = this._cache[treeId];
|
|
257
268
|
const isNotOld = cacheTree === undefined
|
|
258
269
|
|| (newSyncState !== undefined && newSyncState.lastSynced >= cacheTree.lastSynced);
|
|
259
270
|
// no-op, no new state and no rollback (syncToRoot on old root can be used to go back to a older root)
|
|
260
271
|
if (isNotOld === false && syncToRoot === undefined) {
|
|
261
|
-
syncedTrees[treeId] = cacheTree;
|
|
272
|
+
syncedTrees[treeId] = copyCachedTree(cacheTree, this.hashFunc);
|
|
262
273
|
continue;
|
|
263
274
|
}
|
|
264
275
|
const canMerge = newSyncState !== undefined && cacheTree !== undefined && isNotOld
|
|
@@ -330,9 +341,9 @@ export class Trees {
|
|
|
330
341
|
// a sync may only ever move the cache forward. A syncToRoot rollback is handed to the
|
|
331
342
|
// caller, but the cache keeps the newer tree it already had.
|
|
332
343
|
if (isNotOld) {
|
|
333
|
-
this.
|
|
344
|
+
this._cache[treeId] = synced;
|
|
334
345
|
}
|
|
335
|
-
syncedTrees[treeId] = synced;
|
|
346
|
+
syncedTrees[treeId] = copyCachedTree(synced, this.hashFunc);
|
|
336
347
|
}
|
|
337
348
|
if (syncToRoot !== undefined) {
|
|
338
349
|
const allTreeIds = Object.keys(syncedTrees);
|
|
@@ -377,7 +388,7 @@ export class Trees {
|
|
|
377
388
|
let oldest = treeIds[0];
|
|
378
389
|
let oldestBlock = 2n ** 256n; // Infinity replacement
|
|
379
390
|
for (const id of treeIds) {
|
|
380
|
-
const tree = this.
|
|
391
|
+
const tree = this._cache[id];
|
|
381
392
|
if (tree === undefined) {
|
|
382
393
|
return id;
|
|
383
394
|
}
|
|
@@ -389,18 +400,18 @@ export class Trees {
|
|
|
389
400
|
return oldest;
|
|
390
401
|
}
|
|
391
402
|
getOldestSyncBlock(treeIds) {
|
|
392
|
-
const oldestTree = this.
|
|
403
|
+
const oldestTree = this._cache[this.getOldestSyncTreeId(treeIds.map((id) => toHex(id)))];
|
|
393
404
|
return oldestTree ? oldestTree.lastSynced : 0n;
|
|
394
405
|
}
|
|
395
406
|
async getTreeType(treeId, chainId) {
|
|
396
|
-
return (await this.
|
|
407
|
+
return (await this.initTreeCached(treeId, chainId)).type;
|
|
397
408
|
}
|
|
398
409
|
async getLeavesStorage(treeId, chainId, startIndex, endIndex, blockNumber) {
|
|
399
410
|
const size = await this.getTreeSizeStorage(treeId, chainId, blockNumber);
|
|
400
411
|
if (startIndex > endIndex || endIndex > size) {
|
|
401
412
|
throw new Error(`Leaf range [${startIndex}, ${endIndex}) is out of range for treeId:${treeId}, which holds ${size} leaves at block:${blockNumber}.`);
|
|
402
413
|
}
|
|
403
|
-
const treeType = (await this.
|
|
414
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type;
|
|
404
415
|
const contract = await this.getContract();
|
|
405
416
|
switch (treeType) {
|
|
406
417
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -423,7 +434,7 @@ export class Trees {
|
|
|
423
434
|
if (cachedSize !== undefined && cachedSize.blockNumber === blockNumber) {
|
|
424
435
|
return cachedSize.size;
|
|
425
436
|
}
|
|
426
|
-
const treeType = (await this.
|
|
437
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type;
|
|
427
438
|
const contract = await this.getContract();
|
|
428
439
|
let size;
|
|
429
440
|
switch (treeType) {
|
|
@@ -442,7 +453,7 @@ export class Trees {
|
|
|
442
453
|
return size;
|
|
443
454
|
}
|
|
444
455
|
async getRootStorage(treeId, chainId, blockNumber) {
|
|
445
|
-
const treeType = (await this.
|
|
456
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type;
|
|
446
457
|
const contract = await this.getContract();
|
|
447
458
|
switch (treeType) {
|
|
448
459
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -456,16 +467,19 @@ export class Trees {
|
|
|
456
467
|
}
|
|
457
468
|
}
|
|
458
469
|
async initTree(treeId, chainId) {
|
|
459
|
-
|
|
460
|
-
|
|
470
|
+
return copyCachedTree(await this.initTreeCached(treeId, chainId), this.hashFunc);
|
|
471
|
+
}
|
|
472
|
+
async initTreeCached(treeId, chainId) {
|
|
473
|
+
if (this._cache[treeId]) {
|
|
474
|
+
return this._cache[treeId];
|
|
461
475
|
}
|
|
462
476
|
const treeType = await identifyTree(BigInt(treeId), await this.getContract());
|
|
463
|
-
this.
|
|
477
|
+
this._cache[treeId] = {
|
|
464
478
|
tree: new LeanIMT(this.hashFunc),
|
|
465
479
|
type: treeType,
|
|
466
480
|
lastSynced: BigInt(getDeploymentBlock(chainId))
|
|
467
481
|
};
|
|
468
|
-
return this.
|
|
482
|
+
return this._cache[treeId];
|
|
469
483
|
}
|
|
470
484
|
}
|
|
471
485
|
export async function identifyTree(treeId, contract) {
|
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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"}
|
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,7 +153,7 @@ 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})\``) }
|
|
139
158
|
if (fullNodeMode) {
|
|
140
159
|
syncedTrees = await this.syncTreesStorage(
|
|
@@ -174,7 +193,7 @@ export class Trees {
|
|
|
174
193
|
{ chunkSize = 2000n, attemptFastSizeMatch = true, blockNumber }: { attemptFastSizeMatch?: boolean, chunkSize?: bigint, blockNumber?: bigint } = {}
|
|
175
194
|
): Promise<{ [treeId: Hex]: CachedTree }> {
|
|
176
195
|
// default syncs all previously synced trees
|
|
177
|
-
treeIds ??= (Object.keys(this.
|
|
196
|
+
treeIds ??= (Object.keys(this._cache) as Hex[]).map((v) => BigInt(v));
|
|
178
197
|
if (treeIds.length === 0) {
|
|
179
198
|
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
199
|
}
|
|
@@ -184,7 +203,7 @@ export class Trees {
|
|
|
184
203
|
const treeIdsHex = treeIds.map((id) => toHex(id));
|
|
185
204
|
|
|
186
205
|
const chainId = await this.publicClient.getChainId();
|
|
187
|
-
const cachedTrees = treeIdsHex.filter((id) => this.
|
|
206
|
+
const cachedTrees = treeIdsHex.filter((id) => this._cache[id] !== undefined && this._cache[id].tree.size > 0)
|
|
188
207
|
if (attemptFastSizeMatch === false && cachedTrees.length > 0) {
|
|
189
208
|
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.`)
|
|
190
209
|
}
|
|
@@ -204,7 +223,7 @@ export class Trees {
|
|
|
204
223
|
for (const treeId of treeIdsHex) {
|
|
205
224
|
const targetSize = await this.getTreeSizeStorage(treeId, chainId, blockNumber)
|
|
206
225
|
const onchainRoot = await this.getRootStorage(treeId, chainId, blockNumber)
|
|
207
|
-
const cached = this.
|
|
226
|
+
const cached = this._cache[treeId]
|
|
208
227
|
const cacheSize = BigInt(cached ? cached.tree.size : 0)
|
|
209
228
|
|
|
210
229
|
let tree: LeanIMT<bigint> | undefined = undefined
|
|
@@ -254,20 +273,20 @@ export class Trees {
|
|
|
254
273
|
if ((tree.root ?? 0n) !== onchainRoot) {
|
|
255
274
|
// every leaf came straight from the contract at this block, so this is not a stale
|
|
256
275
|
// cache. Drop what's cached for this tree, the attempt above may have grown it.
|
|
257
|
-
delete this.
|
|
276
|
+
delete this._cache[treeId]
|
|
258
277
|
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
278
|
}
|
|
260
279
|
}
|
|
261
280
|
|
|
262
|
-
this.
|
|
281
|
+
this._cache[treeId] = {
|
|
263
282
|
tree: tree,
|
|
264
|
-
type: this.
|
|
283
|
+
type: this._cache[treeId].type, // getTreeType() above put every treeId in the cache
|
|
265
284
|
lastSynced: blockNumber,
|
|
266
285
|
// attemptFastSizeMatch is a guess this sync made, not something it learned about the tree,
|
|
267
286
|
// so whatever is known about updates stays as it was
|
|
268
|
-
insertOnlyTree: this.
|
|
287
|
+
insertOnlyTree: this._cache[treeId].insertOnlyTree
|
|
269
288
|
}
|
|
270
|
-
syncedTrees[treeId] = this.
|
|
289
|
+
syncedTrees[treeId] = copyCachedTree(this._cache[treeId], this.hashFunc)
|
|
271
290
|
}
|
|
272
291
|
return syncedTrees
|
|
273
292
|
}
|
|
@@ -314,7 +333,7 @@ export class Trees {
|
|
|
314
333
|
// 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
334
|
const oldestBlock = discoverAllIds || syncToRoot !== undefined ? BigInt(getDeploymentBlock(chainId)) : this.getOldestSyncBlock(treeIds)
|
|
316
335
|
|
|
317
|
-
const syncState: SyncState = { treeCache: this.
|
|
336
|
+
const syncState: SyncState = { treeCache: this._cache, treeState: {}, lastBlockSynced: newestBlock, unsyncedIds: new Set(treeIds.map((id) => toHex(id))) }
|
|
318
337
|
|
|
319
338
|
const insertEvents = hasRepeatedLeafs ? ["NewLeaf", "RepeatedLeafs"] as const : ["NewLeaf"] as const;
|
|
320
339
|
const leafEvents = insertOnlyTree ? insertEvents : ["UpdatedLeaf", ...insertEvents] as const
|
|
@@ -341,14 +360,14 @@ export class Trees {
|
|
|
341
360
|
const allTreeIds = new Set([...treeIds.map((id) => toHex(id)), ...Object.keys(syncState.treeState) as Hex[]])
|
|
342
361
|
for (const treeId of allTreeIds) {
|
|
343
362
|
const newSyncState = syncState.treeState[treeId]
|
|
344
|
-
const cacheTree = this.
|
|
363
|
+
const cacheTree = this._cache[treeId];
|
|
345
364
|
|
|
346
365
|
const isNotOld = cacheTree === undefined
|
|
347
366
|
|| (newSyncState !== undefined && newSyncState.lastSynced >= cacheTree.lastSynced)
|
|
348
367
|
|
|
349
368
|
// no-op, no new state and no rollback (syncToRoot on old root can be used to go back to a older root)
|
|
350
369
|
if (isNotOld === false && syncToRoot === undefined) {
|
|
351
|
-
syncedTrees[treeId] = cacheTree
|
|
370
|
+
syncedTrees[treeId] = copyCachedTree(cacheTree, this.hashFunc)
|
|
352
371
|
continue
|
|
353
372
|
}
|
|
354
373
|
|
|
@@ -426,9 +445,10 @@ export class Trees {
|
|
|
426
445
|
// a sync may only ever move the cache forward. A syncToRoot rollback is handed to the
|
|
427
446
|
// caller, but the cache keeps the newer tree it already had.
|
|
428
447
|
if (isNotOld) {
|
|
429
|
-
this.
|
|
448
|
+
this._cache[treeId] = synced
|
|
430
449
|
}
|
|
431
|
-
|
|
450
|
+
|
|
451
|
+
syncedTrees[treeId] = copyCachedTree(synced, this.hashFunc);
|
|
432
452
|
}
|
|
433
453
|
|
|
434
454
|
if (syncToRoot !== undefined) {
|
|
@@ -478,7 +498,7 @@ export class Trees {
|
|
|
478
498
|
let oldest = treeIds[0];
|
|
479
499
|
let oldestBlock = 2n ** 256n; // Infinity replacement
|
|
480
500
|
for (const id of treeIds) {
|
|
481
|
-
const tree = this.
|
|
501
|
+
const tree = this._cache[id]
|
|
482
502
|
if (tree === undefined) {
|
|
483
503
|
return id
|
|
484
504
|
}
|
|
@@ -491,12 +511,12 @@ export class Trees {
|
|
|
491
511
|
}
|
|
492
512
|
|
|
493
513
|
getOldestSyncBlock(treeIds: bigint[]) {
|
|
494
|
-
const oldestTree = this.
|
|
514
|
+
const oldestTree = this._cache[this.getOldestSyncTreeId(treeIds.map((id) => toHex(id)))]
|
|
495
515
|
return oldestTree ? oldestTree.lastSynced : 0n
|
|
496
516
|
}
|
|
497
517
|
|
|
498
518
|
async getTreeType(treeId: Hex, chainId: number) {
|
|
499
|
-
return (await this.
|
|
519
|
+
return (await this.initTreeCached(treeId, chainId)).type
|
|
500
520
|
}
|
|
501
521
|
|
|
502
522
|
async getLeavesStorage(treeId: Hex, chainId: number, startIndex: bigint, endIndex: bigint, blockNumber: bigint) {
|
|
@@ -504,7 +524,7 @@ export class Trees {
|
|
|
504
524
|
if (startIndex > endIndex || endIndex > size) {
|
|
505
525
|
throw new Error(`Leaf range [${startIndex}, ${endIndex}) is out of range for treeId:${treeId}, which holds ${size} leaves at block:${blockNumber}.`)
|
|
506
526
|
}
|
|
507
|
-
const treeType = (await this.
|
|
527
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type
|
|
508
528
|
const contract = await this.getContract()
|
|
509
529
|
switch (treeType) {
|
|
510
530
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -528,7 +548,7 @@ export class Trees {
|
|
|
528
548
|
if (cachedSize !== undefined && cachedSize.blockNumber === blockNumber) {
|
|
529
549
|
return cachedSize.size
|
|
530
550
|
}
|
|
531
|
-
const treeType = (await this.
|
|
551
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type
|
|
532
552
|
const contract = await this.getContract()
|
|
533
553
|
let size: bigint
|
|
534
554
|
switch (treeType) {
|
|
@@ -548,7 +568,7 @@ export class Trees {
|
|
|
548
568
|
}
|
|
549
569
|
|
|
550
570
|
async getRootStorage(treeId: Hex, chainId: number, blockNumber: bigint) {
|
|
551
|
-
const treeType = (await this.
|
|
571
|
+
const treeType = (await this.initTreeCached(treeId, chainId)).type
|
|
552
572
|
const contract = await this.getContract()
|
|
553
573
|
switch (treeType) {
|
|
554
574
|
case TREE_TYPE.SKINNY_STORAGE:
|
|
@@ -562,17 +582,21 @@ export class Trees {
|
|
|
562
582
|
}
|
|
563
583
|
}
|
|
564
584
|
|
|
565
|
-
async initTree(treeId: Hex, chainId: number) {
|
|
566
|
-
|
|
567
|
-
|
|
585
|
+
async initTree(treeId: Hex, chainId: number): Promise<CachedTree> {
|
|
586
|
+
return copyCachedTree(await this.initTreeCached(treeId, chainId), this.hashFunc)
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
private async initTreeCached(treeId: Hex, chainId: number): Promise<CachedTree> {
|
|
590
|
+
if (this._cache[treeId]) {
|
|
591
|
+
return this._cache[treeId]
|
|
568
592
|
}
|
|
569
593
|
const treeType = await identifyTree(BigInt(treeId), await this.getContract());
|
|
570
|
-
this.
|
|
594
|
+
this._cache[treeId] = {
|
|
571
595
|
tree: new LeanIMT(this.hashFunc),
|
|
572
596
|
type: treeType,
|
|
573
597
|
lastSynced: BigInt(getDeploymentBlock(chainId))
|
|
574
598
|
}
|
|
575
|
-
return this.
|
|
599
|
+
return this._cache[treeId]
|
|
576
600
|
}
|
|
577
601
|
}
|
|
578
602
|
|