@aztec/archiver 0.0.1-commit.b655e406 → 0.0.1-commit.d3ec352c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dest/archiver/archiver.d.ts +53 -40
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +333 -221
  4. package/dest/archiver/archiver_store.d.ts +16 -15
  5. package/dest/archiver/archiver_store.d.ts.map +1 -1
  6. package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
  7. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  8. package/dest/archiver/archiver_store_test_suite.js +85 -84
  9. package/dest/archiver/config.d.ts +1 -1
  10. package/dest/archiver/config.d.ts.map +1 -1
  11. package/dest/archiver/config.js +5 -0
  12. package/dest/archiver/data_retrieval.d.ts +18 -17
  13. package/dest/archiver/data_retrieval.d.ts.map +1 -1
  14. package/dest/archiver/data_retrieval.js +111 -86
  15. package/dest/archiver/errors.d.ts +1 -1
  16. package/dest/archiver/errors.d.ts.map +1 -1
  17. package/dest/archiver/index.d.ts +1 -1
  18. package/dest/archiver/instrumentation.d.ts +3 -3
  19. package/dest/archiver/instrumentation.d.ts.map +1 -1
  20. package/dest/archiver/kv_archiver_store/block_store.d.ts +9 -8
  21. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  22. package/dest/archiver/kv_archiver_store/block_store.js +8 -7
  23. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +1 -1
  24. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
  25. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +1 -1
  26. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
  27. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +18 -17
  28. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  29. package/dest/archiver/kv_archiver_store/log_store.d.ts +1 -1
  30. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  31. package/dest/archiver/kv_archiver_store/log_store.js +3 -2
  32. package/dest/archiver/kv_archiver_store/message_store.d.ts +1 -1
  33. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
  34. package/dest/archiver/structs/data_retrieval.d.ts +1 -1
  35. package/dest/archiver/structs/inbox_message.d.ts +3 -3
  36. package/dest/archiver/structs/inbox_message.d.ts.map +1 -1
  37. package/dest/archiver/structs/inbox_message.js +2 -1
  38. package/dest/archiver/structs/published.d.ts +3 -2
  39. package/dest/archiver/structs/published.d.ts.map +1 -1
  40. package/dest/archiver/validation.d.ts +10 -4
  41. package/dest/archiver/validation.d.ts.map +1 -1
  42. package/dest/archiver/validation.js +29 -21
  43. package/dest/factory.d.ts +1 -1
  44. package/dest/factory.d.ts.map +1 -1
  45. package/dest/factory.js +3 -2
  46. package/dest/index.d.ts +2 -2
  47. package/dest/index.d.ts.map +1 -1
  48. package/dest/index.js +1 -1
  49. package/dest/rpc/index.d.ts +2 -2
  50. package/dest/test/index.d.ts +1 -1
  51. package/dest/test/mock_archiver.d.ts +14 -5
  52. package/dest/test/mock_archiver.d.ts.map +1 -1
  53. package/dest/test/mock_archiver.js +19 -10
  54. package/dest/test/mock_l1_to_l2_message_source.d.ts +4 -2
  55. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  56. package/dest/test/mock_l1_to_l2_message_source.js +7 -2
  57. package/dest/test/mock_l2_block_source.d.ts +14 -9
  58. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  59. package/dest/test/mock_l2_block_source.js +20 -7
  60. package/dest/test/mock_structs.d.ts +1 -1
  61. package/dest/test/mock_structs.d.ts.map +1 -1
  62. package/dest/test/mock_structs.js +3 -2
  63. package/package.json +17 -17
  64. package/src/archiver/archiver.ts +448 -290
  65. package/src/archiver/archiver_store.ts +19 -14
  66. package/src/archiver/archiver_store_test_suite.ts +111 -79
  67. package/src/archiver/config.ts +5 -0
  68. package/src/archiver/data_retrieval.ts +157 -125
  69. package/src/archiver/instrumentation.ts +2 -2
  70. package/src/archiver/kv_archiver_store/block_store.ts +17 -16
  71. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +16 -15
  72. package/src/archiver/kv_archiver_store/log_store.ts +3 -2
  73. package/src/archiver/structs/inbox_message.ts +5 -4
  74. package/src/archiver/structs/published.ts +2 -1
  75. package/src/archiver/validation.ts +52 -27
  76. package/src/factory.ts +3 -2
  77. package/src/index.ts +1 -1
  78. package/src/test/mock_archiver.ts +22 -11
  79. package/src/test/mock_l1_to_l2_message_source.ts +9 -3
  80. package/src/test/mock_l2_block_source.ts +30 -13
  81. package/src/test/mock_structs.ts +3 -2
@@ -1,31 +1,32 @@
1
+ import { type CheckpointBlobData } from '@aztec/blob-lib';
1
2
  import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
2
3
  import type { ViemClient, ViemPublicClient } from '@aztec/ethereum';
4
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
3
5
  import type { EthAddress } from '@aztec/foundation/eth-address';
4
6
  import { Fr } from '@aztec/foundation/fields';
5
7
  import { type Logger } from '@aztec/foundation/log';
