@aztec/archiver 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.76.0

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 (83) hide show
  1. package/dest/archiver/archiver.d.ts +186 -0
  2. package/dest/archiver/archiver.d.ts.map +1 -0
  3. package/dest/archiver/archiver.js +711 -729
  4. package/dest/archiver/archiver_store.d.ts +217 -0
  5. package/dest/archiver/archiver_store.d.ts.map +1 -0
  6. package/dest/archiver/archiver_store.js +2 -4
  7. package/dest/archiver/archiver_store_test_suite.d.ts +8 -0
  8. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -0
  9. package/dest/archiver/archiver_store_test_suite.js +224 -385
  10. package/dest/archiver/config.d.ts +37 -0
  11. package/dest/archiver/config.d.ts.map +1 -0
  12. package/dest/archiver/config.js +15 -9
  13. package/dest/archiver/data_retrieval.d.ts +71 -0
  14. package/dest/archiver/data_retrieval.d.ts.map +1 -0
  15. package/dest/archiver/data_retrieval.js +67 -77
  16. package/dest/archiver/errors.d.ts +4 -0
  17. package/dest/archiver/errors.d.ts.map +1 -0
  18. package/dest/archiver/errors.js +2 -1
  19. package/dest/archiver/index.d.ts +8 -0
  20. package/dest/archiver/index.d.ts.map +1 -0
  21. package/dest/archiver/index.js +1 -0
  22. package/dest/archiver/instrumentation.d.ts +27 -0
  23. package/dest/archiver/instrumentation.d.ts.map +1 -0
  24. package/dest/archiver/instrumentation.js +17 -29
  25. package/dest/archiver/kv_archiver_store/block_store.d.ts +87 -0
  26. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -0
  27. package/dest/archiver/kv_archiver_store/block_store.js +127 -118
  28. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +17 -0
  29. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -0
  30. package/dest/archiver/kv_archiver_store/contract_class_store.js +37 -43
  31. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +13 -0
  32. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -0
  33. package/dest/archiver/kv_archiver_store/contract_instance_store.js +12 -7
  34. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +147 -0
  35. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -0
  36. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +158 -135
  37. package/dest/archiver/kv_archiver_store/log_store.d.ts +47 -0
  38. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -0
  39. package/dest/archiver/kv_archiver_store/log_store.js +256 -271
  40. package/dest/archiver/kv_archiver_store/message_store.d.ts +33 -0
  41. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -0
  42. package/dest/archiver/kv_archiver_store/message_store.js +48 -42
  43. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +12 -0
  44. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +1 -0
  45. package/dest/archiver/kv_archiver_store/nullifier_store.js +42 -35
  46. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +23 -0
  47. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -0
  48. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +24 -15
  49. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +168 -0
  50. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -0
  51. package/dest/archiver/memory_archiver_store/memory_archiver_store.js +231 -227
  52. package/dest/archiver/structs/data_retrieval.d.ts +27 -0
  53. package/dest/archiver/structs/data_retrieval.d.ts.map +1 -0
  54. package/dest/archiver/structs/data_retrieval.js +2 -5
  55. package/dest/archiver/structs/published.d.ts +11 -0
  56. package/dest/archiver/structs/published.d.ts.map +1 -0
  57. package/dest/archiver/structs/published.js +2 -1
  58. package/dest/factory.d.ts +10 -0
  59. package/dest/factory.d.ts.map +1 -0
  60. package/dest/factory.js +24 -32
  61. package/dest/index.d.ts +5 -0
  62. package/dest/index.d.ts.map +1 -0
  63. package/dest/index.js +1 -0
  64. package/dest/rpc/index.d.ts +9 -0
  65. package/dest/rpc/index.d.ts.map +1 -0
  66. package/dest/rpc/index.js +8 -7
  67. package/dest/test/index.d.ts +4 -0
  68. package/dest/test/index.d.ts.map +1 -0
  69. package/dest/test/index.js +1 -0
  70. package/dest/test/mock_archiver.d.ts +22 -0
  71. package/dest/test/mock_archiver.d.ts.map +1 -0
  72. package/dest/test/mock_archiver.js +13 -8
  73. package/dest/test/mock_l1_to_l2_message_source.d.ts +16 -0
  74. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -0
  75. package/dest/test/mock_l1_to_l2_message_source.js +4 -4
  76. package/dest/test/mock_l2_block_source.d.ts +80 -0
  77. package/dest/test/mock_l2_block_source.d.ts.map +1 -0
  78. package/dest/test/mock_l2_block_source.js +67 -68
  79. package/package.json +15 -14
  80. package/src/archiver/config.ts +7 -1
  81. package/src/archiver/index.ts +1 -1
  82. package/src/factory.ts +7 -3
  83. package/src/rpc/index.ts +16 -3
