@aztec/archiver 0.56.0 → 0.58.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.
- package/README.md +1 -1
- package/dest/archiver/archiver.d.ts +27 -22
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +421 -115
- package/dest/archiver/archiver_store.d.ts +39 -10
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +84 -31
- package/dest/archiver/config.js +6 -6
- package/dest/archiver/data_retrieval.d.ts +2 -3
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +23 -22
- package/dest/archiver/epoch_helpers.d.ts +15 -0
- package/dest/archiver/epoch_helpers.d.ts.map +1 -0
- package/dest/archiver/epoch_helpers.js +23 -0
- package/dest/archiver/kv_archiver_store/block_store.d.ts +20 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +62 -5
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +3 -3
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +12 -5
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +5 -2
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +29 -10
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +57 -17
- package/dest/archiver/kv_archiver_store/log_store.d.ts +4 -5
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +18 -14
- package/dest/archiver/kv_archiver_store/message_store.d.ts +2 -1
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +17 -13
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +3 -2
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +12 -14
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +23 -23
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +130 -70
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +17 -1
- package/dest/index.js +2 -1
- package/dest/test/index.d.ts +4 -0
- package/dest/test/index.d.ts.map +1 -0
- package/dest/test/index.js +4 -0
- package/dest/test/mock_archiver.d.ts +22 -0
- package/dest/test/mock_archiver.d.ts.map +1 -0
- package/dest/test/mock_archiver.js +44 -0
- package/dest/test/mock_l1_to_l2_message_source.d.ts +16 -0
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -0
- package/dest/test/mock_l1_to_l2_message_source.js +25 -0
- package/dest/test/mock_l2_block_source.d.ts +75 -0
- package/dest/test/mock_l2_block_source.d.ts.map +1 -0
- package/dest/test/mock_l2_block_source.js +154 -0
- package/package.json +15 -11
- package/src/archiver/archiver.ts +553 -170
- package/src/archiver/archiver_store.ts +48 -19
- package/src/archiver/archiver_store_test_suite.ts +111 -73
- package/src/archiver/config.ts +5 -5
- package/src/archiver/data_retrieval.ts +25 -26
- package/src/archiver/epoch_helpers.ts +26 -0
- package/src/archiver/kv_archiver_store/block_store.ts +70 -2
- package/src/archiver/kv_archiver_store/contract_class_store.ts +24 -9
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +5 -2
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +71 -29
- package/src/archiver/kv_archiver_store/log_store.ts +18 -18
- package/src/archiver/kv_archiver_store/message_store.ts +16 -18
- package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +13 -19
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +154 -83
- package/src/factory.ts +18 -0
- package/src/index.ts +1 -0
- package/src/test/index.ts +3 -0
- package/src/test/mock_archiver.ts +55 -0
- package/src/test/mock_l1_to_l2_message_source.ts +31 -0
- package/src/test/mock_l2_block_source.ts +190 -0
- package/dest/archiver/kv_archiver_store/proven_store.d.ts +0 -14
- package/dest/archiver/kv_archiver_store/proven_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/proven_store.js +0 -30
- package/src/archiver/kv_archiver_store/proven_store.ts +0 -34
package/README.md
CHANGED
|
@@ -13,4 +13,4 @@ The interfaces defining how the data can be consumed from the archiver are `L2Bl
|
|
|
13
13
|
To install dependencies and build the package run `yarn install` followed by `yarn build`.
|
|
14
14
|
To run test execute `yarn test`.
|
|
15
15
|
|
|
16
|
-
To start the service export `ETHEREUM_HOST` (defaults to `http://127.0.0.1:8545/`), `
|
|
16
|
+
To start the service export `ETHEREUM_HOST` (defaults to `http://127.0.0.1:8545/`), `ARCHIVER_POLLING_INTERVAL_MS` (defaults to `1000 ms`), `ROLLUP_CONTRACT_ADDRESS`, `INBOX_CONTRACT_ADDRESS` environmental variables and start the service with `yarn start`.
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import { type FromLogType, type GetUnencryptedLogsResponse, type L1ToL2MessageSource, type L2Block, type L2BlockL2Logs, type L2BlockSource, type L2LogsSource, type LogFilter, type LogType, type TxEffect, type TxHash, type TxReceipt } from '@aztec/circuit-types';
|
|
2
|
-
import { type FunctionSelector } from '@aztec/circuits.js';
|
|
1
|
+
import { type FromLogType, type GetUnencryptedLogsResponse, type L1ToL2MessageSource, type L2Block, type L2BlockL2Logs, type L2BlockSource, type L2LogsSource, type L2Tips, type LogFilter, type LogType, type TxEffect, type TxHash, type TxReceipt } from '@aztec/circuit-types';
|
|
2
|
+
import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, type FunctionSelector, type Header, type PublicFunction } from '@aztec/circuits.js';
|
|
3
3
|
import { type ContractArtifact } from '@aztec/foundation/abi';
|
|
4
4
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
5
5
|
import { type EthAddress } from '@aztec/foundation/eth-address';
|
|
6
6
|
import { Fr } from '@aztec/foundation/fields';
|
|
7
7
|
import { type DebugLogger } from '@aztec/foundation/log';
|
|
8
8
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
9
|
-
import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, type PublicFunction } from '@aztec/types/contracts';
|
|
10
9
|
import { type Chain, type HttpTransport, type PublicClient } from 'viem';
|
|
11
10
|
import { type ArchiverDataStore } from './archiver_store.js';
|
|
12
11
|
import { type ArchiverConfig } from './config.js';
|
|
13
12
|
import { ArchiverInstrumentation } from './instrumentation.js';
|
|
14
|
-
import { type SingletonDataRetrieval } from './structs/data_retrieval.js';
|
|
15
13
|
/**
|
|
16
14
|
* Helper interface to combine all sources this archiver implementation provides.
|
|
17
15
|
*/
|
|
@@ -24,12 +22,12 @@ export type ArchiveSource = L2BlockSource & L2LogsSource & ContractDataSource &
|
|
|
24
22
|
export declare class Archiver implements ArchiveSource {
|
|
25
23
|
private readonly publicClient;
|
|
26
24
|
private readonly rollupAddress;
|
|
27
|
-
|
|
25
|
+
readonly inboxAddress: EthAddress;
|
|
28
26
|
private readonly registryAddress;
|
|
29
|
-
|
|
27
|
+
readonly dataStore: ArchiverDataStore;
|
|
30
28
|
private readonly pollingIntervalMs;
|
|
31
29
|
private readonly instrumentation;
|
|
32
|
-
private readonly
|
|
30
|
+
private readonly l1constants;
|
|
33
31
|
private readonly log;
|
|
34
32
|
/**
|
|
35
33
|
* A promise in which we will be continually fetching new L2 blocks.
|
|
@@ -37,6 +35,9 @@ export declare class Archiver implements ArchiveSource {
|
|
|
37
35
|
private runningPromise?;
|
|
38
36
|
private rollup;
|
|
39
37
|
private inbox;
|
|
38
|
+
private store;
|
|
39
|
+
l1BlockNumber: bigint | undefined;
|
|
40
|
+
l1Timestamp: bigint | undefined;
|
|
40
41
|
/**
|
|
41
42
|
* Creates a new instance of the Archiver.
|
|
42
43
|
* @param publicClient - A client for interacting with the Ethereum node.
|
|
@@ -47,7 +48,7 @@ export declare class Archiver implements ArchiveSource {
|
|
|
47
48
|
* @param store - An archiver data store for storage & retrieval of blocks, encrypted logs & contract data.
|
|
48
49
|
* @param log - A logger.
|
|
49
50
|
*/
|
|
50
|
-
constructor(publicClient: PublicClient<HttpTransport, Chain>, rollupAddress: EthAddress, inboxAddress: EthAddress, registryAddress: EthAddress,
|
|
51
|
+
constructor(publicClient: PublicClient<HttpTransport, Chain>, rollupAddress: EthAddress, inboxAddress: EthAddress, registryAddress: EthAddress, dataStore: ArchiverDataStore, pollingIntervalMs: number, instrumentation: ArchiverInstrumentation, l1constants?: L1RollupConstants, log?: DebugLogger);
|
|
51
52
|
/**
|
|
52
53
|
* Creates a new instance of the Archiver and blocks until it syncs from chain.
|
|
53
54
|
* @param config - The archiver's desired configuration.
|
|
@@ -70,20 +71,10 @@ export declare class Archiver implements ArchiveSource {
|
|
|
70
71
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
71
72
|
*/
|
|
72
73
|
private sync;
|
|
74
|
+
/** Checks if there'd be a reorg for the next block submission and start pruning now. */
|
|
75
|
+
private handleEpochPrune;
|
|
73
76
|
private handleL1ToL2Messages;
|
|
74
|
-
private updateLastProvenL2Block;
|
|
75
77
|
private handleL2blocks;
|
|
76
|
-
/**
|
|
77
|
-
* Extracts and stores contract classes out of ContractClassRegistered events emitted by the class registerer contract.
|
|
78
|
-
* @param allLogs - All logs emitted in a bunch of blocks.
|
|
79
|
-
*/
|
|
80
|
-
private storeRegisteredContractClasses;
|
|
81
|
-
/**
|
|
82
|
-
* Extracts and stores contract instances out of ContractInstanceDeployed events emitted by the canonical deployer contract.
|
|
83
|
-
* @param allLogs - All logs emitted in a bunch of blocks.
|
|
84
|
-
*/
|
|
85
|
-
private storeDeployedContractInstances;
|
|
86
|
-
private storeBroadcastedIndividualFunctions;
|
|
87
78
|
/**
|
|
88
79
|
* Stops the archiver.
|
|
89
80
|
* @returns A promise signalling completion of the stop process.
|
|
@@ -91,6 +82,12 @@ export declare class Archiver implements ArchiveSource {
|
|
|
91
82
|
stop(): Promise<void>;
|
|
92
83
|
getRollupAddress(): Promise<EthAddress>;
|
|
93
84
|
getRegistryAddress(): Promise<EthAddress>;
|
|
85
|
+
getL1BlockNumber(): bigint;
|
|
86
|
+
getL1Timestamp(): bigint;
|
|
87
|
+
getL2SlotNumber(): Promise<bigint>;
|
|
88
|
+
getL2EpochNumber(): Promise<bigint>;
|
|
89
|
+
getBlocksForEpoch(epochNumber: bigint): Promise<L2Block[]>;
|
|
90
|
+
isEpochComplete(epochNumber: bigint): Promise<boolean>;
|
|
94
91
|
/**
|
|
95
92
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
96
93
|
* @param from - Number of the first block to return (inclusive).
|
|
@@ -101,10 +98,11 @@ export declare class Archiver implements ArchiveSource {
|
|
|
101
98
|
getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
|
|
102
99
|
/**
|
|
103
100
|
* Gets an l2 block.
|
|
104
|
-
* @param number - The block number to return
|
|
101
|
+
* @param number - The block number to return.
|
|
105
102
|
* @returns The requested L2 block.
|
|
106
103
|
*/
|
|
107
104
|
getBlock(number: number): Promise<L2Block | undefined>;
|
|
105
|
+
getBlockHeader(number: number | 'latest'): Promise<Header | undefined>;
|
|
108
106
|
getTxEffect(txHash: TxHash): Promise<TxEffect | undefined>;
|
|
109
107
|
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
110
108
|
/**
|
|
@@ -134,8 +132,9 @@ export declare class Archiver implements ArchiveSource {
|
|
|
134
132
|
*/
|
|
135
133
|
getBlockNumber(): Promise<number>;
|
|
136
134
|
getProvenBlockNumber(): Promise<number>;
|
|
135
|
+
getProvenL2EpochNumber(): Promise<number | undefined>;
|
|
137
136
|
/** Forcefully updates the last proven block number. Use for testing. */
|
|
138
|
-
setProvenBlockNumber(
|
|
137
|
+
setProvenBlockNumber(blockNumber: number): Promise<void>;
|
|
139
138
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
140
139
|
getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
141
140
|
/**
|
|
@@ -154,5 +153,11 @@ export declare class Archiver implements ArchiveSource {
|
|
|
154
153
|
getContractClassIds(): Promise<Fr[]>;
|
|
155
154
|
addContractArtifact(address: AztecAddress, artifact: ContractArtifact): Promise<void>;
|
|
156
155
|
getContractArtifact(address: AztecAddress): Promise<ContractArtifact | undefined>;
|
|
156
|
+
getL2Tips(): Promise<L2Tips>;
|
|
157
157
|
}
|
|
158
|
+
type L1RollupConstants = {
|
|
159
|
+
l1StartBlock: bigint;
|
|
160
|
+
l1GenesisTime: bigint;
|
|
161
|
+
};
|
|
162
|
+
export {};
|
|
158
163
|
//# sourceMappingURL=archiver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,0BAA0B,
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
|