@aztec/archiver 0.0.1-commit.d1f2d6c → 0.0.1-commit.d431d1c
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 +0 -9
- package/dest/archiver.d.ts +3 -3
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +12 -12
- package/dest/factory.d.ts +2 -3
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +3 -5
- package/dest/l1/bin/retrieve-calldata.js +2 -2
- package/dest/l1/data_retrieval.d.ts +1 -1
- package/dest/l1/data_retrieval.d.ts.map +1 -1
- package/dest/l1/data_retrieval.js +2 -2
- package/dest/modules/data_source_base.d.ts +17 -16
- package/dest/modules/data_source_base.d.ts.map +1 -1
- package/dest/modules/data_source_base.js +52 -21
- package/dest/modules/data_store_updater.d.ts +5 -5
- package/dest/modules/data_store_updater.d.ts.map +1 -1
- package/dest/modules/instrumentation.d.ts +3 -3
- package/dest/modules/instrumentation.d.ts.map +1 -1
- package/dest/store/block_store.d.ts +11 -21
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +5 -34
- package/dest/store/kv_archiver_store.d.ts +13 -16
- package/dest/store/kv_archiver_store.d.ts.map +1 -1
- package/dest/store/kv_archiver_store.js +2 -5
- package/dest/store/log_store.d.ts +4 -4
- package/dest/store/log_store.d.ts.map +1 -1
- package/dest/test/fake_l1_state.d.ts +4 -4
- package/dest/test/fake_l1_state.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.d.ts +18 -18
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +38 -37
- package/dest/test/mock_structs.js +4 -4
- package/package.json +13 -13
- package/src/archiver.ts +18 -15
- package/src/factory.ts +2 -4
- package/src/l1/bin/retrieve-calldata.ts +2 -7
- package/src/l1/data_retrieval.ts +3 -3
- package/src/modules/data_source_base.ts +76 -25
- package/src/modules/data_store_updater.ts +7 -7
- package/src/modules/instrumentation.ts +2 -2
- package/src/store/block_store.ts +21 -59
- package/src/store/kv_archiver_store.ts +12 -19
- package/src/store/log_store.ts +8 -8
- package/src/test/fake_l1_state.ts +2 -2
- package/src/test/mock_l2_block_source.ts +59 -49
- package/src/test/mock_structs.ts +4 -4
|
@@ -3,7 +3,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
3
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
4
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
5
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
|
-
import { CheckpointedL2Block,
|
|
6
|
+
import { CheckpointedL2Block, L2BlockHash, L2BlockNew, type L2BlockSource, type L2Tips, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
7
7
|
import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
8
8
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
9
9
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
@@ -13,13 +13,13 @@ import type { UInt64 } from '@aztec/stdlib/types';
|
|
|
13
13
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
14
14
|
*/
|
|
15
15
|
export declare class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
16
|
-
protected l2Blocks:
|
|
16
|
+
protected l2Blocks: L2BlockNew[];
|
|
17
17
|
private provenBlockNumber;
|
|
18
18
|
private finalizedBlockNumber;
|
|
19
19
|
private checkpointedBlockNumber;
|
|
20
20
|
private log;
|
|
21
21
|
createBlocks(numBlocks: number): Promise<void>;
|
|
22
|
-
addBlocks(blocks:
|
|
22
|
+
addBlocks(blocks: L2BlockNew[]): void;
|
|
23
23
|
removeBlocks(numBlocks: number): void;
|
|
24
24
|
setProvenBlockNumber(provenBlockNumber: number): void;
|
|
25
25
|
setFinalizedBlockNumber(finalizedBlockNumber: number): void;
|
|
@@ -40,42 +40,42 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
40
40
|
*/
|
|
41
41
|
getBlockNumber(): Promise<BlockNumber>;
|
|
42
42
|
getProvenBlockNumber(): Promise<BlockNumber>;
|
|
43
|
-
getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
|
|
44
|
-
getFinalizedL2BlockNumber(): Promise<BlockNumber>;
|
|
45
43
|
getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
|
|
46
|
-
getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
|
|
44
|
+
getCheckpointedBlocks(from: BlockNumber, limit: number, _proven?: boolean): Promise<CheckpointedL2Block[]>;
|
|
47
45
|
/**
|
|
48
46
|
* Gets an l2 block.
|
|
49
47
|
* @param number - The block number to return (inclusive).
|
|
50
48
|
* @returns The requested L2 block.
|
|
51
49
|
*/
|
|
52
|
-
getBlock(number: number): Promise<
|
|
50
|
+
getBlock(number: number): Promise<L2BlockNew | undefined>;
|
|
53
51
|
/**
|
|
54
52
|
* Gets an L2 block (new format).
|
|
55
53
|
* @param number - The block number to return.
|
|
56
54
|
* @returns The requested L2 block.
|
|
57
55
|
*/
|
|
58
|
-
|
|
56
|
+
getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined>;
|
|
59
57
|
/**
|
|
60
58
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
61
59
|
* @param from - Number of the first block to return (inclusive).
|
|
62
60
|
* @param limit - The maximum number of blocks to return.
|
|
63
61
|
* @returns The requested mocked L2 blocks.
|
|
64
62
|
*/
|
|
65
|
-
getBlocks(from: number, limit: number): Promise<
|
|
66
|
-
|
|
63
|
+
getBlocks(from: number, limit: number, proven?: boolean): Promise<L2BlockNew[]>;
|
|
64
|
+
getPublishedCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
|
|
67
65
|
getCheckpointByArchive(archive: Fr): Promise<Checkpoint | undefined>;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
getPublishedBlocks(from: number, limit: number, proven?: boolean): Promise<CheckpointedL2Block[]>;
|
|
67
|
+
getL2BlocksNew(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]>;
|
|
68
|
+
getPublishedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
69
|
+
getPublishedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
70
|
+
getL2BlockNewByHash(blockHash: Fr): Promise<L2BlockNew | undefined>;
|
|
71
|
+
getL2BlockNewByArchive(archive: Fr): Promise<L2BlockNew | undefined>;
|
|
72
72
|
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
73
73
|
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
74
74
|
getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
|
|
75
75
|
getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
|
|
76
|
-
|
|
77
|
-
getBlocksForSlot(slotNumber: SlotNumber): Promise<
|
|
78
|
-
|
|
76
|
+
getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2BlockNew[]>;
|
|
77
|
+
getBlocksForSlot(slotNumber: SlotNumber): Promise<L2BlockNew[]>;
|
|
78
|
+
getBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
|
|
79
79
|
/**
|
|
80
80
|
* Gets a tx effect.
|
|
81
81
|
* @param txHash - The hash of the tx corresponding to the tx effect.
|
|
@@ -122,4 +122,4 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
122
122
|
isPendingChainInvalid(): Promise<boolean>;
|
|
123
123
|
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
|
|
124
124
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxVQUFVLEVBQ1YsS0FBSyxhQUFhLEVBQ2xCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ILE9BQU8sRUFBMEIsS0FBSyxpQkFBaUIsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxEOztHQUVHO0FBQ0gscUJBQWEsaUJBQWtCLFlBQVcsYUFBYSxFQUFFLGtCQUFrQjtJQUN6RSxTQUFTLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFNO0lBRXRDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBYTtJQUN0QyxPQUFPLENBQUMsb0JBQW9CLENBQWE7SUFDekMsT0FBTyxDQUFDLHVCQUF1QixDQUFhO0lBRTVDLE9BQU8sQ0FBQyxHQUFHLENBQWlEO0lBRS9DLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxpQkFRMUM7SUFFTSxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUdwQztJQUVNLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxRQUdwQztJQUVNLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLE1BQU0sUUFFcEQ7SUFFTSx1QkFBdUIsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLFFBSzFEO0lBRU0sMEJBQTBCLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxRQUVoRTtJQUVEOzs7T0FHRztJQUNILGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFdEM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRXhDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyx5QkFFcEI7SUFFTSxvQkFBb0IseUJBRTFCO0lBRU0sb0JBQW9CLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBZXpGO0lBRVkscUJBQXFCLENBQ2hDLElBQUksRUFBRSxXQUFXLEVBQ2pCLEtBQUssRUFBRSxNQUFNLEVBQ2IsT0FBTyxDQUFDLEVBQUUsT0FBTyxHQUNoQixPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQWFoQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUcvRDtJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUd6RTtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBTXJGO0lBRU0sdUJBQXVCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLGtDQWVuRTtJQUVZLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FVaEY7SUFFTSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBY3ZHO0lBRUQsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBR3hGO0lBRVksdUJBQXVCLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBYTVGO0lBRU0sMEJBQTBCLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBYXZGO0lBRVksbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQVEvRTtJQUVNLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FHMUU7SUFFWSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBUWpGO0lBRU0sdUJBQXVCLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUc1RTtJQUVELGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUUxRTtJQUVELHNCQUFzQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBZ0J0RTtJQUVELGlCQUFpQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBUWpFO0lBRUQsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FHOUQ7SUFFSyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUc5RTtJQUVEOzs7O09BSUc7SUFDVSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU07Ozs7O21CQWN0QztJQUVEOzs7O09BSUc7SUFDVSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBZ0IvRTtJQUVLLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBeUNqQztJQUVELGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FFdkM7SUFFRCxlQUFlLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUVyQztJQUVELGVBQWUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFM0Q7SUFFRCxjQUFjLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBRTNDO0lBRUQsZ0JBQWdCLElBQUksT0FBTyxDQUFDO1FBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQUV0RDtJQUVELGNBQWMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRWhDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHNUI7SUFFRDs7O09BR0c7SUFDSSxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUczQjtJQUVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxDQUVsRTtJQUVELHFCQUFxQixDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FFdEQ7SUFFRCxXQUFXLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxDQUV6RztJQUVELG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUVuQztJQUVELG9CQUFvQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRXJHO0lBRUQsa0NBQWtDLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFdkU7SUFFRCxhQUFhLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU3QjtJQUVELHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFeEM7SUFFRCwrQkFBK0IsSUFBSSxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FFbkU7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEzG,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,
|
|
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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"}
|
|
@@ -5,10 +5,10 @@ import { Buffer32 } from '@aztec/foundation/buffer';
|
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
7
|
import { createLogger } from '@aztec/foundation/log';
|
|
8
|
-
import { CheckpointedL2Block,
|
|
8
|
+
import { CheckpointedL2Block, L2BlockHash, L2BlockNew } from '@aztec/stdlib/block';
|
|
9
9
|
import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
10
10
|
import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
11
|
-
import {
|
|
11
|
+
import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
12
12
|
/**
|
|
13
13
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
14
14
|
*/ export class MockL2BlockSource {
|
|
@@ -20,7 +20,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
20
20
|
async createBlocks(numBlocks) {
|
|
21
21
|
for(let i = 0; i < numBlocks; i++){
|
|
22
22
|
const blockNum = this.l2Blocks.length + 1;
|
|
23
|
-
const block = await
|
|
23
|
+
const block = await L2BlockNew.random(BlockNumber(blockNum), {
|
|
24
24
|
slotNumber: SlotNumber(blockNum)
|
|
25
25
|
});
|
|
26
26
|
this.l2Blocks.push(block);
|
|
@@ -68,12 +68,6 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
68
68
|
getProvenBlockNumber() {
|
|
69
69
|
return Promise.resolve(BlockNumber(this.provenBlockNumber));
|
|
70
70
|
}
|
|
71
|
-
getCheckpointedL2BlockNumber() {
|
|
72
|
-
return Promise.resolve(BlockNumber(this.checkpointedBlockNumber));
|
|
73
|
-
}
|
|
74
|
-
getFinalizedL2BlockNumber() {
|
|
75
|
-
return Promise.resolve(BlockNumber(this.finalizedBlockNumber));
|
|
76
|
-
}
|
|
77
71
|
getCheckpointedBlock(number) {
|
|
78
72
|
if (number > this.checkpointedBlockNumber) {
|
|
79
73
|
return Promise.resolve(undefined);
|
|
@@ -82,10 +76,10 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
82
76
|
if (!block) {
|
|
83
77
|
return Promise.resolve(undefined);
|
|
84
78
|
}
|
|
85
|
-
const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber
|
|
79
|
+
const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber(number), block, new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`), []);
|
|
86
80
|
return Promise.resolve(checkpointedBlock);
|
|
87
81
|
}
|
|
88
|
-
async getCheckpointedBlocks(from, limit) {
|
|
82
|
+
async getCheckpointedBlocks(from, limit, _proven) {
|
|
89
83
|
const result = [];
|
|
90
84
|
for(let i = 0; i < limit; i++){
|
|
91
85
|
const blockNum = from + i;
|
|
@@ -111,7 +105,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
111
105
|
* Gets an L2 block (new format).
|
|
112
106
|
* @param number - The block number to return.
|
|
113
107
|
* @returns The requested L2 block.
|
|
114
|
-
*/
|
|
108
|
+
*/ getL2BlockNew(number) {
|
|
115
109
|
const block = this.l2Blocks[number - 1];
|
|
116
110
|
return Promise.resolve(block);
|
|
117
111
|
}
|
|
@@ -120,14 +114,14 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
120
114
|
* @param from - Number of the first block to return (inclusive).
|
|
121
115
|
* @param limit - The maximum number of blocks to return.
|
|
122
116
|
* @returns The requested mocked L2 blocks.
|
|
123
|
-
*/ getBlocks(from, limit) {
|
|
124
|
-
return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit));
|
|
117
|
+
*/ getBlocks(from, limit, proven) {
|
|
118
|
+
return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
|
|
125
119
|
}
|
|
126
|
-
|
|
120
|
+
getPublishedCheckpoints(from, limit) {
|
|
127
121
|
// TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
|
|
128
122
|
const blocks = this.l2Blocks.slice(from - 1, from - 1 + limit);
|
|
129
123
|
return Promise.all(blocks.map(async (block)=>{
|
|
130
|
-
// Create a checkpoint from the block - manually construct since
|
|
124
|
+
// Create a checkpoint from the block - manually construct since L2BlockNew doesn't have toCheckpoint()
|
|
131
125
|
const checkpoint = await Checkpoint.random(block.checkpointNumber, {
|
|
132
126
|
numBlocks: 1
|
|
133
127
|
});
|
|
@@ -143,7 +137,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
143
137
|
if (!block) {
|
|
144
138
|
return undefined;
|
|
145
139
|
}
|
|
146
|
-
// Create a checkpoint from the block - manually construct since
|
|
140
|
+
// Create a checkpoint from the block - manually construct since L2BlockNew doesn't have toCheckpoint()
|
|
147
141
|
const checkpoint = await Checkpoint.random(block.checkpointNumber, {
|
|
148
142
|
numBlocks: 1
|
|
149
143
|
});
|
|
@@ -152,12 +146,25 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
152
146
|
];
|
|
153
147
|
return checkpoint;
|
|
154
148
|
}
|
|
155
|
-
|
|
149
|
+
getPublishedBlocks(from, limit, proven) {
|
|
150
|
+
const blocks = this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber);
|
|
151
|
+
return Promise.resolve(blocks.map((block)=>CheckpointedL2Block.fromFields({
|
|
152
|
+
checkpointNumber: CheckpointNumber(block.number),
|
|
153
|
+
block,
|
|
154
|
+
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
155
|
+
attestations: []
|
|
156
|
+
})));
|
|
157
|
+
}
|
|
158
|
+
getL2BlocksNew(from, limit, proven) {
|
|
159
|
+
// getBlocks already returns L2BlockNew[], so just return directly
|
|
160
|
+
return this.getBlocks(from, limit, proven);
|
|
161
|
+
}
|
|
162
|
+
async getPublishedBlockByHash(blockHash) {
|
|
156
163
|
for (const block of this.l2Blocks){
|
|
157
164
|
const hash = await block.hash();
|
|
158
165
|
if (hash.equals(blockHash)) {
|
|
159
166
|
return CheckpointedL2Block.fromFields({
|
|
160
|
-
checkpointNumber: CheckpointNumber
|
|
167
|
+
checkpointNumber: CheckpointNumber(block.number),
|
|
161
168
|
block,
|
|
162
169
|
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
163
170
|
attestations: []
|
|
@@ -166,19 +173,19 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
166
173
|
}
|
|
167
174
|
return undefined;
|
|
168
175
|
}
|
|
169
|
-
|
|
176
|
+
getPublishedBlockByArchive(archive) {
|
|
170
177
|
const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
|
|
171
178
|
if (!block) {
|
|
172
179
|
return Promise.resolve(undefined);
|
|
173
180
|
}
|
|
174
181
|
return Promise.resolve(CheckpointedL2Block.fromFields({
|
|
175
|
-
checkpointNumber: CheckpointNumber
|
|
182
|
+
checkpointNumber: CheckpointNumber(block.number),
|
|
176
183
|
block,
|
|
177
184
|
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
178
185
|
attestations: []
|
|
179
186
|
}));
|
|
180
187
|
}
|
|
181
|
-
async
|
|
188
|
+
async getL2BlockNewByHash(blockHash) {
|
|
182
189
|
for (const block of this.l2Blocks){
|
|
183
190
|
const hash = await block.hash();
|
|
184
191
|
if (hash.equals(blockHash)) {
|
|
@@ -187,7 +194,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
187
194
|
}
|
|
188
195
|
return undefined;
|
|
189
196
|
}
|
|
190
|
-
|
|
197
|
+
getL2BlockNewByArchive(archive) {
|
|
191
198
|
const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
|
|
192
199
|
return Promise.resolve(block);
|
|
193
200
|
}
|
|
@@ -217,7 +224,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
217
224
|
const slot = b.header.globalVariables.slotNumber;
|
|
218
225
|
return slot >= start && slot <= end;
|
|
219
226
|
});
|
|
220
|
-
// Create checkpoints from blocks - manually construct since
|
|
227
|
+
// Create checkpoints from blocks - manually construct since L2BlockNew doesn't have toCheckpoint()
|
|
221
228
|
return Promise.all(blocks.map(async (block)=>{
|
|
222
229
|
const checkpoint = await Checkpoint.random(block.checkpointNumber, {
|
|
223
230
|
numBlocks: 1
|
|
@@ -228,7 +235,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
228
235
|
return checkpoint;
|
|
229
236
|
}));
|
|
230
237
|
}
|
|
231
|
-
|
|
238
|
+
getBlocksForEpoch(epochNumber) {
|
|
232
239
|
const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
|
|
233
240
|
const [start, end] = getSlotRangeForEpoch(epochNumber, {
|
|
234
241
|
epochDuration
|
|
@@ -237,20 +244,15 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
237
244
|
const slot = b.header.globalVariables.slotNumber;
|
|
238
245
|
return slot >= start && slot <= end;
|
|
239
246
|
});
|
|
240
|
-
return Promise.resolve(blocks
|
|
241
|
-
checkpointNumber: CheckpointNumber.fromBlockNumber(block.number),
|
|
242
|
-
block,
|
|
243
|
-
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
244
|
-
attestations: []
|
|
245
|
-
})));
|
|
247
|
+
return Promise.resolve(blocks);
|
|
246
248
|
}
|
|
247
249
|
getBlocksForSlot(slotNumber) {
|
|
248
250
|
const blocks = this.l2Blocks.filter((b)=>b.header.globalVariables.slotNumber === slotNumber);
|
|
249
251
|
return Promise.resolve(blocks);
|
|
250
252
|
}
|
|
251
|
-
async
|
|
252
|
-
const
|
|
253
|
-
return
|
|
253
|
+
async getBlockHeadersForEpoch(epochNumber) {
|
|
254
|
+
const blocks = await this.getBlocksForEpoch(epochNumber);
|
|
255
|
+
return blocks.map((b)=>b.header);
|
|
254
256
|
}
|
|
255
257
|
/**
|
|
256
258
|
* Gets a tx effect.
|
|
@@ -280,8 +282,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
280
282
|
for (const block of this.l2Blocks){
|
|
281
283
|
for (const txEffect of block.body.txEffects){
|
|
282
284
|
if (txEffect.txHash.equals(txHash)) {
|
|
283
|
-
|
|
284
|
-
return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), L2BlockHash.fromField(await block.hash()), block.number);
|
|
285
|
+
return new TxReceipt(txHash, TxStatus.SUCCESS, '', txEffect.transactionFee.toBigInt(), L2BlockHash.fromField(await block.hash()), block.number);
|
|
285
286
|
}
|
|
286
287
|
}
|
|
287
288
|
}
|
|
@@ -317,7 +318,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
317
318
|
const makeTipId = (blockId)=>({
|
|
318
319
|
block: blockId,
|
|
319
320
|
checkpoint: {
|
|
320
|
-
number: CheckpointNumber
|
|
321
|
+
number: CheckpointNumber(blockId.number),
|
|
321
322
|
hash: blockId.hash
|
|
322
323
|
}
|
|
323
324
|
});
|
|
@@ -6,7 +6,7 @@ import { times, timesParallel } from '@aztec/foundation/collection';
|
|
|
6
6
|
import { randomBigInt, randomInt } from '@aztec/foundation/crypto/random';
|
|
7
7
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
8
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
-
import { CommitteeAttestation,
|
|
9
|
+
import { CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
|
|
10
10
|
import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
11
11
|
import { PrivateLog, PublicLog, SiloedTag, Tag } from '@aztec/stdlib/logs';
|
|
12
12
|
import { InboxLeaf } from '@aztec/stdlib/messaging';
|
|
@@ -147,8 +147,8 @@ export function makeInboxMessages(count, opts = {}) {
|
|
|
147
147
|
}
|
|
148
148
|
/** Creates a checkpoint with specified logs on each tx effect. */ export async function makeCheckpointWithLogs(blockNumber, options = {}) {
|
|
149
149
|
const { previousArchive, numTxsPerBlock = 4, privateLogs, publicLogs } = options;
|
|
150
|
-
const block = await
|
|
151
|
-
checkpointNumber: CheckpointNumber
|
|
150
|
+
const block = await L2BlockNew.random(BlockNumber(blockNumber), {
|
|
151
|
+
checkpointNumber: CheckpointNumber(blockNumber),
|
|
152
152
|
indexWithinCheckpoint: IndexWithinCheckpoint(0),
|
|
153
153
|
state: makeStateForBlock(blockNumber, numTxsPerBlock),
|
|
154
154
|
...previousArchive ? {
|
|
@@ -164,6 +164,6 @@ export function makeInboxMessages(count, opts = {}) {
|
|
|
164
164
|
});
|
|
165
165
|
const checkpoint = new Checkpoint(AppendOnlyTreeSnapshot.random(), CheckpointHeader.random(), [
|
|
166
166
|
block
|
|
167
|
-
], CheckpointNumber
|
|
167
|
+
], CheckpointNumber(blockNumber));
|
|
168
168
|
return makePublishedCheckpoint(checkpoint, blockNumber);
|
|
169
169
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.d431d1c",
|
|
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-client": "0.0.1-commit.
|
|
68
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
69
|
-
"@aztec/constants": "0.0.1-commit.
|
|
70
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
71
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
72
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
73
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
74
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
75
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
76
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
77
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
78
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
67
|
+
"@aztec/blob-client": "0.0.1-commit.d431d1c",
|
|
68
|
+
"@aztec/blob-lib": "0.0.1-commit.d431d1c",
|
|
69
|
+
"@aztec/constants": "0.0.1-commit.d431d1c",
|
|
70
|
+
"@aztec/epoch-cache": "0.0.1-commit.d431d1c",
|
|
71
|
+
"@aztec/ethereum": "0.0.1-commit.d431d1c",
|
|
72
|
+
"@aztec/foundation": "0.0.1-commit.d431d1c",
|
|
73
|
+
"@aztec/kv-store": "0.0.1-commit.d431d1c",
|
|
74
|
+
"@aztec/l1-artifacts": "0.0.1-commit.d431d1c",
|
|
75
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.d431d1c",
|
|
76
|
+
"@aztec/protocol-contracts": "0.0.1-commit.d431d1c",
|
|
77
|
+
"@aztec/stdlib": "0.0.1-commit.d431d1c",
|
|
78
|
+
"@aztec/telemetry-client": "0.0.1-commit.d431d1c",
|
|
79
79
|
"lodash.groupby": "^4.6.0",
|
|
80
80
|
"lodash.omit": "^4.5.0",
|
|
81
81
|
"tslib": "^2.5.0",
|
package/src/archiver.ts
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
type ArchiverEmitter,
|
|
18
18
|
type CheckpointId,
|
|
19
19
|
GENESIS_CHECKPOINT_HEADER_HASH,
|
|
20
|
-
|
|
20
|
+
L2BlockNew,
|
|
21
21
|
type L2BlockSink,
|
|
22
22
|
type L2Tips,
|
|
23
23
|
type ValidateCheckpointResult,
|
|
@@ -46,7 +46,7 @@ export type { ArchiverEmitter };
|
|
|
46
46
|
|
|
47
47
|
/** Request to add a block to the archiver, queued for processing by the sync loop. */
|
|
48
48
|
type AddBlockRequest = {
|
|
49
|
-
block:
|
|
49
|
+
block: L2BlockNew;
|
|
50
50
|
resolve: () => void;
|
|
51
51
|
reject: (err: Error) => void;
|
|
52
52
|
};
|
|
@@ -187,7 +187,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
187
187
|
* @param block - The L2 block to add.
|
|
188
188
|
* @returns A promise that resolves when the block has been added to the store, or rejects on error.
|
|
189
189
|
*/
|
|
190
|
-
public addBlock(block:
|
|
190
|
+
public addBlock(block: L2BlockNew): Promise<void> {
|
|
191
191
|
return new Promise<void>((resolve, reject) => {
|
|
192
192
|
this.blockQueue.push({ block, resolve, reject });
|
|
193
193
|
this.log.debug(`Queued block ${block.number} for processing`);
|
|
@@ -323,11 +323,8 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
public async isEpochComplete(epochNumber: EpochNumber): Promise<boolean> {
|
|
326
|
-
// The epoch is complete if the current
|
|
327
|
-
|
|
328
|
-
// prematurely when proposed blocks have been pushed to the archiver but not yet checkpointed on L1.
|
|
329
|
-
const checkpointedBlockNumber = await this.getCheckpointedL2BlockNumber();
|
|
330
|
-
const header = checkpointedBlockNumber > 0 ? await this.getBlockHeader(checkpointedBlockNumber) : undefined;
|
|
326
|
+
// The epoch is complete if the current L2 block is the last one in the epoch (or later)
|
|
327
|
+
const header = await this.getBlockHeader('latest');
|
|
331
328
|
const slot = header ? header.globalVariables.slotNumber : undefined;
|
|
332
329
|
const [_startSlot, endSlot] = getSlotRangeForEpoch(epochNumber, this.l1Constants);
|
|
333
330
|
if (slot && slot >= endSlot) {
|
|
@@ -372,13 +369,17 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
372
369
|
}
|
|
373
370
|
|
|
374
371
|
public async getL2Tips(): Promise<L2Tips> {
|
|
375
|
-
const [latestBlockNumber, provenBlockNumber, checkpointedBlockNumber
|
|
372
|
+
const [latestBlockNumber, provenBlockNumber, checkpointedBlockNumber] = await Promise.all([
|
|
376
373
|
this.getBlockNumber(),
|
|
377
374
|
this.getProvenBlockNumber(),
|
|
378
|
-
this.
|
|
379
|
-
this.getFinalizedL2BlockNumber(),
|
|
375
|
+
this.getCheckpointedBlockNumber(),
|
|
380
376
|
] as const);
|
|
381
377
|
|
|
378
|
+
// TODO(#13569): Compute proper finalized block number based on L1 finalized block.
|
|
379
|
+
// We just force it 2 epochs worth of proven data for now.
|
|
380
|
+
// NOTE: update end-to-end/src/e2e_epochs/epochs_empty_blocks.test.ts as that uses finalized blocks in computations
|
|
381
|
+
const finalizedBlockNumber = BlockNumber(Math.max(provenBlockNumber - this.l1Constants.epochDuration * 2, 0));
|
|
382
|
+
|
|
382
383
|
const beforeInitialblockNumber = BlockNumber(INITIAL_L2_BLOCK_NUM - 1);
|
|
383
384
|
|
|
384
385
|
// Get the latest block header and checkpointed blocks for proven, finalised and checkpointed blocks
|
|
@@ -424,12 +425,14 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
424
425
|
// Now attempt to retrieve checkpoints for proven, finalised and checkpointed blocks
|
|
425
426
|
const [[provenBlockCheckpoint], [finalizedBlockCheckpoint], [checkpointedBlockCheckpoint]] = await Promise.all([
|
|
426
427
|
provenCheckpointedBlock !== undefined
|
|
427
|
-
? await this.
|
|
428
|
+
? await this.getPublishedCheckpoints(provenCheckpointedBlock?.checkpointNumber, 1)
|
|
428
429
|
: [undefined],
|
|
429
430
|
finalizedCheckpointedBlock !== undefined
|
|
430
|
-
? await this.
|
|
431
|
+
? await this.getPublishedCheckpoints(finalizedCheckpointedBlock?.checkpointNumber, 1)
|
|
432
|
+
: [undefined],
|
|
433
|
+
checkpointedBlock !== undefined
|
|
434
|
+
? await this.getPublishedCheckpoints(checkpointedBlock?.checkpointNumber, 1)
|
|
431
435
|
: [undefined],
|
|
432
|
-
checkpointedBlock !== undefined ? await this.getCheckpoints(checkpointedBlock?.checkpointNumber, 1) : [undefined],
|
|
433
436
|
]);
|
|
434
437
|
|
|
435
438
|
const initialcheckpointId: CheckpointId = {
|
|
@@ -503,7 +506,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
503
506
|
}
|
|
504
507
|
const targetL1BlockHash = Buffer32.fromString(targetL1Block.hash);
|
|
505
508
|
this.log.info(`Unwinding ${blocksToUnwind} checkpoints from L2 block ${currentL2Block}`);
|
|
506
|
-
await this.updater.unwindCheckpoints(CheckpointNumber
|
|
509
|
+
await this.updater.unwindCheckpoints(CheckpointNumber(currentL2Block), blocksToUnwind);
|
|
507
510
|
this.log.info(`Unwinding L1 to L2 messages to checkpoint ${targetCheckpointNumber}`);
|
|
508
511
|
await this.store.rollbackL1ToL2MessagesToCheckpoint(targetCheckpointNumber);
|
|
509
512
|
this.log.info(`Setting L1 syncpoints to ${targetL1BlockNumber}`);
|
package/src/factory.ts
CHANGED
|
@@ -15,7 +15,6 @@ import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/prov
|
|
|
15
15
|
import { FunctionType, decodeFunctionSignature } from '@aztec/stdlib/abi';
|
|
16
16
|
import type { ArchiverEmitter } from '@aztec/stdlib/block';
|
|
17
17
|
import { type ContractClassPublic, computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
|
|
18
|
-
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
19
18
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
20
19
|
|
|
21
20
|
import { EventEmitter } from 'events';
|
|
@@ -32,14 +31,13 @@ export const ARCHIVER_STORE_NAME = 'archiver';
|
|
|
32
31
|
/** Creates an archiver store. */
|
|
33
32
|
export async function createArchiverStore(
|
|
34
33
|
userConfig: Pick<ArchiverConfig, 'archiverStoreMapSizeKb' | 'maxLogs'> & DataStoreConfig,
|
|
35
|
-
l1Constants: Pick<L1RollupConstants, 'epochDuration'>,
|
|
36
34
|
) {
|
|
37
35
|
const config = {
|
|
38
36
|
...userConfig,
|
|
39
37
|
dataStoreMapSizeKb: userConfig.archiverStoreMapSizeKb ?? userConfig.dataStoreMapSizeKb,
|
|
40
38
|
};
|
|
41
39
|
const store = await createStore(ARCHIVER_STORE_NAME, ARCHIVER_DB_VERSION, config, createLogger('archiver:lmdb'));
|
|
42
|
-
return new KVArchiverDataStore(store, config.maxLogs
|
|
40
|
+
return new KVArchiverDataStore(store, config.maxLogs);
|
|
43
41
|
}
|
|
44
42
|
|
|
45
43
|
/**
|
|
@@ -54,7 +52,7 @@ export async function createArchiver(
|
|
|
54
52
|
deps: ArchiverDeps,
|
|
55
53
|
opts: { blockUntilSync: boolean } = { blockUntilSync: true },
|
|
56
54
|
): Promise<Archiver> {
|
|
57
|
-
const archiverStore = await createArchiverStore(config
|
|
55
|
+
const archiverStore = await createArchiverStore(config);
|
|
58
56
|
await registerProtocolContracts(archiverStore);
|
|
59
57
|
|
|
60
58
|
// Create Ethereum clients
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import type { ViemPublicClient, ViemPublicDebugClient } from '@aztec/ethereum/types';
|
|
3
|
-
import {
|
|
3
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
6
|
|
|
@@ -142,12 +142,7 @@ async function main() {
|
|
|
142
142
|
logger.info('');
|
|
143
143
|
|
|
144
144
|
// For this script, we don't have blob hashes or expected hashes, so pass empty arrays/objects
|
|
145
|
-
const result = await retriever.getCheckpointFromRollupTx(
|
|
146
|
-
txHash,
|
|
147
|
-
[],
|
|
148
|
-
CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)),
|
|
149
|
-
{},
|
|
150
|
-
);
|
|
145
|
+
const result = await retriever.getCheckpointFromRollupTx(txHash, [], CheckpointNumber(l2BlockNumber), {});
|
|
151
146
|
|
|
152
147
|
logger.info(' Successfully retrieved block header!');
|
|
153
148
|
logger.info('');
|
package/src/l1/data_retrieval.ts
CHANGED
|
@@ -20,7 +20,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
20
20
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
21
21
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
22
22
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
23
|
-
import { Body, CommitteeAttestation,
|
|
23
|
+
import { Body, CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
|
|
24
24
|
import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
25
25
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
26
26
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
@@ -69,7 +69,7 @@ export async function retrievedToPublishedCheckpoint({
|
|
|
69
69
|
const l1toL2MessageTreeRoot = blocksBlobData[0].l1ToL2MessageRoot!;
|
|
70
70
|
|
|
71
71
|
const spongeBlob = SpongeBlob.init();
|
|
72
|
-
const l2Blocks:
|
|
72
|
+
const l2Blocks: L2BlockNew[] = [];
|
|
73
73
|
for (let i = 0; i < blocksBlobData.length; i++) {
|
|
74
74
|
const blockBlobData = blocksBlobData[i];
|
|
75
75
|
const { blockEndMarker, blockEndStateField, lastArchiveRoot, noteHashRoot, nullifierRoot, publicDataRoot } =
|
|
@@ -119,7 +119,7 @@ export async function retrievedToPublishedCheckpoint({
|
|
|
119
119
|
|
|
120
120
|
const newArchive = new AppendOnlyTreeSnapshot(newArchiveRoots[i], l2BlockNumber + 1);
|
|
121
121
|
|
|
122
|
-
l2Blocks.push(new
|
|
122
|
+
l2Blocks.push(new L2BlockNew(newArchive, header, body, checkpointNumber, IndexWithinCheckpoint(i)));
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
const lastBlock = l2Blocks.at(-1)!;
|