@aztec/archiver 0.0.0-test.1 → 0.0.1-commit.1142ef1
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 +27 -6
- package/dest/archiver/archiver.d.ts +204 -94
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +1616 -414
- package/dest/archiver/archiver_store.d.ts +178 -83
- package/dest/archiver/archiver_store.d.ts.map +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 +2373 -397
- package/dest/archiver/config.d.ts +7 -22
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +30 -14
- package/dest/archiver/errors.d.ts +33 -1
- package/dest/archiver/errors.d.ts.map +1 -1
- package/dest/archiver/errors.js +49 -0
- package/dest/archiver/index.d.ts +3 -4
- package/dest/archiver/index.d.ts.map +1 -1
- package/dest/archiver/index.js +1 -2
- package/dest/archiver/instrumentation.d.ts +14 -6
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/instrumentation.js +45 -41
- package/dest/archiver/kv_archiver_store/block_store.d.ts +98 -21
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +495 -86
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +4 -4
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +13 -19
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +12 -9
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +30 -16
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +81 -75
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +145 -83
- package/dest/archiver/kv_archiver_store/log_store.d.ts +12 -16
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +151 -114
- package/dest/archiver/kv_archiver_store/message_store.d.ts +25 -18
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +152 -49
- package/dest/archiver/l1/bin/retrieve-calldata.d.ts +3 -0
- package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +1 -0
- package/dest/archiver/l1/bin/retrieve-calldata.js +149 -0
- package/dest/archiver/l1/calldata_retriever.d.ts +112 -0
- package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -0
- package/dest/archiver/l1/calldata_retriever.js +471 -0
- package/dest/archiver/l1/data_retrieval.d.ts +90 -0
- package/dest/archiver/l1/data_retrieval.d.ts.map +1 -0
- package/dest/archiver/l1/data_retrieval.js +331 -0
- package/dest/archiver/l1/debug_tx.d.ts +19 -0
- package/dest/archiver/l1/debug_tx.d.ts.map +1 -0
- package/dest/archiver/l1/debug_tx.js +73 -0
- package/dest/archiver/l1/spire_proposer.d.ts +70 -0
- package/dest/archiver/l1/spire_proposer.d.ts.map +1 -0
- package/dest/archiver/l1/spire_proposer.js +157 -0
- package/dest/archiver/l1/trace_tx.d.ts +97 -0
- package/dest/archiver/l1/trace_tx.d.ts.map +1 -0
- package/dest/archiver/l1/trace_tx.js +91 -0
- package/dest/archiver/l1/types.d.ts +12 -0
- package/dest/archiver/l1/types.d.ts.map +1 -0
- package/dest/archiver/l1/types.js +3 -0
- package/dest/archiver/l1/validate_trace.d.ts +29 -0
- package/dest/archiver/l1/validate_trace.d.ts.map +1 -0
- package/dest/archiver/l1/validate_trace.js +150 -0
- package/dest/archiver/structs/data_retrieval.d.ts +1 -1
- package/dest/archiver/structs/inbox_message.d.ts +15 -0
- package/dest/archiver/structs/inbox_message.d.ts.map +1 -0
- package/dest/archiver/structs/inbox_message.js +39 -0
- package/dest/archiver/structs/published.d.ts +2 -11
- package/dest/archiver/structs/published.d.ts.map +1 -1
- package/dest/archiver/structs/published.js +1 -1
- package/dest/archiver/validation.d.ts +17 -0
- package/dest/archiver/validation.d.ts.map +1 -0
- package/dest/archiver/validation.js +98 -0
- package/dest/factory.d.ts +9 -14
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +22 -52
- 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 -3
- package/dest/rpc/index.d.ts.map +1 -1
- package/dest/rpc/index.js +1 -4
- package/dest/test/index.d.ts +1 -1
- package/dest/test/mock_archiver.d.ts +16 -8
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +19 -14
- package/dest/test/mock_l1_to_l2_message_source.d.ts +9 -6
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.js +30 -7
- package/dest/test/mock_l2_block_source.d.ts +56 -13
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +196 -25
- package/dest/test/mock_structs.d.ts +10 -0
- package/dest/test/mock_structs.d.ts.map +1 -0
- package/dest/test/mock_structs.js +38 -0
- package/package.json +29 -30
- package/src/archiver/archiver.ts +1596 -512
- package/src/archiver/archiver_store.ts +205 -88
- package/src/archiver/archiver_store_test_suite.ts +2386 -354
- package/src/archiver/config.ts +38 -46
- package/src/archiver/errors.ts +85 -0
- package/src/archiver/index.ts +2 -3
- package/src/archiver/instrumentation.ts +65 -45
- package/src/archiver/kv_archiver_store/block_store.ts +668 -101
- package/src/archiver/kv_archiver_store/contract_class_store.ts +14 -24
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +36 -28
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +197 -113
- package/src/archiver/kv_archiver_store/log_store.ts +204 -132
- package/src/archiver/kv_archiver_store/message_store.ts +213 -54
- package/src/archiver/l1/README.md +98 -0
- package/src/archiver/l1/bin/retrieve-calldata.ts +182 -0
- package/src/archiver/l1/calldata_retriever.ts +641 -0
- package/src/archiver/l1/data_retrieval.ts +512 -0
- package/src/archiver/l1/debug_tx.ts +99 -0
- package/src/archiver/l1/spire_proposer.ts +160 -0
- package/src/archiver/l1/trace_tx.ts +128 -0
- package/src/archiver/l1/types.ts +13 -0
- package/src/archiver/l1/validate_trace.ts +211 -0
- package/src/archiver/structs/inbox_message.ts +41 -0
- package/src/archiver/structs/published.ts +1 -11
- package/src/archiver/validation.ts +124 -0
- package/src/factory.ts +28 -69
- package/src/index.ts +1 -1
- package/src/rpc/index.ts +1 -5
- package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
- package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
- package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
- package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
- package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
- package/src/test/fixtures/trace_transaction-proxied.json +128 -0
- package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
- package/src/test/mock_archiver.ts +22 -16
- package/src/test/mock_l1_to_l2_message_source.ts +26 -8
- package/src/test/mock_l2_block_source.ts +254 -31
- package/src/test/mock_structs.ts +50 -0
- package/dest/archiver/data_retrieval.d.ts +0 -74
- package/dest/archiver/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/data_retrieval.js +0 -283
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +0 -12
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/nullifier_store.js +0 -73
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +0 -23
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +0 -1
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +0 -49
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +0 -175
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +0 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +0 -636
- package/src/archiver/data_retrieval.ts +0 -422
- package/src/archiver/kv_archiver_store/nullifier_store.ts +0 -97
- package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +0 -61
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +0 -801
package/README.md
CHANGED
|
@@ -1,16 +1,37 @@
|
|
|
1
1
|
# Archiver
|
|
2
2
|
|
|
3
|
-
Archiver is a service which is used to fetch data
|
|
4
|
-
|
|
3
|
+
Archiver is a service which is used to fetch data onchain data and present them in a nice-to-consume form.
|
|
4
|
+
|
|
5
|
+
The onchain data specifically are the following events:
|
|
5
6
|
|
|
6
7
|
1. `L2BlockProposed` event emitted on Rollup contract,
|
|
7
8
|
2. `MessageAdded` event emitted on Inbox contract,
|
|
8
9
|
|
|
9
10
|
The interfaces defining how the data can be consumed from the archiver are `L2BlockSource`, `L2LogsSource` and `ContractDataSource`.
|
|
10
11
|
|
|
11
|
-
##
|
|
12
|
+
## Sync process
|
|
13
|
+
|
|
14
|
+
The archiver sync process periodically checks its current state against the Rollup contract on L1 and updates its local state.
|
|
15
|
+
|
|
16
|
+
### Handling invalid checkpoints
|
|
17
|
+
|
|
18
|
+
After the implementation of [delayed attestation verification](https://github.com/AztecProtocol/engineering-designs/pull/69), the Rollup contract on L1 no longer validates committee attestations. Instead, these are posted in calldata, and L2 nodes are expected to verify them as they download checkpoints. The archiver handles this validation during its sync process.
|
|
19
|
+
|
|
20
|
+
Whenever the archiver detects a checkpoint with invalid attestations, it skips it. These checkpoints are not meant to be part of the chain, so the archiver ignores them and continues processing the next checkpoints. It is expected that an honest proposer will eventually invalidate these checkpoints, removing them from the chain on L1, and then resume the sequence of valid checkpoints.
|
|
21
|
+
|
|
22
|
+
> [!WARNING]
|
|
23
|
+
> If the committee for the epoch is also malicious and attests to a descendant of an invalid checkpoint, nodes should also ignore these descendants, unless they become proven. This is currently not implemented. Nodes assume that the majority of the committee is honest.
|
|
24
|
+
|
|
25
|
+
When the current node is elected as proposer, the `sequencer` needs to know whether there is an invalid checkpoint in L1 that needs to be purged before posting their own checkpoint. To support this, the archiver exposes a `pendingChainValidationStatus`, which is the state of the tip of the pending chain. This status can be valid in the happy path, or invalid if the tip of the pending chain has invalid attestations. If invalid, this status also contains all the data needed for purging the checkpoint from L1 via an `invalidate` call to the Rollup contract. Note that, if the head of the chain has more than one invalid consecutive checkpoint, this status will reference the earliest one that needs to be purged, since a call to purge an invalid checkpoint will automatically purge all descendants. Refer to the [InvalidateLib.sol](`l1-contracts/src/core/libraries/rollup/InvalidateLib.sol`) for more info.
|
|
26
|
+
|
|
27
|
+
> [!TIP]
|
|
28
|
+
> The archiver can be configured to `skipValidateCheckpointAttestations`, which will make it skip this validation. This cannot be set via environment variables, only via a call to `nodeAdmin_setConfig`. This setting is only meant for testing purposes.
|
|
12
29
|
|
|
13
|
-
|
|
14
|
-
|
|
30
|
+
As an example, let's say the chain has been progressing normally up until checkpoint 10, and then:
|
|
31
|
+
1. Checkpoint 11 is posted with invalid attestations. The archiver will report 10 as the latest checkpoint, but the `pendingChainValidationStatus` will point to checkpoint 11.
|
|
32
|
+
2. Checkpoint 11 is purged, but another checkpoint 11 with invalid attestations is posted in its place. The archiver will still report 10 as latest, and the `pendingChainValidationStatus` will point to the new checkpoint 11 that needs to be purged.
|
|
33
|
+
3. Checkpoint 12 with invalid attestations is posted. No changes in the archiver.
|
|
34
|
+
4. Checkpoint 13 is posted with valid attestations, due to a malicious committee. The archiver will try to sync it and fail, since 13 does not follow 10. This scenario is not gracefully handled yet.
|
|
35
|
+
5. Checkpoints 11 to 13 are purged. The archiver status will not yet be changed: 10 will still be the latest checkpoint, and the `pendingChainValidationStatus` will point to 11. This is because the archiver does **not** follow `CheckpointInvalidated` events.
|
|
36
|
+
6. Checkpoint 11 with valid attestations is posted. The archiver pending chain now reports 11 as latest, and its status is valid.
|
|
15
37
|
|
|
16
|
-
To start the service export `ETHEREUM_HOSTS` (defaults to `http://127.0.0.1:8545/`), `ARCHIVER_POLLING_INTERVAL_MS` (defaults to `1000 ms`), `ROLLUP_CONTRACT_ADDRESS`, `INBOX_CONTRACT_ADDRESS` environmental variables and start the service with `yarn start`.
|
|
@@ -1,55 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
2
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
3
|
+
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
4
|
+
import type { L1BlockId } from '@aztec/ethereum/l1-types';
|
|
5
|
+
import type { ViemPublicClient, ViemPublicDebugClient } from '@aztec/ethereum/types';
|
|
6
|
+
import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
7
|
+
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
8
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
9
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
6
10
|
import { type Logger } from '@aztec/foundation/log';
|
|
11
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
12
|
+
import type { CustomRange } from '@aztec/kv-store';
|
|
7
13
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
8
14
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
-
import { type
|
|
10
|
-
import {
|
|
15
|
+
import { type ArchiverEmitter, CheckpointedL2Block, L2Block, L2BlockNew, type L2BlockSink, type L2BlockSource, type L2Tips, PublishedL2Block } from '@aztec/stdlib/block';
|
|
16
|
+
import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
17
|
+
import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
11
18
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
12
19
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
13
20
|
import type { L2LogsSource } from '@aztec/stdlib/interfaces/server';
|
|
14
|
-
import { type LogFilter, type
|
|
15
|
-
import type
|
|
16
|
-
import
|
|
21
|
+
import { type LogFilter, type SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
22
|
+
import { type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
23
|
+
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
24
|
+
import { type BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
25
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
17
26
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
18
|
-
import {
|
|
19
|
-
import type { ArchiverDataStore } from './archiver_store.js';
|
|
27
|
+
import type { ArchiverDataStore, ArchiverL1SynchPoint } from './archiver_store.js';
|
|
20
28
|
import type { ArchiverConfig } from './config.js';
|
|
21
29
|
import { ArchiverInstrumentation } from './instrumentation.js';
|
|
30
|
+
import type { CheckpointData } from './kv_archiver_store/block_store.js';
|
|
31
|
+
import type { InboxMessage } from './structs/inbox_message.js';
|
|
32
|
+
import { type ValidateCheckpointResult } from './validation.js';
|
|
22
33
|
/**
|
|
23
34
|
* Helper interface to combine all sources this archiver implementation provides.
|
|
24
35
|
*/
|
|
25
|
-
export type ArchiveSource = L2BlockSource & L2LogsSource & ContractDataSource & L1ToL2MessageSource
|
|
36
|
+
export type ArchiveSource = L2BlockSource & L2LogsSource & ContractDataSource & L1ToL2MessageSource;
|
|
37
|
+
export type ArchiverDeps = {
|
|
38
|
+
telemetry?: TelemetryClient;
|
|
39
|
+
blobClient: BlobClientInterface;
|
|
40
|
+
epochCache?: EpochCache;
|
|
41
|
+
dateProvider?: DateProvider;
|
|
42
|
+
};
|
|
43
|
+
declare const Archiver_base: new () => ArchiverEmitter;
|
|
26
44
|
/**
|
|
27
|
-
* Pulls
|
|
45
|
+
* Pulls checkpoints in a non-blocking manner and provides interface for their retrieval.
|
|
28
46
|
* Responsible for handling robust L1 polling so that other components do not need to
|
|
29
47
|
* concern themselves with it.
|
|
30
48
|
*/
|
|
31
|
-
export declare class Archiver extends
|
|
49
|
+
export declare class Archiver extends Archiver_base implements ArchiveSource, L2BlockSink, Traceable {
|
|
32
50
|
private readonly publicClient;
|
|
51
|
+
private readonly debugClient;
|
|
33
52
|
private readonly l1Addresses;
|
|
34
53
|
readonly dataStore: ArchiverDataStore;
|
|
35
|
-
private
|
|
36
|
-
private readonly
|
|
54
|
+
private config;
|
|
55
|
+
private readonly blobClient;
|
|
56
|
+
private readonly epochCache;
|
|
57
|
+
private readonly dateProvider;
|
|
37
58
|
private readonly instrumentation;
|
|
38
59
|
private readonly l1constants;
|
|
39
60
|
private readonly log;
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
*/
|
|
43
|
-
private runningPromise?;
|
|
61
|
+
/** A loop in which we will be continually fetching new checkpoints. */
|
|
62
|
+
private runningPromise;
|
|
44
63
|
private rollup;
|
|
45
64
|
private inbox;
|
|
46
65
|
private store;
|
|
47
|
-
l1BlockNumber
|
|
48
|
-
l1Timestamp
|
|
66
|
+
private l1BlockNumber;
|
|
67
|
+
private l1Timestamp;
|
|
68
|
+
private initialSyncComplete;
|
|
69
|
+
private initialSyncPromise;
|
|
70
|
+
/** Queue of blocks to be added to the store, processed by the sync loop. */
|
|
71
|
+
private blockQueue;
|
|
49
72
|
readonly tracer: Tracer;
|
|
50
73
|
/**
|
|
51
74
|
* Creates a new instance of the Archiver.
|
|
52
75
|
* @param publicClient - A client for interacting with the Ethereum node.
|
|
76
|
+
* @param debugClient - A client for interacting with the Ethereum node for debug/trace methods.
|
|
53
77
|
* @param rollupAddress - Ethereum address of the rollup contract.
|
|
54
78
|
* @param inboxAddress - Ethereum address of the inbox contract.
|
|
55
79
|
* @param registryAddress - Ethereum address of the registry contract.
|
|
@@ -57,14 +81,18 @@ export declare class Archiver extends EventEmitter implements ArchiveSource, Tra
|
|
|
57
81
|
* @param store - An archiver data store for storage & retrieval of blocks, encrypted logs & contract data.
|
|
58
82
|
* @param log - A logger.
|
|
59
83
|
*/
|
|
60
|
-
constructor(publicClient: ViemPublicClient, l1Addresses: {
|
|
61
|
-
|
|
62
|
-
inboxAddress: EthAddress;
|
|
63
|
-
registryAddress: EthAddress;
|
|
84
|
+
constructor(publicClient: ViemPublicClient, debugClient: ViemPublicDebugClient, l1Addresses: Pick<L1ContractAddresses, 'rollupAddress' | 'inboxAddress' | 'registryAddress' | 'governanceProposerAddress' | 'slashFactoryAddress'> & {
|
|
85
|
+
slashingProposerAddress: EthAddress;
|
|
64
86
|
}, dataStore: ArchiverDataStore, config: {
|
|
65
87
|
pollingIntervalMs: number;
|
|
66
88
|
batchSize: number;
|
|
67
|
-
|
|
89
|
+
skipValidateCheckpointAttestations?: boolean;
|
|
90
|
+
maxAllowedEthClientDriftSeconds: number;
|
|
91
|
+
ethereumAllowNoDebugHosts?: boolean;
|
|
92
|
+
}, blobClient: BlobClientInterface, epochCache: EpochCache, dateProvider: DateProvider, instrumentation: ArchiverInstrumentation, l1constants: L1RollupConstants & {
|
|
93
|
+
l1StartBlockHash: Buffer32;
|
|
94
|
+
genesisArchiveRoot: Fr;
|
|
95
|
+
}, log?: Logger);
|
|
68
96
|
/**
|
|
69
97
|
* Creates a new instance of the Archiver and blocks until it syncs from chain.
|
|
70
98
|
* @param config - The archiver's desired configuration.
|
|
@@ -72,87 +100,88 @@ export declare class Archiver extends EventEmitter implements ArchiveSource, Tra
|
|
|
72
100
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
73
101
|
* @returns - An instance of the archiver.
|
|
74
102
|
*/
|
|
75
|
-
static createAndSync(config: ArchiverConfig, archiverStore: ArchiverDataStore, deps:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}, blockUntilSynced?: boolean): Promise<Archiver>;
|
|
103
|
+
static createAndSync(config: ArchiverConfig, archiverStore: ArchiverDataStore, deps: ArchiverDeps, blockUntilSynced?: boolean): Promise<Archiver>;
|
|
104
|
+
/** Updates archiver config */
|
|
105
|
+
updateConfig(newConfig: Partial<ArchiverConfig>): void;
|
|
79
106
|
/**
|
|
80
107
|
* Starts sync process.
|
|
81
108
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
82
109
|
*/
|
|
83
110
|
start(blockUntilSynced: boolean): Promise<void>;
|
|
84
|
-
|
|
111
|
+
syncImmediate(): Promise<void>;
|
|
85
112
|
/**
|
|
86
|
-
*
|
|
113
|
+
* Queues a block to be added to the archiver store and triggers processing.
|
|
114
|
+
* The block will be processed by the sync loop.
|
|
115
|
+
* Implements the L2BlockSink interface.
|
|
116
|
+
* @param block - The L2 block to add.
|
|
117
|
+
* @returns A promise that resolves when the block has been added to the store, or rejects on error.
|
|
87
118
|
*/
|
|
119
|
+
addBlock(block: L2BlockNew): Promise<void>;
|
|
120
|
+
private processQueuedBlocks;
|
|
121
|
+
waitForInitialSync(): Promise<void>;
|
|
122
|
+
private testEthereumNodeSynced;
|
|
123
|
+
private syncFromL1;
|
|
88
124
|
private sync;
|
|
89
|
-
/** Queries the rollup contract on whether a prune can be executed on the immediatenext L1 block. */
|
|
90
125
|
private canPrune;
|
|
91
|
-
/** Checks if there'd be a reorg for the next block submission and start pruning now. */
|
|
92
126
|
private handleEpochPrune;
|
|
93
127
|
private nextRange;
|
|
94
128
|
private handleL1ToL2Messages;
|
|
95
|
-
private
|
|
129
|
+
private retrieveL1ToL2Message;
|
|
130
|
+
private rollbackL1ToL2Messages;
|
|
131
|
+
private getL1BlockHash;
|
|
132
|
+
private handleCheckpoints;
|
|
133
|
+
private checkForNewCheckpointsBeforeL1SyncPoint;
|
|
134
|
+
/** Resumes the archiver after a stop. */
|
|
135
|
+
resume(): void;
|
|
96
136
|
/**
|
|
97
137
|
* Stops the archiver.
|
|
98
138
|
* @returns A promise signalling completion of the stop process.
|
|
99
139
|
*/
|
|
100
140
|
stop(): Promise<void>;
|
|
141
|
+
backupTo(destPath: string): Promise<string>;
|
|
101
142
|
getL1Constants(): Promise<L1RollupConstants>;
|
|
143
|
+
getGenesisValues(): Promise<{
|
|
144
|
+
genesisArchiveRoot: Fr;
|
|
145
|
+
}>;
|
|
102
146
|
getRollupAddress(): Promise<EthAddress>;
|
|
103
147
|
getRegistryAddress(): Promise<EthAddress>;
|
|
104
|
-
getL1BlockNumber(): bigint;
|
|
105
|
-
getL1Timestamp(): bigint
|
|
106
|
-
getL2SlotNumber(): Promise<
|
|
107
|
-
getL2EpochNumber(): Promise<
|
|
108
|
-
getBlocksForEpoch(epochNumber:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
148
|
+
getL1BlockNumber(): bigint | undefined;
|
|
149
|
+
getL1Timestamp(): Promise<bigint | undefined>;
|
|
150
|
+
getL2SlotNumber(): Promise<SlotNumber | undefined>;
|
|
151
|
+
getL2EpochNumber(): Promise<EpochNumber | undefined>;
|
|
152
|
+
getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2Block[]>;
|
|
153
|
+
getBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
|
|
154
|
+
isEpochComplete(epochNumber: EpochNumber): Promise<boolean>;
|
|
155
|
+
/** Returns whether the archiver has completed an initial sync run successfully. */
|
|
156
|
+
isInitialSyncComplete(): boolean;
|
|
157
|
+
getCheckpointHeader(number: CheckpointNumber | 'latest'): Promise<CheckpointHeader | undefined>;
|
|
158
|
+
getCheckpointNumber(): Promise<CheckpointNumber>;
|
|
159
|
+
getSynchedCheckpointNumber(): Promise<CheckpointNumber>;
|
|
160
|
+
getProvenCheckpointNumber(): Promise<CheckpointNumber>;
|
|
161
|
+
setProvenCheckpointNumber(checkpointNumber: CheckpointNumber): Promise<void>;
|
|
162
|
+
unwindCheckpoints(from: CheckpointNumber, checkpointsToUnwind: number): Promise<boolean>;
|
|
163
|
+
getLastBlockNumberInCheckpoint(checkpointNumber: CheckpointNumber): Promise<BlockNumber | undefined>;
|
|
164
|
+
addCheckpoints(checkpoints: PublishedCheckpoint[], pendingChainValidationStatus?: ValidateCheckpointResult): Promise<boolean>;
|
|
165
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
166
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
118
167
|
/**
|
|
119
168
|
* Gets an l2 block.
|
|
120
169
|
* @param number - The block number to return.
|
|
121
170
|
* @returns The requested L2 block.
|
|
122
171
|
*/
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
172
|
+
getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined>;
|
|
173
|
+
getL2BlocksNew(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]>;
|
|
174
|
+
getBlockHeader(number: BlockNumber | 'latest'): Promise<BlockHeader | undefined>;
|
|
175
|
+
getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
|
|
176
|
+
getCheckpointedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<CheckpointedL2Block[]>;
|
|
177
|
+
getCheckpointedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
178
|
+
getProvenBlockNumber(): Promise<BlockNumber>;
|
|
179
|
+
getCheckpointedBlockNumber(): Promise<BlockNumber>;
|
|
180
|
+
getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
181
|
+
getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined>;
|
|
126
182
|
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
* @param address - The contract address containing the function to fetch.
|
|
130
|
-
* @param selector - The function selector of the function to fetch.
|
|
131
|
-
* @returns The public function data (if found).
|
|
132
|
-
*/
|
|
133
|
-
getPublicFunction(address: AztecAddress, selector: FunctionSelector): Promise<PublicFunction | undefined>;
|
|
134
|
-
/**
|
|
135
|
-
* Retrieves all private logs from up to `limit` blocks, starting from the block number `from`.
|
|
136
|
-
* @param from - The block number from which to begin retrieving logs.
|
|
137
|
-
* @param limit - The maximum number of blocks to retrieve logs from.
|
|
138
|
-
* @returns An array of private logs from the specified range of blocks.
|
|
139
|
-
*/
|
|
140
|
-
getPrivateLogs(from: number, limit: number): Promise<PrivateLog[]>;
|
|
141
|
-
/**
|
|
142
|
-
* Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
|
|
143
|
-
* @param tags - The tags to filter the logs by.
|
|
144
|
-
* @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
|
|
145
|
-
* that tag.
|
|
146
|
-
*/
|
|
147
|
-
getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
|
|
148
|
-
/**
|
|
149
|
-
* Returns the provided nullifier indexes scoped to the block
|
|
150
|
-
* they were first included in, or undefined if they're not present in the tree
|
|
151
|
-
* @param blockNumber Max block number to search for the nullifiers
|
|
152
|
-
* @param nullifiers Nullifiers to get
|
|
153
|
-
* @returns The block scoped indexes of the provided nullifiers, or undefined if the nullifier doesn't exist in the tree
|
|
154
|
-
*/
|
|
155
|
-
findNullifiersIndexesWithBlock(blockNumber: number, nullifiers: Fr[]): Promise<(InBlock<bigint> | undefined)[]>;
|
|
183
|
+
getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]>;
|
|
184
|
+
getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[]): Promise<TxScopedL2Log[][]>;
|
|
156
185
|
/**
|
|
157
186
|
* Gets public logs based on the provided filter.
|
|
158
187
|
* @param filter - The filter to apply to the logs.
|
|
@@ -167,21 +196,19 @@ export declare class Archiver extends EventEmitter implements ArchiveSource, Tra
|
|
|
167
196
|
getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
|
|
168
197
|
/**
|
|
169
198
|
* Gets the number of the latest L2 block processed by the block source implementation.
|
|
199
|
+
* This includes both checkpointed and uncheckpointed blocks.
|
|
170
200
|
* @returns The number of the latest L2 block processed by the block source implementation.
|
|
171
201
|
*/
|
|
172
|
-
getBlockNumber(): Promise<
|
|
173
|
-
getProvenBlockNumber(): Promise<number>;
|
|
174
|
-
/** Forcefully updates the last proven block number. Use for testing. */
|
|
175
|
-
setProvenBlockNumber(blockNumber: number): Promise<void>;
|
|
202
|
+
getBlockNumber(): Promise<BlockNumber>;
|
|
176
203
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
177
204
|
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
178
|
-
getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
205
|
+
getContract(address: AztecAddress, maybeTimestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
179
206
|
/**
|
|
180
|
-
* Gets L1 to L2 message (to be) included in a given
|
|
181
|
-
* @param
|
|
207
|
+
* Gets L1 to L2 message (to be) included in a given checkpoint.
|
|
208
|
+
* @param checkpointNumber - Checkpoint number to get messages for.
|
|
182
209
|
* @returns The L1 to L2 messages/leaves of the messages subtree (throws if not found).
|
|
183
210
|
*/
|
|
184
|
-
getL1ToL2Messages(
|
|
211
|
+
getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]>;
|
|
185
212
|
/**
|
|
186
213
|
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
187
214
|
* @param l1ToL2Message - The L1 to L2 message.
|
|
@@ -189,9 +216,92 @@ export declare class Archiver extends EventEmitter implements ArchiveSource, Tra
|
|
|
189
216
|
*/
|
|
190
217
|
getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
|
|
191
218
|
getContractClassIds(): Promise<Fr[]>;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
219
|
+
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
220
|
+
getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
221
|
+
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
|
|
222
|
+
isPendingChainInvalid(): Promise<boolean>;
|
|
195
223
|
getL2Tips(): Promise<L2Tips>;
|
|
224
|
+
rollbackTo(targetL2BlockNumber: BlockNumber): Promise<void>;
|
|
225
|
+
getPublishedCheckpoints(checkpointNumber: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
|
|
226
|
+
getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
|
|
227
|
+
getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
|
|
228
|
+
getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
229
|
+
/**
|
|
230
|
+
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
231
|
+
* @param from - Number of the first block to return (inclusive).
|
|
232
|
+
* @param limit - The number of blocks to return.
|
|
233
|
+
* @param proven - If true, only return blocks that have been proven.
|
|
234
|
+
* @returns The requested L2 blocks.
|
|
235
|
+
*/
|
|
236
|
+
getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2Block[]>;
|
|
237
|
+
getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
|
|
238
|
+
private buildOldBlockFromCheckpointedBlock;
|
|
239
|
+
getBlock(number: BlockNumber): Promise<L2Block | undefined>;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* A helper class that we use to deal with some of the logic needed when adding blocks.
|
|
243
|
+
*
|
|
244
|
+
* I would have preferred to not have this type. But it is useful for handling the logic that any
|
|
245
|
+
* store would need to include otherwise while exposing fewer functions and logic directly to the archiver.
|
|
246
|
+
*/
|
|
247
|
+
export declare class ArchiverStoreHelper implements Omit<ArchiverDataStore, 'addLogs' | 'deleteLogs' | 'addContractClasses' | 'deleteContractClasses' | 'addContractInstances' | 'deleteContractInstances' | 'addContractInstanceUpdates' | 'deleteContractInstanceUpdates' | 'addFunctions' | 'backupTo' | 'close' | 'transactionAsync' | 'addBlocks' | 'getBlock' | 'getBlocks' | 'getCheckpointedBlocks'> {
|
|
248
|
+
#private;
|
|
249
|
+
readonly store: ArchiverDataStore;
|
|
250
|
+
constructor(store: ArchiverDataStore);
|
|
251
|
+
private addBlockDataToDB;
|
|
252
|
+
addBlocks(blocks: L2BlockNew[], pendingChainValidationStatus?: ValidateCheckpointResult): Promise<boolean>;
|
|
253
|
+
addCheckpoints(checkpoints: PublishedCheckpoint[], pendingChainValidationStatus?: ValidateCheckpointResult): Promise<boolean>;
|
|
254
|
+
unwindCheckpoints(from: CheckpointNumber, checkpointsToUnwind: number): Promise<boolean>;
|
|
255
|
+
getCheckpointData(checkpointNumber: CheckpointNumber): Promise<CheckpointData | undefined>;
|
|
256
|
+
getRangeOfCheckpoints(from: CheckpointNumber, limit: number): Promise<CheckpointData[]>;
|
|
257
|
+
getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
|
|
258
|
+
getSynchedCheckpointNumber(): Promise<CheckpointNumber>;
|
|
259
|
+
setCheckpointSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
|
|
260
|
+
getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
|
|
261
|
+
getCheckpointedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
262
|
+
getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
263
|
+
getBlockHeaders(from: BlockNumber, limit: number): Promise<BlockHeader[]>;
|
|
264
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
265
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
266
|
+
getBlockByHash(blockHash: Fr): Promise<L2BlockNew | undefined>;
|
|
267
|
+
getBlockByArchive(archive: Fr): Promise<L2BlockNew | undefined>;
|
|
268
|
+
getLatestBlockNumber(): Promise<BlockNumber>;
|
|
269
|
+
getBlocksForCheckpoint(checkpointNumber: CheckpointNumber): Promise<L2BlockNew[] | undefined>;
|
|
270
|
+
getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined>;
|
|
271
|
+
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
272
|
+
addL1ToL2Messages(messages: InboxMessage[]): Promise<void>;
|
|
273
|
+
getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]>;
|
|
274
|
+
getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
|
|
275
|
+
getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]>;
|
|
276
|
+
getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[]): Promise<TxScopedL2Log[][]>;
|
|
277
|
+
getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse>;
|
|
278
|
+
getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
|
|
279
|
+
getSynchedL2BlockNumber(): Promise<BlockNumber>;
|
|
280
|
+
getProvenCheckpointNumber(): Promise<CheckpointNumber>;
|
|
281
|
+
getProvenBlockNumber(): Promise<BlockNumber>;
|
|
282
|
+
setProvenCheckpointNumber(checkpointNumber: CheckpointNumber): Promise<void>;
|
|
283
|
+
setBlockSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
|
|
284
|
+
setMessageSynchedL1Block(l1Block: L1BlockId): Promise<void>;
|
|
285
|
+
getSynchPoint(): Promise<ArchiverL1SynchPoint>;
|
|
286
|
+
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
287
|
+
getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
|
|
288
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
289
|
+
getContractClassIds(): Promise<Fr[]>;
|
|
290
|
+
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
291
|
+
getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
292
|
+
getTotalL1ToL2MessageCount(): Promise<bigint>;
|
|
293
|
+
estimateSize(): Promise<{
|
|
294
|
+
mappingSize: number;
|
|
295
|
+
physicalFileSize: number;
|
|
296
|
+
actualSize: number;
|
|
297
|
+
numItems: number;
|
|
298
|
+
}>;
|
|
299
|
+
rollbackL1ToL2MessagesToCheckpoint(targetCheckpointNumber: CheckpointNumber): Promise<void>;
|
|
300
|
+
iterateL1ToL2Messages(range?: CustomRange<bigint>): AsyncIterableIterator<InboxMessage>;
|
|
301
|
+
removeL1ToL2Messages(startIndex: bigint): Promise<void>;
|
|
302
|
+
getLastL1ToL2Message(): Promise<InboxMessage | undefined>;
|
|
303
|
+
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult | undefined>;
|
|
304
|
+
setPendingChainValidationStatus(status: ValidateCheckpointResult | undefined): Promise<void>;
|
|
196
305
|
}
|
|
197
|
-
|
|
306
|
+
export {};
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdoRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekcsT0FBTyxFQUFZLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFJbEUsT0FBTyxFQUFFLFlBQVksRUFBa0IsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVduRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFFcEIsbUJBQW1CLEVBR25CLE9BQU8sRUFDUCxVQUFVLEVBQ1YsS0FBSyxXQUFXLEVBQ2hC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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
|