@@ -0,0 +1,186 @@
1
+ import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
2
+ import { type GetContractClassLogsResponse, type GetPublicLogsResponse, type InBlock, type L1RollupConstants, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type L2LogsSource, type L2Tips, type LogFilter, type NullifierWithBlockSource, type TxEffect, type TxHash, type TxReceipt, type TxScopedL2Log } from '@aztec/circuit-types';
3
+ import { type BlockHeader, type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, type FunctionSelector, type PrivateLog, type PublicFunction } from '@aztec/circuits.js';
4
+ import { type AztecAddress } from '@aztec/foundation/aztec-address';
5
+ import { type EthAddress } from '@aztec/foundation/eth-address';
6
+ import { Fr } from '@aztec/foundation/fields';
7
+ import { type Logger } from '@aztec/foundation/log';
8
+ import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
9
+ import { type Chain, type HttpTransport, type PublicClient } from 'viem';
10
+ import { type ArchiverDataStore } from './archiver_store.js';
11
+ import { type ArchiverConfig } from './config.js';
12
+ import { ArchiverInstrumentation } from './instrumentation.js';
13
+ /**
14
+ * Helper interface to combine all sources this archiver implementation provides.
15
+ */
16
+ export type ArchiveSource = L2BlockSource & L2LogsSource & ContractDataSource & L1ToL2MessageSource & NullifierWithBlockSource;
17
+ /**
18
+ * Pulls L2 blocks in a non-blocking manner and provides interface for their retrieval.
19
+ * Responsible for handling robust L1 polling so that other components do not need to
20
+ * concern themselves with it.
21
+ */
22
+ export declare class Archiver implements ArchiveSource, Traceable {
23
+ private readonly publicClient;
24
+ private readonly l1Addresses;
25
+ readonly dataStore: ArchiverDataStore;
26
+ private readonly config;
27
+ private readonly blobSinkClient;
28
+ private readonly instrumentation;
29
+ private readonly l1constants;
30
+ private readonly log;
31
+ /**
32
+ * A promise in which we will be continually fetching new L2 blocks.
33
+ */
34
+ private runningPromise?;
35
+ private rollup;
36
+ private inbox;
37
+ private store;
38
+ l1BlockNumber: bigint | undefined;
39
+ l1Timestamp: bigint | undefined;
40
+ readonly tracer: Tracer;
41
+ /**
42
+ * Creates a new instance of the Archiver.
43
+ * @param publicClient - A client for interacting with the Ethereum node.
44
+ * @param rollupAddress - Ethereum address of the rollup contract.
45
+ * @param inboxAddress - Ethereum address of the inbox contract.
46
+ * @param registryAddress - Ethereum address of the registry contract.
47
+ * @param pollingIntervalMs - The interval for polling for L1 logs (in milliseconds).
48
+ * @param store - An archiver data store for storage & retrieval of blocks, encrypted logs & contract data.
49
+ * @param log - A logger.
50
+ */
51
+ constructor(publicClient: PublicClient<HttpTransport, Chain>, l1Addresses: {
52
+ rollupAddress: EthAddress;
53
+ inboxAddress: EthAddress;
54
+ registryAddress: EthAddress;
55
+ }, dataStore: ArchiverDataStore, config: {
56
+ pollingIntervalMs: number;
57
+ batchSize: number;
58
+ }, blobSinkClient: BlobSinkClientInterface, instrumentation: ArchiverInstrumentation, l1constants: L1RollupConstants, log?: Logger);
59
+ /**
60
+ * Creates a new instance of the Archiver and blocks until it syncs from chain.
61
+ * @param config - The archiver's desired configuration.
62
+ * @param archiverStore - The backing store for the archiver.
63
+ * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
64
+ * @returns - An instance of the archiver.
65
+ */
66
+ static createAndSync(config: ArchiverConfig, archiverStore: ArchiverDataStore, deps: {
67
+ telemetry: TelemetryClient;
68
+ blobSinkClient: BlobSinkClientInterface;
69
+ }, blockUntilSynced?: boolean): Promise<Archiver>;
70
+ /**
71
+ * Starts sync process.
72
+ * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
73
+ */
74
+ start(blockUntilSynced: boolean): Promise<void>;
75
+ /**
76
+ * Fetches logs from L1 contracts and processes them.
77
+ */
78
+ private sync;
79
+ /** Checks if there'd be a reorg for the next block submission and start pruning now. */
80
+ private handleEpochPrune;
81
+ private nextRange;
82
+ private handleL1ToL2Messages;
83
+ private handleL2blocks;
84
+ /**
85
+ * Stops the archiver.
86
+ * @returns A promise signalling completion of the stop process.
87
+ */
88
+ stop(): Promise<void>;
89
+ getL1Constants(): Promise<L1RollupConstants>;
90
+ getRollupAddress(): Promise<EthAddress>;
91
+ getRegistryAddress(): Promise<EthAddress>;
92
+ getL1BlockNumber(): bigint;
93
+ getL1Timestamp(): bigint;
94
+ getL2SlotNumber(): Promise<bigint>;
95
+ getL2EpochNumber(): Promise<bigint>;
96
+ getBlocksForEpoch(epochNumber: bigint): Promise<L2Block[]>;
97
+ isEpochComplete(epochNumber: bigint): Promise<boolean>;
98
+ /**
99
+ * Gets up to `limit` amount of L2 blocks starting from `from`.
100
+ * @param from - Number of the first block to return (inclusive).
101
+ * @param limit - The number of blocks to return.
102
+ * @param proven - If true, only return blocks that have been proven.
103
+ * @returns The requested L2 blocks.
104
+ */
105
+ getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
106
+ /**
107
+ * Gets an l2 block.
108
+ * @param number - The block number to return.
109
+ * @returns The requested L2 block.
110
+ */
111
+ getBlock(number: number): Promise<L2Block | undefined>;
112
+ getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
113
+ getTxEffect(txHash: TxHash): Promise<InBlock<TxEffect> | undefined>;
114
+ getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
115
+ /**
116
+ * Gets the public function data for a contract.
117
+ * @param address - The contract address containing the function to fetch.
118
+ * @param selector - The function selector of the function to fetch.
119
+ * @returns The public function data (if found).
120
+ */
121
+ getPublicFunction(address: AztecAddress, selector: FunctionSelector): Promise<PublicFunction | undefined>;
122
+ /**
123
+ * Retrieves all private logs from up to `limit` blocks, starting from the block number `from`.
124
+ * @param from - The block number from which to begin retrieving logs.
125
+ * @param limit - The maximum number of blocks to retrieve logs from.
126
+ * @returns An array of private logs from the specified range of blocks.
127
+ */
128
+ getPrivateLogs(from: number, limit: number): Promise<PrivateLog[]>;
129
+ /**
130
+ * Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
131
+ * @param tags - The tags to filter the logs by.
132
+ * @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
133
+ * that tag.
134
+ */
135
+ getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
136
+ /**
137
+ * Returns the provided nullifier indexes scoped to the block
138
+ * they were first included in, or undefined if they're not present in the tree
139
+ * @param blockNumber Max block number to search for the nullifiers
140
+ * @param nullifiers Nullifiers to get
141
+ * @returns The block scoped indexes of the provided nullifiers, or undefined if the nullifier doesn't exist in the tree
142
+ */
143
+ findNullifiersIndexesWithBlock(blockNumber: number, nullifiers: Fr[]): Promise<(InBlock<bigint> | undefined)[]>;
144
+ /**
145
+ * Gets public logs based on the provided filter.
146
+ * @param filter - The filter to apply to the logs.
147
+ * @returns The requested logs.
148
+ */
149
+ getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse>;
150
+ /**
151
+ * Gets contract class logs based on the provided filter.
152
+ * @param filter - The filter to apply to the logs.
153
+ * @returns The requested logs.
154
+ */
155
+ getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
156
+ /**
157
+ * Gets the number of the latest L2 block processed by the block source implementation.
158
+ * @returns The number of the latest L2 block processed by the block source implementation.
159
+ */
160
+ getBlockNumber(): Promise<number>;
161
+ getProvenBlockNumber(): Promise<number>;
162
+ getProvenL2EpochNumber(): Promise<number | undefined>;
163
+ /** Forcefully updates the last proven block number. Use for testing. */
164
+ setProvenBlockNumber(blockNumber: number): Promise<void>;
165
+ getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
166
+ getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
167
+ getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
168
+ /**
169
+ * Gets L1 to L2 message (to be) included in a given block.
170
+ * @param blockNumber - L2 block number to get messages for.
171
+ * @returns The L1 to L2 messages/leaves of the messages subtree (throws if not found).
172
+ */
173
+ getL1ToL2Messages(blockNumber: bigint): Promise<Fr[]>;
174
+ /**
175
+ * Gets the L1 to L2 message index in the L1 to L2 message tree.
176
+ * @param l1ToL2Message - The L1 to L2 message.
177
+ * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
178
+ */
179
+ getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
180
+ getContractClassIds(): Promise<Fr[]>;
181
+ addContractClass(contractClass: ContractClassPublic): Promise<void>;
182
+ registerContractFunctionSignatures(address: AztecAddress, signatures: string[]): Promise<void>;
183
+ getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
184
+ getL2Tips(): Promise<L2Tips>;
185
+ }
186
+ //# sourceMappingURL=archiver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}