@aztec/archiver 0.7.10 → 0.8.6
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/dest/archiver/archiver.d.ts +4 -1
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +38 -7
- package/dest/archiver/config.d.ts +10 -2
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +15 -7
- package/dest/archiver/data_retrieval.d.ts +8 -8
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +21 -21
- package/dest/archiver/eth_log_handlers.d.ts +8 -4
- package/dest/archiver/eth_log_handlers.d.ts.map +1 -1
- package/dest/archiver/eth_log_handlers.js +13 -5
- package/dest/index.js +3 -3
- package/package.json +60 -7
- package/src/archiver/archiver.ts +41 -7
- package/src/archiver/config.ts +27 -7
- package/src/archiver/data_retrieval.ts +30 -18
- package/src/archiver/eth_log_handlers.ts +12 -0
- package/src/index.ts +5 -4
- package/.eslintrc.cjs +0 -1
- package/.tsbuildinfo +0 -1
- package/dest/archiver/archiver.test.d.ts +0 -2
- package/dest/archiver/archiver.test.d.ts.map +0 -1
- package/dest/archiver/archiver.test.js +0 -184
- package/dest/archiver/archiver_store.test.d.ts +0 -2
- package/dest/archiver/archiver_store.test.d.ts.map +0 -1
- package/dest/archiver/archiver_store.test.js +0 -61
- package/dest/archiver/l1_to_l2_message_store.test.d.ts +0 -2
- package/dest/archiver/l1_to_l2_message_store.test.d.ts.map +0 -1
- package/dest/archiver/l1_to_l2_message_store.test.js +0 -77
- package/src/archiver/archiver.test.ts +0 -223
- package/src/archiver/archiver_store.test.ts +0 -74
- package/src/archiver/l1_to_l2_message_store.test.ts +0 -98
- package/tsconfig.json +0 -26
|
@@ -16,6 +16,7 @@ export declare class Archiver implements L2BlockSource, L2LogsSource, ContractDa
|
|
|
16
16
|
private readonly publicClient;
|
|
17
17
|
private readonly rollupAddress;
|
|
18
18
|
private readonly inboxAddress;
|
|
19
|
+
private readonly registryAddress;
|
|
19
20
|
private readonly contractDeploymentEmitterAddress;
|
|
20
21
|
private readonly store;
|
|
21
22
|
private readonly pollingIntervalMs;
|
|
@@ -41,13 +42,14 @@ export declare class Archiver implements L2BlockSource, L2LogsSource, ContractDa
|
|
|
41
42
|
* @param publicClient - A client for interacting with the Ethereum node.
|
|
42
43
|
* @param rollupAddress - Ethereum address of the rollup contract.
|
|
43
44
|
* @param inboxAddress - Ethereum address of the inbox contract.
|
|
45
|
+
* @param registryAddress - Ethereum address of the registry contract.
|
|
44
46
|
* @param contractDeploymentEmitterAddress - Ethereum address of the contractDeploymentEmitter contract.
|
|
45
47
|
* @param searchStartBlock - The L1 block from which to start searching for new blocks.
|
|
46
48
|
* @param pollingIntervalMs - The interval for polling for L1 logs (in milliseconds).
|
|
47
49
|
* @param store - An archiver data store for storage & retrieval of blocks, encrypted logs & contract data.
|
|
48
50
|
* @param log - A logger.
|
|
49
51
|
*/
|
|
50
|
-
constructor(publicClient: PublicClient<HttpTransport, Chain>, rollupAddress: EthAddress, inboxAddress: EthAddress, contractDeploymentEmitterAddress: EthAddress, searchStartBlock: number, store: ArchiverDataStore, pollingIntervalMs?: number, log?: DebugLogger);
|
|
52
|
+
constructor(publicClient: PublicClient<HttpTransport, Chain>, rollupAddress: EthAddress, inboxAddress: EthAddress, registryAddress: EthAddress, contractDeploymentEmitterAddress: EthAddress, searchStartBlock: number, store: ArchiverDataStore, pollingIntervalMs?: number, log?: DebugLogger);
|
|
51
53
|
/**
|
|
52
54
|
* Creates a new instance of the Archiver and blocks until it syncs from chain.
|
|
53
55
|
* @param config - The archiver's desired configuration.
|
|
@@ -71,6 +73,7 @@ export declare class Archiver implements L2BlockSource, L2LogsSource, ContractDa
|
|
|
71
73
|
*/
|
|
72
74
|
stop(): Promise<void>;
|
|
73
75
|
getRollupAddress(): Promise<EthAddress>;
|
|
76
|
+
getRegistryAddress(): Promise<EthAddress>;
|
|
74
77
|
/**
|
|
75
78
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
76
79
|
* @param from - Number of the first block to return (inclusive).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EAEpB,aAAa,EACb,mBAAmB,EACnB,OAAO,EACP,aAAa,EACb,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,MAAM,EACP,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAA4B,MAAM,MAAM,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAuB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ7C;;;;GAIG;AACH,qBAAa,QAAS,YAAW,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,16 +17,18 @@ export class Archiver {
|
|
|
17
17
|
* @param publicClient - A client for interacting with the Ethereum node.
|
|
18
18
|
* @param rollupAddress - Ethereum address of the rollup contract.
|
|
19
19
|
* @param inboxAddress - Ethereum address of the inbox contract.
|
|
20
|
+
* @param registryAddress - Ethereum address of the registry contract.
|
|
20
21
|
* @param contractDeploymentEmitterAddress - Ethereum address of the contractDeploymentEmitter contract.
|
|
21
22
|
* @param searchStartBlock - The L1 block from which to start searching for new blocks.
|
|
22
23
|
* @param pollingIntervalMs - The interval for polling for L1 logs (in milliseconds).
|
|
23
24
|
* @param store - An archiver data store for storage & retrieval of blocks, encrypted logs & contract data.
|
|
24
25
|
* @param log - A logger.
|
|
25
26
|
*/
|
|
26
|
-
constructor(publicClient, rollupAddress, inboxAddress, contractDeploymentEmitterAddress, searchStartBlock, store, pollingIntervalMs = 10000, log = createDebugLogger('aztec:archiver')) {
|
|
27
|
+
constructor(publicClient, rollupAddress, inboxAddress, registryAddress, contractDeploymentEmitterAddress, searchStartBlock, store, pollingIntervalMs = 10000, log = createDebugLogger('aztec:archiver')) {
|
|
27
28
|
this.publicClient = publicClient;
|
|
28
29
|
this.rollupAddress = rollupAddress;
|
|
29
30
|
this.inboxAddress = inboxAddress;
|
|
31
|
+
this.registryAddress = registryAddress;
|
|
30
32
|
this.contractDeploymentEmitterAddress = contractDeploymentEmitterAddress;
|
|
31
33
|
this.store = store;
|
|
32
34
|
this.pollingIntervalMs = pollingIntervalMs;
|
|
@@ -60,7 +62,7 @@ export class Archiver {
|
|
|
60
62
|
pollingInterval: config.viemPollingIntervalMS,
|
|
61
63
|
});
|
|
62
64
|
const archiverStore = new MemoryArchiverStore();
|
|
63
|
-
const archiver = new Archiver(publicClient, config.
|
|
65
|
+
const archiver = new Archiver(publicClient, config.l1Contracts.rollupAddress, config.l1Contracts.inboxAddress, config.l1Contracts.registryAddress, config.l1Contracts.contractDeploymentEmitterAddress, config.searchStartBlock, archiverStore, config.archiverPollingIntervalMS);
|
|
64
66
|
await archiver.start(blockUntilSynced);
|
|
65
67
|
return archiver;
|
|
66
68
|
}
|
|
@@ -93,10 +95,36 @@ export class Archiver {
|
|
|
93
95
|
}
|
|
94
96
|
return;
|
|
95
97
|
}
|
|
98
|
+
// ********** Ensuring Consistency of data pulled from L1 **********
|
|
99
|
+
/**
|
|
100
|
+
* There are a number of calls in this sync operation to L1 for retrieving
|
|
101
|
+
* events and transaction data. There are a couple of things we need to bear in mind
|
|
102
|
+
* to ensure that data is read exactly once.
|
|
103
|
+
*
|
|
104
|
+
* The first is the problem of eventually consistent ETH service providers like Infura.
|
|
105
|
+
* We are not currently handling this correctly in the case of L1 to L2 messages and we will
|
|
106
|
+
* want to re-visit L2 Block and contract data retrieval at a later stage. This is not
|
|
107
|
+
* currently a problem but will need to be addressed before a mainnet release.
|
|
108
|
+
*
|
|
109
|
+
* The second is that in between the various calls to L1, the block number can move meaning some
|
|
110
|
+
* of the following calls will return data for blocks that were not present during earlier calls.
|
|
111
|
+
* This is a problem for example when setting the last block number marker for L1 to L2 messages -
|
|
112
|
+
* this.lastProcessedBlockNumber = currentBlockNumber;
|
|
113
|
+
* It's possible that we actually received messages in block currentBlockNumber + 1 meaning the next time
|
|
114
|
+
* we do this sync we get the same message again. Addtionally, the call to get cancelled L1 to L2 messages
|
|
115
|
+
* could read from a block not present when retrieving pending messages. If a message was added and cancelled
|
|
116
|
+
* in the same eth block then we could try and cancel a non-existent pending message.
|
|
117
|
+
*
|
|
118
|
+
* To combat this for the time being we simply ensure that all data retrieval methods only retrieve
|
|
119
|
+
* data up to the currentBlockNumber captured at the top of this function. We might want to improve on this
|
|
120
|
+
* in future but for the time being it should give us the guarantees that we need
|
|
121
|
+
*
|
|
122
|
+
*/
|
|
96
123
|
// ********** Events that are processed in between blocks **********
|
|
97
124
|
// Process l1ToL2Messages, these are consumed as time passes, not each block
|
|
98
|
-
const retrievedPendingL1ToL2Messages = await retrieveNewPendingL1ToL2Messages(this.publicClient, this.inboxAddress, blockUntilSynced,
|
|
99
|
-
|
|
125
|
+
const retrievedPendingL1ToL2Messages = await retrieveNewPendingL1ToL2Messages(this.publicClient, this.inboxAddress, blockUntilSynced, this.lastProcessedBlockNumber + 1n, // + 1 to prevent re-including messages from the last processed block
|
|
126
|
+
currentBlockNumber);
|
|
127
|
+
const retrievedCancelledL1ToL2Messages = await retrieveNewCancelledL1ToL2Messages(this.publicClient, this.inboxAddress, blockUntilSynced, this.lastProcessedBlockNumber + 1n, currentBlockNumber);
|
|
100
128
|
// TODO (#717): optimise this - there could be messages in confirmed that are also in pending.
|
|
101
129
|
// Or messages in pending that are also cancelled in the same block. No need to modify storage for them.
|
|
102
130
|
// Store l1 to l2 messages
|
|
@@ -110,13 +138,13 @@ export class Archiver {
|
|
|
110
138
|
// Read all data from chain and then write to our stores at the end
|
|
111
139
|
const nextExpectedL2BlockNum = BigInt(this.store.getBlocksLength() + INITIAL_L2_BLOCK_NUM);
|
|
112
140
|
this.log(`Retrieving chain state from L1 block: ${this.nextL2BlockFromBlock}, next expected l2 block number: ${nextExpectedL2BlockNum}`);
|
|
113
|
-
const retrievedBlocks = await retrieveBlocks(this.publicClient, this.rollupAddress, blockUntilSynced,
|
|
141
|
+
const retrievedBlocks = await retrieveBlocks(this.publicClient, this.rollupAddress, blockUntilSynced, this.nextL2BlockFromBlock, currentBlockNumber, nextExpectedL2BlockNum);
|
|
114
142
|
// create the block number -> block hash mapping to ensure we retrieve the appropriate events
|
|
115
143
|
const blockHashMapping = {};
|
|
116
144
|
retrievedBlocks.retrievedData.forEach((block) => {
|
|
117
145
|
blockHashMapping[block.number] = block.getCalldataHash();
|
|
118
146
|
});
|
|
119
|
-
const retrievedContracts = await retrieveNewContractData(this.publicClient, this.contractDeploymentEmitterAddress, blockUntilSynced,
|
|
147
|
+
const retrievedContracts = await retrieveNewContractData(this.publicClient, this.contractDeploymentEmitterAddress, blockUntilSynced, this.nextL2BlockFromBlock, currentBlockNumber, blockHashMapping);
|
|
120
148
|
if (retrievedBlocks.retrievedData.length === 0) {
|
|
121
149
|
return;
|
|
122
150
|
}
|
|
@@ -163,6 +191,9 @@ export class Archiver {
|
|
|
163
191
|
getRollupAddress() {
|
|
164
192
|
return Promise.resolve(this.rollupAddress);
|
|
165
193
|
}
|
|
194
|
+
getRegistryAddress() {
|
|
195
|
+
return Promise.resolve(this.registryAddress);
|
|
196
|
+
}
|
|
166
197
|
/**
|
|
167
198
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
168
199
|
* @param from - Number of the first block to return (inclusive).
|
|
@@ -266,4 +297,4 @@ export class Archiver {
|
|
|
266
297
|
return this.store.getConfirmedL1ToL2Message(messageKey);
|
|
267
298
|
}
|
|
268
299
|
}
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvYXJjaGl2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJdEQsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFLTCxvQkFBb0IsRUFHcEIsT0FBTyxFQUtQLE9BQU8sR0FFUixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFzQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEYsT0FBTyxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsa0NBQWtDLEVBQ2xDLHVCQUF1QixFQUN2QixnQ0FBZ0MsR0FDakMsTUFBTSxxQkFBcUIsQ0FBQztBQUU3Qjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFxQm5COzs7Ozs7Ozs7OztPQVdHO0lBQ0gsWUFDbUIsWUFBZ0QsRUFDaEQsYUFBeUIsRUFDekIsWUFBd0IsRUFDeEIsZUFBMkIsRUFDM0IsZ0NBQTRDLEVBQzdELGdCQUF3QixFQUNQLEtBQXdCLEVBQ3hCLG9CQUFvQixLQUFNLEVBQzFCLE1BQW1CLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDO1FBUnRELGlCQUFZLEdBQVosWUFBWSxDQUFvQztRQUNoRCxrQkFBYSxHQUFiLGFBQWEsQ0FBWTtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBWTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBWTtRQUMzQixxQ0FBZ0MsR0FBaEMsZ0NBQWdDLENBQVk7UUFFNUMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIs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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { L1ContractAddresses } from '@aztec/ethereum';
|
|
2
2
|
/**
|
|
3
3
|
* There are 2 polling intervals used in this configuration. The first is the archiver polling interval, archiverPollingIntervalMS.
|
|
4
4
|
* This is the interval between successive calls to eth_blockNumber via viem.
|
|
@@ -8,7 +8,7 @@ import { L1Addresses } from '@aztec/types';
|
|
|
8
8
|
/**
|
|
9
9
|
* The archiver configuration.
|
|
10
10
|
*/
|
|
11
|
-
export interface ArchiverConfig
|
|
11
|
+
export interface ArchiverConfig {
|
|
12
12
|
/**
|
|
13
13
|
* The url of the Ethereum RPC node.
|
|
14
14
|
*/
|
|
@@ -29,6 +29,14 @@ export interface ArchiverConfig extends L1Addresses {
|
|
|
29
29
|
* Eth block from which we start scanning for L2Blocks.
|
|
30
30
|
*/
|
|
31
31
|
searchStartBlock: number;
|
|
32
|
+
/**
|
|
33
|
+
* The deployed L1 contract addresses
|
|
34
|
+
*/
|
|
35
|
+
l1Contracts: L1ContractAddresses;
|
|
36
|
+
/**
|
|
37
|
+
* Optional dir to store data. If omitted will store in memory.
|
|
38
|
+
*/
|
|
39
|
+
dataDirectory?: string;
|
|
32
40
|
}
|
|
33
41
|
/**
|
|
34
42
|
* Returns the archiver configuration from the environment variables.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/archiver/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/archiver/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,EAAE,mBAAmB,CAAC;IAEjC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAiCjD"}
|
package/dest/archiver/config.js
CHANGED
|
@@ -5,18 +5,26 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
5
5
|
* @returns The archiver configuration.
|
|
6
6
|
*/
|
|
7
7
|
export function getConfigEnvVars() {
|
|
8
|
-
const { ETHEREUM_HOST, ARCHIVER_POLLING_INTERVAL_MS, ARCHIVER_VIEM_POLLING_INTERVAL_MS, ROLLUP_CONTRACT_ADDRESS, CONTRACT_DEPLOYMENT_EMITTER_ADDRESS, SEARCH_START_BLOCK, API_KEY, INBOX_CONTRACT_ADDRESS, } = process.env;
|
|
8
|
+
const { ETHEREUM_HOST, ARCHIVER_POLLING_INTERVAL_MS, ARCHIVER_VIEM_POLLING_INTERVAL_MS, ROLLUP_CONTRACT_ADDRESS, CONTRACT_DEPLOYMENT_EMITTER_ADDRESS, SEARCH_START_BLOCK, API_KEY, INBOX_CONTRACT_ADDRESS, REGISTRY_CONTRACT_ADDRESS, DATA_DIRECTORY, } = process.env;
|
|
9
|
+
// Populate the relevant addresses for use by the archiver.
|
|
10
|
+
const addresses = {
|
|
11
|
+
rollupAddress: ROLLUP_CONTRACT_ADDRESS ? EthAddress.fromString(ROLLUP_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
12
|
+
registryAddress: REGISTRY_CONTRACT_ADDRESS ? EthAddress.fromString(REGISTRY_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
13
|
+
inboxAddress: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
14
|
+
outboxAddress: EthAddress.ZERO,
|
|
15
|
+
contractDeploymentEmitterAddress: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
|
|
16
|
+
? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
|
|
17
|
+
: EthAddress.ZERO,
|
|
18
|
+
decoderHelperAddress: EthAddress.ZERO,
|
|
19
|
+
};
|
|
9
20
|
return {
|
|
10
21
|
rpcUrl: ETHEREUM_HOST || 'http://127.0.0.1:8545/',
|
|
11
22
|
archiverPollingIntervalMS: ARCHIVER_POLLING_INTERVAL_MS ? +ARCHIVER_POLLING_INTERVAL_MS : 1000,
|
|
12
23
|
viemPollingIntervalMS: ARCHIVER_VIEM_POLLING_INTERVAL_MS ? +ARCHIVER_VIEM_POLLING_INTERVAL_MS : 1000,
|
|
13
|
-
rollupContract: ROLLUP_CONTRACT_ADDRESS ? EthAddress.fromString(ROLLUP_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
14
|
-
inboxContract: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
15
|
-
contractDeploymentEmitterContract: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
|
|
16
|
-
? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
|
|
17
|
-
: EthAddress.ZERO,
|
|
18
24
|
searchStartBlock: SEARCH_START_BLOCK ? +SEARCH_START_BLOCK : 0,
|
|
19
25
|
apiKey: API_KEY,
|
|
26
|
+
l1Contracts: addresses,
|
|
27
|
+
dataDirectory: DATA_DIRECTORY,
|
|
20
28
|
};
|
|
21
29
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FyY2hpdmVyL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFpRDNEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE1BQU0sRUFDSixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsbUNBQW1DLEVBQ25DLGtCQUFrQixFQUNsQixPQUFPLEVBQ1Asc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixjQUFjLEdBQ2YsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ2hCLDJEQUEyRDtJQUMzRCxNQUFNLFNBQVMsR0FBd0I7UUFDckMsYUFBYSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJO1FBQ3pHLGVBQWUsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUMvRyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDdEcsYUFBYSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1FBQzlCLGdDQUFnQyxFQUFFLG1DQUFtQztZQUNuRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxtQ0FBbUMsQ0FBQztZQUM1RCxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDbkIsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLElBQUk7S0FDdEMsQ0FBQztJQUNGLE9BQU87UUFDTCxNQUFNLEVBQUUsYUFBYSxJQUFJLHdCQUF3QjtRQUNqRCx5QkFBeUIsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSztRQUMvRixxQkFBcUIsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsSUFBSztRQUNyRyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGFBQWEsRUFBRSxjQUFjO0tBQzlCLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -21,23 +21,23 @@ type DataRetrieval<T> = {
|
|
|
21
21
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
22
22
|
* @param rollupAddress - The address of the rollup contract.
|
|
23
23
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
24
|
-
* @param currentL1BlockNum - Latest available block number in the ETH node.
|
|
25
24
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
25
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
26
26
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
27
27
|
* @returns An array of L2 Blocks and the next eth block to search from
|
|
28
28
|
*/
|
|
29
|
-
export declare function retrieveBlocks(publicClient: PublicClient, rollupAddress: EthAddress, blockUntilSynced: boolean,
|
|
29
|
+
export declare function retrieveBlocks(publicClient: PublicClient, rollupAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint, expectedNextL2BlockNum: bigint): Promise<DataRetrieval<L2Block>>;
|
|
30
30
|
/**
|
|
31
31
|
* Fetches new contract data.
|
|
32
32
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
33
33
|
* @param contractDeploymentEmitterAddress - The address of the contract deployment emitter contract.
|
|
34
34
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
35
|
-
* @param currentBlockNumber - Latest available block number in the ETH node.
|
|
36
35
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
36
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
37
37
|
* @param blockHashMapping - A mapping from block number to relevant block hash.
|
|
38
38
|
* @returns An array of ExtendedContractData and their equivalent L2 Block number along with the next eth block to search from..
|
|
39
39
|
*/
|
|
40
|
-
export declare function retrieveNewContractData(publicClient: PublicClient, contractDeploymentEmitterAddress: EthAddress, blockUntilSynced: boolean,
|
|
40
|
+
export declare function retrieveNewContractData(publicClient: PublicClient, contractDeploymentEmitterAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint, blockHashMapping: {
|
|
41
41
|
[key: number]: Buffer | undefined;
|
|
42
42
|
}): Promise<DataRetrieval<[ExtendedContractData[], number]>>;
|
|
43
43
|
/**
|
|
@@ -45,20 +45,20 @@ export declare function retrieveNewContractData(publicClient: PublicClient, cont
|
|
|
45
45
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
46
46
|
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
47
47
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
48
|
-
* @param currentBlockNumber - Latest available block number in the ETH node.
|
|
49
48
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
49
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
50
50
|
* @returns An array of L1ToL2Message and next eth block to search from.
|
|
51
51
|
*/
|
|
52
|
-
export declare function retrieveNewPendingL1ToL2Messages(publicClient: PublicClient, inboxAddress: EthAddress, blockUntilSynced: boolean,
|
|
52
|
+
export declare function retrieveNewPendingL1ToL2Messages(publicClient: PublicClient, inboxAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint): Promise<DataRetrieval<L1ToL2Message>>;
|
|
53
53
|
/**
|
|
54
54
|
* Fetch newly cancelled L1 to L2 messages.
|
|
55
55
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
56
56
|
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
57
57
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
58
|
-
* @param currentBlockNumber - Latest available block number in the ETH node.
|
|
59
58
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
59
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
60
60
|
* @returns An array of message keys that were cancelled and next eth block to search from.
|
|
61
61
|
*/
|
|
62
|
-
export declare function retrieveNewCancelledL1ToL2Messages(publicClient: PublicClient, inboxAddress: EthAddress, blockUntilSynced: boolean,
|
|
62
|
+
export declare function retrieveNewCancelledL1ToL2Messages(publicClient: PublicClient, inboxAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint): Promise<DataRetrieval<Fr>>;
|
|
63
63
|
export {};
|
|
64
64
|
//# sourceMappingURL=data_retrieval.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAapC;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,OAAO,EACzB,
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAapC;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,sBAAsB,EAAE,MAAM,GAC7B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAsBjC;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,YAAY,EAC1B,gCAAgC,EAAE,UAAU,EAC5C,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,GACtD,OAAO,CAAC,aAAa,CAAC,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAoB1D;AAED;;;;;;;;GAQG;AACH,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAkBvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,kCAAkC,CACtD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAmB5B"}
|
|
@@ -4,18 +4,18 @@ import { getContractDeploymentLogs, getL1ToL2MessageCancelledLogs, getL2BlockPro
|
|
|
4
4
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
5
5
|
* @param rollupAddress - The address of the rollup contract.
|
|
6
6
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
7
|
-
* @param currentL1BlockNum - Latest available block number in the ETH node.
|
|
8
7
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
8
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
9
9
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
10
10
|
* @returns An array of L2 Blocks and the next eth block to search from
|
|
11
11
|
*/
|
|
12
|
-
export async function retrieveBlocks(publicClient, rollupAddress, blockUntilSynced,
|
|
12
|
+
export async function retrieveBlocks(publicClient, rollupAddress, blockUntilSynced, searchStartBlock, searchEndBlock, expectedNextL2BlockNum) {
|
|
13
13
|
const retrievedBlocks = [];
|
|
14
14
|
do {
|
|
15
|
-
if (searchStartBlock >
|
|
15
|
+
if (searchStartBlock > searchEndBlock) {
|
|
16
16
|
break;
|
|
17
17
|
}
|
|
18
|
-
const l2BlockProcessedLogs = await getL2BlockProcessedLogs(publicClient, rollupAddress, searchStartBlock);
|
|
18
|
+
const l2BlockProcessedLogs = await getL2BlockProcessedLogs(publicClient, rollupAddress, searchStartBlock, searchEndBlock);
|
|
19
19
|
if (l2BlockProcessedLogs.length === 0) {
|
|
20
20
|
break;
|
|
21
21
|
}
|
|
@@ -23,7 +23,7 @@ export async function retrieveBlocks(publicClient, rollupAddress, blockUntilSync
|
|
|
23
23
|
retrievedBlocks.push(...newBlocks);
|
|
24
24
|
searchStartBlock = l2BlockProcessedLogs[l2BlockProcessedLogs.length - 1].blockNumber + 1n;
|
|
25
25
|
expectedNextL2BlockNum += BigInt(newBlocks.length);
|
|
26
|
-
} while (blockUntilSynced && searchStartBlock <=
|
|
26
|
+
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
27
27
|
return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedBlocks };
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
@@ -31,25 +31,25 @@ export async function retrieveBlocks(publicClient, rollupAddress, blockUntilSync
|
|
|
31
31
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
32
32
|
* @param contractDeploymentEmitterAddress - The address of the contract deployment emitter contract.
|
|
33
33
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
34
|
-
* @param currentBlockNumber - Latest available block number in the ETH node.
|
|
35
34
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
35
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
36
36
|
* @param blockHashMapping - A mapping from block number to relevant block hash.
|
|
37
37
|
* @returns An array of ExtendedContractData and their equivalent L2 Block number along with the next eth block to search from..
|
|
38
38
|
*/
|
|
39
|
-
export async function retrieveNewContractData(publicClient, contractDeploymentEmitterAddress, blockUntilSynced,
|
|
39
|
+
export async function retrieveNewContractData(publicClient, contractDeploymentEmitterAddress, blockUntilSynced, searchStartBlock, searchEndBlock, blockHashMapping) {
|
|
40
40
|
let retrievedNewContracts = [];
|
|
41
41
|
do {
|
|
42
|
-
if (searchStartBlock >
|
|
42
|
+
if (searchStartBlock > searchEndBlock) {
|
|
43
43
|
break;
|
|
44
44
|
}
|
|
45
|
-
const contractDataLogs = await getContractDeploymentLogs(publicClient, contractDeploymentEmitterAddress, searchStartBlock);
|
|
45
|
+
const contractDataLogs = await getContractDeploymentLogs(publicClient, contractDeploymentEmitterAddress, searchStartBlock, searchEndBlock);
|
|
46
46
|
if (contractDataLogs.length === 0) {
|
|
47
47
|
break;
|
|
48
48
|
}
|
|
49
49
|
const newContracts = processContractDeploymentLogs(blockHashMapping, contractDataLogs);
|
|
50
50
|
retrievedNewContracts = retrievedNewContracts.concat(newContracts);
|
|
51
51
|
searchStartBlock = (contractDataLogs.findLast(cd => !!cd)?.blockNumber || searchStartBlock) + 1n;
|
|
52
|
-
} while (blockUntilSynced && searchStartBlock <=
|
|
52
|
+
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
53
53
|
return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewContracts };
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
@@ -57,22 +57,22 @@ export async function retrieveNewContractData(publicClient, contractDeploymentEm
|
|
|
57
57
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
58
58
|
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
59
59
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
60
|
-
* @param currentBlockNumber - Latest available block number in the ETH node.
|
|
61
60
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
61
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
62
62
|
* @returns An array of L1ToL2Message and next eth block to search from.
|
|
63
63
|
*/
|
|
64
|
-
export async function retrieveNewPendingL1ToL2Messages(publicClient, inboxAddress, blockUntilSynced,
|
|
64
|
+
export async function retrieveNewPendingL1ToL2Messages(publicClient, inboxAddress, blockUntilSynced, searchStartBlock, searchEndBlock) {
|
|
65
65
|
const retrievedNewL1ToL2Messages = [];
|
|
66
66
|
do {
|
|
67
|
-
if (searchStartBlock >
|
|
67
|
+
if (searchStartBlock > searchEndBlock) {
|
|
68
68
|
break;
|
|
69
69
|
}
|
|
70
|
-
const newL1ToL2MessageLogs = await getPendingL1ToL2MessageLogs(publicClient, inboxAddress, searchStartBlock);
|
|
70
|
+
const newL1ToL2MessageLogs = await getPendingL1ToL2MessageLogs(publicClient, inboxAddress, searchStartBlock, searchEndBlock);
|
|
71
71
|
const newL1ToL2Messages = processPendingL1ToL2MessageAddedLogs(newL1ToL2MessageLogs);
|
|
72
72
|
retrievedNewL1ToL2Messages.push(...newL1ToL2Messages);
|
|
73
73
|
// handles the case when there are no new messages:
|
|
74
74
|
searchStartBlock = (newL1ToL2MessageLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
|
|
75
|
-
} while (blockUntilSynced && searchStartBlock <=
|
|
75
|
+
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
76
76
|
return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewL1ToL2Messages };
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
@@ -80,23 +80,23 @@ export async function retrieveNewPendingL1ToL2Messages(publicClient, inboxAddres
|
|
|
80
80
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
81
81
|
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
82
82
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
83
|
-
* @param currentBlockNumber - Latest available block number in the ETH node.
|
|
84
83
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
84
|
+
* @param searchEndBlock - The highest block number that we should search up to.
|
|
85
85
|
* @returns An array of message keys that were cancelled and next eth block to search from.
|
|
86
86
|
*/
|
|
87
|
-
export async function retrieveNewCancelledL1ToL2Messages(publicClient, inboxAddress, blockUntilSynced,
|
|
87
|
+
export async function retrieveNewCancelledL1ToL2Messages(publicClient, inboxAddress, blockUntilSynced, searchStartBlock, searchEndBlock) {
|
|
88
88
|
const retrievedNewCancelledL1ToL2Messages = [];
|
|
89
89
|
do {
|
|
90
|
-
if (searchStartBlock >
|
|
90
|
+
if (searchStartBlock > searchEndBlock) {
|
|
91
91
|
break;
|
|
92
92
|
}
|
|
93
|
-
const newL1ToL2MessageCancelledLogs = await getL1ToL2MessageCancelledLogs(publicClient, inboxAddress, searchStartBlock);
|
|
93
|
+
const newL1ToL2MessageCancelledLogs = await getL1ToL2MessageCancelledLogs(publicClient, inboxAddress, searchStartBlock, searchEndBlock);
|
|
94
94
|
const newCancelledL1ToL2Messages = processCancelledL1ToL2MessagesLogs(newL1ToL2MessageCancelledLogs);
|
|
95
95
|
retrievedNewCancelledL1ToL2Messages.push(...newCancelledL1ToL2Messages);
|
|
96
96
|
// handles the case when there are no new messages:
|
|
97
97
|
searchStartBlock =
|
|
98
98
|
(newL1ToL2MessageCancelledLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
|
|
99
|
-
} while (blockUntilSynced && searchStartBlock <=
|
|
99
|
+
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
100
100
|
return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewCancelledL1ToL2Messages };
|
|
101
101
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvZGF0YV9yZXRyaWV2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qiw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsa0NBQWtDLEVBQ2xDLDZCQUE2QixFQUM3QixvQ0FBb0MsR0FDckMsTUFBTSx1QkFBdUIsQ0FBQztBQWdCL0I7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLFlBQTBCLEVBQzFCLGFBQXlCLEVBQ3pCLGdCQUF5QixFQUN6QixnQkFBd0IsRUFDeEIsY0FBc0IsRUFDdEIsc0JBQThCO0lBRTlCLE1BQU0sZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUN0QyxHQUFHO1FBQ0QsSUFBSSxnQkFBZ0IsR0FBRyxjQUFjLEVBQUU7WUFDckMsTUFBTTtTQUNQO1FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLHVCQUF1QixDQUN4RCxZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixjQUFjLENBQ2YsQ0FBQztRQUNGLElBQUksb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyQyxNQUFNO1NBQ1A7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JHLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNuQyxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBWSxHQUFHLEVBQUUsQ0FBQztRQUMzRixzQkFBc0IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3BELFFBQVEsZ0JBQWdCLElBQUksZ0JBQWdCLElBQUksY0FBYyxFQUFFO0lBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDbEYsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLFlBQTBCLEVBQzFCLGdDQUE0QyxFQUM1QyxnQkFBeUIsRUFDekIsZ0JBQXdCLEVBQ3hCLGNBQXNCLEVBQ3RCLGdCQUF1RDtJQUV2RCxJQUFJLHFCQUFxQixHQUF1QyxFQUFFLENBQUM7SUFDbkUsR0FBRztRQUNELElBQUksZ0JBQWdCLEdBQUcsY0FBYyxFQUFFO1lBQ3JDLE1BQU07U0FDUDtRQUNELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSx5QkFBeUIsQ0FDdEQsWUFBWSxFQUNaLGdDQUFnQyxFQUNoQyxnQkFBZ0IsRUFDaEIsY0FBYyxDQUNmLENBQUM7UUFDRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDakMsTUFBTTtTQUNQO1FBQ0QsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RixxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkUsZ0JBQWdCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQ2xHLFFBQVEsZ0JBQWdCLElBQUksZ0JBQWdCLElBQUksY0FBYyxFQUFFO0lBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztBQUN4RixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdDQUFnQyxDQUNwRCxZQUEwQixFQUMxQixZQUF3QixFQUN4QixnQkFBeUIsRUFDekIsZ0JBQXdCLEVBQ3hCLGNBQXNCO0lBRXRCLE1BQU0sMEJBQTBCLEdBQW9CLEVBQUUsQ0FBQztJQUN2RCxHQUFHO1FBQ0QsSUFBSSxnQkFBZ0IsR0FBRyxjQUFjLEVBQUU7WUFDckMsTUFBTTtTQUNQO1FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLDJCQUEyQixDQUM1RCxZQUFZLEVBQ1osWUFBWSxFQUNaLGdCQUFnQixFQUNoQixjQUFjLENBQ2YsQ0FBQztRQUNGLE1BQU0saUJBQWlCLEdBQUcsb0NBQW9DLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRiwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RELG1EQUFtRDtRQUNuRCxnQkFBZ0IsR0FBRyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDOUcsUUFBUSxnQkFBZ0IsSUFBSSxnQkFBZ0IsSUFBSSxjQUFjLEVBQUU7SUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxDQUFDO0FBQzdGLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0NBQWtDLENBQ3RELFlBQTBCLEVBQzFCLFlBQXdCLEVBQ3hCLGdCQUF5QixFQUN6QixnQkFBd0IsRUFDeEIsY0FBc0I7SUFFdEIsTUFBTSxtQ0FBbUMsR0FBUyxFQUFFLENBQUM7SUFDckQsR0FBRztRQUNELElBQUksZ0JBQWdCLEdBQUcsY0FBYyxFQUFFO1lBQ3JDLE1BQU07U0FDUDtRQUNELE1BQU0sNkJBQTZCLEdBQUcsTUFBTSw2QkFBNkIsQ0FDdkUsWUFBWSxFQUNaLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsY0FBYyxDQUNmLENBQUM7UUFDRixNQUFNLDBCQUEwQixHQUFHLGtDQUFrQyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDckcsbUNBQW1DLENBQUMsSUFBSSxDQUFDLEdBQUcsMEJBQTBCLENBQUMsQ0FBQztRQUN4RSxtREFBbUQ7UUFDbkQsZ0JBQWdCO1lBQ2QsQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQ3RHLFFBQVEsZ0JBQWdCLElBQUksZ0JBQWdCLElBQUksY0FBYyxFQUFFO0lBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQztBQUN0RyxDQUFDIn0=
|
|
@@ -28,9 +28,10 @@ export declare function processBlockLogs(publicClient: PublicClient, expectedL2B
|
|
|
28
28
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
29
29
|
* @param rollupAddress - The address of the rollup contract.
|
|
30
30
|
* @param fromBlock - First block to get logs from (inclusive).
|
|
31
|
+
* @param toBlock - Last block to get logs from (inclusive).
|
|
31
32
|
* @returns An array of `L2BlockProcessed` logs.
|
|
32
33
|
*/
|
|
33
|
-
export declare function getL2BlockProcessedLogs(publicClient: PublicClient, rollupAddress: EthAddress, fromBlock: bigint): Promise<import("viem").GetLogsReturnType<{
|
|
34
|
+
export declare function getL2BlockProcessedLogs(publicClient: PublicClient, rollupAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<import("viem").GetLogsReturnType<{
|
|
34
35
|
readonly anonymous: false;
|
|
35
36
|
readonly inputs: readonly [{
|
|
36
37
|
readonly indexed: true;
|
|
@@ -46,9 +47,10 @@ export declare function getL2BlockProcessedLogs(publicClient: PublicClient, roll
|
|
|
46
47
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
47
48
|
* @param contractDeploymentEmitterAddress - The address of the L2 contract deployment emitter contract.
|
|
48
49
|
* @param fromBlock - First block to get logs from (inclusive).
|
|
50
|
+
* @param toBlock - Last block to get logs from (inclusive).
|
|
49
51
|
* @returns An array of `ContractDeployment` logs.
|
|
50
52
|
*/
|
|
51
|
-
export declare function getContractDeploymentLogs(publicClient: PublicClient, contractDeploymentEmitterAddress: EthAddress, fromBlock: bigint): Promise<Log<bigint, number, undefined, true, typeof ContractDeploymentEmitterAbi, 'ContractDeployment'>[]>;
|
|
53
|
+
export declare function getContractDeploymentLogs(publicClient: PublicClient, contractDeploymentEmitterAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<Log<bigint, number, undefined, true, typeof ContractDeploymentEmitterAbi, 'ContractDeployment'>[]>;
|
|
52
54
|
/**
|
|
53
55
|
* Processes newly received ContractDeployment logs.
|
|
54
56
|
* @param blockHashMapping - A mapping from block number to relevant block hash.
|
|
@@ -63,15 +65,17 @@ export declare function processContractDeploymentLogs(blockHashMapping: {
|
|
|
63
65
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
64
66
|
* @param inboxAddress - The address of the inbox contract.
|
|
65
67
|
* @param fromBlock - First block to get logs from (inclusive).
|
|
68
|
+
* @param toBlock - Last block to get logs from (inclusive).
|
|
66
69
|
* @returns An array of `MessageAdded` logs.
|
|
67
70
|
*/
|
|
68
|
-
export declare function getPendingL1ToL2MessageLogs(publicClient: PublicClient, inboxAddress: EthAddress, fromBlock: bigint): Promise<Log<bigint, number, undefined, true, typeof InboxAbi, 'MessageAdded'>[]>;
|
|
71
|
+
export declare function getPendingL1ToL2MessageLogs(publicClient: PublicClient, inboxAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<Log<bigint, number, undefined, true, typeof InboxAbi, 'MessageAdded'>[]>;
|
|
69
72
|
/**
|
|
70
73
|
* Get relevant `L1ToL2MessageCancelled` logs emitted by Inbox on chain when pending messages are cancelled
|
|
71
74
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
72
75
|
* @param inboxAddress - The address of the inbox contract.
|
|
73
76
|
* @param fromBlock - First block to get logs from (inclusive).
|
|
77
|
+
* @param toBlock - Last block to get logs from (inclusive).
|
|
74
78
|
* @returns An array of `L1ToL2MessageCancelled` logs.
|
|
75
79
|
*/
|
|
76
|
-
export declare function getL1ToL2MessageCancelledLogs(publicClient: PublicClient, inboxAddress: EthAddress, fromBlock: bigint): Promise<Log<bigint, number, undefined, true, typeof InboxAbi, 'L1ToL2MessageCancelled'>[]>;
|
|
80
|
+
export declare function getL1ToL2MessageCancelledLogs(publicClient: PublicClient, inboxAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<Log<bigint, number, undefined, true, typeof InboxAbi, 'L1ToL2MessageCancelled'>[]>;
|
|
77
81
|
//# sourceMappingURL=eth_log_handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_log_handlers.d.ts","sourceRoot":"","sources":["../../src/archiver/eth_log_handlers.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAS,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAIL,oBAAoB,EAEpB,aAAa,EAEb,OAAO,EACR,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAO,GAAG,EAAE,YAAY,EAA0D,MAAM,MAAM,CAAC;AAEtG;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,cAAc,CAAC,EAAE,GAC5E,aAAa,EAAE,CAkBjB;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,wBAAwB,CAAC,EAAE,GACtF,EAAE,EAAE,CAMN;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,EAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,SAAS,EAAE,kBAAkB,CAAC,EAAE,sBAcnF;AA+BD
|
|
1
|
+
{"version":3,"file":"eth_log_handlers.d.ts","sourceRoot":"","sources":["../../src/archiver/eth_log_handlers.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAS,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAIL,oBAAoB,EAEpB,aAAa,EAEb,OAAO,EACR,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAO,GAAG,EAAE,YAAY,EAA0D,MAAM,MAAM,CAAC;AAEtG;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,cAAc,CAAC,EAAE,GAC5E,aAAa,EAAE,CAkBjB;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,wBAAwB,CAAC,EAAE,GACtF,EAAE,EAAE,CAMN;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,EAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,SAAS,EAAE,kBAAkB,CAAC,EAAE,sBAcnF;AA+BD;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;;;;;;;;;;UAchB;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,YAAY,EAC1B,gCAAgC,EAAE,UAAU,EAC5C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,4BAA4B,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAW5G;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,EACvD,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,4BAA4B,EAAE,oBAAoB,CAAC,EAAE,GACtG,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,EAAE,CA8BpC;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,CAWlF;AAED;;;;;;;GAOG;AACH,wBAAsB,6BAA6B,CACjD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,wBAAwB,CAAC,EAAE,CAAC,CAW5F"}
|