@aztec/archiver 0.0.1-commit.cb6bed7c2 → 0.0.1-commit.cbf2c2d5d

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 (65) hide show
  1. package/dest/archiver.d.ts +3 -6
  2. package/dest/archiver.d.ts.map +1 -1
  3. package/dest/archiver.js +51 -18
  4. package/dest/config.d.ts +3 -3
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +2 -1
  7. package/dest/errors.d.ts +21 -9
  8. package/dest/errors.d.ts.map +1 -1
  9. package/dest/errors.js +27 -14
  10. package/dest/factory.d.ts +3 -4
  11. package/dest/factory.d.ts.map +1 -1
  12. package/dest/factory.js +19 -18
  13. package/dest/modules/data_source_base.d.ts +5 -5
  14. package/dest/modules/data_source_base.d.ts.map +1 -1
  15. package/dest/modules/data_source_base.js +5 -5
  16. package/dest/modules/data_store_updater.d.ts +12 -10
  17. package/dest/modules/data_store_updater.d.ts.map +1 -1
  18. package/dest/modules/data_store_updater.js +69 -76
  19. package/dest/modules/l1_synchronizer.d.ts +2 -2
  20. package/dest/modules/l1_synchronizer.d.ts.map +1 -1
  21. package/dest/modules/l1_synchronizer.js +34 -6
  22. package/dest/store/block_store.d.ts +12 -13
  23. package/dest/store/block_store.d.ts.map +1 -1
  24. package/dest/store/block_store.js +61 -61
  25. package/dest/store/contract_class_store.d.ts +2 -3
  26. package/dest/store/contract_class_store.d.ts.map +1 -1
  27. package/dest/store/contract_class_store.js +7 -67
  28. package/dest/store/contract_instance_store.d.ts +1 -1
  29. package/dest/store/contract_instance_store.d.ts.map +1 -1
  30. package/dest/store/contract_instance_store.js +6 -2
  31. package/dest/store/kv_archiver_store.d.ts +28 -18
  32. package/dest/store/kv_archiver_store.d.ts.map +1 -1
  33. package/dest/store/kv_archiver_store.js +34 -21
  34. package/dest/store/log_store.d.ts +6 -3
  35. package/dest/store/log_store.d.ts.map +1 -1
  36. package/dest/store/log_store.js +93 -16
  37. package/dest/store/message_store.d.ts +5 -1
  38. package/dest/store/message_store.d.ts.map +1 -1
  39. package/dest/store/message_store.js +13 -0
  40. package/dest/test/fake_l1_state.d.ts +8 -1
  41. package/dest/test/fake_l1_state.d.ts.map +1 -1
  42. package/dest/test/fake_l1_state.js +39 -5
  43. package/dest/test/mock_l2_block_source.d.ts +3 -3
  44. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  45. package/dest/test/mock_l2_block_source.js +4 -4
  46. package/dest/test/noop_l1_archiver.d.ts +4 -1
  47. package/dest/test/noop_l1_archiver.d.ts.map +1 -1
  48. package/dest/test/noop_l1_archiver.js +5 -1
  49. package/package.json +13 -13
  50. package/src/archiver.ts +53 -19
  51. package/src/config.ts +8 -1
  52. package/src/errors.ts +40 -24
  53. package/src/factory.ts +19 -14
  54. package/src/modules/data_source_base.ts +11 -6
  55. package/src/modules/data_store_updater.ts +77 -106
  56. package/src/modules/l1_synchronizer.ts +40 -12
  57. package/src/store/block_store.ts +72 -69
  58. package/src/store/contract_class_store.ts +8 -106
  59. package/src/store/contract_instance_store.ts +8 -5
  60. package/src/store/kv_archiver_store.ts +43 -32
  61. package/src/store/log_store.ts +126 -27
  62. package/src/store/message_store.ts +19 -0
  63. package/src/test/fake_l1_state.ts +50 -9
  64. package/src/test/mock_l2_block_source.ts +9 -3
  65. package/src/test/noop_l1_archiver.ts +7 -1
@@ -102,8 +102,8 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
102
102
  */
103
103
  getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
104
104
  getL2Tips(): Promise<L2Tips>;
105
- getL2EpochNumber(): Promise<EpochNumber>;
106
- getL2SlotNumber(): Promise<SlotNumber>;
105
+ getSyncedL2EpochNumber(): Promise<EpochNumber>;
106
+ getSyncedL2SlotNumber(): Promise<SlotNumber>;
107
107
  isEpochComplete(_epochNumber: EpochNumber): Promise<boolean>;
