@aztec/sequencer-client 0.72.1 → 0.74.0
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 +11 -6
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +46 -10
- package/dest/config.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -4
- package/dest/publisher/config.d.ts +5 -0
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +9 -2
- package/dest/publisher/index.d.ts +1 -1
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/index.js +2 -2
- package/dest/publisher/{l1-publisher-metrics.d.ts → sequencer-publisher-metrics.d.ts} +6 -2
- package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -0
- package/dest/publisher/sequencer-publisher-metrics.js +111 -0
- package/dest/publisher/sequencer-publisher.d.ts +163 -0
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -0
- package/dest/publisher/sequencer-publisher.js +528 -0
- package/dest/sequencer/allowed.d.ts +1 -1
- package/dest/sequencer/allowed.d.ts.map +1 -1
- package/dest/sequencer/allowed.js +4 -4
- package/dest/sequencer/metrics.d.ts +1 -1
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +3 -4
- package/dest/sequencer/sequencer.d.ts +17 -10
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +103 -109
- package/dest/sequencer/utils.d.ts +1 -1
- package/dest/sequencer/utils.d.ts.map +1 -1
- package/dest/sequencer/utils.js +3 -3
- package/dest/slasher/factory.d.ts +2 -2
- package/dest/slasher/factory.d.ts.map +1 -1
- package/dest/slasher/factory.js +2 -2
- package/dest/slasher/slasher_client.d.ts +4 -4
- package/dest/slasher/slasher_client.d.ts.map +1 -1
- package/dest/slasher/slasher_client.js +38 -26
- package/dest/test/index.d.ts +3 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -2
- package/dest/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/tx_validator/gas_validator.js +4 -3
- package/dest/tx_validator/test_utils.d.ts +4 -4
- package/dest/tx_validator/test_utils.d.ts.map +1 -1
- package/dest/tx_validator/test_utils.js +3 -3
- package/package.json +21 -20
- package/src/client/sequencer-client.ts +81 -14
- package/src/config.ts +3 -3
- package/src/publisher/config.ts +13 -1
- package/src/publisher/index.ts +1 -1
- package/src/publisher/{l1-publisher-metrics.ts → sequencer-publisher-metrics.ts} +41 -2
- package/src/publisher/sequencer-publisher.ts +710 -0
- package/src/sequencer/allowed.ts +3 -3
- package/src/sequencer/metrics.ts +2 -3
- package/src/sequencer/sequencer.ts +138 -125
- package/src/sequencer/utils.ts +5 -2
- package/src/slasher/factory.ts +3 -3
- package/src/slasher/slasher_client.ts +44 -30
- package/src/test/index.ts +2 -4
- package/src/tx_validator/gas_validator.ts +5 -4
- package/src/tx_validator/test_utils.ts +5 -5
- package/dest/publisher/l1-publisher-metrics.d.ts.map +0 -1
- package/dest/publisher/l1-publisher-metrics.js +0 -85
- package/dest/publisher/l1-publisher.d.ts +0 -195
- package/dest/publisher/l1-publisher.d.ts.map +0 -1
- package/dest/publisher/l1-publisher.js +0 -930
- package/dest/test/test-l1-publisher.d.ts +0 -9
- package/dest/test/test-l1-publisher.d.ts.map +0 -1
- package/dest/test/test-l1-publisher.js +0 -11
- package/src/publisher/l1-publisher.ts +0 -1288
- package/src/test/test-l1-publisher.ts +0 -20
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
2
2
|
import { type L1ToL2MessageSource, type L2BlockSource, type WorldStateSynchronizer } from '@aztec/circuit-types';
|
|
3
|
-
import { type ContractDataSource } from '@aztec/circuits.js';
|
|
4
|
-
import {
|
|
3
|
+
import { type AztecAddress, type ContractDataSource } from '@aztec/circuits.js';
|
|
4
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
5
|
+
import { L1TxUtilsWithBlobs } from '@aztec/ethereum';
|
|
6
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
7
|
import { type DateProvider } from '@aztec/foundation/timer';
|
|
6
8
|
import { type P2P } from '@aztec/p2p';
|
|
7
9
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
8
10
|
import { type ValidatorClient } from '@aztec/validator-client';
|
|
9
11
|
import { type SequencerClientConfig } from '../config.js';
|
|
10
|
-
import {
|
|
12
|
+
import { SequencerPublisher } from '../publisher/index.js';
|
|
11
13
|
import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
|
|
12
14
|
import { type SlasherClient } from '../slasher/index.js';
|
|
13
15
|
/**
|
|
@@ -38,15 +40,17 @@ export declare class SequencerClient {
|
|
|
38
40
|
l2BlockSource: L2BlockSource;
|
|
39
41
|
l1ToL2MessageSource: L1ToL2MessageSource;
|
|
40
42
|
telemetry: TelemetryClient;
|
|
41
|
-
publisher?:
|
|
43
|
+
publisher?: SequencerPublisher;
|
|
42
44
|
blobSinkClient?: BlobSinkClientInterface;
|
|
43
45
|
dateProvider: DateProvider;
|
|
46
|
+
epochCache?: EpochCache;
|
|
47
|
+
l1TxUtils?: L1TxUtilsWithBlobs;
|
|
44
48
|
}): Promise<SequencerClient>;
|
|
45
49
|
/**
|
|
46
50
|
* Updates sequencer config.
|
|
47
51
|
* @param config - New parameters.
|
|
48
52
|
*/
|
|
49
|
-
updateSequencerConfig(config: SequencerConfig): void
|
|
53
|
+
updateSequencerConfig(config: SequencerConfig): Promise<void>;
|
|
50
54
|
/**
|
|
51
55
|
* Stops the sequencer from processing new txs.
|
|
52
56
|
*/
|
|
@@ -58,6 +62,7 @@ export declare class SequencerClient {
|
|
|
58
62
|
*/
|
|
59
63
|
restart(): void;
|
|
60
64
|
get coinbase(): EthAddress;
|
|
61
|
-
get feeRecipient():
|
|
65
|
+
get feeRecipient(): AztecAddress;
|
|
66
|
+
get forwarderAddress(): EthAddress;
|
|
62
67
|
}
|
|
63
68
|
//# sourceMappingURL=sequencer-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAGL,kBAAkB,EAMnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,eAAe;IACd,SAAS,CAAC,SAAS,EAAE,SAAS;gBAApB,SAAS,EAAE,SAAS;IAE1C;;;;;;;;;;;;OAYG;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,aAAa,CAAC;QAC7B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,EAAE,aAAa,CAAC;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC;QAC3B,SAAS,CAAC,EAAE,kBAAkB,CAAC;QAC/B,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,SAAS,CAAC,EAAE,kBAAkB,CAAC;KAChC;IAiHH;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB,uGAAuG;IAChG,KAAK;IAIZ;;OAEG;IACI,OAAO;IAId,IAAI,QAAQ,IAAI,UAAU,CAEzB;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,gBAAgB,IAAI,UAAU,CAEjC;CACF"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
2
|
+
import { ForwarderContract, GovernanceProposerContract, L1TxUtilsWithBlobs, RollupContract, SlashingProposerContract, createEthereumChain, createL1Clients, isAnvilTestChain, } from '@aztec/ethereum';
|
|
3
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
5
|
import { LightweightBlockBuilderFactory } from '@aztec/prover-client/block-builder';
|
|
3
6
|
import { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
4
7
|
import { GlobalVariableBuilder } from '../global_variable_builder/index.js';
|
|
5
|
-
import {
|
|
8
|
+
import { SequencerPublisher } from '../publisher/index.js';
|
|
6
9
|
import { Sequencer } from '../sequencer/index.js';
|
|
7
10
|
/**
|
|
8
11
|
* Encapsulates the full sequencer and publisher.
|
|
@@ -26,14 +29,44 @@ export class SequencerClient {
|
|
|
26
29
|
*/
|
|
27
30
|
static async new(config, deps) {
|
|
28
31
|
const { validatorClient, p2pClient, worldStateSynchronizer, slasherClient, contractDataSource, l2BlockSource, l1ToL2MessageSource, telemetry: telemetryClient, } = deps;
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
32
|
+
const { l1RpcUrl: rpcUrl, l1ChainId: chainId, publisherPrivateKey } = config;
|
|
33
|
+
const chain = createEthereumChain(rpcUrl, chainId);
|
|
34
|
+
const log = createLogger('sequencer-client');
|
|
35
|
+
const { publicClient, walletClient } = createL1Clients(rpcUrl, publisherPrivateKey, chain.chainInfo);
|
|
36
|
+
const l1TxUtils = deps.l1TxUtils ?? new L1TxUtilsWithBlobs(publicClient, walletClient, log, config);
|
|
37
|
+
const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
|
|
33
38
|
const [l1GenesisTime, slotDuration] = await Promise.all([
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
rollupContract.getL1GenesisTime(),
|
|
40
|
+
rollupContract.getSlotDuration(),
|
|
36
41
|
]);
|
|
42
|
+
const forwarderContract = config.customForwarderContractAddress && config.customForwarderContractAddress !== EthAddress.ZERO
|
|
43
|
+
? new ForwarderContract(publicClient, config.customForwarderContractAddress.toString(), config.l1Contracts.rollupAddress.toString())
|
|
44
|
+
: await ForwarderContract.create(walletClient.account.address, walletClient, publicClient, log, config.l1Contracts.rollupAddress.toString());
|
|
45
|
+
const governanceProposerContract = new GovernanceProposerContract(publicClient, config.l1Contracts.governanceProposerAddress.toString());
|
|
46
|
+
const slashingProposerAddress = await rollupContract.getSlashingProposerAddress();
|
|
47
|
+
const slashingProposerContract = new SlashingProposerContract(publicClient, slashingProposerAddress.toString());
|
|
48
|
+
const epochCache = deps.epochCache ??
|
|
49
|
+
(await EpochCache.create(config.l1Contracts.rollupAddress, {
|
|
50
|
+
l1RpcUrl: rpcUrl,
|
|
51
|
+
l1ChainId: chainId,
|
|
52
|
+
viemPollingIntervalMS: config.viemPollingIntervalMS,
|
|
53
|
+
aztecSlotDuration: config.aztecSlotDuration,
|
|
54
|
+
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
55
|
+
aztecEpochDuration: config.aztecEpochDuration,
|
|
56
|
+
}, { dateProvider: deps.dateProvider }));
|
|
57
|
+
const publisher = deps.publisher ??
|
|
58
|
+
new SequencerPublisher(config, {
|
|
59
|
+
l1TxUtils,
|
|
60
|
+
telemetry: telemetryClient,
|
|
61
|
+
blobSinkClient: deps.blobSinkClient,
|
|
62
|
+
rollupContract,
|
|
63
|
+
epochCache,
|
|
64
|
+
forwarderContract,
|
|
65
|
+
governanceProposerContract,
|
|
66
|
+
slashingProposerContract,
|
|
67
|
+
});
|
|
68
|
+
const globalsBuilder = new GlobalVariableBuilder(config);
|
|
69
|
+
const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, deps.dateProvider, telemetryClient);
|
|
37
70
|
const ethereumSlotDuration = config.ethereumSlotDuration;
|
|
38
71
|
// When running in anvil, assume we can post a tx up until the very last second of an L1 slot.
|
|
39
72
|
// Otherwise, assume we must have broadcasted the tx before the slot started (we use a default
|
|
@@ -57,7 +90,7 @@ export class SequencerClient {
|
|
|
57
90
|
* @param config - New parameters.
|
|
58
91
|
*/
|
|
59
92
|
updateSequencerConfig(config) {
|
|
60
|
-
this.sequencer.updateConfig(config);
|
|
93
|
+
return this.sequencer.updateConfig(config);
|
|
61
94
|
}
|
|
62
95
|
/**
|
|
63
96
|
* Stops the sequencer from processing new txs.
|
|
@@ -81,5 +114,8 @@ export class SequencerClient {
|
|
|
81
114
|
get feeRecipient() {
|
|
82
115
|
return this.sequencer.feeRecipient;
|
|
83
116
|
}
|
|
117
|
+
get forwarderAddress() {
|
|
118
|
+
return this.sequencer.getForwarderAddress();
|
|
119
|
+
}
|
|
84
120
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFHeEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFzQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztJQUU5Qzs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDckIsTUFBNkIsRUFDN0IsSUFjQztRQUVELE1BQU0sRUFDSixlQUFlLEVBQ2YsU0FBUyxFQUNULHNCQUFzQixFQUN0QixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsU0FBUyxFQUFFLGVBQWUsR0FDM0IsR0FBRyxJQUFJ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
|
package/dest/config.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ type ChainConfig = {
|
|
|
14
14
|
/**
|
|
15
15
|
* Configuration settings for the SequencerClient.
|
|
16
16
|
*/
|
|
17
|
-
export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>;
|
|
17
|
+
export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration' | 'aztecEpochDuration'>;
|
|
18
18
|
export declare const sequencerConfigMappings: ConfigMappingsType<SequencerConfig>;
|
|
19
19
|
export declare const chainConfigMappings: ConfigMappingsType<ChainConfig>;
|
|
20
20
|
export declare const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig>;
|
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,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAExF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAExF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,eAAe,GACf,cAAc,GACd,WAAW,GACX,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAE/F,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA8EvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,WAAW,CAO/D,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CAOnF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAqCvE"}
|
package/dest/config.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AztecAddress, Fr, FunctionSelector } from '@aztec/circuits.js';
|
|
2
2
|
import { l1ContractsConfigMappings, l1ReaderConfigMappings, } from '@aztec/ethereum';
|
|
3
|
-
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, } from '@aztec/foundation/config';
|
|
4
|
-
import { pickConfigMappings } from '@aztec/foundation/config';
|
|
3
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings, } from '@aztec/foundation/config';
|
|
5
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
5
|
import { getPublisherConfigMappings, getTxSenderConfigMappings, } from './publisher/config.js';
|
|
7
6
|
export * from './publisher/config.js';
|
|
@@ -97,7 +96,7 @@ export const sequencerClientConfigMappings = {
|
|
|
97
96
|
...getTxSenderConfigMappings('SEQ'),
|
|
98
97
|
...getPublisherConfigMappings('SEQ'),
|
|
99
98
|
...chainConfigMappings,
|
|
100
|
-
...pickConfigMappings(l1ContractsConfigMappings, ['ethereumSlotDuration']),
|
|
99
|
+
...pickConfigMappings(l1ContractsConfigMappings, ['ethereumSlotDuration', 'aztecSlotDuration', 'aztecEpochDuration']),
|
|
101
100
|
};
|
|
102
101
|
/**
|
|
103
102
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
|
@@ -153,4 +152,4 @@ export function parseSequencerAllowList(value) {
|
|
|
153
152
|
}
|
|
154
153
|
return entries;
|
|
155
154
|
}
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsc0JBQXNCLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBR0wsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLGNBQWMsdUJBQXVCLENBQUM7QUFxQnRDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF3QztJQUMxRSw0QkFBNEIsRUFBRTtRQUM1QixHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLFdBQVcsRUFBRSwyREFBMkQ7UUFDeEUsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7S0FDMUI7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7S0FDekI7SUFDRCxhQUFhLEVBQUU7UUFDYixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCxhQUFhLEVBQUU7UUFDYixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCxRQUFRLEVBQUU7UUFDUixHQUFHLEVBQUUsVUFBVTtRQUNmLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDckQsV0FBVyxFQUFFLDRCQUE0QjtLQUMxQztJQUNELFlBQVksRUFBRTtRQUNaLEdBQUcsRUFBRSxlQUFlO1FBQ3BCLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDdkQsV0FBVyxFQUFFLDBCQUEwQjtLQUN4QztJQUNELG9CQUFvQixFQUFFO1FBQ3BCLEdBQUcsRUFBRSx3QkFBd0I7UUFDN0IsV0FBVyxFQUFFLHFEQUFxRDtLQUNuRTtJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsV0FBVyxFQUFFLDZCQUE2QjtLQUMzQztJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUM7UUFDdkQsV0FBVyxFQUFFLHFEQUFxRDtRQUNsRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQ2pCLGdHQUFnRztLQUNuRztJQUNELG1CQUFtQixFQUFFO1FBQ25CLEdBQUcsRUFBRSw2QkFBNkI7UUFDbEMsV0FBVyxFQUFFLGdCQUFnQjtRQUM3QixHQUFHLGtCQUFrQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7S0FDbkM7SUFDRCxXQUFXLEVBQUU7UUFDWCxHQUFHLEVBQUUsY0FBYztRQUNuQixXQUFXLEVBQUUsaURBQWlEO1FBQzlELEdBQUcsbUJBQW1CLEVBQUU7S0FDekI7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixHQUFHLEVBQUUsd0JBQXdCO1FBQzdCLFdBQVcsRUFBRSx3REFBd0Q7UUFDckUsR0FBRyxtQkFBbUIsRUFBRTtRQUN4QixZQUFZLEVBQUUsS0FBSztLQUNwQjtJQUNELHlCQUF5QixFQUFFO1FBQ3pCLEdBQUcsRUFBRSxxQ0FBcUM7UUFDMUMsV0FBVyxFQUFFLHVEQUF1RDtRQUNwRSxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3JELFlBQVksRUFBRSxVQUFVLENBQUMsSUFBSTtLQUM5QjtJQUNELDRCQUE0QixFQUFFO1FBQzVCLEdBQUcsRUFBRSx3Q0FBd0M7UUFDN0MsV0FBVyxFQUFFLDJFQUEyRTtRQUN4RixRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7S0FDakU7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW9DO0lBQ2xFLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxTQUFTO0lBQzNDLE9BQU8sRUFBRTtRQUNQLEdBQUcsRUFBRSxTQUFTO1FBQ2QsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQztLQUN6QjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBOEM7SUFDdEYsR0FBRyx1QkFBdUI7SUFDMUIsR0FBRyxzQkFBc0I7SUFDekIsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7SUFDbkMsR0FBRywwQkFBMEIsQ0FBQyxLQUFLLENBQUM7SUFDcEMsR0FBRyxtQkFBbUI7SUFDdEIsR0FBRyxrQkFBa0IsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLENBQUM7Q0FDdEgsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLHFCQUFxQixDQUF3Qiw2QkFBNkIsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWE7SUFDbkQsTUFBTSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztJQUVyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sUUFBUSxHQUFHLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXhHLElBQUksVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxPQUFPLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDbEQsUUFBUTtpQkFDVCxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxPQUFPLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDbkQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM5QixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsT0FBTyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNDLFFBQVE7aUJBQ1QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsT0FBTyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type L1ReaderConfig, type L1TxUtilsConfig } from '@aztec/ethereum';
|
|
2
2
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
3
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
/**
|
|
4
5
|
* The configuration of the rollup transaction publisher.
|
|
5
6
|
*/
|
|
@@ -12,6 +13,10 @@ export type TxSenderConfig = L1ReaderConfig & {
|
|
|
12
13
|
* The number of confirmations required.
|
|
13
14
|
*/
|
|
14
15
|
requiredConfirmations: number;
|
|
16
|
+
/**
|
|
17
|
+
* The address of the custom forwarder contract.
|
|
18
|
+
*/
|
|
19
|
+
customForwarderContractAddress: EthAddress;
|
|
15
20
|
};
|
|
16
21
|
/**
|
|
17
22
|
* Configuration of the L1Publisher.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAqC,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAqC,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C;;OAEG;IACH,mBAAmB,EAAE,KAAK,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,8BAA8B,EAAE,UAAU,CAAC;CAC5C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,CACtC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAkCzD,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,CAavD,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,eAAe,CAElF"}
|
package/dest/publisher/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NULL_KEY, l1TxUtilsConfigMappings } from '@aztec/ethereum';
|
|
2
2
|
import { getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
3
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
export const getTxSenderConfigMappings = (scope) => ({
|
|
4
5
|
l1RpcUrl: {
|
|
5
6
|
env: 'ETHEREUM_HOST',
|
|
@@ -11,6 +12,12 @@ export const getTxSenderConfigMappings = (scope) => ({
|
|
|
11
12
|
defaultValue: 31337,
|
|
12
13
|
description: 'The chain ID of the ethereum host.',
|
|
13
14
|
},
|
|
15
|
+
customForwarderContractAddress: {
|
|
16
|
+
env: `CUSTOM_FORWARDER_CONTRACT_ADDRESS`,
|
|
17
|
+
parseEnv: (val) => EthAddress.fromString(val),
|
|
18
|
+
description: 'The address of the custom forwarder contract.',
|
|
19
|
+
defaultValue: EthAddress.ZERO,
|
|
20
|
+
},
|
|
14
21
|
publisherPrivateKey: {
|
|
15
22
|
env: `${scope}_PUBLISHER_PRIVATE_KEY`,
|
|
16
23
|
description: 'The private key to be used by the publisher.',
|
|
@@ -41,7 +48,7 @@ export const getPublisherConfigMappings = scope => ({
|
|
|
41
48
|
},
|
|
42
49
|
...l1TxUtilsConfigMappings,
|
|
43
50
|
blobSinkUrl: {
|
|
44
|
-
env:
|
|
51
|
+
env: 'BLOB_SINK_URL',
|
|
45
52
|
description: 'The URL of the blob sink.',
|
|
46
53
|
parseEnv: (val) => val,
|
|
47
54
|
},
|
|
@@ -49,4 +56,4 @@ export const getPublisherConfigMappings = scope => ({
|
|
|
49
56
|
export function getPublisherConfigFromEnv(scope) {
|
|
50
57
|
return getConfigFromMappings(getPublisherConfigMappings(scope));
|
|
51
58
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QyxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRyxPQUFPLEVBQTJCLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBcUMzRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FFeUIsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLFFBQVEsRUFBRTtRQUNSLEdBQUcsRUFBRSxlQUFlO1FBQ3BCLFdBQVcsRUFBRSxtQ0FBbUM7S0FDakQ7SUFDRCxTQUFTLEVBQUU7UUFDVCxHQUFHLEVBQUUsYUFBYTtRQUNsQixRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRztRQUMvQixZQUFZLEVBQUUsS0FBSztRQUNuQixXQUFXLEVBQUUsb0NBQW9DO0tBQ2xEO0lBQ0QsOEJBQThCLEVBQUU7UUFDOUIsR0FBRyxFQUFFLG1DQUFtQztRQUN4QyxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3JELFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsWUFBWSxFQUFFLFVBQVUsQ0FBQyxJQUFJO0tBQzlCO0lBQ0QsbUJBQW1CLEVBQUU7UUFDbkIsR0FBRyxFQUFFLEdBQUcsS0FBSyx3QkFBd0I7UUFDckMsV0FBVyxFQUFFLDhDQUE4QztRQUMzRCxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMxRSxZQUFZLEVBQUUsUUFBUTtLQUN2QjtJQUNELHFCQUFxQixFQUFFO1FBQ3JCLEdBQUcsRUFBRSxHQUFHLEtBQUsseUJBQXlCO1FBQ3RDLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQy9CLFlBQVksRUFBRSxDQUFDO1FBQ2YsV0FBVyxFQUFFLHVDQUF1QztLQUNyRDtJQUNELHFCQUFxQixFQUFFO1FBQ3JCLEdBQUcsRUFBRSxHQUFHLEtBQUssMkJBQTJCO1FBQ3hDLFdBQVcsRUFBRSxzQ0FBc0M7UUFDbkQsR0FBRyxrQkFBa0IsQ0FBQyxJQUFLLENBQUM7S0FDN0I7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBdUI7SUFDOUQsT0FBTyxxQkFBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FFc0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLHdCQUF3QixFQUFFO1FBQ3hCLEdBQUcsRUFBRSxHQUFHLEtBQUssNEJBQTRCO1FBQ3pDLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQy9CLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFdBQVcsRUFBRSwrQ0FBK0M7S0FDN0Q7SUFDRCxHQUFHLHVCQUF1QjtJQUMxQixXQUFXLEVBQUU7UUFDWCxHQUFHLEVBQUUsZUFBZTtRQUNwQixXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFFBQVEsRUFBRSxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsR0FBRztLQUNoQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUF1QjtJQUMvRCxPQUFPLHFCQUFxQixDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQyJ9
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { SequencerPublisher } from './sequencer-publisher.js';
|
|
2
2
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publisher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dest/publisher/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export { SequencerPublisher } from './sequencer-publisher.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { L1PublishBlockStats, L1PublishProofStats, L1PublishStats } from '@aztec/circuit-types/stats';
|
|
2
2
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
3
|
export type L1TxType = 'submitProof' | 'process' | 'claimEpochProofRight';
|
|
4
|
-
export declare class
|
|
4
|
+
export declare class SequencerPublisherMetrics {
|
|
5
5
|
private gasPrice;
|
|
6
6
|
private txCount;
|
|
7
7
|
private txDuration;
|
|
@@ -10,6 +10,10 @@ export declare class L1PublisherMetrics {
|
|
|
10
10
|
private txCalldataGas;
|
|
11
11
|
private txBlobDataGasUsed;
|
|
12
12
|
private txBlobDataGasCost;
|
|
13
|
+
private readonly blobCountHistogram;
|
|
14
|
+
private readonly blobInclusionBlocksHistogram;
|
|
15
|
+
private readonly blobTxSuccessCounter;
|
|
16
|
+
private readonly blobTxFailureCounter;
|
|
13
17
|
constructor(client: TelemetryClient, name?: string);
|
|
14
18
|
recordFailedTx(txType: L1TxType): void;
|
|
15
19
|
recordSubmitProof(durationMs: number, stats: L1PublishProofStats): void;
|
|
@@ -17,4 +21,4 @@ export declare class L1PublisherMetrics {
|
|
|
17
21
|
recordClaimEpochProofRightTx(durationMs: number, stats: L1PublishStats): void;
|
|
18
22
|
private recordTx;
|
|
19
23
|
}
|
|
20
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=sequencer-publisher-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequencer-publisher-metrics.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3G,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,sBAAsB,CAAC;AAE1E,qBAAa,yBAAyB;IACpC,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;IAErC,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;gBAEzC,MAAM,EAAE,eAAe,EAAE,IAAI,SAAuB;IAsEhE,cAAc,CAAC,MAAM,EAAE,QAAQ;IAW/B,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAIhE,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAcnE,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc;IAItE,OAAO,CAAC,QAAQ;CA6BjB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Attributes, Metrics, ValueType, } from '@aztec/telemetry-client';
|
|
2
|
+
import { formatEther } from 'viem/utils';
|
|
3
|
+
export class SequencerPublisherMetrics {
|
|
4
|
+
constructor(client, name = 'SequencerPublisher') {
|
|
5
|
+
const meter = client.getMeter(name);
|
|
6
|
+
this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE, {
|
|
7
|
+
description: 'The gas price used for transactions',
|
|
8
|
+
unit: 'gwei',
|
|
9
|
+
valueType: ValueType.DOUBLE,
|
|
10
|
+
});
|
|
11
|
+
this.txCount = meter.createUpDownCounter(Metrics.L1_PUBLISHER_TX_COUNT, {
|
|
12
|
+
description: 'The number of transactions processed',
|
|
13
|
+
});
|
|
14
|
+
this.txDuration = meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION, {
|
|
15
|
+
description: 'The duration of transaction processing',
|
|
16
|
+
unit: 'ms',
|
|
17
|
+
valueType: ValueType.INT,
|
|
18
|
+
});
|
|
19
|
+
this.txGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS, {
|
|
20
|
+
description: 'The gas consumed by transactions',
|
|
21
|
+
unit: 'gas',
|
|
22
|
+
valueType: ValueType.INT,
|
|
23
|
+
});
|
|
24
|
+
this.txCalldataSize = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE, {
|
|
25
|
+
description: 'The size of the calldata in transactions',
|
|
26
|
+
unit: 'By',
|
|
27
|
+
valueType: ValueType.INT,
|
|
28
|
+
});
|
|
29
|
+
this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS, {
|
|
30
|
+
description: 'The gas consumed by the calldata in transactions',
|
|
31
|
+
unit: 'gas',
|
|
32
|
+
valueType: ValueType.INT,
|
|
33
|
+
});
|
|
34
|
+
this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED, {
|
|
35
|
+
description: 'The amount of blob gas used in transactions',
|
|
36
|
+
unit: 'gas',
|
|
37
|
+
valueType: ValueType.INT,
|
|
38
|
+
});
|
|
39
|
+
this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST, {
|
|
40
|
+
description: 'The gas cost of blobs in transactions',
|
|
41
|
+
unit: 'gwei',
|
|
42
|
+
valueType: ValueType.INT,
|
|
43
|
+
});
|
|
44
|
+
this.blobCountHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_COUNT, {
|
|
45
|
+
description: 'Number of blobs in L1 transactions',
|
|
46
|
+
unit: 'blobs',
|
|
47
|
+
valueType: ValueType.INT,
|
|
48
|
+
});
|
|
49
|
+
this.blobInclusionBlocksHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_INCLUSION_BLOCKS, {
|
|
50
|
+
description: 'Number of L1 blocks between blob tx submission and inclusion',
|
|
51
|
+
unit: 'blocks',
|
|
52
|
+
valueType: ValueType.INT,
|
|
53
|
+
});
|
|
54
|
+
this.blobTxSuccessCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_SUCCESS, {
|
|
55
|
+
description: 'Number of successful L1 transactions with blobs',
|
|
56
|
+
});
|
|
57
|
+
this.blobTxFailureCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_FAILURE, {
|
|
58
|
+
description: 'Number of failed L1 transactions with blobs',
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
recordFailedTx(txType) {
|
|
62
|
+
this.txCount.add(1, {
|
|
63
|
+
[Attributes.L1_TX_TYPE]: txType,
|
|
64
|
+
[Attributes.OK]: false,
|
|
65
|
+
});
|
|
66
|
+
if (txType === 'process') {
|
|
67
|
+
this.blobTxFailureCounter.add(1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
recordSubmitProof(durationMs, stats) {
|
|
71
|
+
this.recordTx('submitProof', durationMs, stats);
|
|
72
|
+
}
|
|
73
|
+
recordProcessBlockTx(durationMs, stats) {
|
|
74
|
+
this.recordTx('process', durationMs, stats);
|
|
75
|
+
if (stats.blobCount && stats.blobCount > 0) {
|
|
76
|
+
this.blobCountHistogram.record(stats.blobCount);
|
|
77
|
+
if (stats.inclusionBlocks !== undefined) {
|
|
78
|
+
this.blobInclusionBlocksHistogram.record(stats.inclusionBlocks);
|
|
79
|
+
}
|
|
80
|
+
this.blobTxSuccessCounter.add(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
recordClaimEpochProofRightTx(durationMs, stats) {
|
|
84
|
+
this.recordTx('claimEpochProofRight', durationMs, stats);
|
|
85
|
+
}
|
|
86
|
+
recordTx(txType, durationMs, stats) {
|
|
87
|
+
const attributes = {
|
|
88
|
+
[Attributes.L1_TX_TYPE]: txType,
|
|
89
|
+
[Attributes.L1_SENDER]: stats.sender,
|
|
90
|
+
};
|
|
91
|
+
this.txCount.add(1, {
|
|
92
|
+
...attributes,
|
|
93
|
+
[Attributes.OK]: true,
|
|
94
|
+
});
|
|
95
|
+
this.txDuration.record(Math.ceil(durationMs), attributes);
|
|
96
|
+
this.txGas.record(
|
|
97
|
+
// safe to downcast - total block limit is 30M gas which fits in a JS number
|
|
98
|
+
Number(stats.gasUsed), attributes);
|
|
99
|
+
this.txCalldataGas.record(stats.calldataGas, attributes);
|
|
100
|
+
this.txCalldataSize.record(stats.calldataSize, attributes);
|
|
101
|
+
this.txBlobDataGasCost.record(Number(stats.blobDataGas), attributes);
|
|
102
|
+
this.txBlobDataGasUsed.record(Number(stats.blobGasUsed), attributes);
|
|
103
|
+
try {
|
|
104
|
+
this.gasPrice.record(parseInt(formatEther(stats.gasPrice, 'gwei'), 10));
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
// ignore
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci1tZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLW1ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFVBQVUsRUFFVixPQUFPLEVBR1AsU0FBUyxHQUNWLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUl6QyxNQUFNLE9BQU8seUJBQXlCO0lBZ0JwQyxZQUFZLE1BQXVCLEVBQUUsSUFBSSxHQUFHLG9CQUFvQjtRQUM5RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUU7WUFDcEUsV0FBVyxFQUFFLHFDQUFxQztZQUNsRCxJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDdEUsV0FBVyxFQUFFLHNDQUFzQztTQUNwRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFO1lBQ3hFLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUc7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUM5RCxXQUFXLEVBQUUsa0NBQWtDO1lBQy9DLElB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
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
4
|
+
import { type EpochProofQuote, type L2Block, type TxHash } from '@aztec/circuit-types';
|
|
5
|
+
import { type BlockHeader, EthAddress } from '@aztec/circuits.js';
|
|
6
|
+
import { type EpochCache } from '@aztec/epoch-cache';
|
|
7
|
+
import { type ForwarderContract, type GasPrice, type GovernanceProposerContract, type L1BlobInputs, type L1ContractsConfig, type L1GasConfig, type L1TxRequest, type L1TxUtilsWithBlobs, RollupContract, type SlashingProposerContract, type TransactionStats } from '@aztec/ethereum';
|
|
8
|
+
import { Blob } from '@aztec/foundation/blob';
|
|
9
|
+
import { type Signature } from '@aztec/foundation/eth-signature';
|
|
10
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
11
|
+
import { type TransactionReceipt } from 'viem';
|
|
12
|
+
import { type PublisherConfig, type TxSenderConfig } from './config.js';
|
|
13
|
+
export declare enum VoteType {
|
|
14
|
+
GOVERNANCE = 0,
|
|
15
|
+
SLASHING = 1
|
|
16
|
+
}
|
|
17
|
+
type GetSlashPayloadCallBack = (slotNumber: bigint) => Promise<EthAddress | undefined>;
|
|
18
|
+
type Action = 'propose' | 'claim' | 'governance-vote' | 'slashing-vote';
|
|
19
|
+
interface RequestWithExpiry {
|
|
20
|
+
action: Action;
|
|
21
|
+
request: L1TxRequest;
|
|
22
|
+
lastValidL2Slot: bigint;
|
|
23
|
+
gasConfig?: L1GasConfig;
|
|
24
|
+
blobConfig?: L1BlobInputs;
|
|
25
|
+
onResult?: (request: L1TxRequest, result?: {
|
|
26
|
+
receipt: TransactionReceipt;
|
|
27
|
+
gasPrice: GasPrice;
|
|
28
|
+
stats?: TransactionStats;
|
|
29
|
+
errorMsg?: string;
|
|
30
|
+
}) => void;
|
|
31
|
+
}
|
|
32
|
+
export declare class SequencerPublisher {
|
|
33
|
+
private interrupted;
|
|
34
|
+
private metrics;
|
|
35
|
+
private epochCache;
|
|
36
|
+
private forwarderContract;
|
|
37
|
+
protected governanceLog: import("@aztec/foundation/log").Logger;
|
|
38
|
+
protected governanceProposerAddress?: EthAddress;
|
|
39
|
+
private governancePayload;
|
|
40
|
+
protected slashingLog: import("@aztec/foundation/log").Logger;
|
|
41
|
+
protected slashingProposerAddress?: EthAddress;
|
|
42
|
+
private getSlashPayload?;
|
|
43
|
+
private myLastVotes;
|
|
44
|
+
protected log: import("@aztec/foundation/log").Logger;
|
|
45
|
+
protected ethereumSlotDuration: bigint;
|
|
46
|
+
private blobSinkClient;
|
|
47
|
+
static PROPOSE_GAS_GUESS: bigint;
|
|
48
|
+
static PROPOSE_AND_CLAIM_GAS_GUESS: bigint;
|
|
49
|
+
l1TxUtils: L1TxUtilsWithBlobs;
|
|
50
|
+
rollupContract: RollupContract;
|
|
51
|
+
govProposerContract: GovernanceProposerContract;
|
|
52
|
+
slashingProposerContract: SlashingProposerContract;
|
|
53
|
+
protected requests: RequestWithExpiry[];
|
|
54
|
+
constructor(config: TxSenderConfig & PublisherConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>, deps: {
|
|
55
|
+
telemetry?: TelemetryClient;
|
|
56
|
+
blobSinkClient?: BlobSinkClientInterface;
|
|
57
|
+
forwarderContract: ForwarderContract;
|
|
58
|
+
l1TxUtils: L1TxUtilsWithBlobs;
|
|
59
|
+
rollupContract: RollupContract;
|
|
60
|
+
slashingProposerContract: SlashingProposerContract;
|
|
61
|
+
governanceProposerContract: GovernanceProposerContract;
|
|
62
|
+
epochCache: EpochCache;
|
|
63
|
+
});
|
|
64
|
+
registerSlashPayloadGetter(callback: GetSlashPayloadCallBack): void;
|
|
65
|
+
getForwarderAddress(): EthAddress;
|
|
66
|
+
getSenderAddress(): EthAddress;
|
|
67
|
+
getGovernancePayload(): EthAddress;
|
|
68
|
+
setGovernancePayload(payload: EthAddress): void;
|
|
69
|
+
addRequest(request: RequestWithExpiry): void;
|
|
70
|
+
getCurrentL2Slot(): bigint;
|
|
71
|
+
/**
|
|
72
|
+
* Sends all requests that are still valid.
|
|
73
|
+
* @returns one of:
|
|
74
|
+
* - A receipt and stats if the tx succeeded
|
|
75
|
+
* - a receipt and errorMsg if it failed on L1
|
|
76
|
+
* - undefined if no valid requests are found OR the tx failed to send.
|
|
77
|
+
*/
|
|
78
|
+
sendRequests(): Promise<{
|
|
79
|
+
receipt: TransactionReceipt<bigint, number, "success" | "reverted", import("viem").TransactionType>;
|
|
80
|
+
gasPrice: GasPrice;
|
|
81
|
+
stats: TransactionStats | undefined;
|
|
82
|
+
errorMsg?: undefined;
|
|
83
|
+
} | {
|
|
84
|
+
receipt: TransactionReceipt<bigint, number, "success" | "reverted", import("viem").TransactionType>;
|
|
85
|
+
gasPrice: GasPrice;
|
|
86
|
+
errorMsg: string | undefined;
|
|
87
|
+
stats?: undefined;
|
|
88
|
+
} | undefined>;
|
|
89
|
+
private callbackBundledTransactions;
|
|
90
|
+
/**
|
|
91
|
+
* @notice Will call `canProposeAtNextEthBlock` to make sure that it is possible to propose
|
|
92
|
+
* @param tipArchive - The archive to check
|
|
93
|
+
* @returns The slot and block number if it is possible to propose, undefined otherwise
|
|
94
|
+
*/
|
|
95
|
+
canProposeAtNextEthBlock(tipArchive: Buffer): Promise<[bigint, bigint] | undefined>;
|
|
96
|
+
/**
|
|
97
|
+
* @returns The epoch that is currently claimable, undefined otherwise
|
|
98
|
+
*/
|
|
99
|
+
getClaimableEpoch(): Promise<bigint | undefined>;
|
|
100
|
+
/**
|
|
101
|
+
* @notice Will filter out invalid quotes according to L1
|
|
102
|
+
* @param quotes - The quotes to filter
|
|
103
|
+
* @returns The filtered quotes
|
|
104
|
+
*/
|
|
105
|
+
filterValidQuotes(quotes: EpochProofQuote[]): Promise<EpochProofQuote[]>;
|
|
106
|
+
/**
|
|
107
|
+
* @notice Will call `validateHeader` to make sure that it is possible to propose
|
|
108
|
+
*
|
|
109
|
+
* @dev Throws if unable to propose
|
|
110
|
+
*
|
|
111
|
+
* @param header - The header to propose
|
|
112
|
+
* @param digest - The digest that attestations are signing over
|
|
113
|
+
*
|
|
114
|
+
*/
|
|
115
|
+
validateBlockForSubmission(header: BlockHeader, attestationData?: {
|
|
116
|
+
digest: Buffer;
|
|
117
|
+
signatures: Signature[];
|
|
118
|
+
}): Promise<bigint>;
|
|
119
|
+
getCurrentEpochCommittee(): Promise<EthAddress[]>;
|
|
120
|
+
private enqueueCastVoteHelper;
|
|
121
|
+
private getVoteConfig;
|
|
122
|
+
/**
|
|
123
|
+
* Enqueues a castVote transaction to cast a vote for a given slot number.
|
|
124
|
+
* @param slotNumber - The slot number to cast a vote for.
|
|
125
|
+
* @param timestamp - The timestamp of the slot to cast a vote for.
|
|
126
|
+
* @param voteType - The type of vote to cast.
|
|
127
|
+
* @returns True if the vote was successfully enqueued, false otherwise.
|
|
128
|
+
*/
|
|
129
|
+
enqueueCastVote(slotNumber: bigint, timestamp: bigint, voteType: VoteType): Promise<boolean>;
|
|
130
|
+
/**
|
|
131
|
+
* Proposes a L2 block on L1.
|
|
132
|
+
*
|
|
133
|
+
* @param block - L2 block to propose.
|
|
134
|
+
* @returns True if the tx has been enqueued, throws otherwise. See #9315
|
|
135
|
+
*/
|
|
136
|
+
enqueueProposeL2Block(block: L2Block, attestations?: Signature[], txHashes?: TxHash[], opts?: {
|
|
137
|
+
txTimeoutAt?: Date;
|
|
138
|
+
}): Promise<boolean>;
|
|
139
|
+
/** Enqueues a claimEpochProofRight transaction to submit a chosen prover quote for the previous epoch. */
|
|
140
|
+
enqueueClaimEpochProofRight(proofQuote: EpochProofQuote): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
|
|
143
|
+
* Be warned, the call may return false even if the tx subsequently gets successfully mined.
|
|
144
|
+
* In practice this shouldn't matter, as we'll only ever be calling `interrupt` when we know it's going to fail.
|
|
145
|
+
* A call to `restart` is required before you can continue publishing.
|
|
146
|
+
*/
|
|
147
|
+
interrupt(): void;
|
|
148
|
+
/** Restarts the publisher after calling `interrupt`. */
|
|
149
|
+
restart(): void;
|
|
150
|
+
private prepareProposeTx;
|
|
151
|
+
private addProposeTx;
|
|
152
|
+
/**
|
|
153
|
+
* Send blobs to the blob sink
|
|
154
|
+
*
|
|
155
|
+
* If a blob sink url is configured, then we send blobs to the blob sink
|
|
156
|
+
* - for now we use the blockHash as the identifier for the blobs;
|
|
157
|
+
* In the future this will move to be the beacon block id - which takes a bit more work
|
|
158
|
+
* to calculate and will need to be mocked in e2e tests
|
|
159
|
+
*/
|
|
160
|
+
protected sendBlobsToBlobSink(blockHash: string, blobs: Blob[]): Promise<boolean>;
|
|
161
|
+
}
|
|
162
|
+
export {};
|
|
163
|
+
//# sourceMappingURL=sequencer-publisher.d.ts.map
|