@aztec/archiver 0.78.1 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,8 +44,8 @@ export declare class Archiver extends EventEmitter implements ArchiveSource, Tra
44
44
  private rollup;
45
45
  private inbox;
46
46
  private store;
47
- l1BlockNumber: bigint | undefined;
48
- l1Timestamp: bigint | undefined;
47
+ private l1BlockNumber;
48
+ private l1Timestamp;
49
49
  readonly tracer: Tracer;
50
50
  /**
51
51
  * Creates a new instance of the Archiver.
@@ -1 +1 @@
1
- {"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAclE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ,KAAK,aAAa,EAElB,KAAK,MAAM,EACX,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAEhC,KAAK,cAAc,EAKpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,iBAAiB,EAMvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAkB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,KAAK,EAAa,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAEnH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAI/D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,aAAa,GACvC,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,CAAC;AAE3B;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,YAAa,YAAW,aAAa,EAAE,SAAS;IA2B1E,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,QAAQ,CAAC,SAAS,EAAE,iBAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAjCtB;;OAEG;IACH,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC,OAAO,CAAC,MAAM,CAA4D;IAC1E,OAAO,CAAC,KAAK,CAA2D;IAExE,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IAExC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;OASG;gBAEgB,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EAAE;QAAE,aAAa,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,UAAU,CAAC;QAAC,eAAe,EAAE,UAAU,CAAA;KAAE,EACzG,SAAS,EAAE,iBAAiB,EACpB,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EACxD,cAAc,EAAE,uBAAuB,EACvC,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,iBAAiB,EAC9B,GAAG,GAAE,MAAiC;IAoBzD;;;;;;OAMG;WACiB,aAAa,CAC/B,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,iBAAiB,EAChC,IAAI,EAAE;QAAE,SAAS,EAAE,eAAe,CAAC;QAAC,cAAc,EAAE,uBAAuB,CAAA;KAAE,EAC7E,gBAAgB,UAAO,GACtB,OAAO,CAAC,QAAQ,CAAC;IAqCpB;;;OAGG;IACU,KAAK,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAwB9C,QAAQ;IAQtB;;OAEG;YAEW,IAAI;IAkFlB,oGAAoG;YACtF,QAAQ;IAKtB,wFAAwF;YAC1E,gBAAgB;IAkC9B,OAAO,CAAC,SAAS;YAUH,oBAAoB;YAkCpB,cAAc;IA8J5B;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIvC,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC,gBAAgB,IAAI,MAAM;IAQ1B,cAAc,IAAI,MAAM;IAQxB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAkB1D,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BnE;;;;;;OAMG;IACU,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOzF;;;;OAIG;IACU,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAYtD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWjF,WAAW,CAAC,MAAM,EAAE,MAAM;IAI1B,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACU,iBAAiB,CAC5B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IActC;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIzE;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAIrD;;;;;;OAMG;IACH,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IAI/G;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAI9E;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9C,wEAAwE;IACjE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAItD,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAI3F;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAIrD;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrE,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAK9B,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IASzE,kCAAkC,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9F,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIjG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAuCnC"}
@@ -167,13 +167,10 @@ import { ArchiverInstrumentation } from './instrumentation.js';
167
167
  * in future but for the time being it should give us the guarantees that we need
168
168
  */ // ********** Events that are processed per L1 block **********
169
169
  await this.handleL1ToL2Messages(messagesSynchedTo, currentL1BlockNumber);
170
- // Store latest l1 block number and timestamp seen. Used for epoch and slots calculations.
171
- if (!this.l1BlockNumber || this.l1BlockNumber < currentL1BlockNumber) {
172
- this.l1Timestamp = (await this.publicClient.getBlock({
173
- blockNumber: currentL1BlockNumber
174
- })).timestamp;
175
- this.l1BlockNumber = currentL1BlockNumber;
176
- }
170
+ // Get L1 timestamp for the current block
171
+ const currentL1Timestamp = !this.l1Timestamp || !this.l1BlockNumber || this.l1BlockNumber !== currentL1BlockNumber ? (await this.publicClient.getBlock({
172
+ blockNumber: currentL1BlockNumber
173
+ })).timestamp : this.l1Timestamp;
177
174
  // ********** Events that are processed per L2 block **********
178
175
  if (currentL1BlockNumber > blocksSynchedTo) {
179
176
  // First we retrieve new L2 blocks
@@ -183,9 +180,14 @@ import { ArchiverInstrumentation } from './instrumentation.js';
183
180
  // blocks from more than 2 epochs ago, so we want to make sure we have the latest view of
184
181
  // the chain locally before we start unwinding stuff. This can be optimized by figuring out
185
182
  // up to which point we're pruning, and then requesting L2 blocks up to that point only.
186
- await this.handleEpochPrune(provenBlockNumber, currentL1BlockNumber);
183
+ await this.handleEpochPrune(provenBlockNumber, currentL1BlockNumber, currentL1Timestamp);
187
184
  this.instrumentation.updateL1BlockHeight(currentL1BlockNumber);
188
185
  }