108
108
  getL1Constants(): Promise<L1RollupConstants>;
109
109
  getGenesisValues(): Promise<{
@@ -138,4 +138,4 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
138
138
  /** Finds the checkpoint number for a block, or undefined if the block is not in any checkpoint. */
139
139
  private findCheckpointNumberForBlock;
140
140
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsS0FBSyxTQUFTLEVBQ2QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsS0FBSyxhQUFhLEVBQ2xCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqSCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ILE9BQU8sRUFBMEIsS0FBSyxpQkFBaUIsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUduSCxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNwRyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLGFBQWEsRUFBRSxrQkFBa0I7SUFDekUs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
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsS0FBSyxTQUFTLEVBQ2QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsS0FBSyxhQUFhLEVBQ2xCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqSCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ILE9BQU8sRUFFTCxLQUFLLGlCQUFpQixFQUd2QixNQUFNLDZCQUE2QixDQUFDO0FBR3JDLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BHLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxEOztHQUVHO0FBQ0gscUJBQWEsaUJBQWtCLFlBQVcsYUFBYSxFQUFFLGtCQUFrQjtJQUN6RSxT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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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"}
@@ -7,7 +7,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { createLogger } from '@aztec/foundation/log';
8
8
  import { CheckpointedL2Block } from '@aztec/stdlib/block';
9
9
  import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
10
- import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
10
+ import { EmptyL1RollupConstants, getEpochAtSlot, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
11
11
  import { computeCheckpointOutHash } from '@aztec/stdlib/messaging';
12
12
  import { CheckpointHeader } from '@aztec/stdlib/rollup';
13
13
  import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
@@ -308,7 +308,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
308
308
  for (const txEffect of block.body.txEffects){
309
309
  if (txEffect.txHash.equals(txHash)) {
310
310
  // In mock, assume all txs are checkpointed with successful execution
311
- return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), await block.hash(), block.number);
311
+ return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), await block.hash(), block.number, getEpochAtSlot(block.slot, EmptyL1RollupConstants));
312
312
  }
313
313
  }
314
314
  }
@@ -355,10 +355,10 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
355
355
  finalized: makeTipId(finalizedBlockId)
356
356
  };
357
357
  }
