@aztec/archiver 0.0.1-commit.e588bc7e5 → 0.0.1-commit.e5a3663dd
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.d.ts +19 -11
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +96 -53
- package/dest/config.d.ts +3 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +14 -3
- package/dest/errors.d.ts +32 -5
- package/dest/errors.d.ts.map +1 -1
- package/dest/errors.js +51 -6
- package/dest/factory.d.ts +4 -4
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +13 -10
- package/dest/index.d.ts +10 -3
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +9 -2
- package/dest/l1/calldata_retriever.d.ts +2 -1
- package/dest/l1/calldata_retriever.d.ts.map +1 -1
- package/dest/l1/calldata_retriever.js +9 -4
- package/dest/l1/data_retrieval.d.ts +18 -9
- package/dest/l1/data_retrieval.d.ts.map +1 -1
- package/dest/l1/data_retrieval.js +13 -19
- package/dest/l1/validate_historical_logs.d.ts +23 -0
- package/dest/l1/validate_historical_logs.d.ts.map +1 -0
- package/dest/l1/validate_historical_logs.js +108 -0
- package/dest/modules/contract_data_source_adapter.d.ts +25 -0
- package/dest/modules/contract_data_source_adapter.d.ts.map +1 -0
- package/dest/modules/contract_data_source_adapter.js +42 -0
- package/dest/modules/data_source_base.d.ts +16 -10
- package/dest/modules/data_source_base.d.ts.map +1 -1
- package/dest/modules/data_source_base.js +71 -60
- package/dest/modules/data_store_updater.d.ts +16 -9
- package/dest/modules/data_store_updater.d.ts.map +1 -1
- package/dest/modules/data_store_updater.js +52 -40
- package/dest/modules/instrumentation.d.ts +7 -2
- package/dest/modules/instrumentation.d.ts.map +1 -1
- package/dest/modules/instrumentation.js +22 -6
- package/dest/modules/l1_synchronizer.d.ts +8 -4
- package/dest/modules/l1_synchronizer.d.ts.map +1 -1
- package/dest/modules/l1_synchronizer.js +212 -79
- package/dest/modules/validation.d.ts +4 -3
- package/dest/modules/validation.d.ts.map +1 -1
- package/dest/modules/validation.js +4 -4
- package/dest/store/block_store.d.ts +60 -21
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +229 -70
- package/dest/store/contract_class_store.d.ts +17 -3
- package/dest/store/contract_class_store.d.ts.map +1 -1
- package/dest/store/contract_class_store.js +17 -1
- package/dest/store/contract_instance_store.d.ts +28 -1
- package/dest/store/contract_instance_store.d.ts.map +1 -1
- package/dest/store/contract_instance_store.js +31 -0
- package/dest/store/data_stores.d.ts +68 -0
- package/dest/store/data_stores.d.ts.map +1 -0
- package/dest/store/data_stores.js +50 -0
- package/dest/store/function_names_cache.d.ts +17 -0
- package/dest/store/function_names_cache.d.ts.map +1 -0
- package/dest/store/function_names_cache.js +30 -0
- package/dest/store/l2_tips_cache.d.ts +1 -1
- package/dest/store/l2_tips_cache.d.ts.map +1 -1
- package/dest/store/l2_tips_cache.js +3 -3
- package/dest/store/log_store.d.ts +1 -1
- package/dest/store/log_store.d.ts.map +1 -1
- package/dest/store/log_store.js +2 -4
- package/dest/store/message_store.d.ts +9 -3
- package/dest/store/message_store.d.ts.map +1 -1
- package/dest/store/message_store.js +31 -1
- package/dest/test/fake_l1_state.d.ts +14 -3
- package/dest/test/fake_l1_state.d.ts.map +1 -1
- package/dest/test/fake_l1_state.js +55 -15
- package/dest/test/mock_l2_block_source.d.ts +12 -3
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +24 -2
- package/dest/test/noop_l1_archiver.d.ts +4 -4
- package/dest/test/noop_l1_archiver.d.ts.map +1 -1
- package/dest/test/noop_l1_archiver.js +9 -7
- package/package.json +13 -13
- package/src/archiver.ts +113 -52
- package/src/config.ts +15 -1
- package/src/errors.ts +75 -8
- package/src/factory.ts +11 -10
- package/src/index.ts +17 -2
- package/src/l1/calldata_retriever.ts +15 -4
- package/src/l1/data_retrieval.ts +30 -35
- package/src/l1/validate_historical_logs.ts +140 -0
- package/src/modules/contract_data_source_adapter.ts +59 -0
- package/src/modules/data_source_base.ts +75 -57
- package/src/modules/data_store_updater.ts +71 -39
- package/src/modules/instrumentation.ts +27 -7
- package/src/modules/l1_synchronizer.ts +301 -83
- package/src/modules/validation.ts +8 -7
- package/src/store/block_store.ts +264 -77
- package/src/store/contract_class_store.ts +28 -2
- package/src/store/contract_instance_store.ts +43 -0
- package/src/store/data_stores.ts +108 -0
- package/src/store/function_names_cache.ts +37 -0
- package/src/store/l2_tips_cache.ts +9 -3
- package/src/store/log_store.ts +2 -5
- package/src/store/message_store.ts +35 -2
- package/src/test/fake_l1_state.ts +62 -24
- package/src/test/mock_l2_block_source.ts +23 -2
- package/src/test/noop_l1_archiver.ts +9 -7
- package/dest/store/kv_archiver_store.d.ts +0 -377
- package/dest/store/kv_archiver_store.d.ts.map +0 -1
- package/dest/store/kv_archiver_store.js +0 -494
- package/src/store/kv_archiver_store.ts +0 -713
package/dest/archiver.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ import { type ArchiverConfig } from './config.js';
|
|
|
18
18
|
import { ArchiverDataSourceBase } from './modules/data_source_base.js';
|
|
19
19
|
import type { ArchiverInstrumentation } from './modules/instrumentation.js';
|
|
20
20
|
import type { ArchiverL1Synchronizer } from './modules/l1_synchronizer.js';
|
|
21
|
-
import type
|
|
21
|
+
import { type ArchiverDataStores } from './store/data_stores.js';
|
|
22
22
|
import { L2TipsCache } from './store/l2_tips_cache.js';
|
|
23
23
|
/** Export ArchiverEmitter for use in factory and tests. */
|
|
24
24
|
export type { ArchiverEmitter };
|
|
@@ -38,7 +38,7 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
38
38
|
private readonly debugClient;
|
|
39
39
|
private readonly rollup;
|
|
40
40
|
private readonly l1Addresses;
|
|
41
|
-
readonly
|
|
41
|
+
readonly dataStores: ArchiverDataStores;
|
|
42
42
|
private config;
|
|
43
43
|
private readonly blobClient;
|
|
44
44
|
protected readonly l1Constants: L1RollupConstants & {
|
|
@@ -54,21 +54,22 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
54
54
|
private readonly synchronizer;
|
|
55
55
|
private initialSyncComplete;
|
|
56
56
|
private initialSyncPromise;
|
|
57
|
-
/** Queue of blocks to be added to the store, processed by the sync loop. */
|
|
58
|
-
private
|
|
57
|
+
/** Queue of blocks and checkpoints to be added to the store, processed by the sync loop. */
|
|
58
|
+
private inboundQueue;
|
|
59
59
|
/** Helper to handle updates to the store */
|
|
60
60
|
private readonly updater;
|
|
61
61
|
/** In-memory cache for L2 chain tips. */
|
|
62
62
|
private readonly l2TipsCache;
|
|
63
63
|
readonly tracer: Tracer;
|
|
64
|
+
private readonly instrumentation;
|
|
64
65
|
/**
|
|
65
66
|
* Creates a new instance of the Archiver.
|
|
66
67
|
* @param publicClient - A client for interacting with the Ethereum node.
|
|
67
68
|
* @param debugClient - A client for interacting with the Ethereum node for debug/trace methods.
|
|
68
69
|
* @param rollup - Rollup contract instance.
|
|
69
70
|
* @param inbox - Inbox contract instance.
|
|
70
|
-
* @param l1Addresses - L1 contract addresses (registry, governance proposer,
|
|
71
|
-
* @param
|
|
71
|
+
* @param l1Addresses - L1 contract addresses (registry, governance proposer, slashing proposer).
|
|
72
|
+
* @param dataStores - Archiver substores for storage & retrieval of blocks, encrypted logs & contract data.
|
|
72
73
|
* @param config - Archiver configuration options.
|
|
73
74
|
* @param blobClient - Client for retrieving blob data.
|
|
74
75
|
* @param dateProvider - Provider for current date/time.
|
|
@@ -76,14 +77,15 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
76
77
|
* @param l1Constants - L1 rollup constants.
|
|
77
78
|
* @param log - A logger.
|
|
78
79
|
*/
|
|
79
|
-
constructor(publicClient: ViemPublicClient, debugClient: ViemPublicDebugClient, rollup: RollupContract, l1Addresses: Pick<L1ContractAddresses, 'registryAddress' | '
|
|
80
|
+
constructor(publicClient: ViemPublicClient, debugClient: ViemPublicDebugClient, rollup: RollupContract, l1Addresses: Pick<L1ContractAddresses, 'rollupAddress' | 'registryAddress' | 'inboxAddress' | 'governanceProposerAddress'> & {
|
|
80
81
|
slashingProposerAddress: EthAddress;
|
|
81
|
-
},
|
|
82
|
+
}, dataStores: ArchiverDataStores, config: {
|
|
82
83
|
pollingIntervalMs: number;
|
|
83
84
|
batchSize: number;
|
|
84
85
|
skipValidateCheckpointAttestations?: boolean;
|
|
85
86
|
maxAllowedEthClientDriftSeconds: number;
|
|
86
87
|
ethereumAllowNoDebugHosts?: boolean;
|
|
88
|
+
skipHistoricalLogsCheck?: boolean;
|
|
87
89
|
}, blobClient: BlobClientInterface, instrumentation: ArchiverInstrumentation, l1Constants: L1RollupConstants & {
|
|
88
90
|
l1StartBlockHash: Buffer32;
|
|
89
91
|
genesisArchiveRoot: Fr;
|
|
@@ -96,6 +98,7 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
96
98
|
*/
|
|
97
99
|
start(blockUntilSynced: boolean): Promise<void>;
|
|
98
100
|
syncImmediate(): Promise<void>;
|
|
101
|
+
trySyncImmediate(): Promise<void> | undefined;
|
|
99
102
|
/**
|
|
100
103
|
* Queues a block to be added to the archiver store and triggers processing.
|
|
101
104
|
* The block will be processed by the sync loop.
|
|
@@ -104,8 +107,13 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
104
107
|
* @returns A promise that resolves when the block has been added to the store, or rejects on error.
|
|
105
108
|
*/
|
|
106
109
|
addBlock(block: L2Block): Promise<void>;
|
|
107
|
-
|
|
108
|
-
|
|
110
|
+
/**
|
|
111
|
+
* Queues a new proposed checkpoint into the archiver store.
|
|
112
|
+
* Checks that the checkpoint is not for an L2 slot already synced from L1.
|
|
113
|
+
* Resolves once the checkpoint has been processed.
|
|
114
|
+
*/
|
|
115
|
+
addProposedCheckpoint(pending: ProposedCheckpointInput): Promise<void>;
|
|
116
|
+
private processInboundQueue;
|
|
109
117
|
waitForInitialSync(): Promise<void>;
|
|
110
118
|
private sync;
|
|
111
119
|
private syncFromL1;
|
|
@@ -136,4 +144,4 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
136
144
|
getL2Tips(): Promise<L2Tips>;
|
|
137
145
|
rollbackTo(targetL2BlockNumber: BlockNumber): Promise<void>;
|
|
138
146
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQXVCLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBMkIsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixPQUFPLEVBQ1AsS0FBSyxXQUFXLEVBQ2hCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RixPQUFPLEVBQ0wsS0FBSyxpQkFBaUIsRUFNdkIs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
|
package/dest/archiver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../src/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAuB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,cAAc,EAA2B,MAAM,mCAAmC,CAAC;AAC5F,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../src/archiver.ts"],"names":[],"mappings":"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"}
|
package/dest/archiver.js
CHANGED
|
@@ -379,13 +379,16 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
379
379
|
import { createLogger } from '@aztec/foundation/log';
|
|
380
380
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
381
381
|
import { RunningPromise, makeLoggingErrorHandler } from '@aztec/foundation/running-promise';
|
|
382
|
-
import {
|
|
382
|
+
import { elapsed } from '@aztec/foundation/timer';
|
|
383
|
+
import { getEpochAtSlot, getSlotAtNextL1Block, getSlotRangeForEpoch, getTimestampForSlot, getTimestampRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
383
384
|
import { trackSpan } from '@aztec/telemetry-client';
|
|
384
385
|
import { mapArchiverConfig } from './config.js';
|
|
385
|
-
import { BlockAlreadyCheckpointedError, NoBlobBodiesFoundError } from './errors.js';
|
|
386
|
+
import { BlockAlreadyCheckpointedError, BlockOrCheckpointSlotExpiredError, NoBlobBodiesFoundError } from './errors.js';
|
|
387
|
+
import { validateAndLogHistoricalLogsAvailability } from './l1/validate_historical_logs.js';
|
|
386
388
|
import { validateAndLogTraceAvailability } from './l1/validate_trace.js';
|
|
387
389
|
import { ArchiverDataSourceBase } from './modules/data_source_base.js';
|
|
388
390
|
import { ArchiverDataStoreUpdater } from './modules/data_store_updater.js';
|
|
391
|
+
import { backupArchiverDataStores, getArchiverSynchPoint } from './store/data_stores.js';
|
|
389
392
|
import { L2TipsCache } from './store/l2_tips_cache.js';
|
|
390
393
|
_dec = trackSpan('Archiver.sync');
|
|
391
394
|
/**
|
|
@@ -397,7 +400,7 @@ _dec = trackSpan('Archiver.sync');
|
|
|
397
400
|
debugClient;
|
|
398
401
|
rollup;
|
|
399
402
|
l1Addresses;
|
|
400
|
-
|
|
403
|
+
dataStores;
|
|
401
404
|
config;
|
|
402
405
|
blobClient;
|
|
403
406
|
l1Constants;
|
|
@@ -416,32 +419,34 @@ _dec = trackSpan('Archiver.sync');
|
|
|
416
419
|
/** L1 synchronizer that handles fetching checkpoints and messages from L1. */ synchronizer;
|
|
417
420
|
initialSyncComplete;
|
|
418
421
|
initialSyncPromise;
|
|
419
|
-
/** Queue of blocks to be added to the store, processed by the sync loop. */
|
|
422
|
+
/** Queue of blocks and checkpoints to be added to the store, processed by the sync loop. */ inboundQueue;
|
|
420
423
|
/** Helper to handle updates to the store */ updater;
|
|
421
424
|
/** In-memory cache for L2 chain tips. */ l2TipsCache;
|
|
422
425
|
tracer;
|
|
426
|
+
instrumentation;
|
|
423
427
|
/**
|
|
424
428
|
* Creates a new instance of the Archiver.
|
|
425
429
|
* @param publicClient - A client for interacting with the Ethereum node.
|
|
426
430
|
* @param debugClient - A client for interacting with the Ethereum node for debug/trace methods.
|
|
427
431
|
* @param rollup - Rollup contract instance.
|
|
428
432
|
* @param inbox - Inbox contract instance.
|
|
429
|
-
* @param l1Addresses - L1 contract addresses (registry, governance proposer,
|
|
430
|
-
* @param
|
|
433
|
+
* @param l1Addresses - L1 contract addresses (registry, governance proposer, slashing proposer).
|
|
434
|
+
* @param dataStores - Archiver substores for storage & retrieval of blocks, encrypted logs & contract data.
|
|
431
435
|
* @param config - Archiver configuration options.
|
|
432
436
|
* @param blobClient - Client for retrieving blob data.
|
|
433
437
|
* @param dateProvider - Provider for current date/time.
|
|
434
438
|
* @param instrumentation - Instrumentation for metrics and tracing.
|
|
435
439
|
* @param l1Constants - L1 rollup constants.
|
|
436
440
|
* @param log - A logger.
|
|
437
|
-
*/ constructor(publicClient, debugClient, rollup, l1Addresses,
|
|
438
|
-
super(
|
|
441
|
+
*/ constructor(publicClient, debugClient, rollup, l1Addresses, dataStores, config, blobClient, instrumentation, l1Constants, synchronizer, events, l2TipsCache, log = createLogger('archiver')){
|
|
442
|
+
super(dataStores, l1Constants), this.publicClient = publicClient, this.debugClient = debugClient, this.rollup = rollup, this.l1Addresses = l1Addresses, this.dataStores = dataStores, this.config = config, this.blobClient = blobClient, this.l1Constants = l1Constants, this.log = log, this.initialSyncComplete = (_initProto(this), false), this.inboundQueue = [];
|
|
439
443
|
this.tracer = instrumentation.tracer;
|
|
444
|
+
this.instrumentation = instrumentation;
|
|
440
445
|
this.initialSyncPromise = promiseWithResolvers();
|
|
441
446
|
this.synchronizer = synchronizer;
|
|
442
447
|
this.events = events;
|
|
443
|
-
this.l2TipsCache = l2TipsCache ?? new L2TipsCache(this.
|
|
444
|
-
this.updater = new ArchiverDataStoreUpdater(this.
|
|
448
|
+
this.l2TipsCache = l2TipsCache ?? new L2TipsCache(this.dataStores.blocks);
|
|
449
|
+
this.updater = new ArchiverDataStoreUpdater(this.dataStores, this.l2TipsCache, {
|
|
445
450
|
rollupManaLimit: l1Constants.rollupManaLimit
|
|
446
451
|
});
|
|
447
452
|
// Running promise starts with a small interval inbetween runs, so all iterations needed for the initial sync
|
|
@@ -462,9 +467,15 @@ _dec = trackSpan('Archiver.sync');
|
|
|
462
467
|
await this.blobClient.testSources();
|
|
463
468
|
await this.synchronizer.testEthereumNodeSynced();
|
|
464
469
|
await validateAndLogTraceAvailability(this.debugClient, this.config.ethereumAllowNoDebugHosts ?? false, this.log.getBindings());
|
|
470
|
+
await validateAndLogHistoricalLogsAvailability(this.publicClient, {
|
|
471
|
+
rollupAddress: this.l1Addresses.rollupAddress,
|
|
472
|
+
inboxAddress: this.l1Addresses.inboxAddress,
|
|
473
|
+
registryAddress: this.l1Addresses.registryAddress,
|
|
474
|
+
governanceProposerAddress: this.l1Addresses.governanceProposerAddress
|
|
475
|
+
}, this.config.skipHistoricalLogsCheck ?? false, this.log.getBindings());
|
|
465
476
|
// Log initial state for the archiver
|
|
466
477
|
const { l1StartBlock } = this.l1Constants;
|
|
467
|
-
const { blocksSynchedTo = l1StartBlock, messagesSynchedTo = l1StartBlock } = await this.
|
|
478
|
+
const { blocksSynchedTo = l1StartBlock, messagesSynchedTo = l1StartBlock } = await getArchiverSynchPoint(this.stores);
|
|
468
479
|
const currentL2Checkpoint = await this.getSynchedCheckpointNumber();
|
|
469
480
|
this.log.info(`Starting archiver sync to rollup contract ${this.rollup.address} from L1 block ${blocksSynchedTo} and L2 checkpoint ${currentL2Checkpoint}`, {
|
|
470
481
|
blocksSynchedTo,
|
|
@@ -480,6 +491,13 @@ _dec = trackSpan('Archiver.sync');
|
|
|
480
491
|
syncImmediate() {
|
|
481
492
|
return this.runningPromise.trigger();
|
|
482
493
|
}
|
|
494
|
+
trySyncImmediate() {
|
|
495
|
+
try {
|
|
496
|
+
return this.syncImmediate();
|
|
497
|
+
} catch (err) {
|
|
498
|
+
this.log.error(`Failed to trigger immediate archiver sync: ${err}`, err);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
483
501
|
/**
|
|
484
502
|
* Queues a block to be added to the archiver store and triggers processing.
|
|
485
503
|
* The block will be processed by the sync loop.
|
|
@@ -487,59 +505,84 @@ _dec = trackSpan('Archiver.sync');
|
|
|
487
505
|
* @param block - The L2 block to add.
|
|
488
506
|
* @returns A promise that resolves when the block has been added to the store, or rejects on error.
|
|
489
507
|
*/ addBlock(block) {
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
});
|
|
496
|
-
this.log.debug(`Queued block ${block.number} for processing`);
|
|
497
|
-
// Trigger an immediate sync, but don't wait for it - the promise resolves when the block is processed
|
|
498
|
-
this.syncImmediate().catch((err)=>{
|
|
499
|
-
this.log.error(`Sync immediate call failed: ${err}`);
|
|
500
|
-
});
|
|
508
|
+
const promise = promiseWithResolvers();
|
|
509
|
+
this.inboundQueue.push({
|
|
510
|
+
block,
|
|
511
|
+
...promise,
|
|
512
|
+
type: 'block'
|
|
501
513
|
});
|
|
514
|
+
this.log.debug(`Queued block ${block.number} for processing`);
|
|
515
|
+
void this.trySyncImmediate();
|
|
516
|
+
return promise.promise;
|
|
502
517
|
}
|
|
503
|
-
|
|
504
|
-
|
|
518
|
+
/**
|
|
519
|
+
* Queues a new proposed checkpoint into the archiver store.
|
|
520
|
+
* Checks that the checkpoint is not for an L2 slot already synced from L1.
|
|
521
|
+
* Resolves once the checkpoint has been processed.
|
|
522
|
+
*/ addProposedCheckpoint(pending) {
|
|
523
|
+
const promise = promiseWithResolvers();
|
|
524
|
+
this.inboundQueue.push({
|
|
525
|
+
checkpoint: pending,
|
|
526
|
+
...promise,
|
|
527
|
+
type: 'checkpoint'
|
|
528
|
+
});
|
|
529
|
+
this.log.debug(`Queued checkpoint ${pending.checkpointNumber} for processing`);
|
|
530
|
+
void this.trySyncImmediate();
|
|
531
|
+
return promise.promise;
|
|
505
532
|
}
|
|
506
533
|
/**
|
|
507
|
-
* Processes all queued blocks, adding them to the store.
|
|
534
|
+
* Processes all queued blocks and checkpoints, adding them to the store.
|
|
508
535
|
* Called at the beginning of each sync iteration.
|
|
509
|
-
*
|
|
510
|
-
*/ async
|
|
511
|
-
if (this.
|
|
536
|
+
* Items are processed in the order they were queued.
|
|
537
|
+
*/ async processInboundQueue() {
|
|
538
|
+
if (this.inboundQueue.length === 0) {
|
|
512
539
|
return;
|
|
513
540
|
}
|
|
514
|
-
// Take all
|
|
515
|
-
const queuedItems = this.
|
|
516
|
-
this.log.debug(`Processing ${queuedItems.length} queued
|
|
541
|
+
// Take all items from the queue
|
|
542
|
+
const queuedItems = this.inboundQueue.splice(0, this.inboundQueue.length);
|
|
543
|
+
this.log.debug(`Processing ${queuedItems.length} queued inbound items`);
|
|
517
544
|
// Calculate slot threshold for validation
|
|
518
545
|
const l1Timestamp = this.synchronizer.getL1Timestamp();
|
|
519
546
|
const slotAtNextL1Block = l1Timestamp === undefined ? undefined : getSlotAtNextL1Block(l1Timestamp, this.l1Constants);
|
|
520
|
-
//
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
547
|
+
// Helpers for manipulating blocks and checkpoints in the queue
|
|
548
|
+
const getSlot = (item)=>item.type === 'block' ? item.block.header.globalVariables.slotNumber : item.checkpoint.header.slotNumber;
|
|
549
|
+
const getNumber = (item)=>item.type === 'block' ? item.block.number : item.checkpoint.checkpointNumber;
|
|
550
|
+
// Process each item individually to properly resolve/reject each promise
|
|
551
|
+
for (const item of queuedItems){
|
|
552
|
+
const { resolve, reject, type } = item;
|
|
553
|
+
const itemSlot = getSlot(item);
|
|
554
|
+
const itemNumber = getNumber(item);
|
|
555
|
+
if (slotAtNextL1Block !== undefined && itemSlot < slotAtNextL1Block) {
|
|
556
|
+
const nextSlotTimestamp = getTimestampForSlot(slotAtNextL1Block, this.l1Constants);
|
|
557
|
+
this.log.warn(`Rejecting proposed ${type} ${itemNumber} for past slot ${itemSlot} (current ${slotAtNextL1Block})`, {
|
|
558
|
+
number: itemNumber,
|
|
559
|
+
type,
|
|
526
560
|
l1Timestamp,
|
|
527
|
-
slotAtNextL1Block
|
|
561
|
+
slotAtNextL1Block,
|
|
562
|
+
nextSlotTimestamp
|
|
528
563
|
});
|
|
529
|
-
reject(new
|
|
564
|
+
reject(new BlockOrCheckpointSlotExpiredError(itemSlot, nextSlotTimestamp, l1Timestamp));
|
|
530
565
|
continue;
|
|
531
566
|
}
|
|
532
567
|
try {
|
|
533
|
-
|
|
534
|
-
|
|
568
|
+
if (type === 'block') {
|
|
569
|
+
const [durationMs] = await elapsed(()=>this.updater.addProposedBlock(item.block));
|
|
570
|
+
this.instrumentation.processNewProposedBlock(durationMs, item.block);
|
|
571
|
+
} else {
|
|
572
|
+
await this.updater.addProposedCheckpoint(item.checkpoint);
|
|
573
|
+
}
|
|
574
|
+
this.log.debug(`Added ${type} ${itemNumber} to store`);
|
|
535
575
|
resolve();
|
|
536
576
|
} catch (err) {
|
|
537
577
|
if (err instanceof BlockAlreadyCheckpointedError) {
|
|
538
|
-
this.log.debug(`Proposed block ${
|
|
578
|
+
this.log.debug(`Proposed block ${itemNumber} matches already checkpointed block, ignoring late proposal`);
|
|
539
579
|
resolve();
|
|
540
580
|
continue;
|
|
541
581
|
}
|
|
542
|
-
this.log.error(`Failed to add
|
|
582
|
+
this.log.error(`Failed to add ${type} ${itemNumber} to store: ${err.message}`, err, {
|
|
583
|
+
number: itemNumber,
|
|
584
|
+
type
|
|
585
|
+
});
|
|
543
586
|
reject(err);
|
|
544
587
|
}
|
|
545
588
|
}
|
|
@@ -551,7 +594,7 @@ _dec = trackSpan('Archiver.sync');
|
|
|
551
594
|
* Fetches logs from L1 contracts and processes them.
|
|
552
595
|
*/ async sync() {
|
|
553
596
|
// Process any queued blocks first, before doing L1 sync
|
|
554
|
-
await this.
|
|
597
|
+
await this.processInboundQueue();
|
|
555
598
|
// Now perform L1 sync
|
|
556
599
|
await this.syncFromL1();
|
|
557
600
|
}
|
|
@@ -565,7 +608,7 @@ _dec = trackSpan('Archiver.sync');
|
|
|
565
608
|
if (currentL1BlockNumber + 1n >= l1BlockNumberAtEnd) {
|
|
566
609
|
this.log.info(`Initial archiver sync to L1 block ${currentL1BlockNumber} complete`, {
|
|
567
610
|
l1BlockNumber: currentL1BlockNumber,
|
|
568
|
-
syncPoint: await this.
|
|
611
|
+
syncPoint: await getArchiverSynchPoint(this.stores),
|
|
569
612
|
...await this.getL2Tips()
|
|
570
613
|
});
|
|
571
614
|
this.runningPromise.setPollingIntervalMS(this.config.pollingIntervalMs);
|
|
@@ -591,7 +634,7 @@ _dec = trackSpan('Archiver.sync');
|
|
|
591
634
|
return Promise.resolve();
|
|
592
635
|
}
|
|
593
636
|
backupTo(destPath) {
|
|
594
|
-
return this.
|
|
637
|
+
return backupArchiverDataStores(this.dataStores, destPath);
|
|
595
638
|
}
|
|
596
639
|
getL1Constants() {
|
|
597
640
|
return Promise.resolve(this.l1Constants);
|
|
@@ -626,9 +669,9 @@ _dec = trackSpan('Archiver.sync');
|
|
|
626
669
|
}
|
|
627
670
|
}
|
|
628
671
|
let slotFromCheckpoint;
|
|
629
|
-
const latestCheckpointNumber = await this.
|
|
672
|
+
const latestCheckpointNumber = await this.stores.blocks.getLatestCheckpointNumber();
|
|
630
673
|
if (latestCheckpointNumber > 0) {
|
|
631
|
-
const checkpointData = await this.
|
|
674
|
+
const checkpointData = await this.stores.blocks.getCheckpointData(latestCheckpointNumber);
|
|
632
675
|
if (checkpointData) {
|
|
633
676
|
slotFromCheckpoint = checkpointData.header.slotNumber;
|
|
634
677
|
}
|
|
@@ -700,13 +743,13 @@ _dec = trackSpan('Archiver.sync');
|
|
|
700
743
|
if (targetL2BlockNumber >= currentL2Block) {
|
|
701
744
|
throw new Error(`Target L2 block ${targetL2BlockNumber} must be less than current L2 block ${currentL2Block}`);
|
|
702
745
|
}
|
|
703
|
-
const targetL2Block = await this.
|
|
746
|
+
const targetL2Block = await this.stores.blocks.getCheckpointedBlock(targetL2BlockNumber);
|
|
704
747
|
if (!targetL2Block) {
|
|
705
748
|
throw new Error(`Target L2 block ${targetL2BlockNumber} not found`);
|
|
706
749
|
}
|
|
707
750
|
const targetCheckpointNumber = targetL2Block.checkpointNumber;
|
|
708
751
|
// Rollback operates at checkpoint granularity: the target block must be the last block of its checkpoint.
|
|
709
|
-
const checkpointData = await this.
|
|
752
|
+
const checkpointData = await this.stores.blocks.getCheckpointData(targetCheckpointNumber);
|
|
710
753
|
if (checkpointData) {
|
|
711
754
|
const lastBlockInCheckpoint = BlockNumber(checkpointData.startBlock + checkpointData.blockCount - 1);
|
|
712
755
|
if (targetL2BlockNumber !== lastBlockInCheckpoint) {
|
|
@@ -726,10 +769,10 @@ _dec = trackSpan('Archiver.sync');
|
|
|
726
769
|
this.log.info(`Removing checkpoints after checkpoint ${targetCheckpointNumber} (target block ${targetL2BlockNumber})`);
|
|
727
770
|
await this.updater.removeCheckpointsAfter(targetCheckpointNumber);
|
|
728
771
|
this.log.info(`Rolling back L1 to L2 messages to checkpoint ${targetCheckpointNumber}`);
|
|
729
|
-
await this.
|
|
772
|
+
await this.stores.messages.rollbackL1ToL2MessagesToCheckpoint(targetCheckpointNumber);
|
|
730
773
|
this.log.info(`Setting L1 syncpoints to ${targetL1BlockNumber}`);
|
|
731
|
-
await this.
|
|
732
|
-
await this.
|
|
774
|
+
await this.stores.blocks.setSynchedL1BlockNumber(targetL1BlockNumber);
|
|
775
|
+
await this.stores.messages.setMessageSyncState({
|
|
733
776
|
l1BlockNumber: targetL1BlockNumber,
|
|
734
777
|
l1BlockHash: targetL1BlockHash
|
|
735
778
|
}, undefined);
|
package/dest/config.d.ts
CHANGED
|
@@ -24,7 +24,9 @@ export declare function mapArchiverConfig(config: Partial<ArchiverConfig>): {
|
|
|
24
24
|
pollingIntervalMs: number | undefined;
|
|
25
25
|
batchSize: number | undefined;
|
|
26
26
|
skipValidateCheckpointAttestations: boolean | undefined;
|
|
27
|
+
skipPromoteProposedCheckpointDuringL1Sync: boolean | undefined;
|
|
27
28
|
maxAllowedEthClientDriftSeconds: number | undefined;
|
|
28
29
|
ethereumAllowNoDebugHosts: boolean | undefined;
|
|
30
|
+
skipHistoricalLogsCheck: boolean | undefined;
|
|
29
31
|
};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUEyQixNQUFNLGtDQUFrQyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QixNQUFNLHdCQUF3QixDQUFDO0FBRTNGLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssY0FBYyxFQUdwQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsR0FDakQsY0FBYyxHQUNkLGlCQUFpQixHQUNqQixjQUFjLEdBQ2QsZ0JBQWdCLEdBQ2hCLFdBQVcsQ0FBQztBQUVkLGVBQU8sTUFBTSxzQkFBc0IsRUFBRSxrQkFBa0IsQ0FBQyxjQUFjLENBNERyRSxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILHdCQUFnQix3QkFBd0IsSUFBSSxjQUFjLENBRXpEO0FBRUQsZ0ZBQWdGO0FBQ2hGLHdCQUFnQixpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQzs7Ozs7Ozs7RUFVaEUifQ==
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,wBAAwB,CAAC;AAE3F,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,wBAAwB,CAAC;AAE3F,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EAGpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,sBAAsB,GACjD,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,WAAW,CAAC;AAEd,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CA4DrE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;;;;;;;;EAUhE"}
|
package/dest/config.js
CHANGED
|
@@ -2,7 +2,7 @@ import { blobClientConfigMapping } from '@aztec/blob-client/client/config';
|
|
|
2
2
|
import { l1ContractsConfigMappings } from '@aztec/ethereum/config';
|
|
3
3
|
import { l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
|
|
4
4
|
import { l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
|
|
5
|
-
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
5
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
6
6
|
import { chainConfigMappings, pipelineConfigMappings } from '@aztec/stdlib/config';
|
|
7
7
|
export const archiverConfigMappings = {
|
|
8
8
|
...blobClientConfigMapping,
|
|
@@ -24,13 +24,17 @@ export const archiverConfigMappings = {
|
|
|
24
24
|
},
|
|
25
25
|
archiverStoreMapSizeKb: {
|
|
26
26
|
env: 'ARCHIVER_STORE_MAP_SIZE_KB',
|
|
27
|
-
|
|
27
|
+
...optionalNumberConfigHelper(),
|
|
28
28
|
description: 'The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKb.'
|
|
29
29
|
},
|
|
30
30
|
skipValidateCheckpointAttestations: {
|
|
31
31
|
description: 'Skip validating checkpoint attestations (for testing purposes only)',
|
|
32
32
|
...booleanConfigHelper(false)
|
|
33
33
|
},
|
|
34
|
+
skipPromoteProposedCheckpointDuringL1Sync: {
|
|
35
|
+
description: 'Skip promoting proposed checkpoints during L1 sync (for testing purposes only)',
|
|
36
|
+
...booleanConfigHelper(false)
|
|
37
|
+
},
|
|
34
38
|
maxAllowedEthClientDriftSeconds: {
|
|
35
39
|
env: 'MAX_ALLOWED_ETH_CLIENT_DRIFT_SECONDS',
|
|
36
40
|
description: 'Maximum allowed drift in seconds between the Ethereum client and current time.',
|
|
@@ -41,6 +45,11 @@ export const archiverConfigMappings = {
|
|
|
41
45
|
description: 'Whether to allow starting the archiver without debug/trace method support on Ethereum hosts',
|
|
42
46
|
...booleanConfigHelper(true)
|
|
43
47
|
},
|
|
48
|
+
archiverSkipHistoricalLogsCheck: {
|
|
49
|
+
env: 'ARCHIVER_SKIP_HISTORICAL_LOGS_CHECK',
|
|
50
|
+
description: 'Skip the startup check that probes the L1 RPC for historical Rollup contract logs. ' + 'Set to true to bypass the check when the connected RPC node is known to prune old logs.',
|
|
51
|
+
...booleanConfigHelper(false)
|
|
52
|
+
},
|
|
44
53
|
...chainConfigMappings,
|
|
45
54
|
...l1ReaderConfigMappings,
|
|
46
55
|
viemPollingIntervalMS: {
|
|
@@ -66,7 +75,9 @@ export const archiverConfigMappings = {
|
|
|
66
75
|
pollingIntervalMs: config.archiverPollingIntervalMS,
|
|
67
76
|
batchSize: config.archiverBatchSize,
|
|
68
77
|
skipValidateCheckpointAttestations: config.skipValidateCheckpointAttestations,
|
|
78
|
+
skipPromoteProposedCheckpointDuringL1Sync: config.skipPromoteProposedCheckpointDuringL1Sync,
|
|
69
79
|
maxAllowedEthClientDriftSeconds: config.maxAllowedEthClientDriftSeconds,
|
|
70
|
-
ethereumAllowNoDebugHosts: config.ethereumAllowNoDebugHosts
|
|
80
|
+
ethereumAllowNoDebugHosts: config.ethereumAllowNoDebugHosts,
|
|
81
|
+
skipHistoricalLogsCheck: config.archiverSkipHistoricalLogsCheck
|
|
71
82
|
};
|
|
72
83
|
}
|
package/dest/errors.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { Fr } from '@aztec/foundation/schemas';
|
|
2
3
|
export declare class NoBlobBodiesFoundError extends Error {
|
|
3
4
|
constructor(l2BlockNum: number);
|
|
@@ -10,8 +11,11 @@ export declare class InitialCheckpointNumberNotSequentialError extends Error {
|
|
|
10
11
|
readonly previousCheckpointNumber: number | undefined;
|
|
11
12
|
constructor(newCheckpointNumber: number, previousCheckpointNumber: number | undefined);
|
|
12
13
|
}
|
|
14
|
+
export declare class BlockCheckpointNumberNotSequentialError extends Error {
|
|
15
|
+
constructor(blockNumber: BlockNumber, blockCheckpointNumber: CheckpointNumber, previous: CheckpointNumber | undefined);
|
|
16
|
+
}
|
|
13
17
|
export declare class CheckpointNumberNotSequentialError extends Error {
|
|
14
|
-
constructor(newCheckpointNumber:
|
|
18
|
+
constructor(newCheckpointNumber: CheckpointNumber, previous: CheckpointNumber | undefined);
|
|
15
19
|
}
|
|
16
20
|
export declare class BlockIndexNotSequentialError extends Error {
|
|
17
21
|
constructor(newBlockIndex: number, previousBlockIndex: number | undefined);
|
|
@@ -50,11 +54,34 @@ export declare class ProposedCheckpointStaleError extends Error {
|
|
|
50
54
|
readonly currentProposedNumber: number;
|
|
51
55
|
constructor(proposedCheckpointNumber: number, currentProposedNumber: number);
|
|
52
56
|
}
|
|
53
|
-
/** Thrown when a proposed checkpoint number is not the expected
|
|
57
|
+
/** Thrown when a proposed checkpoint number is not the expected latestTip + 1. */
|
|
54
58
|
export declare class ProposedCheckpointNotSequentialError extends Error {
|
|
55
59
|
readonly proposedCheckpointNumber: number;
|
|
56
|
-
readonly
|
|
57
|
-
constructor(proposedCheckpointNumber: number,
|
|
60
|
+
readonly latestTipNumber: number;
|
|
61
|
+
constructor(proposedCheckpointNumber: number, latestTipNumber: number);
|
|
62
|
+
}
|
|
63
|
+
/** Thrown when a proposed checkpoint or block L2 slot has already expired on L1. */
|
|
64
|
+
export declare class BlockOrCheckpointSlotExpiredError extends Error {
|
|
65
|
+
readonly slot: number;
|
|
66
|
+
readonly nextSlotStart: bigint;
|
|
67
|
+
readonly l1TimestampSynced: bigint | undefined;
|
|
68
|
+
constructor(slot: number, nextSlotStart: bigint, l1TimestampSynced: bigint | undefined);
|
|
69
|
+
}
|
|
70
|
+
/** Thrown when attempting to promote a proposed checkpoint but no proposed checkpoint exists in the store. */
|
|
71
|
+
export declare class NoProposedCheckpointToPromoteError extends Error {
|
|
72
|
+
constructor();
|
|
73
|
+
}
|
|
74
|
+
/** Thrown when the archive root of the proposed checkpoint does not match the expected one. */
|
|
75
|
+
export declare class ProposedCheckpointArchiveRootMismatchError extends Error {
|
|
76
|
+
readonly expectedArchiveRoot: Fr;
|
|
77
|
+
readonly actualArchiveRoot: Fr;
|
|
78
|
+
constructor(expectedArchiveRoot: Fr, actualArchiveRoot: Fr);
|
|
79
|
+
}
|
|
80
|
+
/** Thrown when the proposed checkpoint does not directly follow the latest confirmed checkpoint. */
|
|
81
|
+
export declare class ProposedCheckpointPromotionNotSequentialError extends Error {
|
|
82
|
+
readonly proposedCheckpointNumber: number;
|
|
83
|
+
readonly latestCheckpointNumber: number;
|
|
84
|
+
constructor(proposedCheckpointNumber: number, latestCheckpointNumber: number);
|
|
58
85
|
}
|
|
59
86
|
/** Thrown when a proposed block conflicts with an already checkpointed block (different content). */
|
|
60
87
|
export declare class CannotOverwriteCheckpointedBlockError extends Error {
|
|
@@ -62,4 +89,4 @@ export declare class CannotOverwriteCheckpointedBlockError extends Error {
|
|
|
62
89
|
readonly lastCheckpointedBlock: number;
|
|
63
90
|
constructor(blockNumber: number, lastCheckpointedBlock: number);
|
|
64
91
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBELHFCQUFhLHNCQUF1QixTQUFRLEtBQUs7SUFDL0MsWUFBWSxVQUFVLEVBQUUsTUFBTSxFQUc3QjtDQUNGO0FBRUQscUJBQWEsNkJBQThCLFNBQVEsS0FBSztJQUN0RCxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBRy9EO0NBQ0Y7QUFFRCxxQkFBYSx5Q0FBMEMsU0FBUSxLQUFLO2FBRWhELG1CQUFtQixFQUFFLE1BQU07YUFDM0Isd0JBQXdCLEVBQUUsTUFBTSxHQUFHLFNBQVM7SUFGOUQsWUFDa0IsbUJBQW1CLEVBQUUsTUFBTSxFQUMzQix3QkFBd0IsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQVE3RDtDQUNGO0FBRUQscUJBQWEsdUNBQXdDLFNBQVEsS0FBSztJQUNoRSxZQUNFLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLHFCQUFxQixFQUFFLGdCQUFnQixFQUN2QyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsU0FBUyxFQU12QztDQUNGO0FBRUQscUJBQWEsa0NBQW1DLFNBQVEsS0FBSztJQUMzRCxZQUFZLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxTQUFTLEVBS3hGO0NBQ0Y7QUFFRCxxQkFBYSw0QkFBNkIsU0FBUSxLQUFLO0lBQ3JELFlBQVksYUFBYSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUt4RTtDQUNGO0FBRUQscUJBQWEsOEJBQStCLFNBQVEsS0FBSztJQUN2RCxZQUNFLGNBQWMsRUFBRSxN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
|
package/dest/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAEpD,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|