6
8
  import { type InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
7
- import { CommitteeAttestation, PublishedL2Block } from '@aztec/stdlib/block';
9
+ import { CommitteeAttestation } from '@aztec/stdlib/block';
10
+ import { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
8
11
  import { Proof } from '@aztec/stdlib/proofs';
9
12
  import { CheckpointHeader } from '@aztec/stdlib/rollup';
10
- import { StateReference } from '@aztec/stdlib/tx';
11
13
  import { type GetContractReturnType, type Hex } from 'viem';
12
14
  import type { DataRetrieval } from './structs/data_retrieval.js';
13
15
  import type { InboxMessage } from './structs/inbox_message.js';
14
16
  import type { L1PublishedData } from './structs/published.js';
15
- export type RetrievedL2Block = {
16
- l2BlockNumber: number;
17
+ export type RetrievedCheckpoint = {
18
+ checkpointNumber: CheckpointNumber;
17
19
  archiveRoot: Fr;
18
- stateReference: StateReference;
19
20
  header: CheckpointHeader;
20
- blobFields: Fr[];
21
+ checkpointBlobData: CheckpointBlobData;
21
22
  l1: L1PublishedData;
22
23
  chainId: Fr;
23
24
  version: Fr;
24
25
  attestations: CommitteeAttestation[];
25
26
  };
26
- export declare function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Block): Promise<PublishedL2Block>;
27
+ export declare function retrievedToPublishedCheckpoint({ checkpointNumber, archiveRoot, header: checkpointHeader, checkpointBlobData, l1, chainId, version, attestations }: RetrievedCheckpoint): Promise<PublishedCheckpoint>;
27
28
  /**
28
- * Fetches new L2 blocks.
29
+ * Fetches new checkpoints.
29
30
  * @param publicClient - The viem public client to use for transaction retrieval.
30
31
  * @param rollupAddress - The address of the rollup contract.
31
32
  * @param searchStartBlock - The block number to use for starting the search.
@@ -33,7 +34,7 @@ export declare function retrievedBlockToPublishedL2Block(retrievedBlock: Retriev
33
34
  * @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
34
35
  * @returns An array of block; as well as the next eth block to search from.
35
36
  */
36
- export declare function retrieveBlocksFromRollup(rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>, publicClient: ViemPublicClient, blobSinkClient: BlobSinkClientInterface, searchStartBlock: bigint, searchEndBlock: bigint, logger?: Logger): Promise<RetrievedL2Block[]>;
37
+ export declare function retrieveCheckpointsFromRollup(rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>, publicClient: ViemPublicClient, blobSinkClient: BlobSinkClientInterface, searchStartBlock: bigint, searchEndBlock: bigint, logger?: Logger): Promise<RetrievedCheckpoint[]>;
37
38
  export declare function getL1BlockTime(publicClient: ViemPublicClient, blockNumber: bigint): Promise<bigint>;
38
39
  /** Given an L1 to L2 message, retrieves its corresponding event from the Inbox within a specific block range. */
39
40
  export declare function retrieveL1ToL2Message(inbox: GetContractReturnType<typeof InboxAbi, ViemClient>, leaf: Fr, fromBlock: bigint, toBlock: bigint): Promise<InboxMessage | undefined>;
@@ -50,7 +51,7 @@ export declare function retrieveL1ToL2Messages(inbox: GetContractReturnType<type
50
51
  /** Retrieves L2ProofVerified events from the rollup contract. */
51
52
  export declare function retrieveL2ProofVerifiedEvents(publicClient: ViemPublicClient, rollupAddress: EthAddress, searchStartBlock: bigint, searchEndBlock?: bigint): Promise<{
52
53
  l1BlockNumber: bigint;
53
- l2BlockNumber: number;
54
+ checkpointNumber: CheckpointNumber;
54
55
  proverId: Fr;
55
56
  txHash: Hex;
56
57
  }[]>;
@@ -58,22 +59,22 @@ export declare function retrieveL2ProofVerifiedEvents(publicClient: ViemPublicCl
58
59
  export declare function retrieveL2ProofsFromRollup(publicClient: ViemPublicClient, rollupAddress: EthAddress, searchStartBlock: bigint, searchEndBlock?: bigint): Promise<DataRetrieval<{
59
60
  proof: Proof;
60
61
  proverId: Fr;
61
- l2BlockNumber: number;
62
+ checkpointNumber: number;
62
63
  txHash: `0x${string}`;
63
64
  }>>;
64
- export type SubmitBlockProof = {
65
+ export type SubmitEpochProof = {
65
66
  archiveRoot: Fr;
66
67
  proverId: Fr;
67
68
  proof: Proof;
68
69
  };
69
70
  /**
70
- * Gets block metadata (header and archive snapshot) from the calldata of an L1 transaction.
71
+ * Gets epoch proof metadata (archive root and proof) from the calldata of an L1 transaction.
71
72
  * Assumes that the block was published from an EOA.
72
73
  * TODO: Add retries and error management.
73
74
  * @param publicClient - The viem public client to use for transaction retrieval.
74
75
  * @param txHash - Hash of the tx that published it.
75
- * @param l2BlockNum - L2 block number.
76
- * @returns L2 block metadata (header and archive) from the calldata, deserialized
76
+ * @param expectedProverId - Expected prover ID.
77
+ * @returns Epoch proof metadata from the calldata, deserialized.
77
78
  */
78
- export declare function getProofFromSubmitProofTx(publicClient: ViemPublicClient, txHash: `0x${string}`, expectedProverId: Fr): Promise<SubmitBlockProof>;
79
- //# sourceMappingURL=data_retrieval.d.ts.map
79
+ export declare function getProofFromSubmitProofTx(publicClient: ViemPublicClient, txHash: `0x${string}`, expectedProverId: Fr): Promise<SubmitEpochProof>;
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9kYXRhX3JldHJpZXZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUVWLFVBQVUsRUFHVixnQkFBZ0IsRUFDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVoRixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQVEsb0JBQW9CLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQWMsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUtULE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsZUFBZSxF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
@@ -1 +1 @@
1
- {"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
@@ -1,78 +1,104 @@
1
- import { BlobDeserializationError, SpongeBlob, getBlobFieldsInCheckpoint } from '@aztec/blob-lib';
1
+ import { BlobDeserializationError, SpongeBlob, decodeCheckpointBlobDataFromBlobs, encodeBlockBlobData } from '@aztec/blob-lib';
2
2
  import { asyncPool } from '@aztec/foundation/async-pool';
3
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
4
  import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
4
5
  import { Fr } from '@aztec/foundation/fields';
5
6
  import { createLogger } from '@aztec/foundation/log';
6
7
  import { RollupAbi } from '@aztec/l1-artifacts';
7
- import { Body, CommitteeAttestation, L2Block, L2BlockHeader, PublishedL2Block } from '@aztec/stdlib/block';
8
+ import { Body, CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
9
+ import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
8
10
  import { Proof } from '@aztec/stdlib/proofs';
9
11
  import { CheckpointHeader } from '@aztec/stdlib/rollup';
10
12
  import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
11
- import { GlobalVariables, StateReference } from '@aztec/stdlib/tx';
13
+ import { BlockHeader, GlobalVariables, PartialStateReference, StateReference } from '@aztec/stdlib/tx';
12
14
  import { decodeFunctionData, getAbiItem, hexToBytes, multicall3Abi } from 'viem';
13
15
  import { NoBlobBodiesFoundError } from './errors.js';
14
- export async function retrievedBlockToPublishedL2Block(retrievedBlock) {
15
- const { l2BlockNumber, archiveRoot, stateReference, header: checkpointHeader, blobFields, l1, chainId, version, attestations } = retrievedBlock;
16
- const archive = new AppendOnlyTreeSnapshot(archiveRoot, l2BlockNumber + 1);
17
- const globalVariables = GlobalVariables.from({
18
- chainId,
19
- version,
20
- blockNumber: l2BlockNumber,
21
- slotNumber: checkpointHeader.slotNumber,
22
- timestamp: checkpointHeader.timestamp,
23
- coinbase: checkpointHeader.coinbase,
24
- feeRecipient: checkpointHeader.feeRecipient,
25
- gasFees: checkpointHeader.gasFees
26
- });
27
- // TODO(#17027)
28
- // This works when there's only one block in the checkpoint.
29
- // If there's more than one block, we need to build the spongeBlob from the endSpongeBlob of the previous block.
30
- const spongeBlob = await SpongeBlob.init(blobFields.length);
31
- // Skip the first field which is the checkpoint prefix indicating the number of total blob fields in a checkpoint.
32
- const blockBlobFields = blobFields.slice(1);
33
- await spongeBlob.absorb(blockBlobFields);
34
- const spongeBlobHash = await spongeBlob.squeeze();
35
- const body = Body.fromBlobFields(blockBlobFields);
36
- const header = L2BlockHeader.from({
37
- lastArchive: new AppendOnlyTreeSnapshot(checkpointHeader.lastArchiveRoot, l2BlockNumber),
38
- contentCommitment: checkpointHeader.contentCommitment,
39
- state: stateReference,
40
- globalVariables,
41
- totalFees: body.txEffects.reduce((accum, txEffect)=>accum.add(txEffect.transactionFee), Fr.ZERO),
42
- totalManaUsed: checkpointHeader.totalManaUsed,
43
- spongeBlobHash
16
+ export async function retrievedToPublishedCheckpoint({ checkpointNumber, archiveRoot, header: checkpointHeader, checkpointBlobData, l1, chainId, version, attestations }) {
17
+ const { blocks: blocksBlobData } = checkpointBlobData;
18
+ // The lastArchiveRoot of a block is the new archive for the previous block.
19
+ const newArchiveRoots = blocksBlobData.map((b)=>b.lastArchiveRoot).slice(1).concat([
20
+ archiveRoot
21
+ ]);
22
+ // `blocksBlobData` is created from `decodeCheckpointBlobDataFromBlobs`. An error will be thrown if it can't read a
23
+ // field for the `l1ToL2MessageRoot` of the first block. So below we can safely assume it exists:
24
+ const l1toL2MessageTreeRoot = blocksBlobData[0].l1ToL2MessageRoot;
25
+ const spongeBlob = SpongeBlob.init();
26
+ const l2Blocks = [];
27
+ for(let i = 0; i < blocksBlobData.length; i++){
28
+ const blockBlobData = blocksBlobData[i];
29
+ const { blockEndMarker, blockEndStateField, lastArchiveRoot, noteHashRoot, nullifierRoot, publicDataRoot } = blockBlobData;
30
+ const l2BlockNumber = blockEndMarker.blockNumber;
31
+ const globalVariables = GlobalVariables.from({
32
+ chainId,
33
+ version,
34
+ blockNumber: l2BlockNumber,
35
+ slotNumber: checkpointHeader.slotNumber,
36
+ timestamp: blockEndMarker.timestamp,
37
+ coinbase: checkpointHeader.coinbase,
38
+ feeRecipient: checkpointHeader.feeRecipient,
39
+ gasFees: checkpointHeader.gasFees
40
+ });
41
+ const state = StateReference.from({
42
+ l1ToL2MessageTree: new AppendOnlyTreeSnapshot(l1toL2MessageTreeRoot, blockEndStateField.l1ToL2MessageNextAvailableLeafIndex),
43
+ partial: PartialStateReference.from({
44
+ noteHashTree: new AppendOnlyTreeSnapshot(noteHashRoot, blockEndStateField.noteHashNextAvailableLeafIndex),
45
+ nullifierTree: new AppendOnlyTreeSnapshot(nullifierRoot, blockEndStateField.nullifierNextAvailableLeafIndex),
46
+ publicDataTree: new AppendOnlyTreeSnapshot(publicDataRoot, blockEndStateField.publicDataNextAvailableLeafIndex)
47
+ })
48
+ });
49
+ const body = Body.fromTxBlobData(checkpointBlobData.blocks[0].txs);
50
+ const blobFields = encodeBlockBlobData(blockBlobData);
51
+ await spongeBlob.absorb(blobFields);
52
+ const clonedSpongeBlob = spongeBlob.clone();
53
+ const spongeBlobHash = await clonedSpongeBlob.squeeze();
54
+ const header = BlockHeader.from({
55
+ lastArchive: new AppendOnlyTreeSnapshot(lastArchiveRoot, l2BlockNumber),
56
+ state,
57
+ spongeBlobHash,
58
+ globalVariables,
59
+ totalFees: body.txEffects.reduce((accum, txEffect)=>accum.add(txEffect.transactionFee), Fr.ZERO),
60
+ totalManaUsed: new Fr(blockEndStateField.totalManaUsed)
61
+ });
62
+ const newArchive = new AppendOnlyTreeSnapshot(newArchiveRoots[i], l2BlockNumber + 1);
63
+ l2Blocks.push(new L2BlockNew(newArchive, header, body));
64
+ }
65
+ const lastBlock = l2Blocks.at(-1);
66
+ const checkpoint = Checkpoint.from({
67
+ archive: new AppendOnlyTreeSnapshot(archiveRoot, lastBlock.number + 1),
68
+ header: checkpointHeader,
69
+ blocks: l2Blocks,
70
+ number: checkpointNumber
44
71
  });
45
- const block = new L2Block(archive, header, body);
46
- return PublishedL2Block.fromFields({
47
- block,
72
+ return PublishedCheckpoint.from({
73
+ checkpoint,
48
74
  l1,
49
75
  attestations
50
76
  });
51
77
  }
52
78
  /**
53
- * Fetches new L2 blocks.
79
+ * Fetches new checkpoints.
54
80
  * @param publicClient - The viem public client to use for transaction retrieval.
55
81
  * @param rollupAddress - The address of the rollup contract.
56
82
  * @param searchStartBlock - The block number to use for starting the search.
57
83
  * @param searchEndBlock - The highest block number that we should search up to.
58
84
  * @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
59
85
  * @returns An array of block; as well as the next eth block to search from.
60
- */ export async function retrieveBlocksFromRollup(rollup, publicClient, blobSinkClient, searchStartBlock, searchEndBlock, logger = createLogger('archiver')) {
61
- const retrievedBlocks = [];
86
+ */ export async function retrieveCheckpointsFromRollup(rollup, publicClient, blobSinkClient, searchStartBlock, searchEndBlock, logger = createLogger('archiver')) {
87
+ const retrievedCheckpoints = [];
62
88
  let rollupConstants;
63
89
  do {
64
90
  if (searchStartBlock > searchEndBlock) {
65
91
  break;
66
92
  }
67
- const l2BlockProposedLogs = (await rollup.getEvents.L2BlockProposed({}, {
93
+ const checkpointProposedLogs = (await rollup.getEvents.CheckpointProposed({}, {
68
94
  fromBlock: searchStartBlock,
69
95
  toBlock: searchEndBlock
70
96
  })).filter((log)=>log.blockNumber >= searchStartBlock && log.blockNumber <= searchEndBlock);
71
- if (l2BlockProposedLogs.length === 0) {
97
+ if (checkpointProposedLogs.length === 0) {
72
98
  break;
73
99
  }
74
- const lastLog = l2BlockProposedLogs[l2BlockProposedLogs.length - 1];
75
- logger.debug(`Got ${l2BlockProposedLogs.length} L2 block processed logs for L2 blocks ${l2BlockProposedLogs[0].args.blockNumber}-${lastLog.args.blockNumber} between L1 blocks ${searchStartBlock}-${searchEndBlock}`);
100
+ const lastLog = checkpointProposedLogs.at(-1);
101
+ logger.debug(`Got ${checkpointProposedLogs.length} processed logs for checkpoints ${checkpointProposedLogs[0].args.checkpointNumber}-${lastLog.args.checkpointNumber} between L1 blocks ${searchStartBlock}-${searchEndBlock}`);
76
102
  if (rollupConstants === undefined) {
77
103
  const [chainId, version, targetCommitteeSize] = await Promise.all([
78
104
  publicClient.getChainId(),
@@ -85,56 +111,56 @@ export async function retrievedBlockToPublishedL2Block(retrievedBlock) {
85
111
  targetCommitteeSize: Number(targetCommitteeSize)
86
112
  };
87
113
  }
88
- const newBlocks = await processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, l2BlockProposedLogs, rollupConstants, logger);
89
- retrievedBlocks.push(...newBlocks);
114
+ const newCheckpoints = await processCheckpointProposedLogs(rollup, publicClient, blobSinkClient, checkpointProposedLogs, rollupConstants, logger);
115
+ retrievedCheckpoints.push(...newCheckpoints);
90
116
  searchStartBlock = lastLog.blockNumber + 1n;
91
117
  }while (searchStartBlock <= searchEndBlock)
92
- // The asyncpool from processL2BlockProposedLogs will not necessarily return the blocks in order, so we sort them before returning.
93
- return retrievedBlocks.sort((a, b)=>Number(a.l1.blockNumber - b.l1.blockNumber));
118
+ // The asyncPool from processCheckpointProposedLogs will not necessarily return the checkpoints in order, so we sort them before returning.
119
+ return retrievedCheckpoints.sort((a, b)=>Number(a.l1.blockNumber - b.l1.blockNumber));
94
120
  }
95
121
  /**
96
- * Processes newly received L2BlockProposed logs.
122
+ * Processes newly received CheckpointProposed logs.
97
123
  * @param rollup - The rollup contract
98
124
  * @param publicClient - The viem public client to use for transaction retrieval.
99
- * @param logs - L2BlockProposed logs.
100
- * @returns - An array blocks.
101
- */ async function processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, logs, { chainId, version, targetCommitteeSize }, logger) {
102
- const retrievedBlocks = [];
125
+ * @param logs - CheckpointProposed logs.
126
+ * @returns - An array of checkpoints.
127
+ */ async function processCheckpointProposedLogs(rollup, publicClient, blobSinkClient, logs, { chainId, version, targetCommitteeSize }, logger) {
128
+ const retrievedCheckpoints = [];
103
129
  await asyncPool(10, logs, async (log)=>{
104
- const l2BlockNumber = Number(log.args.blockNumber);
130
+ const checkpointNumber = CheckpointNumber.fromBigInt(log.args.checkpointNumber);
105
131
  const archive = log.args.archive;
106
132
  const archiveFromChain = await rollup.read.archiveAt([
107
- BigInt(l2BlockNumber)
133
+ BigInt(checkpointNumber)
108
134
  ]);
109
135
  const blobHashes = log.args.versionedBlobHashes.map((blobHash)=>Buffer.from(blobHash.slice(2), 'hex'));
110
- // The value from the event and contract will match only if the block is in the chain.
136
+ // The value from the event and contract will match only if the checkpoint is in the chain.
111
137
  if (archive === archiveFromChain) {
112
- const block = await getBlockFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, l2BlockNumber, rollup.address, targetCommitteeSize, logger);
138
+ const checkpoint = await getCheckpointFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, checkpointNumber, rollup.address, targetCommitteeSize, logger);
113
139
  const l1 = {
114
140
  blockNumber: log.blockNumber,
115
141
  blockHash: log.blockHash,
116
142
  timestamp: await getL1BlockTime(publicClient, log.blockNumber)
117
143
  };
118
- retrievedBlocks.push({
119
- ...block,
144
+ retrievedCheckpoints.push({
145
+ ...checkpoint,
120
146
  l1,
121
147
  chainId,
122
148
  version
123
149
  });
124
- logger.trace(`Retrieved L2 block ${l2BlockNumber} from L1 tx ${log.transactionHash}`, {
150
+ logger.trace(`Retrieved checkpoint ${checkpointNumber} from L1 tx ${log.transactionHash}`, {
125
151
  l1BlockNumber: log.blockNumber,
126
- l2BlockNumber,
152
+ checkpointNumber,
127
153
  archive: archive.toString(),
128
- attestations: block.attestations
154
+ attestations: checkpoint.attestations
129
155
  });
130
156
  } else {
131
- logger.warn(`Ignoring L2 block ${l2BlockNumber} due to archive root mismatch`, {
157
+ logger.warn(`Ignoring checkpoint ${checkpointNumber} due to archive root mismatch`, {
132
158
  actual: archive,
133
159
  expected: archiveFromChain
134
160
  });
135
161
  }
136
162
  });
137
- return retrievedBlocks;
163
+ return retrievedCheckpoints;
138
164
  }
139
165
  export async function getL1BlockTime(publicClient, blockNumber) {
140
166
  const block = await publicClient.getBlock({
@@ -183,14 +209,15 @@ export async function getL1BlockTime(publicClient, blockNumber) {
183
209
  throw new Error(`Rollup address not found in multicall3 args`);
184
210
  }
185
211
  /**
186
- * Gets block from the calldata of an L1 transaction.
187
- * Assumes that the block was published from an EOA.
212
+ * Gets checkpoint from the calldata of an L1 transaction.
213
+ * Assumes that the checkpoint was published from an EOA.
188
214
  * TODO: Add retries and error management.
189
215
  * @param publicClient - The viem public client to use for transaction retrieval.
190
216
  * @param txHash - Hash of the tx that published it.
191
- * @param l2BlockNumber - L2 block number.
192
- * @returns L2 block from the calldata, deserialized
193
- */ async function getBlockFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, l2BlockNumber, rollupAddress, targetCommitteeSize, logger) {
217
+ * @param checkpointNumber - Checkpoint number.
218
+ * @returns Checkpoint from the calldata, deserialized
219
+ */ async function getCheckpointFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, checkpointNumber, rollupAddress, targetCommitteeSize, logger) {
220
+ logger.trace(`Fetching checkpoint ${checkpointNumber} from rollup tx ${txHash}`);
194
221
  const { input: forwarderData, blockHash } = await publicClient.getTransaction({
195
222
  hash: txHash
196
223
  });
@@ -205,10 +232,10 @@ export async function getL1BlockTime(publicClient, blockNumber) {
205
232
  const [decodedArgs, packedAttestations, _signers, _blobInput] = rollupArgs;
206
233
  const attestations = CommitteeAttestation.fromPacked(packedAttestations, targetCommitteeSize);
207
234
  logger.trace(`Recovered propose calldata from tx ${txHash}`, {
208
- l2BlockNumber,
235
+ checkpointNumber,
209
236
  archive: decodedArgs.archive,
210
- stateReference: decodedArgs.stateReference,
211
237
  header: decodedArgs.header,
238
+ l1BlockHash: blockHash,
212
239
  blobHashes,
213
240
  attestations,
214
241
  packedAttestations,
@@ -217,12 +244,12 @@ export async function getL1BlockTime(publicClient, blockNumber) {
217
244
  const header = CheckpointHeader.fromViem(decodedArgs.header);
218
245
  const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes);
219
246
  if (blobBodies.length === 0) {
220
- throw new NoBlobBodiesFoundError(l2BlockNumber);
247
+ throw new NoBlobBodiesFoundError(checkpointNumber);
221
248
  }
222
- let blobFields;
249
+ let checkpointBlobData;
223
250
  try {
224
- // Get the fields that were actually added in the checkpoint. And check the encoding of the fields.
225
- blobFields = getBlobFieldsInCheckpoint(blobBodies.map((b)=>b.blob), true);
251
+ // Attempt to decode the checkpoint blob data.
252
+ checkpointBlobData = decodeCheckpointBlobDataFromBlobs(blobBodies.map((b)=>b.blob));
226
253
  } catch (err) {
227
254
  if (err instanceof BlobDeserializationError) {
228
255
  logger.fatal(err.message);
@@ -232,13 +259,11 @@ export async function getL1BlockTime(publicClient, blockNumber) {
232
259
  throw err;
233
260
  }
234
261
  const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive)));
235
- const stateReference = StateReference.fromViem(decodedArgs.stateReference);
236
262
  return {
237
- l2BlockNumber,
263
+ checkpointNumber,
238
264
  archiveRoot,
239
- stateReference,
240
265
  header,
241
- blobFields,
266
+ checkpointBlobData,
242
267
  attestations
243
268
  };
244
269
  }
@@ -277,13 +302,13 @@ export async function getL1BlockTime(publicClient, blockNumber) {
277
302
  }
278
303
  function mapLogsInboxMessage(logs) {
279
304
  return logs.map((log)=>{
280
- const { index, hash, l2BlockNumber, rollingHash } = log.args;
305
+ const { index, hash, checkpointNumber, rollingHash } = log.args;
281
306
  return {
282
307
  index: index,
283
308
  leaf: Fr.fromHexString(hash),
284
309
  l1BlockNumber: log.blockNumber,
285
310
  l1BlockHash: Buffer32.fromString(log.blockHash),
286
- l2BlockNumber: Number(l2BlockNumber),
311
+ l2BlockNumber: BlockNumber(Number(checkpointNumber)),
287
312
  rollingHash: Buffer16.fromString(rollingHash)
288
313
  };
289
314
  });
@@ -301,7 +326,7 @@ function mapLogsInboxMessage(logs) {
301
326
  });
302
327
  return logs.map((log)=>({
303
328
  l1BlockNumber: log.blockNumber,
304
- l2BlockNumber: Number(log.args.blockNumber),
329
+ checkpointNumber: CheckpointNumber.fromBigInt(log.args.checkpointNumber),
305
330
  proverId: Fr.fromHexString(log.args.proverId),
306
331
  txHash: log.transactionHash
307
332
  }));
@@ -310,12 +335,12 @@ function mapLogsInboxMessage(logs) {
310
335
  const logs = await retrieveL2ProofVerifiedEvents(publicClient, rollupAddress, searchStartBlock, searchEndBlock);
311
336
  const retrievedData = [];
312
337
  const lastProcessedL1BlockNumber = logs.length > 0 ? logs.at(-1).l1BlockNumber : searchStartBlock - 1n;
313
- for (const { txHash, proverId, l2BlockNumber } of logs){
338
+ for (const { txHash, proverId, checkpointNumber } of logs){
314
339
  const proofData = await getProofFromSubmitProofTx(publicClient, txHash, proverId);
315
340
  retrievedData.push({
316
341
  proof: proofData.proof,
317
342
  proverId: proofData.proverId,
318
- l2BlockNumber,
343
+ checkpointNumber,
319
344
  txHash
320
345
  });
321
346
  }
@@ -325,13 +350,13 @@ function mapLogsInboxMessage(logs) {
325
350
  };
326
351
  }
327
352
  /**
328
- * Gets block metadata (header and archive snapshot) from the calldata of an L1 transaction.
353
+ * Gets epoch proof metadata (archive root and proof) from the calldata of an L1 transaction.
329
354
  * Assumes that the block was published from an EOA.
330
355
  * TODO: Add retries and error management.
331
356
  * @param publicClient - The viem public client to use for transaction retrieval.
332
357
  * @param txHash - Hash of the tx that published it.
333
- * @param l2BlockNum - L2 block number.
334
- * @returns L2 block metadata (header and archive) from the calldata, deserialized
358
+ * @param expectedProverId - Expected prover ID.
359
+ * @returns Epoch proof metadata from the calldata, deserialized.
335
360
  */ export async function getProofFromSubmitProofTx(publicClient, txHash, expectedProverId) {
336
361
  const { input: data } = await publicClient.getTransaction({
337
362
  hash: txHash
@@ -9,4 +9,4 @@ export declare class InitialBlockNumberNotSequentialError extends Error {
9
9
  export declare class BlockNumberNotSequentialError extends Error {
10
10
  constructor(newBlockNumber: number, previous: number | undefined);
11
11
  }
12
- //# sourceMappingURL=errors.d.ts.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFhLHNCQUF1QixTQUFRLEtBQUs7SUFDL0MsWUFBWSxVQUFVLEVBQUUsTUFBTSxFQUU3QjtDQUNGO0FBRUQscUJBQWEsb0NBQXFDLFNBQVEsS0FBSzthQUUzQyxjQUFjLEVBQUUsTUFBTTthQUN0QixtQkFBbUIsRUFBRSxNQUFNLEdBQUcsU0FBUztJQUZ6RCxZQUNrQixjQUFjLEVBQUUsTUFBTSxFQUN0QixtQkFBbUIsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQU94RDtDQUNGO0FBRUQscUJBQWEsNkJBQThCLFNBQVEsS0FBSztJQUN0RCxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBSS9EO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/archiver/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,MAAM;CAG/B;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAE3C,cAAc,EAAE,MAAM;aACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;gBADvC,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;CAQ1D;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;CAKjE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/archiver/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,UAAU,EAAE,MAAM,EAE7B;CACF;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAE3C,cAAc,EAAE,MAAM;aACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;IAFzD,YACkB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAOxD;CACF;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,YAAY,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAI/D;CACF"}
@@ -4,4 +4,4 @@ export { type PublishedL2Block, type L1PublishedData } from './structs/published
4
4
  export type { ArchiverDataStore } from './archiver_store.js';
5
5
  export { KVArchiverDataStore, ARCHIVER_DB_VERSION } from './kv_archiver_store/kv_archiver_store.js';
6
6
  export { ContractInstanceStore } from './kv_archiver_store/contract_instance_store.js';
7
- //# sourceMappingURL=index.d.ts.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSxLQUFLLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDIn0=
@@ -1,4 +1,4 @@
1
- import type { L2Block } from '@aztec/stdlib/block';
1
+ import type { L2BlockNew } from '@aztec/stdlib/block';
2
2
  import { type LmdbStatsCallback, type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
3
3
  export declare class ArchiverInstrumentation {
4
4
  private telemetry;
@@ -21,7 +21,7 @@ export declare class ArchiverInstrumentation {
21
21
  private constructor();
22
22
  static new(telemetry: TelemetryClient, lmdbStats?: LmdbStatsCallback): Promise<ArchiverInstrumentation>;
23
23
  isEnabled(): boolean;
24
- processNewBlocks(syncTimePerBlock: number, blocks: L2Block[]): void;
24
+ processNewBlocks(syncTimePerBlock: number, blocks: L2BlockNew[]): void;
25
25
  processNewMessages(count: number, syncPerMessageMs: number): void;
26
26
  processPrune(duration: number): void;
27
27
  updateLastProvenBlock(blockNumber: number): void;
@@ -32,4 +32,4 @@ export declare class ArchiverInstrumentation {
32
32
  }[]): void;
33
33
  updateL1BlockHeight(blockNumber: bigint): void;
34
34
  }
35
- //# sourceMappingURL=instrumentation.d.ts.map
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFLTCxLQUFLLGlCQUFpQixFQUV0QixLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBR1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxxQkFBYSx1QkFBdUI7SUF3QmhDLE9BQU8sQ0FBQyxTQUFTO0lBdkJuQixTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxXQUFXLENBQVE7SUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBZ0I7SUFDL0IsT0FBTyxDQUFDLGFBQWEsQ0FBUTtJQUM3QixPQUFPLENBQUMsb0JBQW9CLENBQVk7SUFDeEMsT0FBTyxDQUFDLG9CQUFvQixDQUFnQjtJQUM1QyxPQUFPLENBQUMsU0FBUyxDQUFjO0lBRS9CLE9BQU8sQ0FBQyxhQUFhLENBQVk7SUFDakMsT0FBTyxDQUFDLFVBQVUsQ0FBZ0I7SUFFbEMsT0FBTyxDQUFDLG9CQUFvQixDQUFZO0lBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQWdCO0lBQ3RDLE9BQU8sQ0FBQyxZQUFZLENBQVk7SUFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBWTtJQUUvQixPQUFPLENBQUMsc0JBQXNCLENBQVk7SUFDMUMsT0FBTyxDQUFDLGdCQUFnQixDQUFnQjtJQUV4QyxPQUFPLENBQUMsR0FBRyxDQUE0QztJQUV2RCxPQUFPLGVBcUZOO0lBRUQsT0FBb0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDLEVBQUUsaUJBQWlCLG9DQVVoRjtJQUVNLFNBQVMsSUFBSSxPQUFPLENBRTFCO0lBRU0sZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFVckU7SUFFTSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sUUFNaEU7SUFFTSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sUUFHbkM7SUFFTSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxRQUUvQztJQUVNLHFCQUFxQixDQUFDLElBQUksRUFBRTtRQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7UUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQUUsUUFXOUY7SUFFTSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxRQUU3QztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/archiver/instrumentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAKL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,uBAAuB;IAwBhC,OAAO,CAAC,SAAS;IAvBnB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,WAAW,CAAY;IAE/B,OAAO,CAAC,sBAAsB,CAAY;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,GAAG,CAA4C;IAEvD,OAAO;WAuFa,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;IAY1E,SAAS,IAAI,OAAO;IAIpB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAY5D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAQ1D,YAAY,CAAC,QAAQ,EAAE,MAAM;IAK7B,qBAAqB,CAAC,WAAW,EAAE,MAAM;IAIzC,qBAAqB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAaxF,mBAAmB,CAAC,WAAW,EAAE,MAAM;CAG/C"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/archiver/instrumentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAKL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,uBAAuB;IAwBhC,OAAO,CAAC,SAAS;IAvBnB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,WAAW,CAAY;IAE/B,OAAO,CAAC,sBAAsB,CAAY;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,GAAG,CAA4C;IAEvD,OAAO,eAqFN;IAED,OAAoB,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB,oCAUhF;IAEM,SAAS,IAAI,OAAO,CAE1B;IAEM,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAUrE;IAEM,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,QAMhE;IAEM,YAAY,CAAC,QAAQ,EAAE,MAAM,QAGnC;IAEM,qBAAqB,CAAC,WAAW,EAAE,MAAM,QAE/C;IAEM,qBAAqB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,QAW9F;IAEM,mBAAmB,CAAC,WAAW,EAAE,MAAM,QAE7C;CACF"}
@@ -1,3 +1,4 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import { Fr } from '@aztec/foundation/fields';
2
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
4
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -26,20 +27,20 @@ export declare class BlockStore {
26
27
  * @param blocksToUnwind - The number of blocks we are to unwind
27
28
  * @returns True if the operation is successful
28
29
  */
29
- unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean>;
30
+ unwindBlocks(from: BlockNumber, blocksToUnwind: number): Promise<boolean>;
30
31
  /**
31
32
  * Gets up to `limit` amount of L2 blocks starting from `from`.
32
33
  * @param start - Number of the first block to return (inclusive).
33
34
  * @param limit - The number of blocks to return.
34
35
  * @returns The requested L2 blocks
35
36
  */
36
- getBlocks(start: number, limit: number): AsyncIterableIterator<PublishedL2Block>;
37
+ getBlocks(start: BlockNumber, limit: number): AsyncIterableIterator<PublishedL2Block>;
37
38
  /**
38
39
  * Gets an L2 block.
39
40
  * @param blockNumber - The number of the block to return.
40
41
  * @returns The requested L2 block.
41
42
  */
42
- getBlock(blockNumber: number): Promise<PublishedL2Block | undefined>;
43
+ getBlock(blockNumber: BlockNumber): Promise<PublishedL2Block | undefined>;
43
44
  /**
44
45
  * Gets an L2 block by its hash.
45
46
  * @param blockHash - The hash of the block to return.
@@ -70,7 +71,7 @@ export declare class BlockStore {
70
71
  * @param limit - The number of blocks to return.
71
72
  * @returns The requested L2 block headers
72
73
  */
73
- getBlockHeaders(start: number, limit: number): AsyncIterableIterator<BlockHeader>;
74
+ getBlockHeaders(start: BlockNumber, limit: number): AsyncIterableIterator<BlockHeader>;
74
75
  private getBlockStorages;
75
76
  private getBlockFromBlockStorage;
76
77
  /**
@@ -101,15 +102,15 @@ export declare class BlockStore {
101
102
  * Gets the number of the latest L2 block processed.
102
103
  * @returns The number of the latest L2 block processed.
103
104
  */
104
- getSynchedL2BlockNumber(): Promise<number>;
105
+ getSynchedL2BlockNumber(): Promise<BlockNumber>;
105
106
  /**
106
107
  * Gets the most recent L1 block processed.
107
108
  * @returns The L1 block that published the latest L2 block
108
109
  */
109
110
  getSynchedL1BlockNumber(): Promise<bigint | undefined>;
110
111
  setSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<boolean>;
111
- getProvenL2BlockNumber(): Promise<number>;
112
- setProvenL2BlockNumber(blockNumber: number): Promise<boolean>;
112
+ getProvenL2BlockNumber(): Promise<BlockNumber>;
113
+ setProvenL2BlockNumber(blockNumber: BlockNumber): Promise<boolean>;
113
114
  /**
114
115
  * Gets the pending chain validation status.
115
116
  * @returns The validation status or undefined if not set.
@@ -121,4 +122,4 @@ export declare class BlockStore {
121
122
  */
122
123
  setPendingChainValidationStatus(status: ValidateBlockResult | undefined): Promise<void>;
123
124
  }
124
- //# sourceMappingURL=block_store.d.ts.map
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXZlci9rdl9hcmNoaXZlcl9zdG9yZS9ibG9ja19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSzlDLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUE2QyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFJTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLEtBQUssbUJBQW1CLEVBQ3pCLE1BQU0scUJBQXFCLENBQUM7QUFHN0IsT0FBTyxFQUNMLFdBQVcsRUFDWCxLQUFLLGVBQWUsRUFFcEIsTUFBTSxFQUNOLFNBQVMsRUFHVixNQUFNLGtCQUFrQixDQUFDO0FBSzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVl6RTs7R0FFRztBQUNILHFCQUFhLFVBQVU7O0lBOEJULE9BQU8sQ0FBQyxFQUFFO0lBQXRCLFlBQW9CLEVBQUUsRUFBRSxpQkFBaUIsRUFVeEM7SUFFRDs7OztPQUlHO0lBQ0csU0FBUyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLElBQUksR0FBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQTBENUY7SUFFRDs7Ozs7O09BTUc7SUFDRyxZQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFrQzNEO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBTzNGO0lBRUQ7Ozs7T0FJRztJQUNHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsQ0FNOUU7SUFFRDs7OztPQUlHO0lBQ0csY0FBYyxDQUFDLFNBQVMsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxDQU1sRjtJQUVEOzs7O09BSUc7SUFDRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsQ0FNMUU7SUFFRDs7OztPQUlHO0lBQ0csb0JBQW9CLENBQUMsU0FBUyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQVVuRjtJQUVEOzs7O09BSUc7SUFDRyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBVTNFO0lBRUQ7Ozs7O09BS0c7SUFDSSxlQUFlLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQVU1RjtZQUVjLGdCQUFnQjtZQWFqQix3QkFBd0I7SUF1Q3RDOzs7O09BSUc7SUFDRyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxDQU10RTtJQUVEOzs7O09BSUc7SUFDRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBY3hFO0lBRUQ7Ozs7T0FJRztJQUNVLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQU90RztJQUVEOzs7O09BSUc7SUFDSCxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUU1RztJQUVEOzs7T0FHRztJQUNHLHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FHcEQ7SUFFRDs7O09BR0c7SUFDSCx1QkFBdUIsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVyRDtJQUVELHVCQUF1QixDQUFDLGFBQWEsRUFBRSxNQUFNLG9CQUU1QztJQUVLLHNCQUFzQixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FNbkQ7SUFFRCxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxvQkFFOUM7SUFjRDs7O09BR0c7SUFDRywrQkFBK0IsSUFBSSxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBTWhGO0lBRUQ7OztPQUdHO0lBQ0csK0JBQStCLENBQUMsTUFBTSxFQUFFLG1CQUFtQixHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBTzVGO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"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"}