@aztec/archiver 0.0.1-commit.b655e406 → 0.0.1-commit.fce3e4f
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 +30 -20
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +294 -208
- package/dest/archiver/archiver_store.d.ts +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +5 -4
- package/dest/archiver/config.d.ts +1 -1
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +5 -0
- package/dest/archiver/data_retrieval.d.ts +17 -17
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +110 -86
- package/dest/archiver/errors.d.ts +1 -1
- package/dest/archiver/errors.d.ts.map +1 -1
- package/dest/archiver/index.d.ts +1 -1
- package/dest/archiver/instrumentation.d.ts +3 -3
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/structs/data_retrieval.d.ts +1 -1
- package/dest/archiver/structs/inbox_message.d.ts +1 -1
- package/dest/archiver/structs/published.d.ts +3 -2
- package/dest/archiver/structs/published.d.ts.map +1 -1
- package/dest/archiver/validation.d.ts +10 -4
- package/dest/archiver/validation.d.ts.map +1 -1
- package/dest/archiver/validation.js +29 -21
- package/dest/factory.d.ts +1 -1
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/rpc/index.d.ts +2 -2
- package/dest/test/index.d.ts +1 -1
- package/dest/test/mock_archiver.d.ts +1 -1
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.d.ts +1 -1
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.d.ts +7 -6
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +1 -1
- package/dest/test/mock_structs.d.ts +1 -1
- package/package.json +17 -17
- package/src/archiver/archiver.ts +380 -244
- package/src/archiver/archiver_store_test_suite.ts +5 -4
- package/src/archiver/config.ts +5 -0
- package/src/archiver/data_retrieval.ts +156 -125
- package/src/archiver/instrumentation.ts +2 -2
- package/src/archiver/structs/published.ts +2 -1
- package/src/archiver/validation.ts +52 -27
- package/src/index.ts +1 -1
- package/src/test/mock_l2_block_source.ts +7 -6
|
@@ -252,4 +252,4 @@ export interface ArchiverDataStore {
|
|
|
252
252
|
/** Sets the last synced validation status of the pending chain. */
|
|
253
253
|
setPendingChainValidationStatus(status: ValidateBlockResult | undefined): Promise<void>;
|
|
254
254
|
}
|
|
255
|
-
//# sourceMappingURL=
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXJfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9hcmNoaXZlcl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUNWLG1CQUFtQixFQUNuQixpQ0FBaUMsRUFDakMsMkJBQTJCLEVBQzNCLDRDQUE0QyxFQUM1QyxrQ0FBa0MsRUFDbkMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xHLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7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
|
|
@@ -5,4 +5,4 @@ import type { ArchiverDataStore } from './archiver_store.js';
|
|
|
5
5
|
* @param getStore - Returns an instance of a store that's already been initialized.
|
|
6
6
|
*/
|
|
7
7
|
export declare function describeArchiverDataStore(testName: string, getStore: () => ArchiverDataStore | Promise<ArchiverDataStore>): void;
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXJfc3RvcmVfdGVzdF9zdWl0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FyY2hpdmVyL2FyY2hpdmVyX3N0b3JlX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUNBLE9BQU8sNEJBQTRCLENBQUM7QUFJcEMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0scUJBQXFCLENBQUM7QUFLbkY7OztHQUdHO0FBQ0gsd0JBQWdCLHlCQUF5QixDQUN2QyxRQUFRLEVBQUUsTUFBTSxFQUNoQixRQUFRLEVBQUUsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUEyckMvRCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AAqCA,OAAO,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAKnF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,QA2rC/D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { INITIAL_L2_BLOCK_NUM, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
|
|
2
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
4
5
|
import { times, timesParallel } from '@aztec/foundation/collection';
|
|
5
6
|
import { randomInt } from '@aztec/foundation/crypto';
|
|
@@ -1207,7 +1208,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
1207
1208
|
EthAddress.random(),
|
|
1208
1209
|
EthAddress.random()
|
|
1209
1210
|
],
|
|
1210
|
-
epoch:
|
|
1211
|
+
epoch: EpochNumber(123),
|
|
1211
1212
|
seed: 456n,
|
|
1212
1213
|
attestors: [
|
|
1213
1214
|
EthAddress.random()
|
|
@@ -1231,7 +1232,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
1231
1232
|
attestors: [
|
|
1232
1233
|
EthAddress.random()
|
|
1233
1234
|
],
|
|
1234
|
-
epoch:
|
|
1235
|
+
epoch: EpochNumber(789),
|
|
1235
1236
|
seed: 101n,
|
|
1236
1237
|
attestations: [
|
|
1237
1238
|
CommitteeAttestation.random()
|
|
@@ -1253,7 +1254,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
1253
1254
|
committee: [
|
|
1254
1255
|
EthAddress.random()
|
|
1255
1256
|
],
|
|
1256
|
-
epoch:
|
|
1257
|
+
epoch: EpochNumber(999),
|
|
1257
1258
|
seed: 888n,
|
|
1258
1259
|
attestors: [
|
|
1259
1260
|
EthAddress.random()
|
|
@@ -1273,7 +1274,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
1273
1274
|
valid: false,
|
|
1274
1275
|
block: randomBlockInfo(4),
|
|
1275
1276
|
committee: [],
|
|
1276
|
-
epoch:
|
|
1277
|
+
epoch: EpochNumber(0),
|
|
1277
1278
|
seed: 0n,
|
|
1278
1279
|
attestors: [],
|
|
1279
1280
|
attestations: [],
|
|
@@ -18,4 +18,4 @@ export declare const archiverConfigMappings: ConfigMappingsType<ArchiverConfig>;
|
|
|
18
18
|
* @returns The archiver configuration.
|
|
19
19
|
*/
|
|
20
20
|
export declare function getArchiverConfigFromEnv(): ArchiverConfig;
|
|
21
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBeUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQ0wsS0FBSyxpQkFBaUIsRUFDdEIsS0FBSyxjQUFjLEVBSXBCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBSXhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsR0FBRyxjQUFjLEdBQUcsaUJBQWlCLEdBQUcsY0FBYyxHQUFHLFdBQVcsQ0FBQztBQUV4SCxlQUFPLE1BQU0sc0JBQXNCLEVBQUUsa0JBQWtCLENBQUMsY0FBYyxDQTJDckUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCx3QkFBZ0Isd0JBQXdCLElBQUksY0FBYyxDQUV6RCJ9
|
|
@@ -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,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAIpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG,cAAc,GAAG,iBAAiB,GAAG,cAAc,GAAG,WAAW,CAAC;AAExH,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,
|
|
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,iBAAiB,EACtB,KAAK,cAAc,EAIpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG,cAAc,GAAG,iBAAiB,GAAG,cAAc,GAAG,WAAW,CAAC;AAExH,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CA2CrE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD"}
|
package/dest/archiver/config.js
CHANGED
|
@@ -28,6 +28,11 @@ export const archiverConfigMappings = {
|
|
|
28
28
|
description: 'Whether to skip validating block attestations (use only for testing).',
|
|
29
29
|
...booleanConfigHelper(false)
|
|
30
30
|
},
|
|
31
|
+
maxAllowedEthClientDriftSeconds: {
|
|
32
|
+
env: 'MAX_ALLOWED_ETH_CLIENT_DRIFT_SECONDS',
|
|
33
|
+
description: 'Maximum allowed drift in seconds between the Ethereum client and current time.',
|
|
34
|
+
...numberConfigHelper(300)
|
|
35
|
+
},
|
|
31
36
|
...chainConfigMappings,
|
|
32
37
|
...l1ReaderConfigMappings,
|
|
33
38
|
viemPollingIntervalMS: {
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
+
import { type CheckpointBlobData } from '@aztec/blob-lib';
|
|
1
2
|
import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
2
3
|
import type { ViemClient, ViemPublicClient } from '@aztec/ethereum';
|
|
3
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
6
|
import { type Logger } from '@aztec/foundation/log';
|
|
6
7
|
import { type InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
7
|
-
import { CommitteeAttestation
|
|
8
|
+
import { CommitteeAttestation } from '@aztec/stdlib/block';
|
|
9
|
+
import { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
8
10
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
9
11
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
10
|
-
import { StateReference } from '@aztec/stdlib/tx';
|
|
11
12
|
import { type GetContractReturnType, type Hex } from 'viem';
|
|
12
13
|
import type { DataRetrieval } from './structs/data_retrieval.js';
|
|
13
14
|
import type { InboxMessage } from './structs/inbox_message.js';
|
|
14
15
|
import type { L1PublishedData } from './structs/published.js';
|
|
15
|
-
export type
|
|
16
|
-
|
|
16
|
+
export type RetrievedCheckpoint = {
|
|
17
|
+
checkpointNumber: number;
|
|
17
18
|
archiveRoot: Fr;
|
|
18
|
-
stateReference: StateReference;
|
|
19
19
|
header: CheckpointHeader;
|
|
20
|
-
|
|
20
|
+
checkpointBlobData: CheckpointBlobData;
|
|
21
21
|
l1: L1PublishedData;
|
|
22
22
|
chainId: Fr;
|
|
23
23
|
version: Fr;
|
|
24
24
|
attestations: CommitteeAttestation[];
|
|
25
25
|
};
|
|
26
|
-
export declare function
|
|
26
|
+
export declare function retrievedToPublishedCheckpoint({ checkpointNumber, archiveRoot, header: checkpointHeader, checkpointBlobData, l1, chainId, version, attestations }: RetrievedCheckpoint): Promise<PublishedCheckpoint>;
|
|
27
27
|
/**
|
|
28
|
-
* Fetches new
|
|
28
|
+
* Fetches new checkpoints.
|
|
29
29
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
30
30
|
* @param rollupAddress - The address of the rollup contract.
|
|
31
31
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
@@ -33,7 +33,7 @@ export declare function retrievedBlockToPublishedL2Block(retrievedBlock: Retriev
|
|
|
33
33
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
34
34
|
* @returns An array of block; as well as the next eth block to search from.
|
|
35
35
|
*/
|
|
36
|
-
export declare function
|
|
36
|
+
export declare function retrieveCheckpointsFromRollup(rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>, publicClient: ViemPublicClient, blobSinkClient: BlobSinkClientInterface, searchStartBlock: bigint, searchEndBlock: bigint, logger?: Logger): Promise<RetrievedCheckpoint[]>;
|
|
37
37
|
export declare function getL1BlockTime(publicClient: ViemPublicClient, blockNumber: bigint): Promise<bigint>;
|
|
38
38
|
/** Given an L1 to L2 message, retrieves its corresponding event from the Inbox within a specific block range. */
|
|
39
39
|
export declare function retrieveL1ToL2Message(inbox: GetContractReturnType<typeof InboxAbi, ViemClient>, leaf: Fr, fromBlock: bigint, toBlock: bigint): Promise<InboxMessage | undefined>;
|
|
@@ -50,7 +50,7 @@ export declare function retrieveL1ToL2Messages(inbox: GetContractReturnType<type
|
|
|
50
50
|
/** Retrieves L2ProofVerified events from the rollup contract. */
|
|
51
51
|
export declare function retrieveL2ProofVerifiedEvents(publicClient: ViemPublicClient, rollupAddress: EthAddress, searchStartBlock: bigint, searchEndBlock?: bigint): Promise<{
|
|
52
52
|
l1BlockNumber: bigint;
|
|
53
|
-
|
|
53
|
+
checkpointNumber: number;
|
|
54
54
|
proverId: Fr;
|
|
55
55
|
txHash: Hex;
|
|
56
56
|
}[]>;
|
|
@@ -58,22 +58,22 @@ export declare function retrieveL2ProofVerifiedEvents(publicClient: ViemPublicCl
|
|
|
58
58
|
export declare function retrieveL2ProofsFromRollup(publicClient: ViemPublicClient, rollupAddress: EthAddress, searchStartBlock: bigint, searchEndBlock?: bigint): Promise<DataRetrieval<{
|
|
59
59
|
proof: Proof;
|
|
60
60
|
proverId: Fr;
|
|
61
|
-
|
|
61
|
+
checkpointNumber: number;
|
|
62
62
|
txHash: `0x${string}`;
|
|
63
63
|
}>>;
|
|
64
|
-
export type
|
|
64
|
+
export type SubmitEpochProof = {
|
|
65
65
|
archiveRoot: Fr;
|
|
66
66
|
proverId: Fr;
|
|
67
67
|
proof: Proof;
|
|
68
68
|
};
|
|
69
69
|
/**
|
|
70
|
-
* Gets
|
|
70
|
+
* Gets epoch proof metadata (archive root and proof) from the calldata of an L1 transaction.
|
|
71
71
|
* Assumes that the block was published from an EOA.
|
|
72
72
|
* TODO: Add retries and error management.
|
|
73
73
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
74
74
|
* @param txHash - Hash of the tx that published it.
|
|
75
|
-
* @param
|
|
76
|
-
* @returns
|
|
75
|
+
* @param expectedProverId - Expected prover ID.
|
|
76
|
+
* @returns Epoch proof metadata from the calldata, deserialized.
|
|
77
77
|
*/
|
|
78
|
-
export declare function getProofFromSubmitProofTx(publicClient: ViemPublicClient, txHash: `0x${string}`, expectedProverId: Fr): Promise<
|
|
79
|
-
//# sourceMappingURL=
|
|
78
|
+
export declare function getProofFromSubmitProofTx(publicClient: ViemPublicClient, txHash: `0x${string}`, expectedProverId: Fr): Promise<SubmitEpochProof>;
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9kYXRhX3JldHJpZXZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUVWLFVBQVUsRUFHVixnQkFBZ0IsRUFDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQVEsb0JBQW9CLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQWMsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUtULE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsTUFBTSxNQUFNLG1CQUFtQixH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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +1,103 @@
|
|
|
1
|
-
import { BlobDeserializationError, SpongeBlob,
|
|
1
|
+
import { BlobDeserializationError, SpongeBlob, decodeCheckpointBlobDataFromBlobs, encodeBlockBlobData } from '@aztec/blob-lib';
|
|
2
2
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
3
3
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
7
|
-
import { Body, CommitteeAttestation,
|
|
7
|
+
import { Body, CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
|
|
8
|
+
import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
8
9
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
9
10
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
10
11
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
11
|
-
import { GlobalVariables, StateReference } from '@aztec/stdlib/tx';
|
|
12
|
+
import { BlockHeader, GlobalVariables, PartialStateReference, StateReference } from '@aztec/stdlib/tx';
|
|
12
13
|
import { decodeFunctionData, getAbiItem, hexToBytes, multicall3Abi } from 'viem';
|
|
13
14
|
import { NoBlobBodiesFoundError } from './errors.js';
|
|
14
|
-
export async function
|
|
15
|
-
const {
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
state
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
15
|
+
export async function retrievedToPublishedCheckpoint({ checkpointNumber, archiveRoot, header: checkpointHeader, checkpointBlobData, l1, chainId, version, attestations }) {
|
|
16
|
+
const { blocks: blocksBlobData } = checkpointBlobData;
|
|
17
|
+
// The lastArchiveRoot of a block is the new archive for the previous block.
|
|
18
|
+
const newArchiveRoots = blocksBlobData.map((b)=>b.lastArchiveRoot).slice(1).concat([
|
|
19
|
+
archiveRoot
|
|
20
|
+
]);
|
|
21
|
+
// `blocksBlobData` is created from `decodeCheckpointBlobDataFromBlobs`. An error will be thrown if it can't read a
|
|
22
|
+
// field for the `l1ToL2MessageRoot` of the first block. So below we can safely assume it exists:
|
|
23
|
+
const l1toL2MessageTreeRoot = blocksBlobData[0].l1ToL2MessageRoot;
|
|
24
|
+
const spongeBlob = SpongeBlob.init();
|
|
25
|
+
const l2Blocks = [];
|
|
26
|
+
for(let i = 0; i < blocksBlobData.length; i++){
|
|
27
|
+
const blockBlobData = blocksBlobData[i];
|
|
28
|
+
const { blockEndMarker, blockEndStateField, lastArchiveRoot, noteHashRoot, nullifierRoot, publicDataRoot } = blockBlobData;
|
|
29
|
+
const l2BlockNumber = blockEndMarker.blockNumber;
|
|
30
|
+
const globalVariables = GlobalVariables.from({
|
|
31
|
+
chainId,
|
|
32
|
+
version,
|
|
33
|
+
blockNumber: l2BlockNumber,
|
|
34
|
+
slotNumber: checkpointHeader.slotNumber,
|
|
35
|
+
timestamp: blockEndMarker.timestamp,
|
|
36
|
+
coinbase: checkpointHeader.coinbase,
|
|
37
|
+
feeRecipient: checkpointHeader.feeRecipient,
|
|
38
|
+
gasFees: checkpointHeader.gasFees
|
|
39
|
+
});
|
|
40
|
+
const state = StateReference.from({
|
|
41
|
+
l1ToL2MessageTree: new AppendOnlyTreeSnapshot(l1toL2MessageTreeRoot, blockEndStateField.l1ToL2MessageNextAvailableLeafIndex),
|
|
42
|
+
partial: PartialStateReference.from({
|
|
43
|
+
noteHashTree: new AppendOnlyTreeSnapshot(noteHashRoot, blockEndStateField.noteHashNextAvailableLeafIndex),
|
|
44
|
+
nullifierTree: new AppendOnlyTreeSnapshot(nullifierRoot, blockEndStateField.nullifierNextAvailableLeafIndex),
|
|
45
|
+
publicDataTree: new AppendOnlyTreeSnapshot(publicDataRoot, blockEndStateField.publicDataNextAvailableLeafIndex)
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
const body = Body.fromTxBlobData(checkpointBlobData.blocks[0].txs);
|
|
49
|
+
const blobFields = encodeBlockBlobData(blockBlobData);
|
|
50
|
+
await spongeBlob.absorb(blobFields);
|
|
51
|
+
const clonedSpongeBlob = spongeBlob.clone();
|
|
52
|
+
const spongeBlobHash = await clonedSpongeBlob.squeeze();
|
|
53
|
+
const header = BlockHeader.from({
|
|
54
|
+
lastArchive: new AppendOnlyTreeSnapshot(lastArchiveRoot, l2BlockNumber),
|
|
55
|
+
state,
|
|
56
|
+
spongeBlobHash,
|
|
57
|
+
globalVariables,
|
|
58
|
+
totalFees: body.txEffects.reduce((accum, txEffect)=>accum.add(txEffect.transactionFee), Fr.ZERO),
|
|
59
|
+
totalManaUsed: new Fr(blockEndStateField.totalManaUsed)
|
|
60
|
+
});
|
|
61
|
+
const newArchive = new AppendOnlyTreeSnapshot(newArchiveRoots[i], l2BlockNumber + 1);
|
|
62
|
+
l2Blocks.push(new L2BlockNew(newArchive, header, body));
|
|
63
|
+
}
|
|
64
|
+
const lastBlock = l2Blocks.at(-1);
|
|
65
|
+
const checkpoint = Checkpoint.from({
|
|
66
|
+
archive: new AppendOnlyTreeSnapshot(archiveRoot, lastBlock.number + 1),
|
|
67
|
+
header: checkpointHeader,
|
|
68
|
+
blocks: l2Blocks,
|
|
69
|
+
number: checkpointNumber
|
|
44
70
|
});
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
block,
|
|
71
|
+
return PublishedCheckpoint.from({
|
|
72
|
+
checkpoint,
|
|
48
73
|
l1,
|
|
49
74
|
attestations
|
|
50
75
|
});
|
|
51
76
|
}
|
|
52
77
|
/**
|
|
53
|
-
* Fetches new
|
|
78
|
+
* Fetches new checkpoints.
|
|
54
79
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
55
80
|
* @param rollupAddress - The address of the rollup contract.
|
|
56
81
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
57
82
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
58
83
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
59
84
|
* @returns An array of block; as well as the next eth block to search from.
|
|
60
|
-
*/ export async function
|
|
61
|
-
const
|
|
85
|
+
*/ export async function retrieveCheckpointsFromRollup(rollup, publicClient, blobSinkClient, searchStartBlock, searchEndBlock, logger = createLogger('archiver')) {
|
|
86
|
+
const retrievedCheckpoints = [];
|
|
62
87
|
let rollupConstants;
|
|
63
88
|
do {
|
|
64
89
|
if (searchStartBlock > searchEndBlock) {
|
|
65
90
|
break;
|
|
66
91
|
}
|
|
67
|
-
const
|
|
92
|
+
const checkpointProposedLogs = (await rollup.getEvents.CheckpointProposed({}, {
|
|
68
93
|
fromBlock: searchStartBlock,
|
|
69
94
|
toBlock: searchEndBlock
|
|
70
95
|
})).filter((log)=>log.blockNumber >= searchStartBlock && log.blockNumber <= searchEndBlock);
|
|
71
|
-
if (
|
|
96
|
+
if (checkpointProposedLogs.length === 0) {
|
|
72
97
|
break;
|
|
73
98
|
}
|
|
74
|
-
const lastLog =
|
|
75
|
-
logger.debug(`Got ${
|
|
99
|
+
const lastLog = checkpointProposedLogs.at(-1);
|
|
100
|
+
logger.debug(`Got ${checkpointProposedLogs.length} processed logs for checkpoints ${checkpointProposedLogs[0].args.checkpointNumber}-${lastLog.args.checkpointNumber} between L1 blocks ${searchStartBlock}-${searchEndBlock}`);
|
|
76
101
|
if (rollupConstants === undefined) {
|
|
77
102
|
const [chainId, version, targetCommitteeSize] = await Promise.all([
|
|
78
103
|
publicClient.getChainId(),
|
|
@@ -85,56 +110,56 @@ export async function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
85
110
|
targetCommitteeSize: Number(targetCommitteeSize)
|
|
86
111
|
};
|
|
87
112
|
}
|
|
88
|
-
const
|
|
89
|
-
|
|
113
|
+
const newCheckpoints = await processCheckpointProposedLogs(rollup, publicClient, blobSinkClient, checkpointProposedLogs, rollupConstants, logger);
|
|
114
|
+
retrievedCheckpoints.push(...newCheckpoints);
|
|
90
115
|
searchStartBlock = lastLog.blockNumber + 1n;
|
|
91
116
|
}while (searchStartBlock <= searchEndBlock)
|
|
92
|
-
// The
|
|
93
|
-
return
|
|
117
|
+
// The asyncPool from processCheckpointProposedLogs will not necessarily return the checkpoints in order, so we sort them before returning.
|
|
118
|
+
return retrievedCheckpoints.sort((a, b)=>Number(a.l1.blockNumber - b.l1.blockNumber));
|
|
94
119
|
}
|
|
95
120
|
/**
|
|
96
|
-
* Processes newly received
|
|
121
|
+
* Processes newly received CheckpointProposed logs.
|
|
97
122
|
* @param rollup - The rollup contract
|
|
98
123
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
99
|
-
* @param logs -
|
|
100
|
-
* @returns - An array
|
|
101
|
-
*/ async function
|
|
102
|
-
const
|
|
124
|
+
* @param logs - CheckpointProposed logs.
|
|
125
|
+
* @returns - An array of checkpoints.
|
|
126
|
+
*/ async function processCheckpointProposedLogs(rollup, publicClient, blobSinkClient, logs, { chainId, version, targetCommitteeSize }, logger) {
|
|
127
|
+
const retrievedCheckpoints = [];
|
|
103
128
|
await asyncPool(10, logs, async (log)=>{
|
|
104
|
-
const
|
|
129
|
+
const checkpointNumber = Number(log.args.checkpointNumber);
|
|
105
130
|
const archive = log.args.archive;
|
|
106
131
|
const archiveFromChain = await rollup.read.archiveAt([
|
|
107
|
-
BigInt(
|
|
132
|
+
BigInt(checkpointNumber)
|
|
108
133
|
]);
|
|
109
134
|
const blobHashes = log.args.versionedBlobHashes.map((blobHash)=>Buffer.from(blobHash.slice(2), 'hex'));
|
|
110
|
-
// The value from the event and contract will match only if the
|
|
135
|
+
// The value from the event and contract will match only if the checkpoint is in the chain.
|
|
111
136
|
if (archive === archiveFromChain) {
|
|
112
|
-
const
|
|
137
|
+
const checkpoint = await getCheckpointFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, checkpointNumber, rollup.address, targetCommitteeSize, logger);
|
|
113
138
|
const l1 = {
|
|
114
139
|
blockNumber: log.blockNumber,
|
|
115
140
|
blockHash: log.blockHash,
|
|
116
141
|
timestamp: await getL1BlockTime(publicClient, log.blockNumber)
|
|
117
142
|
};
|
|
118
|
-
|
|
119
|
-
...
|
|
143
|
+
retrievedCheckpoints.push({
|
|
144
|
+
...checkpoint,
|
|
120
145
|
l1,
|
|
121
146
|
chainId,
|
|
122
147
|
version
|
|
123
148
|
});
|
|
124
|
-
logger.trace(`Retrieved
|
|
149
|
+
logger.trace(`Retrieved checkpoint ${checkpointNumber} from L1 tx ${log.transactionHash}`, {
|
|
125
150
|
l1BlockNumber: log.blockNumber,
|
|
126
|
-
|
|
151
|
+
checkpointNumber,
|
|
127
152
|
archive: archive.toString(),
|
|
128
|
-
attestations:
|
|
153
|
+
attestations: checkpoint.attestations
|
|
129
154
|
});
|
|
130
155
|
} else {
|
|
131
|
-
logger.warn(`Ignoring
|
|
156
|
+
logger.warn(`Ignoring checkpoint ${checkpointNumber} due to archive root mismatch`, {
|
|
132
157
|
actual: archive,
|
|
133
158
|
expected: archiveFromChain
|
|
134
159
|
});
|
|
135
160
|
}
|
|
136
161
|
});
|
|
137
|
-
return
|
|
162
|
+
return retrievedCheckpoints;
|
|
138
163
|
}
|
|
139
164
|
export async function getL1BlockTime(publicClient, blockNumber) {
|
|
140
165
|
const block = await publicClient.getBlock({
|
|
@@ -183,14 +208,15 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
183
208
|
throw new Error(`Rollup address not found in multicall3 args`);
|
|
184
209
|
}
|
|
185
210
|
/**
|
|
186
|
-
* Gets
|
|
187
|
-
* Assumes that the
|
|
211
|
+
* Gets checkpoint from the calldata of an L1 transaction.
|
|
212
|
+
* Assumes that the checkpoint was published from an EOA.
|
|
188
213
|
* TODO: Add retries and error management.
|
|
189
214
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
190
215
|
* @param txHash - Hash of the tx that published it.
|
|
191
|
-
* @param
|
|
192
|
-
* @returns
|
|
193
|
-
*/ async function
|
|
216
|
+
* @param checkpointNumber - Checkpoint number.
|
|
217
|
+
* @returns Checkpoint from the calldata, deserialized
|
|
218
|
+
*/ async function getCheckpointFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, checkpointNumber, rollupAddress, targetCommitteeSize, logger) {
|
|
219
|
+
logger.trace(`Fetching checkpoint ${checkpointNumber} from rollup tx ${txHash}`);
|
|
194
220
|
const { input: forwarderData, blockHash } = await publicClient.getTransaction({
|
|
195
221
|
hash: txHash
|
|
196
222
|
});
|
|
@@ -205,10 +231,10 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
205
231
|
const [decodedArgs, packedAttestations, _signers, _blobInput] = rollupArgs;
|
|
206
232
|
const attestations = CommitteeAttestation.fromPacked(packedAttestations, targetCommitteeSize);
|
|
207
233
|
logger.trace(`Recovered propose calldata from tx ${txHash}`, {
|
|
208
|
-
|
|
234
|
+
checkpointNumber,
|
|
209
235
|
archive: decodedArgs.archive,
|
|
210
|
-
stateReference: decodedArgs.stateReference,
|
|
211
236
|
header: decodedArgs.header,
|
|
237
|
+
l1BlockHash: blockHash,
|
|
212
238
|
blobHashes,
|
|
213
239
|
attestations,
|
|
214
240
|
packedAttestations,
|
|
@@ -217,12 +243,12 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
217
243
|
const header = CheckpointHeader.fromViem(decodedArgs.header);
|
|
218
244
|
const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes);
|
|
219
245
|
if (blobBodies.length === 0) {
|
|
220
|
-
throw new NoBlobBodiesFoundError(
|
|
246
|
+
throw new NoBlobBodiesFoundError(checkpointNumber);
|
|
221
247
|
}
|
|
222
|
-
let
|
|
248
|
+
let checkpointBlobData;
|
|
223
249
|
try {
|
|
224
|
-
//
|
|
225
|
-
|
|
250
|
+
// Attempt to decode the checkpoint blob data.
|
|
251
|
+
checkpointBlobData = decodeCheckpointBlobDataFromBlobs(blobBodies.map((b)=>b.blob));
|
|
226
252
|
} catch (err) {
|
|
227
253
|
if (err instanceof BlobDeserializationError) {
|
|
228
254
|
logger.fatal(err.message);
|
|
@@ -232,13 +258,11 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
232
258
|
throw err;
|
|
233
259
|
}
|
|
234
260
|
const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive)));
|
|
235
|
-
const stateReference = StateReference.fromViem(decodedArgs.stateReference);
|
|
236
261
|
return {
|
|
237
|
-
|
|
262
|
+
checkpointNumber,
|
|
238
263
|
archiveRoot,
|
|
239
|
-
stateReference,
|
|
240
264
|
header,
|
|
241
|
-
|
|
265
|
+
checkpointBlobData,
|
|
242
266
|
attestations
|
|
243
267
|
};
|
|
244
268
|
}
|
|
@@ -277,13 +301,13 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
277
301
|
}
|
|
278
302
|
function mapLogsInboxMessage(logs) {
|
|
279
303
|
return logs.map((log)=>{
|
|
280
|
-
const { index, hash,
|
|
304
|
+
const { index, hash, checkpointNumber, rollingHash } = log.args;
|
|
281
305
|
return {
|
|
282
306
|
index: index,
|
|
283
307
|
leaf: Fr.fromHexString(hash),
|
|
284
308
|
l1BlockNumber: log.blockNumber,
|
|
285
309
|
l1BlockHash: Buffer32.fromString(log.blockHash),
|
|
286
|
-
l2BlockNumber: Number(
|
|
310
|
+
l2BlockNumber: Number(checkpointNumber),
|
|
287
311
|
rollingHash: Buffer16.fromString(rollingHash)
|
|
288
312
|
};
|
|
289
313
|
});
|
|
@@ -301,7 +325,7 @@ function mapLogsInboxMessage(logs) {
|
|
|
301
325
|
});
|
|
302
326
|
return logs.map((log)=>({
|
|
303
327
|
l1BlockNumber: log.blockNumber,
|
|
304
|
-
|
|
328
|
+
checkpointNumber: Number(log.args.checkpointNumber),
|
|
305
329
|
proverId: Fr.fromHexString(log.args.proverId),
|
|
306
330
|
txHash: log.transactionHash
|
|
307
331
|
}));
|
|
@@ -310,12 +334,12 @@ function mapLogsInboxMessage(logs) {
|
|
|
310
334
|
const logs = await retrieveL2ProofVerifiedEvents(publicClient, rollupAddress, searchStartBlock, searchEndBlock);
|
|
311
335
|
const retrievedData = [];
|
|
312
336
|
const lastProcessedL1BlockNumber = logs.length > 0 ? logs.at(-1).l1BlockNumber : searchStartBlock - 1n;
|
|
313
|
-
for (const { txHash, proverId,
|
|
337
|
+
for (const { txHash, proverId, checkpointNumber } of logs){
|
|
314
338
|
const proofData = await getProofFromSubmitProofTx(publicClient, txHash, proverId);
|
|
315
339
|
retrievedData.push({
|
|
316
340
|
proof: proofData.proof,
|
|
317
341
|
proverId: proofData.proverId,
|
|
318
|
-
|
|
342
|
+
checkpointNumber,
|
|
319
343
|
txHash
|
|
320
344
|
});
|
|
321
345
|
}
|
|
@@ -325,13 +349,13 @@ function mapLogsInboxMessage(logs) {
|
|
|
325
349
|
};
|
|
326
350
|
}
|
|
327
351
|
/**
|
|
328
|
-
* Gets
|
|
352
|
+
* Gets epoch proof metadata (archive root and proof) from the calldata of an L1 transaction.
|
|
329
353
|
* Assumes that the block was published from an EOA.
|
|
330
354
|
* TODO: Add retries and error management.
|
|
331
355
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
332
356
|
* @param txHash - Hash of the tx that published it.
|
|
333
|
-
* @param
|
|
334
|
-
* @returns
|
|
357
|
+
* @param expectedProverId - Expected prover ID.
|
|
358
|
+
* @returns Epoch proof metadata from the calldata, deserialized.
|
|
335
359
|
*/ export async function getProofFromSubmitProofTx(publicClient, txHash, expectedProverId) {
|
|
336
360
|
const { input: data } = await publicClient.getTransaction({
|
|
337
361
|
hash: txHash
|
|
@@ -9,4 +9,4 @@ export declare class InitialBlockNumberNotSequentialError extends Error {
|
|
|
9
9
|
export declare class BlockNumberNotSequentialError extends Error {
|
|
10
10
|
constructor(newBlockNumber: number, previous: number | undefined);
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFhLHNCQUF1QixTQUFRLEtBQUs7SUFDL0MsWUFBWSxVQUFVLEVBQUUsTUFBTSxFQUU3QjtDQUNGO0FBRUQscUJBQWEsb0NBQXFDLFNBQVEsS0FBSzthQUUzQyxjQUFjLEVBQUUsTUFBTTthQUN0QixtQkFBbUIsRUFBRSxNQUFNLEdBQUcsU0FBUztJQUZ6RCxZQUNrQixjQUFjLEVBQUUsTUFBTSxFQUN0QixtQkFBbUIsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQU94RDtDQUNGO0FBRUQscUJBQWEsNkJBQThCLFNBQVEsS0FBSztJQUN0RCxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBSS9EO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/archiver/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/archiver/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,UAAU,EAAE,MAAM,EAE7B;CACF;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAE3C,cAAc,EAAE,MAAM;aACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;IAFzD,YACkB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAOxD;CACF;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,YAAY,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAI/D;CACF"}
|
package/dest/archiver/index.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export { type PublishedL2Block, type L1PublishedData } from './structs/published
|
|
|
4
4
|
export type { ArchiverDataStore } from './archiver_store.js';
|
|
5
5
|
export { KVArchiverDataStore, ARCHIVER_DB_VERSION } from './kv_archiver_store/kv_archiver_store.js';
|
|
6
6
|
export { ContractInstanceStore } from './kv_archiver_store/contract_instance_store.js';
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSxLQUFLLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDIn0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { L2BlockNew } from '@aztec/stdlib/block';
|
|
2
2
|
import { type LmdbStatsCallback, type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
3
3
|
export declare class ArchiverInstrumentation {
|
|
4
4
|
private telemetry;
|
|
@@ -21,7 +21,7 @@ export declare class ArchiverInstrumentation {
|
|
|
21
21
|
private constructor();
|
|
22
22
|
static new(telemetry: TelemetryClient, lmdbStats?: LmdbStatsCallback): Promise<ArchiverInstrumentation>;
|
|
23
23
|
isEnabled(): boolean;
|
|
24
|
-
processNewBlocks(syncTimePerBlock: number, blocks:
|
|
24
|
+
processNewBlocks(syncTimePerBlock: number, blocks: L2BlockNew[]): void;
|
|
25
25
|
processNewMessages(count: number, syncPerMessageMs: number): void;
|
|
26
26
|
processPrune(duration: number): void;
|
|
27
27
|
updateLastProvenBlock(blockNumber: number): void;
|
|
@@ -32,4 +32,4 @@ export declare class ArchiverInstrumentation {
|
|
|
32
32
|
}[]): void;
|
|
33
33
|
updateL1BlockHeight(blockNumber: bigint): void;
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFLTCxLQUFLLGlCQUFpQixFQUV0QixLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBR1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxxQkFBYSx1QkFBdUI7SUF3QmhDLE9BQU8sQ0FBQyxTQUFTO0lBdkJuQixTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxXQUFXLENBQVE7SUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBZ0I7SUFDL0IsT0FBTyxDQUFDLGFBQWEsQ0FBUTtJQUM3QixPQUFPLENBQUMsb0JBQW9CLENBQVk7SUFDeEMsT0FBTyxDQUFDLG9CQUFvQixDQUFnQjtJQUM1QyxPQUFPLENBQUMsU0FBUyxDQUFjO0lBRS9CLE9BQU8sQ0FBQyxhQUFhLENBQVk7SUFDakMsT0FBTyxDQUFDLFVBQVUsQ0FBZ0I7SUFFbEMsT0FBTyxDQUFDLG9CQUFvQixDQUFZO0lBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQWdCO0lBQ3RDLE9BQU8sQ0FBQyxZQUFZLENBQVk7SUFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBWTtJQUUvQixPQUFPLENBQUMsc0JBQXNCLENBQVk7SUFDMUMsT0FBTyxDQUFDLGdCQUFnQixDQUFnQjtJQUV4QyxPQUFPLENBQUMsR0FBRyxDQUE0QztJQUV2RCxPQUFPLGVBcUZOO0lBRUQsT0FBb0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDLEVBQUUsaUJBQWlCLG9DQVVoRjtJQUVNLFNBQVMsSUFBSSxPQUFPLENBRTFCO0lBRU0sZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFVckU7SUFFTSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sUUFNaEU7SUFFTSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sUUFHbkM7SUFFTSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxRQUUvQztJQUVNLHFCQUFxQixDQUFDLElBQUksRUFBRTtRQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7UUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQUUsUUFXOUY7SUFFTSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxRQUU3QztDQUNGIn0=
|