@aztec/archiver 0.0.1-commit.0dc957cde → 0.0.1-commit.0ec55a70b

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 (83) hide show
  1. package/dest/archiver.d.ts +15 -9
  2. package/dest/archiver.d.ts.map +1 -1
  3. package/dest/archiver.js +85 -53
  4. package/dest/config.d.ts +1 -1
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +2 -2
  7. package/dest/errors.d.ts +16 -5
  8. package/dest/errors.d.ts.map +1 -1
  9. package/dest/errors.js +29 -6
  10. package/dest/factory.d.ts +4 -4
  11. package/dest/factory.d.ts.map +1 -1
  12. package/dest/factory.js +11 -9
  13. package/dest/index.d.ts +8 -2
  14. package/dest/index.d.ts.map +1 -1
  15. package/dest/index.js +7 -1
  16. package/dest/l1/calldata_retriever.d.ts +2 -1
  17. package/dest/l1/calldata_retriever.d.ts.map +1 -1
  18. package/dest/l1/calldata_retriever.js +9 -4
  19. package/dest/modules/contract_data_source_adapter.d.ts +25 -0
  20. package/dest/modules/contract_data_source_adapter.d.ts.map +1 -0
  21. package/dest/modules/contract_data_source_adapter.js +42 -0
  22. package/dest/modules/data_source_base.d.ts +16 -10
  23. package/dest/modules/data_source_base.d.ts.map +1 -1
  24. package/dest/modules/data_source_base.js +71 -60
  25. package/dest/modules/data_store_updater.d.ts +6 -6
  26. package/dest/modules/data_store_updater.d.ts.map +1 -1
  27. package/dest/modules/data_store_updater.js +42 -40
  28. package/dest/modules/l1_synchronizer.d.ts +5 -4
  29. package/dest/modules/l1_synchronizer.d.ts.map +1 -1
  30. package/dest/modules/l1_synchronizer.js +79 -54
  31. package/dest/modules/validation.d.ts +4 -3
  32. package/dest/modules/validation.d.ts.map +1 -1
  33. package/dest/modules/validation.js +4 -4
  34. package/dest/store/block_store.d.ts +58 -27
  35. package/dest/store/block_store.d.ts.map +1 -1
  36. package/dest/store/block_store.js +152 -75
  37. package/dest/store/contract_class_store.d.ts +17 -3
  38. package/dest/store/contract_class_store.d.ts.map +1 -1
  39. package/dest/store/contract_class_store.js +17 -1
  40. package/dest/store/contract_instance_store.d.ts +28 -1
  41. package/dest/store/contract_instance_store.d.ts.map +1 -1
  42. package/dest/store/contract_instance_store.js +31 -0
  43. package/dest/store/data_stores.d.ts +68 -0
  44. package/dest/store/data_stores.d.ts.map +1 -0
  45. package/dest/store/data_stores.js +50 -0
  46. package/dest/store/function_names_cache.d.ts +17 -0
  47. package/dest/store/function_names_cache.d.ts.map +1 -0
  48. package/dest/store/function_names_cache.js +30 -0
  49. package/dest/store/l2_tips_cache.js +1 -1
  50. package/dest/test/fake_l1_state.d.ts +2 -1
  51. package/dest/test/fake_l1_state.d.ts.map +1 -1
  52. package/dest/test/fake_l1_state.js +25 -8
  53. package/dest/test/mock_l2_block_source.d.ts +12 -3
  54. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  55. package/dest/test/mock_l2_block_source.js +24 -2
  56. package/dest/test/noop_l1_archiver.d.ts +4 -4
  57. package/dest/test/noop_l1_archiver.d.ts.map +1 -1
  58. package/dest/test/noop_l1_archiver.js +5 -5
  59. package/package.json +13 -13
  60. package/src/archiver.ts +91 -49
  61. package/src/config.ts +2 -1
  62. package/src/errors.ts +41 -8
  63. package/src/factory.ts +10 -10
  64. package/src/index.ts +15 -1
  65. package/src/l1/calldata_retriever.ts +15 -4
  66. package/src/modules/contract_data_source_adapter.ts +59 -0
  67. package/src/modules/data_source_base.ts +75 -57
  68. package/src/modules/data_store_updater.ts +46 -38
  69. package/src/modules/l1_synchronizer.ts +92 -60
  70. package/src/modules/validation.ts +8 -7
  71. package/src/store/block_store.ts +159 -80
  72. package/src/store/contract_class_store.ts +28 -2
  73. package/src/store/contract_instance_store.ts +43 -0
  74. package/src/store/data_stores.ts +108 -0
  75. package/src/store/function_names_cache.ts +37 -0
  76. package/src/store/l2_tips_cache.ts +1 -1
  77. package/src/test/fake_l1_state.ts +24 -14
  78. package/src/test/mock_l2_block_source.ts +23 -2
  79. package/src/test/noop_l1_archiver.ts +6 -6
  80. package/dest/store/kv_archiver_store.d.ts +0 -383
  81. package/dest/store/kv_archiver_store.d.ts.map +0 -1
  82. package/dest/store/kv_archiver_store.js +0 -501
  83. package/src/store/kv_archiver_store.ts +0 -728
@@ -4,131 +4,142 @@ import { isDefined } from '@aztec/foundation/types';
4
4
  import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