186
+ // After syncing has completed, update the current l1 block number and timestamp,
187
+ // otherwise we risk announcing to the world that we've synced to a given point,
188
+ // but the corresponding blocks have not been processed (see #12631).
189
+ this.l1Timestamp = currentL1Timestamp;
190
+ this.l1BlockNumber = currentL1BlockNumber;
189
191
  if (initialRun) {
190
192
  this.log.info(`Initial archiver sync to L1 block ${currentL1BlockNumber} complete.`, {
191
193
  l1BlockNumber: currentL1BlockNumber,
@@ -194,19 +196,19 @@ import { ArchiverInstrumentation } from './instrumentation.js';
194
196
  });
195
197
  }
196
198
  }
197
- /** Queries the rollup contract on whether a prune can be executed on the immediatenext L1 block. */ async canPrune(currentL1BlockNumber) {
198
- const time = (this.l1Timestamp ?? 0n) + BigInt(this.l1constants.ethereumSlotDuration);
199
+ /** Queries the rollup contract on whether a prune can be executed on the immediatenext L1 block. */ async canPrune(currentL1BlockNumber, currentL1Timestamp) {
200
+ const time = (currentL1Timestamp ?? 0n) + BigInt(this.l1constants.ethereumSlotDuration);
199
201
  return await this.rollup.read.canPruneAtTime([
200
202
  time
201
203
  ], {
202
204
  blockNumber: currentL1BlockNumber
203
205
  });
204
206
  }
205
- /** Checks if there'd be a reorg for the next block submission and start pruning now. */ async handleEpochPrune(provenBlockNumber, currentL1BlockNumber) {
207
+ /** Checks if there'd be a reorg for the next block submission and start pruning now. */ async handleEpochPrune(provenBlockNumber, currentL1BlockNumber, currentL1Timestamp) {
206
208
  const localPendingBlockNumber = BigInt(await this.getBlockNumber());
207
- const canPrune = localPendingBlockNumber > provenBlockNumber && await this.canPrune(currentL1BlockNumber);
209
+ const canPrune = localPendingBlockNumber > provenBlockNumber && await this.canPrune(currentL1BlockNumber, currentL1Timestamp);
208
210
  if (canPrune) {
209
- const localPendingSlotNumber = await this.getL2SlotNumber();
211
+ const localPendingSlotNumber = getSlotAtTimestamp(currentL1Timestamp, this.l1constants);
210
212
  const localPendingEpochNumber = getEpochAtSlot(localPendingSlotNumber, this.l1constants);
211
213
  // Emit an event for listening services to react to the chain prune
212
214
  this.emit(L2BlockSourceEvents.L2PruneDetected, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "0.78.1",
3
+ "version": "0.79.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -64,24 +64,24 @@
64
64
  ]
65
65
  },
66
66
  "dependencies": {
67
- "@aztec/blob-lib": "0.78.1",
68
- "@aztec/blob-sink": "0.78.1",
69
- "@aztec/constants": "0.78.1",
70
- "@aztec/ethereum": "0.78.1",
71
- "@aztec/foundation": "0.78.1",
72
- "@aztec/kv-store": "0.78.1",
73
- "@aztec/l1-artifacts": "0.78.1",
74
- "@aztec/noir-contracts.js": "0.78.1",
75
- "@aztec/noir-protocol-circuits-types": "0.78.1",
76
- "@aztec/protocol-contracts": "0.78.1",
77
- "@aztec/stdlib": "0.78.1",
78
- "@aztec/telemetry-client": "0.78.1",
67
+ "@aztec/blob-lib": "0.79.0",
68
+ "@aztec/blob-sink": "0.79.0",
69
+ "@aztec/constants": "0.79.0",
70
+ "@aztec/ethereum": "0.79.0",
71
+ "@aztec/foundation": "0.79.0",
72
+ "@aztec/kv-store": "0.79.0",
73
+ "@aztec/l1-artifacts": "0.79.0",
74
+ "@aztec/noir-contracts.js": "0.79.0",
75
+ "@aztec/noir-protocol-circuits-types": "0.79.0",
76
+ "@aztec/protocol-contracts": "0.79.0",
77
+ "@aztec/stdlib": "0.79.0",
78
+ "@aztec/telemetry-client": "0.79.0",
79
79
  "debug": "^4.3.4",
80
80
  "lodash.groupby": "^4.6.0",
81
81
  "lodash.omit": "^4.5.0",
82
82
  "tsc-watch": "^6.0.0",
83
83
  "tslib": "^2.5.0",
84
- "viem": "2.22.8",
84
+ "viem": "2.23.7",
85
85
  "ws": "^8.13.0"
86
86
  },
87
87
  "devDependencies": {
@@ -90,8 +90,8 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
90
90
 
91
91
  private store: ArchiverStoreHelper;
92
92
 
93
- public l1BlockNumber: bigint | undefined;
94
- public l1Timestamp: bigint | undefined;
93
+ private l1BlockNumber: bigint | undefined;
94
+ private l1Timestamp: bigint | undefined;
95
95
 
96
96
  public readonly tracer: Tracer;
97
97
 
@@ -270,11 +270,11 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
270
270
  // ********** Events that are processed per L1 block **********
271
271
  await this.handleL1ToL2Messages(messagesSynchedTo, currentL1BlockNumber);
272
272
 
273
- // Store latest l1 block number and timestamp seen. Used for epoch and slots calculations.
274
- if (!this.l1BlockNumber || this.l1BlockNumber < currentL1BlockNumber) {
275
- this.l1Timestamp = (await this.publicClient.getBlock({ blockNumber: currentL1BlockNumber })).timestamp;
276
- this.l1BlockNumber = currentL1BlockNumber;
277
- }
273
+ // Get L1 timestamp for the current block
274
+ const currentL1Timestamp =
275
+ !this.l1Timestamp || !this.l1BlockNumber || this.l1BlockNumber !== currentL1BlockNumber
276
+ ? (await this.publicClient.getBlock({ blockNumber: currentL1BlockNumber })).timestamp
277
+ : this.l1Timestamp;
278
278
 
279
279
  // ********** Events that are processed per L2 block **********
280
280
  if (currentL1BlockNumber > blocksSynchedTo) {
@@ -285,11 +285,16 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
285
285
  // blocks from more than 2 epochs ago, so we want to make sure we have the latest view of
286
286
  // the chain locally before we start unwinding stuff. This can be optimized by figuring out
287
287
  // up to which point we're pruning, and then requesting L2 blocks up to that point only.
288
- await this.handleEpochPrune(provenBlockNumber, currentL1BlockNumber);
289
-
288
+ await this.handleEpochPrune(provenBlockNumber, currentL1BlockNumber, currentL1Timestamp);
290
289
  this.instrumentation.updateL1BlockHeight(currentL1BlockNumber);
291
290
  }
292
291
 
292
+ // After syncing has completed, update the current l1 block number and timestamp,
293
+ // otherwise we risk announcing to the world that we've synced to a given point,
294
+ // but the corresponding blocks have not been processed (see #12631).
295
+ this.l1Timestamp = currentL1Timestamp;
296
+ this.l1BlockNumber = currentL1BlockNumber;
297
+
293
298
  if (initialRun) {
294
299
  this.log.info(`Initial archiver sync to L1 block ${currentL1BlockNumber} complete.`, {
295
300
  l1BlockNumber: currentL1BlockNumber,
@@ -300,18 +305,19 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
300
305
  }
301
306
 
302
307
  /** Queries the rollup contract on whether a prune can be executed on the immediatenext L1 block. */
303
- private async canPrune(currentL1BlockNumber: bigint) {
304
- const time = (this.l1Timestamp ?? 0n) + BigInt(this.l1constants.ethereumSlotDuration);
308
+ private async canPrune(currentL1BlockNumber: bigint, currentL1Timestamp: bigint) {
309
+ const time = (currentL1Timestamp ?? 0n) + BigInt(this.l1constants.ethereumSlotDuration);
305
310
  return await this.rollup.read.canPruneAtTime([time], { blockNumber: currentL1BlockNumber });
306
311
  }
307
312
 
308
313
  /** Checks if there'd be a reorg for the next block submission and start pruning now. */
309
- private async handleEpochPrune(provenBlockNumber: bigint, currentL1BlockNumber: bigint) {
314
+ private async handleEpochPrune(provenBlockNumber: bigint, currentL1BlockNumber: bigint, currentL1Timestamp: bigint) {
310
315
  const localPendingBlockNumber = BigInt(await this.getBlockNumber());
311
- const canPrune = localPendingBlockNumber > provenBlockNumber && (await this.canPrune(currentL1BlockNumber));
316
+ const canPrune =
317
+ localPendingBlockNumber > provenBlockNumber && (await this.canPrune(currentL1BlockNumber, currentL1Timestamp));
312
318
 
313
319
  if (canPrune) {
314
- const localPendingSlotNumber = await this.getL2SlotNumber();
320
+ const localPendingSlotNumber = getSlotAtTimestamp(currentL1Timestamp, this.l1constants);
315
321
  const localPendingEpochNumber = getEpochAtSlot(localPendingSlotNumber, this.l1constants);
316
322
 
317
323
  // Emit an event for listening services to react to the chain prune