@aztec/sequencer-client 0.0.1-commit.9593d84 → 0.0.1-commit.967fc6998
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 +21 -16
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +45 -27
- package/dest/config.d.ts +14 -8
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +83 -35
- package/dest/global_variable_builder/global_builder.d.ts +20 -13
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +51 -41
- package/dest/index.d.ts +2 -3
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/publisher/config.d.ts +41 -20
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +109 -39
- 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 +15 -6
- package/dest/publisher/sequencer-publisher-factory.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-factory.js +14 -3
- package/dest/publisher/sequencer-publisher-metrics.d.ts +3 -3
- package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-metrics.js +23 -86
- package/dest/publisher/sequencer-publisher.d.ts +69 -47
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +847 -145
- package/dest/sequencer/checkpoint_proposal_job.d.ts +102 -0
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -0
- package/dest/sequencer/checkpoint_proposal_job.js +1219 -0
- package/dest/sequencer/checkpoint_voter.d.ts +35 -0
- package/dest/sequencer/checkpoint_voter.d.ts.map +1 -0
- package/dest/sequencer/checkpoint_voter.js +109 -0
- package/dest/sequencer/config.d.ts +3 -2
- package/dest/sequencer/config.d.ts.map +1 -1
- package/dest/sequencer/events.d.ts +46 -0
- package/dest/sequencer/events.d.ts.map +1 -0
- package/dest/sequencer/events.js +1 -0
- package/dest/sequencer/index.d.ts +4 -2
- package/dest/sequencer/index.d.ts.map +1 -1
- package/dest/sequencer/index.js +3 -1
- package/dest/sequencer/metrics.d.ts +38 -6
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +216 -72
- package/dest/sequencer/sequencer.d.ts +119 -133
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +717 -625
- package/dest/sequencer/timetable.d.ts +51 -14
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +145 -59
- package/dest/sequencer/types.d.ts +3 -0
- package/dest/sequencer/types.d.ts.map +1 -0
- package/dest/sequencer/types.js +1 -0
- package/dest/sequencer/utils.d.ts +14 -8
- package/dest/sequencer/utils.d.ts.map +1 -1
- package/dest/sequencer/utils.js +7 -4
- package/dest/test/index.d.ts +6 -7
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/mock_checkpoint_builder.d.ts +97 -0
- package/dest/test/mock_checkpoint_builder.d.ts.map +1 -0
- package/dest/test/mock_checkpoint_builder.js +222 -0
- package/dest/test/utils.d.ts +53 -0
- package/dest/test/utils.d.ts.map +1 -0
- package/dest/test/utils.js +104 -0
- package/package.json +32 -30
- package/src/client/sequencer-client.ts +54 -47
- package/src/config.ts +95 -44
- package/src/global_variable_builder/global_builder.ts +65 -61
- package/src/index.ts +1 -7
- package/src/publisher/config.ts +131 -50
- 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 +28 -10
- package/src/publisher/sequencer-publisher-metrics.ts +19 -71
- package/src/publisher/sequencer-publisher.ts +528 -184
- package/src/sequencer/README.md +531 -0
- package/src/sequencer/checkpoint_proposal_job.ts +926 -0
- package/src/sequencer/checkpoint_voter.ts +130 -0
- package/src/sequencer/config.ts +2 -1
- package/src/sequencer/events.ts +27 -0
- package/src/sequencer/index.ts +3 -1
- package/src/sequencer/metrics.ts +268 -82
- package/src/sequencer/sequencer.ts +464 -831
- package/src/sequencer/timetable.ts +175 -80
- package/src/sequencer/types.ts +6 -0
- package/src/sequencer/utils.ts +18 -9
- package/src/test/index.ts +5 -6
- package/src/test/mock_checkpoint_builder.ts +320 -0
- package/src/test/utils.ts +167 -0
- package/dest/sequencer/block_builder.d.ts +0 -27
- package/dest/sequencer/block_builder.d.ts.map +0 -1
- package/dest/sequencer/block_builder.js +0 -134
- package/dest/tx_validator/nullifier_cache.d.ts +0 -14
- package/dest/tx_validator/nullifier_cache.d.ts.map +0 -1
- package/dest/tx_validator/nullifier_cache.js +0 -24
- package/dest/tx_validator/tx_validator_factory.d.ts +0 -17
- package/dest/tx_validator/tx_validator_factory.d.ts.map +0 -1
- package/dest/tx_validator/tx_validator_factory.js +0 -53
- package/src/sequencer/block_builder.ts +0 -222
- package/src/tx_validator/nullifier_cache.ts +0 -30
- package/src/tx_validator/tx_validator_factory.ts +0 -132
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { type Logger } from '@aztec/aztec.js/log';
|
|
3
|
-
import type {
|
|
3
|
+
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
4
4
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
5
|
-
import type { GovernanceProposerContract,
|
|
6
|
-
import type {
|
|
5
|
+
import type { GovernanceProposerContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
6
|
+
import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
7
|
+
import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
7
8
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
8
9
|
import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
9
10
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -20,11 +21,12 @@ export declare class SequencerPublisherFactory {
|
|
|
20
21
|
private publisherMetrics;
|
|
21
22
|
/** Stores the last slot in which every action was carried out by a publisher */
|
|
22
23
|
private lastActions;
|
|
24
|
+
private nodeKeyStore;
|
|
23
25
|
private logger;
|
|
24
26
|
constructor(sequencerConfig: SequencerClientConfig, deps: {
|
|
25
27
|
telemetry: TelemetryClient;
|
|
26
|
-
publisherManager: PublisherManager<
|
|
27
|
-
|
|
28
|
+
publisherManager: PublisherManager<L1TxUtils>;
|
|
29
|
+
blobClient: BlobClientInterface;
|
|
28
30
|
dateProvider: DateProvider;
|
|
29
31
|
epochCache: EpochCache;
|
|
30
32
|
rollupContract: RollupContract;
|
|
@@ -33,11 +35,18 @@ export declare class SequencerPublisherFactory {
|
|
|
33
35
|
nodeKeyStore: NodeKeystoreAdapter;
|
|
34
36
|
logger?: Logger;
|
|
35
37
|
});
|
|
38
|
+
/**
|
|
39
|
+
* Updates the node keystore adapter used for publisher lookups.
|
|
40
|
+
* Called when the keystore is reloaded at runtime to reflect new validator-publisher mappings.
|
|
41
|
+
*/
|
|
42
|
+
updateNodeKeyStore(adapter: NodeKeystoreAdapter): void;
|
|
36
43
|
/**
|
|
37
44
|
* Creates a new SequencerPublisher instance.
|
|
38
45
|
* @param _validatorAddress - The address of the validator that will be using the publisher.
|
|
39
46
|
* @returns A new SequencerPublisher instance.
|
|
40
47
|
*/
|
|
41
48
|
create(validatorAddress?: EthAddress): Promise<AttestorPublisherPair>;
|
|
49
|
+
/** Interrupts all publishers managed by this factory. Used during sequencer shutdown. */
|
|
50
|
+
interruptAll(): void;
|
|
42
51
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci1mYWN0b3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL3NlcXVlbmNlci1wdWJsaXNoZXItZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFM0YsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxRCxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRSxNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsZUFBZSxFQUFFLFVBQVUsQ0FBQztJQUM1QixTQUFTLEVBQUUsa0JBQWtCLENBQUM7Q0FDL0IsQ0FBQztBQUVGLHFCQUFhLHlCQUF5QjtJQVdsQyxPQUFPLENBQUMsZUFBZTtJQUN2QixPQUFPLENBQUMsSUFBSTtJQVhkLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBNEI7SUFFcEQsZ0ZBQWdGO0lBQ2hGLE9BQU8sQ0FBQyxXQUFXLENBQTJDO0lBRTlELE9BQU8sQ0FBQyxZQUFZLENBQXNCO0lBRTFDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFFdkIsWUFDVSxlQUFlLEVBQUUscUJBQXFCLEVBQ3RDLElBQUksRUFBRTtRQUNaLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDM0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDO1FBQ2hDLFlBQVksRUFBRSxZQUFZLENBQUM7UUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUN2QixjQUFjLEVBQUUsY0FBYyxDQUFDO1FBQy9CLDBCQUEwQixFQUFFLDBCQUEwQixDQUFDO1FBQ3ZELG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO1FBQzNDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztRQUNsQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDakIsRUFLRjtJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxtQkFBbUIsR0FBRyxJQUFJLENBRTVEO0lBRUQ7Ozs7T0FJRztJQUNVLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FxQ2pGO0lBRUQseUZBQXlGO0lBQ2xGLFlBQVksSUFBSSxJQUFJLENBRTFCO0NBQ0YifQ==
|
|
@@ -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,2BAA2B,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,
|
|
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,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,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;IAWlC,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,IAAI;IAXd,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAA2C;IAE9D,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO,CAAC,MAAM,CAAS;IAEvB,YACU,eAAe,EAAE,qBAAqB,EACtC,IAAI,EAAE;QACZ,SAAS,EAAE,eAAe,CAAC;QAC3B,gBAAgB,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,UAAU,EAAE,mBAAmB,CAAC;QAChC,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,EAKF;IAED;;;OAGG;IACI,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAE5D;IAED;;;;OAIG;IACU,MAAM,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqCjF;IAED,yFAAyF;IAClF,YAAY,IAAI,IAAI,CAE1B;CACF"}
|
|
@@ -6,6 +6,7 @@ export class SequencerPublisherFactory {
|
|
|
6
6
|
deps;
|
|
7
7
|
publisherMetrics;
|
|
8
8
|
/** Stores the last slot in which every action was carried out by a publisher */ lastActions;
|
|
9
|
+
nodeKeyStore;
|
|
9
10
|
logger;
|
|
10
11
|
constructor(sequencerConfig, deps){
|
|
11
12
|
this.sequencerConfig = sequencerConfig;
|
|
@@ -13,6 +14,13 @@ export class SequencerPublisherFactory {
|
|
|
13
14
|
this.lastActions = {};
|
|
14
15
|
this.publisherMetrics = new SequencerPublisherMetrics(deps.telemetry, 'SequencerPublisher');
|
|
15
16
|
this.logger = deps.logger ?? createLogger('sequencer');
|
|
17
|
+
this.nodeKeyStore = this.deps.nodeKeyStore;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Updates the node keystore adapter used for publisher lookups.
|
|
21
|
+
* Called when the keystore is reloaded at runtime to reflect new validator-publisher mappings.
|
|
22
|
+
*/ updateNodeKeyStore(adapter) {
|
|
23
|
+
this.nodeKeyStore = adapter;
|
|
16
24
|
}
|
|
17
25
|
/**
|
|
18
26
|
* Creates a new SequencerPublisher instance.
|
|
@@ -20,19 +28,19 @@ export class SequencerPublisherFactory {
|
|
|
20
28
|
* @returns A new SequencerPublisher instance.
|
|
21
29
|
*/ async create(validatorAddress) {
|
|
22
30
|
// If we have been given an attestor address we must only allow publishers permitted for that attestor
|
|
23
|
-
const allowedPublishers = !validatorAddress ? [] : this.
|
|
31
|
+
const allowedPublishers = !validatorAddress ? [] : this.nodeKeyStore.getPublisherAddresses(validatorAddress);
|
|
24
32
|
const filter = !validatorAddress ? ()=>true : (utils)=>{
|
|
25
33
|
const publisherAddress = utils.getSenderAddress();
|
|
26
34
|
return allowedPublishers.some((allowedPublisher)=>allowedPublisher.equals(publisherAddress));
|
|
27
35
|
};
|
|
28
36
|
const l1Publisher = await this.deps.publisherManager.getAvailablePublisher(filter);
|
|
29
|
-
const attestorAddress = validatorAddress ?? this.
|
|
37
|
+
const attestorAddress = validatorAddress ?? this.nodeKeyStore.getAttestorForPublisher(l1Publisher.getSenderAddress());
|
|
30
38
|
const rollup = this.deps.rollupContract;
|
|
31
39
|
const slashingProposerContract = await rollup.getSlashingProposer();
|
|
32
40
|
const publisher = new SequencerPublisher(this.sequencerConfig, {
|
|
33
41
|
l1TxUtils: l1Publisher,
|
|
34
42
|
telemetry: this.deps.telemetry,
|
|
35
|
-
|
|
43
|
+
blobClient: this.deps.blobClient,
|
|
36
44
|
rollupContract: this.deps.rollupContract,
|
|
37
45
|
epochCache: this.deps.epochCache,
|
|
38
46
|
governanceProposerContract: this.deps.governanceProposerContract,
|
|
@@ -48,4 +56,7 @@ export class SequencerPublisherFactory {
|
|
|
48
56
|
publisher
|
|
49
57
|
};
|
|
50
58
|
}
|
|
59
|
+
/** Interrupts all publishers managed by this factory. Used during sequencer shutdown. */ interruptAll() {
|
|
60
|
+
this.deps.publisherManager.interrupt();
|
|
61
|
+
}
|
|
51
62
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { L1PublishCheckpointStats } from '@aztec/stdlib/stats';
|
|
2
2
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
3
|
export type L1TxType = 'process';
|
|
4
4
|
export declare class SequencerPublisherMetrics {
|
|
@@ -19,8 +19,8 @@ export declare class SequencerPublisherMetrics {
|
|
|
19
19
|
private senderBalance;
|
|
20
20
|
constructor(client: TelemetryClient, name?: string, logger?: import("@aztec/aztec.js/log").Logger);
|
|
21
21
|
recordFailedTx(txType: L1TxType): void;
|
|
22
|
-
recordProcessBlockTx(durationMs: number, stats:
|
|
22
|
+
recordProcessBlockTx(durationMs: number, stats: L1PublishCheckpointStats): void;
|
|
23
23
|
recordSenderBalance(wei: bigint, senderAddress: string): void;
|
|
24
24
|
private recordTx;
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci1tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL3NlcXVlbmNlci1wdWJsaXNoZXItbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRixPQUFPLEVBS0wsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFJakMsTUFBTSxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUM7QUFFakMscUJBQWEseUJBQXlCO0lBc0JsQyxPQUFPLENBQUMsTUFBTTtJQXJCaEIsT0FBTyxDQUFDLFFBQVEsQ0FBWTtJQUU1QixPQUFPLENBQUMsT0FBTyxDQUFnQjtJQUMvQixPQUFPLENBQUMsVUFBVSxDQUFZO0lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQVk7SUFDekIsT0FBTyxDQUFDLGNBQWMsQ0FBWTtJQUNsQyxPQUFPLENBQUMsYUFBYSxDQUFZO0lBQ2pDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBWTtJQUNyQyxPQUFPLENBQUMsaUJBQWlCLENBQVk7SUFDckMsT0FBTyxDQUFDLFVBQVUsQ0FBWTtJQUU5QixPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFZO0lBQy9DLE9BQU8sQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQVk7SUFDekQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBZ0I7SUFDckQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBZ0I7SUFFckQsT0FBTyxDQUFDLGFBQWEsQ0FBUTtJQUU3QixZQUNFLE1BQU0sRUFBRSxlQUFlLEVBQ3ZCLElBQUksU0FBdUIsRUFDbkIsTUFBTSx1Q0FBOEMsRUFrQzdEO0lBRUQsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLFFBUzlCO0lBRUQsb0JBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLFFBWXZFO0lBRUQsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUtyRDtJQUVELE9BQU8sQ0FBQyxRQUFRO0NBdUNqQiJ9
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher-metrics.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-metrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAkB,MAAM,qBAAqB,CAAC;AACpF,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;IAE7B,YACE,MAAM,EAAE,eAAe,EACvB,IAAI,SAAuB,EACnB,MAAM,uCAA8C,EAkC7D;IAED,cAAc,CAAC,MAAM,EAAE,QAAQ,QAS9B;IAED,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,QAYvE;IAED,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAKrD;IAED,OAAO,CAAC,QAAQ;CAuCjB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
-
import { Attributes, Metrics,
|
|
2
|
+
import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
|
|
3
3
|
import { formatEther } from 'viem/utils';
|
|
4
4
|
export class SequencerPublisherMetrics {
|
|
5
5
|
logger;
|
|
@@ -20,91 +20,28 @@ export class SequencerPublisherMetrics {
|
|
|
20
20
|
constructor(client, name = 'SequencerPublisher', logger = createLogger('sequencer:publisher:metrics')){
|
|
21
21
|
this.logger = logger;
|
|
22
22
|
const meter = client.getMeter(name);
|
|
23
|
-
this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
});
|
|
46
|
-
this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS, {
|
|
47
|
-
description: 'The gas consumed by the calldata in transactions',
|
|
48
|
-
unit: 'gas',
|
|
49
|
-
valueType: ValueType.INT
|
|
50
|
-
});
|
|
51
|
-
this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED, {
|
|
52
|
-
description: 'The amount of blob gas used in transactions',
|
|
53
|
-
unit: 'gas',
|
|
54
|
-
valueType: ValueType.INT
|
|
55
|
-
});
|
|
56
|
-
this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST, {
|
|
57
|
-
description: 'The gas cost of blobs in transactions',
|
|
58
|
-
unit: 'gwei',
|
|
59
|
-
valueType: ValueType.INT
|
|
60
|
-
});
|
|
61
|
-
this.blobCountHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_COUNT, {
|
|
62
|
-
description: 'Number of blobs in L1 transactions',
|
|
63
|
-
unit: 'blobs',
|
|
64
|
-
valueType: ValueType.INT
|
|
65
|
-
});
|
|
66
|
-
this.blobInclusionBlocksHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_INCLUSION_BLOCKS, {
|
|
67
|
-
description: 'Number of L1 blocks between blob tx submission and inclusion',
|
|
68
|
-
unit: 'blocks',
|
|
69
|
-
valueType: ValueType.INT
|
|
70
|
-
});
|
|
71
|
-
this.blobTxSuccessCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_SUCCESS, {
|
|
72
|
-
description: 'Number of successful L1 transactions with blobs'
|
|
73
|
-
});
|
|
74
|
-
this.blobTxFailureCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_FAILURE, {
|
|
75
|
-
description: 'Number of failed L1 transactions with blobs'
|
|
76
|
-
});
|
|
77
|
-
this.txTotalFee = meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE, {
|
|
78
|
-
description: 'How much L1 tx costs',
|
|
79
|
-
unit: 'eth',
|
|
80
|
-
valueType: ValueType.DOUBLE,
|
|
81
|
-
advice: {
|
|
82
|
-
explicitBucketBoundaries: [
|
|
83
|
-
0.001,
|
|
84
|
-
0.002,
|
|
85
|
-
0.004,
|
|
86
|
-
0.008,
|
|
87
|
-
0.01,
|
|
88
|
-
0.02,
|
|
89
|
-
0.04,
|
|
90
|
-
0.08,
|
|
91
|
-
0.1,
|
|
92
|
-
0.2,
|
|
93
|
-
0.4,
|
|
94
|
-
0.8,
|
|
95
|
-
1,
|
|
96
|
-
1.2,
|
|
97
|
-
1.4,
|
|
98
|
-
1.8,
|
|
99
|
-
2
|
|
100
|
-
]
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
this.senderBalance = meter.createGauge(Metrics.L1_PUBLISHER_BALANCE, {
|
|
104
|
-
unit: 'eth',
|
|
105
|
-
description: 'The balance of the sender address',
|
|
106
|
-
valueType: ValueType.DOUBLE
|
|
107
|
-
});
|
|
23
|
+
this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE);
|
|
24
|
+
this.txCount = createUpDownCounterWithDefault(meter, Metrics.L1_PUBLISHER_TX_COUNT, {
|
|
25
|
+
[Attributes.L1_TX_TYPE]: [
|
|
26
|
+
'process'
|
|
27
|
+
],
|
|
28
|
+
[Attributes.OK]: [
|
|
29
|
+
true,
|
|
30
|
+
false
|
|
31
|
+
]
|
|
32
|
+
});
|
|
33
|
+
this.txDuration = meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION);
|
|
34
|
+
this.txGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS);
|
|
35
|
+
this.txCalldataSize = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE);
|
|
36
|
+
this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS);
|
|
37
|
+
this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED);
|
|
38
|
+
this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST);
|
|
39
|
+
this.blobCountHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_COUNT);
|
|
40
|
+
this.blobInclusionBlocksHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_INCLUSION_BLOCKS);
|
|
41
|
+
this.blobTxSuccessCounter = createUpDownCounterWithDefault(meter, Metrics.L1_PUBLISHER_BLOB_TX_SUCCESS);
|
|
42
|
+
this.blobTxFailureCounter = createUpDownCounterWithDefault(meter, Metrics.L1_PUBLISHER_BLOB_TX_FAILURE);
|
|
43
|
+
this.txTotalFee = meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE);
|
|
44
|
+
this.senderBalance = meter.createGauge(Metrics.L1_PUBLISHER_BALANCE);
|
|
108
45
|
}
|
|
109
46
|
recordFailedTx(txType) {
|
|
110
47
|
this.txCount.add(1, {
|
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
1
|
+
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
3
2
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
4
|
-
import
|
|
5
|
-
import type
|
|
6
|
-
import {
|
|
3
|
+
import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
4
|
+
import { type EmpireSlashingProposerContract, type GovernanceProposerContract, RollupContract, type TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import { type L1FeeAnalysisResult, L1FeeAnalyzer } from '@aztec/ethereum/l1-fee-analysis';
|
|
6
|
+
import { type L1BlobInputs, type L1TxConfig, type L1TxRequest, type L1TxUtils, type TransactionStats } from '@aztec/ethereum/l1-tx-utils';
|
|
7
|
+
import { FormattedViemError } from '@aztec/ethereum/utils';
|
|
8
|
+
import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
9
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
7
10
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
8
11
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
9
|
-
import type { Fr } from '@aztec/foundation/fields';
|
|
10
12
|
import { type Logger } from '@aztec/foundation/log';
|
|
11
13
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
12
14
|
import { type ProposerSlashAction } from '@aztec/slasher';
|
|
13
|
-
import { CommitteeAttestationsAndSigners, type
|
|
15
|
+
import { CommitteeAttestationsAndSigners, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
16
|
+
import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
14
17
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
15
18
|
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
16
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
19
|
+
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
17
20
|
import { type TransactionReceipt, type TypedDataDefinition } from 'viem';
|
|
18
|
-
import type {
|
|
21
|
+
import type { SequencerPublisherConfig } from './config.js';
|
|
19
22
|
import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
20
23
|
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"];
|
|
21
24
|
export type Action = (typeof Actions)[number];
|
|
22
25
|
export declare const compareActions: (a: "create-empire-payload" | "empire-slashing-signal" | "execute-empire-payload" | "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses", b: "create-empire-payload" | "empire-slashing-signal" | "execute-empire-payload" | "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses") => number;
|
|
23
|
-
export type
|
|
26
|
+
export type InvalidateCheckpointRequest = {
|
|
24
27
|
request: L1TxRequest;
|
|
25
28
|
reason: 'invalid-attestation' | 'insufficient-attestations';
|
|
26
29
|
gasUsed: bigint;
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
checkpointNumber: CheckpointNumber;
|
|
31
|
+
forcePendingCheckpointNumber: CheckpointNumber;
|
|
29
32
|
};
|
|
30
33
|
interface RequestWithExpiry {
|
|
31
34
|
action: Action;
|
|
@@ -44,27 +47,36 @@ export declare class SequencerPublisher {
|
|
|
44
47
|
private interrupted;
|
|
45
48
|
private metrics;
|
|
46
49
|
epochCache: EpochCache;
|
|
50
|
+
private failedTxStore?;
|
|
47
51
|
protected governanceLog: Logger;
|
|
48
52
|
protected slashingLog: Logger;
|
|
49
53
|
protected lastActions: Partial<Record<Action, SlotNumber>>;
|
|
54
|
+
private isPayloadEmptyCache;
|
|
55
|
+
private payloadProposedCache;
|
|
50
56
|
protected log: Logger;
|
|
51
57
|
protected ethereumSlotDuration: bigint;
|
|
52
|
-
private
|
|
58
|
+
private blobClient;
|
|
53
59
|
/** Address to use for simulations in fisherman mode (actual proposer's address) */
|
|
54
60
|
private proposerAddressForSimulation?;
|
|
55
|
-
|
|
61
|
+
/** L1 fee analyzer for fisherman mode */
|
|
62
|
+
private l1FeeAnalyzer?;
|
|
63
|
+
/** Fee asset price oracle for computing price modifiers from Uniswap V4 */
|
|
64
|
+
private feeAssetPriceOracle;
|
|
56
65
|
static MULTICALL_OVERHEAD_GAS_GUESS: bigint;
|
|
57
66
|
static VOTE_GAS_GUESS: bigint;
|
|
58
|
-
l1TxUtils:
|
|
67
|
+
l1TxUtils: L1TxUtils;
|
|
59
68
|
rollupContract: RollupContract;
|
|
60
69
|
govProposerContract: GovernanceProposerContract;
|
|
61
70
|
slashingProposerContract: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
|
|
62
71
|
slashFactoryContract: SlashFactoryContract;
|
|
72
|
+
readonly tracer: Tracer;
|
|
63
73
|
protected requests: RequestWithExpiry[];
|
|
64
|
-
constructor(config:
|
|
74
|
+
constructor(config: Pick<SequencerPublisherConfig, 'fishermanMode' | 'l1TxFailedStore'> & Pick<L1ContractsConfig, 'ethereumSlotDuration'> & {
|
|
75
|
+
l1ChainId: number;
|
|
76
|
+
}, deps: {
|
|
65
77
|
telemetry?: TelemetryClient;
|
|
66
|
-
|
|
67
|
-
l1TxUtils:
|
|
78
|
+
blobClient: BlobClientInterface;
|
|
79
|
+
l1TxUtils: L1TxUtils;
|
|
68
80
|
rollupContract: RollupContract;
|
|
69
81
|
slashingProposerContract: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
|
|
70
82
|
governanceProposerContract: GovernanceProposerContract;
|
|
@@ -75,8 +87,22 @@ export declare class SequencerPublisher {
|
|
|
75
87
|
lastActions: Partial<Record<Action, SlotNumber>>;
|
|
76
88
|
log?: Logger;
|
|
77
89
|
});
|
|
90
|
+
/**
|
|
91
|
+
* Backs up a failed L1 transaction to the configured store for debugging.
|
|
92
|
+
* Does nothing if no store is configured.
|
|
93
|
+
*/
|
|
94
|
+
private backupFailedTx;
|
|
78
95
|
getRollupContract(): RollupContract;
|
|
96
|
+
/**
|
|
97
|
+
* Gets the fee asset price modifier from the oracle.
|
|
98
|
+
* Returns 0n if the oracle query fails.
|
|
99
|
+
*/
|
|
100
|
+
getFeeAssetPriceModifier(): Promise<bigint>;
|
|
79
101
|
getSenderAddress(): EthAddress;
|
|
102
|
+
/**
|
|
103
|
+
* Gets the L1 fee analyzer instance (only available in fisherman mode)
|
|
104
|
+
*/
|
|
105
|
+
getL1FeeAnalyzer(): L1FeeAnalyzer | undefined;
|
|
80
106
|
/**
|
|
81
107
|
* Sets the proposer address to use for simulations in fisherman mode.
|
|
82
108
|
* @param proposerAddress - The actual proposer's address to use for balance lookups in simulations
|
|
@@ -88,6 +114,14 @@ export declare class SequencerPublisher {
|
|
|
88
114
|
* Clears all pending requests without sending them.
|
|
89
115
|
*/
|
|
90
116
|
clearPendingRequests(): void;
|
|
117
|
+
/**
|
|
118
|
+
* Analyzes L1 fees for the pending requests without sending them.
|
|
119
|
+
* This is used in fisherman mode to validate fee calculations.
|
|
120
|
+
* @param l2SlotNumber - The L2 slot number for this analysis
|
|
121
|
+
* @param onComplete - Optional callback to invoke when analysis completes (after block is mined)
|
|
122
|
+
* @returns The analysis result (incomplete until block mines), or undefined if no requests
|
|
123
|
+
*/
|
|
124
|
+
analyzeL1Fees(l2SlotNumber: SlotNumber, onComplete?: (analysis: L1FeeAnalysisResult) => void): Promise<L1FeeAnalysisResult | undefined>;
|
|
91
125
|
/**
|
|
92
126
|
* Sends all requests that are still valid.
|
|
93
127
|
* @returns one of:
|
|
@@ -117,10 +151,10 @@ export declare class SequencerPublisher {
|
|
|
117
151
|
* @returns The slot and block number if it is possible to propose, undefined otherwise
|
|
118
152
|
*/
|
|
119
153
|
canProposeAtNextEthBlock(tipArchive: Fr, msgSender: EthAddress, opts?: {
|
|
120
|
-
|
|
154
|
+
forcePendingCheckpointNumber?: CheckpointNumber;
|
|
121
155
|
}): Promise<{
|
|
122
156
|
slot: SlotNumber;
|
|
123
|
-
checkpointNumber:
|
|
157
|
+
checkpointNumber: CheckpointNumber;
|
|
124
158
|
timeOfNextL1Slot: bigint;
|
|
125
159
|
} | undefined>;
|
|
126
160
|
/**
|
|
@@ -130,27 +164,20 @@ export declare class SequencerPublisher {
|
|
|
130
164
|
* @param header - The block header to validate
|
|
131
165
|
*/
|
|
132
166
|
validateBlockHeader(header: CheckpointHeader, opts?: {
|
|
133
|
-
|
|
167
|
+
forcePendingCheckpointNumber: CheckpointNumber | undefined;
|
|
134
168
|
}): Promise<void>;
|
|
135
169
|
/**
|
|
136
|
-
* Simulate making a call to invalidate a
|
|
137
|
-
* @param
|
|
138
|
-
*/
|
|
139
|
-
simulateInvalidateBlock(validationResult: ValidateBlockResult): Promise<InvalidateBlockRequest | undefined>;
|
|
140
|
-
private buildInvalidateBlockRequest;
|
|
141
|
-
/**
|
|
142
|
-
* @notice Will simulate `propose` to make sure that the block is valid for submission
|
|
143
|
-
*
|
|
144
|
-
* @dev Throws if unable to propose
|
|
145
|
-
*
|
|
146
|
-
* @param block - The block to propose
|
|
147
|
-
* @param attestationData - The block's attestation data
|
|
148
|
-
*
|
|
170
|
+
* Simulate making a call to invalidate a checkpoint with invalid attestations. Returns undefined if no need to invalidate.
|
|
171
|
+
* @param validationResult - The validation result indicating which checkpoint to invalidate (as returned by the archiver)
|
|
149
172
|
*/
|
|
150
|
-
|
|
151
|
-
|
|
173
|
+
simulateInvalidateCheckpoint(validationResult: ValidateCheckpointResult): Promise<InvalidateCheckpointRequest | undefined>;
|
|
174
|
+
private buildInvalidateCheckpointRequest;
|
|
175
|
+
/** Simulates `propose` to make sure that the checkpoint is valid for submission */
|
|
176
|
+
validateCheckpointForSubmission(checkpoint: Checkpoint, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, options: {
|
|
177
|
+
forcePendingCheckpointNumber?: CheckpointNumber;
|
|
152
178
|
}): Promise<bigint>;
|
|
153
179
|
private enqueueCastSignalHelper;
|
|
180
|
+
private isPayloadEmpty;
|
|
154
181
|
/**
|
|
155
182
|
* Enqueues a governance castSignal transaction to cast a signal for a given slot number.
|
|
156
183
|
* @param slotNumber - The slot number to cast a signal for.
|
|
@@ -160,17 +187,12 @@ export declare class SequencerPublisher {
|
|
|
160
187
|
enqueueGovernanceCastSignal(governancePayload: EthAddress, slotNumber: SlotNumber, timestamp: bigint, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
161
188
|
/** Enqueues all slashing actions as returned by the slasher client. */
|
|
162
189
|
enqueueSlashingActions(actions: ProposerSlashAction[], slotNumber: SlotNumber, timestamp: bigint, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
163
|
-
/**
|
|
164
|
-
|
|
165
|
-
*
|
|
166
|
-
* @param block - L2 block to propose.
|
|
167
|
-
* @returns True if the tx has been enqueued, throws otherwise. See #9315
|
|
168
|
-
*/
|
|
169
|
-
enqueueProposeL2Block(block: L2Block, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, opts?: {
|
|
190
|
+
/** Simulates and enqueues a proposal for a checkpoint on L1 */
|
|
191
|
+
enqueueProposeCheckpoint(checkpoint: Checkpoint, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, opts?: {
|
|
170
192
|
txTimeoutAt?: Date;
|
|
171
|
-
|
|
172
|
-
}): Promise<
|
|
173
|
-
|
|
193
|
+
forcePendingCheckpointNumber?: CheckpointNumber;
|
|
194
|
+
}): Promise<void>;
|
|
195
|
+
enqueueInvalidateCheckpoint(request: InvalidateCheckpointRequest | undefined, opts?: {
|
|
174
196
|
txTimeoutAt?: Date;
|
|
175
197
|
}): void;
|
|
176
198
|
private simulateAndEnqueueRequest;
|
|
@@ -188,4 +210,4 @@ export declare class SequencerPublisher {
|
|
|
188
210
|
private addProposeTx;
|
|
189
211
|
}
|
|
190
212
|
export {};
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsS0FBSyw4QkFBOEIsRUFFbkMsS0FBSywwQkFBMEIsRUFJL0IsY0FBYyxFQUNkLEtBQUssNkJBQTZCLEVBR25DLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUYsT0FBTyxFQUNMLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsRUFDaEIsS0FBSyxTQUFTLEVBRWQsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQStDLE1BQU0sdUJBQXVCLENBQUM7QUFHeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9FLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsWUFBWSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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"}
|