@aztec/archiver 5.0.0-rc.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dest/archiver.d.ts +1 -1
  2. package/dest/archiver.d.ts.map +1 -1
  3. package/dest/archiver.js +28 -5
  4. package/dest/config.d.ts +1 -1
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +5 -0
  7. package/dest/factory.d.ts +8 -1
  8. package/dest/factory.d.ts.map +1 -1
  9. package/dest/factory.js +31 -0
  10. package/dest/l1/calldata_retriever.d.ts +8 -1
  11. package/dest/l1/calldata_retriever.d.ts.map +1 -1
  12. package/dest/l1/calldata_retriever.js +7 -6
  13. package/dest/l1/data_retrieval.d.ts +7 -2
  14. package/dest/l1/data_retrieval.d.ts.map +1 -1
  15. package/dest/modules/data_source_base.d.ts +1 -2
  16. package/dest/modules/data_source_base.d.ts.map +1 -1
  17. package/dest/modules/data_source_base.js +8 -25
  18. package/dest/modules/data_store_updater.d.ts +1 -1
  19. package/dest/modules/data_store_updater.d.ts.map +1 -1
  20. package/dest/modules/data_store_updater.js +4 -3
  21. package/dest/modules/instrumentation.d.ts +9 -1
  22. package/dest/modules/instrumentation.d.ts.map +1 -1
  23. package/dest/modules/instrumentation.js +23 -2
  24. package/dest/modules/l1_synchronizer.d.ts +3 -3
  25. package/dest/modules/l1_synchronizer.d.ts.map +1 -1
  26. package/dest/modules/l1_synchronizer.js +16 -2
  27. package/dest/modules/validation.d.ts +12 -8
  28. package/dest/modules/validation.d.ts.map +1 -1
  29. package/dest/modules/validation.js +4 -11
  30. package/dest/store/block_store.d.ts +13 -3
  31. package/dest/store/block_store.d.ts.map +1 -1
  32. package/dest/store/block_store.js +32 -4
  33. package/dest/store/contract_class_store.d.ts +1 -1
  34. package/dest/store/contract_class_store.d.ts.map +1 -1
  35. package/dest/store/contract_class_store.js +7 -1
  36. package/dest/store/contract_instance_store.d.ts +1 -1
  37. package/dest/store/contract_instance_store.d.ts.map +1 -1
  38. package/dest/store/contract_instance_store.js +7 -1
  39. package/dest/test/fake_l1_state.js +3 -3
  40. package/dest/test/mock_l2_block_source.d.ts +1 -1
  41. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  42. package/dest/test/mock_l2_block_source.js +5 -0
  43. package/dest/test/noop_l1_archiver.d.ts +1 -1
  44. package/dest/test/noop_l1_archiver.d.ts.map +1 -1
  45. package/dest/test/noop_l1_archiver.js +1 -1
  46. package/package.json +14 -13
  47. package/src/archiver.ts +32 -6
  48. package/src/config.ts +8 -0
  49. package/src/factory.ts +34 -0
  50. package/src/l1/calldata_retriever.ts +13 -6
  51. package/src/l1/data_retrieval.ts +6 -0
  52. package/src/modules/data_source_base.ts +8 -26
  53. package/src/modules/data_store_updater.ts +4 -3
  54. package/src/modules/instrumentation.ts +15 -2
  55. package/src/modules/l1_synchronizer.ts +29 -4
  56. package/src/modules/validation.ts +15 -18
  57. package/src/store/block_store.ts +31 -5
  58. package/src/store/contract_class_store.ts +7 -1
  59. package/src/store/contract_instance_store.ts +7 -1
  60. package/src/test/fake_l1_state.ts +3 -3
  61. package/src/test/mock_l2_block_source.ts +7 -0
  62. package/src/test/noop_l1_archiver.ts +3 -3
@@ -436,7 +436,7 @@ import { updateRollingHash } from '../structs/inbox_message.js';
436
436
  // valid-looking signature for the attestationsAndSigners struct.
437
437
  const proposerSigner = signers[0] ?? Secp256k1Signer.random();
438
438
  const attestationsAndSignersSignature = proposerSigner.sign(getHashedSignaturePayloadTypedData(attestationsAndSigners));
439
- const packedAttestations = attestationsAndSigners.getPackedAttestations();
439
+ const verbatimAttestations = attestationsAndSigners.getPackedAttestations();
440
440
  const rollupInput = encodeFunctionData({
441
441
  abi: RollupAbi,
442
442
  functionName: 'propose',
@@ -448,7 +448,7 @@ import { updateRollingHash } from '../structs/inbox_message.js';
448
448
  feeAssetPriceModifier: 0n
449
449
  }
450
450
  },
