@aztec/archiver 0.0.1-commit.321f6a9 → 0.0.1-commit.330febf
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/dest/archiver.d.ts +1 -1
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +1 -1
- package/dest/modules/outbox_trees_resolver.d.ts +4 -2
- package/dest/modules/outbox_trees_resolver.d.ts.map +1 -1
- package/dest/modules/outbox_trees_resolver.js +35 -13
- package/dest/store/block_store.d.ts +2 -1
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +53 -13
- package/package.json +13 -14
- package/src/archiver.ts +1 -0
- package/src/modules/outbox_trees_resolver.ts +34 -13
- package/src/store/block_store.ts +58 -12
package/dest/archiver.d.ts
CHANGED
|
@@ -191,4 +191,4 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
191
191
|
getL2Tips(): Promise<L2Tips>;
|
|
192
192
|
rollbackTo(targetL2BlockNumber: BlockNumber): Promise<void>;
|
|
193
193
|
}
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQXVCLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXBELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxjQUFjLEVBQTJCLE1BQU0sbUNBQW1DLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBVyxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxTQUFTLEVBQ2QsT0FBTyxFQUNQLEtBQUssV0FBVyxFQUVoQixLQUFLLE1BQU0sRUFDWCxLQUFLLHdCQUF3QixFQUU5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0YsT0FB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
|
package/dest/archiver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../src/archiver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../src/archiver.ts"],"names":[],"mappings":"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"}
|
package/dest/archiver.js
CHANGED
|
@@ -472,7 +472,7 @@ _dec = trackSpan('Archiver.sync');
|
|
|
472
472
|
});
|
|
473
473
|
// The resolver reads its witness data from this archiver and pins its lazy Outbox-root fetches
|
|
474
474
|
// to the archiver's synced L1 block. No method on `this` is invoked during construction.
|
|
475
|
-
this.outboxTreesResolver = new OutboxTreesResolver(this.outbox, this, ()=>Promise.resolve(this.getL1BlockNumber()), l1Constants.epochDuration);
|
|
475
|
+
this.outboxTreesResolver = new OutboxTreesResolver(this.outbox, this, this.dataStores.db, ()=>Promise.resolve(this.getL1BlockNumber()), l1Constants.epochDuration);
|
|
476
476
|
// Running promise starts with a small interval inbetween runs, so all iterations needed for the initial sync
|
|
477
477
|
// are done as fast as possible. This then gets updated once the initial sync completes.
|
|
478
478
|
this.runningPromise = new RunningPromise(()=>this.sync(), this.log, this.config.pollingIntervalMs / 10, makeLoggingErrorHandler(this.log, NoBlobBodiesFoundError, BlockTagTooOldError));
|
|
@@ -2,6 +2,7 @@ import type { OutboxContract } from '@aztec/ethereum/contracts';
|
|
|
2
2
|
import type { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { type Logger } from '@aztec/foundation/log';
|
|
5
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
6
|
import type { L2Block } from '@aztec/stdlib/block';
|
|
6
7
|
import type { CheckpointData } from '@aztec/stdlib/checkpoint';
|
|
7
8
|
import { type L2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
@@ -42,10 +43,11 @@ export declare class OutboxTreesResolver {
|
|
|
42
43
|
#private;
|
|
43
44
|
private readonly outbox;
|
|
44
45
|
private readonly archiver;
|
|
46
|
+
private readonly store;
|
|
45
47
|
private readonly getSyncedL1BlockNumber;
|
|
46
48
|
private readonly epochDuration;
|
|
47
49
|
private readonly log;
|
|
48
|
-
constructor(outbox: OutboxContract, archiver: OutboxTreesArchiverView, getSyncedL1BlockNumber: () => Promise<bigint | undefined>, epochDuration: number, log?: Logger);
|
|
50
|
+
constructor(outbox: OutboxContract, archiver: OutboxTreesArchiverView, store: AztecAsyncKVStore, getSyncedL1BlockNumber: () => Promise<bigint | undefined>, epochDuration: number, log?: Logger);
|
|
49
51
|
/**
|
|
50
52
|
* Builds the L2-to-L1 membership witness for `message` in tx `txHash`. Returns `undefined` if the
|
|
51
53
|
* tx isn't yet in a block/epoch, or if the Outbox holds no covering partial-proof root for the
|
|
@@ -59,4 +61,4 @@ export declare class OutboxTreesResolver {
|
|
|
59
61
|
*/
|
|
60
62
|
private makeNodeView;
|
|
61
63
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym94X3RyZWVzX3Jlc29sdmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9vdXRib3hfdHJlZXNfcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxLQUFLLHVCQUF1QixFQUFrQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRTs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsdUJBQXVCO0lBQ3RDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7UUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDO1FBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyRixRQUFRLENBQUMsS0FBSyxFQUFFO1FBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN2RSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7UUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUM3RSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0NBQ25FO0FBVUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxxQkFBYSxtQkFBbUI7O0lBVzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBQ3RCLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYTtJQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUc7SUFOdEIsWUFDbUIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsUUFBUSxFQUFFLHVCQUF1QixFQUNqQyxLQUFLLEVBQUUsaUJBQWlCLEVBQ3hCLHNCQUFzQixFQUFFLE1BQU0sT0FBTyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsRUFDekQsYUFBYSxFQUFFLE1BQU0sRUFDckIsR0FBRyxHQUFFLE1BQXdDLEVBRy9EO0lBRUQ7Ozs7T0FJRztJQUNVLDBCQUEwQixDQUNyQyxNQUFNLEVBQUUsTUFBTSxFQUNkLE9BQU8sRUFBRSxFQUFFLEVBQ1gsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEdBQ3hCLE9BQU8sQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUMsQ0E2RDlDO0lBaUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWTtDQVlyQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox_trees_resolver.d.ts","sourceRoot":"","sources":["../../src/modules/outbox_trees_resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,KAAK,uBAAuB,EAAkC,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,gBAAgB,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACrF,QAAQ,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACvE,kBAAkB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;CACnE;AAUD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAmB;;IAW5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"outbox_trees_resolver.d.ts","sourceRoot":"","sources":["../../src/modules/outbox_trees_resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,KAAK,uBAAuB,EAAkC,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,gBAAgB,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACrF,QAAQ,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACvE,kBAAkB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;CACnE;AAUD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAmB;;IAW5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IANtB,YACmB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,uBAAuB,EACjC,KAAK,EAAE,iBAAiB,EACxB,sBAAsB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EACzD,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAwC,EAG/D;IAED;;;;OAIG;IACU,0BAA0B,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,EAAE,EACX,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CA6D9C;IAiED;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAYrB"}
|
|
@@ -19,15 +19,17 @@ import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
|
19
19
|
*/ export class OutboxTreesResolver {
|
|
20
20
|
outbox;
|
|
21
21
|
archiver;
|
|
22
|
+
store;
|
|
22
23
|
getSyncedL1BlockNumber;
|
|
23
24
|
epochDuration;
|
|
24
25
|
log;
|
|
25
26
|
/** In-memory cache of per-epoch Outbox roots, keyed by epoch number. */ #cache;
|
|
26
27
|
/** Single-flight registry for in-flight roots fetches, keyed by epoch number. */ #pending;
|
|
27
28
|
/** Adapter exposing the slice of the node API that `computeL2ToL1MembershipWitness` requires. */ #node;
|
|
28
|
-
constructor(outbox, archiver, getSyncedL1BlockNumber, epochDuration, log = createLogger('archiver:outbox')){
|
|
29
|
+
constructor(outbox, archiver, store, getSyncedL1BlockNumber, epochDuration, log = createLogger('archiver:outbox')){
|
|
29
30
|
this.outbox = outbox;
|
|
30
31
|
this.archiver = archiver;
|
|
32
|
+
this.store = store;
|
|
31
33
|
this.getSyncedL1BlockNumber = getSyncedL1BlockNumber;
|
|
32
34
|
this.epochDuration = epochDuration;
|
|
33
35
|
this.log = log;
|
|
@@ -40,6 +42,9 @@ import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
|
40
42
|
* tx isn't yet in a block/epoch, or if the Outbox holds no covering partial-proof root for the
|
|
41
43
|
* tx's checkpoint as of the node's synced L1 block — callers should retry in that case.
|
|
42
44
|
*/ async getL2ToL1MembershipWitness(txHash, message, messageIndexInTx) {
|
|
45
|
+
// Read the tx effect once up front only to learn which epoch's Outbox roots to fetch. The roots
|
|
46
|
+
// read hits L1, so it stays outside the store transaction below: holding the archiver's writer
|
|
47
|
+
// lock across a network round-trip would stall block sync.
|
|
43
48
|
const indexed = await this.archiver.getTxEffect(txHash);
|
|
44
49
|
if (!indexed) {
|
|
45
50
|
this.log.trace(`No tx effect for tx, no witness available`, {
|
|
@@ -56,22 +61,39 @@ import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
|
56
61
|
if (roots === undefined) {
|
|
57
62
|
return undefined;
|
|
58
63
|
}
|
|
59
|
-
const receipt = {
|
|
60
|
-
txHash,
|
|
61
|
-
epochNumber,
|
|
62
|
-
blockNumber: indexed.l2BlockNumber,
|
|
63
|
-
txIndexInBlock: indexed.txIndexInBlock
|
|
64
|
-
};
|
|
65
64
|
const syncedBefore = await this.getSyncedL1BlockNumber();
|
|
66
65
|
try {
|
|
67
|
-
|
|
66
|
+
// Assemble the witness inside a single store transaction so every archiver read it depends on
|
|
67
|
+
// (the tx effect, the epoch's blocks, the target block and the checkpoint metadata) observes one
|
|
68
|
+
// consistent snapshot. `transactionAsync` serializes against writers, and the substore reads
|
|
69
|
+
// below bind to it automatically, so no store commit can land mid-assembly and splice together
|
|
70
|
+
// two different chain states — which would otherwise surface as a spurious "message does not
|
|
71
|
+
// exist" error even when the tx-effect index is healthy.
|
|
72
|
+
return await this.store.transactionAsync(async ()=>{
|
|
73
|
+
// Re-read the tx effect within the snapshot so the receipt's block number and tx index stay
|
|
74
|
+
// consistent with the block and checkpoint data read while building the witness. The epoch is
|
|
75
|
+
// reused from the pre-transaction read (it selected the roots above); if a reorg moved the tx
|
|
76
|
+
// to a different epoch in between, the block lookups simply miss and the helper returns
|
|
77
|
+
// undefined for the caller to retry.
|
|
78
|
+
const indexedInSnapshot = await this.archiver.getTxEffect(txHash);
|
|
79
|
+
if (!indexedInSnapshot) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const receipt = {
|
|
83
|
+
txHash,
|
|
84
|
+
epochNumber,
|
|
85
|
+
blockNumber: indexedInSnapshot.l2BlockNumber,
|
|
86
|
+
txIndexInBlock: indexedInSnapshot.txIndexInBlock
|
|
87
|
+
};
|
|
88
|
+
return await computeL2ToL1MembershipWitness(this.#node, roots, message, receipt, messageIndexInTx);
|
|
89
|
+
});
|
|
68
90
|
} catch (err) {
|
|
69
91
|
// The helper throws if the locally-assembled epoch root disagrees with the cached Outbox root.
|
|
70
|
-
// The cached roots are pinned to the node's synced L1 block, but the
|
|
71
|
-
//
|
|
72
|
-
// different heights and produce a transient mismatch. When the synced block moved
|
|
73
|
-
// assembly we treat the mismatch as transient and return undefined so the caller can
|
|
74
|
-
// mismatch at a stable synced block is a genuine node/L1 disagreement and must surface.
|
|
92
|
+
// The cached roots are pinned to the node's synced L1 block, but the block / checkpoint data is
|
|
93
|
+
// read from a store snapshot taken after that fetch, so if the archiver advanced in between the
|
|
94
|
+
// two can reflect different heights and produce a transient mismatch. When the synced block moved
|
|
95
|
+
// during assembly we treat the mismatch as transient and return undefined so the caller can
|
|
96
|
+
// retry; a mismatch at a stable synced block is a genuine node/L1 disagreement and must surface.
|
|
75
97
|
const syncedAfter = await this.getSyncedL1BlockNumber();
|
|
76
98
|
if (syncedBefore !== syncedAfter && err instanceof Error && err.message.includes('does not match Outbox')) {
|
|
77
99
|
this.log.debug(`Transient outbox root mismatch during sync, returning no witness`, {
|
|
@@ -98,6 +98,7 @@ export declare class BlockStore {
|
|
|
98
98
|
private validateCheckpointBlocks;
|
|
99
99
|
private addBlockToDatabase;
|
|
100
100
|
private deleteBlock;
|
|
101
|
+
private deleteTxEffect;
|
|
101
102
|
/**
|
|
102
103
|
* Removes all checkpoints with checkpoint number > checkpointNumber.
|
|
103
104
|
* Also removes ALL blocks (both checkpointed and uncheckpointed) after the last block of the given checkpoint.
|
|
@@ -300,4 +301,4 @@ export declare class BlockStore {
|
|
|
300
301
|
private advanceSynchedL1BlockNumber;
|
|
301
302
|
private rejectedCheckpointFromStorage;
|
|
302
303
|
}
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9ibG9ja19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUF5QixVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuSCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQTZDLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssU0FBUyxFQUNkLFNBQVMsRUFFVCxvQkFBb0IsRUFFcEIsT0FBTyxFQUVQLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBRzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVMLEtBQUssY0FBYyxFQUNuQixLQUFLLG9CQUFvQixFQUN6QixlQUFlLEVBQ2YsS0FBSyxzQkFBc0IsRUFDM0IsS0FBSyx1QkFBdUIsRUFDNUIsbUJBQW1CLEVBQ3BCLE1BQU0sMEJBQTBCLENBQUM7QUFHbEMsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUVwQixNQUFNLEVBR1AsTUFBTSxrQkFBa0IsQ0FBQztBQW1CMUIsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFZcEUsb0RBQW9EO0FBQ3BELE1BQU0sTUFBTSx3QkFBd0IsR0FBRyxzQkFBc0IsR0FBRyxvQ0FBb0MsQ0FBQztBQUVyRzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLCtDQUErQztJQUMvQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUNuQywwR0FBMEc7SUFDMUcsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQUNoQixrRkFBa0Y7SUFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../src/store/block_store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAyB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAMpD,OAAO,KAAK,EAAE,iBAAiB,EAA6C,MAAM,iBAAiB,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,SAAS,EACd,SAAS,EAET,oBAAoB,EAEpB,OAAO,EAEP,KAAK,MAAM,EACX,KAAK,wBAAwB,EAG9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAEL,KAAK,eAAe,EAEpB,MAAM,EAGP,MAAM,kBAAkB,CAAC;AAmB1B,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAYpE,oDAAoD;AACpD,MAAM,MAAM,wBAAwB,GAAG,sBAAsB,GAAG,oCAAoC,CAAC;AAErG;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,+CAA+C;IAC/C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,0GAA0G;IAC1G,WAAW,EAAE,EAAE,CAAC;IAChB,kFAAkF;IAClF,iBAAiB,EAAE,EAAE,CAAC;IACtB,8CAA8C;IAC9C,UAAU,EAAE,UAAU,CAAC;IACvB,uFAAuF;IACvF,EAAE,EAAE,eAAe,CAAC;IACpB,kCAAkC;IAClC,MAAM,EAAE,wBAAwB,CAAC;CAClC,CAAC;AAiCF,MAAM,MAAM,uBAAuB,GAAG;IAAE,aAAa,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,EAAE,CAAA;CAAE,CAAC;AAEjG;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnG;;GAEG;AACH,qBAAa,UAAU;;IAgDT,OAAO,CAAC,EAAE;IAAtB,YAAoB,EAAE,EAAE,iBAAiB,EAgBxC;IAED;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,WAAW,CAAC,CAUtD;IAED;;;;;;OAMG;IACG,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAmEvF;IAED;;;;;;;OAOG;IACG,cAAc,CAClB,WAAW,EAAE,mBAAmB,EAAE,EAClC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAC7B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgFhC;YAMa,oCAAoC;YA6CpC,0BAA0B;IAuBxC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;YAiClB,kBAAkB;YA8BlB,WAAW;
|
|
1
|
+
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../src/store/block_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -313,17 +313,51 @@ import { BlockAlreadyCheckpointedError, BlockArchiveNotConsistentError, BlockChe
|
|
|
313
313
|
await this.#blockHashIndex.set(blockHash.toString(), block.number);
|
|
314
314
|
await this.#blockArchiveIndex.set(block.archive.root.toString(), block.number);
|
|
315
315
|
}
|
|
316
|
-
/** Deletes a block and all associated data (tx effects, indices). */ async deleteBlock(
|
|
316
|
+
/** Deletes a block and all associated data (tx effects, indices). */ async deleteBlock(blockNumber, blockStorage) {
|
|
317
317
|
// Delete the block from the main blocks map
|
|
318
|
-
await this.#blocks.delete(
|
|
319
|
-
|
|
320
|
-
|
|
318
|
+
await this.#blocks.delete(blockNumber);
|
|
319
|
+
const blockHash = bufferToHex(blockStorage.blockHash);
|
|
320
|
+
// Delete the tx effects of the block's txs, skipping entries that no longer point at this block: if
|
|
321
|
+
// another stored block also contains the tx, the entry points at that block, and deleting it here would
|
|
322
|
+
// orphan that block's index. Honest chains never store the same tx twice (duplicate nullifiers are
|
|
323
|
+
// rejected at build, re-execution, and world-state sync), so the store must not turn such a state into
|
|
324
|
+
// corruption of the surviving block if it ever appears.
|
|
325
|
+
const blockTxsBuffer = await this.#blockTxs.getAsync(blockHash);
|
|
326
|
+
if (blockTxsBuffer !== undefined) {
|
|
327
|
+
const reader = BufferReader.asReader(blockTxsBuffer);
|
|
328
|
+
const txHashes = [];
|
|
329
|
+
while(!reader.isEmpty()){
|
|
330
|
+
txHashes.push(reader.readObject(TxHash).toString());
|
|
331
|
+
}
|
|
332
|
+
await Promise.all(txHashes.map((txHash)=>this.deleteTxEffect(txHash, blockStorage.blockHash)));
|
|
333
|
+
}
|
|
321
334
|
// Delete block txs mapping
|
|
322
|
-
const blockHash = (await block.hash()).toString();
|
|
323
335
|
await this.#blockTxs.delete(blockHash);
|
|
324
336
|
// Clean up indices
|
|
325
337
|
await this.#blockHashIndex.delete(blockHash);
|
|
326
|
-
await this.#blockArchiveIndex.delete(
|
|
338
|
+
await this.#blockArchiveIndex.delete(AppendOnlyTreeSnapshot.fromBuffer(blockStorage.archive).root.toString());
|
|
339
|
+
}
|
|
340
|
+
/** Deletes a tx effect only if it is still owned by (points at) the given block. */ async deleteTxEffect(txHash, blockHash) {
|
|
341
|
+
const stored = await this.#txEffects.getAsync(txHash);
|
|
342
|
+
if (stored === undefined) {
|
|
343
|
+
this.#log.warn(`Missing tx effect for tx ${txHash} while removing its block`, {
|
|
344
|
+
txHash,
|
|
345
|
+
blockHash: bufferToHex(blockHash)
|
|
346
|
+
});
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
// An IndexedTxEffect starts with the owning block hash (32 bytes) — see getTxLocation.
|
|
350
|
+
if (!Buffer.from(stored.buffer, stored.byteOffset, 32).equals(blockHash)) {
|
|
351
|
+
// Fires only when two stored blocks listed the same tx — a state upstream validation should make
|
|
352
|
+
// unreachable. Keep the entry (it belongs to the surviving block) but flag the duplication loudly.
|
|
353
|
+
this.#log.warn(`Tx effect for tx ${txHash} is owned by a block other than the one being removed`, {
|
|
354
|
+
txHash,
|
|
355
|
+
removedBlockHash: bufferToHex(blockHash),
|
|
356
|
+
owningBlockHash: bufferToHex(Buffer.from(stored.buffer, stored.byteOffset, 32))
|
|
357
|
+
});
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
await this.#txEffects.delete(txHash);
|
|
327
361
|
}
|
|
328
362
|
/**
|
|
329
363
|
* Removes all checkpoints with checkpoint number > checkpointNumber.
|
|
@@ -504,16 +538,22 @@ import { BlockAlreadyCheckpointedError, BlockArchiveNotConsistentError, BlockChe
|
|
|
504
538
|
const latestBlockNumber = await this.getLatestL2BlockNumber();
|
|
505
539
|
// Iterate from blockNumber + 1 to latestBlockNumber
|
|
506
540
|
for(let bn = blockNumber + 1; bn <= latestBlockNumber; bn++){
|
|
507
|
-
const
|
|
508
|
-
|
|
509
|
-
});
|
|
510
|
-
if (block === undefined) {
|
|
541
|
+
const blockStorage = await this.#blocks.getAsync(bn);
|
|
542
|
+
if (blockStorage === undefined) {
|
|
511
543
|
this.#log.warn(`Cannot remove block ${bn} from the store since we don't have it`);
|
|
512
544
|
continue;
|
|
513
545
|
}
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
this
|
|
546
|
+
// Load the full block for the returned list when possible, but clean up from the raw row regardless:
|
|
547
|
+
// a block whose body can no longer be fully loaded must still release its row, tx effects, and indices,
|
|
548
|
+
// or later inserts at this number leave stale tx-effect entries pointing into the new chain.
|
|
549
|
+
const block = await this.getBlockFromBlockStorage(bn, blockStorage);
|
|
550
|
+
if (block !== undefined) {
|
|
551
|
+
removedBlocks.push(block);
|
|
552
|
+
} else {
|
|
553
|
+
this.#log.warn(`Removing block ${bn} whose body could not be fully loaded`);
|
|
554
|
+
}
|
|
555
|
+
await this.deleteBlock(bn, blockStorage);
|
|
556
|
+
this.#log.debug(`Removed block ${bn} ${bufferToHex(blockStorage.blockHash)}`);
|
|
517
557
|
}
|
|
518
558
|
return removedBlocks;
|
|
519
559
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.330febf",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -65,19 +65,18 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
69
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
70
|
-
"@aztec/constants": "0.0.1-commit.
|
|
71
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
72
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
73
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
74
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
75
|
-
"@aztec/l1-artifacts": "0.0
|
|
76
|
-
"@aztec/
|
|
77
|
-
"@aztec/
|
|
78
|
-
"@aztec/
|
|
79
|
-
"@aztec/
|
|
80
|
-
"@aztec/telemetry-client": "0.0.1-commit.321f6a9",
|
|
68
|
+
"@aztec/blob-client": "0.0.1-commit.330febf",
|
|
69
|
+
"@aztec/blob-lib": "0.0.1-commit.330febf",
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.330febf",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.330febf",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.330febf",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.330febf",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.330febf",
|
|
75
|
+
"@aztec/l1-artifacts": "6.0.0-nightly.20260807",
|
|
76
|
+
"@aztec/protocol-contracts": "0.0.1-commit.330febf",
|
|
77
|
+
"@aztec/standard-contracts": "0.0.1-commit.330febf",
|
|
78
|
+
"@aztec/stdlib": "0.0.1-commit.330febf",
|
|
79
|
+
"@aztec/telemetry-client": "0.0.1-commit.330febf",
|
|
81
80
|
"lodash.groupby": "^4.6.0",
|
|
82
81
|
"lodash.omit": "^4.5.0",
|
|
83
82
|
"tslib": "^2.5.0",
|
package/src/archiver.ts
CHANGED
|
@@ -203,6 +203,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
203
203
|
this.outboxTreesResolver = new OutboxTreesResolver(
|
|
204
204
|
this.outbox,
|
|
205
205
|
this,
|
|
206
|
+
this.dataStores.db,
|
|
206
207
|
() => Promise.resolve(this.getL1BlockNumber()),
|
|
207
208
|
l1Constants.epochDuration,
|
|
208
209
|
);
|
|
@@ -3,6 +3,7 @@ import type { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
|
3
3
|
import { chunkBy } from '@aztec/foundation/collection';
|
|
4
4
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
6
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
6
7
|
import type { L2Block } from '@aztec/stdlib/block';
|
|
7
8
|
import type { CheckpointData } from '@aztec/stdlib/checkpoint';
|
|
8
9
|
import { getEpochAtSlot } from '@aztec/stdlib/epoch-helpers';
|
|
@@ -56,6 +57,7 @@ export class OutboxTreesResolver {
|
|
|
56
57
|
constructor(
|
|
57
58
|
private readonly outbox: OutboxContract,
|
|
58
59
|
private readonly archiver: OutboxTreesArchiverView,
|
|
60
|
+
private readonly store: AztecAsyncKVStore,
|
|
59
61
|
private readonly getSyncedL1BlockNumber: () => Promise<bigint | undefined>,
|
|
60
62
|
private readonly epochDuration: number,
|
|
61
63
|
private readonly log: Logger = createLogger('archiver:outbox'),
|
|
@@ -73,6 +75,9 @@ export class OutboxTreesResolver {
|
|
|
73
75
|
message: Fr,
|
|
74
76
|
messageIndexInTx?: number,
|
|
75
77
|
): Promise<L2ToL1MembershipWitness | undefined> {
|
|
78
|
+
// Read the tx effect once up front only to learn which epoch's Outbox roots to fetch. The roots
|
|
79
|
+
// read hits L1, so it stays outside the store transaction below: holding the archiver's writer
|
|
80
|
+
// lock across a network round-trip would stall block sync.
|
|
76
81
|
const indexed = await this.archiver.getTxEffect(txHash);
|
|
77
82
|
if (!indexed) {
|
|
78
83
|
this.log.trace(`No tx effect for tx, no witness available`, { txHash });
|
|
@@ -87,23 +92,39 @@ export class OutboxTreesResolver {
|
|
|
87
92
|
return undefined;
|
|
88
93
|
}
|
|
89
94
|
|
|
90
|
-
const receipt = {
|
|
91
|
-
txHash,
|
|
92
|
-
epochNumber,
|
|
93
|
-
blockNumber: indexed.l2BlockNumber,
|
|
94
|
-
txIndexInBlock: indexed.txIndexInBlock,
|
|
95
|
-
};
|
|
96
|
-
|
|
97
95
|
const syncedBefore = await this.getSyncedL1BlockNumber();
|
|
98
96
|
try {
|
|
99
|
-
|
|
97
|
+
// Assemble the witness inside a single store transaction so every archiver read it depends on
|
|
98
|
+
// (the tx effect, the epoch's blocks, the target block and the checkpoint metadata) observes one
|
|
99
|
+
// consistent snapshot. `transactionAsync` serializes against writers, and the substore reads
|
|
100
|
+
// below bind to it automatically, so no store commit can land mid-assembly and splice together
|
|
101
|
+
// two different chain states — which would otherwise surface as a spurious "message does not
|
|
102
|
+
// exist" error even when the tx-effect index is healthy.
|
|
103
|
+
return await this.store.transactionAsync(async () => {
|
|
104
|
+
// Re-read the tx effect within the snapshot so the receipt's block number and tx index stay
|
|
105
|
+
// consistent with the block and checkpoint data read while building the witness. The epoch is
|
|
106
|
+
// reused from the pre-transaction read (it selected the roots above); if a reorg moved the tx
|
|
107
|
+
// to a different epoch in between, the block lookups simply miss and the helper returns
|
|
108
|
+
// undefined for the caller to retry.
|
|
109
|
+
const indexedInSnapshot = await this.archiver.getTxEffect(txHash);
|
|
110
|
+
if (!indexedInSnapshot) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
const receipt = {
|
|
114
|
+
txHash,
|
|
115
|
+
epochNumber,
|
|
116
|
+
blockNumber: indexedInSnapshot.l2BlockNumber,
|
|
117
|
+
txIndexInBlock: indexedInSnapshot.txIndexInBlock,
|
|
118
|
+
};
|
|
119
|
+
return await computeL2ToL1MembershipWitness(this.#node, roots, message, receipt, messageIndexInTx);
|
|
120
|
+
});
|
|
100
121
|
} catch (err) {
|
|
101
122
|
// The helper throws if the locally-assembled epoch root disagrees with the cached Outbox root.
|
|
102
|
-
// The cached roots are pinned to the node's synced L1 block, but the
|
|
103
|
-
//
|
|
104
|
-
// different heights and produce a transient mismatch. When the synced block moved
|
|
105
|
-
// assembly we treat the mismatch as transient and return undefined so the caller can
|
|
106
|
-
// mismatch at a stable synced block is a genuine node/L1 disagreement and must surface.
|
|
123
|
+
// The cached roots are pinned to the node's synced L1 block, but the block / checkpoint data is
|
|
124
|
+
// read from a store snapshot taken after that fetch, so if the archiver advanced in between the
|
|
125
|
+
// two can reflect different heights and produce a transient mismatch. When the synced block moved
|
|
126
|
+
// during assembly we treat the mismatch as transient and return undefined so the caller can
|
|
127
|
+
// retry; a mismatch at a stable synced block is a genuine node/L1 disagreement and must surface.
|
|
107
128
|
const syncedAfter = await this.getSyncedL1BlockNumber();
|
|
108
129
|
if (syncedBefore !== syncedAfter && err instanceof Error && err.message.includes('does not match Outbox')) {
|
|
109
130
|
this.log.debug(`Transient outbox root mismatch during sync, returning no witness`, {
|
package/src/store/block_store.ts
CHANGED
|
@@ -537,20 +537,58 @@ export class BlockStore {
|
|
|
537
537
|
}
|
|
538
538
|
|
|
539
539
|
/** Deletes a block and all associated data (tx effects, indices). */
|
|
540
|
-
private async deleteBlock(
|
|
540
|
+
private async deleteBlock(blockNumber: number, blockStorage: BlockStorage): Promise<void> {
|
|
541
541
|
// Delete the block from the main blocks map
|
|
542
|
-
await this.#blocks.delete(
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
542
|
+
await this.#blocks.delete(blockNumber);
|
|
543
|
+
|
|
544
|
+
const blockHash = bufferToHex(blockStorage.blockHash);
|
|
545
|
+
|
|
546
|
+
// Delete the tx effects of the block's txs, skipping entries that no longer point at this block: if
|
|
547
|
+
// another stored block also contains the tx, the entry points at that block, and deleting it here would
|
|
548
|
+
// orphan that block's index. Honest chains never store the same tx twice (duplicate nullifiers are
|
|
549
|
+
// rejected at build, re-execution, and world-state sync), so the store must not turn such a state into
|
|
550
|
+
// corruption of the surviving block if it ever appears.
|
|
551
|
+
const blockTxsBuffer = await this.#blockTxs.getAsync(blockHash);
|
|
552
|
+
if (blockTxsBuffer !== undefined) {
|
|
553
|
+
const reader = BufferReader.asReader(blockTxsBuffer);
|
|
554
|
+
const txHashes: string[] = [];
|
|
555
|
+
while (!reader.isEmpty()) {
|
|
556
|
+
txHashes.push(reader.readObject(TxHash).toString());
|
|
557
|
+
}
|
|
558
|
+
await Promise.all(txHashes.map(txHash => this.deleteTxEffect(txHash, blockStorage.blockHash)));
|
|
559
|
+
}
|
|
546
560
|
|
|
547
561
|
// Delete block txs mapping
|
|
548
|
-
const blockHash = (await block.hash()).toString();
|
|
549
562
|
await this.#blockTxs.delete(blockHash);
|
|
550
563
|
|
|
551
564
|
// Clean up indices
|
|
552
565
|
await this.#blockHashIndex.delete(blockHash);
|
|
553
|
-
await this.#blockArchiveIndex.delete(
|
|
566
|
+
await this.#blockArchiveIndex.delete(AppendOnlyTreeSnapshot.fromBuffer(blockStorage.archive).root.toString());
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
/** Deletes a tx effect only if it is still owned by (points at) the given block. */
|
|
570
|
+
private async deleteTxEffect(txHash: string, blockHash: Buffer): Promise<void> {
|
|
571
|
+
const stored = await this.#txEffects.getAsync(txHash);
|
|
572
|
+
if (stored === undefined) {
|
|
573
|
+
this.#log.warn(`Missing tx effect for tx ${txHash} while removing its block`, {
|
|
574
|
+
txHash,
|
|
575
|
+
blockHash: bufferToHex(blockHash),
|
|
576
|
+
});
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
// An IndexedTxEffect starts with the owning block hash (32 bytes) — see getTxLocation.
|
|
580
|
+
if (!Buffer.from(stored.buffer, stored.byteOffset, 32).equals(blockHash)) {
|
|
581
|
+
// Fires only when two stored blocks listed the same tx — a state upstream validation should make
|
|
582
|
+
// unreachable. Keep the entry (it belongs to the surviving block) but flag the duplication loudly.
|
|
583
|
+
this.#log.warn(`Tx effect for tx ${txHash} is owned by a block other than the one being removed`, {
|
|
584
|
+
txHash,
|
|
585
|
+
removedBlockHash: bufferToHex(blockHash),
|
|
586
|
+
owningBlockHash: bufferToHex(Buffer.from(stored.buffer, stored.byteOffset, 32)),
|
|
587
|
+
});
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
await this.#txEffects.delete(txHash);
|
|
554
592
|
}
|
|
555
593
|
|
|
556
594
|
/**
|
|
@@ -749,16 +787,24 @@ export class BlockStore {
|
|
|
749
787
|
|
|
750
788
|
// Iterate from blockNumber + 1 to latestBlockNumber
|
|
751
789
|
for (let bn = blockNumber + 1; bn <= latestBlockNumber; bn++) {
|
|
752
|
-
const
|
|
790
|
+
const blockStorage = await this.#blocks.getAsync(bn);
|
|
753
791
|
|
|
754
|
-
if (
|
|
792
|
+
if (blockStorage === undefined) {
|
|
755
793
|
this.#log.warn(`Cannot remove block ${bn} from the store since we don't have it`);
|
|
756
794
|
continue;
|
|
757
795
|
}
|
|
758
796
|
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
this
|
|
797
|
+
// Load the full block for the returned list when possible, but clean up from the raw row regardless:
|
|
798
|
+
// a block whose body can no longer be fully loaded must still release its row, tx effects, and indices,
|
|
799
|
+
// or later inserts at this number leave stale tx-effect entries pointing into the new chain.
|
|
800
|
+
const block = await this.getBlockFromBlockStorage(bn, blockStorage);
|
|
801
|
+
if (block !== undefined) {
|
|
802
|
+
removedBlocks.push(block);
|
|
803
|
+
} else {
|
|
804
|
+
this.#log.warn(`Removing block ${bn} whose body could not be fully loaded`);
|
|
805
|
+
}
|
|
806
|
+
await this.deleteBlock(bn, blockStorage);
|
|
807
|
+
this.#log.debug(`Removed block ${bn} ${bufferToHex(blockStorage.blockHash)}`);
|
|
762
808
|
}
|
|
763
809
|
|
|
764
810
|
return removedBlocks;
|