@aztec/archiver 0.0.1-commit.1142ef1 → 0.0.1-commit.11bf3dd6e
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 +162 -22
- package/dest/archiver.d.ts +140 -0
- package/dest/archiver.d.ts.map +1 -0
- package/dest/archiver.js +750 -0
- package/dest/config.d.ts +30 -0
- package/dest/config.d.ts.map +1 -0
- package/dest/{archiver/config.js → config.js} +12 -2
- package/dest/errors.d.ts +65 -0
- package/dest/errors.d.ts.map +1 -0
- package/dest/errors.js +91 -0
- package/dest/factory.d.ts +8 -7
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +96 -13
- package/dest/index.d.ts +11 -4
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +9 -3
- package/dest/interfaces.d.ts +9 -0
- package/dest/interfaces.d.ts.map +1 -0
- package/dest/interfaces.js +3 -0
- package/dest/{archiver/l1 → l1}/bin/retrieve-calldata.d.ts +1 -1
- package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
- package/dest/{archiver/l1 → l1}/bin/retrieve-calldata.js +35 -32
- package/dest/l1/calldata_retriever.d.ts +135 -0
- package/dest/l1/calldata_retriever.d.ts.map +1 -0
- package/dest/l1/calldata_retriever.js +403 -0
- package/dest/l1/data_retrieval.d.ts +88 -0
- package/dest/l1/data_retrieval.d.ts.map +1 -0
- package/dest/{archiver/l1 → l1}/data_retrieval.js +59 -77
- package/dest/{archiver/l1 → l1}/debug_tx.d.ts +1 -1
- package/dest/l1/debug_tx.d.ts.map +1 -0
- package/dest/{archiver/l1 → l1}/spire_proposer.d.ts +5 -5
- package/dest/l1/spire_proposer.d.ts.map +1 -0
- package/dest/{archiver/l1 → l1}/spire_proposer.js +9 -17
- package/dest/{archiver/l1 → l1}/trace_tx.d.ts +1 -1
- package/dest/l1/trace_tx.d.ts.map +1 -0
- package/dest/l1/types.d.ts +12 -0
- package/dest/l1/types.d.ts.map +1 -0
- package/dest/{archiver/l1 → l1}/validate_trace.d.ts +6 -3
- package/dest/l1/validate_trace.d.ts.map +1 -0
- package/dest/{archiver/l1 → l1}/validate_trace.js +13 -9
- package/dest/modules/data_source_base.d.ts +91 -0
- package/dest/modules/data_source_base.d.ts.map +1 -0
- package/dest/modules/data_source_base.js +222 -0
- package/dest/modules/data_store_updater.d.ts +86 -0
- package/dest/modules/data_store_updater.d.ts.map +1 -0
- package/dest/modules/data_store_updater.js +333 -0
- package/dest/modules/instrumentation.d.ts +52 -0
- package/dest/modules/instrumentation.d.ts.map +1 -0
- package/dest/{archiver → modules}/instrumentation.js +53 -18
- package/dest/modules/l1_synchronizer.d.ts +73 -0
- package/dest/modules/l1_synchronizer.d.ts.map +1 -0
- package/dest/modules/l1_synchronizer.js +1154 -0
- package/dest/{archiver → modules}/validation.d.ts +1 -1
- package/dest/modules/validation.d.ts.map +1 -0
- package/dest/{archiver → modules}/validation.js +8 -2
- package/dest/store/block_store.d.ts +230 -0
- package/dest/store/block_store.d.ts.map +1 -0
- package/dest/store/block_store.js +942 -0
- package/dest/store/contract_class_store.d.ts +17 -0
- package/dest/store/contract_class_store.d.ts.map +1 -0
- package/dest/store/contract_class_store.js +64 -0
- package/dest/store/contract_instance_store.d.ts +24 -0
- package/dest/store/contract_instance_store.d.ts.map +1 -0
- package/dest/{archiver/kv_archiver_store → store}/contract_instance_store.js +7 -3
- package/dest/store/kv_archiver_store.d.ts +377 -0
- package/dest/store/kv_archiver_store.d.ts.map +1 -0
- package/dest/store/kv_archiver_store.js +494 -0
- package/dest/store/l2_tips_cache.d.ts +20 -0
- package/dest/store/l2_tips_cache.d.ts.map +1 -0
- package/dest/store/l2_tips_cache.js +109 -0
- package/dest/store/log_store.d.ts +57 -0
- package/dest/store/log_store.d.ts.map +1 -0
- package/dest/store/log_store.js +531 -0
- package/dest/store/message_store.d.ts +44 -0
- package/dest/store/message_store.d.ts.map +1 -0
- package/dest/{archiver/kv_archiver_store → store}/message_store.js +21 -9
- package/dest/{archiver/structs → structs}/data_retrieval.d.ts +1 -1
- package/dest/structs/data_retrieval.d.ts.map +1 -0
- package/dest/structs/inbox_message.d.ts +15 -0
- package/dest/structs/inbox_message.d.ts.map +1 -0
- package/dest/{archiver/structs → structs}/published.d.ts +1 -1
- package/dest/structs/published.d.ts.map +1 -0
- package/dest/test/fake_l1_state.d.ts +210 -0
- package/dest/test/fake_l1_state.d.ts.map +1 -0
- package/dest/test/fake_l1_state.js +490 -0
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +4 -1
- package/dest/test/mock_archiver.d.ts +2 -2
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +3 -3
- package/dest/test/mock_l1_to_l2_message_source.d.ts +1 -1
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.js +2 -1
- package/dest/test/mock_l2_block_source.d.ts +43 -19
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +211 -80
- package/dest/test/mock_structs.d.ts +81 -3
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +152 -7
- package/dest/test/noop_l1_archiver.d.ts +26 -0
- package/dest/test/noop_l1_archiver.d.ts.map +1 -0
- package/dest/test/noop_l1_archiver.js +71 -0
- package/package.json +16 -17
- package/src/archiver.ts +510 -0
- package/src/{archiver/config.ts → config.ts} +20 -2
- package/src/errors.ts +146 -0
- package/src/factory.ts +152 -16
- package/src/index.ts +11 -3
- package/src/interfaces.ts +9 -0
- package/src/l1/README.md +55 -0
- package/src/{archiver/l1 → l1}/bin/retrieve-calldata.ts +45 -33
- package/src/l1/calldata_retriever.ts +512 -0
- package/src/{archiver/l1 → l1}/data_retrieval.ts +79 -102
- package/src/{archiver/l1 → l1}/spire_proposer.ts +7 -15
- package/src/{archiver/l1 → l1}/validate_trace.ts +24 -6
- package/src/modules/data_source_base.ts +347 -0
- package/src/modules/data_store_updater.ts +437 -0
- package/src/{archiver → modules}/instrumentation.ts +64 -20
- package/src/modules/l1_synchronizer.ts +961 -0
- package/src/{archiver → modules}/validation.ts +7 -2
- package/src/store/block_store.ts +1245 -0
- package/src/store/contract_class_store.ts +82 -0
- package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +9 -6
- package/src/store/kv_archiver_store.ts +713 -0
- package/src/store/l2_tips_cache.ts +134 -0
- package/src/store/log_store.ts +733 -0
- package/src/{archiver/kv_archiver_store → store}/message_store.ts +27 -10
- package/src/{archiver/structs → structs}/inbox_message.ts +1 -1
- package/src/test/fake_l1_state.ts +747 -0
- package/src/test/index.ts +4 -0
- package/src/test/mock_archiver.ts +4 -3
- package/src/test/mock_l1_to_l2_message_source.ts +1 -0
- package/src/test/mock_l2_block_source.ts +269 -94
- package/src/test/mock_structs.ts +283 -8
- package/src/test/noop_l1_archiver.ts +114 -0
- package/dest/archiver/archiver.d.ts +0 -307
- package/dest/archiver/archiver.d.ts.map +0 -1
- package/dest/archiver/archiver.js +0 -2102
- package/dest/archiver/archiver_store.d.ts +0 -315
- package/dest/archiver/archiver_store.d.ts.map +0 -1
- package/dest/archiver/archiver_store.js +0 -4
- 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/archiver_store_test_suite.js +0 -2770
- package/dest/archiver/config.d.ts +0 -22
- package/dest/archiver/config.d.ts.map +0 -1
- package/dest/archiver/errors.d.ts +0 -36
- package/dest/archiver/errors.d.ts.map +0 -1
- package/dest/archiver/errors.js +0 -54
- package/dest/archiver/index.d.ts +0 -7
- package/dest/archiver/index.d.ts.map +0 -1
- package/dest/archiver/index.js +0 -4
- package/dest/archiver/instrumentation.d.ts +0 -37
- package/dest/archiver/instrumentation.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -164
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/block_store.js +0 -626
- 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_class_store.js +0 -120
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
- 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 -159
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -316
- package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -45
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/log_store.js +0 -401
- package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -40
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
- package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +0 -1
- package/dest/archiver/l1/calldata_retriever.d.ts +0 -112
- package/dest/archiver/l1/calldata_retriever.d.ts.map +0 -1
- package/dest/archiver/l1/calldata_retriever.js +0 -471
- package/dest/archiver/l1/data_retrieval.d.ts +0 -90
- package/dest/archiver/l1/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/l1/debug_tx.d.ts.map +0 -1
- package/dest/archiver/l1/spire_proposer.d.ts.map +0 -1
- package/dest/archiver/l1/trace_tx.d.ts.map +0 -1
- package/dest/archiver/l1/types.d.ts +0 -12
- package/dest/archiver/l1/types.d.ts.map +0 -1
- package/dest/archiver/l1/validate_trace.d.ts.map +0 -1
- package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/structs/inbox_message.d.ts +0 -15
- package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
- package/dest/archiver/structs/published.d.ts.map +0 -1
- package/dest/archiver/validation.d.ts.map +0 -1
- package/dest/rpc/index.d.ts +0 -9
- package/dest/rpc/index.d.ts.map +0 -1
- package/dest/rpc/index.js +0 -15
- package/src/archiver/archiver.ts +0 -2265
- package/src/archiver/archiver_store.ts +0 -380
- package/src/archiver/archiver_store_test_suite.ts +0 -2842
- package/src/archiver/errors.ts +0 -90
- package/src/archiver/index.ts +0 -6
- package/src/archiver/kv_archiver_store/block_store.ts +0 -850
- package/src/archiver/kv_archiver_store/contract_class_store.ts +0 -176
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +0 -442
- package/src/archiver/kv_archiver_store/log_store.ts +0 -516
- package/src/archiver/l1/README.md +0 -98
- package/src/archiver/l1/calldata_retriever.ts +0 -641
- package/src/rpc/index.ts +0 -16
- /package/dest/{archiver/l1 → l1}/debug_tx.js +0 -0
- /package/dest/{archiver/l1 → l1}/trace_tx.js +0 -0
- /package/dest/{archiver/l1 → l1}/types.js +0 -0
- /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
- /package/dest/{archiver/structs → structs}/inbox_message.js +0 -0
- /package/dest/{archiver/structs → structs}/published.js +0 -0
- /package/src/{archiver/l1 → l1}/debug_tx.ts +0 -0
- /package/src/{archiver/l1 → l1}/trace_tx.ts +0 -0
- /package/src/{archiver/l1 → l1}/types.ts +0 -0
- /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
- /package/src/{archiver/structs → structs}/published.ts +0 -0
|
@@ -3,8 +3,8 @@ 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 {
|
|
7
|
-
import { type
|
|
6
|
+
import { type BlockData, BlockHash, CheckpointedL2Block, L2Block, type L2BlockSource, type L2Tips, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
7
|
+
import { Checkpoint, type CheckpointData, type ProposedCheckpointData, 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';
|
|
10
10
|
import { type BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
@@ -14,15 +14,22 @@ import type { UInt64 } from '@aztec/stdlib/types';
|
|
|
14
14
|
*/
|
|
15
15
|
export declare class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
16
16
|
protected l2Blocks: L2Block[];
|
|
17
|
+
protected checkpointList: Checkpoint[];
|
|
17
18
|
private provenBlockNumber;
|
|
18
19
|
private finalizedBlockNumber;
|
|
19
20
|
private checkpointedBlockNumber;
|
|
21
|
+
private proposedCheckpointBlockNumber;
|
|
20
22
|
private log;
|
|
23
|
+
/** Creates blocks grouped into single-block checkpoints. */
|
|
21
24
|
createBlocks(numBlocks: number): Promise<void>;
|
|
22
|
-
|
|
25
|
+
getCheckpointNumber(): Promise<CheckpointNumber>;
|
|
26
|
+
/** Creates checkpoints, each containing `blocksPerCheckpoint` blocks. */
|
|
27
|
+
createCheckpoints(numCheckpoints: number, blocksPerCheckpoint?: number): Promise<void>;
|
|
28
|
+
addProposedBlocks(blocks: L2Block[]): void;
|
|
23
29
|
removeBlocks(numBlocks: number): void;
|
|
24
30
|
setProvenBlockNumber(provenBlockNumber: number): void;
|
|
25
31
|
setFinalizedBlockNumber(finalizedBlockNumber: number): void;
|
|
32
|
+
setProposedCheckpointBlockNumber(blockNumber: number): void;
|
|
26
33
|
setCheckpointedBlockNumber(checkpointedBlockNumber: number): void;
|
|
27
34
|
/**
|
|
28
35
|
* Method to fetch the rollup contract address at the base-layer.
|
|
@@ -40,39 +47,46 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
40
47
|
*/
|
|
41
48
|
getBlockNumber(): Promise<BlockNumber>;
|
|
42
49
|
getProvenBlockNumber(): Promise<BlockNumber>;
|
|
50
|
+
getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
|
|
51
|
+
getFinalizedL2BlockNumber(): Promise<BlockNumber>;
|
|
52
|
+
getProposedCheckpointL2BlockNumber(): Promise<BlockNumber>;
|
|
43
53
|
getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
|
|
44
|
-
getCheckpointedBlocks(from: BlockNumber, limit: number
|
|
54
|
+
getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
|
|
45
55
|
/**
|
|
46
56
|
* Gets an l2 block.
|
|
47
57
|
* @param number - The block number to return (inclusive).
|
|
48
58
|
* @returns The requested L2 block.
|
|
49
59
|
*/
|
|
50
|
-
getBlock(number: number): Promise<L2Block>;
|
|
60
|
+
getBlock(number: number): Promise<L2Block | undefined>;
|
|
51
61
|
/**
|
|
52
62
|
* Gets an L2 block (new format).
|
|
53
63
|
* @param number - The block number to return.
|
|
54
64
|
* @returns The requested L2 block.
|
|
55
65
|
*/
|
|
56
|
-
|
|
66
|
+
getL2Block(number: BlockNumber): Promise<L2Block | undefined>;
|
|
57
67
|
/**
|
|
58
68
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
59
69
|
* @param from - Number of the first block to return (inclusive).
|
|
60
70
|
* @param limit - The maximum number of blocks to return.
|
|
61
71
|
* @returns The requested mocked L2 blocks.
|
|
62
72
|
*/
|
|
63
|
-
getBlocks(from: number, limit: number
|
|
64
|
-
|
|
73
|
+
getBlocks(from: number, limit: number): Promise<L2Block[]>;
|
|
74
|
+
getCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
|
|
65
75
|
getCheckpointByArchive(archive: Fr): Promise<Checkpoint | undefined>;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
getBlockHeaderByHash(blockHash:
|
|
76
|
+
getCheckpointedBlockByHash(blockHash: BlockHash): Promise<CheckpointedL2Block | undefined>;
|
|
77
|
+
getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
78
|
+
getL2BlockByHash(blockHash: BlockHash): Promise<L2Block | undefined>;
|
|
79
|
+
getL2BlockByArchive(archive: Fr): Promise<L2Block | undefined>;
|
|
80
|
+
getBlockHeaderByHash(blockHash: BlockHash): Promise<BlockHeader | undefined>;
|
|
71
81
|
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
82
|
+
getBlockData(number: BlockNumber): Promise<BlockData | undefined>;
|
|
83
|
+
getBlockDataByArchive(archive: Fr): Promise<BlockData | undefined>;
|
|
72
84
|
getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
|
|
73
85
|
getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
|
|
74
|
-
|
|
75
|
-
|
|
86
|
+
getCheckpointsDataForEpoch(epochNumber: EpochNumber): Promise<CheckpointData[]>;
|
|
87
|
+
getCheckpointedBlocksForEpoch(epochNumber: EpochNumber): Promise<CheckpointedL2Block[]>;
|
|
88
|
+
getBlocksForSlot(slotNumber: SlotNumber): Promise<L2Block[]>;
|
|
89
|
+
getCheckpointedBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
|
|
76
90
|
/**
|
|
77
91
|
* Gets a tx effect.
|
|
78
92
|
* @param txHash - The hash of the tx corresponding to the tx effect.
|
|
@@ -81,7 +95,7 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
81
95
|
getTxEffect(txHash: TxHash): Promise<{
|
|
82
96
|
data: import("@aztec/stdlib/tx").TxEffect;
|
|
83
97
|
l2BlockNumber: BlockNumber;
|
|
84
|
-
l2BlockHash:
|
|
98
|
+
l2BlockHash: BlockHash;
|
|
85
99
|
txIndexInBlock: number;
|
|
86
100
|
} | undefined>;
|
|
87
101
|
/**
|
|
@@ -91,8 +105,8 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
91
105
|
*/
|
|
92
106
|
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
93
107
|
getL2Tips(): Promise<L2Tips>;
|
|
94
|
-
|
|
95
|
-
|
|
108
|
+
getSyncedL2EpochNumber(): Promise<EpochNumber>;
|
|
109
|
+
getSyncedL2SlotNumber(): Promise<SlotNumber>;
|
|
96
110
|
isEpochComplete(_epochNumber: EpochNumber): Promise<boolean>;
|
|
97
111
|
getL1Constants(): Promise<L1RollupConstants>;
|
|
98
112
|
getGenesisValues(): Promise<{
|
|
@@ -118,5 +132,15 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
118
132
|
syncImmediate(): Promise<void>;
|
|
119
133
|
isPendingChainInvalid(): Promise<boolean>;
|
|
120
134
|
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
|
|
135
|
+
getProposedCheckpoint(): Promise<ProposedCheckpointData | undefined>;
|
|
136
|
+
getProposedCheckpointOnly(): Promise<ProposedCheckpointData | undefined>;
|
|
137
|
+
/** Returns checkpoints whose slot falls within the given epoch. */
|
|
138
|
+
private getCheckpointsInEpoch;
|
|
139
|
+
/** Creates a mock L1PublishedData for a checkpoint. */
|
|
140
|
+
private mockL1DataForCheckpoint;
|
|
141
|
+
/** Creates a CheckpointedL2Block from a block using stored checkpoint info. */
|
|
142
|
+
private toCheckpointedBlock;
|
|
143
|
+
/** Finds the checkpoint number for a block, or undefined if the block is not in any checkpoint. */
|
|
144
|
+
private findCheckpointNumberForBlock;
|
|
121
145
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsS0FBSyxTQUFTLEVBQ2QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsS0FBSyxhQUFhLEVBQ2xCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLGNBQWMsRUFFbkIsS0FBSyxzQkFBc0IsRUFDM0IsbUJBQW1CLEVBQ3BCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuSCxPQUFPLEVBRUwsS0FBSyxpQkFBaUIsRUFHdkIsTUFBTSw2QkFBNkIsQ0FBQztBQUdyQyxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNwRyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLGFBQWEs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,65 @@
|
|
|
1
1
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
2
2
|
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
3
|
-
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
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
|
|
9
|
-
import { L1PublishedData } from '@aztec/stdlib/checkpoint';
|
|
10
|
-
import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
11
|
-
import {
|
|
8
|
+
import { CheckpointedL2Block } from '@aztec/stdlib/block';
|
|
9
|
+
import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
10
|
+
import { EmptyL1RollupConstants, getEpochAtSlot, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
11
|
+
import { computeCheckpointOutHash } from '@aztec/stdlib/messaging';
|
|
12
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
13
|
+
import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
12
14
|
/**
|
|
13
15
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
14
16
|
*/ export class MockL2BlockSource {
|
|
15
17
|
l2Blocks = [];
|
|
18
|
+
checkpointList = [];
|
|
16
19
|
provenBlockNumber = 0;
|
|
17
20
|
finalizedBlockNumber = 0;
|
|
18
21
|
checkpointedBlockNumber = 0;
|
|
22
|
+
proposedCheckpointBlockNumber = 0;
|
|
19
23
|
log = createLogger('archiver:mock_l2_block_source');
|
|
20
|
-
async createBlocks(numBlocks) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
/** Creates blocks grouped into single-block checkpoints. */ async createBlocks(numBlocks) {
|
|
25
|
+
await this.createCheckpoints(numBlocks, 1);
|
|
26
|
+
}
|
|
27
|
+
getCheckpointNumber() {
|
|
28
|
+
return Promise.resolve(this.checkpointList.length === 0 ? CheckpointNumber.ZERO : CheckpointNumber(this.checkpointList.length));
|
|
29
|
+
}
|
|
30
|
+
/** Creates checkpoints, each containing `blocksPerCheckpoint` blocks. */ async createCheckpoints(numCheckpoints, blocksPerCheckpoint = 1) {
|
|
31
|
+
for(let c = 0; c < numCheckpoints; c++){
|
|
32
|
+
const checkpointNum = CheckpointNumber(this.checkpointList.length + 1);
|
|
33
|
+
const startBlockNum = this.l2Blocks.length + 1;
|
|
34
|
+
const slotNumber = SlotNumber(Number(checkpointNum));
|
|
35
|
+
const checkpoint = await Checkpoint.random(checkpointNum, {
|
|
36
|
+
numBlocks: blocksPerCheckpoint,
|
|
37
|
+
startBlockNumber: startBlockNum,
|
|
38
|
+
slotNumber,
|
|
39
|
+
checkpointNumber: checkpointNum
|
|
40
|
+
});
|
|
41
|
+
this.checkpointList.push(checkpoint);
|
|
42
|
+
this.l2Blocks.push(...checkpoint.blocks);
|
|
25
43
|
}
|
|
26
|
-
this.log.verbose(`Created ${
|
|
44
|
+
this.log.verbose(`Created ${numCheckpoints} checkpoints with ${blocksPerCheckpoint} blocks each in the mock L2 block source`);
|
|
27
45
|
}
|
|
28
|
-
|
|
46
|
+
addProposedBlocks(blocks) {
|
|
29
47
|
this.l2Blocks.push(...blocks);
|
|
30
|
-
this.log.verbose(`Added ${blocks.length} blocks to the mock L2 block source`);
|
|
48
|
+
this.log.verbose(`Added ${blocks.length} proposed blocks to the mock L2 block source`);
|
|
31
49
|
}
|
|
32
50
|
removeBlocks(numBlocks) {
|
|
33
51
|
this.l2Blocks = this.l2Blocks.slice(0, -numBlocks);
|
|
52
|
+
const maxBlockNum = this.l2Blocks.length;
|
|
53
|
+
// Remove any checkpoint whose last block is beyond the remaining blocks.
|
|
54
|
+
this.checkpointList = this.checkpointList.filter((c)=>{
|
|
55
|
+
const lastBlockNum = c.blocks[0].number + c.blocks.length - 1;
|
|
56
|
+
return lastBlockNum <= maxBlockNum;
|
|
57
|
+
});
|
|
58
|
+
// Keep tip numbers consistent with remaining blocks.
|
|
59
|
+
this.checkpointedBlockNumber = Math.min(this.checkpointedBlockNumber, maxBlockNum);
|
|
60
|
+
this.proposedCheckpointBlockNumber = Math.min(this.proposedCheckpointBlockNumber, maxBlockNum);
|
|
61
|
+
this.provenBlockNumber = Math.min(this.provenBlockNumber, maxBlockNum);
|
|
62
|
+
this.finalizedBlockNumber = Math.min(this.finalizedBlockNumber, maxBlockNum);
|
|
34
63
|
this.log.verbose(`Removed ${numBlocks} blocks from the mock L2 block source`);
|
|
35
64
|
}
|
|
36
65
|
setProvenBlockNumber(provenBlockNumber) {
|
|
@@ -42,8 +71,40 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
42
71
|
}
|
|
43
72
|
this.finalizedBlockNumber = finalizedBlockNumber;
|
|
44
73
|
}
|
|
74
|
+
setProposedCheckpointBlockNumber(blockNumber) {
|
|
75
|
+
this.proposedCheckpointBlockNumber = blockNumber;
|
|
76
|
+
}
|
|
45
77
|
setCheckpointedBlockNumber(checkpointedBlockNumber) {
|
|
78
|
+
const prevCheckpointed = this.checkpointedBlockNumber;
|
|
46
79
|
this.checkpointedBlockNumber = checkpointedBlockNumber;
|
|
80
|
+
// Proposed checkpoint is always at least as advanced as checkpointed
|
|
81
|
+
if (this.proposedCheckpointBlockNumber < checkpointedBlockNumber) {
|
|
82
|
+
this.proposedCheckpointBlockNumber = checkpointedBlockNumber;
|
|
83
|
+
}
|
|
84
|
+
// Auto-create single-block checkpoints for newly checkpointed blocks that don't have one yet.
|
|
85
|
+
// This handles blocks added via addProposedBlocks that are now being marked as checkpointed.
|
|
86
|
+
const newCheckpoints = [];
|
|
87
|
+
for(let blockNum = prevCheckpointed + 1; blockNum <= checkpointedBlockNumber; blockNum++){
|
|
88
|
+
const block = this.l2Blocks[blockNum - 1];
|
|
89
|
+
if (!block) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (this.checkpointList.some((c)=>c.blocks.some((b)=>b.number === block.number))) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const checkpointNum = CheckpointNumber(this.checkpointList.length + newCheckpoints.length + 1);
|
|
96
|
+
const checkpoint = new Checkpoint(block.archive, CheckpointHeader.random({
|
|
97
|
+
slotNumber: block.header.globalVariables.slotNumber
|
|
98
|
+
}), [
|
|
99
|
+
block
|
|
100
|
+
], checkpointNum);
|
|
101
|
+
newCheckpoints.push(checkpoint);
|
|
102
|
+
}
|
|
103
|
+
// Insert new checkpoints in order by number.
|
|
104
|
+
if (newCheckpoints.length > 0) {
|
|
105
|
+
this.checkpointList.push(...newCheckpoints);
|
|
106
|
+
this.checkpointList.sort((a, b)=>a.number - b.number);
|
|
107
|
+
}
|
|
47
108
|
}
|
|
48
109
|
/**
|
|
49
110
|
* Method to fetch the rollup contract address at the base-layer.
|
|
@@ -66,6 +127,15 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
66
127
|
getProvenBlockNumber() {
|
|
67
128
|
return Promise.resolve(BlockNumber(this.provenBlockNumber));
|
|
68
129
|
}
|
|
130
|
+
getCheckpointedL2BlockNumber() {
|
|
131
|
+
return Promise.resolve(BlockNumber(this.checkpointedBlockNumber));
|
|
132
|
+
}
|
|
133
|
+
getFinalizedL2BlockNumber() {
|
|
134
|
+
return Promise.resolve(BlockNumber(this.finalizedBlockNumber));
|
|
135
|
+
}
|
|
136
|
+
getProposedCheckpointL2BlockNumber() {
|
|
137
|
+
return Promise.resolve(BlockNumber(this.proposedCheckpointBlockNumber));
|
|
138
|
+
}
|
|
69
139
|
getCheckpointedBlock(number) {
|
|
70
140
|
if (number > this.checkpointedBlockNumber) {
|
|
71
141
|
return Promise.resolve(undefined);
|
|
@@ -74,10 +144,9 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
74
144
|
if (!block) {
|
|
75
145
|
return Promise.resolve(undefined);
|
|
76
146
|
}
|
|
77
|
-
|
|
78
|
-
return Promise.resolve(checkpointedBlock);
|
|
147
|
+
return Promise.resolve(this.toCheckpointedBlock(block));
|
|
79
148
|
}
|
|
80
|
-
async getCheckpointedBlocks(from, limit
|
|
149
|
+
async getCheckpointedBlocks(from, limit) {
|
|
81
150
|
const result = [];
|
|
82
151
|
for(let i = 0; i < limit; i++){
|
|
83
152
|
const blockNum = from + i;
|
|
@@ -96,102 +165,131 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
96
165
|
* @param number - The block number to return (inclusive).
|
|
97
166
|
* @returns The requested L2 block.
|
|
98
167
|
*/ getBlock(number) {
|
|
99
|
-
|
|
168
|
+
const block = this.l2Blocks[number - 1];
|
|
169
|
+
return Promise.resolve(block);
|
|
100
170
|
}
|
|
101
171
|
/**
|
|
102
172
|
* Gets an L2 block (new format).
|
|
103
173
|
* @param number - The block number to return.
|
|
104
174
|
* @returns The requested L2 block.
|
|
105
|
-
*/
|
|
175
|
+
*/ getL2Block(number) {
|
|
106
176
|
const block = this.l2Blocks[number - 1];
|
|
107
|
-
return Promise.resolve(block
|
|
177
|
+
return Promise.resolve(block);
|
|
108
178
|
}
|
|
109
179
|
/**
|
|
110
180
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
111
181
|
* @param from - Number of the first block to return (inclusive).
|
|
112
182
|
* @param limit - The maximum number of blocks to return.
|
|
113
183
|
* @returns The requested mocked L2 blocks.
|
|
114
|
-
*/ getBlocks(from, limit
|
|
115
|
-
return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit)
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
return
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return
|
|
124
|
-
}
|
|
125
|
-
async
|
|
126
|
-
const blocks = await this.getBlocks(from, limit, proven);
|
|
127
|
-
return blocks.map((block)=>PublishedL2Block.fromFields({
|
|
128
|
-
block,
|
|
129
|
-
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
130
|
-
attestations: []
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
async getL2BlocksNew(from, limit, proven) {
|
|
134
|
-
const blocks = await this.getBlocks(from, limit, proven);
|
|
135
|
-
return blocks.map((x)=>x.toL2Block());
|
|
136
|
-
}
|
|
137
|
-
async getPublishedBlockByHash(blockHash) {
|
|
184
|
+
*/ getBlocks(from, limit) {
|
|
185
|
+
return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit));
|
|
186
|
+
}
|
|
187
|
+
getCheckpoints(from, limit) {
|
|
188
|
+
const checkpoints = this.checkpointList.slice(from - 1, from - 1 + limit);
|
|
189
|
+
return Promise.resolve(checkpoints.map((checkpoint)=>new PublishedCheckpoint(checkpoint, this.mockL1DataForCheckpoint(checkpoint), [])));
|
|
190
|
+
}
|
|
191
|
+
getCheckpointByArchive(archive) {
|
|
192
|
+
const checkpoint = this.checkpointList.find((c)=>c.archive.root.equals(archive));
|
|
193
|
+
return Promise.resolve(checkpoint);
|
|
194
|
+
}
|
|
195
|
+
async getCheckpointedBlockByHash(blockHash) {
|
|
138
196
|
for (const block of this.l2Blocks){
|
|
139
197
|
const hash = await block.hash();
|
|
140
198
|
if (hash.equals(blockHash)) {
|
|
141
|
-
return
|
|
142
|
-
block,
|
|
143
|
-
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
144
|
-
attestations: []
|
|
145
|
-
});
|
|
199
|
+
return this.toCheckpointedBlock(block);
|
|
146
200
|
}
|
|
147
201
|
}
|
|
148
202
|
return undefined;
|
|
149
203
|
}
|
|
150
|
-
|
|
204
|
+
getCheckpointedBlockByArchive(archive) {
|
|
151
205
|
const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
|
|
152
206
|
if (!block) {
|
|
153
207
|
return Promise.resolve(undefined);
|
|
154
208
|
}
|
|
155
|
-
return Promise.resolve(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
209
|
+
return Promise.resolve(this.toCheckpointedBlock(block));
|
|
210
|
+
}
|
|
211
|
+
async getL2BlockByHash(blockHash) {
|
|
212
|
+
for (const block of this.l2Blocks){
|
|
213
|
+
const hash = await block.hash();
|
|
214
|
+
if (hash.equals(blockHash)) {
|
|
215
|
+
return block;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
getL2BlockByArchive(archive) {
|
|
221
|
+
const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
|
|
222
|
+
return Promise.resolve(block);
|
|
160
223
|
}
|
|
161
224
|
async getBlockHeaderByHash(blockHash) {
|
|
162
225
|
for (const block of this.l2Blocks){
|
|
163
226
|
const hash = await block.hash();
|
|
164
227
|
if (hash.equals(blockHash)) {
|
|
165
|
-
return block.
|
|
228
|
+
return block.header;
|
|
166
229
|
}
|
|
167
230
|
}
|
|
168
231
|
return undefined;
|
|
169
232
|
}
|
|
170
233
|
getBlockHeaderByArchive(archive) {
|
|
171
234
|
const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
|
|
172
|
-
return Promise.resolve(block?.
|
|
235
|
+
return Promise.resolve(block?.header);
|
|
236
|
+
}
|
|
237
|
+
async getBlockData(number) {
|
|
238
|
+
const block = this.l2Blocks[number - 1];
|
|
239
|
+
if (!block) {
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
header: block.header,
|
|
244
|
+
archive: block.archive,
|
|
245
|
+
blockHash: await block.hash(),
|
|
246
|
+
checkpointNumber: block.checkpointNumber,
|
|
247
|
+
indexWithinCheckpoint: block.indexWithinCheckpoint
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
async getBlockDataByArchive(archive) {
|
|
251
|
+
const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
|
|
252
|
+
if (!block) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
header: block.header,
|
|
257
|
+
archive: block.archive,
|
|
258
|
+
blockHash: await block.hash(),
|
|
259
|
+
checkpointNumber: block.checkpointNumber,
|
|
260
|
+
indexWithinCheckpoint: block.indexWithinCheckpoint
|
|
261
|
+
};
|
|
173
262
|
}
|
|
174
263
|
getBlockHeader(number) {
|
|
175
|
-
return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.
|
|
264
|
+
return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.header);
|
|
176
265
|
}
|
|
177
266
|
getCheckpointsForEpoch(epochNumber) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
267
|
+
return Promise.resolve(this.getCheckpointsInEpoch(epochNumber));
|
|
268
|
+
}
|
|
269
|
+
getCheckpointsDataForEpoch(epochNumber) {
|
|
270
|
+
const checkpoints = this.getCheckpointsInEpoch(epochNumber);
|
|
271
|
+
return Promise.resolve(checkpoints.map((checkpoint)=>({
|
|
272
|
+
checkpointNumber: checkpoint.number,
|
|
273
|
+
header: checkpoint.header,
|
|
274
|
+
archive: checkpoint.archive,
|
|
275
|
+
checkpointOutHash: computeCheckpointOutHash(checkpoint.blocks.map((b)=>b.body.txEffects.map((tx)=>tx.l2ToL1Msgs))),
|
|
276
|
+
startBlock: checkpoint.blocks[0].number,
|
|
277
|
+
blockCount: checkpoint.blocks.length,
|
|
278
|
+
attestations: [],
|
|
279
|
+
l1: this.mockL1DataForCheckpoint(checkpoint)
|
|
280
|
+
})));
|
|
281
|
+
}
|
|
282
|
+
getCheckpointedBlocksForEpoch(epochNumber) {
|
|
283
|
+
const checkpoints = this.getCheckpointsInEpoch(epochNumber);
|
|
284
|
+
return Promise.resolve(checkpoints.flatMap((checkpoint)=>checkpoint.blocks.map((block)=>this.toCheckpointedBlock(block))));
|
|
285
|
+
}
|
|
286
|
+
getBlocksForSlot(slotNumber) {
|
|
287
|
+
const blocks = this.l2Blocks.filter((b)=>b.header.globalVariables.slotNumber === slotNumber);
|
|
190
288
|
return Promise.resolve(blocks);
|
|
191
289
|
}
|
|
192
|
-
async
|
|
193
|
-
const
|
|
194
|
-
return
|
|
290
|
+
async getCheckpointedBlockHeadersForEpoch(epochNumber) {
|
|
291
|
+
const checkpointedBlocks = await this.getCheckpointedBlocksForEpoch(epochNumber);
|
|
292
|
+
return checkpointedBlocks.map((b)=>b.block.header);
|
|
195
293
|
}
|
|
196
294
|
/**
|
|
197
295
|
* Gets a tx effect.
|
|
@@ -209,7 +307,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
209
307
|
return {
|
|
210
308
|
data: txEffect,
|
|
211
309
|
l2BlockNumber: block.number,
|
|
212
|
-
l2BlockHash:
|
|
310
|
+
l2BlockHash: await block.hash(),
|
|
213
311
|
txIndexInBlock: block.body.txEffects.indexOf(txEffect)
|
|
214
312
|
};
|
|
215
313
|
}
|
|
@@ -221,23 +319,26 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
221
319
|
for (const block of this.l2Blocks){
|
|
222
320
|
for (const txEffect of block.body.txEffects){
|
|
223
321
|
if (txEffect.txHash.equals(txHash)) {
|
|
224
|
-
|
|
322
|
+
// In mock, assume all txs are checkpointed with successful execution
|
|
323
|
+
return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), await block.hash(), block.number, getEpochAtSlot(block.slot, EmptyL1RollupConstants));
|
|
225
324
|
}
|
|
226
325
|
}
|
|
227
326
|
}
|
|
228
327
|
return undefined;
|
|
229
328
|
}
|
|
230
329
|
async getL2Tips() {
|
|
231
|
-
const [latest, proven, finalized, checkpointed] = [
|
|
330
|
+
const [latest, proven, finalized, checkpointed, proposedCheckpoint] = [
|
|
232
331
|
await this.getBlockNumber(),
|
|
233
332
|
await this.getProvenBlockNumber(),
|
|
234
333
|
this.finalizedBlockNumber,
|
|
235
|
-
this.checkpointedBlockNumber
|
|
334
|
+
this.checkpointedBlockNumber,
|
|
335
|
+
await this.getProposedCheckpointL2BlockNumber()
|
|
236
336
|
];
|
|
237
337
|
const latestBlock = this.l2Blocks[latest - 1];
|
|
238
338
|
const provenBlock = this.l2Blocks[proven - 1];
|
|
239
339
|
const finalizedBlock = this.l2Blocks[finalized - 1];
|
|
240
340
|
const checkpointedBlock = this.l2Blocks[checkpointed - 1];
|
|
341
|
+
const proposedCheckpointBlock = this.l2Blocks[proposedCheckpoint - 1];
|
|
241
342
|
const latestBlockId = {
|
|
242
343
|
number: BlockNumber(latest),
|
|
243
344
|
hash: (await latestBlock?.hash())?.toString()
|
|
@@ -254,10 +355,14 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
254
355
|
number: BlockNumber(checkpointed),
|
|
255
356
|
hash: (await checkpointedBlock?.hash())?.toString()
|
|
256
357
|
};
|
|
358
|
+
const proposedCheckpointBlockId = {
|
|
359
|
+
number: BlockNumber(proposedCheckpoint),
|
|
360
|
+
hash: (await proposedCheckpointBlock?.hash())?.toString()
|
|
361
|
+
};
|
|
257
362
|
const makeTipId = (blockId)=>({
|
|
258
363
|
block: blockId,
|
|
259
364
|
checkpoint: {
|
|
260
|
-
number:
|
|
365
|
+
number: this.findCheckpointNumberForBlock(blockId.number) ?? CheckpointNumber(0),
|
|
261
366
|
hash: blockId.hash
|
|
262
367
|
}
|
|
263
368
|
});
|
|
@@ -265,13 +370,14 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
265
370
|
proposed: latestBlockId,
|
|
266
371
|
checkpointed: makeTipId(checkpointedBlockId),
|
|
267
372
|
proven: makeTipId(provenBlockId),
|
|
268
|
-
finalized: makeTipId(finalizedBlockId)
|
|
373
|
+
finalized: makeTipId(finalizedBlockId),
|
|
374
|
+
proposedCheckpoint: makeTipId(proposedCheckpointBlockId)
|
|
269
375
|
};
|
|
270
376
|
}
|
|
271
|
-
|
|
377
|
+
getSyncedL2EpochNumber() {
|
|
272
378
|
throw new Error('Method not implemented.');
|
|
273
379
|
}
|
|
274
|
-
|
|
380
|
+
getSyncedL2SlotNumber() {
|
|
275
381
|
throw new Error('Method not implemented.');
|
|
276
382
|
}
|
|
277
383
|
isEpochComplete(_epochNumber) {
|
|
@@ -331,4 +437,29 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
331
437
|
valid: true
|
|
332
438
|
});
|
|
333
439
|
}
|
|
440
|
+
getProposedCheckpoint() {
|
|
441
|
+
return Promise.resolve(undefined);
|
|
442
|
+
}
|
|
443
|
+
getProposedCheckpointOnly() {
|
|
444
|
+
return Promise.resolve(undefined);
|
|
445
|
+
}
|
|
446
|
+
/** Returns checkpoints whose slot falls within the given epoch. */ getCheckpointsInEpoch(epochNumber) {
|
|
447
|
+
const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
|
|
448
|
+
const [start, end] = getSlotRangeForEpoch(epochNumber, {
|
|
449
|
+
epochDuration
|
|
450
|
+
});
|
|
451
|
+
return this.checkpointList.filter((c)=>c.header.slotNumber >= start && c.header.slotNumber <= end);
|
|
452
|
+
}
|
|
453
|
+
/** Creates a mock L1PublishedData for a checkpoint. */ mockL1DataForCheckpoint(checkpoint) {
|
|
454
|
+
return new L1PublishedData(BigInt(checkpoint.number), BigInt(checkpoint.number), Buffer32.random().toString());
|
|
455
|
+
}
|
|
456
|
+
/** Creates a CheckpointedL2Block from a block using stored checkpoint info. */ toCheckpointedBlock(block) {
|
|
457
|
+
const checkpoint = this.checkpointList.find((c)=>c.blocks.some((b)=>b.number === block.number));
|
|
458
|
+
const checkpointNumber = checkpoint?.number ?? block.checkpointNumber;
|
|
459
|
+
return new CheckpointedL2Block(checkpointNumber, block, new L1PublishedData(BigInt(block.number), BigInt(block.number), `0x${block.number.toString(16).padStart(64, '0')}`), []);
|
|
460
|
+
}
|
|
461
|
+
/** Finds the checkpoint number for a block, or undefined if the block is not in any checkpoint. */ findCheckpointNumberForBlock(blockNumber) {
|
|
462
|
+
const checkpoint = this.checkpointList.find((c)=>c.blocks.some((b)=>b.number === blockNumber));
|
|
463
|
+
return checkpoint?.number;
|
|
464
|
+
}
|
|
334
465
|
}
|