451
- packedAttestations,
451
+ verbatimAttestations,
452
452
  attestationsAndSigners.getSigners().map((signer)=>signer.toString()),
453
453
  attestationsAndSignersSignature.toViemSignature(),
454
454
  blobInput
@@ -471,7 +471,7 @@ import { updateRollingHash } from '../structs/inbox_message.js';
471
471
  const attestationsHash = Buffer32.fromString(keccak256(encodeAbiParameters([
472
472
  this.getCommitteeAttestationsStructDef()
473
473
  ], [
474
- packedAttestations
474
+ verbatimAttestations
475
475
  ])));
476
476
  // Compute payloadDigest (same logic as CalldataRetriever)
477
477
  const payloadDigest = getHashedSignaturePayloadTypedData(consensusPayload);
@@ -136,4 +136,4 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
136
136
  /** Finds the checkpoint number for a block, or undefined if the block is not in any checkpoint. */
137
137
  private findCheckpointNumberForBlock;
138
138
  }
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFFWCxVQUFVLEVBQ1gsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssU0FBUyxFQUNkLEtBQUssU0FBUyxFQUNkLEtBQUssVUFBVSxFQUVmLEtBQUssV0FBVyxFQUVoQixLQUFLLGVBQWUsRUFDcEIsS0FBSyxnQkFBZ0IsRUFHckIsT0FBTyxFQUNQLEtBQUssYUFBYSxFQUNsQixLQUFLLE1BQU0sRUFDWCxLQUFLLHVCQUF1QixFQUM1QixLQUFLLHdCQUF3QixFQUM5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsS0FBSyxjQUFjLEVBRW5CLEtBQUssc0JBQXNCLEVBQzNCLG1CQUFtQixFQUNwQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkgsT0FBTyxFQUEwQixLQUFLLGlCQUFpQixFQUF3QixNQUFNLDZCQUE2QixDQUFDO0FBSW5ILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxF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
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFFWCxVQUFVLEVBQ1gsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssU0FBUyxFQUNkLEtBQUssU0FBUyxFQUNkLEtBQUssVUFBVSxFQUVmLEtBQUssV0FBVyxFQUVoQixLQUFLLGVBQWUsRUFDcEIsS0FBSyxnQkFBZ0IsRUFHckIsT0FBTyxFQUNQLEtBQUssYUFBYSxFQUNsQixLQUFLLE1BQU0sRUFDWCxLQUFLLHVCQUF1QixFQUM1QixLQUFLLHdCQUF3QixFQUM5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsS0FBSyxjQUFjLEVBRW5CLEtBQUssc0JBQXNCLEVBQzNCLG1CQUFtQixFQUNwQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkgsT0FBTyxFQUEwQixLQUFLLGlCQUFpQixFQUF3QixNQUFNLDZCQUE2QixDQUFDO0FBSW5ILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxF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
@@ -1 +1 @@
1
- {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
@@ -228,6 +228,11 @@ import { BlockHeader } from '@aztec/stdlib/tx';
228
228
  if ('from' in query) {
229
229
  return this.checkpointList.slice(query.from - 1, query.from - 1 + query.limit);
230
230
  }
231
+ if ('fromSlot' in query) {
232
+ const matching = this.checkpointList.filter((c)=>query.reverse ? c.header.slotNumber <= query.fromSlot : c.header.slotNumber >= query.fromSlot);
233
+ const nearestFirst = query.reverse ? matching.reverse() : matching;
234
+ return nearestFirst.slice(0, query.limit);
235
+ }
231
236
  return this.getCheckpointsInEpoch(query.epoch);
232
237
  }
233
238
  getBlocksForSlot(slotNumber) {
@@ -31,4 +31,4 @@ export declare function createNoopL1Archiver(dataStores: ArchiverDataStores, l1C
31
31
  genesisArchiveRoot: Fr;
32
32
  }, telemetry: TelemetryClient | undefined, initialHeader: BlockHeader, dateProvider?: DateProvider, configOverrides?: NoopL1ArchiverConfigOverrides): Promise<NoopL1Archiver>;
