@aztec/archiver 0.0.1-commit.03f7ef2 → 0.0.1-commit.1142ef1
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/README.md +14 -14
- package/dest/archiver/archiver.d.ts +13 -10
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +514 -57
- package/dest/archiver/archiver_store.d.ts +11 -4
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +16 -36
- package/dest/archiver/config.js +2 -2
- package/dest/archiver/instrumentation.d.ts +1 -1
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/instrumentation.js +15 -63
- package/dest/archiver/kv_archiver_store/block_store.d.ts +11 -4
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +22 -3
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +5 -4
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +3 -0
- package/dest/archiver/kv_archiver_store/log_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +11 -14
- package/dest/archiver/l1/calldata_retriever.d.ts +2 -2
- package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -1
- package/dest/archiver/l1/calldata_retriever.js +2 -2
- package/dest/archiver/l1/validate_trace.js +1 -1
- package/dest/archiver/validation.d.ts +4 -4
- package/dest/archiver/validation.d.ts.map +1 -1
- package/dest/archiver/validation.js +1 -1
- package/dest/test/mock_l1_to_l2_message_source.d.ts +2 -2
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.js +12 -3
- package/dest/test/mock_l2_block_source.d.ts +8 -4
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +65 -19
- package/package.json +13 -13
- package/src/archiver/archiver.ts +179 -71
- package/src/archiver/archiver_store.ts +11 -3
- package/src/archiver/archiver_store_test_suite.ts +22 -43
- package/src/archiver/config.ts +2 -2
- package/src/archiver/instrumentation.ts +14 -63
- package/src/archiver/kv_archiver_store/block_store.ts +35 -7
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +7 -3
- package/src/archiver/kv_archiver_store/log_store.ts +18 -24
- package/src/archiver/l1/calldata_retriever.ts +2 -2
- package/src/archiver/l1/validate_trace.ts +1 -1
- package/src/archiver/validation.ts +6 -6
- package/src/test/mock_l1_to_l2_message_source.ts +10 -4
- package/src/test/mock_l2_block_source.ts +76 -18
|
@@ -8,13 +8,14 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
8
8
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
9
9
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
10
|
import {
|
|
11
|
+
CheckpointedL2Block,
|
|
11
12
|
L2Block,
|
|
12
13
|
L2BlockHash,
|
|
13
14
|
L2BlockNew,
|
|
14
15
|
type L2BlockSource,
|
|
15
16
|
type L2Tips,
|
|
16
17
|
PublishedL2Block,
|
|
17
|
-
type
|
|
18
|
+
type ValidateCheckpointResult,
|
|
18
19
|
} from '@aztec/stdlib/block';
|
|
19
20
|
import { type Checkpoint, L1PublishedData } from '@aztec/stdlib/checkpoint';
|
|
20
21
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
@@ -30,6 +31,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
30
31
|
|
|
31
32
|
private provenBlockNumber: number = 0;
|
|
32
33
|
private finalizedBlockNumber: number = 0;
|
|
34
|
+
private checkpointedBlockNumber: number = 0;
|
|
33
35
|
|
|
34
36
|
private log = createLogger('archiver:mock_l2_block_source');
|
|
35
37
|
|
|
@@ -64,6 +66,10 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
64
66
|
this.finalizedBlockNumber = finalizedBlockNumber;
|
|
65
67
|
}
|
|
66
68
|
|
|
69
|
+
public setCheckpointedBlockNumber(checkpointedBlockNumber: number) {
|
|
70
|
+
this.checkpointedBlockNumber = checkpointedBlockNumber;
|
|
71
|
+
}
|
|
72
|
+
|
|
67
73
|
/**
|
|
68
74
|
* Method to fetch the rollup contract address at the base-layer.
|
|
69
75
|
* @returns The rollup address.
|
|
@@ -92,9 +98,40 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
92
98
|
return Promise.resolve(BlockNumber(this.provenBlockNumber));
|
|
93
99
|
}
|
|
94
100
|
|
|
95
|
-
public getCheckpointedBlock(
|
|
96
|
-
|
|
97
|
-
|
|
101
|
+
public getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined> {
|
|
102
|
+
if (number > this.checkpointedBlockNumber) {
|
|
103
|
+
return Promise.resolve(undefined);
|
|
104
|
+
}
|
|
105
|
+
const block = this.l2Blocks[number - 1];
|
|
106
|
+
if (!block) {
|
|
107
|
+
return Promise.resolve(undefined);
|
|
108
|
+
}
|
|
109
|
+
const checkpointedBlock = new CheckpointedL2Block(
|
|
110
|
+
CheckpointNumber(number),
|
|
111
|
+
block.toL2Block(),
|
|
112
|
+
new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`),
|
|
113
|
+
[],
|
|
114
|
+
);
|
|
115
|
+
return Promise.resolve(checkpointedBlock);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
public async getCheckpointedBlocks(
|
|
119
|
+
from: BlockNumber,
|
|
120
|
+
limit: number,
|
|
121
|
+
_proven?: boolean,
|
|
122
|
+
): Promise<CheckpointedL2Block[]> {
|
|
123
|
+
const result: CheckpointedL2Block[] = [];
|
|
124
|
+
for (let i = 0; i < limit; i++) {
|
|
125
|
+
const blockNum = from + i;
|
|
126
|
+
if (blockNum > this.checkpointedBlockNumber) {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
const block = await this.getCheckpointedBlock(BlockNumber(blockNum));
|
|
130
|
+
if (block) {
|
|
131
|
+
result.push(block);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
98
135
|
}
|
|
99
136
|
|
|
100
137
|
/**
|
|
@@ -151,6 +188,11 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
151
188
|
);
|
|
152
189
|
}
|
|
153
190
|
|
|
191
|
+
async getL2BlocksNew(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]> {
|
|
192
|
+
const blocks = await this.getBlocks(from, limit, proven);
|
|
193
|
+
return blocks.map(x => x.toL2Block());
|
|
194
|
+
}
|
|
195
|
+
|
|
154
196
|
public async getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
|
|
155
197
|
for (const block of this.l2Blocks) {
|
|
156
198
|
const hash = await block.hash();
|
|
@@ -263,29 +305,45 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
263
305
|
}
|
|
264
306
|
|
|
265
307
|
async getL2Tips(): Promise<L2Tips> {
|
|
266
|
-
const [latest, proven, finalized] = [
|
|
308
|
+
const [latest, proven, finalized, checkpointed] = [
|
|
267
309
|
await this.getBlockNumber(),
|
|
268
310
|
await this.getProvenBlockNumber(),
|
|
269
311
|
this.finalizedBlockNumber,
|
|
312
|
+
this.checkpointedBlockNumber,
|
|
270
313
|
] as const;
|
|
271
314
|
|
|
272
315
|
const latestBlock = this.l2Blocks[latest - 1];
|
|
273
316
|
const provenBlock = this.l2Blocks[proven - 1];
|
|
274
317
|
const finalizedBlock = this.l2Blocks[finalized - 1];
|
|
318
|
+
const checkpointedBlock = this.l2Blocks[checkpointed - 1];
|
|
319
|
+
|
|
320
|
+
const latestBlockId = {
|
|
321
|
+
number: BlockNumber(latest),
|
|
322
|
+
hash: (await latestBlock?.hash())?.toString(),
|
|
323
|
+
};
|
|
324
|
+
const provenBlockId = {
|
|
325
|
+
number: BlockNumber(proven),
|
|
326
|
+
hash: (await provenBlock?.hash())?.toString(),
|
|
327
|
+
};
|
|
328
|
+
const finalizedBlockId = {
|
|
329
|
+
number: BlockNumber(finalized),
|
|
330
|
+
hash: (await finalizedBlock?.hash())?.toString(),
|
|
331
|
+
};
|
|
332
|
+
const checkpointedBlockId = {
|
|
333
|
+
number: BlockNumber(checkpointed),
|
|
334
|
+
hash: (await checkpointedBlock?.hash())?.toString(),
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
const makeTipId = (blockId: typeof latestBlockId) => ({
|
|
338
|
+
block: blockId,
|
|
339
|
+
checkpoint: { number: CheckpointNumber(blockId.number), hash: blockId.hash },
|
|
340
|
+
});
|
|
275
341
|
|
|
276
342
|
return {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
proven: {
|
|
282
|
-
number: BlockNumber(proven),
|
|
283
|
-
hash: (await provenBlock?.hash())?.toString(),
|
|
284
|
-
},
|
|
285
|
-
finalized: {
|
|
286
|
-
number: BlockNumber(finalized),
|
|
287
|
-
hash: (await finalizedBlock?.hash())?.toString(),
|
|
288
|
-
},
|
|
343
|
+
proposed: latestBlockId,
|
|
344
|
+
checkpointed: makeTipId(checkpointedBlockId),
|
|
345
|
+
proven: makeTipId(provenBlockId),
|
|
346
|
+
finalized: makeTipId(finalizedBlockId),
|
|
289
347
|
};
|
|
290
348
|
}
|
|
291
349
|
|
|
@@ -363,7 +421,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
363
421
|
return Promise.resolve(false);
|
|
364
422
|
}
|
|
365
423
|
|
|
366
|
-
getPendingChainValidationStatus(): Promise<
|
|
424
|
+
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult> {
|
|
367
425
|
return Promise.resolve({ valid: true });
|
|
368
426
|
}
|
|
369
427
|
}
|