5
5
  import { getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
6
6
  /**
7
- * Abstract base class implementing ArchiverDataSource using a KVArchiverDataStore.
8
- * Provides implementations for all store-delegating methods and declares abstract methods
9
- * for L1-dependent functionality that subclasses must implement.
7
+ * Abstract base class implementing ArchiverDataSource using a bundle of archiver substores.
8
+ * Provides implementations for all read-side methods and declares abstract methods for
9
+ * L1-dependent functionality that subclasses must implement.
10
10
  */ export class ArchiverDataSourceBase {
11
- store;
11
+ stores;
12
12
  l1Constants;
13
- constructor(store, l1Constants){
14
- this.store = store;
13
+ constructor(stores, l1Constants){
14
+ this.stores = stores;
15
15
  this.l1Constants = l1Constants;
16
16
  }
17
17
  getCheckpointNumber() {
18
- return this.store.getSynchedCheckpointNumber();
18
+ return this.stores.blocks.getLatestCheckpointNumber();
19
19
  }
20
20
  getSynchedCheckpointNumber() {
21
- return this.store.getSynchedCheckpointNumber();
21
+ return this.stores.blocks.getLatestCheckpointNumber();
22
22
  }
23
23
  getProvenCheckpointNumber() {
24
- return this.store.getProvenCheckpointNumber();
24
+ return this.stores.blocks.getProvenCheckpointNumber();
25
25
  }
26
26
  getBlockNumber() {
27
- return this.store.getLatestBlockNumber();
27
+ return this.stores.blocks.getLatestL2BlockNumber();
28
28
  }
29
29
  getProvenBlockNumber() {
30
- return this.store.getProvenBlockNumber();
30
+ return this.stores.blocks.getProvenBlockNumber();
31
31
  }
32
32
  async getBlockHeader(number) {
33
- const blockNumber = number === 'latest' ? await this.store.getLatestBlockNumber() : number;
33
+ const blockNumber = number === 'latest' ? await this.stores.blocks.getLatestL2BlockNumber() : number;
34
34
  if (blockNumber === 0) {
35
35
  return undefined;
36
36
  }
37
- const headers = await this.store.getBlockHeaders(blockNumber, 1);
37
+ const headers = await this.stores.blocks.getBlockHeaders(blockNumber, 1);
38
38
  return headers.length === 0 ? undefined : headers[0];
39
39
  }
40
40
  getCheckpointedBlock(number) {
41
- return this.store.getCheckpointedBlock(number);
41
+ return this.stores.blocks.getCheckpointedBlock(number);
42
42
  }
43
43
  getCheckpointedL2BlockNumber() {
44
- return this.store.getCheckpointedL2BlockNumber();
44
+ return this.stores.blocks.getCheckpointedL2BlockNumber();
45
45
  }
46
46
  getFinalizedL2BlockNumber() {
47
- return this.store.getFinalizedL2BlockNumber();
47
+ return this.stores.blocks.getFinalizedL2BlockNumber();
48
48
  }
49
49
  async getCheckpointHeader(number) {
50
50
  if (number === 'latest') {
51
- number = await this.store.getSynchedCheckpointNumber();
51
+ number = await this.stores.blocks.getLatestCheckpointNumber();
52
52
  }
53
53
  if (number === 0) {
54
54
  return undefined;
55
55
  }
56
- const checkpoint = await this.store.getCheckpointData(number);
56
+ const checkpoint = await this.stores.blocks.getCheckpointData(number);
57
57
  if (!checkpoint) {
58
58
  return undefined;
59
59
  }
60
60
  return checkpoint.header;
61
61
  }
62
62
  async getLastBlockNumberInCheckpoint(checkpointNumber) {
63
- const checkpointData = await this.store.getCheckpointData(checkpointNumber);
63
+ const checkpointData = await this.stores.blocks.getCheckpointData(checkpointNumber);
64
64
  if (!checkpointData) {
65
65
  return undefined;
66
66
  }
67
67
  return BlockNumber(checkpointData.startBlock + checkpointData.blockCount - 1);
68
68
  }
69
69
  getCheckpointedBlocks(from, limit) {
70
- return this.store.getCheckpointedBlocks(from, limit);
70
+ return this.stores.blocks.getCheckpointedBlocks(from, limit);
71
+ }
72
+ getCheckpointData(checkpointNumber) {
73
+ return this.stores.blocks.getCheckpointData(checkpointNumber);
74
+ }
75
+ getCheckpointDataRange(from, limit) {
76
+ return this.stores.blocks.getRangeOfCheckpoints(from, limit);
77
+ }
78
+ getCheckpointNumberBySlot(slot) {
79
+ return this.stores.blocks.getCheckpointNumberBySlot(slot);
80
+ }
81
+ getBlockDataWithCheckpointContext(blockNumber) {
82
+ return this.stores.blocks.getBlockDataWithCheckpointContext(blockNumber);
71
83
  }
72
84
  getBlockHeaderByHash(blockHash) {
73
- return this.store.getBlockHeaderByHash(blockHash);
85
+ return this.stores.blocks.getBlockHeaderByHash(blockHash);
74
86
  }
75
87
  getBlockHeaderByArchive(archive) {
76
- return this.store.getBlockHeaderByArchive(archive);
88
+ return this.stores.blocks.getBlockHeaderByArchive(archive);
77
89
  }
78
90
  getBlockData(number) {
79
- return this.store.getBlockData(number);
91
+ return this.stores.blocks.getBlockData(number);
80
92
  }
81
93
  getBlockDataByArchive(archive) {
82
- return this.store.getBlockDataByArchive(archive);
94
+ return this.stores.blocks.getBlockDataByArchive(archive);
83
95
  }
84
96
  async getL2Block(number) {
85
97
  // If the number provided is -ve, then return the latest block.
86
98
  if (number < 0) {
87
- number = await this.store.getLatestBlockNumber();
99
+ number = await this.stores.blocks.getLatestL2BlockNumber();
88
100
  }
89
101
  if (number === 0) {
90
102
  return undefined;
91
103
  }
92
- const publishedBlock = await this.store.getBlock(number);
93
- return publishedBlock;
104
+ return this.stores.blocks.getBlock(number);
94
105
  }
95
106
  getTxEffect(txHash) {
96
- return this.store.getTxEffect(txHash);
107
+ return this.stores.blocks.getTxEffect(txHash);
97
108
  }
98
109
  getSettledTxReceipt(txHash) {
99
- return this.store.getSettledTxReceipt(txHash, this.l1Constants);
110
+ return this.stores.blocks.getSettledTxReceipt(txHash, this.l1Constants);
100
111
  }
101
- getProposedCheckpoint() {
102
- return this.store.getProposedCheckpoint();
112
+ getLastCheckpoint() {
113
+ return this.stores.blocks.getLastCheckpoint();
103
114
  }
104
- getProposedCheckpointOnly() {
105
- return this.store.getProposedCheckpointOnly();
115
+ getLastProposedCheckpoint() {
116
+ return this.stores.blocks.getLastProposedCheckpoint();
106
117
  }
107
118
  isPendingChainInvalid() {
108
119
  return this.getPendingChainValidationStatus().then((status)=>!status.valid);
109
120
  }
110
121
  async getPendingChainValidationStatus() {
111
- return await this.store.getPendingChainValidationStatus() ?? {
122
+ return await this.stores.blocks.getPendingChainValidationStatus() ?? {
112
123
  valid: true
113
124
  };
114
125
  }
115
126
  getPrivateLogsByTags(tags, page, upToBlockNumber) {
116
- return this.store.getPrivateLogsByTags(tags, page, upToBlockNumber);
127
+ return this.stores.logs.getPrivateLogsByTags(tags, page, upToBlockNumber);
117
128
  }
118
129
  getPublicLogsByTagsFromContract(contractAddress, tags, page, upToBlockNumber) {
119
- return this.store.getPublicLogsByTagsFromContract(contractAddress, tags, page, upToBlockNumber);
130
+ return this.stores.logs.getPublicLogsByTagsFromContract(contractAddress, tags, page, upToBlockNumber);
120
131
  }
121
132
  getPublicLogs(filter) {
122
- return this.store.getPublicLogs(filter);
133
+ return this.stores.logs.getPublicLogs(filter);
123
134
  }
124
135
  getContractClassLogs(filter) {
125
- return this.store.getContractClassLogs(filter);
136
+ return this.stores.logs.getContractClassLogs(filter);
126
137
  }
127
138
  getContractClass(id) {
128
- return this.store.getContractClass(id);
139
+ return this.stores.contractClasses.getContractClass(id);
129
140
  }
130
141
  getBytecodeCommitment(id) {
131
- return this.store.getBytecodeCommitment(id);
142
+ return this.stores.contractClasses.getBytecodeCommitment(id);
132
143
  }
133
144
  async getContract(address, maybeTimestamp) {
134
145
  let timestamp;
@@ -139,37 +150,37 @@ import { getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
139
150
  } else {
140
151
  timestamp = maybeTimestamp;
141
152
  }
142
- return this.store.getContractInstance(address, timestamp);
153
+ return this.stores.contractInstances.getContractInstance(address, timestamp);
143
154
  }
144
155
  getContractClassIds() {
145
- return this.store.getContractClassIds();
156
+ return this.stores.contractClasses.getContractClassIds();
146
157
  }
147
- getDebugFunctionName(address, selector) {
148
- return this.store.getDebugFunctionName(address, selector);
158
+ /** Looks up a public function name given a selector. */ getDebugFunctionName(_address, selector) {
159
+ return Promise.resolve(this.stores.functionNames.get(selector));
149
160
  }
150
- registerContractFunctionSignatures(signatures) {
151
- return this.store.registerContractFunctionSignatures(signatures);
161
+ /** Register public function signatures so they can be looked up by selector. */ registerContractFunctionSignatures(signatures) {
162
+ return this.stores.functionNames.register(signatures);
152
163
  }
153
164
  getL1ToL2Messages(checkpointNumber) {
154
- return this.store.getL1ToL2Messages(checkpointNumber);
165
+ return this.stores.messages.getL1ToL2Messages(checkpointNumber);
155
166
  }
156
167
  getL1ToL2MessageIndex(l1ToL2Message) {
157
- return this.store.getL1ToL2MessageIndex(l1ToL2Message);
168
+ return this.stores.messages.getL1ToL2MessageIndex(l1ToL2Message);
158
169
  }
159
170
  async getCheckpoints(checkpointNumber, limit) {
160
- const checkpoints = await this.store.getRangeOfCheckpoints(checkpointNumber, limit);
171
+ const checkpoints = await this.stores.blocks.getRangeOfCheckpoints(checkpointNumber, limit);
161
172
  return Promise.all(checkpoints.map((ch)=>this.getPublishedCheckpointFromCheckpointData(ch)));
162
173
  }
163
174
  async getPublishedCheckpointFromCheckpointData(checkpoint) {
164
- const blocksForCheckpoint = await this.store.getBlocksForCheckpoint(checkpoint.checkpointNumber);
175
+ const blocksForCheckpoint = await this.stores.blocks.getBlocksForCheckpoint(checkpoint.checkpointNumber);
165
176
  if (!blocksForCheckpoint) {
166
177
  throw new Error(`Blocks for checkpoint ${checkpoint.checkpointNumber} not found`);
167
178
  }
168
- const fullCheckpoint = new Checkpoint(checkpoint.archive, checkpoint.header, blocksForCheckpoint, checkpoint.checkpointNumber);
179
+ const fullCheckpoint = new Checkpoint(checkpoint.archive, checkpoint.header, blocksForCheckpoint, checkpoint.checkpointNumber, checkpoint.feeAssetPriceModifier);
169
180
  return new PublishedCheckpoint(fullCheckpoint, checkpoint.l1, checkpoint.attestations);
170
181
  }
171
182
  getBlocksForSlot(slotNumber) {
172
- return this.store.getBlocksForSlot(slotNumber);
183
+ return this.stores.blocks.getBlocksForSlot(slotNumber);
173
184
  }
174
185
  async getCheckpointedBlocksForEpoch(epochNumber) {
175
186
  const checkpointsData = await this.getCheckpointsDataForEpoch(epochNumber);
@@ -190,33 +201,33 @@ import { getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
190
201
  throw new Error('L1 constants not set');
191
202
  }
192
203
  const [start, end] = getSlotRangeForEpoch(epochNumber, this.l1Constants);
193
- return this.store.getCheckpointDataForSlotRange(start, end);
204
+ return this.stores.blocks.getCheckpointDataForSlotRange(start, end);
194
205
  }
195
206
  async getBlock(number) {
196
207
  // If the number provided is -ve, then return the latest block.
197
208
  if (number < 0) {
198
- number = await this.store.getLatestBlockNumber();
209
+ number = await this.stores.blocks.getLatestL2BlockNumber();
199
210
  }
200
211
  if (number === 0) {
201
212
  return undefined;
202
213
  }
203
- return this.store.getBlock(number);
214
+ return this.stores.blocks.getBlock(number);
204
215
  }
205
216
  getBlocks(from, limit) {
206
- return this.store.getBlocks(from, limit);
217
+ return this.stores.blocks.getBlocks(from, limit);
207
218
  }
208
219
  getCheckpointedBlockByHash(blockHash) {
209
- return this.store.getCheckpointedBlockByHash(blockHash);
220
+ return this.stores.blocks.getCheckpointedBlockByHash(blockHash);
210
221
  }
211
222
  getCheckpointedBlockByArchive(archive) {
212
- return this.store.getCheckpointedBlockByArchive(archive);
223
+ return this.stores.blocks.getCheckpointedBlockByArchive(archive);
213
224
  }
214
225
  async getL2BlockByHash(blockHash) {
215
- const checkpointedBlock = await this.store.getCheckpointedBlockByHash(blockHash);
226
+ const checkpointedBlock = await this.stores.blocks.getCheckpointedBlockByHash(blockHash);
216
227
  return checkpointedBlock?.block;
217
228
  }
218
229
  async getL2BlockByArchive(archive) {
219
- const checkpointedBlock = await this.store.getCheckpointedBlockByArchive(archive);
230
+ const checkpointedBlock = await this.stores.blocks.getCheckpointedBlockByArchive(archive);
220
231
  return checkpointedBlock?.block;
221
232
  }
222
233
  }
@@ -1,7 +1,7 @@
1
1
  import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
  import type { CommitteeAttestation, L2Block, ValidateCheckpointResult } from '@aztec/stdlib/block';
3
3
  import { type L1PublishedData, type ProposedCheckpointInput, type PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
4
- import type { KVArchiverDataStore } from '../store/kv_archiver_store.js';
4
+ import type { ArchiverDataStores } from '../store/data_stores.js';
5
5
  import type { L2TipsCache } from '../store/l2_tips_cache.js';
6
6
  /** Result of adding checkpoints with information about any pruned blocks. */
7
7
  type ReconcileCheckpointsResult = {
@@ -12,11 +12,11 @@ type ReconcileCheckpointsResult = {
12
12
  };
13
13
  /** Archiver helper module to handle updates to the data store. */
14
14
  export declare class ArchiverDataStoreUpdater {
15
- private store;
15
+ private stores;
16
16
  private l2TipsCache?;
17
17
  private opts;
18
18
  private readonly log;
19
- constructor(store: KVArchiverDataStore, l2TipsCache?: L2TipsCache | undefined, opts?: {
19
+ constructor(stores: ArchiverDataStores, l2TipsCache?: L2TipsCache | undefined, opts?: {
20
20
  rollupManaLimit?: number;
21
21
  });
22
22
  /**
@@ -46,8 +46,8 @@ export declare class ArchiverDataStoreUpdater {
46
46
  l1: L1PublishedData;
47
47
  attestations: CommitteeAttestation[];
48
48
  checkpoint: PublishedCheckpoint;
49
- }): Promise<ReconcileCheckpointsResult>;
50
- setProposedCheckpoint(proposedCheckpoint: ProposedCheckpointInput): Promise<void>;
49
+ }, evictProposedFrom?: CheckpointNumber): Promise<ReconcileCheckpointsResult>;
50
+ addProposedCheckpoint(proposedCheckpoint: ProposedCheckpointInput): Promise<void>;
51
51
  private pruneMismatchingLocalBlocks;
52
52
  /**
53
53
  * Removes all uncheckpointed blocks strictly after the specified block number and cleans up associated contract data.
@@ -90,4 +90,4 @@ export declare class ArchiverDataStoreUpdater {
90
90
  private updateUpdatedContractInstances;
91
91
  }
92
92
  export {};
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9zdG9yZV91cGRhdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9kYXRhX3N0b3JlX3VwZGF0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUWhGLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyxtQkFBbUIsRUFFekIsTUFBTSwwQkFBMEIsQ0FBQztBQVNsQyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBUTdELDZFQUE2RTtBQUM3RSxLQUFLLDBCQUEwQixHQUFHO0lBQ2hDLG1FQUFtRTtJQUNuRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLGlGQUFpRjtJQUNqRiw4QkFBOEIsRUFBRSxXQUFXLEdBQUcsU0FBUyxDQUFDO0NBQ3pELENBQUM7QUFFRixrRUFBa0U7QUFDbEUscUJBQWEsd0JBQXdCO0lBSWpDLE9BQU8sQ0FBQyxLQUFLO0lBQ2IsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQixPQUFPLENBQUMsSUFBSTtJQUxkLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUEwQztJQUU5RCxZQUNVLEtBQUssRUFBRSxtQkFBbUIsRUFDMUIsV0FBVyxDQUFDLHlCQUFhLEVBQ3pCLElBQUksR0FBRTtRQUFFLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFPLEVBQzdDO0lBRUo7Ozs7Ozs7O09BUUc7SUFDVSxnQkFBZ0IsQ0FDM0IsS0FBSyxFQUFFLE9BQU8sRUFDZCw0QkFBNEIsQ0FBQyxFQUFFLHdCQUF3QixHQUN0RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBaUJsQjtJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNVLGNBQWMsQ0FDekIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLEVBQ2xDLDRCQUE0QixDQUFDLEVBQUUsd0JBQXdCLEVBQ3ZELGVBQWUsQ0FBQyxFQUFFO1FBQ2hCLEVBQUUsRUFBRSxlQUFlLENBQUM7UUFDcEIsWUFBWSxFQUFFLG9CQUFvQixFQUFFLENBQUM7UUFDckMsVUFBVSxFQUFFLG1CQUFtQixDQUFDO0tBQ2pDLEdBQ0EsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBd0NyQztJQUVZLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLHVCQUF1QixpQkFPN0U7WUFRYSwyQkFBMkI7SUFtRXpDOzs7Ozs7OztPQVFHO0lBQ1UsK0JBQStCLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FtQnpGO1lBTWEsaUJBQWlCO0lBYS9COzs7Ozs7OztPQVFHO0lBQ1Usc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWV4RjtJQUVEOzs7T0FHRztJQUNVLHlCQUF5QixDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLeEY7SUFFRDs7O09BR0c7SUFDVSw0QkFBNEIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSzNGO0lBRUQsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxtQkFBbUI7SUFJM0IscURBQXFEO0lBQ3JELE9BQU8sQ0FBQyx3QkFBd0I7WUFLbEIsc0JBQXNCO1lBaUJ0Qiw4QkFBOEI7WUErQzlCLCtCQUErQjtZQTBDL0IsOEJBQThCO0NBc0I3QyJ9
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9zdG9yZV91cGRhdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9kYXRhX3N0b3JlX3VwZGF0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUWhGLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyxtQkFBbUIsRUFFekIsTUFBTSwwQkFBMEIsQ0FBQztBQVNsQyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBUTdELDZFQUE2RTtBQUM3RSxLQUFLLDBCQUEwQixHQUFHO0lBQ2hDLG1FQUFtRTtJQUNuRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLGlGQUFpRjtJQUNqRiw4QkFBOEIsRUFBRSxXQUFXLEdBQUcsU0FBUyxDQUFDO0NBQ3pELENBQUM7QUFFRixrRUFBa0U7QUFDbEUscUJBQWEsd0JBQXdCO0lBSWpDLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQixPQUFPLENBQUMsSUFBSTtJQUxkLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUEwQztJQUU5RCxZQUNVLE1BQU0sRUFBRSxrQkFBa0IsRUFDMUIsV0FBVyxDQUFDLHlCQUFhLEVBQ3pCLElBQUksR0FBRTtRQUFFLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFPLEVBQzdDO0lBRUo7Ozs7Ozs7O09BUUc7SUFDVSxnQkFBZ0IsQ0FDM0IsS0FBSyxFQUFFLE9BQU8sRUFDZCw0QkFBNEIsQ0FBQyxFQUFFLHdCQUF3QixHQUN0RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBa0JsQjtJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNVLGNBQWMsQ0FDekIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLEVBQ2xDLDRCQUE0QixDQUFDLEVBQUUsd0JBQXdCLEVBQ3ZELGVBQWUsQ0FBQyxFQUFFO1FBQ2hCLEVBQUUsRUFBRSxlQUFlLENBQUM7UUFDcEIsWUFBWSxFQUFFLG9CQUFvQixFQUFFLENBQUM7UUFDckMsVUFBVSxFQUFFLG1CQUFtQixDQUFDO0tBQ2pDLEVBQ0QsaUJBQWlCLENBQUMsRUFBRSxnQkFBZ0IsR0FDbkMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBOENyQztJQUVZLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLHVCQUF1QixpQkFPN0U7WUFRYSwyQkFBMkI7SUFtRXpDOzs7Ozs7OztPQVFHO0lBQ1UsK0JBQStCLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FtQnpGO1lBTWEsaUJBQWlCO0lBYS9COzs7Ozs7OztPQVFHO0lBQ1Usc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWV4RjtJQUVEOzs7T0FHRztJQUNVLHlCQUF5QixDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLeEY7SUFFRDs7O09BR0c7SUFDVSw0QkFBNEIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSzNGO0lBRUQsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxtQkFBbUI7SUFJM0IscURBQXFEO0lBQ3JELE9BQU8sQ0FBQyx3QkFBd0I7WUFLbEIsc0JBQXNCO1lBaUJ0Qiw4QkFBOEI7WUErQzlCLCtCQUErQjtZQTBDL0IsOEJBQThCO0NBc0I3QyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"data_store_updater.d.ts","sourceRoot":"","sources":["../../src/modules/data_store_updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAQhF,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQ7D,6EAA6E;AAC7E,KAAK,0BAA0B,GAAG;IAChC,mEAAmE;IACnE,YAAY,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IACpC,iFAAiF;IACjF,8BAA8B,EAAE,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,kEAAkE;AAClE,qBAAa,wBAAwB;IAIjC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,IAAI;IALd,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0C;IAE9D,YACU,KAAK,EAAE,mBAAmB,EAC1B,WAAW,CAAC,yBAAa,EACzB,IAAI,GAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAO,EAC7C;IAEJ;;;;;;;;OAQG;IACU,gBAAgB,CAC3B,KAAK,EAAE,OAAO,EACd,4BAA4B,CAAC,EAAE,wBAAwB,GACtD,OAAO,CAAC,OAAO,CAAC,CAiBlB;IAED;;;;;;;;;;;;OAYG;IACU,cAAc,CACzB,WAAW,EAAE,mBAAmB,EAAE,EAClC,4BAA4B,CAAC,EAAE,wBAAwB,EACvD,eAAe,CAAC,EAAE;QAChB,EAAE,EAAE,eAAe,CAAC;QACpB,YAAY,EAAE,oBAAoB,EAAE,CAAC;QACrC,UAAU,EAAE,mBAAmB,CAAC;KACjC,GACA,OAAO,CAAC,0BAA0B,CAAC,CAwCrC;IAEY,qBAAqB,CAAC,kBAAkB,EAAE,uBAAuB,iBAO7E;YAQa,2BAA2B;IAmEzC;;;;;;;;OAQG;IACU,+BAA+B,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAmBzF;YAMa,iBAAiB;IAa/B;;;;;;;;OAQG;IACU,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAexF;IAED;;;OAGG;IACU,yBAAyB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxF;IAED;;;OAGG;IACU,4BAA4B,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F;IAED,6DAA6D;IAC7D,OAAO,CAAC,mBAAmB;IAI3B,qDAAqD;IACrD,OAAO,CAAC,wBAAwB;YAKlB,sBAAsB;YAiBtB,8BAA8B;YA+C9B,+BAA+B;YA0C/B,8BAA8B;CAsB7C"}
1
+ {"version":3,"file":"data_store_updater.d.ts","sourceRoot":"","sources":["../../src/modules/data_store_updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAQhF,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQ7D,6EAA6E;AAC7E,KAAK,0BAA0B,GAAG;IAChC,mEAAmE;IACnE,YAAY,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IACpC,iFAAiF;IACjF,8BAA8B,EAAE,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,kEAAkE;AAClE,qBAAa,wBAAwB;IAIjC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,IAAI;IALd,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0C;IAE9D,YACU,MAAM,EAAE,kBAAkB,EAC1B,WAAW,CAAC,yBAAa,EACzB,IAAI,GAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAO,EAC7C;IAEJ;;;;;;;;OAQG;IACU,gBAAgB,CAC3B,KAAK,EAAE,OAAO,EACd,4BAA4B,CAAC,EAAE,wBAAwB,GACtD,OAAO,CAAC,OAAO,CAAC,CAkBlB;IAED;;;;;;;;;;;;OAYG;IACU,cAAc,CACzB,WAAW,EAAE,mBAAmB,EAAE,EAClC,4BAA4B,CAAC,EAAE,wBAAwB,EACvD,eAAe,CAAC,EAAE;QAChB,EAAE,EAAE,eAAe,CAAC;QACpB,YAAY,EAAE,oBAAoB,EAAE,CAAC;QACrC,UAAU,EAAE,mBAAmB,CAAC;KACjC,EACD,iBAAiB,CAAC,EAAE,gBAAgB,GACnC,OAAO,CAAC,0BAA0B,CAAC,CA8CrC;IAEY,qBAAqB,CAAC,kBAAkB,EAAE,uBAAuB,iBAO7E;YAQa,2BAA2B;IAmEzC;;;;;;;;OAQG;IACU,+BAA+B,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAmBzF;YAMa,iBAAiB;IAa/B;;;;;;;;OAQG;IACU,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAexF;IAED;;;OAGG;IACU,yBAAyB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxF;IAED;;;OAGG;IACU,4BAA4B,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F;IAED,6DAA6D;IAC7D,OAAO,CAAC,mBAAmB;IAI3B,qDAAqD;IACrD,OAAO,CAAC,wBAAwB;YAKlB,sBAAsB;YAiBtB,8BAA8B;YA+C9B,+BAA+B;YA0C/B,8BAA8B;CAsB7C"}
@@ -11,12 +11,12 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
11
11
  return Operation;
12
12
  }(Operation || {});
13
13
  /** Archiver helper module to handle updates to the data store. */ export class ArchiverDataStoreUpdater {
14
- store;
14
+ stores;
15
15
  l2TipsCache;
16
16
  opts;
17
17
  log;
18
- constructor(store, l2TipsCache, opts = {}){
19
- this.store = store;
18
+ constructor(stores, l2TipsCache, opts = {}){
19
+ this.stores = stores;
20
20
  this.l2TipsCache = l2TipsCache;
21
21
  this.opts = opts;
22
22
  this.log = createLogger('archiver:store_updater');
@@ -30,13 +30,13 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
30
30
  * @param pendingChainValidationStatus - Optional validation status to set.
31
31
  * @returns True if the operation is successful.
32
32
  */ async addProposedBlock(block, pendingChainValidationStatus) {
33
- const result = await this.store.transactionAsync(async ()=>{
34
- await this.store.addProposedBlock(block);
33
+ const result = await this.stores.db.transactionAsync(async ()=>{
34
+ await this.stores.blocks.addProposedBlock(block);
35
35
  const opResults = await Promise.all([
36
36
  // Update the pending chain validation status if provided
37
- pendingChainValidationStatus && this.store.setPendingChainValidationStatus(pendingChainValidationStatus),
37
+ pendingChainValidationStatus && this.stores.blocks.setPendingChainValidationStatus(pendingChainValidationStatus),
38
38
  // Add any logs emitted during the retrieved block
39
- this.store.addLogs([
39
+ this.stores.logs.addLogs([
40
40
  block
41
41
  ]),
42
42
  // Unroll all logs emitted during the retrieved block and extract any contract classes and instances from it
@@ -59,7 +59,7 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
59
59
  * @param pendingChainValidationStatus - Optional validation status to set.
60
60
  * @param promoteProposed - Optional promotion of the current proposed checkpoint (fast path when blocks are already local).
61
61
  * @returns Result with information about any pruned blocks.
62
- */ async addCheckpoints(checkpoints, pendingChainValidationStatus, promoteProposed) {
62
+ */ async addCheckpoints(checkpoints, pendingChainValidationStatus, promoteProposed, evictProposedFrom) {
63
63
  for (const checkpoint of checkpoints){
64
64
  validateCheckpoint(checkpoint.checkpoint, {
65
65
  rollupManaLimit: this.opts?.rollupManaLimit
@@ -70,21 +70,23 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
70
70
  rollupManaLimit: this.opts?.rollupManaLimit
71
71
  });
72
72
  }
73
- const result = await this.store.transactionAsync(async ()=>{
73
+ const result = await this.stores.db.transactionAsync(async ()=>{
74
74
  // Before adding checkpoints, check for conflicts with local blocks if any
75
75
  const { prunedBlocks, lastAlreadyInsertedBlockNumber } = await this.pruneMismatchingLocalBlocks(checkpoints);
76
- await this.store.addCheckpoints(checkpoints);
76
+ await this.stores.blocks.addCheckpoints(checkpoints);
77
77
  // Filter out blocks that were already inserted via addProposedBlock() to avoid duplicating logs/contract data
78
78
  const newBlocks = checkpoints.flatMap((ch)=>ch.checkpoint.blocks).filter((b)=>lastAlreadyInsertedBlockNumber === undefined || b.number > lastAlreadyInsertedBlockNumber);
79
79
  await Promise.all([
80
80
  // Update the pending chain validation status if provided
81
- pendingChainValidationStatus && this.store.setPendingChainValidationStatus(pendingChainValidationStatus),
81
+ pendingChainValidationStatus && this.stores.blocks.setPendingChainValidationStatus(pendingChainValidationStatus),
82
82
  // Add any logs emitted during the retrieved blocks
83
- this.store.addLogs(newBlocks),
83
+ this.stores.logs.addLogs(newBlocks),
84
84
  // Unroll all logs emitted during the retrieved blocks and extract any contract classes and instances from them
85
85
  ...newBlocks.map((block)=>this.addContractDataToDb(block)),
86
- // Promote the proposed checkpoint if requested
87
- promoteProposed ? this.store.promoteProposedToCheckpointed(promoteProposed.l1, promoteProposed.attestations, promoteProposed.checkpoint.checkpoint.archive.root) : undefined
86
+ // Promote the proposed checkpoint if requested (uses explicit checkpoint number)
87
+ promoteProposed ? this.stores.blocks.promoteProposedToCheckpointed(promoteProposed.checkpoint.checkpoint.number, promoteProposed.l1, promoteProposed.attestations, promoteProposed.checkpoint.checkpoint.archive.root) : undefined,
88
+ // Evict pending checkpoints that diverged from what L1 mined
89
+ evictProposedFrom !== undefined ? this.stores.blocks.evictProposedCheckpointsFrom(evictProposedFrom) : undefined
88
90
  ]);
89
91
  await this.l2TipsCache?.refresh();
90
92
  return {
@@ -94,9 +96,9 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
94
96
  });
95
97
  return result;
96
98
  }
97
- async setProposedCheckpoint(proposedCheckpoint) {
98
- const result = await this.store.transactionAsync(async ()=>{
99
- await this.store.setProposedCheckpoint(proposedCheckpoint);
99
+ async addProposedCheckpoint(proposedCheckpoint) {
100
+ const result = await this.stores.db.transactionAsync(async ()=>{
101
+ await this.stores.blocks.addProposedCheckpoint(proposedCheckpoint);
100
102
  await this.l2TipsCache?.refresh();
101
103
  });
102
104
  return result;
@@ -108,8 +110,8 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
108
110
  * and when checkpoints are added afterward, they include all the correct blocks.
109
111
  */ async pruneMismatchingLocalBlocks(checkpoints) {
110
112
  const [lastCheckpointedBlockNumber, lastBlockNumber] = await Promise.all([
111
- this.store.getCheckpointedL2BlockNumber(),
112
- this.store.getLatestBlockNumber()
113
+ this.stores.blocks.getCheckpointedL2BlockNumber(),
114
+ this.stores.blocks.getLatestL2BlockNumber()
113
115
  ]);
114
116
  // Exit early if there are no local uncheckpointed blocks
115
117
  if (lastBlockNumber === lastCheckpointedBlockNumber) {
@@ -119,7 +121,7 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
119
121
  };
120
122
  }
121
123
  // Get all uncheckpointed local blocks
122
- const uncheckpointedLocalBlocks = await this.store.getBlocks(BlockNumber.add(lastCheckpointedBlockNumber, 1), lastBlockNumber - lastCheckpointedBlockNumber);
124
+ const uncheckpointedLocalBlocks = await this.stores.blocks.getBlocks(BlockNumber.add(lastCheckpointedBlockNumber, 1), lastBlockNumber - lastCheckpointedBlockNumber);
123
125
  let lastAlreadyInsertedBlockNumber;
124
126
  for (const publishedCheckpoint of checkpoints){
125
127
  const checkpointBlocks = publishedCheckpoint.checkpoint.blocks;
@@ -178,15 +180,15 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
178
180
  * @returns The removed blocks.
179
181
  * @throws Error if any block to be removed is checkpointed.
180
182
  */ async removeUncheckpointedBlocksAfter(blockNumber) {
181
- const result = await this.store.transactionAsync(async ()=>{
183
+ const result = await this.stores.db.transactionAsync(async ()=>{
182
184
  // Verify we're only removing uncheckpointed blocks
183
- const lastCheckpointedBlockNumber = await this.store.getCheckpointedL2BlockNumber();
185
+ const lastCheckpointedBlockNumber = await this.stores.blocks.getCheckpointedL2BlockNumber();
184
186
  if (blockNumber < lastCheckpointedBlockNumber) {
185
187
  throw new Error(`Cannot remove blocks after ${blockNumber} because checkpointed blocks exist up to ${lastCheckpointedBlockNumber}`);
186
188
  }
187
189
  const result = await this.removeBlocksAfter(blockNumber);
188
- // Clear the proposed checkpoint if it exists, since its blocks have been pruned
189
- await this.store.deleteProposedCheckpoint();
190
+ // Clear all pending proposed checkpoints since their blocks have been pruned
191
+ await this.stores.blocks.deleteProposedCheckpoints();
190
192
  await this.l2TipsCache?.refresh();
191
193
  return result;
192
194
  });
@@ -197,10 +199,10 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
197
199
  * Does not remove their checkpoints.
198
200
  */ async removeBlocksAfter(blockNumber) {
199
201
  // First get the blocks to be removed so we can clean up contract data
200
- const removedBlocks = await this.store.removeBlocksAfter(blockNumber);
202
+ const removedBlocks = await this.stores.blocks.removeBlocksAfter(blockNumber);
201
203
  // Clean up contract data and logs for the removed blocks
202
204
  await Promise.all([
203
- this.store.deleteLogs(removedBlocks),
205
+ this.stores.logs.deleteLogs(removedBlocks),
204
206
  ...removedBlocks.map((block)=>this.removeContractDataFromDb(block))
205
207
  ]);
206
208
  return removedBlocks;
@@ -214,16 +216,16 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
214
216
  * @param checkpointNumber - Remove all checkpoints strictly after this one.
215
217
  * @returns True if the operation is successful.
216
218
  */ async removeCheckpointsAfter(checkpointNumber) {
217
- return await this.store.transactionAsync(async ()=>{
218
- const { blocksRemoved = [] } = await this.store.removeCheckpointsAfter(checkpointNumber);
219
+ return await this.stores.db.transactionAsync(async ()=>{
220
+ const { blocksRemoved = [] } = await this.stores.blocks.removeCheckpointsAfter(checkpointNumber);
219
221
  const opResults = await Promise.all([
220
222
  // Prune rolls back to the last proven block, which is by definition valid
221
- this.store.setPendingChainValidationStatus({
223
+ this.stores.blocks.setPendingChainValidationStatus({
222
224
  valid: true
223
225
  }),
224
226
  // Remove contract data for all blocks being removed
225
227
  ...blocksRemoved.map((block)=>this.removeContractDataFromDb(block)),
226
- this.store.deleteLogs(blocksRemoved)
228
+ this.stores.logs.deleteLogs(blocksRemoved)
227
229
  ]);
228
230
  await this.l2TipsCache?.refresh();
229
231
  return opResults.every(Boolean);
@@ -233,8 +235,8 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
233
235
  * Updates the proven checkpoint number and refreshes the L2 tips cache.
234
236
  * @param checkpointNumber - The checkpoint number to set as proven.
235
237
  */ async setProvenCheckpointNumber(checkpointNumber) {
236
- await this.store.transactionAsync(async ()=>{
237
- await this.store.setProvenCheckpointNumber(checkpointNumber);
238
+ await this.stores.db.transactionAsync(async ()=>{
239
+ await this.stores.blocks.setProvenCheckpointNumber(checkpointNumber);
238
240
  await this.l2TipsCache?.refresh();
239
241
  });
240
242
  }
@@ -242,8 +244,8 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
242
244
  * Updates the finalized checkpoint number and refreshes the L2 tips cache.
243
245
  * @param checkpointNumber - The checkpoint number to set as finalized.
244
246
  */ async setFinalizedCheckpointNumber(checkpointNumber) {
245
- await this.store.transactionAsync(async ()=>{
246
- await this.store.setFinalizedCheckpointNumber(checkpointNumber);
247
+ await this.stores.db.transactionAsync(async ()=>{
248
+ await this.stores.blocks.setFinalizedCheckpointNumber(checkpointNumber);
247
249
  await this.l2TipsCache?.refresh();
248
250
  });
249
251
  }
@@ -271,7 +273,7 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
271
273
  const contractClasses = contractClassPublishedEvents.map((e)=>e.toContractClassPublic());
272
274
  if (contractClasses.length > 0) {
273
275
  contractClasses.forEach((c)=>this.log.verbose(`${Operation[operation]} contract class ${c.id.toString()}`));
274
- return await this.store.deleteContractClasses(contractClasses, blockNum);
276
+ return await this.stores.contractClasses.deleteContractClasses(contractClasses, blockNum);
275
277
  }
276
278
  return true;
277
279
  }
@@ -295,7 +297,7 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
295
297
  }
296
298
  if (contractClasses.length > 0) {
297
299
  contractClasses.forEach((c)=>this.log.verbose(`${Operation[operation]} contract class ${c.id.toString()}`));
298
- return await this.store.addContractClasses(contractClasses, blockNum);
300
+ return await this.stores.contractClasses.addContractClasses(contractClasses, blockNum);
299
301
  }
300
302
  return true;
301
303
  }
@@ -319,9 +321,9 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
319
321
  if (contractInstances.length > 0) {
320
322
  contractInstances.forEach((c)=>this.log.verbose(`${Operation[operation]} contract instance at ${c.address.toString()}`));
321
323
  if (operation == 0) {
322
- return await this.store.addContractInstances(contractInstances, blockNum);
324
+ return await this.stores.contractInstances.addContractInstances(contractInstances, blockNum);
323
325
  } else if (operation == 1) {
324
- return await this.store.deleteContractInstances(contractInstances, blockNum);
326
+ return await this.stores.contractInstances.deleteContractInstances(contractInstances);
325
327
  }
326
328
  }
327
329
  return true;
@@ -333,9 +335,9 @@ import { computeContractAddressFromInstance, computeContractClassId } from '@azt
333
335
  if (contractUpdates.length > 0) {
334
336
  contractUpdates.forEach((c)=>this.log.verbose(`${Operation[operation]} contract instance update at ${c.address.toString()}`));
335
337
  if (operation == 0) {
336
- return await this.store.addContractInstanceUpdates(contractUpdates, timestamp);
338
+ return await this.stores.contractInstances.addContractInstanceUpdates(contractUpdates, timestamp);
337
339
  } else if (operation == 1) {
338
- return await this.store.deleteContractInstanceUpdates(contractUpdates, timestamp);
340
+ return await this.stores.contractInstances.deleteContractInstanceUpdates(contractUpdates, timestamp);
339
341
  }
340
342
  }
341
343
  return true;
@@ -9,7 +9,7 @@ import { DateProvider } from '@aztec/foundation/timer';
9
9
  import { type ArchiverEmitter } from '@aztec/stdlib/block';
10
10
  import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
11
11
  import { type Traceable, type Tracer } from '@aztec/telemetry-client';
12
- import type { KVArchiverDataStore } from '../store/kv_archiver_store.js';
12
+ import { type ArchiverDataStores } from '../store/data_stores.js';
13
13
  import type { L2TipsCache } from '../store/l2_tips_cache.js';
14
14
  import type { ArchiverInstrumentation } from './instrumentation.js';
15
15
  /**
@@ -21,7 +21,7 @@ export declare class ArchiverL1Synchronizer implements Traceable {
21
21
  private readonly debugClient;
22
22
  private readonly rollup;
23
23
  private readonly inbox;
24
- private readonly store;
24
+ private readonly stores;
25
25
  private config;
26
26
  private readonly blobClient;
27
27
  private readonly epochCache;
@@ -35,7 +35,7 @@ export declare class ArchiverL1Synchronizer implements Traceable {
35
35
  private l1Timestamp;
36
36
  private readonly updater;
37
37
  readonly tracer: Tracer;
38
- constructor(publicClient: ViemPublicClient, debugClient: ViemPublicDebugClient, rollup: RollupContract, inbox: InboxContract, store: KVArchiverDataStore, config: {
38
+ constructor(publicClient: ViemPublicClient, debugClient: ViemPublicDebugClient, rollup: RollupContract, inbox: InboxContract, stores: ArchiverDataStores, config: {
39
39
  batchSize: number;
40
40
  skipValidateCheckpointAttestations?: boolean;
41
41
  skipPromoteProposedCheckpointDuringL1Sync?: boolean;
@@ -55,6 +55,7 @@ export declare class ArchiverL1Synchronizer implements Traceable {
55
55
  getL1BlockNumber(): bigint | undefined;
56
56
  /** Returns the last L1 timestamp that was synced. */
57
57
  getL1Timestamp(): bigint | undefined;
58
+ private getSignatureContext;
58
59
  /** Checks that the ethereum node we are connected to has a latest timestamp no more than the allowed drift. Throw if not. */
59
60
  testEthereumNodeSynced(): Promise<void>;
60
61
  syncFromL1(initialSyncComplete: boolean): Promise<void>;
@@ -73,4 +74,4 @@ export declare class ArchiverL1Synchronizer implements Traceable {
73
74
  private checkForNewCheckpointsBeforeL1SyncPoint;
74
75
  private getCheckpointHeader;
75
76
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfc3luY2hyb25pemVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9sMV9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBMkIsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHbkcsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlyRixPQUFPLEVBQVksUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0QsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRyxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBd0MsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRyxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxNQUFNLEVBQXlCLE1BQU0seUJBQXlCLENBQUM7QUFXN0YsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUk3RCxPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBYXBFOzs7R0FHRztBQUNILHFCQUFhLHNCQUF1QixZQUFXLFNBQVM7SUFTcEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZ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
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfc3luY2hyb25pemVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9sMV9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBMkIsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHbkcsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlyRixPQUFPLEVBQVksUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0QsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRyxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBd0MsTUFBTSw2QkFBNkIsQ0FBQztBQUczRyxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxNQUFNLEVBQXlCLE1BQU0seUJBQXlCLENBQUM7QUFXN0YsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQXlCLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJN0QsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWFwRTs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBdUIsWUFBVyxTQUFTO0lBU3BELE9BQU8sQ0FBQyxRQUFRLENBQUMs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
@@ -1 +1 @@
1
- {"version":3,"file":"l1_synchronizer.d.ts","sourceRoot":"","sources":["../../src/modules/l1_synchronizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"l1_synchronizer.d.ts","sourceRoot":"","sources":["../../src/modules/l1_synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAA2B,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAIrF,OAAO,EAAY,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAkB,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,KAAK,eAAe,EAAsD,MAAM,qBAAqB,CAAC;AAE/G,OAAO,EAAE,KAAK,iBAAiB,EAAwC,MAAM,6BAA6B,CAAC;AAG3G,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAyB,MAAM,yBAAyB,CAAC;AAW7F,OAAO,EAAE,KAAK,kBAAkB,EAAyB,MAAM,yBAAyB,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAapE;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,SAAS;IASpD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAI5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IA9BtB,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACmB,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EAAE,qBAAqB,EAClC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,kBAAkB,EACnC,MAAM,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,kCAAkC,CAAC,EAAE,OAAO,CAAC;QAC7C,yCAAyC,CAAC,EAAE,OAAO,CAAC;QACpD,+BAA+B,EAAE,MAAM,CAAC;KACzC,EACgB,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,iBAAiB,GAAG;QAChD,gBAAgB,EAAE,QAAQ,CAAC;QAC3B,kBAAkB,EAAE,EAAE,CAAC;KACxB,EACgB,MAAM,EAAE,eAAe,EACxC,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,EACR,GAAG,GAAE,MAAyC,EAMhE;IAED,sBAAsB;IACf,SAAS,CAAC,SAAS,EAAE;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,kCAAkC,CAAC,EAAE,OAAO,CAAC;QAC7C,yCAAyC,CAAC,EAAE,OAAO,CAAC;QACpD,+BAA+B,EAAE,MAAM,CAAC;KACzC,QAEA;IAED,wDAAwD;IACjD,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAE5C;IAED,qDAAqD;IAC9C,cAAc,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,OAAO,CAAC,mBAAmB;IAO3B,6HAA6H;IAChH,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYnD;IAGY,UAAU,CAAC,mBAAmB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFnE;YAGa,yBAAyB;YA4BzB,yBAAyB;YA8CzB,QAAQ;YAeR,gBAAgB;IA+D9B,OAAO,CAAC,SAAS;YAWH,oBAAoB;YA6DpB,iBAAiB;YAWjB,wBAAwB;YAkCxB,sBAAsB;YAqEtB,cAAc;YASd,iBAAiB;YA+ajB,uCAAuC;YAoEvC,uCAAuC;YAgDvC,mBAAmB;CAOlC"}