33
33
  export {};
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcF9sMV9hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9vcF9sMV9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBbUIsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQW1DLE1BQU0seUJBQXlCLENBQUM7QUFLaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELEtBQUssNkJBQTZCLEdBQUcsT0FBTyxDQUFDO0lBQzNDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQztDQUN6QyxDQUFDLENBQUM7QUF5Qkg7Ozs7R0FJRztBQUNILHFCQUFhLGNBQWUsU0FBUSxRQUFRO0lBQzFDLFlBQ0UsVUFBVSxFQUFFLGtCQUFrQixFQUM5QixXQUFXLEVBQUUsaUJBQWlCLEdBQUc7UUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUE7S0FBRSxFQUMzRCxlQUFlLEVBQUUsdUJBQXVCLEVBQ3hDLGFBQWEsRUFBRSxXQUFXLEVBQzFCLGdCQUFnQixFQUFFLFNBQVMsRUFDM0IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsWUFBWSxHQUFFLFlBQWlDLEVBQy9DLGVBQWUsR0FBRSw2QkFBa0MsRUFvRHBEO0lBRUQsbURBQW1EO0lBQ25DLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0lBRUQsNkVBQTZFO0lBQzdELHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRXZFO0NBQ0Y7QUFFRCxtRUFBbUU7QUFDbkUsd0JBQXNCLG9CQUFvQixDQUN4QyxVQUFVLEVBQUUsa0JBQWtCLEVBQzlCLFdBQVcsRUFBRSxpQkFBaUIsR0FBRztJQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtDQUFFLEVBQzNELFNBQVMsNkJBQXdDLEVBQ2pELGFBQWEsRUFBRSxXQUFXLEVBQzFCLFlBQVksQ0FBQyxFQUFFLFlBQVksRUFDM0IsZUFBZSxDQUFDLEVBQUUsNkJBQTZCLEdBQzlDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FrQnpCIn0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcF9sMV9hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9vcF9sMV9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBbUIsU0FBUyxFQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQW1DLE1BQU0seUJBQXlCLENBQUM7QUFLaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELEtBQUssNkJBQTZCLEdBQUcsT0FBTyxDQUFDO0lBQzNDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQztDQUN6QyxDQUFDLENBQUM7QUF5Qkg7Ozs7R0FJRztBQUNILHFCQUFhLGNBQWUsU0FBUSxRQUFRO0lBQzFDLFlBQ0UsVUFBVSxFQUFFLGtCQUFrQixFQUM5QixXQUFXLEVBQUUsaUJBQWlCLEdBQUc7UUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUE7S0FBRSxFQUMzRCxlQUFlLEVBQUUsdUJBQXVCLEVBQ3hDLGFBQWEsRUFBRSxXQUFXLEVBQzFCLGdCQUFnQixFQUFFLFNBQVMsRUFDM0IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsWUFBWSxHQUFFLFlBQWlDLEVBQy9DLGVBQWUsR0FBRSw2QkFBa0MsRUFvRHBEO0lBRUQsbURBQW1EO0lBQ25DLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0lBRUQsNkVBQTZFO0lBQzdELHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRXZFO0NBQ0Y7QUFFRCxtRUFBbUU7QUFDbkUsd0JBQXNCLG9CQUFvQixDQUN4QyxVQUFVLEVBQUUsa0JBQWtCLEVBQzlCLFdBQVcsRUFBRSxpQkFBaUIsR0FBRztJQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtDQUFFLEVBQzNELFNBQVMsNkJBQXdDLEVBQ2pELGFBQWEsRUFBRSxXQUFXLEVBQzFCLFlBQVksQ0FBQyxFQUFFLFlBQVksRUFDM0IsZUFBZSxDQUFDLEVBQUUsNkJBQTZCLEdBQzlDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FrQnpCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"noop_l1_archiver.d.ts","sourceRoot":"","sources":["../../src/test/noop_l1_archiver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAmB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,yBAAyB,CAAC;AAKhG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,KAAK,6BAA6B,GAAG,OAAO,CAAC;IAC3C,8BAA8B,EAAE,OAAO,CAAC;CACzC,CAAC,CAAC;AAyBH;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YACE,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,EAC3D,eAAe,EAAE,uBAAuB,EACxC,aAAa,EAAE,WAAW,EAC1B,gBAAgB,EAAE,SAAS,EAC3B,WAAW,EAAE,WAAW,EACxB,YAAY,GAAE,YAAiC,EAC/C,eAAe,GAAE,6BAAkC,EAoDpD;IAED,mDAAmD;IACnC,KAAK,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;IAED,6EAA6E;IAC7D,qBAAqB,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEvE;CACF;AAED,mEAAmE;AACnE,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;IAAE,kBAAkB,EAAE,EAAE,CAAA;CAAE,EAC3D,SAAS,6BAAwC,EACjD,aAAa,EAAE,WAAW,EAC1B,YAAY,CAAC,EAAE,YAAY,EAC3B,eAAe,CAAC,EAAE,6BAA6B,GAC9C,OAAO,CAAC,cAAc,CAAC,CAkBzB"}
1
+ {"version":3,"file":"noop_l1_archiver.d.ts","sourceRoot":"","sources":["../../src/test/noop_l1_archiver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAmB,SAAS,EAAW,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,yBAAyB,CAAC;AAKhG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,KAAK,6BAA6B,GAAG,OAAO,CAAC;IAC3C,8BAA8B,EAAE,OAAO,CAAC;CACzC,CAAC,CAAC;AAyBH;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YACE,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,EAC3D,eAAe,EAAE,uBAAuB,EACxC,aAAa,EAAE,WAAW,EAC1B,gBAAgB,EAAE,SAAS,EAC3B,WAAW,EAAE,WAAW,EACxB,YAAY,GAAE,YAAiC,EAC/C,eAAe,GAAE,6BAAkC,EAoDpD;IAED,mDAAmD;IACnC,KAAK,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;IAED,6EAA6E;IAC7D,qBAAqB,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEvE;CACF;AAED,mEAAmE;AACnE,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;IAAE,kBAAkB,EAAE,EAAE,CAAA;CAAE,EAC3D,SAAS,6BAAwC,EACjD,aAAa,EAAE,WAAW,EAC1B,YAAY,CAAC,EAAE,YAAY,EAC3B,eAAe,CAAC,EAAE,6BAA6B,GAC9C,OAAO,CAAC,cAAc,CAAC,CAkBzB"}
@@ -24,7 +24,7 @@ import { L2TipsCache } from '../store/l2_tips_cache.js';
24
24
  return Promise.resolve();
25
25
  }
