@aztec/sequencer-client 3.0.0-canary.a9708bd → 3.0.0-devnet.2
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 +5 -4
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +17 -12
- package/dest/config.d.ts +2 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +10 -0
- package/dest/publisher/config.d.ts +2 -8
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +7 -16
- package/dest/publisher/index.d.ts +1 -1
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/index.js +1 -1
- package/dest/publisher/sequencer-publisher-factory.d.ts +6 -1
- package/dest/publisher/sequencer-publisher-factory.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-factory.js +8 -1
- 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 +1 -1
- package/dest/publisher/sequencer-publisher.d.ts +16 -22
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +72 -72
- package/dest/sequencer/block_builder.d.ts +2 -5
- package/dest/sequencer/block_builder.d.ts.map +1 -1
- package/dest/sequencer/block_builder.js +18 -6
- package/dest/sequencer/errors.d.ts +11 -0
- package/dest/sequencer/errors.d.ts.map +1 -0
- package/dest/sequencer/errors.js +15 -0
- package/dest/sequencer/metrics.d.ts +6 -18
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +22 -88
- package/dest/sequencer/sequencer.d.ts +8 -7
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +55 -33
- package/dest/sequencer/timetable.d.ts +1 -7
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +3 -10
- package/dest/sequencer/utils.d.ts +10 -24
- package/dest/sequencer/utils.d.ts.map +1 -1
- package/dest/sequencer/utils.js +9 -24
- package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.js +11 -8
- package/package.json +29 -29
- package/src/client/sequencer-client.ts +18 -9
- package/src/config.ts +11 -0
- package/src/publisher/config.ts +13 -22
- package/src/publisher/index.ts +1 -1
- package/src/publisher/sequencer-publisher-factory.ts +13 -2
- package/src/publisher/sequencer-publisher-metrics.ts +1 -1
- package/src/publisher/sequencer-publisher.ts +101 -98
- package/src/sequencer/block_builder.ts +20 -21
- package/src/sequencer/errors.ts +21 -0
- package/src/sequencer/metrics.ts +25 -101
- package/src/sequencer/sequencer.ts +85 -58
- package/src/sequencer/timetable.ts +3 -14
- package/src/sequencer/utils.ts +10 -24
- package/src/tx_validator/tx_validator_factory.ts +10 -5
|
@@ -8,7 +8,7 @@ import type { KeystoreManager } from '@aztec/node-keystore';
|
|
|
8
8
|
import type { P2P } from '@aztec/p2p';
|
|
9
9
|
import type { SlasherClientInterface } from '@aztec/slasher';
|
|
10
10
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
11
|
-
import type { IFullNodeBlockBuilder, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
11
|
+
import type { IFullNodeBlockBuilder, ValidatorClientFullConfig, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
12
12
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
13
13
|
import { L1Metrics, type TelemetryClient } from '@aztec/telemetry-client';
|
|
14
14
|
import { type ValidatorClient } from '@aztec/validator-client';
|
|
@@ -21,9 +21,10 @@ import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
|
|
|
21
21
|
export declare class SequencerClient {
|
|
22
22
|
protected publisherManager: PublisherManager<L1TxUtilsWithBlobs>;
|
|
23
23
|
protected sequencer: Sequencer;
|
|
24
|
+
protected blockBuilder: IFullNodeBlockBuilder;
|
|
24
25
|
protected validatorClient?: ValidatorClient | undefined;
|
|
25
26
|
private l1Metrics?;
|
|
26
|
-
constructor(publisherManager: PublisherManager<L1TxUtilsWithBlobs>, sequencer: Sequencer, validatorClient?: ValidatorClient | undefined, l1Metrics?: L1Metrics | undefined);
|
|
27
|
+
constructor(publisherManager: PublisherManager<L1TxUtilsWithBlobs>, sequencer: Sequencer, blockBuilder: IFullNodeBlockBuilder, validatorClient?: ValidatorClient | undefined, l1Metrics?: L1Metrics | undefined);
|
|
27
28
|
/**
|
|
28
29
|
* Initializes a new instance.
|
|
29
30
|
* @param config - Configuration for the sequencer, publisher, and L1 tx sender.
|
|
@@ -53,10 +54,10 @@ export declare class SequencerClient {
|
|
|
53
54
|
nodeKeyStore: KeystoreManager;
|
|
54
55
|
}): Promise<SequencerClient>;
|
|
55
56
|
/**
|
|
56
|
-
* Updates sequencer config.
|
|
57
|
+
* Updates sequencer and validator client config.
|
|
57
58
|
* @param config - New parameters.
|
|
58
59
|
*/
|
|
59
|
-
|
|
60
|
+
updateConfig(config: SequencerConfig & Partial<ValidatorClientFullConfig>): void;
|
|
60
61
|
/** Starts the sequencer. */
|
|
61
62
|
start(): Promise<void>;
|
|
62
63
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAEL,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAEL,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExE;;GAEG;AACH,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC;IAChE,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,YAAY,EAAE,qBAAqB;IAC7C,SAAS,CAAC,eAAe,CAAC,EAAE,eAAe;IAC3C,OAAO,CAAC,SAAS,CAAC;gBAJR,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EACtD,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,qBAAqB,EACnC,eAAe,CAAC,EAAE,eAAe,YAAA,EACnC,SAAS,CAAC,EAAE,SAAS,YAAA;IAG/B;;;;;;;;;;;OAWG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE;QACJ,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;QAC7C,SAAS,EAAE,GAAG,CAAC;QACf,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,aAAa,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAClD,YAAY,EAAE,qBAAqB,CAAC;QACpC,aAAa,EAAE,aAAa,CAAC;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC;QAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;QAC7C,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAChC,YAAY,EAAE,eAAe,CAAC;KAC/B;IAoHH;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAMhF,4BAA4B;IACf,KAAK;IAOlB;;OAEG;IACU,IAAI;IAOV,YAAY,IAAI,SAAS;IAIhC,IAAI,kBAAkB,IAAI,UAAU,EAAE,GAAG,SAAS,CAEjD;IAED,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;CACF"}
|
|
@@ -13,11 +13,13 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
13
13
|
*/ export class SequencerClient {
|
|
14
14
|
publisherManager;
|
|
15
15
|
sequencer;
|
|
16
|
+
blockBuilder;
|
|
16
17
|
validatorClient;
|
|
17
18
|
l1Metrics;
|
|
18
|
-
constructor(publisherManager, sequencer, validatorClient, l1Metrics){
|
|
19
|
+
constructor(publisherManager, sequencer, blockBuilder, validatorClient, l1Metrics){
|
|
19
20
|
this.publisherManager = publisherManager;
|
|
20
21
|
this.sequencer = sequencer;
|
|
22
|
+
this.blockBuilder = blockBuilder;
|
|
21
23
|
this.validatorClient = validatorClient;
|
|
22
24
|
this.l1Metrics = l1Metrics;
|
|
23
25
|
}
|
|
@@ -35,11 +37,11 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
35
37
|
*/ static async new(config, deps) {
|
|
36
38
|
const { validatorClient, p2pClient, worldStateSynchronizer, slasherClient, blockBuilder, l2BlockSource, l1ToL2MessageSource, telemetry: telemetryClient } = deps;
|
|
37
39
|
const { l1RpcUrls: rpcUrls, l1ChainId: chainId } = config;
|
|
38
|
-
const log = createLogger('sequencer
|
|
40
|
+
const log = createLogger('sequencer');
|
|
39
41
|
const publicClient = getPublicClient(config);
|
|
40
42
|
const l1TxUtils = deps.l1TxUtils;
|
|
41
43
|
const l1Metrics = new L1Metrics(telemetryClient.getMeter('L1PublisherMetrics'), publicClient, l1TxUtils.map((x)=>x.getSenderAddress()));
|
|
42
|
-
const publisherManager = new PublisherManager(l1TxUtils);
|
|
44
|
+
const publisherManager = new PublisherManager(l1TxUtils, config);
|
|
43
45
|
const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
|
|
44
46
|
const [l1GenesisTime, slotDuration] = await Promise.all([
|
|
45
47
|
rollupContract.getL1GenesisTime(),
|
|
@@ -50,9 +52,7 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
50
52
|
l1RpcUrls: rpcUrls,
|
|
51
53
|
l1ChainId: chainId,
|
|
52
54
|
viemPollingIntervalMS: config.viemPollingIntervalMS,
|
|
53
|
-
|
|
54
|
-
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
55
|
-
aztecEpochDuration: config.aztecEpochDuration
|
|
55
|
+
ethereumSlotDuration: config.ethereumSlotDuration
|
|
56
56
|
}, {
|
|
57
57
|
dateProvider: deps.dateProvider
|
|
58
58
|
});
|
|
@@ -66,7 +66,8 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
66
66
|
rollupContract,
|
|
67
67
|
dateProvider: deps.dateProvider,
|
|
68
68
|
publisherManager,
|
|
69
|
-
nodeKeyStore: NodeKeystoreAdapter.fromKeyStoreManager(deps.nodeKeyStore)
|
|
69
|
+
nodeKeyStore: NodeKeystoreAdapter.fromKeyStoreManager(deps.nodeKeyStore),
|
|
70
|
+
logger: log
|
|
70
71
|
});
|
|
71
72
|
const globalsBuilder = new GlobalVariableBuilder(config);
|
|
72
73
|
const ethereumSlotDuration = config.ethereumSlotDuration;
|
|
@@ -92,25 +93,29 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
92
93
|
...config,
|
|
93
94
|
maxL1TxInclusionTimeIntoSlot,
|
|
94
95
|
maxL2BlockGas: sequencerManaLimit
|
|
95
|
-
}, telemetryClient);
|
|
96
|
+
}, telemetryClient, log);
|
|
96
97
|
await sequencer.init();
|
|
97
|
-
return new SequencerClient(publisherManager, sequencer, validatorClient, l1Metrics);
|
|
98
|
+
return new SequencerClient(publisherManager, sequencer, blockBuilder, validatorClient, l1Metrics);
|
|
98
99
|
}
|
|
99
100
|
/**
|
|
100
|
-
* Updates sequencer config.
|
|
101
|
+
* Updates sequencer and validator client config.
|
|
101
102
|
* @param config - New parameters.
|
|
102
|
-
*/
|
|
103
|
-
|
|
103
|
+
*/ updateConfig(config) {
|
|
104
|
+
this.sequencer.updateConfig(config);
|
|
105
|
+
this.blockBuilder.updateConfig(config);
|
|
106
|
+
this.validatorClient?.updateConfig(config);
|
|
104
107
|
}
|
|
105
108
|
/** Starts the sequencer. */ async start() {
|
|
106
109
|
await this.validatorClient?.start();
|
|
107
110
|
this.sequencer.start();
|
|
108
111
|
this.l1Metrics?.start();
|
|
112
|
+
await this.publisherManager.loadState();
|
|
109
113
|
}
|
|
110
114
|
/**
|
|
111
115
|
* Stops the sequencer from processing new txs.
|
|
112
116
|
*/ async stop() {
|
|
113
117
|
await this.sequencer.stop();
|
|
118
|
+
await this.validatorClient?.stop();
|
|
114
119
|
this.publisherManager.interrupt();
|
|
115
120
|
this.l1Metrics?.stop();
|
|
116
121
|
}
|
package/dest/config.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type L1ContractsConfig, type L1ReaderConfig } from '@aztec/ethereum';
|
|
2
2
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
3
|
+
import { type KeyStoreConfig } from '@aztec/node-keystore';
|
|
3
4
|
import { type P2PConfig } from '@aztec/p2p';
|
|
4
5
|
import { type ChainConfig, type SequencerConfig } from '@aztec/stdlib/config';
|
|
5
6
|
import { type ValidatorClientConfig } from '@aztec/validator-client';
|
|
@@ -10,7 +11,7 @@ export declare const DEFAULT_ATTESTATION_PROPAGATION_TIME = 2;
|
|
|
10
11
|
/**
|
|
11
12
|
* Configuration settings for the SequencerClient.
|
|
12
13
|
*/
|
|
13
|
-
export type SequencerClientConfig = PublisherConfig & ValidatorClientConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<P2PConfig, 'txPublicSetupAllowList'> & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration' | 'aztecEpochDuration'>;
|
|
14
|
+
export type SequencerClientConfig = PublisherConfig & KeyStoreConfig & ValidatorClientConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<P2PConfig, 'txPublicSetupAllowList'> & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration' | 'aztecEpochDuration'>;
|
|
14
15
|
export declare const sequencerConfigMappings: ConfigMappingsType<SequencerConfig>;
|
|
15
16
|
export declare const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig>;
|
|
16
17
|
/**
|
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,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAuB,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,KAAK,qBAAqB,EAAiC,MAAM,yBAAyB,CAAC;AAEpG,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,eAAO,MAAM,oCAAoC,IAAI,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,qBAAqB,GACrB,cAAc,GACd,eAAe,GACf,cAAc,GACd,WAAW,GACX,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,GACzC,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAE/F,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAuB,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,KAAK,qBAAqB,EAAiC,MAAM,yBAAyB,CAAC;AAEpG,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,eAAO,MAAM,oCAAoC,IAAI,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,qBAAqB,GACrB,cAAc,GACd,eAAe,GACf,cAAc,GACd,WAAW,GACX,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,GACzC,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAE/F,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA+GvE,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CASnF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD"}
|
package/dest/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { l1ContractsConfigMappings, l1ReaderConfigMappings } from '@aztec/ethereum';
|
|
2
2
|
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings } from '@aztec/foundation/config';
|
|
3
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
+
import { keyStoreConfigMappings } from '@aztec/node-keystore';
|
|
4
5
|
import { p2pConfigMappings } from '@aztec/p2p';
|
|
5
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
7
|
import { chainConfigMappings } from '@aztec/stdlib/config';
|
|
@@ -105,6 +106,14 @@ export const sequencerConfigMappings = {
|
|
|
105
106
|
description: 'Do not invalidate the previous block if invalid when we are the proposer (for testing only)',
|
|
106
107
|
...booleanConfigHelper(false)
|
|
107
108
|
},
|
|
109
|
+
broadcastInvalidBlockProposal: {
|
|
110
|
+
description: 'Broadcast invalid block proposals with corrupted state (for testing only)',
|
|
111
|
+
...booleanConfigHelper(false)
|
|
112
|
+
},
|
|
113
|
+
injectFakeAttestation: {
|
|
114
|
+
description: 'Inject a fake attestation (for testing only)',
|
|
115
|
+
...booleanConfigHelper(false)
|
|
116
|
+
},
|
|
108
117
|
...pickConfigMappings(p2pConfigMappings, [
|
|
109
118
|
'txPublicSetupAllowList'
|
|
110
119
|
])
|
|
@@ -112,6 +121,7 @@ export const sequencerConfigMappings = {
|
|
|
112
121
|
export const sequencerClientConfigMappings = {
|
|
113
122
|
...validatorClientConfigMappings,
|
|
114
123
|
...sequencerConfigMappings,
|
|
124
|
+
...keyStoreConfigMappings,
|
|
115
125
|
...l1ReaderConfigMappings,
|
|
116
126
|
...getTxSenderConfigMappings('SEQ'),
|
|
117
127
|
...getPublisherConfigMappings('SEQ'),
|
|
@@ -14,19 +14,13 @@ export type TxSenderConfig = L1ReaderConfig & {
|
|
|
14
14
|
* Publisher addresses to be used with a remote signer
|
|
15
15
|
*/
|
|
16
16
|
publisherAddresses?: EthAddress[];
|
|
17
|
-
/**
|
|
18
|
-
* The address of the custom forwarder contract.
|
|
19
|
-
*/
|
|
20
|
-
customForwarderContractAddress: EthAddress;
|
|
21
17
|
};
|
|
22
18
|
/**
|
|
23
19
|
* Configuration of the L1Publisher.
|
|
24
20
|
*/
|
|
25
21
|
export type PublisherConfig = L1TxUtilsConfig & BlobSinkConfig & {
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
*/
|
|
29
|
-
l1PublishRetryIntervalMS: number;
|
|
22
|
+
/** True to use publishers in invalid states (timed out, cancelled, etc) if no other is available */
|
|
23
|
+
publisherAllowInvalidStates?: boolean;
|
|
30
24
|
};
|
|
31
25
|
export declare const getTxSenderConfigMappings: (scope: 'PROVER' | 'SEQ') => ConfigMappingsType<Omit<TxSenderConfig, 'l1Contracts'>>;
|
|
32
26
|
export declare function getTxSenderConfigFromEnv(scope: 'PROVER' | 'SEQ'): Omit<TxSenderConfig, 'l1Contracts'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,yBAAyB,CAAC;AACrF,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,yBAAyB,CAAC;AACrF,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,EAGZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C;;OAEG;IACH,oBAAoB,CAAC,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC;IAEpD;;OAEG;IACH,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,GAC3C,cAAc,GAAG;IACf,oGAAoG;IACpG,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEJ,eAAO,MAAM,yBAAyB,EAAE,CACtC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAezD,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAErG;AAED,eAAO,MAAM,0BAA0B,EAAE,CACvC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,eAAe,GAAG,eAAe,CAQvD,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,eAAe,CAElF"}
|
package/dest/publisher/config.js
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
import { blobSinkConfigMapping } from '@aztec/blob-sink/client';
|
|
2
2
|
import { l1ReaderConfigMappings, l1TxUtilsConfigMappings } from '@aztec/ethereum';
|
|
3
|
-
import { SecretValue, getConfigFromMappings } from '@aztec/foundation/config';
|
|
3
|
+
import { SecretValue, booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
export const getTxSenderConfigMappings = (scope)=>({
|
|
6
6
|
...l1ReaderConfigMappings,
|
|
7
|
-
customForwarderContractAddress: {
|
|
8
|
-
env: `CUSTOM_FORWARDER_CONTRACT_ADDRESS`,
|
|
9
|
-
parseEnv: (val)=>EthAddress.fromString(val),
|
|
10
|
-
description: 'The address of the custom forwarder contract.',
|
|
11
|
-
defaultValue: EthAddress.ZERO
|
|
12
|
-
},
|
|
13
7
|
publisherPrivateKeys: {
|
|
14
8
|
env: scope === 'PROVER' ? `PROVER_PUBLISHER_PRIVATE_KEYS` : `SEQ_PUBLISHER_PRIVATE_KEYS`,
|
|
15
9
|
description: 'The private keys to be used by the publisher.',
|
|
16
10
|
parseEnv: (val)=>val.split(',').map((key)=>new SecretValue(`0x${key.replace('0x', '')}`)),
|
|
17
11
|
defaultValue: [],
|
|
18
|
-
fallback:
|
|
19
|
-
'PROVER_PUBLISHER_PRIVATE_KEY
|
|
20
|
-
] : [
|
|
21
|
-
'SEQ_PUBLISHER_PRIVATE_KEY'
|
|
12
|
+
fallback: [
|
|
13
|
+
scope === 'PROVER' ? `PROVER_PUBLISHER_PRIVATE_KEY` : `SEQ_PUBLISHER_PRIVATE_KEY`
|
|
22
14
|
]
|
|
23
15
|
},
|
|
24
16
|
publisherAddresses: {
|
|
@@ -32,11 +24,10 @@ export function getTxSenderConfigFromEnv(scope) {
|
|
|
32
24
|
return getConfigFromMappings(getTxSenderConfigMappings(scope));
|
|
33
25
|
}
|
|
34
26
|
export const getPublisherConfigMappings = (scope)=>({
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
description: 'The interval to wait between publish retries.'
|
|
27
|
+
publisherAllowInvalidStates: {
|
|
28
|
+
description: 'True to use publishers in invalid states (timed out, cancelled, etc) if no other is available',
|
|
29
|
+
env: scope === `PROVER` ? `PROVER_PUBLISHER_ALLOW_INVALID_STATES` : `SEQ_PUBLISHER_ALLOW_INVALID_STATES`,
|
|
30
|
+
...booleanConfigHelper(true)
|
|
40
31
|
},
|
|
41
32
|
...l1TxUtilsConfigMappings,
|
|
42
33
|
...blobSinkConfigMapping
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { SequencerPublisher
|
|
1
|
+
export { SequencerPublisher } from './sequencer-publisher.js';
|
|
2
2
|
export { SequencerPublisherFactory } from './sequencer-publisher-factory.js';
|
|
3
3
|
export { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publisher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publisher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dest/publisher/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { SequencerPublisher
|
|
1
|
+
export { SequencerPublisher } from './sequencer-publisher.js';
|
|
2
2
|
export { SequencerPublisherFactory } from './sequencer-publisher-factory.js';
|
|
3
3
|
// Used for tests
|
|
4
4
|
export { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { EthAddress } from '@aztec/aztec.js';
|
|
1
|
+
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { type Logger } from '@aztec/aztec.js/log';
|
|
2
3
|
import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
3
4
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
4
5
|
import type { GovernanceProposerContract, PublisherManager, RollupContract } from '@aztec/ethereum';
|
|
@@ -17,6 +18,9 @@ export declare class SequencerPublisherFactory {
|
|
|
17
18
|
private sequencerConfig;
|
|
18
19
|
private deps;
|
|
19
20
|
private publisherMetrics;
|
|
21
|
+
/** Stores the last slot in which every action was carried out by a publisher */
|
|
22
|
+
private lastActions;
|
|
23
|
+
private logger;
|
|
20
24
|
constructor(sequencerConfig: SequencerClientConfig, deps: {
|
|
21
25
|
telemetry: TelemetryClient;
|
|
22
26
|
publisherManager: PublisherManager<L1TxUtilsWithBlobs>;
|
|
@@ -27,6 +31,7 @@ export declare class SequencerPublisherFactory {
|
|
|
27
31
|
governanceProposerContract: GovernanceProposerContract;
|
|
28
32
|
slashFactoryContract: SlashFactoryContract;
|
|
29
33
|
nodeKeyStore: NodeKeystoreAdapter;
|
|
34
|
+
logger?: Logger;
|
|
30
35
|
});
|
|
31
36
|
/**
|
|
32
37
|
* Creates a new SequencerPublisher instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher-factory.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher-factory.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAmB,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAe,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE3E,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE,UAAU,CAAC;IAC5B,SAAS,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,qBAAa,yBAAyB;IASlC,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,IAAI;IATd,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAAuC;IAE1D,OAAO,CAAC,MAAM,CAAS;gBAGb,eAAe,EAAE,qBAAqB,EACtC,IAAI,EAAE;QACZ,SAAS,EAAE,eAAe,CAAC;QAC3B,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACvD,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,EAAE,UAAU,CAAC;QACvB,cAAc,EAAE,cAAc,CAAC;QAC/B,0BAA0B,EAAE,0BAA0B,CAAC;QACvD,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,YAAY,EAAE,mBAAmB,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAKH;;;;OAIG;IACU,MAAM,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAsCnF"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
1
2
|
import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
2
3
|
import { SequencerPublisher } from './sequencer-publisher.js';
|
|
3
4
|
export class SequencerPublisherFactory {
|
|
4
5
|
sequencerConfig;
|
|
5
6
|
deps;
|
|
6
7
|
publisherMetrics;
|
|
8
|
+
/** Stores the last slot in which every action was carried out by a publisher */ lastActions;
|
|
9
|
+
logger;
|
|
7
10
|
constructor(sequencerConfig, deps){
|
|
8
11
|
this.sequencerConfig = sequencerConfig;
|
|
9
12
|
this.deps = deps;
|
|
13
|
+
this.lastActions = {};
|
|
10
14
|
this.publisherMetrics = new SequencerPublisherMetrics(deps.telemetry, 'SequencerPublisher');
|
|
15
|
+
this.logger = deps.logger ?? createLogger('sequencer');
|
|
11
16
|
}
|
|
12
17
|
/**
|
|
13
18
|
* Creates a new SequencerPublisher instance.
|
|
@@ -34,7 +39,9 @@ export class SequencerPublisherFactory {
|
|
|
34
39
|
slashingProposerContract,
|
|
35
40
|
slashFactoryContract: this.deps.slashFactoryContract,
|
|
36
41
|
dateProvider: this.deps.dateProvider,
|
|
37
|
-
metrics: this.publisherMetrics
|
|
42
|
+
metrics: this.publisherMetrics,
|
|
43
|
+
lastActions: this.lastActions,
|
|
44
|
+
log: this.logger.createChild('publisher')
|
|
38
45
|
});
|
|
39
46
|
return {
|
|
40
47
|
attestorAddress,
|
|
@@ -17,7 +17,7 @@ export declare class SequencerPublisherMetrics {
|
|
|
17
17
|
private readonly blobTxSuccessCounter;
|
|
18
18
|
private readonly blobTxFailureCounter;
|
|
19
19
|
private senderBalance;
|
|
20
|
-
constructor(client: TelemetryClient, name?: string, logger?: import("@aztec/aztec.js").Logger);
|
|
20
|
+
constructor(client: TelemetryClient, name?: string, logger?: import("@aztec/aztec.js/log").Logger);
|
|
21
21
|
recordFailedTx(txType: L1TxType): void;
|
|
22
22
|
recordProcessBlockTx(durationMs: number, stats: L1PublishBlockStats): void;
|
|
23
23
|
recordSenderBalance(wei: bigint, senderAddress: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher-metrics.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-metrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC;AAEjC,qBAAa,yBAAyB;IAsBlC,OAAO,CAAC,MAAM;IArBhB,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAY;IACzD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IAErD,OAAO,CAAC,aAAa,CAAQ;gBAG3B,MAAM,EAAE,eAAe,EACvB,IAAI,SAAuB,EACnB,MAAM,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher-metrics.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-metrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC;AAEjC,qBAAa,yBAAyB;IAsBlC,OAAO,CAAC,MAAM;IArBhB,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAY;IACzD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IAErD,OAAO,CAAC,aAAa,CAAQ;gBAG3B,MAAM,EAAE,eAAe,EACvB,IAAI,SAAuB,EACnB,MAAM,uCAA8C;IAwF9D,cAAc,CAAC,MAAM,EAAE,QAAQ;IAW/B,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAcnE,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAOtD,OAAO,CAAC,QAAQ;CAuCjB"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { L2Block } from '@aztec/aztec.js/block';
|
|
2
2
|
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
3
3
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
4
|
-
import { type EmpireSlashingProposerContract, FormattedViemError, type
|
|
4
|
+
import { type EmpireSlashingProposerContract, FormattedViemError, type GovernanceProposerContract, type L1BlobInputs, type L1ContractsConfig, type L1TxConfig, type L1TxRequest, RollupContract, type TallySlashingProposerContract, type TransactionStats } from '@aztec/ethereum';
|
|
5
5
|
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
6
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
|
+
import { Signature } from '@aztec/foundation/eth-signature';
|
|
7
8
|
import type { Fr } from '@aztec/foundation/fields';
|
|
9
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
8
10
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
9
11
|
import { type ProposerSlashAction } from '@aztec/slasher';
|
|
10
|
-
import {
|
|
12
|
+
import { CommitteeAttestationsAndSigners, type ValidateBlockResult } from '@aztec/stdlib/block';
|
|
11
13
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
12
|
-
import
|
|
14
|
+
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
13
15
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
14
16
|
import { type TransactionReceipt, type TypedDataDefinition } from 'viem';
|
|
15
17
|
import type { PublisherConfig, TxSenderConfig } from './config.js';
|
|
16
18
|
import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
17
|
-
export declare enum SignalType {
|
|
18
|
-
GOVERNANCE = 0,
|
|
19
|
-
SLASHING = 1
|
|
20
|
-
}
|
|
21
19
|
export declare const Actions: readonly ["invalidate-by-invalid-attestation", "invalidate-by-insufficient-attestations", "propose", "governance-signal", "empire-slashing-signal", "create-empire-payload", "execute-empire-payload", "vote-offenses", "execute-slash"];
|
|
22
20
|
export type Action = (typeof Actions)[number];
|
|
23
21
|
export declare const compareActions: (a: Action, b: Action) => number;
|
|
@@ -32,11 +30,10 @@ interface RequestWithExpiry {
|
|
|
32
30
|
action: Action;
|
|
33
31
|
request: L1TxRequest;
|
|
34
32
|
lastValidL2Slot: bigint;
|
|
35
|
-
gasConfig?: Pick<
|
|
33
|
+
gasConfig?: Pick<L1TxConfig, 'txTimeoutAt' | 'gasLimit'>;
|
|
36
34
|
blobConfig?: L1BlobInputs;
|
|
37
35
|
checkSuccess: (request: L1TxRequest, result?: {
|
|
38
36
|
receipt: TransactionReceipt;
|
|
39
|
-
gasPrice: GasPrice;
|
|
40
37
|
stats?: TransactionStats;
|
|
41
38
|
errorMsg?: string;
|
|
42
39
|
}) => boolean;
|
|
@@ -46,10 +43,10 @@ export declare class SequencerPublisher {
|
|
|
46
43
|
private interrupted;
|
|
47
44
|
private metrics;
|
|
48
45
|
epochCache: EpochCache;
|
|
49
|
-
protected governanceLog:
|
|
50
|
-
protected slashingLog:
|
|
51
|
-
|
|
52
|
-
protected log:
|
|
46
|
+
protected governanceLog: Logger;
|
|
47
|
+
protected slashingLog: Logger;
|
|
48
|
+
protected lastActions: Partial<Record<Action, bigint>>;
|
|
49
|
+
protected log: Logger;
|
|
53
50
|
protected ethereumSlotDuration: bigint;
|
|
54
51
|
private blobSinkClient;
|
|
55
52
|
static PROPOSE_GAS_GUESS: bigint;
|
|
@@ -72,6 +69,8 @@ export declare class SequencerPublisher {
|
|
|
72
69
|
epochCache: EpochCache;
|
|
73
70
|
dateProvider: DateProvider;
|
|
74
71
|
metrics: SequencerPublisherMetrics;
|
|
72
|
+
lastActions: Partial<Record<Action, bigint>>;
|
|
73
|
+
log?: Logger;
|
|
75
74
|
});
|
|
76
75
|
getRollupContract(): RollupContract;
|
|
77
76
|
getSenderAddress(): EthAddress;
|
|
@@ -87,12 +86,10 @@ export declare class SequencerPublisher {
|
|
|
87
86
|
sendRequests(): Promise<{
|
|
88
87
|
result: FormattedViemError | {
|
|
89
88
|
receipt: import("viem").TransactionReceipt;
|
|
90
|
-
gasPrice: GasPrice;
|
|
91
89
|
stats: TransactionStats | undefined;
|
|
92
90
|
errorMsg?: undefined;
|
|
93
91
|
} | {
|
|
94
92
|
receipt: import("viem").TransactionReceipt;
|
|
95
|
-
gasPrice: GasPrice;
|
|
96
93
|
errorMsg: string | undefined;
|
|
97
94
|
stats?: undefined;
|
|
98
95
|
};
|
|
@@ -120,7 +117,7 @@ export declare class SequencerPublisher {
|
|
|
120
117
|
* It will throw if the block header is invalid.
|
|
121
118
|
* @param header - The block header to validate
|
|
122
119
|
*/
|
|
123
|
-
validateBlockHeader(header:
|
|
120
|
+
validateBlockHeader(header: CheckpointHeader, opts?: {
|
|
124
121
|
forcePendingBlockNumber: number | undefined;
|
|
125
122
|
}): Promise<void>;
|
|
126
123
|
/**
|
|
@@ -138,10 +135,7 @@ export declare class SequencerPublisher {
|
|
|
138
135
|
* @param attestationData - The block's attestation data
|
|
139
136
|
*
|
|
140
137
|
*/
|
|
141
|
-
validateBlockForSubmission(block: L2Block,
|
|
142
|
-
digest: Buffer;
|
|
143
|
-
attestations: CommitteeAttestation[];
|
|
144
|
-
} | undefined, options: {
|
|
138
|
+
validateBlockForSubmission(block: L2Block, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, options: {
|
|
145
139
|
forcePendingBlockNumber?: number;
|
|
146
140
|
}): Promise<bigint>;
|
|
147
141
|
private enqueueCastSignalHelper;
|
|
@@ -160,7 +154,7 @@ export declare class SequencerPublisher {
|
|
|
160
154
|
* @param block - L2 block to propose.
|
|
161
155
|
* @returns True if the tx has been enqueued, throws otherwise. See #9315
|
|
162
156
|
*/
|
|
163
|
-
enqueueProposeL2Block(block: L2Block,
|
|
157
|
+
enqueueProposeL2Block(block: L2Block, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, opts?: {
|
|
164
158
|
txTimeoutAt?: Date;
|
|
165
159
|
forcePendingBlockNumber?: number;
|
|
166
160
|
}): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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"}
|