358
- getL2EpochNumber() {
358
+ getSyncedL2EpochNumber() {
359
359
  throw new Error('Method not implemented.');
360
360
  }
361
- getL2SlotNumber() {
361
+ getSyncedL2SlotNumber() {
362
362
  throw new Error('Method not implemented.');
363
363
  }
364
364
  isEpochComplete(_epochNumber) {
@@ -1,3 +1,4 @@
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
3
4
  import { type TelemetryClient } from '@aztec/telemetry-client';
@@ -15,9 +16,11 @@ export declare class NoopL1Archiver extends Archiver {
15
16
  }, instrumentation: ArchiverInstrumentation);
16
17
  /** Override start to skip L1 validation checks. */
17
18
  start(_blockUntilSynced?: boolean): Promise<void>;
19
+ /** Always reports as fully synced since there is no real L1 to sync from. */
20
+ getSyncedL2SlotNumber(): Promise<SlotNumber | undefined>;
18
21
  }
19
22
  /** Creates an archiver with mocked L1 connectivity for testing. */
20
23
  export declare function createNoopL1Archiver(dataStore: KVArchiverDataStore, l1Constants: L1RollupConstants & {
21
24
  genesisArchiveRoot: Fr;
22
25
  }, telemetry?: TelemetryClient): Promise<NoopL1Archiver>;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcF9sMV9hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9vcF9sMV9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQW1DLE1BQU0seUJBQXlCLENBQUM7QUFLaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUF5QnpFOzs7O0dBSUc7QUFDSCxxQkFBYSxjQUFlLFNBQVEsUUFBUTtJQUMxQyxZQUNFLFNBQVMsRUFBRSxtQkFBbUIsRUFDOUIsV0FBVyxFQUFFLGlCQUFpQixHQUFHO1FBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0tBQUUsRUFDM0QsZUFBZSxFQUFFLHVCQUF1QixFQXVDekM7SUFFRCxtREFBbUQ7SUFDbkMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJaEU7Q0FDRjtBQUVELG1FQUFtRTtBQUNuRSx3QkFBc0Isb0JBQW9CLENBQ3hDLFNBQVMsRUFBRSxtQkFBbUIsRUFDOUIsV0FBVyxFQUFFLGlCQUFpQixHQUFHO0lBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0NBQUUsRUFDM0QsU0FBUyxHQUFFLGVBQXNDLEdBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FHekIifQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcF9sMV9hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9vcF9sMV9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXBELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFtQyxNQUFNLHlCQUF5QixDQUFDO0FBS2hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBeUJ6RTs7OztHQUlHO0FBQ0gscUJBQWEsY0FBZSxTQUFRLFFBQVE7SUFDMUMsWUFDRSxTQUFTLEVBQUUsbUJBQW1CLEVBQzlCLFdBQVcsRUFBRSxpQkFBaUIsR0FBRztRQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtLQUFFLEVBQzNELGVBQWUsRUFBRSx1QkFBdUIsRUF1Q3pDO0lBRUQsbURBQW1EO0lBQ25DLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0lBRUQsNkVBQTZFO0lBQzdELHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRXZFO0NBQ0Y7QUFFRCxtRUFBbUU7QUFDbkUsd0JBQXNCLG9CQUFvQixDQUN4QyxTQUFTLEVBQUUsbUJBQW1CLEVBQzlCLFdBQVcsRUFBRSxpQkFBaUIsR0FBRztJQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtDQUFFLEVBQzNELFNBQVMsR0FBRSxlQUFzQyxHQUNoRCxPQUFPLENBQUMsY0FBYyxDQUFDLENBR3pCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"noop_l1_archiver.d.ts","sourceRoot":"","sources":["../../src/test/noop_l1_archiver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,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,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAyBzE;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YACE,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,EAC3D,eAAe,EAAE,uBAAuB,EAuCzC;IAED,mDAAmD;IACnC,KAAK,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;CACF;AAED,mEAAmE;AACnE,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;IAAE,kBAAkB,EAAE,EAAE,CAAA;CAAE,EAC3D,SAAS,GAAE,eAAsC,GAChD,OAAO,CAAC,cAAc,CAAC,CAGzB"}
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;AAIpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,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,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAyBzE;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YACE,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,EAC3D,eAAe,EAAE,uBAAuB,EAuCzC;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,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;IAAE,kBAAkB,EAAE,EAAE,CAAA;CAAE,EAC3D,SAAS,GAAE,eAAsC,GAChD,OAAO,CAAC,cAAc,CAAC,CAGzB"}
@@ -1,3 +1,4 @@
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import { Buffer32 } from '@aztec/foundation/buffer';
2
3
  import { EthAddress } from '@aztec/foundation/eth-address';
3
4
  import { getTelemetryClient } from '@aztec/telemetry-client';
@@ -15,7 +16,7 @@ import { ArchiverInstrumentation } from '../modules/instrumentation.js';
15
16
  return 0n;
16
17
  }
17
18
  getL1Timestamp() {
18
- return 0n;
19
+ return undefined;
19
20
  }
20
21
  testEthereumNodeSynced() {
21
22
  return Promise.resolve();
@@ -61,6 +62,9 @@ import { ArchiverInstrumentation } from '../modules/instrumentation.js';
61
62
  this.runningPromise.start();
62
63
  return Promise.resolve();
63
64
  }
65
+ /** Always reports as fully synced since there is no real L1 to sync from. */ getSyncedL2SlotNumber() {
66
+ return Promise.resolve(SlotNumber(Number.MAX_SAFE_INTEGER));
67
+ }
64
68
  }
65
69
  /** Creates an archiver with mocked L1 connectivity for testing. */ export async function createNoopL1Archiver(dataStore, l1Constants, telemetry = getTelemetryClient()) {
66
70
  const instrumentation = await ArchiverInstrumentation.new(telemetry, ()=>dataStore.estimateSize());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "0.0.1-commit.cb6bed7c2",
3
+ "version": "0.0.1-commit.cbf2c2d5d",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -65,18 +65,18 @@
65
65
  ]
66
66
  },