26
26
  syncFromL1(_initialSyncComplete) {
27
- return Promise.resolve();
27
+ return Promise.resolve([]);
28
28
  }
29
29
  }
30
30
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "5.0.0-rc.2",
3
+ "version": "5.0.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -65,18 +65,19 @@
65
65
  ]
66
66
  },
67
67
  "dependencies": {
68
- "@aztec/blob-client": "5.0.0-rc.2",
69
- "@aztec/blob-lib": "5.0.0-rc.2",
70
- "@aztec/constants": "5.0.0-rc.2",
71
- "@aztec/epoch-cache": "5.0.0-rc.2",
72
- "@aztec/ethereum": "5.0.0-rc.2",
73
- "@aztec/foundation": "5.0.0-rc.2",
74
- "@aztec/kv-store": "5.0.0-rc.2",
75
- "@aztec/l1-artifacts": "5.0.0-rc.2",
76
- "@aztec/noir-protocol-circuits-types": "5.0.0-rc.2",
77
- "@aztec/protocol-contracts": "5.0.0-rc.2",
78
- "@aztec/stdlib": "5.0.0-rc.2",
79
- "@aztec/telemetry-client": "5.0.0-rc.2",
68
+ "@aztec/blob-client": "5.0.0",
69
+ "@aztec/blob-lib": "5.0.0",
70
+ "@aztec/constants": "5.0.0",
71
+ "@aztec/epoch-cache": "5.0.0",
72
+ "@aztec/ethereum": "5.0.0",
73
+ "@aztec/foundation": "5.0.0",
74
+ "@aztec/kv-store": "5.0.0",
75
+ "@aztec/l1-artifacts": "5.0.0",
76
+ "@aztec/noir-protocol-circuits-types": "5.0.0",
77
+ "@aztec/protocol-contracts": "5.0.0",
78
+ "@aztec/standard-contracts": "5.0.0",
79
+ "@aztec/stdlib": "5.0.0",
80
+ "@aztec/telemetry-client": "5.0.0",
80
81
  "lodash.groupby": "^4.6.0",
81
82
  "lodash.omit": "^4.5.0",
82
83
  "tslib": "^2.5.0",
package/src/archiver.ts CHANGED
@@ -20,6 +20,7 @@ import {
20
20
  L2BlockSourceEvents,
21
21
  type L2Tips,
22
22
  type ValidateCheckpointResult,
23
+ l2TipsEqual,
23
24
  } from '@aztec/stdlib/block';
24
25
  import { type ProposedCheckpointInput, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
25
26
  import {
@@ -339,9 +340,10 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
339
340
  * Called at the beginning of each sync iteration.
340
341
  * Items are processed in the order they were queued.
341
342
  */
342
- private async processInboundQueue(): Promise<void> {
343
+ private async processInboundQueue(): Promise<L2Block[]> {
344
+ const blocksAdded: L2Block[] = [];
343
345
  if (this.inboundQueue.length === 0) {
344
- return;
346
+ return blocksAdded;
345
347
  }
346
348
 
347
349
  // Take all items from the queue
@@ -378,6 +380,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
378
380
  if (type === 'block') {
379
381
  const [durationMs] = await elapsed(() => this.updater.addProposedBlock(item.block));
380
382
  this.instrumentation.processNewProposedBlock(durationMs, item.block);
383
+ blocksAdded.push(item.block);
381
384
  } else {
382
385
  await this.updater.addProposedCheckpoint(item.checkpoint);
383
386
  }
@@ -386,6 +389,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
386
389
  } catch (err: any) {
387
390
  if (err instanceof BlockAlreadyCheckpointedError) {
388
391
  this.log.debug(`Proposed block ${itemNumber} matches already checkpointed block, ignoring late proposal`);
392
+ // A late proposal that matches an already-checkpointed block adds nothing new, so it is not appended.
389
393
  resolve();
390
394
  continue;
391
395
  }
@@ -396,6 +400,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
396
400
  reject(err);
397
401
  }
398
402
  }
403
+ return blocksAdded;
399
404
  }
400
405
 
401
406
  public waitForInitialSync() {
@@ -407,12 +412,31 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
407
412
  */
408
413
  @trackSpan('Archiver.sync')
409
414
  private async sync() {
415
+ // Capture the tips before any mutation so the aggregate event can report what moved this pass.
416
+ const fromTips = await this.getL2Tips();
417
+
418
+ // Accumulate the blocks added across the pass's sub-steps (queued proposals + L1 checkpoint payloads).
419
+ const blocksAdded: L2Block[] = [];
410
420
  // Process any queued blocks first, before doing L1 sync
411
- await this.processInboundQueue();
421
+ blocksAdded.push(...(await this.processInboundQueue()));
412
422
  // Now perform L1 sync
413
- await this.syncFromL1();
423
+ blocksAdded.push(...(await this.syncFromL1()));
414
424
  // Prune proposed blocks with no corresponding proposed checkpoint after the appropriate materialization deadline.
415
425
  await this.pruneOrphanProposedBlocks();
426
+
427
+ // Emit a single aggregate update event after all pass work has committed and the tips cache has refreshed,
428
+ // so `toTips` and the source state observed by listeners are consistent with the event payload. The pass
429
+ // mutated state if the tips moved (added blocks, a prune, or a thin tier movement) or blocks were added; a
430
+ // fully-synced no-op pass emits nothing.
431
+ const toTips = await this.getL2Tips();
432
+ if (!l2TipsEqual(fromTips, toTips) || blocksAdded.length > 0) {
433
+ this.events.emit(L2BlockSourceEvents.L2BlockSourceUpdated, {
434
+ type: L2BlockSourceEvents.L2BlockSourceUpdated,
435
+ fromTips,
436
+ toTips,
437
+ blocksAdded,
438
+ });
439
+ }
416
440
  }
417
441
 
418
442
  /**
@@ -499,6 +523,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
499
523
 
500
524
  const prunedBlocks = await this.updater.removeBlocksWithoutProposedCheckpointAfter(pruneAfterBlockNumber);
501
525
  if (prunedBlocks.length > 0) {
526
+ this.instrumentation.recordPrune('orphan');
502
527
  this.events.emit(L2BlockSourceEvents.L2PruneUncheckpointed, {
503
528
  type: L2BlockSourceEvents.L2PruneUncheckpointed,
504
529
  slotNumber: blockSlot,
@@ -514,9 +539,9 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
514
539
  });
515
540
  }
516
541
 
517
- private async syncFromL1() {
542
+ private async syncFromL1(): Promise<L2Block[]> {
518
543
  // Delegate to the L1 synchronizer
519
- await this.synchronizer.syncFromL1(this.initialSyncComplete);
544
+ const blocksAdded = await this.synchronizer.syncFromL1(this.initialSyncComplete);
520
545
 
521
546
  // Check if we've completed initial sync
522
547
  const currentL1BlockNumber = this.synchronizer.getL1BlockNumber();
@@ -533,6 +558,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
533
558
  this.initialSyncPromise.resolve();
534
559
  }
535
560
  }
561
+ return blocksAdded;
536
562
  }
537
563
 
538
564
  /** Resumes the archiver after a stop. */
package/src/config.ts CHANGED
@@ -90,6 +90,14 @@ export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
90
90
  description: 'Skip pruning orphan proposed blocks that have no matching proposed checkpoint.',
91
91
  ...booleanConfigHelper(false),
92
92
  },
93
+ testPreloadStandardContracts: {
94
+ env: 'TEST_PRELOAD_STANDARD_CONTRACTS',
95
+ description:
96
+ 'Preload the standard contracts (AuthRegistry, PublicChecks, HandshakeRegistry) into the contract store at ' +
97
+ 'block 0. For test environments only, and only safe when genesis seeds the matching registration/deployment ' +
98
+ 'nullifiers; otherwise a later on-chain publish would collide with the block-0 preload.',
99
+ ...booleanConfigHelper(false),
100
+ },
93
101
  ...chainConfigMappings,
94
102
  ...l1ReaderConfigMappings,
95
103
  viemPollingIntervalMS: {
package/src/factory.ts CHANGED
@@ -12,6 +12,7 @@ import { DateProvider } from '@aztec/foundation/timer';
12
12
  import { createStore } from '@aztec/kv-store/lmdb-v2';
13
13
  import { protocolContractNames } from '@aztec/protocol-contracts';
14
14
  import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
15
+ import { getPublishableStandardContracts } from '@aztec/standard-contracts';
15
16
  import { FunctionType, decodeFunctionSignature } from '@aztec/stdlib/abi';
16
17
  import type { ArchiverEmitter, BlockHash } from '@aztec/stdlib/block';
17
18
  import { DEFAULT_BLOCK_DURATION_MS } from '@aztec/stdlib/config';
@@ -68,6 +69,9 @@ export async function createArchiver(
68
69
  ): Promise<Archiver> {
69
70
  const archiverStore = await createArchiverStore(config, initialBlockHash);
70
71
  await registerProtocolContracts(archiverStore);
72
+ if (config.testPreloadStandardContracts) {
73
+ await registerStandardContracts(archiverStore);
74
+ }
71
75
 
72
76
  // Create Ethereum clients
73
77
  const chain = createEthereumChain(config.l1RpcUrls, config.l1ChainId);
@@ -227,3 +231,33 @@ export async function registerProtocolContracts(stores: ArchiverDataStores) {
227
231
  await stores.contractInstances.addContractInstances([contract.instance], BlockNumber(blockNumber));
228
232
  }
229
233
  }
234
+
235
+ /**
236
+ * Preloads the standard contracts (AuthRegistry, PublicChecks, HandshakeRegistry) into the archiver store at block 0,
237
+ * mirroring {@link registerProtocolContracts}. Only invoked for test environments (via `testPreloadStandardContracts`),
238
+ * which also seed the matching registration/deployment nullifiers into the genesis nullifier tree so the store and tree
239
+ * stay consistent. Idempotent — skips contracts that already exist (e.g. on node restart).
240
+ */
241
+ export async function registerStandardContracts(stores: ArchiverDataStores) {
242
+ const blockNumber = 0;
243
+ for (const contract of await getPublishableStandardContracts()) {
244
+ // Skip if already registered (happens on node restart with a persisted store).
245
+ if (await stores.contractClasses.getContractClass(contract.contractClass.id)) {
246
+ continue;
247
+ }
248
+
249
+ const publicBytecodeCommitment = await computePublicBytecodeCommitment(contract.contractClass.packedBytecode);
250
+ const contractClassPublic: ContractClassPublicWithCommitment = {
251
+ ...contract.contractClass,
252
+ publicBytecodeCommitment,
253
+ };
254
+
255
+ const publicFunctionSignatures = contract.artifact.functions
256
+ .filter(fn => fn.functionType === FunctionType.PUBLIC)
257
+ .map(fn => decodeFunctionSignature(fn.name, fn.parameters));
258
+
259
+ await stores.functionNames.register(publicFunctionSignatures);
260
+ await stores.contractClasses.addContractClasses([contractClassPublic], BlockNumber(blockNumber));
261
+ await stores.contractInstances.addContractInstances([contract.instance], BlockNumber(blockNumber));
262
+ }
263
+ }
@@ -34,6 +34,12 @@ type CheckpointData = {
34
34
  archiveRoot: Fr;
35
35
  header: CheckpointHeader;
36
36
  attestations: CommitteeAttestation[];
37
+ /**
38
+ * The exact packed `CommitteeAttestations` tuple as it appears in the propose calldata, preserved
39
+ * verbatim (never re-derived from {@link attestations}) so invalidation evidence stays byte-faithful to
40
+ * the on-chain `attestationsHash`.
41
+ */
42
+ verbatimAttestations: ViemCommitteeAttestations;
37
43
  blockHash: string;
38
44
  feeAssetPriceModifier: bigint;
39
45
  };
@@ -406,14 +412,14 @@ export class CalldataRetriever {
406
412
  return undefined;
407
413
  }
408
414
 
409
- const [decodedArgs, packedAttestations] = args! as readonly [
415
+ const [decodedArgs, verbatimAttestations] = args! as readonly [
410
416
  { archive: Hex; oracleInput: { feeAssetPriceModifier: bigint }; header: ViemHeader },
411
417
  ViemCommitteeAttestations,
412
418
  ...unknown[],
413
419
  ];
414
420
 
415
421
  // Verify attestationsHash
416
- const computedAttestationsHash = this.computeAttestationsHash(packedAttestations);
422
+ const computedAttestationsHash = this.computeAttestationsHash(verbatimAttestations);
417
423
  if (
418
424
  !Buffer.from(hexToBytes(computedAttestationsHash)).equals(
419
425
  Buffer.from(hexToBytes(expectedHashes.attestationsHash)),
@@ -441,7 +447,7 @@ export class CalldataRetriever {
441
447
  return undefined;
442
448
  }
443
449
 
444
- const attestations = CommitteeAttestation.fromPacked(packedAttestations, this.targetCommitteeSize);
450
+ const attestations = CommitteeAttestation.fromPacked(verbatimAttestations, this.targetCommitteeSize);
445
451
 
446
452
  this.logger.trace(`Validated and decoded propose calldata for checkpoint ${checkpointNumber}`, {
447
453
  checkpointNumber,
@@ -449,7 +455,7 @@ export class CalldataRetriever {
449
455
  header: decodedArgs.header,
450
456
  l1BlockHash: blockHash,
451
457
  attestations,
452
- packedAttestations,
458
+ verbatimAttestations,
453
459
  targetCommitteeSize: this.targetCommitteeSize,
454
460
  });
455
461
 
@@ -458,6 +464,7 @@ export class CalldataRetriever {
458
464
  archiveRoot,
459
465
  header,
460
466
  attestations,
467
+ verbatimAttestations,
461
468
  blockHash,
462
469
  feeAssetPriceModifier,
463
470
  };
@@ -467,8 +474,8 @@ export class CalldataRetriever {
467
474
  }
468
475
 
469
476
  /** Computes the keccak256 hash of ABI-encoded CommitteeAttestations. */
470
- private computeAttestationsHash(packedAttestations: ViemCommitteeAttestations): Hex {
471
- return keccak256(encodeAbiParameters([this.getCommitteeAttestationsStructDef()], [packedAttestations]));
477
+ private computeAttestationsHash(verbatimAttestations: ViemCommitteeAttestations): Hex {
478
+ return keccak256(encodeAbiParameters([this.getCommitteeAttestationsStructDef()], [verbatimAttestations]));
472
479
  }
473
480
 
474
481
  /** Computes the keccak256 payload digest from the checkpoint header, archive root, and fee asset price modifier. */
@@ -12,6 +12,7 @@ import type {
12
12
  InboxContract,
13
13
  MessageSentLog,
14
14
  RollupContract,
15
+ ViemCommitteeAttestations,
15
16
  ViemHeader,
16
17
  } from '@aztec/ethereum/contracts';
17
18
  import type { ViemPublicClient, ViemPublicDebugClient } from '@aztec/ethereum/types';
@@ -56,6 +57,11 @@ export type RetrievedCheckpointFromCalldata = RetrievedCheckpointBase & {
56
57
  blobHashes: Buffer[];
57
58
  /** Parent beacon block root from the L1 block, used for blob fetching. */
58
59
  parentBeaconBlockRoot: string | undefined;
60
+ /**
61
+ * The exact packed `CommitteeAttestations` tuple from the propose calldata, carried verbatim so that
62
+ * attestation validation can attach byte-faithful invalidation evidence to a negative result.
63
+ */
64
+ verbatimAttestations: ViemCommitteeAttestations;
59
65
  };
60
66
 
61
67
  export async function retrievedToPublishedCheckpoint({
@@ -224,23 +224,6 @@ export abstract class ArchiverDataSourceBase
224
224
  }
225
225
  }
226
226
 
227
- /**
228
- * Resolves a {@link CheckpointsQuery} to a concrete `{from, limit}` pair used by BlockStore,
229
- * or undefined when the epoch has no checkpoints.
230
- */
231
- private async resolveCheckpointsQuery(
232
- query: CheckpointsQuery,
233
- ): Promise<{ from: CheckpointNumber; limit: number } | undefined> {
234
- if ('from' in query) {
235
- return query;
236
- }
237
- const numbers = await this.getCheckpointNumbersForEpoch(query.epoch);
238
- if (numbers.length === 0) {
239
- return undefined;
240
- }
241
- return { from: numbers[0], limit: numbers.length };
242
- }
243
-
244
227
  public async getCheckpoint(query: CheckpointQuery): Promise<PublishedCheckpoint | undefined> {
245
228
  const number = await this.resolveCheckpointQuery(query);
246
229
  if (number === undefined || number === 0) {
@@ -254,11 +237,7 @@ export abstract class ArchiverDataSourceBase
254
237
  }
255
238
 
256
239
  public async getCheckpoints(query: CheckpointsQuery): Promise<PublishedCheckpoint[]> {
257
- const resolved = await this.resolveCheckpointsQuery(query);
258
- if (!resolved) {
259
- return [];
260
- }
261
- const checkpoints = await this.stores.blocks.getRangeOfCheckpoints(resolved.from, resolved.limit);
240
+ const checkpoints = await this.getCheckpointsData(query);
262
241
  return Promise.all(checkpoints.map(ch => this.getPublishedCheckpointFromCheckpointData(ch)));
263
242
  }
264
243
 
@@ -271,11 +250,14 @@ export abstract class ArchiverDataSourceBase
271
250
  }
272
251
 
273
252
  public async getCheckpointsData(query: CheckpointsQuery): Promise<CheckpointData[]> {
274
- const resolved = await this.resolveCheckpointsQuery(query);
275
- if (!resolved) {
276
- return [];
253
+ if ('fromSlot' in query) {
254
+ return this.stores.blocks.getCheckpointsBySlot(query.fromSlot, query.limit, query.reverse ?? false);
277
255
  }
278
- return this.stores.blocks.getRangeOfCheckpoints(resolved.from, resolved.limit);
256
+ if ('from' in query) {
257
+ return this.stores.blocks.getRangeOfCheckpoints(query.from, query.limit);
258
+ }
259
+ const numbers = await this.getCheckpointNumbersForEpoch(query.epoch);
260
+ return numbers.length > 0 ? this.stores.blocks.getRangeOfCheckpoints(numbers[0], numbers.length) : [];
279
261
  }
280
262
 
281
263
  public getProposedCheckpointData(query?: ProposedCheckpointQuery): Promise<ProposedCheckpointData | undefined> {
@@ -123,10 +123,11 @@ export class ArchiverDataStoreUpdater {
123
123
  // Before adding checkpoints, check for conflicts with local blocks if any
124
124
  const { prunedBlocks, lastAlreadyInsertedBlockNumber } = await this.pruneMismatchingLocalBlocks(checkpoints);
125
125
 
126
- await this.stores.blocks.addCheckpoints(checkpoints);
126
+ const insertedCheckpoints = await this.stores.blocks.addCheckpoints(checkpoints);
127
127
 
128
- // Filter out blocks that were already inserted via addProposedBlock() to avoid duplicating logs/contract data
129
- const newBlocks = checkpoints
128
+ // Skip blocks already inserted via addProposedBlock() and blocks of already-stored checkpoints
129
+ // re-included by an L1 reorg: their logs/contract data were extracted when first inserted.
130
+ const newBlocks = insertedCheckpoints
130
131
  .flatMap((ch: PublishedCheckpoint) => ch.checkpoint.blocks)
131
132
  .filter(b => lastAlreadyInsertedBlockNumber === undefined || b.number > lastAlreadyInsertedBlockNumber);
132
133
 
@@ -84,7 +84,9 @@ export class ArchiverInstrumentation {
84
84
 
85
85
  this.pruneDuration = meter.createHistogram(Metrics.ARCHIVER_PRUNE_DURATION);
86
86
 
87
- this.pruneCount = createUpDownCounterWithDefault(meter, Metrics.ARCHIVER_PRUNE_COUNT);
87
+ this.pruneCount = createUpDownCounterWithDefault(meter, Metrics.ARCHIVER_PRUNE_COUNT, {
88
+ [Attributes.PRUNE_TYPE]: ['unproven', 'uncheckpointed', 'l1_conflict', 'orphan', 'l1_mismatch'],
89
+ });
88
90
 
89
91
  this.blockProposalTxTargetCount = createUpDownCounterWithDefault(
90
92
  meter,
@@ -150,10 +152,21 @@ export class ArchiverInstrumentation {
150
152
  }
151
153
 
152
154
  public processPrune(duration: number) {
153
- this.pruneCount.add(1);
155
+ this.pruneCount.add(1, { [Attributes.PRUNE_TYPE]: 'unproven' });
154
156
  this.pruneDuration.record(Math.ceil(duration));
155
157
  }
156
158
 
159
+ /**
160
+ * Records a pending-chain reorg, where the archiver dropped proposed blocks (and world-state follows by pruning). The
161
+ * type distinguishes the cause: 'uncheckpointed' (slot ended without a checkpoint), 'l1_conflict' (proposed blocks
162
+ * conflicting with an L1 checkpoint), 'orphan' (no matching proposed checkpoint arrived before the deadline), or
163
+ * 'l1_mismatch' (the local checkpointed tip diverged from L1 — an L1 reorg or a pruned/missed-proof checkpoint — so
164
+ * already-checkpointed blocks were rewound).
165
+ */
166
+ public recordPrune(pruneType: 'uncheckpointed' | 'l1_conflict' | 'orphan' | 'l1_mismatch') {
167
+ this.pruneCount.add(1, { [Attributes.PRUNE_TYPE]: pruneType });
168
+ }
169
+
157
170
  public updateLastProvenCheckpoint(checkpoint: CheckpointData) {
158
171
  const lastBlockNumberInCheckpoint = checkpoint.startBlock + checkpoint.blockCount - 1;
159
172
  this.blockHeight.record(lastBlockNumberInCheckpoint, { [Attributes.STATUS]: 'proven' });