@aztec/sequencer-client 0.0.1-commit.3469e52 → 0.0.1-commit.3895657bc
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/client/sequencer-client.d.ts +23 -7
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +99 -16
- package/dest/config.d.ts +24 -6
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +40 -30
- package/dest/global_variable_builder/global_builder.d.ts +2 -4
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +2 -2
- package/dest/publisher/config.d.ts +35 -17
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +106 -42
- package/dest/publisher/index.d.ts +2 -1
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/l1_tx_failed_store/factory.d.ts +11 -0
- package/dest/publisher/l1_tx_failed_store/factory.d.ts.map +1 -0
- package/dest/publisher/l1_tx_failed_store/factory.js +22 -0
- package/dest/publisher/l1_tx_failed_store/failed_tx_store.d.ts +59 -0
- package/dest/publisher/l1_tx_failed_store/failed_tx_store.d.ts.map +1 -0
- package/dest/publisher/l1_tx_failed_store/failed_tx_store.js +1 -0
- package/dest/publisher/l1_tx_failed_store/file_store_failed_tx_store.d.ts +15 -0
- package/dest/publisher/l1_tx_failed_store/file_store_failed_tx_store.d.ts.map +1 -0
- package/dest/publisher/l1_tx_failed_store/file_store_failed_tx_store.js +34 -0
- package/dest/publisher/l1_tx_failed_store/index.d.ts +4 -0
- package/dest/publisher/l1_tx_failed_store/index.d.ts.map +1 -0
- package/dest/publisher/l1_tx_failed_store/index.js +2 -0
- package/dest/publisher/sequencer-publisher-factory.d.ts +11 -3
- package/dest/publisher/sequencer-publisher-factory.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-factory.js +27 -2
- package/dest/publisher/sequencer-publisher-metrics.d.ts +1 -1
- package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-metrics.js +12 -4
- package/dest/publisher/sequencer-publisher.d.ts +26 -8
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +338 -48
- package/dest/sequencer/checkpoint_proposal_job.d.ts +31 -10
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +180 -95
- package/dest/sequencer/metrics.d.ts +17 -5
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +111 -30
- package/dest/sequencer/sequencer.d.ts +25 -12
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +31 -28
- package/dest/sequencer/timetable.d.ts +4 -6
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +7 -11
- package/dest/sequencer/types.d.ts +5 -2
- package/dest/sequencer/types.d.ts.map +1 -1
- package/dest/test/index.d.ts +3 -5
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/mock_checkpoint_builder.d.ts +17 -14
- package/dest/test/mock_checkpoint_builder.d.ts.map +1 -1
- package/dest/test/mock_checkpoint_builder.js +63 -40
- package/dest/test/utils.d.ts +8 -8
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +10 -9
- package/package.json +28 -28
- package/src/client/sequencer-client.ts +135 -18
- package/src/config.ts +55 -41
- package/src/global_variable_builder/global_builder.ts +3 -3
- package/src/publisher/config.ts +121 -43
- package/src/publisher/index.ts +3 -0
- package/src/publisher/l1_tx_failed_store/factory.ts +32 -0
- package/src/publisher/l1_tx_failed_store/failed_tx_store.ts +55 -0
- package/src/publisher/l1_tx_failed_store/file_store_failed_tx_store.ts +46 -0
- package/src/publisher/l1_tx_failed_store/index.ts +3 -0
- package/src/publisher/sequencer-publisher-factory.ts +38 -6
- package/src/publisher/sequencer-publisher-metrics.ts +7 -3
- package/src/publisher/sequencer-publisher.ts +333 -60
- package/src/sequencer/checkpoint_proposal_job.ts +246 -127
- package/src/sequencer/metrics.ts +124 -32
- package/src/sequencer/sequencer.ts +41 -33
- package/src/sequencer/timetable.ts +13 -12
- package/src/sequencer/types.ts +4 -1
- package/src/test/index.ts +2 -4
- package/src/test/mock_checkpoint_builder.ts +90 -62
- package/src/test/utils.ts +22 -13
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
2
2
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
3
|
-
import {
|
|
3
|
+
import { type Delayer, L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
4
4
|
import { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
5
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
6
7
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
7
8
|
import type { KeystoreManager } from '@aztec/node-keystore';
|
|
8
9
|
import type { P2P } from '@aztec/p2p';
|
|
@@ -11,20 +12,21 @@ import type { L2BlockSink, L2BlockSource } from '@aztec/stdlib/block';
|
|
|
11
12
|
import type { ValidatorClientFullConfig, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
12
13
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
13
14
|
import { L1Metrics, type TelemetryClient } from '@aztec/telemetry-client';
|
|
14
|
-
import { FullNodeCheckpointsBuilder, type ValidatorClient } from '@aztec/validator-client';
|
|
15
|
-
import type
|
|
15
|
+
import { FullNodeCheckpointsBuilder, NodeKeystoreAdapter, type ValidatorClient } from '@aztec/validator-client';
|
|
16
|
+
import { type SequencerClientConfig } from '../config.js';
|
|
16
17
|
import { SequencerPublisherFactory } from '../publisher/sequencer-publisher-factory.js';
|
|
17
18
|
import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
|
|
18
19
|
/**
|
|
19
20
|
* Encapsulates the full sequencer and publisher.
|
|
20
21
|
*/
|
|
21
22
|
export declare class SequencerClient {
|
|
22
|
-
protected publisherManager: PublisherManager<
|
|
23
|
+
protected publisherManager: PublisherManager<L1TxUtils>;
|
|
23
24
|
protected sequencer: Sequencer;
|
|
24
25
|
protected checkpointsBuilder: FullNodeCheckpointsBuilder;
|
|
25
26
|
protected validatorClient?: ValidatorClient | undefined;
|
|
26
27
|
private l1Metrics?;
|
|
27
|
-
|
|
28
|
+
private delayer_?;
|
|
29
|
+
constructor(publisherManager: PublisherManager<L1TxUtils>, sequencer: Sequencer, checkpointsBuilder: FullNodeCheckpointsBuilder, validatorClient?: ValidatorClient | undefined, l1Metrics?: L1Metrics | undefined, delayer_?: Delayer | undefined);
|
|
28
30
|
/**
|
|
29
31
|
* Initializes a new instance.
|
|
30
32
|
* @param config - Configuration for the sequencer, publisher, and L1 tx sender.
|
|
@@ -50,7 +52,7 @@ export declare class SequencerClient {
|
|
|
50
52
|
blobClient: BlobClientInterface;
|
|
51
53
|
dateProvider: DateProvider;
|
|
52
54
|
epochCache?: EpochCache;
|
|
53
|
-
l1TxUtils:
|
|
55
|
+
l1TxUtils: L1TxUtils[];
|
|
54
56
|
nodeKeyStore: KeystoreManager;
|
|
55
57
|
}): Promise<SequencerClient>;
|
|
56
58
|
/**
|
|
@@ -65,7 +67,21 @@ export declare class SequencerClient {
|
|
|
65
67
|
*/
|
|
66
68
|
stop(): Promise<void>;
|
|
67
69
|
getSequencer(): Sequencer;
|
|
70
|
+
/** Updates the publisher factory's node keystore adapter after a keystore reload. */
|
|
71
|
+
updatePublisherNodeKeyStore(adapter: NodeKeystoreAdapter): void;
|
|
72
|
+
/** Returns the shared tx delayer for sequencer L1 txs, if enabled. Test-only. */
|
|
73
|
+
getDelayer(): Delayer | undefined;
|
|
68
74
|
get validatorAddresses(): EthAddress[] | undefined;
|
|
69
75
|
get maxL2BlockGas(): number | undefined;
|
|
70
76
|
}
|
|
71
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Computes per-block L2 gas, DA gas, and TX count budgets based on the L1 rollup limits and the timetable.
|
|
79
|
+
* If the user explicitly set a limit, it is capped at the corresponding checkpoint limit.
|
|
80
|
+
* Otherwise, derives it as (checkpointLimit / maxBlocks) * multiplier, capped at the checkpoint limit.
|
|
81
|
+
*/
|
|
82
|
+
export declare function computeBlockLimits(config: SequencerClientConfig, rollupManaLimit: number, l1PublishingTime: number, log: ReturnType<typeof createLogger>): {
|
|
83
|
+
maxL2BlockGas: number;
|
|
84
|
+
maxDABlockGas: number;
|
|
85
|
+
maxTxsPerBlock: number;
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9zZXF1ZW5jZXItY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWhELE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLGVBQWUsRUFBRSxNQUFNLHlCQUF5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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT } from '@aztec/constants';
|
|
1
2
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
2
3
|
import { isAnvilTestChain } from '@aztec/ethereum/chain';
|
|
3
4
|
import { getPublicClient } from '@aztec/ethereum/client';
|
|
@@ -8,9 +9,11 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
8
9
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
9
10
|
import { L1Metrics } from '@aztec/telemetry-client';
|
|
10
11
|
import { NodeKeystoreAdapter } from '@aztec/validator-client';
|
|
12
|
+
import { DefaultSequencerConfig, getPublisherConfigFromSequencerConfig } from '../config.js';
|
|
11
13
|
import { GlobalVariableBuilder } from '../global_variable_builder/index.js';
|
|
12
14
|
import { SequencerPublisherFactory } from '../publisher/sequencer-publisher-factory.js';
|
|
13
15
|
import { Sequencer } from '../sequencer/index.js';
|
|
16
|
+
import { SequencerTimetable } from '../sequencer/timetable.js';
|
|
14
17
|
/**
|
|
15
18
|
* Encapsulates the full sequencer and publisher.
|
|
16
19
|
*/ export class SequencerClient {
|
|
@@ -19,12 +22,14 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
19
22
|
checkpointsBuilder;
|
|
20
23
|
validatorClient;
|
|
21
24
|
l1Metrics;
|
|
22
|
-
|
|
25
|
+
delayer_;
|
|
26
|
+
constructor(publisherManager, sequencer, checkpointsBuilder, validatorClient, l1Metrics, delayer_){
|
|
23
27
|
this.publisherManager = publisherManager;
|
|
24
28
|
this.sequencer = sequencer;
|
|
25
29
|
this.checkpointsBuilder = checkpointsBuilder;
|
|
26
30
|
this.validatorClient = validatorClient;
|
|
27
31
|
this.l1Metrics = l1Metrics;
|
|
32
|
+
this.delayer_ = delayer_;
|
|
28
33
|
}
|
|
29
34
|
/**
|
|
30
35
|
* Initializes a new instance.
|
|
@@ -44,7 +49,7 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
44
49
|
const publicClient = getPublicClient(config);
|
|
45
50
|
const l1TxUtils = deps.l1TxUtils;
|
|
46
51
|
const l1Metrics = new L1Metrics(telemetryClient.getMeter('L1PublisherMetrics'), publicClient, l1TxUtils.map((x)=>x.getSenderAddress()));
|
|
47
|
-
const publisherManager = new PublisherManager(l1TxUtils, config);
|
|
52
|
+
const publisherManager = new PublisherManager(l1TxUtils, getPublisherConfigFromSequencerConfig(config), log.getBindings());
|
|
48
53
|
const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
|
|
49
54
|
const [l1GenesisTime, slotDuration, rollupVersion, rollupManaLimit] = await Promise.all([
|
|
50
55
|
rollupContract.getL1GenesisTime(),
|
|
@@ -75,21 +80,13 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
75
80
|
logger: log
|
|
76
81
|
});
|
|
77
82
|
const ethereumSlotDuration = config.ethereumSlotDuration;
|
|
78
|
-
const l1Constants = {
|
|
79
|
-
l1GenesisTime,
|
|
80
|
-
slotDuration: Number(slotDuration),
|
|
81
|
-
ethereumSlotDuration
|
|
82
|
-
};
|
|
83
83
|
const globalsBuilder = new GlobalVariableBuilder({
|
|
84
84
|
...config,
|
|
85
|
-
|
|
85
|
+
l1GenesisTime,
|
|
86
|
+
slotDuration: Number(slotDuration),
|
|
87
|
+
ethereumSlotDuration,
|
|
86
88
|
rollupVersion
|
|
87
89
|
});
|
|
88
|
-
let sequencerManaLimit = config.maxL2BlockGas ?? rollupManaLimit;
|
|
89
|
-
if (sequencerManaLimit > rollupManaLimit) {
|
|
90
|
-
log.warn(`Provided maxL2BlockGas ${sequencerManaLimit} is greater than the max allowed by L1. Setting limit to ${rollupManaLimit}.`);
|
|
91
|
-
sequencerManaLimit = rollupManaLimit;
|
|
92
|
-
}
|
|
93
90
|
// When running in anvil, assume we can post a tx up until one second before the end of an L1 slot.
|
|
94
91
|
// Otherwise, we need the full L1 slot duration for publishing to ensure inclusion.
|
|
95
92
|
// In theory, the L1 slot has an initial 4s phase where the block is propagated, so we could
|
|
@@ -97,13 +94,24 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
97
94
|
// See https://www.blocknative.com/blog/anatomy-of-a-slot#7 for more info.
|
|
98
95
|
const l1PublishingTimeBasedOnChain = isAnvilTestChain(config.l1ChainId) ? 1 : ethereumSlotDuration;
|
|
99
96
|
const l1PublishingTime = config.l1PublishingTime ?? l1PublishingTimeBasedOnChain;
|
|
97
|
+
const { maxL2BlockGas, maxDABlockGas, maxTxsPerBlock } = computeBlockLimits(config, rollupManaLimit, l1PublishingTime, log);
|
|
98
|
+
const l1Constants = {
|
|
99
|
+
l1GenesisTime,
|
|
100
|
+
slotDuration: Number(slotDuration),
|
|
101
|
+
ethereumSlotDuration,
|
|
102
|
+
rollupManaLimit
|
|
103
|
+
};
|
|
100
104
|
const sequencer = new Sequencer(publisherFactory, validatorClient, globalsBuilder, p2pClient, worldStateSynchronizer, slasherClient, l2BlockSource, l1ToL2MessageSource, checkpointsBuilder, l1Constants, deps.dateProvider, epochCache, rollupContract, {
|
|
101
105
|
...config,
|
|
102
106
|
l1PublishingTime,
|
|
103
|
-
maxL2BlockGas
|
|
107
|
+
maxL2BlockGas,
|
|
108
|
+
maxDABlockGas,
|
|
109
|
+
maxTxsPerBlock
|
|
104
110
|
}, telemetryClient, log);
|
|
105
|
-
|
|
106
|
-
|
|
111
|
+
sequencer.init();
|
|
112
|
+
// Extract the shared delayer from the first L1TxUtils instance (all instances share the same delayer)
|
|
113
|
+
const delayer = l1TxUtils[0]?.delayer;
|
|
114
|
+
return new SequencerClient(publisherManager, sequencer, checkpointsBuilder, validatorClient, l1Metrics, delayer);
|
|
107
115
|
}
|
|
108
116
|
/**
|
|
109
117
|
* Updates sequencer and validator client config.
|
|
@@ -130,6 +138,12 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
130
138
|
getSequencer() {
|
|
131
139
|
return this.sequencer;
|
|
132
140
|
}
|
|
141
|
+
/** Updates the publisher factory's node keystore adapter after a keystore reload. */ updatePublisherNodeKeyStore(adapter) {
|
|
142
|
+
this.sequencer.updatePublisherNodeKeyStore(adapter);
|
|
143
|
+
}
|
|
144
|
+
/** Returns the shared tx delayer for sequencer L1 txs, if enabled. Test-only. */ getDelayer() {
|
|
145
|
+
return this.delayer_;
|
|
146
|
+
}
|
|
133
147
|
get validatorAddresses() {
|
|
134
148
|
return this.sequencer.getValidatorAddresses();
|
|
135
149
|
}
|
|
@@ -137,3 +151,72 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
137
151
|
return this.sequencer.maxL2BlockGas;
|
|
138
152
|
}
|
|
139
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Computes per-block L2 gas, DA gas, and TX count budgets based on the L1 rollup limits and the timetable.
|
|
156
|
+
* If the user explicitly set a limit, it is capped at the corresponding checkpoint limit.
|
|
157
|
+
* Otherwise, derives it as (checkpointLimit / maxBlocks) * multiplier, capped at the checkpoint limit.
|
|
158
|
+
*/ export function computeBlockLimits(config, rollupManaLimit, l1PublishingTime, log) {
|
|
159
|
+
const maxNumberOfBlocks = new SequencerTimetable({
|
|
160
|
+
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
161
|
+
aztecSlotDuration: config.aztecSlotDuration,
|
|
162
|
+
l1PublishingTime,
|
|
163
|
+
p2pPropagationTime: config.attestationPropagationTime,
|
|
164
|
+
blockDurationMs: config.blockDurationMs,
|
|
165
|
+
enforce: config.enforceTimeTable ?? DefaultSequencerConfig.enforceTimeTable
|
|
166
|
+
}).maxNumberOfBlocks;
|
|
167
|
+
const multiplier = config.perBlockAllocationMultiplier ?? DefaultSequencerConfig.perBlockAllocationMultiplier;
|
|
168
|
+
// Compute maxL2BlockGas
|
|
169
|
+
let maxL2BlockGas;
|
|
170
|
+
if (config.maxL2BlockGas !== undefined) {
|
|
171
|
+
if (config.maxL2BlockGas > rollupManaLimit) {
|
|
172
|
+
log.warn(`Provided MAX_L2_BLOCK_GAS ${config.maxL2BlockGas} exceeds L1 rollup mana limit ${rollupManaLimit} (capping)`);
|
|
173
|
+
maxL2BlockGas = rollupManaLimit;
|
|
174
|
+
} else {
|
|
175
|
+
maxL2BlockGas = config.maxL2BlockGas;
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
maxL2BlockGas = Math.min(rollupManaLimit, Math.ceil(rollupManaLimit / maxNumberOfBlocks * multiplier));
|
|
179
|
+
}
|
|
180
|
+
// Compute maxDABlockGas
|
|
181
|
+
const daCheckpointLimit = MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT;
|
|
182
|
+
let maxDABlockGas;
|
|
183
|
+
if (config.maxDABlockGas !== undefined) {
|
|
184
|
+
if (config.maxDABlockGas > daCheckpointLimit) {
|
|
185
|
+
log.warn(`Provided MAX_DA_BLOCK_GAS ${config.maxDABlockGas} exceeds DA checkpoint limit ${daCheckpointLimit} (capping)`);
|
|
186
|
+
maxDABlockGas = daCheckpointLimit;
|
|
187
|
+
} else {
|
|
188
|
+
maxDABlockGas = config.maxDABlockGas;
|
|
189
|
+
}
|
|
190
|
+
} else {
|
|
191
|
+
maxDABlockGas = Math.min(daCheckpointLimit, Math.ceil(daCheckpointLimit / maxNumberOfBlocks * multiplier));
|
|
192
|
+
}
|
|
193
|
+
// Compute maxTxsPerBlock
|
|
194
|
+
const defaultMaxTxsPerBlock = 32;
|
|
195
|
+
let maxTxsPerBlock;
|
|
196
|
+
if (config.maxTxsPerBlock !== undefined) {
|
|
197
|
+
if (config.maxTxsPerCheckpoint !== undefined && config.maxTxsPerBlock > config.maxTxsPerCheckpoint) {
|
|
198
|
+
log.warn(`Provided MAX_TX_PER_BLOCK ${config.maxTxsPerBlock} exceeds MAX_TX_PER_CHECKPOINT ${config.maxTxsPerCheckpoint} (capping)`);
|
|
199
|
+
maxTxsPerBlock = config.maxTxsPerCheckpoint;
|
|
200
|
+
} else {
|
|
201
|
+
maxTxsPerBlock = config.maxTxsPerBlock;
|
|
202
|
+
}
|
|
203
|
+
} else if (config.maxTxsPerCheckpoint !== undefined) {
|
|
204
|
+
maxTxsPerBlock = Math.min(config.maxTxsPerCheckpoint, Math.ceil(config.maxTxsPerCheckpoint / maxNumberOfBlocks * multiplier));
|
|
205
|
+
} else {
|
|
206
|
+
maxTxsPerBlock = defaultMaxTxsPerBlock;
|
|
207
|
+
}
|
|
208
|
+
log.info(`Computed block limits L2=${maxL2BlockGas} DA=${maxDABlockGas} maxTxs=${maxTxsPerBlock}`, {
|
|
209
|
+
maxL2BlockGas,
|
|
210
|
+
maxDABlockGas,
|
|
211
|
+
maxTxsPerBlock,
|
|
212
|
+
rollupManaLimit,
|
|
213
|
+
daCheckpointLimit,
|
|
214
|
+
maxNumberOfBlocks,
|
|
215
|
+
multiplier
|
|
216
|
+
});
|
|
217
|
+
return {
|
|
218
|
+
maxL2BlockGas,
|
|
219
|
+
maxDABlockGas,
|
|
220
|
+
maxTxsPerBlock
|
|
221
|
+
};
|
|
222
|
+
}
|
package/dest/config.d.ts
CHANGED
|
@@ -4,25 +4,43 @@ import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
|
4
4
|
import { type KeyStoreConfig } from '@aztec/node-keystore/config';
|
|
5
5
|
import { type P2PConfig } from '@aztec/p2p/config';
|
|
6
6
|
import { type ChainConfig, type SequencerConfig } from '@aztec/stdlib/config';
|
|
7
|
-
import type { ResolvedSequencerConfig } from '@aztec/stdlib/interfaces/server';
|
|
8
7
|
import { type ValidatorClientConfig } from '@aztec/validator-client/config';
|
|
9
|
-
import { type
|
|
8
|
+
import { type SequencerPublisherConfig, type SequencerTxSenderConfig } from './publisher/config.js';
|
|
10
9
|
export * from './publisher/config.js';
|
|
11
10
|
export type { SequencerConfig };
|
|
12
|
-
export declare const DEFAULT_ATTESTATION_PROPAGATION_TIME = 2;
|
|
13
11
|
/**
|
|
14
12
|
* Default values for SequencerConfig.
|
|
15
13
|
* Centralized location for all sequencer configuration defaults.
|
|
16
14
|
*/
|
|
17
|
-
export declare const DefaultSequencerConfig:
|
|
15
|
+
export declare const DefaultSequencerConfig: {
|
|
16
|
+
sequencerPollingIntervalMS: number;
|
|
17
|
+
minTxsPerBlock: number;
|
|
18
|
+
buildCheckpointIfEmpty: false;
|
|
19
|
+
publishTxsWithProposals: false;
|
|
20
|
+
perBlockAllocationMultiplier: number;
|
|
21
|
+
enforceTimeTable: true;
|
|
22
|
+
attestationPropagationTime: number;
|
|
23
|
+
secondsBeforeInvalidatingBlockAsCommitteeMember: number;
|
|
24
|
+
secondsBeforeInvalidatingBlockAsNonCommitteeMember: number;
|
|
25
|
+
skipCollectingAttestations: false;
|
|
26
|
+
skipInvalidateBlockAsProposer: false;
|
|
27
|
+
broadcastInvalidBlockProposal: false;
|
|
28
|
+
injectFakeAttestation: false;
|
|
29
|
+
injectHighSValueAttestation: false;
|
|
30
|
+
injectUnrecoverableSignatureAttestation: false;
|
|
31
|
+
fishermanMode: false;
|
|
32
|
+
shuffleAttestationOrdering: false;
|
|
33
|
+
skipPushProposedBlocksToArchiver: false;
|
|
34
|
+
skipPublishingCheckpointsPercent: number;
|
|
35
|
+
};
|
|
18
36
|
/**
|
|
19
37
|
* Configuration settings for the SequencerClient.
|
|
20
38
|
*/
|
|
21
|
-
export type SequencerClientConfig =
|
|
39
|
+
export type SequencerClientConfig = SequencerPublisherConfig & KeyStoreConfig & ValidatorClientConfig & SequencerTxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<P2PConfig, 'txPublicSetupAllowListExtend'> & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration' | 'aztecEpochDuration'>;
|
|
22
40
|
export declare const sequencerConfigMappings: ConfigMappingsType<SequencerConfig>;
|
|
23
41
|
export declare const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig>;
|
|
24
42
|
/**
|
|
25
43
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
|
26
44
|
*/
|
|
27
45
|
export declare function getConfigEnvVars(): SequencerClientConfig;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QixNQUFNLHdCQUF3QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQWlDLE1BQU0sZ0NBQWdDLENBQUM7QUFFM0csT0FBTyxFQUNMLEtBQUssd0JBQXdCLEVBQzdCLEtBQUssdUJBQXVCLEVBRzdCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxZQUFZLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFFaEM7OztHQUdHO0FBQ0gsZUFBTyxNQUFNLHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkEsQ0FBQztBQUVwQzs7R0FFRztBQUNILE1BQU0sTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsR0FDMUQsY0FBYyxHQUNkLHFCQUFxQixHQUNyQix1QkFBdUIsR0FDdkIsZUFBZSxHQUNmLGNBQWMsR0FDZCxXQUFXLEdBQ1gsSUFBSSxDQUFDLFNBQVMsRUFBRSw4QkFBOEIsQ0FBQyxHQUMvQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLEdBQUcsbUJBQW1CLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztBQUUvRixlQUFPLE1BQU0sdUJBQXVCLEVBQUUsa0JBQWtCLENBQUMsZUFBZSxDQTBKdkUsQ0FBQztBQUVGLGVBQU8sTUFBTSw2QkFBNkIsRUFBRSxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FTbkYsQ0FBQztBQUVGOztHQUVHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLHFCQUFxQixDQUV4RCJ9
|
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,iBAAiB,EAA6B,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AAEtE,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,KAAK,qBAAqB,EAAiC,MAAM,gCAAgC,CAAC;AAE3G,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAG7B,MAAM,uBAAuB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;CAoBA,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GAC1D,cAAc,GACd,qBAAqB,GACrB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,WAAW,GACX,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,GAC/C,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAE/F,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA0JvE,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CASnF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD"}
|
package/dest/config.js
CHANGED
|
@@ -5,35 +5,34 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
5
5
|
import { keyStoreConfigMappings } from '@aztec/node-keystore/config';
|
|
6
6
|
import { p2pConfigMappings } from '@aztec/p2p/config';
|
|
7
7
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
|
-
import { chainConfigMappings } from '@aztec/stdlib/config';
|
|
8
|
+
import { chainConfigMappings, sharedSequencerConfigMappings } from '@aztec/stdlib/config';
|
|
9
|
+
import { DEFAULT_P2P_PROPAGATION_TIME } from '@aztec/stdlib/timetable';
|
|
9
10
|
import { validatorClientConfigMappings } from '@aztec/validator-client/config';
|
|
10
|
-
import {
|
|
11
|
+
import { sequencerPublisherConfigMappings, sequencerTxSenderConfigMappings } from './publisher/config.js';
|
|
11
12
|
export * from './publisher/config.js';
|
|
12
|
-
export const DEFAULT_ATTESTATION_PROPAGATION_TIME = 2;
|
|
13
13
|
/**
|
|
14
14
|
* Default values for SequencerConfig.
|
|
15
15
|
* Centralized location for all sequencer configuration defaults.
|
|
16
16
|
*/ export const DefaultSequencerConfig = {
|
|
17
17
|
sequencerPollingIntervalMS: 500,
|
|
18
|
-
maxTxsPerBlock: 32,
|
|
19
18
|
minTxsPerBlock: 1,
|
|
20
19
|
buildCheckpointIfEmpty: false,
|
|
21
20
|
publishTxsWithProposals: false,
|
|
22
|
-
|
|
23
|
-
maxDABlockGas: 10e9,
|
|
24
|
-
maxBlockSizeInBytes: 1024 * 1024,
|
|
21
|
+
perBlockAllocationMultiplier: 2,
|
|
25
22
|
enforceTimeTable: true,
|
|
26
|
-
attestationPropagationTime:
|
|
23
|
+
attestationPropagationTime: DEFAULT_P2P_PROPAGATION_TIME,
|
|
27
24
|
secondsBeforeInvalidatingBlockAsCommitteeMember: 144,
|
|
28
25
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: 432,
|
|
29
26
|
skipCollectingAttestations: false,
|
|
30
27
|
skipInvalidateBlockAsProposer: false,
|
|
31
28
|
broadcastInvalidBlockProposal: false,
|
|
32
29
|
injectFakeAttestation: false,
|
|
30
|
+
injectHighSValueAttestation: false,
|
|
31
|
+
injectUnrecoverableSignatureAttestation: false,
|
|
33
32
|
fishermanMode: false,
|
|
34
33
|
shuffleAttestationOrdering: false,
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
skipPushProposedBlocksToArchiver: false,
|
|
35
|
+
skipPublishingCheckpointsPercent: 0
|
|
37
36
|
};
|
|
38
37
|
export const sequencerConfigMappings = {
|
|
39
38
|
sequencerPollingIntervalMS: {
|
|
@@ -41,10 +40,10 @@ export const sequencerConfigMappings = {
|
|
|
41
40
|
description: 'The number of ms to wait between polling for checking to build on the next slot.',
|
|
42
41
|
...numberConfigHelper(DefaultSequencerConfig.sequencerPollingIntervalMS)
|
|
43
42
|
},
|
|
44
|
-
|
|
45
|
-
env: '
|
|
46
|
-
description: 'The maximum number of txs
|
|
47
|
-
|
|
43
|
+
maxTxsPerCheckpoint: {
|
|
44
|
+
env: 'SEQ_MAX_TX_PER_CHECKPOINT',
|
|
45
|
+
description: 'The maximum number of txs across all blocks in a checkpoint.',
|
|
46
|
+
parseEnv: (val)=>val ? parseInt(val, 10) : undefined
|
|
48
47
|
},
|
|
49
48
|
minTxsPerBlock: {
|
|
50
49
|
env: 'SEQ_MIN_TX_PER_BLOCK',
|
|
@@ -62,12 +61,17 @@ export const sequencerConfigMappings = {
|
|
|
62
61
|
maxL2BlockGas: {
|
|
63
62
|
env: 'SEQ_MAX_L2_BLOCK_GAS',
|
|
64
63
|
description: 'The maximum L2 block gas.',
|
|
65
|
-
|
|
64
|
+
parseEnv: (val)=>val ? parseInt(val, 10) : undefined
|
|
66
65
|
},
|
|
67
66
|
maxDABlockGas: {
|
|
68
67
|
env: 'SEQ_MAX_DA_BLOCK_GAS',
|
|
69
68
|
description: 'The maximum DA block gas.',
|
|
70
|
-
|
|
69
|
+
parseEnv: (val)=>val ? parseInt(val, 10) : undefined
|
|
70
|
+
},
|
|
71
|
+
perBlockAllocationMultiplier: {
|
|
72
|
+
env: 'SEQ_PER_BLOCK_ALLOCATION_MULTIPLIER',
|
|
73
|
+
description: 'Per-block gas budget multiplier for both L2 and DA gas. Budget per block is (checkpointLimit / maxBlocks) * multiplier.' + ' Values greater than one allow early blocks to use more than their even share, relying on checkpoint-level capping for later blocks.',
|
|
74
|
+
...numberConfigHelper(DefaultSequencerConfig.perBlockAllocationMultiplier)
|
|
71
75
|
},
|
|
72
76
|
coinbase: {
|
|
73
77
|
env: 'COINBASE',
|
|
@@ -87,11 +91,6 @@ export const sequencerConfigMappings = {
|
|
|
87
91
|
env: 'ACVM_BINARY_PATH',
|
|
88
92
|
description: 'The path to the ACVM binary'
|
|
89
93
|
},
|
|
90
|
-
maxBlockSizeInBytes: {
|
|
91
|
-
env: 'SEQ_MAX_BLOCK_SIZE_IN_BYTES',
|
|
92
|
-
description: 'Max block size',
|
|
93
|
-
...numberConfigHelper(DefaultSequencerConfig.maxBlockSizeInBytes)
|
|
94
|
-
},
|
|
95
94
|
enforceTimeTable: {
|
|
96
95
|
env: 'SEQ_ENFORCE_TIME_TABLE',
|
|
97
96
|
description: 'Whether to enforce the time table when building blocks',
|
|
@@ -144,6 +143,14 @@ export const sequencerConfigMappings = {
|
|
|
144
143
|
description: 'Inject a fake attestation (for testing only)',
|
|
145
144
|
...booleanConfigHelper(DefaultSequencerConfig.injectFakeAttestation)
|
|
146
145
|
},
|
|
146
|
+
injectHighSValueAttestation: {
|
|
147
|
+
description: 'Inject a malleable attestation with a high-s value (for testing only)',
|
|
148
|
+
...booleanConfigHelper(DefaultSequencerConfig.injectHighSValueAttestation)
|
|
149
|
+
},
|
|
150
|
+
injectUnrecoverableSignatureAttestation: {
|
|
151
|
+
description: 'Inject an attestation with an unrecoverable signature (for testing only)',
|
|
152
|
+
...booleanConfigHelper(DefaultSequencerConfig.injectUnrecoverableSignatureAttestation)
|
|
153
|
+
},
|
|
147
154
|
fishermanMode: {
|
|
148
155
|
env: 'FISHERMAN_MODE',
|
|
149
156
|
description: 'Whether to run in fisherman mode: builds blocks on every slot for validation without publishing to L1',
|
|
@@ -153,23 +160,26 @@ export const sequencerConfigMappings = {
|
|
|
153
160
|
description: 'Shuffle attestation ordering to create invalid ordering (for testing only)',
|
|
154
161
|
...booleanConfigHelper(DefaultSequencerConfig.shuffleAttestationOrdering)
|
|
155
162
|
},
|
|
156
|
-
|
|
157
|
-
env: 'SEQ_BLOCK_DURATION_MS',
|
|
158
|
-
description: 'Duration per block in milliseconds when building multiple blocks per slot. ' + 'If undefined (default), builds a single block per slot using the full slot duration.',
|
|
159
|
-
parseEnv: (val)=>val ? parseInt(val, 10) : undefined
|
|
160
|
-
},
|
|
163
|
+
...sharedSequencerConfigMappings,
|
|
161
164
|
buildCheckpointIfEmpty: {
|
|
162
165
|
env: 'SEQ_BUILD_CHECKPOINT_IF_EMPTY',
|
|
163
166
|
description: 'Have sequencer build and publish an empty checkpoint if there are no txs',
|
|
164
167
|
...booleanConfigHelper(DefaultSequencerConfig.buildCheckpointIfEmpty)
|
|
165
168
|
},
|
|
166
|
-
// TODO(palla/mbps): Change default to false once block sync is stable
|
|
167
169
|
skipPushProposedBlocksToArchiver: {
|
|
168
170
|
description: 'Skip pushing proposed blocks to archiver (default: true)',
|
|
169
171
|
...booleanConfigHelper(DefaultSequencerConfig.skipPushProposedBlocksToArchiver)
|
|
170
172
|
},
|
|
173
|
+
minBlocksForCheckpoint: {
|
|
174
|
+
description: 'Minimum number of blocks required for a checkpoint proposal (test only)'
|
|
175
|
+
},
|
|
176
|
+
skipPublishingCheckpointsPercent: {
|
|
177
|
+
env: 'SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT',
|
|
178
|
+
description: 'Percent probability (0 - 100) of sequencer skipping checkpoint publishing (testing only)',
|
|
179
|
+
...numberConfigHelper(DefaultSequencerConfig.skipPublishingCheckpointsPercent)
|
|
180
|
+
},
|
|
171
181
|
...pickConfigMappings(p2pConfigMappings, [
|
|
172
|
-
'
|
|
182
|
+
'txPublicSetupAllowListExtend'
|
|
173
183
|
])
|
|
174
184
|
};
|
|
175
185
|
export const sequencerClientConfigMappings = {
|
|
@@ -177,8 +187,8 @@ export const sequencerClientConfigMappings = {
|
|
|
177
187
|
...sequencerConfigMappings,
|
|
178
188
|
...keyStoreConfigMappings,
|
|
179
189
|
...l1ReaderConfigMappings,
|
|
180
|
-
...
|
|
181
|
-
...
|
|
190
|
+
...sequencerTxSenderConfigMappings,
|
|
191
|
+
...sequencerPublisherConfigMappings,
|
|
182
192
|
...chainConfigMappings,
|
|
183
193
|
...pickConfigMappings(l1ContractsConfigMappings, [
|
|
184
194
|
'ethereumSlotDuration',
|
|
@@ -36,8 +36,6 @@ export declare class GlobalVariableBuilder implements GlobalVariableBuilderInter
|
|
|
36
36
|
*/
|
|
37
37
|
buildGlobalVariables(blockNumber: BlockNumber, coinbase: EthAddress, feeRecipient: AztecAddress, maybeSlot?: SlotNumber): Promise<GlobalVariables>;
|
|
38
38
|
/** Builds global variables that are constant throughout a checkpoint. */
|
|
39
|
-
buildCheckpointGlobalVariables(coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber: SlotNumber): Promise<CheckpointGlobalVariables
|
|
40
|
-
timestamp: bigint;
|
|
41
|
-
}>;
|
|
39
|
+
buildCheckpointGlobalVariables(coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber: SlotNumber): Promise<CheckpointGlobalVariables>;
|
|
42
40
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iYWxfdmFyaWFibGVfYnVpbGRlci9nbG9iYWxfYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFMUUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQXVCLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUNWLHlCQUF5QixFQUN6QixxQkFBcUIsSUFBSSw4QkFBOEIsRUFDeEQsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJbkQ7O0dBRUc7QUFDSCxxQkFBYSxxQkFBc0IsWUFBVyw4QkFBOEI7SUFDMUUsT0FBTyxDQUFDLEdBQUcsQ0FBcUQ7SUFDaEUsT0FBTyxDQUFDLGNBQWMsQ0FBd0Q7SUFDOUUsT0FBTyxDQUFDLG9CQUFvQixDQUFpQztJQUU3RCxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBaUI7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQW1CO0lBQ2hELE9BQU8sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQVM7SUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBUztJQUMzQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBUztJQUV2QyxPQUFPLENBQUMsT0FBTyxDQUFLO0lBQ3BCLE9BQU8sQ0FBQyxPQUFPLENBQUs7SUFFcEIsWUFDRSxNQUFNLEVBQUUsY0FBYyxHQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUMsR0FDL0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRztRQUFFLGFBQWEsRUFBRSxNQUFNLENBQUE7S0FBRSxFQW9CeEY7WUFNYSxxQkFBcUI7SUFldEIsaUJBQWlCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVVqRDtJQUVEOzs7Ozs7O09BT0c7SUFDVSxvQkFBb0IsQ0FDL0IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsU0FBUyxDQUFDLEVBQUUsVUFBVSxHQUNyQixPQUFPLENBQUMsZUFBZSxDQUFDLENBUzFCO0lBRUQseUVBQXlFO0lBQzVELDhCQUE4QixDQUN6QyxRQUFRLEVBQUUsVUFBVSxFQUNwQixZQUFZLEVBQUUsWUFBWSxFQUMxQixVQUFVLEVBQUUsVUFBVSxHQUNyQixPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FhcEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,IAAI,8BAA8B,EACxD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IAC1E,OAAO,CAAC,GAAG,CAAqD;IAChE,OAAO,CAAC,cAAc,CAAwD;IAC9E,OAAO,CAAC,oBAAoB,CAAiC;IAE7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAK;IAEpB,YACE,MAAM,EAAE,cAAc,GACpB,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,GAC/C,IAAI,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,CAAC,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,EAoBxF;YAMa,qBAAqB;IAetB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAUjD;IAED;;;;;;;OAOG;IACU,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC,CAS1B;IAED,yEAAyE;IAC5D,8BAA8B,CACzC,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,IAAI,8BAA8B,EACxD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IAC1E,OAAO,CAAC,GAAG,CAAqD;IAChE,OAAO,CAAC,cAAc,CAAwD;IAC9E,OAAO,CAAC,oBAAoB,CAAiC;IAE7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAK;IAEpB,YACE,MAAM,EAAE,cAAc,GACpB,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,GAC/C,IAAI,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,CAAC,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,EAoBxF;YAMa,qBAAqB;IAetB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAUjD;IAED;;;;;;;OAOG;IACU,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC,CAS1B;IAED,yEAAyE;IAC5D,8BAA8B,CACzC,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,yBAAyB,CAAC,CAapC;CACF"}
|
|
@@ -44,8 +44,8 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
44
44
|
// Since this might be called in the middle of a slot where a block might have been published,
|
|
45
45
|
// we need to fetch the last block written, and estimate the earliest timestamp for the next block.
|
|
46
46
|
// The timestamp of that last block will act as a lower bound for the next block.
|
|
47
|
-
const
|
|
48
|
-
const earliestTimestamp = await this.rollupContract.getTimestampForSlot(SlotNumber.fromBigInt(BigInt(
|
|
47
|
+
const lastCheckpoint = await this.rollupContract.getPendingCheckpoint();
|
|
48
|
+
const earliestTimestamp = await this.rollupContract.getTimestampForSlot(SlotNumber.fromBigInt(BigInt(lastCheckpoint.slotNumber) + 1n));
|
|
49
49
|
const nextEthTimestamp = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
50
50
|
const timestamp = earliestTimestamp > nextEthTimestamp ? earliestTimestamp : nextEthTimestamp;
|
|
51
51
|
return new GasFees(0, await this.rollupContract.getManaMinFeeAt(timestamp, true));
|
|
@@ -3,22 +3,24 @@ import { type L1ReaderConfig } from '@aztec/ethereum/l1-reader';
|
|
|
3
3
|
import { type L1TxUtilsConfig } from '@aztec/ethereum/l1-tx-utils/config';
|
|
4
4
|
import { type ConfigMappingsType, SecretValue } from '@aztec/foundation/config';
|
|
5
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
-
/**
|
|
7
|
-
* The configuration of the rollup transaction publisher.
|
|
8
|
-
*/
|
|
6
|
+
/** Configuration of the transaction publisher. */
|
|
9
7
|
export type TxSenderConfig = L1ReaderConfig & {
|
|
10
|
-
/**
|
|
11
|
-
* The private key to be used by the publisher.
|
|
12
|
-
*/
|
|
8
|
+
/** The private key to be used by the publisher. */
|
|
13
9
|
publisherPrivateKeys?: SecretValue<`0x${string}`>[];
|
|
14
|
-
/**
|
|
15
|
-
* Publisher addresses to be used with a remote signer
|
|
16
|
-
*/
|
|
10
|
+
/** Publisher addresses to be used with a remote signer */
|
|
17
11
|
publisherAddresses?: EthAddress[];
|
|
18
12
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
export type ProverTxSenderConfig = L1ReaderConfig & {
|
|
14
|
+
proverPublisherPrivateKeys?: SecretValue<`0x${string}`>[];
|
|
15
|
+
proverPublisherAddresses?: EthAddress[];
|
|
16
|
+
};
|
|
17
|
+
export type SequencerTxSenderConfig = L1ReaderConfig & {
|
|
18
|
+
sequencerPublisherPrivateKeys?: SecretValue<`0x${string}`>[];
|
|
19
|
+
sequencerPublisherAddresses?: EthAddress[];
|
|
20
|
+
};
|
|
21
|
+
export declare function getTxSenderConfigFromProverConfig(config: ProverTxSenderConfig): TxSenderConfig;
|
|
22
|
+
export declare function getTxSenderConfigFromSequencerConfig(config: SequencerTxSenderConfig): TxSenderConfig;
|
|
23
|
+
/** Configuration of the L1Publisher. */
|
|
22
24
|
export type PublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
23
25
|
/** True to use publishers in invalid states (timed out, cancelled, etc) if no other is available */
|
|
24
26
|
publisherAllowInvalidStates?: boolean;
|
|
@@ -26,9 +28,25 @@ export type PublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
|
26
28
|
fishermanMode?: boolean;
|
|
27
29
|
/** Address of the forwarder contract to wrap all L1 transactions through (for testing purposes only) */
|
|
28
30
|
publisherForwarderAddress?: EthAddress;
|
|
31
|
+
/** Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path */
|
|
32
|
+
l1TxFailedStore?: string;
|
|
33
|
+
};
|
|
34
|
+
export type ProverPublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
35
|
+
fishermanMode?: boolean;
|
|
36
|
+
proverPublisherAllowInvalidStates?: boolean;
|
|
37
|
+
proverPublisherForwarderAddress?: EthAddress;
|
|
38
|
+
};
|
|
39
|
+
export type SequencerPublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
40
|
+
fishermanMode?: boolean;
|
|
41
|
+
sequencerPublisherAllowInvalidStates?: boolean;
|
|
42
|
+
sequencerPublisherForwarderAddress?: EthAddress;
|
|
43
|
+
/** Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path */
|
|
44
|
+
l1TxFailedStore?: string;
|
|
29
45
|
};
|
|
30
|
-
export declare
|
|
31
|
-
export declare function
|
|
32
|
-
export declare const
|
|
33
|
-
export declare
|
|
34
|
-
|
|
46
|
+
export declare function getPublisherConfigFromProverConfig(config: ProverPublisherConfig): PublisherConfig;
|
|
47
|
+
export declare function getPublisherConfigFromSequencerConfig(config: SequencerPublisherConfig): PublisherConfig;
|
|
48
|
+
export declare const proverTxSenderConfigMappings: ConfigMappingsType<Omit<ProverTxSenderConfig, 'l1Contracts'>>;
|
|
49
|
+
export declare const sequencerTxSenderConfigMappings: ConfigMappingsType<Omit<SequencerTxSenderConfig, 'l1Contracts'>>;
|
|
50
|
+
export declare const sequencerPublisherConfigMappings: ConfigMappingsType<SequencerPublisherConfig & L1TxUtilsConfig>;
|
|
51
|
+
export declare const proverPublisherConfigMappings: ConfigMappingsType<ProverPublisherConfig & L1TxUtilsConfig>;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBMkIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEYsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUEyQixNQUFNLG9DQUFvQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLFdBQVcsRUFBdUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0Qsa0RBQWtEO0FBQ2xELE1BQU0sTUFBTSxjQUFjLEdBQUcsY0FBYyxHQUFHO0lBQzVDLG1EQUFtRDtJQUNuRCxvQkFBb0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwRCwwREFBMEQ7SUFDMUQsa0JBQWtCLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztDQUNuQyxDQUFDO0FBRUYsTUFBTSxNQUFNLG9CQUFvQixHQUFHLGNBQWMsR0FBRztJQUNsRCwwQkFBMEIsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxRCx3QkFBd0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0NBQ3pDLENBQUM7QUFFRixNQUFNLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxHQUFHO0lBQ3JELDZCQUE2QixDQUFDLEVBQUUsV0FBVyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzdELDJCQUEyQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7Q0FDNUMsQ0FBQztBQUVGLHdCQUFnQixpQ0FBaUMsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEdBQUcsY0FBYyxDQU05RjtBQUVELHdCQUFnQixvQ0FBb0MsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLEdBQUcsY0FBYyxDQU1wRztBQUVELHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sZUFBZSxHQUFHLGVBQWUsR0FDM0MsZ0JBQWdCLEdBQUc7SUFDakIsb0dBQW9HO0lBQ3BHLDJCQUEyQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3RDLDRHQUE0RztJQUM1RyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDeEIsd0dBQXdHO0lBQ3hHLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxDQUFDO0lBQ3ZDLDRGQUE0RjtJQUM1RixlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDMUIsQ0FBQztBQUVKLE1BQU0sTUFBTSxxQkFBcUIsR0FBRyxlQUFlLEdBQ2pELGdCQUFnQixHQUFHO0lBQ2pCLGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN4QixpQ0FBaUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM1QywrQkFBK0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQztDQUM5QyxDQUFDO0FBRUosTUFBTSxNQUFNLHdCQUF3QixHQUFHLGVBQWUsR0FDcEQsZ0JBQWdCLEdBQUc7SUFDakIsYUFBYSxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3hCLG9DQUFvQyxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQy9DLGtDQUFrQyxDQUFDLEVBQUUsVUFBVSxDQUFDO0lBQ2hELDRGQUE0RjtJQUM1RixlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDMUIsQ0FBQztBQUVKLHdCQUFnQixrQ0FBa0MsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEdBQUcsZUFBZSxDQU1qRztBQUVELHdCQUFnQixxQ0FBcUMsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEdBQUcsZUFBZSxDQU92RztBQUVELGVBQU8sTUFBTSw0QkFBNEIsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLENBZXRHLENBQUM7QUFFRixlQUFPLE1BQU0sK0JBQStCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLGFBQWEsQ0FBQyxDQWU1RyxDQUFDO0FBRUYsZUFBTyxNQUFNLGdDQUFnQyxFQUFFLGtCQUFrQixDQUFDLHdCQUF3QixHQUFHLGVBQWUsQ0F1QjNHLENBQUM7QUFFRixlQUFPLE1BQU0sNkJBQTZCLEVBQUUsa0JBQWtCLENBQUMscUJBQXFCLEdBQUcsZUFBZSxDQW1CckcsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,oCAAoC,CAAC;AACnG,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,KAAK,kBAAkB,EAAE,WAAW,EAAuB,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,kDAAkD;AAClD,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,mDAAmD;IACnD,oBAAoB,CAAC,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC;IAEpD,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,0BAA0B,CAAC,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC;IAC1D,wBAAwB,CAAC,EAAE,UAAU,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG;IACrD,6BAA6B,CAAC,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7D,2BAA2B,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5C,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAM9F;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,uBAAuB,GAAG,cAAc,CAMpG;AAED,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,eAAe,GAC3C,gBAAgB,GAAG;IACjB,oGAAoG;IACpG,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,4GAA4G;IAC5G,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wGAAwG;IACxG,yBAAyB,CAAC,EAAE,UAAU,CAAC;IACvC,4FAA4F;IAC5F,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEJ,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,gBAAgB,GAAG;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,+BAA+B,CAAC,EAAE,UAAU,CAAC;CAC9C,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,eAAe,GACpD,gBAAgB,GAAG;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C,kCAAkC,CAAC,EAAE,UAAU,CAAC;IAChD,4FAA4F;IAC5F,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEJ,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAMjG;AAED,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,wBAAwB,GAAG,eAAe,CAOvG;AAED,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAetG,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAe5G,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,kBAAkB,CAAC,wBAAwB,GAAG,eAAe,CAuB3G,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,GAAG,eAAe,CAmBrG,CAAC"}
|