67
67
  "dependencies": {
68
- "@aztec/blob-client": "0.0.1-commit.cb6bed7c2",
69
- "@aztec/blob-lib": "0.0.1-commit.cb6bed7c2",
70
- "@aztec/constants": "0.0.1-commit.cb6bed7c2",
71
- "@aztec/epoch-cache": "0.0.1-commit.cb6bed7c2",
72
- "@aztec/ethereum": "0.0.1-commit.cb6bed7c2",
73
- "@aztec/foundation": "0.0.1-commit.cb6bed7c2",
74
- "@aztec/kv-store": "0.0.1-commit.cb6bed7c2",
75
- "@aztec/l1-artifacts": "0.0.1-commit.cb6bed7c2",
76
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.cb6bed7c2",
77
- "@aztec/protocol-contracts": "0.0.1-commit.cb6bed7c2",
78
- "@aztec/stdlib": "0.0.1-commit.cb6bed7c2",
79
- "@aztec/telemetry-client": "0.0.1-commit.cb6bed7c2",
68
+ "@aztec/blob-client": "0.0.1-commit.cbf2c2d5d",
69
+ "@aztec/blob-lib": "0.0.1-commit.cbf2c2d5d",
70
+ "@aztec/constants": "0.0.1-commit.cbf2c2d5d",
71
+ "@aztec/epoch-cache": "0.0.1-commit.cbf2c2d5d",
72
+ "@aztec/ethereum": "0.0.1-commit.cbf2c2d5d",
73
+ "@aztec/foundation": "0.0.1-commit.cbf2c2d5d",
74
+ "@aztec/kv-store": "0.0.1-commit.cbf2c2d5d",
75
+ "@aztec/l1-artifacts": "0.0.1-commit.cbf2c2d5d",
76
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.cbf2c2d5d",
77
+ "@aztec/protocol-contracts": "0.0.1-commit.cbf2c2d5d",
78
+ "@aztec/stdlib": "0.0.1-commit.cbf2c2d5d",
79
+ "@aztec/telemetry-client": "0.0.1-commit.cbf2c2d5d",
80
80
  "lodash.groupby": "^4.6.0",
81
81
  "lodash.omit": "^4.5.0",
82
82
  "tslib": "^2.5.0",
package/src/archiver.ts CHANGED
@@ -22,16 +22,15 @@ import {
22
22
  import { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
23
23
  import {
24
24
  type L1RollupConstants,
25
- getEpochNumberAtTimestamp,
25
+ getEpochAtSlot,
26
26
  getSlotAtNextL1Block,
27
- getSlotAtTimestamp,
28
27
  getSlotRangeForEpoch,
29
28
  getTimestampRangeForEpoch,
30
29
  } from '@aztec/stdlib/epoch-helpers';
31
30
  import { type TelemetryClient, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
32
31
 
33
32
  import { type ArchiverConfig, mapArchiverConfig } from './config.js';
34
- import { NoBlobBodiesFoundError } from './errors.js';
33
+ import { BlockAlreadyCheckpointedError, NoBlobBodiesFoundError } from './errors.js';
35
34
  import { validateAndLogTraceAvailability } from './l1/validate_trace.js';
36
35
  import { ArchiverDataSourceBase } from './modules/data_source_base.js';
37
36
  import { ArchiverDataStoreUpdater } from './modules/data_store_updater.js';
@@ -96,7 +95,6 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
96
95
  * @param dataStore - An archiver data store for storage & retrieval of blocks, encrypted logs & contract data.
97
96
  * @param config - Archiver configuration options.
98
97
  * @param blobClient - Client for retrieving blob data.
99
- * @param epochCache - Cache for epoch-related data.
100
98
  * @param dateProvider - Provider for current date/time.
101
99
  * @param instrumentation - Instrumentation for metrics and tracing.
102
100
  * @param l1Constants - L1 rollup constants.
@@ -123,7 +121,6 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
123
121
  protected override readonly l1Constants: L1RollupConstants & {
124
122
  l1StartBlockHash: Buffer32;
125
123
  genesisArchiveRoot: Fr;
126
- rollupManaLimit?: number;
127
124
  },
128
125
  synchronizer: ArchiverL1Synchronizer,
129
126
  events: ArchiverEmitter,
@@ -244,10 +241,15 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
244
241
  }
245
242
 
246
243
  try {
247
- await this.updater.addProposedBlocks([block]);
244
+ await this.updater.addProposedBlock(block);
248
245
  this.log.debug(`Added block ${block.number} to store`);
249
246
  resolve();
250
247
  } catch (err: any) {
248
+ if (err instanceof BlockAlreadyCheckpointedError) {
249
+ this.log.debug(`Proposed block ${block.number} matches already checkpointed block, ignoring late proposal`);
250
+ resolve();
251
+ continue;
252
+ }
251
253
  this.log.error(`Failed to add block ${block.number} to store: ${err.message}`);
252
254
  reject(err);
253
255
  }
@@ -339,16 +341,49 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
339
341
  return Promise.resolve(this.synchronizer.getL1Timestamp());
340
342
  }
341
343
 
342
- public getL2SlotNumber(): Promise<SlotNumber | undefined> {
344
+ public async getSyncedL2SlotNumber(): Promise<SlotNumber | undefined> {
345
+ // The synced L2 slot is the latest slot for which we have all L1 data,
346
+ // either because we have seen all L1 blocks for that slot, or because
347
+ // we have seen the corresponding checkpoint.
348
+
349
+ let slotFromL1Sync: SlotNumber | undefined;
343
350
  const l1Timestamp = this.synchronizer.getL1Timestamp();
344
- return Promise.resolve(l1Timestamp === undefined ? undefined : getSlotAtTimestamp(l1Timestamp, this.l1Constants));
351
+ if (l1Timestamp !== undefined) {
352
+ const nextL1BlockSlot = getSlotAtNextL1Block(l1Timestamp, this.l1Constants);
353
+ if (Number(nextL1BlockSlot) > 0) {
354
+ slotFromL1Sync = SlotNumber.add(nextL1BlockSlot, -1);
355
+ }
356
+ }
357
+
358
+ let slotFromCheckpoint: SlotNumber | undefined;
359
+ const latestCheckpointNumber = await this.store.getSynchedCheckpointNumber();
360
+ if (latestCheckpointNumber > 0) {
361
+ const checkpointData = await this.store.getCheckpointData(latestCheckpointNumber);
362
+ if (checkpointData) {
363
+ slotFromCheckpoint = checkpointData.header.slotNumber;
364
+ }
365
+ }
366
+
367
+ if (slotFromL1Sync === undefined && slotFromCheckpoint === undefined) {
368
+ return undefined;
369
+ }
370
+ return SlotNumber(Math.max(slotFromL1Sync ?? 0, slotFromCheckpoint ?? 0));
345
371
  }
346
372
 
347
- public getL2EpochNumber(): Promise<EpochNumber | undefined> {
348
- const l1Timestamp = this.synchronizer.getL1Timestamp();
349
- return Promise.resolve(
350
- l1Timestamp === undefined ? undefined : getEpochNumberAtTimestamp(l1Timestamp, this.l1Constants),
351
- );
373
+ public async getSyncedL2EpochNumber(): Promise<EpochNumber | undefined> {
374
+ const syncedSlot = await this.getSyncedL2SlotNumber();
375
+ if (syncedSlot === undefined) {
376
+ return undefined;
377
+ }
378
+ // An epoch is fully synced when all its slots are synced.
379
+ // We check if syncedSlot is the last slot of its epoch; if so, that epoch is fully synced.
380
+ // Otherwise, only the previous epoch is fully synced.
381
+ const epoch = getEpochAtSlot(syncedSlot, this.l1Constants);
382
+ const [, endSlot] = getSlotRangeForEpoch(epoch, this.l1Constants);
383
+ if (syncedSlot >= endSlot) {
384
+ return epoch;
385
+ }
386
+ return Number(epoch) > 0 ? EpochNumber(Number(epoch) - 1) : undefined;
352
387
  }
353
388
 
354
389
  public async isEpochComplete(epochNumber: EpochNumber): Promise<boolean> {
@@ -456,11 +491,10 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
456
491
  this.log.info(`Rolling back proven L2 checkpoint to ${targetCheckpointNumber}`);
457
492
  await this.updater.setProvenCheckpointNumber(targetCheckpointNumber);
458
493
  }
459
- // TODO(palla/reorg): Set the finalized block when we add support for it.
460
- // const currentFinalizedBlock = currentBlocks.finalized.block.number;
461
- // if (targetL2BlockNumber < currentFinalizedBlock) {
462
- // this.log.info(`Rolling back finalized L2 checkpoint to ${targetCheckpointNumber}`);
463
- // await this.updater.setFinalizedCheckpointNumber(targetCheckpointNumber);
464
- // }
494
+ const currentFinalizedBlock = currentBlocks.finalized.block.number;
495
+ if (targetL2BlockNumber < currentFinalizedBlock) {
496
+ this.log.info(`Rolling back finalized L2 checkpoint to ${targetCheckpointNumber}`);
497
+ await this.updater.setFinalizedCheckpointNumber(targetCheckpointNumber);
498
+ }
465
499
  }
466
500
  }
package/src/config.ts CHANGED
@@ -8,7 +8,12 @@ import {
8
8
  getConfigFromMappings,
9
9
  numberConfigHelper,
10
10
  } from '@aztec/foundation/config';
11
- import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
11
+ import {
12
+ type ChainConfig,
13
+ type PipelineConfig,
14
+ chainConfigMappings,
15
+ pipelineConfigMappings,
16
+ } from '@aztec/stdlib/config';
12
17
  import type { ArchiverSpecificConfig } from '@aztec/stdlib/interfaces/server';
13
18
 
14
19
  /**
@@ -21,11 +26,13 @@ import type { ArchiverSpecificConfig } from '@aztec/stdlib/interfaces/server';
21
26
  export type ArchiverConfig = ArchiverSpecificConfig &
22
27
  L1ReaderConfig &
23
28
  L1ContractsConfig &
29
+ PipelineConfig & // required to pass through to epoch cache
24
30
  BlobClientConfig &
25
31
  ChainConfig;
26
32
 
27
33
  export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
28
34
  ...blobClientConfigMapping,
35
+ ...pipelineConfigMappings,
29
36
  archiverPollingIntervalMS: {
30
37
  env: 'ARCHIVER_POLLING_INTERVAL_MS',
31
38
  description: 'The polling interval in ms for retrieving new L2 blocks and encrypted logs.',
package/src/errors.ts CHANGED
@@ -6,24 +6,9 @@ export class NoBlobBodiesFoundError extends Error {
6
6
  }
7
7
  }
8
8
 
9
- export class InitialBlockNumberNotSequentialError extends Error {
10
- constructor(
11
- public readonly newBlockNumber: number,
12
- public readonly previousBlockNumber: number | undefined,
13
- ) {
14
- super(
15
- `Cannot insert new block ${newBlockNumber} given previous block number in store is ${
16
- previousBlockNumber ?? 'undefined'
17
- }`,
18
- );
19
- }
20
- }
21
-
22
9
  export class BlockNumberNotSequentialError extends Error {
23
10
  constructor(newBlockNumber: number, previous: number | undefined) {
24
- super(
25
- `Cannot insert new block ${newBlockNumber} given previous block number in batch is ${previous ?? 'undefined'}`,
26
- );
11
+ super(`Cannot insert new block ${newBlockNumber} given previous block number is ${previous ?? 'undefined'}`);
27
12
  }
28
13
  }
29
14
 
@@ -48,14 +33,6 @@ export class CheckpointNumberNotSequentialError extends Error {
48
33
  }
49
34
  }
50
35
 
51
- export class CheckpointNumberNotConsistentError extends Error {
52
- constructor(newCheckpointNumber: number, previous: number | undefined) {
53
- super(
54
- `Cannot insert block for new checkpoint ${newCheckpointNumber} given previous block was checkpoint ${previous ?? 'undefined'}`,
55
- );
56
- }
57
- }
58
-
59
36
  export class BlockIndexNotSequentialError extends Error {
60
37
  constructor(newBlockIndex: number, previousBlockIndex: number | undefined) {
61
38
  super(
@@ -89,6 +66,45 @@ export class BlockNotFoundError extends Error {
89
66
  }
90
67
  }
91
68
 
69
+ /** Thrown when a proposed block matches a block that was already checkpointed. This is expected for late proposals. */
70
+ export class BlockAlreadyCheckpointedError extends Error {
71
+ constructor(public readonly blockNumber: number) {
72
+ super(`Block ${blockNumber} has already been checkpointed with the same content`);
73
+ this.name = 'BlockAlreadyCheckpointedError';
74
+ }
75
+ }
76
+
77
+ /** Thrown when logs are added for a tag whose last stored log has a higher block number than the new log. */
78
+ export class OutOfOrderLogInsertionError extends Error {
79
+ constructor(
80
+ public readonly logType: 'private' | 'public',
81
+ public readonly tag: string,
82
+ public readonly lastBlockNumber: number,
83
+ public readonly newBlockNumber: number,
84
+ ) {
85
+ super(
86
+ `Out-of-order ${logType} log insertion for tag ${tag}: ` +
87
+ `last existing log is from block ${lastBlockNumber} but new log is from block ${newBlockNumber}`,
88
+ );
89
+ this.name = 'OutOfOrderLogInsertionError';
90
+ }
91
+ }
92
+
93
+ /** Thrown when L1 to L2 messages are requested for a checkpoint whose message tree hasn't been sealed yet. */
94
+ export class L1ToL2MessagesNotReadyError extends Error {
95
+ constructor(
96
+ public readonly checkpointNumber: number,
97
+ public readonly inboxTreeInProgress: bigint,
98
+ ) {
99
+ super(
100
+ `Cannot get L1 to L2 messages for checkpoint ${checkpointNumber}: ` +
101
+ `inbox tree in progress is ${inboxTreeInProgress}, messages not yet sealed`,
102
+ );
103
+ this.name = 'L1ToL2MessagesNotReadyError';
104
+ }
105
+ }
106
+
107
+ /** Thrown when a proposed block conflicts with an already checkpointed block (different content). */
92
108
  export class CannotOverwriteCheckpointedBlockError extends Error {
93
109
  constructor(
94
110
  public readonly blockNumber: number,
package/src/factory.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { EpochCache } from '@aztec/epoch-cache';
2
2
  import { createEthereumChain } from '@aztec/ethereum/chain';
3
+ import { makeL1HttpTransport } from '@aztec/ethereum/client';
3
4
  import { InboxContract, RollupContract } from '@aztec/ethereum/contracts';
4
5
  import type { ViemPublicDebugClient } from '@aztec/ethereum/types';
5
6
  import { BlockNumber } from '@aztec/foundation/branded-types';
@@ -12,13 +13,12 @@ import { protocolContractNames } from '@aztec/protocol-contracts';
12
13
  import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
13
14
  import { FunctionType, decodeFunctionSignature } from '@aztec/stdlib/abi';
14
15
  import type { ArchiverEmitter } from '@aztec/stdlib/block';
15
- import { type ContractClassPublic, computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
16
- import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
16
+ import { type ContractClassPublicWithCommitment, computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
17
17
  import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
18
18
  import { getTelemetryClient } from '@aztec/telemetry-client';
19
19
 
20
20
  import { EventEmitter } from 'events';
21
- import { createPublicClient, fallback, http } from 'viem';
21
+ import { createPublicClient } from 'viem';
22
22
 
23
23
  import { Archiver, type ArchiverDeps } from './archiver.js';
24
24
  import { type ArchiverConfig, mapArchiverConfig } from './config.js';
@@ -32,14 +32,13 @@ export const ARCHIVER_STORE_NAME = 'archiver';
32
32
  /** Creates an archiver store. */
33
33
  export async function createArchiverStore(
34
34
  userConfig: Pick<ArchiverConfig, 'archiverStoreMapSizeKb' | 'maxLogs'> & DataStoreConfig,
35
- l1Constants: Pick<L1RollupConstants, 'epochDuration'>,
36
35
  ) {
37
36
  const config = {
38
37
  ...userConfig,
39
38
  dataStoreMapSizeKb: userConfig.archiverStoreMapSizeKb ?? userConfig.dataStoreMapSizeKb,
40
39
  };
41
40
  const store = await createStore(ARCHIVER_STORE_NAME, ARCHIVER_DB_VERSION, config);
42
- return new KVArchiverDataStore(store, config.maxLogs, l1Constants);
41
+ return new KVArchiverDataStore(store, config.maxLogs);
43
42
  }
44
43
 
45
44
  /**
@@ -54,14 +53,15 @@ export async function createArchiver(
54
53
  deps: ArchiverDeps,
55
54
  opts: { blockUntilSync: boolean } = { blockUntilSync: true },
56
55
  ): Promise<Archiver> {
57
- const archiverStore = await createArchiverStore(config, { epochDuration: config.aztecEpochDuration });
56
+ const archiverStore = await createArchiverStore(config);
58
57
  await registerProtocolContracts(archiverStore);
59
58
 
60
59
  // Create Ethereum clients
61
60
  const chain = createEthereumChain(config.l1RpcUrls, config.l1ChainId);
61
+ const httpTimeout = config.l1HttpTimeoutMS;
62
62
  const publicClient = createPublicClient({
63
63
  chain: chain.chainInfo,
64
- transport: fallback(config.l1RpcUrls.map(url => http(url, { batch: false }))),
64
+ transport: makeL1HttpTransport(config.l1RpcUrls, { timeout: httpTimeout }),
65
65
  pollingInterval: config.viemPollingIntervalMS,
66
66
  });
67
67
 
@@ -69,7 +69,7 @@ export async function createArchiver(
69
69
  const debugRpcUrls = config.l1DebugRpcUrls.length > 0 ? config.l1DebugRpcUrls : config.l1RpcUrls;
70
70
  const debugClient = createPublicClient({
71
71
  chain: chain.chainInfo,
72
- transport: fallback(debugRpcUrls.map(url => http(url, { batch: false }))),
72
+ transport: makeL1HttpTransport(debugRpcUrls, { timeout: httpTimeout }),
73
73
  pollingInterval: config.viemPollingIntervalMS,
74
74
  }) as ViemPublicDebugClient;
75
75
 
@@ -173,16 +173,22 @@ export async function createArchiver(
173
173
  return archiver;
174
174
  }
175
175
 
176
- /** Registers protocol contracts in the archiver store. */
176
+ /** Registers protocol contracts in the archiver store. Idempotent — skips contracts that already exist (e.g. on node restart). */
177
177
  export async function registerProtocolContracts(store: KVArchiverDataStore) {
178
178
  const blockNumber = 0;
179
179
  for (const name of protocolContractNames) {
180
180
  const provider = new BundledProtocolContractsProvider();
181
181
  const contract = await provider.getProtocolContractArtifact(name);
182
- const contractClassPublic: ContractClassPublic = {
182
+
183
+ // Skip if already registered (happens on node restart with a persisted store).
184
+ if (await store.getContractClass(contract.contractClass.id)) {
185
+ continue;
186
+ }
187
+
188
+ const publicBytecodeCommitment = await computePublicBytecodeCommitment(contract.contractClass.packedBytecode);
189
+ const contractClassPublic: ContractClassPublicWithCommitment = {
183
190
  ...contract.contractClass,
184
- privateFunctions: [],
185
- utilityFunctions: [],
191
+ publicBytecodeCommitment,
186
192
  };
187
193
 
188
194
  const publicFunctionSignatures = contract.artifact.functions
@@ -190,8 +196,7 @@ export async function registerProtocolContracts(store: KVArchiverDataStore) {
190
196
  .map(fn => decodeFunctionSignature(fn.name, fn.parameters));
191
197
 
192
198
  await store.registerContractFunctionSignatures(publicFunctionSignatures);
193
- const bytecodeCommitment = await computePublicBytecodeCommitment(contractClassPublic.packedBytecode);
194
- await store.addContractClasses([contractClassPublic], [bytecodeCommitment], BlockNumber(blockNumber));
199
+ await store.addContractClasses([contractClassPublic], BlockNumber(blockNumber));
195
200
  await store.addContractInstances([contract.instance], BlockNumber(blockNumber));
196
201
  }
197
202
  }
@@ -46,9 +46,9 @@ export abstract class ArchiverDataSourceBase
46
46
 
47
47
  abstract getL2Tips(): Promise<L2Tips>;
48
48
 
49
- abstract getL2SlotNumber(): Promise<SlotNumber | undefined>;
49
+ abstract getSyncedL2SlotNumber(): Promise<SlotNumber | undefined>;
50
50
 
51
- abstract getL2EpochNumber(): Promise<EpochNumber | undefined>;
51
+ abstract getSyncedL2EpochNumber(): Promise<EpochNumber | undefined>;
52
52
 
53
53
  abstract isEpochComplete(epochNumber: EpochNumber): Promise<boolean>;
54
54
 
@@ -154,7 +154,7 @@ export abstract class ArchiverDataSourceBase
154
154
  }
155
155
 
156
156
  public getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined> {
157
- return this.store.getSettledTxReceipt(txHash);
157
+ return this.store.getSettledTxReceipt(txHash, this.l1Constants);
158
158
  }
159
159
 
160
160
  public isPendingChainInvalid(): Promise<boolean> {
@@ -165,16 +165,21 @@ export abstract class ArchiverDataSourceBase
165
165
  return (await this.store.getPendingChainValidationStatus()) ?? { valid: true };
166
166
  }
167
167
 
168
- public getPrivateLogsByTags(tags: SiloedTag[], page?: number): Promise<TxScopedL2Log[][]> {
169
- return this.store.getPrivateLogsByTags(tags, page);
168
+ public getPrivateLogsByTags(
169
+ tags: SiloedTag[],
170
+ page?: number,
171
+ upToBlockNumber?: BlockNumber,
172
+ ): Promise<TxScopedL2Log[][]> {
173
+ return this.store.getPrivateLogsByTags(tags, page, upToBlockNumber);
170
174
  }
171
175
 
172
176
  public getPublicLogsByTagsFromContract(
173
177
  contractAddress: AztecAddress,
174
178
  tags: Tag[],
175
179
  page?: number,
180
+ upToBlockNumber?: BlockNumber,
176
181
  ): Promise<TxScopedL2Log[][]> {
177
- return this.store.getPublicLogsByTagsFromContract(contractAddress, tags, page);
182
+ return this.store.getPublicLogsByTagsFromContract(contractAddress, tags, page, upToBlockNumber);
178
183
  }
179
184
 
180
185
  public getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse> {