@aztec/archiver 0.0.1-commit.2f68f620 → 0.0.1-commit.321f6a9
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 +22 -4
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +79 -35
- package/dest/config.d.ts +5 -4
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +27 -5
- package/dest/factory.d.ts +8 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +37 -3
- package/dest/l1/calldata_retriever.d.ts +8 -1
- package/dest/l1/calldata_retriever.d.ts.map +1 -1
- package/dest/l1/calldata_retriever.js +7 -6
- package/dest/l1/data_retrieval.d.ts +7 -2
- package/dest/l1/data_retrieval.d.ts.map +1 -1
- package/dest/modules/contract_data_source_adapter.d.ts +2 -2
- package/dest/modules/contract_data_source_adapter.d.ts.map +1 -1
- package/dest/modules/contract_data_source_adapter.js +1 -9
- package/dest/modules/data_source_base.d.ts +2 -3
- package/dest/modules/data_source_base.d.ts.map +1 -1
- package/dest/modules/data_source_base.js +9 -35
- package/dest/modules/data_store_updater.d.ts +1 -1
- package/dest/modules/data_store_updater.d.ts.map +1 -1
- package/dest/modules/data_store_updater.js +4 -3
- package/dest/modules/instrumentation.d.ts +9 -1
- package/dest/modules/instrumentation.d.ts.map +1 -1
- package/dest/modules/instrumentation.js +23 -2
- package/dest/modules/l1_synchronizer.d.ts +3 -3
- package/dest/modules/l1_synchronizer.d.ts.map +1 -1
- package/dest/modules/l1_synchronizer.js +78 -41
- package/dest/modules/validation.d.ts +29 -7
- package/dest/modules/validation.d.ts.map +1 -1
- package/dest/modules/validation.js +31 -13
- package/dest/store/block_store.d.ts +20 -11
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +43 -25
- package/dest/store/contract_class_store.d.ts +1 -1
- package/dest/store/contract_class_store.d.ts.map +1 -1
- package/dest/store/contract_class_store.js +19 -1
- package/dest/store/contract_instance_store.d.ts +1 -1
- package/dest/store/contract_instance_store.d.ts.map +1 -1
- package/dest/store/contract_instance_store.js +18 -1
- 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 +3 -3
- package/dest/store/log_store_codec.d.ts +9 -1
- package/dest/store/log_store_codec.d.ts.map +1 -1
- package/dest/store/log_store_codec.js +9 -0
- package/dest/test/fake_l1_state.js +3 -3
- 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_l1_to_l2_message_source.js +1 -2
- package/dest/test/mock_l2_block_source.d.ts +1 -4
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +8 -22
- package/dest/test/mock_structs.d.ts +1 -1
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +2 -2
- package/dest/test/noop_l1_archiver.d.ts +7 -3
- package/dest/test/noop_l1_archiver.d.ts.map +1 -1
- package/dest/test/noop_l1_archiver.js +9 -6
- package/package.json +14 -13
- package/src/archiver.ts +107 -41
- package/src/config.ts +34 -9
- package/src/factory.ts +46 -4
- package/src/l1/calldata_retriever.ts +13 -6
- package/src/l1/data_retrieval.ts +8 -1
- package/src/modules/contract_data_source_adapter.ts +1 -10
- package/src/modules/data_source_base.ts +9 -38
- package/src/modules/data_store_updater.ts +4 -3
- package/src/modules/instrumentation.ts +15 -2
- package/src/modules/l1_synchronizer.ts +120 -57
- package/src/modules/validation.ts +71 -15
- package/src/store/block_store.ts +42 -31
- package/src/store/contract_class_store.ts +19 -1
- package/src/store/contract_instance_store.ts +18 -1
- package/src/store/log_store.ts +3 -2
- package/src/store/log_store_codec.ts +11 -0
- package/src/test/fake_l1_state.ts +3 -3
- package/src/test/mock_l1_to_l2_message_source.ts +0 -1
- package/src/test/mock_l2_block_source.ts +8 -22
- package/src/test/mock_structs.ts +5 -2
- package/src/test/noop_l1_archiver.ts +15 -5
|
@@ -85,4 +85,4 @@ export interface MockCheckpointWithLogsOptions {
|
|
|
85
85
|
}
|
|
86
86
|
/** Creates a checkpoint with specified logs on each tx effect. */
|
|
87
87
|
export declare function makeCheckpointWithLogs(blockNumber: number, options?: MockCheckpointWithLogsOptions): Promise<PublishedCheckpoint>;
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBd0IsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUF5QixjQUFjLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFbkYsd0JBQWdCLGdCQUFnQixDQUM5QixtQkFBbUIsV0FBZ0IsRUFDbkMsU0FBUyxHQUFFLE9BQU8sQ0FBQyxZQUFZLENBQU0sR0FDcEMsWUFBWSxDQWdCZDtBQUVELHdCQUFnQixpQkFBaUIsQ0FDL0IsVUFBVSxFQUFFLE1BQU0sRUFDbEIsSUFBSSxHQUFFO0lBQ0osV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3ZCLHVCQUF1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0MscUJBQXFCLENBQUMsRUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"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"}
|
|
@@ -147,13 +147,13 @@ export function makeInboxMessages(totalCount, opts = {}) {
|
|
|
147
147
|
/** Creates a deterministic Tag for public log testing. */ export function makePublicLogTag(blockNumber, txIndex, logIndex) {
|
|
148
148
|
return new Tag(blockNumber === 1 && txIndex === 0 && logIndex === 0 ? Fr.ZERO : new Fr((blockNumber * 100 + txIndex * 10 + logIndex) * 123));
|
|
149
149
|
}
|
|
150
|
-
/** Creates a PublicLog with fields derived from the tag. */ export function makePublicLog(tag, contractAddress = AztecAddress.
|
|
150
|
+
/** Creates a PublicLog with fields derived from the tag. */ export function makePublicLog(tag, contractAddress = AztecAddress.fromNumberUnsafe(543254)) {
|
|
151
151
|
return PublicLog.from({
|
|
152
152
|
contractAddress,
|
|
153
153
|
fields: new Array(10).fill(null).map((_, i)=>!i ? tag.value : new Fr(tag.value.toBigInt() + BigInt(i)))
|
|
154
154
|
});
|
|
155
155
|
}
|
|
156
|
-
/** Creates multiple public logs for a transaction. */ export function makePublicLogs(blockNumber, txIndex, numLogsPerTx, contractAddress = AztecAddress.
|
|
156
|
+
/** Creates multiple public logs for a transaction. */ export function makePublicLogs(blockNumber, txIndex, numLogsPerTx, contractAddress = AztecAddress.fromNumberUnsafe(543254)) {
|
|
157
157
|
return times(numLogsPerTx, (logIndex)=>{
|
|
158
158
|
const tag = makePublicLogTag(blockNumber, txIndex, logIndex);
|
|
159
159
|
return makePublicLog(tag, contractAddress);
|
|
@@ -9,6 +9,9 @@ import { Archiver } from '../archiver.js';
|
|
|
9
9
|
import { ArchiverInstrumentation } from '../modules/instrumentation.js';
|
|
10
10
|
import type { ArchiverDataStores } from '../store/data_stores.js';
|
|
11
11
|
import { L2TipsCache } from '../store/l2_tips_cache.js';
|
|
12
|
+
type NoopL1ArchiverConfigOverrides = Partial<{
|
|
13
|
+
skipOrphanProposedBlockPruning: boolean;
|
|
14
|
+
}>;
|
|
12
15
|
/**
|
|
13
16
|
* Archiver with mocked L1 connectivity for testing.
|
|
14
17
|
* Uses mock L1 clients and a noop synchronizer, enabling tests that
|
|
@@ -17,7 +20,7 @@ import { L2TipsCache } from '../store/l2_tips_cache.js';
|
|
|
17
20
|
export declare class NoopL1Archiver extends Archiver {
|
|
18
21
|
constructor(dataStores: ArchiverDataStores, l1Constants: L1RollupConstants & {
|
|
19
22
|
genesisArchiveRoot: Fr;
|
|
20
|
-
}, instrumentation: ArchiverInstrumentation, initialHeader: BlockHeader, initialBlockHash: BlockHash, l2TipsCache: L2TipsCache, dateProvider?: DateProvider);
|
|
23
|
+
}, instrumentation: ArchiverInstrumentation, initialHeader: BlockHeader, initialBlockHash: BlockHash, l2TipsCache: L2TipsCache, dateProvider?: DateProvider, configOverrides?: NoopL1ArchiverConfigOverrides);
|
|
21
24
|
/** Override start to skip L1 validation checks. */
|
|
22
25
|
start(_blockUntilSynced?: boolean): Promise<void>;
|
|
23
26
|
/** Always reports as fully synced since there is no real L1 to sync from. */
|
|
@@ -26,5 +29,6 @@ export declare class NoopL1Archiver extends Archiver {
|
|
|
26
29
|
/** Creates an archiver with mocked L1 connectivity for testing. */
|
|
27
30
|
export declare function createNoopL1Archiver(dataStores: ArchiverDataStores, l1Constants: L1RollupConstants & {
|
|
28
31
|
genesisArchiveRoot: Fr;
|
|
29
|
-
}, telemetry: TelemetryClient | undefined, initialHeader: BlockHeader, dateProvider?: DateProvider): Promise<NoopL1Archiver>;
|
|
30
|
-
|
|
32
|
+
}, telemetry: TelemetryClient | undefined, initialHeader: BlockHeader, dateProvider?: DateProvider, configOverrides?: NoopL1ArchiverConfigOverrides): Promise<NoopL1Archiver>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcF9sMV9hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9vcF9sMV9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBbUIsU0FBUyxFQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQW1DLE1BQU0seUJBQXlCLENBQUM7QUFLaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELEtBQUssNkJBQTZCLEdBQUcsT0FBTyxDQUFDO0lBQzNDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQztDQUN6QyxDQUFDLENBQUM7QUF5Qkg7Ozs7R0FJRztBQUNILHFCQUFhLGNBQWUsU0FBUSxRQUFRO0lBQzFDLFlBQ0UsVUFBVSxFQUFFLGtCQUFrQixFQUM5QixXQUFXLEVBQUUsaUJBQWlCLEdBQUc7UUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUE7S0FBRSxFQUMzRCxlQUFlLEVBQUUsdUJBQXVCLEVBQ3hDLGFBQWEsRUFBRSxXQUFXLEVBQzFCLGdCQUFnQixFQUFFLFNBQVMsRUFDM0IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsWUFBWSxHQUFFLFlBQWlDLEVBQy9DLGVBQWUsR0FBRSw2QkFBa0MsRUFvRHBEO0lBRUQsbURBQW1EO0lBQ25DLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0lBRUQsNkVBQTZFO0lBQzdELHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRXZFO0NBQ0Y7QUFFRCxtRUFBbUU7QUFDbkUsd0JBQXNCLG9CQUFvQixDQUN4QyxVQUFVLEVBQUUsa0JBQWtCLEVBQzlCLFdBQVcsRUFBRSxpQkFBaUIsR0FBRztJQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtDQUFFLEVBQzNELFNBQVMsNkJBQXdDLEVBQ2pELGFBQWEsRUFBRSxXQUFXLEVBQzFCLFlBQVksQ0FBQyxFQUFFLFlBQVksRUFDM0IsZUFBZSxDQUFDLEVBQUUsNkJBQTZCLEdBQzlDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FrQnpCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop_l1_archiver.d.ts","sourceRoot":"","sources":["../../src/test/noop_l1_archiver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAmB,SAAS,
|
|
1
|
+
{"version":3,"file":"noop_l1_archiver.d.ts","sourceRoot":"","sources":["../../src/test/noop_l1_archiver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAmB,SAAS,EAAW,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,yBAAyB,CAAC;AAKhG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,KAAK,6BAA6B,GAAG,OAAO,CAAC;IAC3C,8BAA8B,EAAE,OAAO,CAAC;CACzC,CAAC,CAAC;AAyBH;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YACE,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,EAC3D,eAAe,EAAE,uBAAuB,EACxC,aAAa,EAAE,WAAW,EAC1B,gBAAgB,EAAE,SAAS,EAC3B,WAAW,EAAE,WAAW,EACxB,YAAY,GAAE,YAAiC,EAC/C,eAAe,GAAE,6BAAkC,EAoDpD;IAED,mDAAmD;IACnC,KAAK,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;IAED,6EAA6E;IAC7D,qBAAqB,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEvE;CACF;AAED,mEAAmE;AACnE,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;IAAE,kBAAkB,EAAE,EAAE,CAAA;CAAE,EAC3D,SAAS,6BAAwC,EACjD,aAAa,EAAE,WAAW,EAC1B,YAAY,CAAC,EAAE,YAAY,EAC3B,eAAe,CAAC,EAAE,6BAA6B,GAC9C,OAAO,CAAC,cAAc,CAAC,CAkBzB"}
|
|
@@ -24,7 +24,7 @@ import { L2TipsCache } from '../store/l2_tips_cache.js';
|
|
|
24
24
|
return Promise.resolve();
|
|
25
25
|
}
|
|
26
26
|
syncFromL1(_initialSyncComplete) {
|
|
27
|
-
return Promise.resolve();
|
|
27
|
+
return Promise.resolve([]);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
@@ -32,7 +32,7 @@ import { L2TipsCache } from '../store/l2_tips_cache.js';
|
|
|
32
32
|
* Uses mock L1 clients and a noop synchronizer, enabling tests that
|
|
33
33
|
* don't require real Ethereum connectivity.
|
|
34
34
|
*/ export class NoopL1Archiver extends Archiver {
|
|
35
|
-
constructor(dataStores, l1Constants, instrumentation, initialHeader, initialBlockHash, l2TipsCache, dateProvider = new DateProvider()){
|
|
35
|
+
constructor(dataStores, l1Constants, instrumentation, initialHeader, initialBlockHash, l2TipsCache, dateProvider = new DateProvider(), configOverrides = {}){
|
|
36
36
|
// Create mocks for L1 clients
|
|
37
37
|
const publicClient = mock();
|
|
38
38
|
const debugClient = mock();
|
|
@@ -57,8 +57,11 @@ import { L2TipsCache } from '../store/l2_tips_cache.js';
|
|
|
57
57
|
maxAllowedEthClientDriftSeconds: 300,
|
|
58
58
|
ethereumAllowNoDebugHosts: true,
|
|
59
59
|
skipHistoricalLogsCheck: true,
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
checkpointProposalSyncGrace: 4,
|
|
61
|
+
orphanPruneNoProposalTolerance: 1,
|
|
62
|
+
skipOrphanProposedBlockPruning: true,
|
|
63
|
+
blockDuration: 2,
|
|
64
|
+
...configOverrides
|
|
62
65
|
}, blobClient, instrumentation, {
|
|
63
66
|
...l1Constants,
|
|
64
67
|
l1StartBlockHash: Buffer32.random()
|
|
@@ -73,7 +76,7 @@ import { L2TipsCache } from '../store/l2_tips_cache.js';
|
|
|
73
76
|
return Promise.resolve(SlotNumber(Number.MAX_SAFE_INTEGER));
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
|
-
/** Creates an archiver with mocked L1 connectivity for testing. */ export async function createNoopL1Archiver(dataStores, l1Constants, telemetry = getTelemetryClient(), initialHeader, dateProvider) {
|
|
79
|
+
/** Creates an archiver with mocked L1 connectivity for testing. */ export async function createNoopL1Archiver(dataStores, l1Constants, telemetry = getTelemetryClient(), initialHeader, dateProvider, configOverrides) {
|
|
77
80
|
const instrumentation = await ArchiverInstrumentation.new(telemetry, ()=>dataStores.db.estimateSize());
|
|
78
81
|
// Mirror the production factory: precompute the dynamic genesis block hash from the injected
|
|
79
82
|
// initial header so `L2TipsCache` reports the correct tip hash at block 0. Without this, the
|
|
@@ -81,5 +84,5 @@ import { L2TipsCache } from '../store/l2_tips_cache.js';
|
|
|
81
84
|
// with default empty genesis.
|
|
82
85
|
const initialBlockHash = await initialHeader.hash();
|
|
83
86
|
const l2TipsCache = new L2TipsCache(dataStores.blocks, initialBlockHash);
|
|
84
|
-
return new NoopL1Archiver(dataStores, l1Constants, instrumentation, initialHeader, initialBlockHash, l2TipsCache, dateProvider);
|
|
87
|
+
return new NoopL1Archiver(dataStores, l1Constants, instrumentation, initialHeader, initialBlockHash, l2TipsCache, dateProvider, configOverrides);
|
|
85
88
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.321f6a9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -65,18 +65,19 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
69
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
70
|
-
"@aztec/constants": "0.0.1-commit.
|
|
71
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
72
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
73
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
74
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
75
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
77
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
78
|
-
"@aztec/
|
|
79
|
-
"@aztec/
|
|
68
|
+
"@aztec/blob-client": "0.0.1-commit.321f6a9",
|
|
69
|
+
"@aztec/blob-lib": "0.0.1-commit.321f6a9",
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.321f6a9",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.321f6a9",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.321f6a9",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.321f6a9",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.321f6a9",
|
|
75
|
+
"@aztec/l1-artifacts": "0.0.1-commit.321f6a9",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.321f6a9",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.321f6a9",
|
|
78
|
+
"@aztec/standard-contracts": "0.0.1-commit.321f6a9",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.321f6a9",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.321f6a9",
|
|
80
81
|
"lodash.groupby": "^4.6.0",
|
|
81
82
|
"lodash.omit": "^4.5.0",
|
|
82
83
|
"tslib": "^2.5.0",
|
package/src/archiver.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
2
|
-
import { EpochCache
|
|
2
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
3
3
|
import { BlockTagTooOldError, OutboxContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
4
4
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
5
5
|
import type { ViemPublicClient, ViemPublicDebugClient } from '@aztec/ethereum/types';
|
|
6
6
|
import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
7
7
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
8
|
-
import { merge
|
|
8
|
+
import { merge } from '@aztec/foundation/collection';
|
|
9
9
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
10
10
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
11
11
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
L2BlockSourceEvents,
|
|
21
21
|
type L2Tips,
|
|
22
22
|
type ValidateCheckpointResult,
|
|
23
|
+
l2TipsEqual,
|
|
23
24
|
} from '@aztec/stdlib/block';
|
|
24
25
|
import { type ProposedCheckpointInput, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
25
26
|
import {
|
|
@@ -31,6 +32,7 @@ import {
|
|
|
31
32
|
getTimestampRangeForEpoch,
|
|
32
33
|
} from '@aztec/stdlib/epoch-helpers';
|
|
33
34
|
import type { L2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
35
|
+
import { ConsensusTimetable } from '@aztec/stdlib/timetable';
|
|
34
36
|
import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
35
37
|
import { type TelemetryClient, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
36
38
|
|
|
@@ -72,6 +74,16 @@ export type ArchiverDeps = {
|
|
|
72
74
|
dateProvider?: DateProvider;
|
|
73
75
|
};
|
|
74
76
|
|
|
77
|
+
/** Minimal dependency for observing whether a checkpoint proposal was received for a slot. */
|
|
78
|
+
export type CheckpointProposalPresence = {
|
|
79
|
+
/** Returns true when a checkpoint proposal for `slot` has been retained locally. */
|
|
80
|
+
hasCheckpointProposalForSlot(slot: SlotNumber): Promise<boolean>;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const noCheckpointProposalPresence: CheckpointProposalPresence = {
|
|
84
|
+
hasCheckpointProposalForSlot: () => Promise.resolve(false),
|
|
85
|
+
};
|
|
86
|
+
|
|
75
87
|
/**
|
|
76
88
|
* Pulls checkpoints in a non-blocking manner and provides interface for their retrieval.
|
|
77
89
|
* Responsible for handling robust L1 polling so that other components do not need to
|
|
@@ -102,6 +114,9 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
102
114
|
/** In-memory cache for L2 chain tips. */
|
|
103
115
|
private readonly l2TipsCache: L2TipsCache;
|
|
104
116
|
|
|
117
|
+
/** Consensus timing model used for proposed-checkpoint arrival expectations. */
|
|
118
|
+
private readonly timetable: ConsensusTimetable;
|
|
119
|
+
|
|
105
120
|
public readonly tracer: Tracer;
|
|
106
121
|
|
|
107
122
|
private readonly instrumentation: ArchiverInstrumentation;
|
|
@@ -146,8 +161,10 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
146
161
|
maxAllowedEthClientDriftSeconds: number;
|
|
147
162
|
ethereumAllowNoDebugHosts?: boolean;
|
|
148
163
|
skipHistoricalLogsCheck?: boolean;
|
|
149
|
-
|
|
150
|
-
|
|
164
|
+
checkpointProposalSyncGrace: number;
|
|
165
|
+
orphanPruneNoProposalTolerance: number;
|
|
166
|
+
skipOrphanProposedBlockPruning: boolean;
|
|
167
|
+
blockDuration: number;
|
|
151
168
|
},
|
|
152
169
|
private readonly blobClient: BlobClientInterface,
|
|
153
170
|
instrumentation: ArchiverInstrumentation,
|
|
@@ -161,6 +178,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
161
178
|
initialBlockHash: BlockHash,
|
|
162
179
|
l2TipsCache: L2TipsCache,
|
|
163
180
|
private readonly dateProvider: DateProvider,
|
|
181
|
+
private checkpointProposalPresence: CheckpointProposalPresence = noCheckpointProposalPresence,
|
|
164
182
|
private readonly log: Logger = createLogger('archiver'),
|
|
165
183
|
) {
|
|
166
184
|
super(dataStores, l1Constants, initialHeader, initialBlockHash, l1Constants.genesisArchiveRoot);
|
|
@@ -171,6 +189,11 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
171
189
|
this.synchronizer = synchronizer;
|
|
172
190
|
this.events = events;
|
|
173
191
|
this.l2TipsCache = l2TipsCache;
|
|
192
|
+
this.timetable = new ConsensusTimetable({
|
|
193
|
+
l1Constants,
|
|
194
|
+
blockDuration: this.config.blockDuration,
|
|
195
|
+
checkpointProposalSyncGrace: this.config.checkpointProposalSyncGrace,
|
|
196
|
+
});
|
|
174
197
|
this.updater = new ArchiverDataStoreUpdater(this.dataStores, this.l2TipsCache, {
|
|
175
198
|
rollupManaLimit: l1Constants.rollupManaLimit,
|
|
176
199
|
});
|
|
@@ -271,6 +294,11 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
271
294
|
return this.runningPromise.trigger();
|
|
272
295
|
}
|
|
273
296
|
|
|
297
|
+
/** Sets the proposal-presence provider used by orphan proposed-block pruning. */
|
|
298
|
+
public setCheckpointProposalPresence(checkpointProposalPresence: CheckpointProposalPresence): void {
|
|
299
|
+
this.checkpointProposalPresence = checkpointProposalPresence;
|
|
300
|
+
}
|
|
301
|
+
|
|
274
302
|
public trySyncImmediate() {
|
|
275
303
|
try {
|
|
276
304
|
return this.syncImmediate();
|
|
@@ -312,9 +340,10 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
312
340
|
* Called at the beginning of each sync iteration.
|
|
313
341
|
* Items are processed in the order they were queued.
|
|
314
342
|
*/
|
|
315
|
-
private async processInboundQueue(): Promise<
|
|
343
|
+
private async processInboundQueue(): Promise<L2Block[]> {
|
|
344
|
+
const blocksAdded: L2Block[] = [];
|
|
316
345
|
if (this.inboundQueue.length === 0) {
|
|
317
|
-
return;
|
|
346
|
+
return blocksAdded;
|
|
318
347
|
}
|
|
319
348
|
|
|
320
349
|
// Take all items from the queue
|
|
@@ -351,6 +380,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
351
380
|
if (type === 'block') {
|
|
352
381
|
const [durationMs] = await elapsed(() => this.updater.addProposedBlock(item.block));
|
|
353
382
|
this.instrumentation.processNewProposedBlock(durationMs, item.block);
|
|
383
|
+
blocksAdded.push(item.block);
|
|
354
384
|
} else {
|
|
355
385
|
await this.updater.addProposedCheckpoint(item.checkpoint);
|
|
356
386
|
}
|
|
@@ -359,6 +389,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
359
389
|
} catch (err: any) {
|
|
360
390
|
if (err instanceof BlockAlreadyCheckpointedError) {
|
|
361
391
|
this.log.debug(`Proposed block ${itemNumber} matches already checkpointed block, ignoring late proposal`);
|
|
392
|
+
// A late proposal that matches an already-checkpointed block adds nothing new, so it is not appended.
|
|
362
393
|
resolve();
|
|
363
394
|
continue;
|
|
364
395
|
}
|
|
@@ -369,6 +400,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
369
400
|
reject(err);
|
|
370
401
|
}
|
|
371
402
|
}
|
|
403
|
+
return blocksAdded;
|
|
372
404
|
}
|
|
373
405
|
|
|
374
406
|
public waitForInitialSync() {
|
|
@@ -380,12 +412,31 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
380
412
|
*/
|
|
381
413
|
@trackSpan('Archiver.sync')
|
|
382
414
|
private async sync() {
|
|
415
|
+
// Capture the tips before any mutation so the aggregate event can report what moved this pass.
|
|
416
|
+
const fromTips = await this.getL2Tips();
|
|
417
|
+
|
|
418
|
+
// Accumulate the blocks added across the pass's sub-steps (queued proposals + L1 checkpoint payloads).
|
|
419
|
+
const blocksAdded: L2Block[] = [];
|
|
383
420
|
// Process any queued blocks first, before doing L1 sync
|
|
384
|
-
await this.processInboundQueue();
|
|
421
|
+
blocksAdded.push(...(await this.processInboundQueue()));
|
|
385
422
|
// Now perform L1 sync
|
|
386
|
-
await this.syncFromL1();
|
|
387
|
-
// Prune proposed blocks with no corresponding proposed checkpoint
|
|
423
|
+
blocksAdded.push(...(await this.syncFromL1()));
|
|
424
|
+
// Prune proposed blocks with no corresponding proposed checkpoint after the appropriate materialization deadline.
|
|
388
425
|
await this.pruneOrphanProposedBlocks();
|
|
426
|
+
|
|
427
|
+
// Emit a single aggregate update event after all pass work has committed and the tips cache has refreshed,
|
|
428
|
+
// so `toTips` and the source state observed by listeners are consistent with the event payload. The pass
|
|
429
|
+
// mutated state if the tips moved (added blocks, a prune, or a thin tier movement) or blocks were added; a
|
|
430
|
+
// fully-synced no-op pass emits nothing.
|
|
431
|
+
const toTips = await this.getL2Tips();
|
|
432
|
+
if (!l2TipsEqual(fromTips, toTips) || blocksAdded.length > 0) {
|
|
433
|
+
this.events.emit(L2BlockSourceEvents.L2BlockSourceUpdated, {
|
|
434
|
+
type: L2BlockSourceEvents.L2BlockSourceUpdated,
|
|
435
|
+
fromTips,
|
|
436
|
+
toTips,
|
|
437
|
+
blocksAdded,
|
|
438
|
+
});
|
|
439
|
+
}
|
|
389
440
|
}
|
|
390
441
|
|
|
391
442
|
/**
|
|
@@ -393,40 +444,38 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
393
444
|
*
|
|
394
445
|
* Under pipelining, a proposer publishes the blocks for a checkpoint (block-only proposals) before
|
|
395
446
|
* assembling and publishing the enclosing proposed checkpoint at the end of the build slot. A node
|
|
396
|
-
* that received those blocks but never the proposed checkpoint is left with an orphan tip it must
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
*
|
|
447
|
+
* that received those blocks but never the proposed checkpoint is left with an orphan tip it must not build on.
|
|
448
|
+
* If no checkpoint proposal was received for the orphan slot, we prune after the receive deadline plus local
|
|
449
|
+
* tolerance. If a checkpoint proposal was received but has not materialized into proposed archiver state,
|
|
450
|
+
* we prune after the consensus materialization deadline.
|
|
400
451
|
*
|
|
401
452
|
* The uncheckpointed suffix is scanned in order. Blocks covered by proposed checkpoints are left in
|
|
402
453
|
* place; the first block not covered by a proposed checkpoint starts the orphan suffix to prune.
|
|
403
454
|
*/
|
|
404
455
|
private async pruneOrphanProposedBlocks(): Promise<void> {
|
|
405
|
-
|
|
406
|
-
// whose enclosing checkpoint never arrived over gossip. The test-only automine sequencer is
|
|
407
|
-
// non-pipelined — it publishes each checkpoint synchronously in the slot it builds — so it
|
|
408
|
-
// never produces orphan proposed blocks. Running the prune there would race its two-step local
|
|
409
|
-
// push (addBlock then addProposedCheckpoint) and delete the block before its checkpoint attaches.
|
|
410
|
-
if (!this.config.enableOrphanProposedBlockPruning) {
|
|
456
|
+
if (this.config.skipOrphanProposedBlockPruning) {
|
|
411
457
|
return;
|
|
412
458
|
}
|
|
413
459
|
const tips = await this.getL2Tips();
|
|
414
460
|
const now = BigInt(this.dateProvider.nowInSeconds());
|
|
415
|
-
|
|
461
|
+
|
|
462
|
+
// Frontier block covered by a proposed (or, falling back, confirmed) checkpoint. Blocks beyond it
|
|
463
|
+
// have no enclosing checkpoint proposal and are the orphan-pruning candidates.
|
|
464
|
+
const proposedCheckpointBlockNumber = await this.stores.blocks.getProposedCheckpointL2BlockNumber();
|
|
416
465
|
|
|
417
466
|
// The proposed tip is a proposed-checkpointed block, so there are no orphan proposed blocks to prune
|
|
418
|
-
if (
|
|
419
|
-
this.log.trace(
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
);
|
|
467
|
+
if (proposedCheckpointBlockNumber === tips.proposed.number) {
|
|
468
|
+
this.log.trace(`No orphan proposed blocks to prune: proposed tip ${tips.proposed.number} is checkpointed`, {
|
|
469
|
+
proposed: tips.proposed,
|
|
470
|
+
proposedCheckpointBlockNumber,
|
|
471
|
+
});
|
|
423
472
|
return;
|
|
424
473
|
}
|
|
425
474
|
|
|
426
475
|
// Load the blocks that are candidates for pruning (ie blocks without a proposed checkpoint covering them)
|
|
427
476
|
const blocksWithoutProposedCheckpoint = await this.stores.blocks.getBlocksData({
|
|
428
|
-
from: BlockNumber(
|
|
429
|
-
limit: tips.proposed.number -
|
|
477
|
+
from: BlockNumber(proposedCheckpointBlockNumber + 1),
|
|
478
|
+
limit: tips.proposed.number - proposedCheckpointBlockNumber,
|
|
430
479
|
});
|
|
431
480
|
|
|
432
481
|
// Iterate through them in order, the first one with a slot that should have received a proposed checkpoint
|
|
@@ -441,15 +490,21 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
441
490
|
}
|
|
442
491
|
lastSlotChecked = blockSlot;
|
|
443
492
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
const
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
493
|
+
const hasCheckpointProposal = await this.checkpointProposalPresence.hasCheckpointProposalForSlot(blockSlot);
|
|
494
|
+
const deadlineType = hasCheckpointProposal ? 'checkpoint-proposal-synced' : 'checkpoint-proposal-received';
|
|
495
|
+
const selectedDeadline = BigInt(
|
|
496
|
+
hasCheckpointProposal
|
|
497
|
+
? this.timetable.getCheckpointProposalSyncedDeadline(blockSlot)
|
|
498
|
+
: Math.ceil(
|
|
499
|
+
this.timetable.getCheckpointProposalReceiveDeadline(blockSlot) +
|
|
500
|
+
this.config.orphanPruneNoProposalTolerance,
|
|
501
|
+
),
|
|
502
|
+
);
|
|
450
503
|
|
|
451
|
-
// If it's not checkpointed
|
|
452
|
-
|
|
504
|
+
// If it's still not checkpointed once strictly past the selected deadline, prune it along with all blocks after
|
|
505
|
+
// it. A proposal may still legitimately arrive or materialize at exactly its deadline, so the tip is only
|
|
506
|
+
// orphaned once that instant has fully elapsed.
|
|
507
|
+
if (now > selectedDeadline) {
|
|
453
508
|
const pruneAfterBlockNumber = BlockNumber(blockNumber - 1);
|
|
454
509
|
this.log.warn(
|
|
455
510
|
`Pruning orphan blocks after block ${pruneAfterBlockNumber}: block at slot ${blockSlot} belongs to ` +
|
|
@@ -459,15 +514,16 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
459
514
|
blockCheckpointNumber: blockData.checkpointNumber,
|
|
460
515
|
blockNumber,
|
|
461
516
|
blockSlot,
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
517
|
+
hasCheckpointProposal,
|
|
518
|
+
deadlineType,
|
|
519
|
+
selectedDeadline,
|
|
465
520
|
now,
|
|
466
521
|
},
|
|
467
522
|
);
|
|
468
523
|
|
|
469
524
|
const prunedBlocks = await this.updater.removeBlocksWithoutProposedCheckpointAfter(pruneAfterBlockNumber);
|
|
470
525
|
if (prunedBlocks.length > 0) {
|
|
526
|
+
this.instrumentation.recordPrune('orphan');
|
|
471
527
|
this.events.emit(L2BlockSourceEvents.L2PruneUncheckpointed, {
|
|
472
528
|
type: L2BlockSourceEvents.L2PruneUncheckpointed,
|
|
473
529
|
slotNumber: blockSlot,
|
|
@@ -478,14 +534,14 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
478
534
|
}
|
|
479
535
|
}
|
|
480
536
|
|
|
481
|
-
this.log.trace('No orphan proposed blocks to prune: all uncheckpointed blocks are still within
|
|
537
|
+
this.log.trace('No orphan proposed blocks to prune: all uncheckpointed blocks are still within deadline', {
|
|
482
538
|
blocksWithoutProposedCheckpoint: blocksWithoutProposedCheckpoint.map(b => b.header.toInspect()),
|
|
483
539
|
});
|
|
484
540
|
}
|
|
485
541
|
|
|
486
|
-
private async syncFromL1() {
|
|
542
|
+
private async syncFromL1(): Promise<L2Block[]> {
|
|
487
543
|
// Delegate to the L1 synchronizer
|
|
488
|
-
await this.synchronizer.syncFromL1(this.initialSyncComplete);
|
|
544
|
+
const blocksAdded = await this.synchronizer.syncFromL1(this.initialSyncComplete);
|
|
489
545
|
|
|
490
546
|
// Check if we've completed initial sync
|
|
491
547
|
const currentL1BlockNumber = this.synchronizer.getL1BlockNumber();
|
|
@@ -502,6 +558,7 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
502
558
|
this.initialSyncPromise.resolve();
|
|
503
559
|
}
|
|
504
560
|
}
|
|
561
|
+
return blocksAdded;
|
|
505
562
|
}
|
|
506
563
|
|
|
507
564
|
/** Resumes the archiver after a stop. */
|
|
@@ -637,6 +694,15 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
|
|
|
637
694
|
return this.updater.removeCheckpointsAfter(checkpointNumber);
|
|
638
695
|
}
|
|
639
696
|
|
|
697
|
+
/**
|
|
698
|
+
* Removes all uncheckpointed blocks strictly after `blockNumber`, along with the proposed checkpoints
|
|
699
|
+
* that referenced them. Used by the AutomineSequencer to undo a local insert whose propose tx failed
|
|
700
|
+
* to land on L1 (no reorg needed — nothing reached L1). Refuses to touch checkpointed blocks.
|
|
701
|
+
*/
|
|
702
|
+
public removeUncheckpointedBlocksAfter(blockNumber: BlockNumber): Promise<L2Block[]> {
|
|
703
|
+
return this.updater.removeUncheckpointedBlocksAfter(blockNumber);
|
|
704
|
+
}
|
|
705
|
+
|
|
640
706
|
/** Used by TXE to add checkpoints directly without syncing from L1. */
|
|
641
707
|
public async addCheckpoints(
|
|
642
708
|
checkpoints: PublishedCheckpoint[],
|
package/src/config.ts
CHANGED
|
@@ -8,8 +8,9 @@ import {
|
|
|
8
8
|
numberConfigHelper,
|
|
9
9
|
optionalNumberConfigHelper,
|
|
10
10
|
} from '@aztec/foundation/config';
|
|
11
|
-
import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
|
|
11
|
+
import { type ChainConfig, type SequencerConfig, chainConfigMappings } from '@aztec/stdlib/config';
|
|
12
12
|
import type { ArchiverSpecificConfig } from '@aztec/stdlib/interfaces/server';
|
|
13
|
+
import { DEFAULT_ORPHAN_PRUNE_NO_PROPOSAL_TOLERANCE } from '@aztec/stdlib/timetable';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* The archiver configuration.
|
|
@@ -22,7 +23,8 @@ export type ArchiverConfig = ArchiverSpecificConfig &
|
|
|
22
23
|
L1ReaderConfig &
|
|
23
24
|
L1ContractsConfig &
|
|
24
25
|
BlobClientConfig &
|
|
25
|
-
ChainConfig
|
|
26
|
+
ChainConfig &
|
|
27
|
+
Pick<SequencerConfig, 'blockDurationMs' | 'checkpointProposalSyncGraceSeconds'>;
|
|
26
28
|
|
|
27
29
|
export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
|
|
28
30
|
...blobClientConfigMapping,
|
|
@@ -41,6 +43,18 @@ export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
|
|
|
41
43
|
...optionalNumberConfigHelper(),
|
|
42
44
|
description: 'The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKb.',
|
|
43
45
|
},
|
|
46
|
+
blockDurationMs: {
|
|
47
|
+
env: 'SEQ_BLOCK_DURATION_MS',
|
|
48
|
+
description:
|
|
49
|
+
'Duration per block in milliseconds when building multiple blocks per slot. Used to derive orphan proposed block pruning timing.',
|
|
50
|
+
...optionalNumberConfigHelper(),
|
|
51
|
+
},
|
|
52
|
+
checkpointProposalSyncGraceSeconds: {
|
|
53
|
+
env: 'CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS',
|
|
54
|
+
description:
|
|
55
|
+
'Consensus grace in seconds for a received checkpoint proposal to materialize into local proposed state.',
|
|
56
|
+
...optionalNumberConfigHelper(),
|
|
57
|
+
},
|
|
44
58
|
skipValidateCheckpointAttestations: {
|
|
45
59
|
description: 'Skip validating checkpoint attestations (for testing purposes only)',
|
|
46
60
|
...booleanConfigHelper(false),
|
|
@@ -66,13 +80,23 @@ export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
|
|
|
66
80
|
'Set to true to bypass the check when the connected RPC node is known to prune old logs.',
|
|
67
81
|
...booleanConfigHelper(false),
|
|
68
82
|
},
|
|
69
|
-
|
|
70
|
-
env: '
|
|
83
|
+
orphanPruneNoProposalTolerance: {
|
|
84
|
+
env: 'ARCHIVER_ORPHAN_PRUNE_NO_PROPOSAL_TOLERANCE',
|
|
85
|
+
description: 'Local tolerance in seconds before pruning an orphan block when no checkpoint proposal was received.',
|
|
86
|
+
...numberConfigHelper(DEFAULT_ORPHAN_PRUNE_NO_PROPOSAL_TOLERANCE),
|
|
87
|
+
},
|
|
88
|
+
skipOrphanProposedBlockPruning: {
|
|
89
|
+
env: 'ARCHIVER_SKIP_ORPHAN_PROPOSED_BLOCK_PRUNING',
|
|
90
|
+
description: 'Skip pruning orphan proposed blocks that have no matching proposed checkpoint.',
|
|
91
|
+
...booleanConfigHelper(false),
|
|
92
|
+
},
|
|
93
|
+
testPreloadStandardContracts: {
|
|
94
|
+
env: 'TEST_PRELOAD_STANDARD_CONTRACTS',
|
|
71
95
|
description:
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
...
|
|
96
|
+
'Preload the standard contracts (AuthRegistry, PublicChecks, HandshakeRegistry) into the contract store at ' +
|
|
97
|
+
'block 0. For test environments only, and only safe when genesis seeds the matching registration/deployment ' +
|
|
98
|
+
'nullifiers; otherwise a later on-chain publish would collide with the block-0 preload.',
|
|
99
|
+
...booleanConfigHelper(false),
|
|
76
100
|
},
|
|
77
101
|
...chainConfigMappings,
|
|
78
102
|
...l1ReaderConfigMappings,
|
|
@@ -103,6 +127,7 @@ export function mapArchiverConfig(config: Partial<ArchiverConfig>) {
|
|
|
103
127
|
maxAllowedEthClientDriftSeconds: config.maxAllowedEthClientDriftSeconds,
|
|
104
128
|
ethereumAllowNoDebugHosts: config.ethereumAllowNoDebugHosts,
|
|
105
129
|
skipHistoricalLogsCheck: config.archiverSkipHistoricalLogsCheck,
|
|
106
|
-
|
|
130
|
+
orphanPruneNoProposalTolerance: config.orphanPruneNoProposalTolerance,
|
|
131
|
+
skipOrphanProposedBlockPruning: config.skipOrphanProposedBlockPruning,
|
|
107
132
|
};
|
|
108
133
|
}
|