@aztec/archiver 0.76.4 → 0.77.0-testnet-ignition.21
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 +22 -10
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +762 -713
- package/dest/archiver/archiver_store.d.ts +20 -7
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store.js +4 -2
- package/dest/archiver/archiver_store_test_suite.d.ts +2 -2
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +398 -227
- package/dest/archiver/config.d.ts +1 -1
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +10 -12
- package/dest/archiver/data_retrieval.d.ts +17 -14
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +90 -88
- package/dest/archiver/errors.js +1 -2
- package/dest/archiver/index.d.ts +1 -1
- package/dest/archiver/index.d.ts.map +1 -1
- package/dest/archiver/index.js +0 -1
- package/dest/archiver/instrumentation.d.ts +3 -1
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/instrumentation.js +37 -17
- package/dest/archiver/kv_archiver_store/block_store.d.ts +5 -3
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +125 -130
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +2 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +45 -37
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +10 -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 +54 -15
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +16 -9
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +143 -160
- package/dest/archiver/kv_archiver_store/log_store.d.ts +5 -3
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +296 -255
- package/dest/archiver/kv_archiver_store/message_store.d.ts +3 -3
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +45 -50
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/nullifier_store.js +36 -43
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +2 -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 +17 -26
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +16 -7
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +287 -247
- package/dest/archiver/structs/data_retrieval.js +5 -2
- package/dest/archiver/structs/published.js +1 -2
- package/dest/factory.d.ts +20 -6
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +54 -30
- package/dest/index.js +0 -1
- package/dest/rpc/index.d.ts +2 -1
- package/dest/rpc/index.d.ts.map +1 -1
- package/dest/rpc/index.js +8 -4
- package/dest/test/index.js +0 -1
- package/dest/test/mock_archiver.d.ts +3 -2
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +8 -13
- package/dest/test/mock_l1_to_l2_message_source.d.ts +2 -2
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.js +4 -4
- package/dest/test/mock_l2_block_source.d.ts +5 -3
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +71 -68
- package/package.json +15 -16
- package/src/archiver/archiver.ts +149 -89
- package/src/archiver/archiver_store.ts +27 -27
- package/src/archiver/archiver_store_test_suite.ts +22 -15
- package/src/archiver/config.ts +1 -1
- package/src/archiver/data_retrieval.ts +32 -44
- package/src/archiver/index.ts +1 -1
- package/src/archiver/instrumentation.ts +11 -1
- package/src/archiver/kv_archiver_store/block_store.ts +10 -4
- package/src/archiver/kv_archiver_store/contract_class_store.ts +9 -9
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +81 -3
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +44 -29
- package/src/archiver/kv_archiver_store/log_store.ts +56 -32
- package/src/archiver/kv_archiver_store/message_store.ts +4 -3
- package/src/archiver/kv_archiver_store/nullifier_store.ts +3 -2
- package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +3 -3
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +110 -57
- package/src/factory.ts +44 -25
- package/src/rpc/index.ts +2 -6
- package/src/test/mock_archiver.ts +3 -2
- package/src/test/mock_l1_to_l2_message_source.ts +2 -2
- package/src/test/mock_l2_block_source.ts +16 -15
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type BlobSinkConfig } from '@aztec/blob-sink/client';
|
|
2
|
-
import { type ChainConfig } from '@aztec/circuit-types/config';
|
|
3
2
|
import { type L1ContractAddresses, type L1ContractsConfig, type L1ReaderConfig } from '@aztec/ethereum';
|
|
4
3
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
4
|
+
import { type ChainConfig } from '@aztec/stdlib/config';
|
|
5
5
|
/**
|
|
6
6
|
* There are 2 polling intervals used in this configuration. The first is the archiver polling interval, archiverPollingIntervalMS.
|
|
7
7
|
* This is the interval between successive calls to eth_blockNumber via viem.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/archiver/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,yBAAyB,CAAC;AACrF,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/archiver/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,yBAAyB,CAAC;AACrF,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAE7E;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,kFAAkF;IAClF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IAEjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,cAAc,GAChB,iBAAiB,GACjB,cAAc,GACd,WAAW,CAAC;AAEd,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CAmCrE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD"}
|
package/dest/archiver/config.js
CHANGED
|
@@ -1,48 +1,46 @@
|
|
|
1
1
|
import { blobSinkConfigMapping } from '@aztec/blob-sink/client';
|
|
2
|
-
import {
|
|
3
|
-
import { l1ContractsConfigMappings, l1ReaderConfigMappings, } from '@aztec/ethereum';
|
|
2
|
+
import { l1ContractsConfigMappings, l1ReaderConfigMappings } from '@aztec/ethereum';
|
|
4
3
|
import { getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
4
|
+
import { chainConfigMappings } from '@aztec/stdlib/config';
|
|
5
5
|
export const archiverConfigMappings = {
|
|
6
6
|
...blobSinkConfigMapping,
|
|
7
7
|
archiverUrl: {
|
|
8
8
|
env: 'ARCHIVER_URL',
|
|
9
|
-
description: 'URL for an archiver service. If set, will return an archiver client as opposed to starting a new one.'
|
|
9
|
+
description: 'URL for an archiver service. If set, will return an archiver client as opposed to starting a new one.'
|
|
10
10
|
},
|
|
11
11
|
l1ConsensusHostUrl: {
|
|
12
12
|
env: 'L1_CONSENSUS_HOST_URL',
|
|
13
13
|
description: 'URL for an L1 consensus client.',
|
|
14
|
-
parseEnv: (val)
|
|
14
|
+
parseEnv: (val)=>val
|
|
15
15
|
},
|
|
16
16
|
archiverPollingIntervalMS: {
|
|
17
17
|
env: 'ARCHIVER_POLLING_INTERVAL_MS',
|
|
18
18
|
description: 'The polling interval in ms for retrieving new L2 blocks and encrypted logs.',
|
|
19
|
-
...numberConfigHelper(500)
|
|
19
|
+
...numberConfigHelper(500)
|
|
20
20
|
},
|
|
21
21
|
archiverBatchSize: {
|
|
22
22
|
env: 'ARCHIVER_BATCH_SIZE',
|
|
23
23
|
description: 'The number of L2 blocks the archiver will attempt to download at a time.',
|
|
24
|
-
...numberConfigHelper(100)
|
|
24
|
+
...numberConfigHelper(100)
|
|
25
25
|
},
|
|
26
26
|
maxLogs: {
|
|
27
27
|
env: 'ARCHIVER_MAX_LOGS',
|
|
28
28
|
description: 'The max number of logs that can be obtained in 1 "getPublicLogs" call.',
|
|
29
|
-
...numberConfigHelper(
|
|
29
|
+
...numberConfigHelper(1_000)
|
|
30
30
|
},
|
|
31
31
|
...chainConfigMappings,
|
|
32
32
|
...l1ReaderConfigMappings,
|
|
33
33
|
viemPollingIntervalMS: {
|
|
34
34
|
env: 'ARCHIVER_VIEM_POLLING_INTERVAL_MS',
|
|
35
35
|
description: 'The polling interval viem uses in ms',
|
|
36
|
-
...numberConfigHelper(1000)
|
|
36
|
+
...numberConfigHelper(1000)
|
|
37
37
|
},
|
|
38
|
-
...l1ContractsConfigMappings
|
|
38
|
+
...l1ContractsConfigMappings
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
41
41
|
* Returns the archiver configuration from the environment variables.
|
|
42
42
|
* Note: If an environment variable is not set, the default value is used.
|
|
43
43
|
* @returns The archiver configuration.
|
|
44
|
-
*/
|
|
45
|
-
export function getArchiverConfigFromEnv() {
|
|
44
|
+
*/ export function getArchiverConfigFromEnv() {
|
|
46
45
|
return getConfigFromMappings(archiverConfigMappings);
|
|
47
46
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FyY2hpdmVyL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckYsT0FBTyxFQUFvQixtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BGLE9BQU8sRUFJTCx5QkFBeUIsRUFDekIsc0JBQXNCLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUEyQixxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBc0M5RyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBdUM7SUFDeEUsR0FBRyxxQkFBcUI7SUFDeEIsV0FBVyxFQUFFO1FBQ1gsR0FBRyxFQUFFLGNBQWM7UUFDbkIsV0FBVyxFQUNULHVHQUF1RztLQUMxRztJQUNELGtCQUFrQixFQUFFO1FBQ2xCLEdBQUcsRUFBRSx1QkFBdUI7UUFDNUIsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUc7S0FDL0I7SUFDRCx5QkFBeUIsRUFBRTtRQUN6QixHQUFHLEVBQUUsOEJBQThCO1FBQ25DLFdBQVcsRUFBRSw2RUFBNkU7UUFDMUYsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixHQUFHLEVBQUUscUJBQXFCO1FBQzFCLFdBQVcsRUFBRSwwRUFBMEU7UUFDdkYsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCxPQUFPLEVBQUU7UUFDUCxHQUFHLEVBQUUsbUJBQW1CO1FBQ3hCLFdBQVcsRUFBRSx3RUFBd0U7UUFDckYsR0FBRyxrQkFBa0IsQ0FBQyxJQUFLLENBQUM7S0FDN0I7SUFDRCxHQUFHLG1CQUFtQjtJQUN0QixHQUFHLHNCQUFzQjtJQUN6QixxQkFBcUIsRUFBRTtRQUNyQixHQUFHLEVBQUUsbUNBQW1DO1FBQ3hDLFdBQVcsRUFBRSxzQ0FBc0M7UUFDbkQsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCxHQUFHLHlCQUF5QjtDQUM3QixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsT0FBTyxxQkFBcUIsQ0FBaUIsc0JBQXNCLENBQUMsQ0FBQztBQUN2RSxDQUFDIn0=
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
4
|
+
import type { ViemPublicClient } from '@aztec/ethereum';
|
|
5
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
7
7
|
import { type Logger } from '@aztec/foundation/log';
|
|
8
8
|
import { type InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
9
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
10
|
+
import { InboxLeaf } from '@aztec/stdlib/messaging';
|
|
11
|
+
import { Proof } from '@aztec/stdlib/proofs';
|
|
12
|
+
import { type GetContractEventsReturnType, type GetContractReturnType, type Hex } from 'viem';
|
|
13
|
+
import type { DataRetrieval } from './structs/data_retrieval.js';
|
|
14
|
+
import type { L1Published } from './structs/published.js';
|
|
12
15
|
/**
|
|
13
16
|
* Fetches new L2 blocks.
|
|
14
17
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
@@ -18,7 +21,7 @@ import { type L1Published } from './structs/published.js';
|
|
|
18
21
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
19
22
|
* @returns An array of block; as well as the next eth block to search from.
|
|
20
23
|
*/
|
|
21
|
-
export declare function retrieveBlocksFromRollup(rollup: GetContractReturnType<typeof RollupAbi,
|
|
24
|
+
export declare function retrieveBlocksFromRollup(rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>, publicClient: ViemPublicClient, blobSinkClient: BlobSinkClientInterface, searchStartBlock: bigint, searchEndBlock: bigint, logger?: Logger): Promise<L1Published<L2Block>[]>;
|
|
22
25
|
/**
|
|
23
26
|
* Processes newly received L2BlockProposed logs.
|
|
24
27
|
* @param rollup - The rollup contract
|
|
@@ -26,8 +29,8 @@ export declare function retrieveBlocksFromRollup(rollup: GetContractReturnType<t
|
|
|
26
29
|
* @param logs - L2BlockProposed logs.
|
|
27
30
|
* @returns - An array blocks.
|
|
28
31
|
*/
|
|
29
|
-
export declare function processL2BlockProposedLogs(rollup: GetContractReturnType<typeof RollupAbi,
|
|
30
|
-
export declare function getL1BlockTime(publicClient:
|
|
32
|
+
export declare function processL2BlockProposedLogs(rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>, publicClient: ViemPublicClient, blobSinkClient: BlobSinkClientInterface, logs: GetContractEventsReturnType<typeof RollupAbi, 'L2BlockProposed'>, logger: Logger): Promise<L1Published<L2Block>[]>;
|
|
33
|
+
export declare function getL1BlockTime(publicClient: ViemPublicClient, blockNumber: bigint): Promise<bigint>;
|
|
31
34
|
/**
|
|
32
35
|
* Fetch L1 to L2 messages.
|
|
33
36
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
@@ -37,16 +40,16 @@ export declare function getL1BlockTime(publicClient: PublicClient, blockNumber:
|
|
|
37
40
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
38
41
|
* @returns An array of InboxLeaf and next eth block to search from.
|
|
39
42
|
*/
|
|
40
|
-
export declare function retrieveL1ToL2Messages(inbox: GetContractReturnType<typeof InboxAbi,
|
|
43
|
+
export declare function retrieveL1ToL2Messages(inbox: GetContractReturnType<typeof InboxAbi, ViemPublicClient>, searchStartBlock: bigint, searchEndBlock: bigint): Promise<DataRetrieval<InboxLeaf>>;
|
|
41
44
|
/** Retrieves L2ProofVerified events from the rollup contract. */
|
|
42
|
-
export declare function retrieveL2ProofVerifiedEvents(publicClient:
|
|
45
|
+
export declare function retrieveL2ProofVerifiedEvents(publicClient: ViemPublicClient, rollupAddress: EthAddress, searchStartBlock: bigint, searchEndBlock?: bigint): Promise<{
|
|
43
46
|
l1BlockNumber: bigint;
|
|
44
47
|
l2BlockNumber: bigint;
|
|
45
48
|
proverId: Fr;
|
|
46
49
|
txHash: Hex;
|
|
47
50
|
}[]>;
|
|
48
51
|
/** Retrieve submitted proofs from the rollup contract */
|
|
49
|
-
export declare function retrieveL2ProofsFromRollup(publicClient:
|
|
52
|
+
export declare function retrieveL2ProofsFromRollup(publicClient: ViemPublicClient, rollupAddress: EthAddress, searchStartBlock: bigint, searchEndBlock?: bigint): Promise<DataRetrieval<{
|
|
50
53
|
proof: Proof;
|
|
51
54
|
proverId: Fr;
|
|
52
55
|
l2BlockNumber: bigint;
|
|
@@ -67,5 +70,5 @@ export type SubmitBlockProof = {
|
|
|
67
70
|
* @param l2BlockNum - L2 block number.
|
|
68
71
|
* @returns L2 block metadata (header and archive) from the calldata, deserialized
|
|
69
72
|
*/
|
|
70
|
-
export declare function getProofFromSubmitProofTx(publicClient:
|
|
73
|
+
export declare function getProofFromSubmitProofTx(publicClient: ViemPublicClient, txHash: `0x${string}`, expectedProverId: Fr): Promise<SubmitBlockProof>;
|
|
71
74
|
//# 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":";;AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { Blob, BlobDeserializationError } from '@aztec/blob-lib';
|
|
2
|
-
import { Body, InboxLeaf, L2Block } from '@aztec/circuit-types';
|
|
3
|
-
import { AppendOnlyTreeSnapshot, BlockHeader, Fr, Proof } from '@aztec/circuits.js';
|
|
4
2
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
3
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
5
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
5
|
import { numToUInt32BE } from '@aztec/foundation/serialize';
|
|
7
6
|
import { ForwarderAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
8
|
-
import {
|
|
7
|
+
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
8
|
+
import { InboxLeaf } from '@aztec/stdlib/messaging';
|
|
9
|
+
import { Proof } from '@aztec/stdlib/proofs';
|
|
10
|
+
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
11
|
+
import { BlockHeader } from '@aztec/stdlib/tx';
|
|
12
|
+
import { decodeFunctionData, getAbiItem, hexToBytes } from 'viem';
|
|
9
13
|
import { NoBlobBodiesFoundError } from './errors.js';
|
|
10
14
|
/**
|
|
11
15
|
* Fetches new L2 blocks.
|
|
@@ -15,8 +19,7 @@ import { NoBlobBodiesFoundError } from './errors.js';
|
|
|
15
19
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
16
20
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
17
21
|
* @returns An array of block; as well as the next eth block to search from.
|
|
18
|
-
*/
|
|
19
|
-
export async function retrieveBlocksFromRollup(rollup, publicClient, blobSinkClient, searchStartBlock, searchEndBlock, logger = createLogger('archiver')) {
|
|
22
|
+
*/ export async function retrieveBlocksFromRollup(rollup, publicClient, blobSinkClient, searchStartBlock, searchEndBlock, logger = createLogger('archiver')) {
|
|
20
23
|
const retrievedBlocks = [];
|
|
21
24
|
do {
|
|
22
25
|
if (searchStartBlock > searchEndBlock) {
|
|
@@ -24,8 +27,8 @@ export async function retrieveBlocksFromRollup(rollup, publicClient, blobSinkCli
|
|
|
24
27
|
}
|
|
25
28
|
const l2BlockProposedLogs = (await rollup.getEvents.L2BlockProposed({}, {
|
|
26
29
|
fromBlock: searchStartBlock,
|
|
27
|
-
toBlock: searchEndBlock
|
|
28
|
-
})).filter(log
|
|
30
|
+
toBlock: searchEndBlock
|
|
31
|
+
})).filter((log)=>log.blockNumber >= searchStartBlock && log.blockNumber <= searchEndBlock);
|
|
29
32
|
if (l2BlockProposedLogs.length === 0) {
|
|
30
33
|
break;
|
|
31
34
|
}
|
|
@@ -34,8 +37,9 @@ export async function retrieveBlocksFromRollup(rollup, publicClient, blobSinkCli
|
|
|
34
37
|
const newBlocks = await processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, l2BlockProposedLogs, logger);
|
|
35
38
|
retrievedBlocks.push(...newBlocks);
|
|
36
39
|
searchStartBlock = lastLog.blockNumber + 1n;
|
|
37
|
-
}
|
|
38
|
-
return
|
|
40
|
+
}while (searchStartBlock <= searchEndBlock)
|
|
41
|
+
// The asyncpool from processL2BlockProposedLogs will not necessarily return the blocks in order, so we sort them before returning.
|
|
42
|
+
return retrievedBlocks.sort((a, b)=>Number(a.l1.blockNumber - b.l1.blockNumber));
|
|
39
43
|
}
|
|
40
44
|
/**
|
|
41
45
|
* Processes newly received L2BlockProposed logs.
|
|
@@ -43,35 +47,41 @@ export async function retrieveBlocksFromRollup(rollup, publicClient, blobSinkCli
|
|
|
43
47
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
44
48
|
* @param logs - L2BlockProposed logs.
|
|
45
49
|
* @returns - An array blocks.
|
|
46
|
-
*/
|
|
47
|
-
export async function processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, logs, logger) {
|
|
50
|
+
*/ export async function processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, logs, logger) {
|
|
48
51
|
const retrievedBlocks = [];
|
|
49
|
-
await asyncPool(10, logs, async (log)
|
|
52
|
+
await asyncPool(10, logs, async (log)=>{
|
|
50
53
|
const l2BlockNumber = log.args.blockNumber;
|
|
51
54
|
const archive = log.args.archive;
|
|
52
|
-
const archiveFromChain = await rollup.read.archiveAt([
|
|
53
|
-
|
|
55
|
+
const archiveFromChain = await rollup.read.archiveAt([
|
|
56
|
+
l2BlockNumber
|
|
57
|
+
]);
|
|
58
|
+
const blobHashes = log.args.versionedBlobHashes.map((blobHash)=>Buffer.from(blobHash.slice(2), 'hex'));
|
|
54
59
|
// The value from the event and contract will match only if the block is in the chain.
|
|
55
60
|
if (archive === archiveFromChain) {
|
|
56
61
|
const block = await getBlockFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, l2BlockNumber, rollup.address, logger);
|
|
57
62
|
const l1 = {
|
|
58
63
|
blockNumber: log.blockNumber,
|
|
59
64
|
blockHash: log.blockHash,
|
|
60
|
-
timestamp: await getL1BlockTime(publicClient, log.blockNumber)
|
|
65
|
+
timestamp: await getL1BlockTime(publicClient, log.blockNumber)
|
|
61
66
|
};
|
|
62
|
-
retrievedBlocks.push({
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
retrievedBlocks.push({
|
|
68
|
+
data: block,
|
|
69
|
+
l1
|
|
70
|
+
});
|
|
71
|
+
} else {
|
|
65
72
|
logger.warn(`Ignoring L2 block ${l2BlockNumber} due to archive root mismatch`, {
|
|
66
73
|
actual: archive,
|
|
67
|
-
expected: archiveFromChain
|
|
74
|
+
expected: archiveFromChain
|
|
68
75
|
});
|
|
69
76
|
}
|
|
70
77
|
});
|
|
71
78
|
return retrievedBlocks;
|
|
72
79
|
}
|
|
73
80
|
export async function getL1BlockTime(publicClient, blockNumber) {
|
|
74
|
-
const block = await publicClient.getBlock({
|
|
81
|
+
const block = await publicClient.getBlock({
|
|
82
|
+
blockNumber,
|
|
83
|
+
includeTransactions: false
|
|
84
|
+
});
|
|
75
85
|
return block.timestamp;
|
|
76
86
|
}
|
|
77
87
|
/**
|
|
@@ -79,12 +89,11 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
79
89
|
* @param forwarderData - The forwarder transaction input data
|
|
80
90
|
* @param rollupAddress - The address of the rollup contract
|
|
81
91
|
* @returns The calldata for the first 'propose' method call to the rollup contract
|
|
82
|
-
*/
|
|
83
|
-
function extractRollupProposeCalldata(forwarderData, rollupAddress) {
|
|
92
|
+
*/ function extractRollupProposeCalldata(forwarderData, rollupAddress) {
|
|
84
93
|
// TODO(#11451): custom forwarders
|
|
85
94
|
const { functionName: forwarderFunctionName, args: forwarderArgs } = decodeFunctionData({
|
|
86
95
|
abi: ForwarderAbi,
|
|
87
|
-
data: forwarderData
|
|
96
|
+
data: forwarderData
|
|
88
97
|
});
|
|
89
98
|
if (forwarderFunctionName !== 'forward') {
|
|
90
99
|
throw new Error(`Unexpected forwarder method called ${forwarderFunctionName}`);
|
|
@@ -95,7 +104,7 @@ function extractRollupProposeCalldata(forwarderData, rollupAddress) {
|
|
|
95
104
|
const [to, data] = forwarderArgs;
|
|
96
105
|
// Find all rollup calls
|
|
97
106
|
const rollupAddressLower = rollupAddress.toLowerCase();
|
|
98
|
-
for
|
|
107
|
+
for(let i = 0; i < to.length; i++){
|
|
99
108
|
const addr = to[i];
|
|
100
109
|
if (addr.toLowerCase() !== rollupAddressLower) {
|
|
101
110
|
continue;
|
|
@@ -104,14 +113,12 @@ function extractRollupProposeCalldata(forwarderData, rollupAddress) {
|
|
|
104
113
|
try {
|
|
105
114
|
const { functionName: rollupFunctionName } = decodeFunctionData({
|
|
106
115
|
abi: RollupAbi,
|
|
107
|
-
data: callData
|
|
116
|
+
data: callData
|
|
108
117
|
});
|
|
109
118
|
if (rollupFunctionName === 'propose') {
|
|
110
119
|
return callData;
|
|
111
120
|
}
|
|
112
|
-
}
|
|
113
|
-
catch (err) {
|
|
114
|
-
// Skip invalid function data
|
|
121
|
+
} catch (err) {
|
|
115
122
|
continue;
|
|
116
123
|
}
|
|
117
124
|
}
|
|
@@ -125,53 +132,38 @@ function extractRollupProposeCalldata(forwarderData, rollupAddress) {
|
|
|
125
132
|
* @param txHash - Hash of the tx that published it.
|
|
126
133
|
* @param l2BlockNum - L2 block number.
|
|
127
134
|
* @returns L2 block from the calldata, deserialized
|
|
128
|
-
*/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
*/ async function getBlockFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, l2BlockNum, rollupAddress, logger) {
|
|
136
|
+
const { input: forwarderData, blockHash } = await publicClient.getTransaction({
|
|
137
|
+
hash: txHash
|
|
138
|
+
});
|
|
132
139
|
const rollupData = extractRollupProposeCalldata(forwarderData, rollupAddress);
|
|
133
140
|
const { functionName: rollupFunctionName, args: rollupArgs } = decodeFunctionData({
|
|
134
141
|
abi: RollupAbi,
|
|
135
|
-
data: rollupData
|
|
142
|
+
data: rollupData
|
|
136
143
|
});
|
|
137
144
|
if (rollupFunctionName !== 'propose') {
|
|
138
145
|
throw new Error(`Unexpected rollup method called ${rollupFunctionName}`);
|
|
139
146
|
}
|
|
140
|
-
|
|
141
|
-
const [decodedArgs, , bodyHex, blobInputs] = rollupArgs;
|
|
147
|
+
const [decodedArgs, , blobInputs] = rollupArgs;
|
|
142
148
|
const header = BlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header)));
|
|
143
149
|
const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes);
|
|
144
150
|
if (blobBodies.length === 0) {
|
|
145
151
|
throw new NoBlobBodiesFoundError(Number(l2BlockNum));
|
|
146
152
|
}
|
|
147
|
-
// TODO(#9101): Once calldata is removed, we can remove this field encoding and update
|
|
148
|
-
// Body.fromBlobFields to accept blob buffers directly
|
|
149
153
|
let blockFields;
|
|
150
154
|
try {
|
|
151
155
|
blockFields = Blob.toEncodedFields(blobBodies);
|
|
152
|
-
}
|
|
153
|
-
catch (err) {
|
|
156
|
+
} catch (err) {
|
|
154
157
|
if (err instanceof BlobDeserializationError) {
|
|
155
158
|
logger.fatal(err.message);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
159
|
+
} else {
|
|
158
160
|
logger.fatal('Unable to sync: failed to decode fetched blob, this blob was likely not created by us');
|
|
159
161
|
}
|
|
160
162
|
throw err;
|
|
161
163
|
}
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
//
|
|
165
|
-
const blockBody = Body.fromBuffer(Buffer.from(hexToBytes(bodyHex)));
|
|
166
|
-
// TODO(#9101): The below reconstruction is currently redundant, but once we extract blobs will be the way to construct blocks.
|
|
167
|
-
// The blob source will give us blockFields, and we must construct the body from them:
|
|
168
|
-
// TODO(#8954): When logs are refactored into fields, we won't need to inject them here.
|
|
169
|
-
const reconstructedBlock = Body.fromBlobFields(blockFields, blockBody.contractClassLogs);
|
|
170
|
-
if (!reconstructedBlock.toBuffer().equals(blockBody.toBuffer())) {
|
|
171
|
-
// TODO(#9101): Remove below check (without calldata there will be nothing to check against)
|
|
172
|
-
throw new Error(`Block reconstructed from blob fields does not match`);
|
|
173
|
-
}
|
|
174
|
-
// TODO(#9101): Once we stop publishing calldata, we will still need the blobCheck below to ensure that the block we are building does correspond to the blob fields
|
|
164
|
+
// The blob source gives us blockFields, and we must construct the body from them:
|
|
165
|
+
const blockBody = Body.fromBlobFields(blockFields);
|
|
166
|
+
// TODO: Will this ever throw now that we do not get blocks from calldata at all?
|
|
175
167
|
const blobCheck = await Blob.getBlobs(blockFields);
|
|
176
168
|
if (Blob.getEthBlobEvaluationInputs(blobCheck) !== blobInputs) {
|
|
177
169
|
// NB: We can just check the blobhash here, which is the first 32 bytes of blobInputs
|
|
@@ -183,8 +175,8 @@ l2BlockNum, rollupAddress, logger) {
|
|
|
183
175
|
throw new Error(`Block number mismatch: expected ${l2BlockNum} but got ${blockNumberFromHeader}`);
|
|
184
176
|
}
|
|
185
177
|
const archive = AppendOnlyTreeSnapshot.fromBuffer(Buffer.concat([
|
|
186
|
-
Buffer.from(hexToBytes(decodedArgs.archive)),
|
|
187
|
-
numToUInt32BE(Number(l2BlockNum + 1n))
|
|
178
|
+
Buffer.from(hexToBytes(decodedArgs.archive)),
|
|
179
|
+
numToUInt32BE(Number(l2BlockNum + 1n))
|
|
188
180
|
]));
|
|
189
181
|
return new L2Block(archive, header, blockBody);
|
|
190
182
|
}
|
|
@@ -196,8 +188,7 @@ l2BlockNum, rollupAddress, logger) {
|
|
|
196
188
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
197
189
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
198
190
|
* @returns An array of InboxLeaf and next eth block to search from.
|
|
199
|
-
*/
|
|
200
|
-
export async function retrieveL1ToL2Messages(inbox, searchStartBlock, searchEndBlock) {
|
|
191
|
+
*/ export async function retrieveL1ToL2Messages(inbox, searchStartBlock, searchEndBlock) {
|
|
201
192
|
const retrievedL1ToL2Messages = [];
|
|
202
193
|
do {
|
|
203
194
|
if (searchStartBlock > searchEndBlock) {
|
|
@@ -205,48 +196,57 @@ export async function retrieveL1ToL2Messages(inbox, searchStartBlock, searchEndB
|
|
|
205
196
|
}
|
|
206
197
|
const messageSentLogs = (await inbox.getEvents.MessageSent({}, {
|
|
207
198
|
fromBlock: searchStartBlock,
|
|
208
|
-
toBlock: searchEndBlock
|
|
209
|
-
})).filter(log
|
|
199
|
+
toBlock: searchEndBlock
|
|
200
|
+
})).filter((log)=>log.blockNumber >= searchStartBlock && log.blockNumber <= searchEndBlock);
|
|
210
201
|
if (messageSentLogs.length === 0) {
|
|
211
202
|
break;
|
|
212
203
|
}
|
|
213
|
-
for (const log of messageSentLogs)
|
|
204
|
+
for (const log of messageSentLogs){
|
|
214
205
|
const { index, hash } = log.args;
|
|
215
206
|
retrievedL1ToL2Messages.push(new InboxLeaf(index, Fr.fromHexString(hash)));
|
|
216
207
|
}
|
|
217
208
|
// handles the case when there are no new messages:
|
|
218
|
-
searchStartBlock = (messageSentLogs.findLast(msgLog
|
|
219
|
-
}
|
|
220
|
-
return {
|
|
209
|
+
searchStartBlock = (messageSentLogs.findLast((msgLog)=>!!msgLog)?.blockNumber || searchStartBlock) + 1n;
|
|
210
|
+
}while (searchStartBlock <= searchEndBlock)
|
|
211
|
+
return {
|
|
212
|
+
lastProcessedL1BlockNumber: searchStartBlock - 1n,
|
|
213
|
+
retrievedData: retrievedL1ToL2Messages
|
|
214
|
+
};
|
|
221
215
|
}
|
|
222
|
-
/** Retrieves L2ProofVerified events from the rollup contract. */
|
|
223
|
-
export async function retrieveL2ProofVerifiedEvents(publicClient, rollupAddress, searchStartBlock, searchEndBlock) {
|
|
216
|
+
/** Retrieves L2ProofVerified events from the rollup contract. */ export async function retrieveL2ProofVerifiedEvents(publicClient, rollupAddress, searchStartBlock, searchEndBlock) {
|
|
224
217
|
const logs = await publicClient.getLogs({
|
|
225
218
|
address: rollupAddress.toString(),
|
|
226
219
|
fromBlock: searchStartBlock,
|
|
227
220
|
toBlock: searchEndBlock ? searchEndBlock : undefined,
|
|
228
221
|
strict: true,
|
|
229
|
-
event: getAbiItem({
|
|
222
|
+
event: getAbiItem({
|
|
223
|
+
abi: RollupAbi,
|
|
224
|
+
name: 'L2ProofVerified'
|
|
225
|
+
})
|
|
230
226
|
});
|
|
231
|
-
return logs.map(log
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
227
|
+
return logs.map((log)=>({
|
|
228
|
+
l1BlockNumber: log.blockNumber,
|
|
229
|
+
l2BlockNumber: log.args.blockNumber,
|
|
230
|
+
proverId: Fr.fromHexString(log.args.proverId),
|
|
231
|
+
txHash: log.transactionHash
|
|
232
|
+
}));
|
|
237
233
|
}
|
|
238
|
-
/** Retrieve submitted proofs from the rollup contract */
|
|
239
|
-
export async function retrieveL2ProofsFromRollup(publicClient, rollupAddress, searchStartBlock, searchEndBlock) {
|
|
234
|
+
/** Retrieve submitted proofs from the rollup contract */ export async function retrieveL2ProofsFromRollup(publicClient, rollupAddress, searchStartBlock, searchEndBlock) {
|
|
240
235
|
const logs = await retrieveL2ProofVerifiedEvents(publicClient, rollupAddress, searchStartBlock, searchEndBlock);
|
|
241
236
|
const retrievedData = [];
|
|
242
237
|
const lastProcessedL1BlockNumber = logs.length > 0 ? logs.at(-1).l1BlockNumber : searchStartBlock - 1n;
|
|
243
|
-
for (const { txHash, proverId, l2BlockNumber } of logs)
|
|
238
|
+
for (const { txHash, proverId, l2BlockNumber } of logs){
|
|
244
239
|
const proofData = await getProofFromSubmitProofTx(publicClient, txHash, proverId);
|
|
245
|
-
retrievedData.push({
|
|
240
|
+
retrievedData.push({
|
|
241
|
+
proof: proofData.proof,
|
|
242
|
+
proverId: proofData.proverId,
|
|
243
|
+
l2BlockNumber,
|
|
244
|
+
txHash
|
|
245
|
+
});
|
|
246
246
|
}
|
|
247
247
|
return {
|
|
248
248
|
retrievedData,
|
|
249
|
-
lastProcessedL1BlockNumber
|
|
249
|
+
lastProcessedL1BlockNumber
|
|
250
250
|
};
|
|
251
251
|
}
|
|
252
252
|
/**
|
|
@@ -257,10 +257,14 @@ export async function retrieveL2ProofsFromRollup(publicClient, rollupAddress, se
|
|
|
257
257
|
* @param txHash - Hash of the tx that published it.
|
|
258
258
|
* @param l2BlockNum - L2 block number.
|
|
259
259
|
* @returns L2 block metadata (header and archive) from the calldata, deserialized
|
|
260
|
-
*/
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
260
|
+
*/ export async function getProofFromSubmitProofTx(publicClient, txHash, expectedProverId) {
|
|
261
|
+
const { input: data } = await publicClient.getTransaction({
|
|
262
|
+
hash: txHash
|
|
263
|
+
});
|
|
264
|
+
const { functionName, args } = decodeFunctionData({
|
|
265
|
+
abi: RollupAbi,
|
|
266
|
+
data
|
|
267
|
+
});
|
|
264
268
|
let proverId;
|
|
265
269
|
let archiveRoot;
|
|
266
270
|
let aggregationObject;
|
|
@@ -268,11 +272,10 @@ export async function getProofFromSubmitProofTx(publicClient, txHash, expectedPr
|
|
|
268
272
|
if (functionName === 'submitEpochRootProof') {
|
|
269
273
|
const [decodedArgs] = args;
|
|
270
274
|
aggregationObject = Buffer.from(hexToBytes(decodedArgs.aggregationObject));
|
|
271
|
-
proverId = Fr.fromHexString(decodedArgs.args
|
|
272
|
-
archiveRoot = Fr.fromHexString(decodedArgs.args
|
|
275
|
+
proverId = Fr.fromHexString(decodedArgs.args.proverId);
|
|
276
|
+
archiveRoot = Fr.fromHexString(decodedArgs.args.endArchive);
|
|
273
277
|
proof = Proof.fromBuffer(Buffer.from(hexToBytes(decodedArgs.proof)));
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
278
|
+
} else {
|
|
276
279
|
throw new Error(`Unexpected proof method called ${functionName}`);
|
|
277
280
|
}
|
|
278
281
|
if (!proverId.equals(expectedProverId)) {
|
|
@@ -282,7 +285,6 @@ export async function getProofFromSubmitProofTx(publicClient, txHash, expectedPr
|
|
|
282
285
|
proverId,
|
|
283
286
|
aggregationObject,
|
|
284
287
|
archiveRoot,
|
|
285
|
-
proof
|
|
288
|
+
proof
|
|
286
289
|
};
|
|
287
290
|
}
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvZGF0YV9yZXRyaWV2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUd6RCxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQWlCLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE9BQU8sRUFPTCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlyRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsd0JBQXdCLENBQzVDLE1BQW1GLEVBQ25GLFlBQTBCLEVBQzFCLGNBQXVDLEVBQ3ZDLGdCQUF3QixFQUN4QixjQUFzQixFQUN0QixTQUFpQixZQUFZLENBQUMsVUFBVSxDQUFDO0lBRXpDLE1BQU0sZUFBZSxHQUEyQixFQUFFLENBQUM7SUFDbkQsR0FBRyxDQUFDO1FBQ0YsSUFBSSxnQkFBZ0IsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUN0QyxNQUFNO1FBQ1IsQ0FBQztRQUNELE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsTUFBTSxNQUFNLENB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
|
package/dest/archiver/errors.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export class NoBlobBodiesFoundError extends Error {
|
|
2
|
-
constructor(l2BlockNum)
|
|
2
|
+
constructor(l2BlockNum){
|
|
3
3
|
super(`No blob bodies found for block ${l2BlockNum}`);
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FyY2hpdmVyL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsS0FBSztJQUMvQyxZQUFZLFVBQWtCO1FBQzVCLEtBQUssQ0FBQyxrQ0FBa0MsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0YifQ==
|
package/dest/archiver/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from './archiver.js';
|
|
|
2
2
|
export * from './config.js';
|
|
3
3
|
export { type L1Published, type L1PublishedData } from './structs/published.js';
|
|
4
4
|
export { MemoryArchiverStore } from './memory_archiver_store/memory_archiver_store.js';
|
|
5
|
-
export { ArchiverDataStore } from './archiver_store.js';
|
|
5
|
+
export type { ArchiverDataStore } from './archiver_store.js';
|
|
6
6
|
export { KVArchiverDataStore } from './kv_archiver_store/kv_archiver_store.js';
|
|
7
7
|
export { ContractInstanceStore } from './kv_archiver_store/contract_instance_store.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/archiver/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/archiver/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC"}
|
package/dest/archiver/index.js
CHANGED
|
@@ -3,4 +3,3 @@ export * from './config.js';
|
|
|
3
3
|
export { MemoryArchiverStore } from './memory_archiver_store/memory_archiver_store.js';
|
|
4
4
|
export { KVArchiverDataStore } from './kv_archiver_store/kv_archiver_store.js';
|
|
5
5
|
export { ContractInstanceStore } from './kv_archiver_store/contract_instance_store.js';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFFNUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUMifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { L2Block } 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;
|
|
@@ -7,6 +7,7 @@ export declare class ArchiverInstrumentation {
|
|
|
7
7
|
private txCount;
|
|
8
8
|
private syncDuration;
|
|
9
9
|
private l1BlocksSynced;
|
|
10
|
+
private l1BlockHeight;
|
|
10
11
|
private proofsSubmittedDelay;
|
|
11
12
|
private proofsSubmittedCount;
|
|
12
13
|
private dbMetrics;
|
|
@@ -23,5 +24,6 @@ export declare class ArchiverInstrumentation {
|
|
|
23
24
|
l2BlockNumber: bigint;
|
|
24
25
|
delay: bigint;
|
|
25
26
|
}[]): void;
|
|
27
|
+
updateL1BlockHeight(blockNumber: bigint): void;
|
|
26
28
|
}
|
|
27
29
|
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/archiver/instrumentation.ts"],"names":[],"mappings":"
|
|
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;IAed,OAAO,CAAC,SAAS;IAdrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,GAAG,CAA4C;IAEvD,OAAO;WAsDa,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;IAU1E,SAAS,IAAI,OAAO;IAIpB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAS5D,YAAY;IAIZ,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"}
|