@aztec/archiver 0.77.0-testnet-ignition.26 → 0.77.0-testnet-ignition.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/archiver/archiver.js +5 -19
- package/dest/archiver/kv_archiver_store/block_store.js +0 -6
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -6
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +0 -7
- package/dest/test/mock_l2_block_source.js +0 -7
- package/package.json +13 -13
- package/src/archiver/archiver.ts +5 -29
- package/src/archiver/archiver_store.ts +0 -12
- package/src/archiver/kv_archiver_store/block_store.ts +0 -8
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +0 -8
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +0 -9
- package/src/test/mock_l2_block_source.ts +0 -9
- package/dest/archiver/archiver.d.ts +0 -198
- package/dest/archiver/archiver.d.ts.map +0 -1
- package/dest/archiver/archiver_store.d.ts +0 -230
- package/dest/archiver/archiver_store.d.ts.map +0 -1
- package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
- package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
- package/dest/archiver/config.d.ts +0 -37
- package/dest/archiver/config.d.ts.map +0 -1
- package/dest/archiver/data_retrieval.d.ts +0 -74
- package/dest/archiver/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/errors.d.ts +0 -4
- package/dest/archiver/errors.d.ts.map +0 -1
- package/dest/archiver/index.d.ts +0 -8
- package/dest/archiver/index.d.ts.map +0 -1
- package/dest/archiver/instrumentation.d.ts +0 -29
- package/dest/archiver/instrumentation.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -89
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -21
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -154
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -49
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -33
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +0 -12
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +0 -1
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +0 -23
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +0 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +0 -177
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +0 -1
- package/dest/archiver/structs/data_retrieval.d.ts +0 -27
- package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/structs/published.d.ts +0 -11
- package/dest/archiver/structs/published.d.ts.map +0 -1
- package/dest/factory.d.ts +0 -24
- package/dest/factory.d.ts.map +0 -1
- package/dest/index.d.ts +0 -5
- package/dest/index.d.ts.map +0 -1
- package/dest/rpc/index.d.ts +0 -10
- package/dest/rpc/index.d.ts.map +0 -1
- package/dest/test/index.d.ts +0 -4
- package/dest/test/index.d.ts.map +0 -1
- package/dest/test/mock_archiver.d.ts +0 -23
- package/dest/test/mock_archiver.d.ts.map +0 -1
- package/dest/test/mock_l1_to_l2_message_source.d.ts +0 -16
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +0 -1
- package/dest/test/mock_l2_block_source.d.ts +0 -82
- package/dest/test/mock_l2_block_source.d.ts.map +0 -1
|
@@ -271,7 +271,7 @@ import { ArchiverInstrumentation } from './instrumentation.js';
|
|
|
271
271
|
}
|
|
272
272
|
async handleL2blocks(blocksSynchedTo, currentL1BlockNumber) {
|
|
273
273
|
const localPendingBlockNumber = BigInt(await this.getBlockNumber());
|
|
274
|
-
const [provenBlockNumber, provenArchive, pendingBlockNumber, pendingArchive, archiveForLocalPendingBlockNumber
|
|
274
|
+
const [provenBlockNumber, provenArchive, pendingBlockNumber, pendingArchive, archiveForLocalPendingBlockNumber] = await this.rollup.read.status([
|
|
275
275
|
localPendingBlockNumber
|
|
276
276
|
], {
|
|
277
277
|
blockNumber: currentL1BlockNumber
|
|
@@ -285,16 +285,11 @@ import { ArchiverInstrumentation } from './instrumentation.js';
|
|
|
285
285
|
this.log.error(`Hit local block greater than last synched block: ${localBlockForDestinationProvenBlockNumber.number} > ${synched}`);
|
|
286
286
|
}
|
|
287
287
|
if (localBlockForDestinationProvenBlockNumber && provenArchive === localBlockForDestinationProvenBlockNumber.archive.root.toString()) {
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
this.store.getProvenL2BlockNumber()
|
|
291
|
-
]);
|
|
292
|
-
if (localProvenEpochNumber !== Number(provenEpochNumber) || localProvenBlockNumber !== Number(provenBlockNumber)) {
|
|
288
|
+
const localProvenBlockNumber = await this.store.getProvenL2BlockNumber();
|
|
289
|
+
if (localProvenBlockNumber !== Number(provenBlockNumber)) {
|
|
293
290
|
await this.store.setProvenL2BlockNumber(Number(provenBlockNumber));
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
provenBlockNumber,
|
|
297
|
-
provenEpochNumber
|
|
291
|
+
this.log.info(`Updated proven chain to block ${provenBlockNumber}`, {
|
|
292
|
+
provenBlockNumber
|
|
298
293
|
});
|
|
299
294
|
}
|
|
300
295
|
}
|
|
@@ -576,9 +571,6 @@ import { ArchiverInstrumentation } from './instrumentation.js';
|
|
|
576
571
|
getProvenBlockNumber() {
|
|
577
572
|
return this.store.getProvenL2BlockNumber();
|
|
578
573
|
}
|
|
579
|
-
getProvenL2EpochNumber() {
|
|
580
|
-
return this.store.getProvenL2EpochNumber();
|
|
581
|
-
}
|
|
582
574
|
/** Forcefully updates the last proven block number. Use for testing. */ setProvenBlockNumber(blockNumber) {
|
|
583
575
|
return this.store.setProvenL2BlockNumber(blockNumber);
|
|
584
576
|
}
|
|
@@ -869,15 +861,9 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
869
861
|
getProvenL2BlockNumber() {
|
|
870
862
|
return this.store.getProvenL2BlockNumber();
|
|
871
863
|
}
|
|
872
|
-
getProvenL2EpochNumber() {
|
|
873
|
-
return this.store.getProvenL2EpochNumber();
|
|
874
|
-
}
|
|
875
864
|
setProvenL2BlockNumber(l2BlockNumber) {
|
|
876
865
|
return this.store.setProvenL2BlockNumber(l2BlockNumber);
|
|
877
866
|
}
|
|
878
|
-
setProvenL2EpochNumber(l2EpochNumber) {
|
|
879
|
-
return this.store.setProvenL2EpochNumber(l2EpochNumber);
|
|
880
|
-
}
|
|
881
867
|
setBlockSynchedL1BlockNumber(l1BlockNumber) {
|
|
882
868
|
return this.store.setBlockSynchedL1BlockNumber(l1BlockNumber);
|
|
883
869
|
}
|
|
@@ -202,12 +202,6 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
202
202
|
setProvenL2BlockNumber(blockNumber) {
|
|
203
203
|
return this.#lastProvenL2Block.set(blockNumber);
|
|
204
204
|
}
|
|
205
|
-
getProvenL2EpochNumber() {
|
|
206
|
-
return this.#lastProvenL2Epoch.getAsync();
|
|
207
|
-
}
|
|
208
|
-
setProvenL2EpochNumber(epochNumber) {
|
|
209
|
-
return this.#lastProvenL2Epoch.set(epochNumber);
|
|
210
|
-
}
|
|
211
205
|
#computeBlockRange(start, limit) {
|
|
212
206
|
if (limit < 1) {
|
|
213
207
|
throw new Error(`Invalid limit: ${limit}`);
|
|
@@ -226,15 +226,9 @@ import { NullifierStore } from './nullifier_store.js';
|
|
|
226
226
|
getProvenL2BlockNumber() {
|
|
227
227
|
return this.#blockStore.getProvenL2BlockNumber();
|
|
228
228
|
}
|
|
229
|
-
getProvenL2EpochNumber() {
|
|
230
|
-
return this.#blockStore.getProvenL2EpochNumber();
|
|
231
|
-
}
|
|
232
229
|
async setProvenL2BlockNumber(blockNumber) {
|
|
233
230
|
await this.#blockStore.setProvenL2BlockNumber(blockNumber);
|
|
234
231
|
}
|
|
235
|
-
async setProvenL2EpochNumber(epochNumber) {
|
|
236
|
-
await this.#blockStore.setProvenL2EpochNumber(epochNumber);
|
|
237
|
-
}
|
|
238
232
|
async setBlockSynchedL1BlockNumber(l1BlockNumber) {
|
|
239
233
|
await this.#blockStore.setSynchedL1BlockNumber(l1BlockNumber);
|
|
240
234
|
}
|
|
@@ -595,17 +595,10 @@ import { L1ToL2MessageStore } from './l1_to_l2_message_store.js';
|
|
|
595
595
|
getProvenL2BlockNumber() {
|
|
596
596
|
return Promise.resolve(this.lastProvenL2BlockNumber);
|
|
597
597
|
}
|
|
598
|
-
getProvenL2EpochNumber() {
|
|
599
|
-
return Promise.resolve(this.lastProvenL2EpochNumber);
|
|
600
|
-
}
|
|
601
598
|
setProvenL2BlockNumber(l2BlockNumber) {
|
|
602
599
|
this.lastProvenL2BlockNumber = l2BlockNumber;
|
|
603
600
|
return Promise.resolve();
|
|
604
601
|
}
|
|
605
|
-
setProvenL2EpochNumber(l2EpochNumber) {
|
|
606
|
-
this.lastProvenL2EpochNumber = l2EpochNumber;
|
|
607
|
-
return Promise.resolve();
|
|
608
|
-
}
|
|
609
602
|
setBlockSynchedL1BlockNumber(l1BlockNumber) {
|
|
610
603
|
this.lastL1BlockNewBlocks = l1BlockNumber;
|
|
611
604
|
return Promise.resolve();
|
|
@@ -8,7 +8,6 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
8
8
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
9
9
|
*/ export class MockL2BlockSource {
|
|
10
10
|
l2Blocks = [];
|
|
11
|
-
provenEpochNumber = 0;
|
|
12
11
|
provenBlockNumber = 0;
|
|
13
12
|
log = createLogger('archiver:mock_l2_block_source');
|
|
14
13
|
async createBlocks(numBlocks) {
|
|
@@ -30,9 +29,6 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
30
29
|
setProvenBlockNumber(provenBlockNumber) {
|
|
31
30
|
this.provenBlockNumber = provenBlockNumber;
|
|
32
31
|
}
|
|
33
|
-
setProvenEpochNumber(provenEpochNumber) {
|
|
34
|
-
this.provenEpochNumber = provenEpochNumber;
|
|
35
|
-
}
|
|
36
32
|
/**
|
|
37
33
|
* Method to fetch the rollup contract address at the base-layer.
|
|
38
34
|
* @returns The rollup address.
|
|
@@ -54,9 +50,6 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
54
50
|
getProvenBlockNumber() {
|
|
55
51
|
return Promise.resolve(this.provenBlockNumber);
|
|
56
52
|
}
|
|
57
|
-
getProvenL2EpochNumber() {
|
|
58
|
-
return Promise.resolve(this.provenEpochNumber);
|
|
59
|
-
}
|
|
60
53
|
/**
|
|
61
54
|
* Gets an l2 block.
|
|
62
55
|
* @param number - The block number to return (inclusive).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.77.0-testnet-ignition.
|
|
3
|
+
"version": "0.77.0-testnet-ignition.28",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -64,18 +64,18 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/blob-lib": "0.77.0-testnet-ignition.
|
|
68
|
-
"@aztec/blob-sink": "0.77.0-testnet-ignition.
|
|
69
|
-
"@aztec/constants": "0.77.0-testnet-ignition.
|
|
70
|
-
"@aztec/ethereum": "0.77.0-testnet-ignition.
|
|
71
|
-
"@aztec/foundation": "0.77.0-testnet-ignition.
|
|
72
|
-
"@aztec/kv-store": "0.77.0-testnet-ignition.
|
|
73
|
-
"@aztec/l1-artifacts": "0.77.0-testnet-ignition.
|
|
74
|
-
"@aztec/noir-contracts.js": "0.77.0-testnet-ignition.
|
|
75
|
-
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.
|
|
76
|
-
"@aztec/protocol-contracts": "0.77.0-testnet-ignition.
|
|
77
|
-
"@aztec/stdlib": "0.77.0-testnet-ignition.
|
|
78
|
-
"@aztec/telemetry-client": "0.77.0-testnet-ignition.
|
|
67
|
+
"@aztec/blob-lib": "0.77.0-testnet-ignition.28",
|
|
68
|
+
"@aztec/blob-sink": "0.77.0-testnet-ignition.28",
|
|
69
|
+
"@aztec/constants": "0.77.0-testnet-ignition.28",
|
|
70
|
+
"@aztec/ethereum": "0.77.0-testnet-ignition.28",
|
|
71
|
+
"@aztec/foundation": "0.77.0-testnet-ignition.28",
|
|
72
|
+
"@aztec/kv-store": "0.77.0-testnet-ignition.28",
|
|
73
|
+
"@aztec/l1-artifacts": "0.77.0-testnet-ignition.28",
|
|
74
|
+
"@aztec/noir-contracts.js": "0.77.0-testnet-ignition.28",
|
|
75
|
+
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.28",
|
|
76
|
+
"@aztec/protocol-contracts": "0.77.0-testnet-ignition.28",
|
|
77
|
+
"@aztec/stdlib": "0.77.0-testnet-ignition.28",
|
|
78
|
+
"@aztec/telemetry-client": "0.77.0-testnet-ignition.28",
|
|
79
79
|
"debug": "^4.3.4",
|
|
80
80
|
"lodash.groupby": "^4.6.0",
|
|
81
81
|
"lodash.omit": "^4.5.0",
|
package/src/archiver/archiver.ts
CHANGED
|
@@ -388,14 +388,8 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
|
|
|
388
388
|
currentL1BlockNumber: bigint,
|
|
389
389
|
): Promise<{ provenBlockNumber: bigint }> {
|
|
390
390
|
const localPendingBlockNumber = BigInt(await this.getBlockNumber());
|
|
391
|
-
const [
|
|
392
|
-
|
|
393
|
-
provenArchive,
|
|
394
|
-
pendingBlockNumber,
|
|
395
|
-
pendingArchive,
|
|
396
|
-
archiveForLocalPendingBlockNumber,
|
|
397
|
-
provenEpochNumber,
|
|
398
|
-
] = await this.rollup.read.status([localPendingBlockNumber], { blockNumber: currentL1BlockNumber });
|
|
391
|
+
const [provenBlockNumber, provenArchive, pendingBlockNumber, pendingArchive, archiveForLocalPendingBlockNumber] =
|
|
392
|
+
await this.rollup.read.status([localPendingBlockNumber], { blockNumber: currentL1BlockNumber });
|
|
399
393
|
|
|
400
394
|
const updateProvenBlock = async () => {
|
|
401
395
|
const localBlockForDestinationProvenBlockNumber = await this.getBlock(Number(provenBlockNumber));
|
|
@@ -413,19 +407,11 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
|
|
|
413
407
|
localBlockForDestinationProvenBlockNumber &&
|
|
414
408
|
provenArchive === localBlockForDestinationProvenBlockNumber.archive.root.toString()
|
|
415
409
|
) {
|
|
416
|
-
const
|
|
417
|
-
|
|
418
|
-
this.store.getProvenL2BlockNumber(),
|
|
419
|
-
]);
|
|
420
|
-
if (
|
|
421
|
-
localProvenEpochNumber !== Number(provenEpochNumber) ||
|
|
422
|
-
localProvenBlockNumber !== Number(provenBlockNumber)
|
|
423
|
-
) {
|
|
410
|
+
const localProvenBlockNumber = await this.store.getProvenL2BlockNumber();
|
|
411
|
+
if (localProvenBlockNumber !== Number(provenBlockNumber)) {
|
|
424
412
|
await this.store.setProvenL2BlockNumber(Number(provenBlockNumber));
|
|
425
|
-
|
|
426
|
-
this.log.info(`Updated proven chain to block ${provenBlockNumber} (epoch ${provenEpochNumber})`, {
|
|
413
|
+
this.log.info(`Updated proven chain to block ${provenBlockNumber}`, {
|
|
427
414
|
provenBlockNumber,
|
|
428
|
-
provenEpochNumber,
|
|
429
415
|
});
|
|
430
416
|
}
|
|
431
417
|
}
|
|
@@ -783,10 +769,6 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
|
|
|
783
769
|
return this.store.getProvenL2BlockNumber();
|
|
784
770
|
}
|
|
785
771
|
|
|
786
|
-
public getProvenL2EpochNumber(): Promise<number | undefined> {
|
|
787
|
-
return this.store.getProvenL2EpochNumber();
|
|
788
|
-
}
|
|
789
|
-
|
|
790
772
|
/** Forcefully updates the last proven block number. Use for testing. */
|
|
791
773
|
public setProvenBlockNumber(blockNumber: number): Promise<void> {
|
|
792
774
|
return this.store.setProvenL2BlockNumber(blockNumber);
|
|
@@ -1160,15 +1142,9 @@ class ArchiverStoreHelper
|
|
|
1160
1142
|
getProvenL2BlockNumber(): Promise<number> {
|
|
1161
1143
|
return this.store.getProvenL2BlockNumber();
|
|
1162
1144
|
}
|
|
1163
|
-
getProvenL2EpochNumber(): Promise<number | undefined> {
|
|
1164
|
-
return this.store.getProvenL2EpochNumber();
|
|
1165
|
-
}
|
|
1166
1145
|
setProvenL2BlockNumber(l2BlockNumber: number): Promise<void> {
|
|
1167
1146
|
return this.store.setProvenL2BlockNumber(l2BlockNumber);
|
|
1168
1147
|
}
|
|
1169
|
-
setProvenL2EpochNumber(l2EpochNumber: number): Promise<void> {
|
|
1170
|
-
return this.store.setProvenL2EpochNumber(l2EpochNumber);
|
|
1171
|
-
}
|
|
1172
1148
|
setBlockSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void> {
|
|
1173
1149
|
return this.store.setBlockSynchedL1BlockNumber(l1BlockNumber);
|
|
1174
1150
|
}
|
|
@@ -174,24 +174,12 @@ export interface ArchiverDataStore {
|
|
|
174
174
|
*/
|
|
175
175
|
getProvenL2BlockNumber(): Promise<number>;
|
|
176
176
|
|
|
177
|
-
/**
|
|
178
|
-
* Gets the number of the latest proven L2 epoch.
|
|
179
|
-
* @returns The number of the latest proven L2 epoch.
|
|
180
|
-
*/
|
|
181
|
-
getProvenL2EpochNumber(): Promise<number | undefined>;
|
|
182
|
-
|
|
183
177
|
/**
|
|
184
178
|
* Stores the number of the latest proven L2 block processed.
|
|
185
179
|
* @param l2BlockNumber - The number of the latest proven L2 block processed.
|
|
186
180
|
*/
|
|
187
181
|
setProvenL2BlockNumber(l2BlockNumber: number): Promise<void>;
|
|
188
182
|
|
|
189
|
-
/**
|
|
190
|
-
* Stores the number of the latest proven L2 epoch.
|
|
191
|
-
* @param l2EpochNumber - The number of the latest proven L2 epoch.
|
|
192
|
-
*/
|
|
193
|
-
setProvenL2EpochNumber(l2EpochNumber: number): Promise<void>;
|
|
194
|
-
|
|
195
183
|
/**
|
|
196
184
|
* Stores the l1 block number that blocks have been synched until
|
|
197
185
|
* @param l1BlockNumber - The l1 block number
|
|
@@ -269,14 +269,6 @@ export class BlockStore {
|
|
|
269
269
|
return this.#lastProvenL2Block.set(blockNumber);
|
|
270
270
|
}
|
|
271
271
|
|
|
272
|
-
getProvenL2EpochNumber(): Promise<number | undefined> {
|
|
273
|
-
return this.#lastProvenL2Epoch.getAsync();
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
setProvenL2EpochNumber(epochNumber: number) {
|
|
277
|
-
return this.#lastProvenL2Epoch.set(epochNumber);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
272
|
#computeBlockRange(start: number, limit: number): Required<Pick<Range<number>, 'start' | 'limit'>> {
|
|
281
273
|
if (limit < 1) {
|
|
282
274
|
throw new Error(`Invalid limit: ${limit}`);
|
|
@@ -324,18 +324,10 @@ export class KVArchiverDataStore implements ArchiverDataStore {
|
|
|
324
324
|
return this.#blockStore.getProvenL2BlockNumber();
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
-
getProvenL2EpochNumber(): Promise<number | undefined> {
|
|
328
|
-
return this.#blockStore.getProvenL2EpochNumber();
|
|
329
|
-
}
|
|
330
|
-
|
|
331
327
|
async setProvenL2BlockNumber(blockNumber: number) {
|
|
332
328
|
await this.#blockStore.setProvenL2BlockNumber(blockNumber);
|
|
333
329
|
}
|
|
334
330
|
|
|
335
|
-
async setProvenL2EpochNumber(epochNumber: number) {
|
|
336
|
-
await this.#blockStore.setProvenL2EpochNumber(epochNumber);
|
|
337
|
-
}
|
|
338
|
-
|
|
339
331
|
async setBlockSynchedL1BlockNumber(l1BlockNumber: bigint) {
|
|
340
332
|
await this.#blockStore.setSynchedL1BlockNumber(l1BlockNumber);
|
|
341
333
|
}
|
|
@@ -758,20 +758,11 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
758
758
|
return Promise.resolve(this.lastProvenL2BlockNumber);
|
|
759
759
|
}
|
|
760
760
|
|
|
761
|
-
public getProvenL2EpochNumber(): Promise<number | undefined> {
|
|
762
|
-
return Promise.resolve(this.lastProvenL2EpochNumber);
|
|
763
|
-
}
|
|
764
|
-
|
|
765
761
|
public setProvenL2BlockNumber(l2BlockNumber: number): Promise<void> {
|
|
766
762
|
this.lastProvenL2BlockNumber = l2BlockNumber;
|
|
767
763
|
return Promise.resolve();
|
|
768
764
|
}
|
|
769
765
|
|
|
770
|
-
public setProvenL2EpochNumber(l2EpochNumber: number): Promise<void> {
|
|
771
|
-
this.lastProvenL2EpochNumber = l2EpochNumber;
|
|
772
|
-
return Promise.resolve();
|
|
773
|
-
}
|
|
774
|
-
|
|
775
766
|
setBlockSynchedL1BlockNumber(l1BlockNumber: bigint) {
|
|
776
767
|
this.lastL1BlockNewBlocks = l1BlockNumber;
|
|
777
768
|
return Promise.resolve();
|
|
@@ -11,7 +11,6 @@ import { type BlockHeader, TxHash, TxReceipt, TxStatus } from '@aztec/stdlib/tx'
|
|
|
11
11
|
export class MockL2BlockSource implements L2BlockSource {
|
|
12
12
|
protected l2Blocks: L2Block[] = [];
|
|
13
13
|
|
|
14
|
-
private provenEpochNumber: number = 0;
|
|
15
14
|
private provenBlockNumber: number = 0;
|
|
16
15
|
|
|
17
16
|
private log = createLogger('archiver:mock_l2_block_source');
|
|
@@ -40,10 +39,6 @@ export class MockL2BlockSource implements L2BlockSource {
|
|
|
40
39
|
this.provenBlockNumber = provenBlockNumber;
|
|
41
40
|
}
|
|
42
41
|
|
|
43
|
-
public setProvenEpochNumber(provenEpochNumber: number) {
|
|
44
|
-
this.provenEpochNumber = provenEpochNumber;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
42
|
/**
|
|
48
43
|
* Method to fetch the rollup contract address at the base-layer.
|
|
49
44
|
* @returns The rollup address.
|
|
@@ -72,10 +67,6 @@ export class MockL2BlockSource implements L2BlockSource {
|
|
|
72
67
|
return Promise.resolve(this.provenBlockNumber);
|
|
73
68
|
}
|
|
74
69
|
|
|
75
|
-
public getProvenL2EpochNumber(): Promise<number | undefined> {
|
|
76
|
-
return Promise.resolve(this.provenEpochNumber);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
70
|
/**
|
|
80
71
|
* Gets an l2 block.
|
|
81
72
|
* @param number - The block number to return (inclusive).
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
3
|
-
import { type ViemPublicClient } from '@aztec/ethereum';
|
|
4
|
-
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
6
|
-
import { type Logger } from '@aztec/foundation/log';
|
|
7
|
-
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
8
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
-
import { type InBlock, type L2Block, type L2BlockSource, type L2Tips, type NullifierWithBlockSource } from '@aztec/stdlib/block';
|
|
10
|
-
import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, type PublicFunction } from '@aztec/stdlib/contract';
|
|
11
|
-
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
12
|
-
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
13
|
-
import type { L2LogsSource } from '@aztec/stdlib/interfaces/server';
|
|
14
|
-
import { type LogFilter, type PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
15
|
-
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
16
|
-
import { type BlockHeader, TxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
17
|
-
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
18
|
-
import { EventEmitter } from 'events';
|
|
19
|
-
import type { ArchiverDataStore } from './archiver_store.js';
|
|
20
|
-
import type { ArchiverConfig } from './config.js';
|
|
21
|
-
import { ArchiverInstrumentation } from './instrumentation.js';
|
|
22
|
-
/**
|
|
23
|
-
* Helper interface to combine all sources this archiver implementation provides.
|
|
24
|
-
*/
|
|
25
|
-
export type ArchiveSource = L2BlockSource & L2LogsSource & ContractDataSource & L1ToL2MessageSource & NullifierWithBlockSource;
|
|
26
|
-
/**
|
|
27
|
-
* Pulls L2 blocks in a non-blocking manner and provides interface for their retrieval.
|
|
28
|
-
* Responsible for handling robust L1 polling so that other components do not need to
|
|
29
|
-
* concern themselves with it.
|
|
30
|
-
*/
|
|
31
|
-
export declare class Archiver extends EventEmitter implements ArchiveSource, Traceable {
|
|
32
|
-
private readonly publicClient;
|
|
33
|
-
private readonly l1Addresses;
|
|
34
|
-
readonly dataStore: ArchiverDataStore;
|
|
35
|
-
private readonly config;
|
|
36
|
-
private readonly blobSinkClient;
|
|
37
|
-
private readonly instrumentation;
|
|
38
|
-
private readonly l1constants;
|
|
39
|
-
private readonly log;
|
|
40
|
-
/**
|
|
41
|
-
* A promise in which we will be continually fetching new L2 blocks.
|
|
42
|
-
*/
|
|
43
|
-
private runningPromise?;
|
|
44
|
-
private rollup;
|
|
45
|
-
private inbox;
|
|
46
|
-
private store;
|
|
47
|
-
l1BlockNumber: bigint | undefined;
|
|
48
|
-
l1Timestamp: bigint | undefined;
|
|
49
|
-
readonly tracer: Tracer;
|
|
50
|
-
/**
|
|
51
|
-
* Creates a new instance of the Archiver.
|
|
52
|
-
* @param publicClient - A client for interacting with the Ethereum node.
|
|
53
|
-
* @param rollupAddress - Ethereum address of the rollup contract.
|
|
54
|
-
* @param inboxAddress - Ethereum address of the inbox contract.
|
|
55
|
-
* @param registryAddress - Ethereum address of the registry contract.
|
|
56
|
-
* @param pollingIntervalMs - The interval for polling for L1 logs (in milliseconds).
|
|
57
|
-
* @param store - An archiver data store for storage & retrieval of blocks, encrypted logs & contract data.
|
|
58
|
-
* @param log - A logger.
|
|
59
|
-
*/
|
|
60
|
-
constructor(publicClient: ViemPublicClient, l1Addresses: {
|
|
61
|
-
rollupAddress: EthAddress;
|
|
62
|
-
inboxAddress: EthAddress;
|
|
63
|
-
registryAddress: EthAddress;
|
|
64
|
-
}, dataStore: ArchiverDataStore, config: {
|
|
65
|
-
pollingIntervalMs: number;
|
|
66
|
-
batchSize: number;
|
|
67
|
-
}, blobSinkClient: BlobSinkClientInterface, instrumentation: ArchiverInstrumentation, l1constants: L1RollupConstants, log?: Logger);
|
|
68
|
-
/**
|
|
69
|
-
* Creates a new instance of the Archiver and blocks until it syncs from chain.
|
|
70
|
-
* @param config - The archiver's desired configuration.
|
|
71
|
-
* @param archiverStore - The backing store for the archiver.
|
|
72
|
-
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
73
|
-
* @returns - An instance of the archiver.
|
|
74
|
-
*/
|
|
75
|
-
static createAndSync(config: ArchiverConfig, archiverStore: ArchiverDataStore, deps: {
|
|
76
|
-
telemetry: TelemetryClient;
|
|
77
|
-
blobSinkClient: BlobSinkClientInterface;
|
|
78
|
-
}, blockUntilSynced?: boolean): Promise<Archiver>;
|
|
79
|
-
/**
|
|
80
|
-
* Starts sync process.
|
|
81
|
-
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
82
|
-
*/
|
|
83
|
-
start(blockUntilSynced: boolean): Promise<void>;
|
|
84
|
-
private syncSafe;
|
|
85
|
-
/**
|
|
86
|
-
* Fetches logs from L1 contracts and processes them.
|
|
87
|
-
*/
|
|
88
|
-
private sync;
|
|
89
|
-
/** Queries the rollup contract on whether a prune can be executed on the immediatenext L1 block. */
|
|
90
|
-
private canPrune;
|
|
91
|
-
/** Checks if there'd be a reorg for the next block submission and start pruning now. */
|
|
92
|
-
private handleEpochPrune;
|
|
93
|
-
private nextRange;
|
|
94
|
-
private handleL1ToL2Messages;
|
|
95
|
-
private handleL2blocks;
|
|
96
|
-
/**
|
|
97
|
-
* Stops the archiver.
|
|
98
|
-
* @returns A promise signalling completion of the stop process.
|
|
99
|
-
*/
|
|
100
|
-
stop(): Promise<void>;
|
|
101
|
-
getL1Constants(): Promise<L1RollupConstants>;
|
|
102
|
-
getRollupAddress(): Promise<EthAddress>;
|
|
103
|
-
getRegistryAddress(): Promise<EthAddress>;
|
|
104
|
-
getL1BlockNumber(): bigint;
|
|
105
|
-
getL1Timestamp(): bigint;
|
|
106
|
-
getL2SlotNumber(): Promise<bigint>;
|
|
107
|
-
getL2EpochNumber(): Promise<bigint>;
|
|
108
|
-
getBlocksForEpoch(epochNumber: bigint): Promise<L2Block[]>;
|
|
109
|
-
isEpochComplete(epochNumber: bigint): Promise<boolean>;
|
|
110
|
-
/**
|
|
111
|
-
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
112
|
-
* @param from - Number of the first block to return (inclusive).
|
|
113
|
-
* @param limit - The number of blocks to return.
|
|
114
|
-
* @param proven - If true, only return blocks that have been proven.
|
|
115
|
-
* @returns The requested L2 blocks.
|
|
116
|
-
*/
|
|
117
|
-
getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
|
|
118
|
-
/**
|
|
119
|
-
* Gets an l2 block.
|
|
120
|
-
* @param number - The block number to return.
|
|
121
|
-
* @returns The requested L2 block.
|
|
122
|
-
*/
|
|
123
|
-
getBlock(number: number): Promise<L2Block | undefined>;
|
|
124
|
-
getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
|
|
125
|
-
getTxEffect(txHash: TxHash): Promise<InBlock<TxEffect> | undefined>;
|
|
126
|
-
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
127
|
-
/**
|
|
128
|
-
* Gets the public function data for a contract.
|
|
129
|
-
* @param address - The contract address containing the function to fetch.
|
|
130
|
-
* @param selector - The function selector of the function to fetch.
|
|
131
|
-
* @returns The public function data (if found).
|
|
132
|
-
*/
|
|
133
|
-
getPublicFunction(address: AztecAddress, selector: FunctionSelector): Promise<PublicFunction | undefined>;
|
|
134
|
-
/**
|
|
135
|
-
* Retrieves all private logs from up to `limit` blocks, starting from the block number `from`.
|
|
136
|
-
* @param from - The block number from which to begin retrieving logs.
|
|
137
|
-
* @param limit - The maximum number of blocks to retrieve logs from.
|
|
138
|
-
* @returns An array of private logs from the specified range of blocks.
|
|
139
|
-
*/
|
|
140
|
-
getPrivateLogs(from: number, limit: number): Promise<PrivateLog[]>;
|
|
141
|
-
/**
|
|
142
|
-
* Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
|
|
143
|
-
* @param tags - The tags to filter the logs by.
|
|
144
|
-
* @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
|
|
145
|
-
* that tag.
|
|
146
|
-
*/
|
|
147
|
-
getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
|
|
148
|
-
/**
|
|
149
|
-
* Returns the provided nullifier indexes scoped to the block
|
|
150
|
-
* they were first included in, or undefined if they're not present in the tree
|
|
151
|
-
* @param blockNumber Max block number to search for the nullifiers
|
|
152
|
-
* @param nullifiers Nullifiers to get
|
|
153
|
-
* @returns The block scoped indexes of the provided nullifiers, or undefined if the nullifier doesn't exist in the tree
|
|
154
|
-
*/
|
|
155
|
-
findNullifiersIndexesWithBlock(blockNumber: number, nullifiers: Fr[]): Promise<(InBlock<bigint> | undefined)[]>;
|
|
156
|
-
/**
|
|
157
|
-
* Gets public logs based on the provided filter.
|
|
158
|
-
* @param filter - The filter to apply to the logs.
|
|
159
|
-
* @returns The requested logs.
|
|
160
|
-
*/
|
|
161
|
-
getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse>;
|
|
162
|
-
/**
|
|
163
|
-
* Gets contract class logs based on the provided filter.
|
|
164
|
-
* @param filter - The filter to apply to the logs.
|
|
165
|
-
* @returns The requested logs.
|
|
166
|
-
*/
|
|
167
|
-
getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
|
|
168
|
-
/**
|
|
169
|
-
* Gets the number of the latest L2 block processed by the block source implementation.
|
|
170
|
-
* @returns The number of the latest L2 block processed by the block source implementation.
|
|
171
|
-
*/
|
|
172
|
-
getBlockNumber(): Promise<number>;
|
|
173
|
-
getProvenBlockNumber(): Promise<number>;
|
|
174
|
-
getProvenL2EpochNumber(): Promise<number | undefined>;
|
|
175
|
-
/** Forcefully updates the last proven block number. Use for testing. */
|
|
176
|
-
setProvenBlockNumber(blockNumber: number): Promise<void>;
|
|
177
|
-
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
178
|
-
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
179
|
-
getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
180
|
-
/**
|
|
181
|
-
* Gets L1 to L2 message (to be) included in a given block.
|
|
182
|
-
* @param blockNumber - L2 block number to get messages for.
|
|
183
|
-
* @returns The L1 to L2 messages/leaves of the messages subtree (throws if not found).
|
|
184
|
-
*/
|
|
185
|
-
getL1ToL2Messages(blockNumber: bigint): Promise<Fr[]>;
|
|
186
|
-
/**
|
|
187
|
-
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
188
|
-
* @param l1ToL2Message - The L1 to L2 message.
|
|
189
|
-
* @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
|
|
190
|
-
*/
|
|
191
|
-
getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
|
|
192
|
-
getContractClassIds(): Promise<Fr[]>;
|
|
193
|
-
addContractClass(contractClass: ContractClassPublic): Promise<void>;
|
|
194
|
-
registerContractFunctionSignatures(address: AztecAddress, signatures: string[]): Promise<void>;
|
|
195
|
-
getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
196
|
-
getL2Tips(): Promise<L2Tips>;
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=archiver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
|