@aztec/sequencer-client 0.0.0-test.1 → 0.0.1-commit.b655e406
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 +25 -25
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +65 -51
- package/dest/config.d.ts +6 -14
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +50 -54
- package/dest/global_variable_builder/global_builder.d.ts +11 -6
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +39 -34
- package/dest/index.d.ts +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/publisher/config.d.ts +6 -8
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +19 -17
- package/dest/publisher/index.d.ts +2 -0
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/index.js +3 -0
- package/dest/publisher/sequencer-publisher-factory.d.ts +43 -0
- package/dest/publisher/sequencer-publisher-factory.d.ts.map +1 -0
- package/dest/publisher/sequencer-publisher-factory.js +51 -0
- package/dest/publisher/sequencer-publisher-metrics.d.ts +2 -1
- package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-metrics.js +37 -2
- package/dest/publisher/sequencer-publisher.d.ts +102 -69
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +606 -212
- package/dest/sequencer/block_builder.d.ts +27 -0
- package/dest/sequencer/block_builder.d.ts.map +1 -0
- package/dest/sequencer/block_builder.js +130 -0
- package/dest/sequencer/config.d.ts +5 -0
- package/dest/sequencer/config.d.ts.map +1 -1
- 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/index.d.ts +1 -1
- package/dest/sequencer/index.d.ts.map +1 -1
- package/dest/sequencer/index.js +1 -1
- package/dest/sequencer/metrics.d.ts +18 -11
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +84 -50
- package/dest/sequencer/sequencer.d.ts +120 -81
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +589 -359
- package/dest/sequencer/timetable.d.ts +32 -20
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +57 -30
- package/dest/sequencer/utils.d.ts +11 -35
- package/dest/sequencer/utils.d.ts.map +1 -1
- package/dest/sequencer/utils.js +9 -47
- package/dest/test/index.d.ts +7 -0
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +0 -4
- package/dest/tx_validator/nullifier_cache.d.ts +0 -2
- package/dest/tx_validator/nullifier_cache.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.d.ts +9 -10
- package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.js +27 -24
- package/package.json +42 -43
- package/src/client/sequencer-client.ts +94 -84
- package/src/config.ts +57 -61
- package/src/global_variable_builder/global_builder.ts +44 -23
- package/src/index.ts +6 -2
- package/src/publisher/config.ts +26 -24
- package/src/publisher/index.ts +4 -0
- package/src/publisher/sequencer-publisher-factory.ts +90 -0
- package/src/publisher/sequencer-publisher-metrics.ts +24 -2
- package/src/publisher/sequencer-publisher.ts +729 -235
- package/src/sequencer/block_builder.ts +218 -0
- package/src/sequencer/config.ts +7 -0
- package/src/sequencer/errors.ts +21 -0
- package/src/sequencer/index.ts +1 -1
- package/src/sequencer/metrics.ts +109 -55
- package/src/sequencer/sequencer.ts +766 -415
- package/src/sequencer/timetable.ts +98 -33
- package/src/sequencer/utils.ts +17 -58
- package/src/test/index.ts +11 -4
- package/src/tx_validator/tx_validator_factory.ts +44 -32
- package/dest/sequencer/allowed.d.ts +0 -3
- package/dest/sequencer/allowed.d.ts.map +0 -1
- package/dest/sequencer/allowed.js +0 -27
- package/dest/slasher/factory.d.ts +0 -7
- package/dest/slasher/factory.d.ts.map +0 -1
- package/dest/slasher/factory.js +0 -8
- package/dest/slasher/index.d.ts +0 -3
- package/dest/slasher/index.d.ts.map +0 -1
- package/dest/slasher/index.js +0 -2
- package/dest/slasher/slasher_client.d.ts +0 -75
- package/dest/slasher/slasher_client.d.ts.map +0 -1
- package/dest/slasher/slasher_client.js +0 -132
- package/dest/tx_validator/archive_cache.d.ts +0 -14
- package/dest/tx_validator/archive_cache.d.ts.map +0 -1
- package/dest/tx_validator/archive_cache.js +0 -22
- package/dest/tx_validator/gas_validator.d.ts +0 -14
- package/dest/tx_validator/gas_validator.d.ts.map +0 -1
- package/dest/tx_validator/gas_validator.js +0 -78
- package/dest/tx_validator/phases_validator.d.ts +0 -12
- package/dest/tx_validator/phases_validator.d.ts.map +0 -1
- package/dest/tx_validator/phases_validator.js +0 -80
- package/dest/tx_validator/test_utils.d.ts +0 -23
- package/dest/tx_validator/test_utils.d.ts.map +0 -1
- package/dest/tx_validator/test_utils.js +0 -26
- package/src/sequencer/allowed.ts +0 -36
- package/src/slasher/factory.ts +0 -15
- package/src/slasher/index.ts +0 -2
- package/src/slasher/slasher_client.ts +0 -193
- package/src/tx_validator/archive_cache.ts +0 -28
- package/src/tx_validator/gas_validator.ts +0 -101
- package/src/tx_validator/phases_validator.ts +0 -98
- package/src/tx_validator/test_utils.ts +0 -48
|
@@ -1,72 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import type { L2Block } from '@aztec/aztec.js';
|
|
4
|
-
import { Blob } from '@aztec/blob-lib';
|
|
1
|
+
import { L2Block } from '@aztec/aztec.js/block';
|
|
5
2
|
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
6
3
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
7
|
-
import { type
|
|
4
|
+
import { type EmpireSlashingProposerContract, FormattedViemError, type GovernanceProposerContract, type L1BlobInputs, type L1ContractsConfig, type L1TxConfig, type L1TxRequest, RollupContract, type TallySlashingProposerContract, type TransactionStats } from '@aztec/ethereum';
|
|
8
5
|
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
9
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
7
|
+
import { Signature } from '@aztec/foundation/eth-signature';
|
|
8
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
9
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
10
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
11
|
+
import { type ProposerSlashAction } from '@aztec/slasher';
|
|
12
|
+
import { CommitteeAttestationsAndSigners, type ValidateBlockResult } from '@aztec/stdlib/block';
|
|
13
|
+
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
14
|
+
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
12
15
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
13
|
-
import { type TransactionReceipt } from 'viem';
|
|
16
|
+
import { type TransactionReceipt, type TypedDataDefinition } from 'viem';
|
|
14
17
|
import type { PublisherConfig, TxSenderConfig } from './config.js';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
type
|
|
20
|
-
|
|
18
|
+
import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
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"];
|
|
20
|
+
export type Action = (typeof Actions)[number];
|
|
21
|
+
export declare const compareActions: (a: Action, b: Action) => number;
|
|
22
|
+
export type InvalidateBlockRequest = {
|
|
23
|
+
request: L1TxRequest;
|
|
24
|
+
reason: 'invalid-attestation' | 'insufficient-attestations';
|
|
25
|
+
gasUsed: bigint;
|
|
26
|
+
blockNumber: number;
|
|
27
|
+
forcePendingBlockNumber: number;
|
|
28
|
+
};
|
|
21
29
|
interface RequestWithExpiry {
|
|
22
30
|
action: Action;
|
|
23
31
|
request: L1TxRequest;
|
|
24
32
|
lastValidL2Slot: bigint;
|
|
25
|
-
gasConfig?:
|
|
33
|
+
gasConfig?: Pick<L1TxConfig, 'txTimeoutAt' | 'gasLimit'>;
|
|
26
34
|
blobConfig?: L1BlobInputs;
|
|
27
|
-
|
|
35
|
+
checkSuccess: (request: L1TxRequest, result?: {
|
|
28
36
|
receipt: TransactionReceipt;
|
|
29
|
-
gasPrice: GasPrice;
|
|
30
37
|
stats?: TransactionStats;
|
|
31
38
|
errorMsg?: string;
|
|
32
|
-
}) =>
|
|
39
|
+
}) => boolean;
|
|
33
40
|
}
|
|
34
41
|
export declare class SequencerPublisher {
|
|
42
|
+
private config;
|
|
35
43
|
private interrupted;
|
|
36
44
|
private metrics;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
protected
|
|
40
|
-
protected
|
|
41
|
-
|
|
42
|
-
protected slashingLog: import("@aztec/aztec.js").Logger;
|
|
43
|
-
protected slashingProposerAddress?: EthAddress;
|
|
44
|
-
private getSlashPayload?;
|
|
45
|
-
private myLastVotes;
|
|
46
|
-
protected log: import("@aztec/aztec.js").Logger;
|
|
45
|
+
epochCache: EpochCache;
|
|
46
|
+
protected governanceLog: Logger;
|
|
47
|
+
protected slashingLog: Logger;
|
|
48
|
+
protected lastActions: Partial<Record<Action, bigint>>;
|
|
49
|
+
protected log: Logger;
|
|
47
50
|
protected ethereumSlotDuration: bigint;
|
|
48
51
|
private blobSinkClient;
|
|
49
52
|
static PROPOSE_GAS_GUESS: bigint;
|
|
53
|
+
static MULTICALL_OVERHEAD_GAS_GUESS: bigint;
|
|
54
|
+
static VOTE_GAS_GUESS: bigint;
|
|
50
55
|
l1TxUtils: L1TxUtilsWithBlobs;
|
|
51
56
|
rollupContract: RollupContract;
|
|
52
57
|
govProposerContract: GovernanceProposerContract;
|
|
53
|
-
slashingProposerContract:
|
|
58
|
+
slashingProposerContract: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
|
|
59
|
+
slashFactoryContract: SlashFactoryContract;
|
|
54
60
|
protected requests: RequestWithExpiry[];
|
|
55
61
|
constructor(config: TxSenderConfig & PublisherConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>, deps: {
|
|
56
62
|
telemetry?: TelemetryClient;
|
|
57
63
|
blobSinkClient?: BlobSinkClientInterface;
|
|
58
|
-
forwarderContract: ForwarderContract;
|
|
59
64
|
l1TxUtils: L1TxUtilsWithBlobs;
|
|
60
65
|
rollupContract: RollupContract;
|
|
61
|
-
slashingProposerContract:
|
|
66
|
+
slashingProposerContract: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
|
|
62
67
|
governanceProposerContract: GovernanceProposerContract;
|
|
68
|
+
slashFactoryContract: SlashFactoryContract;
|
|
63
69
|
epochCache: EpochCache;
|
|
70
|
+
dateProvider: DateProvider;
|
|
71
|
+
metrics: SequencerPublisherMetrics;
|
|
72
|
+
lastActions: Partial<Record<Action, bigint>>;
|
|
73
|
+
log?: Logger;
|
|
64
74
|
});
|
|
65
|
-
|
|
66
|
-
getForwarderAddress(): EthAddress;
|
|
75
|
+
getRollupContract(): RollupContract;
|
|
67
76
|
getSenderAddress(): EthAddress;
|
|
68
|
-
getGovernancePayload(): EthAddress;
|
|
69
|
-
setGovernancePayload(payload: EthAddress): void;
|
|
70
77
|
addRequest(request: RequestWithExpiry): void;
|
|
71
78
|
getCurrentL2Slot(): bigint;
|
|
72
79
|
/**
|
|
@@ -77,15 +84,19 @@ export declare class SequencerPublisher {
|
|
|
77
84
|
* - undefined if no valid requests are found OR the tx failed to send.
|
|
78
85
|
*/
|
|
79
86
|
sendRequests(): Promise<{
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
result: FormattedViemError | {
|
|
88
|
+
receipt: import("viem").TransactionReceipt;
|
|
89
|
+
stats: TransactionStats | undefined;
|
|
90
|
+
errorMsg?: undefined;
|
|
91
|
+
} | {
|
|
92
|
+
receipt: import("viem").TransactionReceipt;
|
|
93
|
+
errorMsg: string | undefined;
|
|
94
|
+
stats?: undefined;
|
|
95
|
+
};
|
|
96
|
+
expiredActions: ("invalidate-by-invalid-attestation" | "invalidate-by-insufficient-attestations" | "propose" | "governance-signal" | "empire-slashing-signal" | "create-empire-payload" | "execute-empire-payload" | "vote-offenses" | "execute-slash")[];
|
|
97
|
+
sentActions: ("invalidate-by-invalid-attestation" | "invalidate-by-insufficient-attestations" | "propose" | "governance-signal" | "empire-slashing-signal" | "create-empire-payload" | "execute-empire-payload" | "vote-offenses" | "execute-slash")[];
|
|
98
|
+
successfulActions: ("invalidate-by-invalid-attestation" | "invalidate-by-insufficient-attestations" | "propose" | "governance-signal" | "empire-slashing-signal" | "create-empire-payload" | "execute-empire-payload" | "vote-offenses" | "execute-slash")[];
|
|
99
|
+
failedActions: ("invalidate-by-invalid-attestation" | "invalidate-by-insufficient-attestations" | "propose" | "governance-signal" | "empire-slashing-signal" | "create-empire-payload" | "execute-empire-payload" | "vote-offenses" | "execute-slash")[];
|
|
89
100
|
} | undefined>;
|
|
90
101
|
private callbackBundledTransactions;
|
|
91
102
|
/**
|
|
@@ -93,40 +104,64 @@ export declare class SequencerPublisher {
|
|
|
93
104
|
* @param tipArchive - The archive to check
|
|
94
105
|
* @returns The slot and block number if it is possible to propose, undefined otherwise
|
|
95
106
|
*/
|
|
96
|
-
canProposeAtNextEthBlock(tipArchive:
|
|
107
|
+
canProposeAtNextEthBlock(tipArchive: Fr, msgSender: EthAddress, opts?: {
|
|
108
|
+
forcePendingBlockNumber?: number;
|
|
109
|
+
}): Promise<{
|
|
110
|
+
slot: bigint;
|
|
111
|
+
blockNumber: bigint;
|
|
112
|
+
timeOfNextL1Slot: bigint;
|
|
113
|
+
} | undefined>;
|
|
114
|
+
/**
|
|
115
|
+
* @notice Will simulate `validateHeader` to make sure that the block header is valid
|
|
116
|
+
* @dev This is a convenience function that can be used by the sequencer to validate a "partial" header.
|
|
117
|
+
* It will throw if the block header is invalid.
|
|
118
|
+
* @param header - The block header to validate
|
|
119
|
+
*/
|
|
120
|
+
validateBlockHeader(header: CheckpointHeader, opts?: {
|
|
121
|
+
forcePendingBlockNumber: number | undefined;
|
|
122
|
+
}): Promise<void>;
|
|
97
123
|
/**
|
|
98
|
-
*
|
|
124
|
+
* Simulate making a call to invalidate a block with invalid attestations. Returns undefined if no need to invalidate.
|
|
125
|
+
* @param block - The block to invalidate and the criteria for invalidation (as returned by the archiver)
|
|
126
|
+
*/
|
|
127
|
+
simulateInvalidateBlock(validationResult: ValidateBlockResult): Promise<InvalidateBlockRequest | undefined>;
|
|
128
|
+
private buildInvalidateBlockRequest;
|
|
129
|
+
/**
|
|
130
|
+
* @notice Will simulate `propose` to make sure that the block is valid for submission
|
|
99
131
|
*
|
|
100
132
|
* @dev Throws if unable to propose
|
|
101
133
|
*
|
|
102
|
-
* @param
|
|
103
|
-
* @param
|
|
134
|
+
* @param block - The block to propose
|
|
135
|
+
* @param attestationData - The block's attestation data
|
|
104
136
|
*
|
|
105
137
|
*/
|
|
106
|
-
validateBlockForSubmission(
|
|
107
|
-
|
|
108
|
-
signatures: Signature[];
|
|
138
|
+
validateBlockForSubmission(block: L2Block, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, options: {
|
|
139
|
+
forcePendingBlockNumber?: number;
|
|
109
140
|
}): Promise<bigint>;
|
|
110
|
-
|
|
111
|
-
private enqueueCastVoteHelper;
|
|
112
|
-
private getVoteConfig;
|
|
141
|
+
private enqueueCastSignalHelper;
|
|
113
142
|
/**
|
|
114
|
-
* Enqueues a
|
|
115
|
-
* @param slotNumber - The slot number to cast a
|
|
116
|
-
* @param timestamp - The timestamp of the slot to cast a
|
|
117
|
-
* @
|
|
118
|
-
* @returns True if the vote was successfully enqueued, false otherwise.
|
|
143
|
+
* Enqueues a governance castSignal transaction to cast a signal for a given slot number.
|
|
144
|
+
* @param slotNumber - The slot number to cast a signal for.
|
|
145
|
+
* @param timestamp - The timestamp of the slot to cast a signal for.
|
|
146
|
+
* @returns True if the signal was successfully enqueued, false otherwise.
|
|
119
147
|
*/
|
|
120
|
-
|
|
148
|
+
enqueueGovernanceCastSignal(governancePayload: EthAddress, slotNumber: bigint, timestamp: bigint, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
149
|
+
/** Enqueues all slashing actions as returned by the slasher client. */
|
|
150
|
+
enqueueSlashingActions(actions: ProposerSlashAction[], slotNumber: bigint, timestamp: bigint, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
121
151
|
/**
|
|
122
152
|
* Proposes a L2 block on L1.
|
|
123
153
|
*
|
|
124
154
|
* @param block - L2 block to propose.
|
|
125
155
|
* @returns True if the tx has been enqueued, throws otherwise. See #9315
|
|
126
156
|
*/
|
|
127
|
-
enqueueProposeL2Block(block: L2Block,
|
|
157
|
+
enqueueProposeL2Block(block: L2Block, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, opts?: {
|
|
128
158
|
txTimeoutAt?: Date;
|
|
159
|
+
forcePendingBlockNumber?: number;
|
|
129
160
|
}): Promise<boolean>;
|
|
161
|
+
enqueueInvalidateBlock(request: InvalidateBlockRequest | undefined, opts?: {
|
|
162
|
+
txTimeoutAt?: Date;
|
|
163
|
+
}): void;
|
|
164
|
+
private simulateAndEnqueueRequest;
|
|
130
165
|
/**
|
|
131
166
|
* Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
|
|
132
167
|
* Be warned, the call may return false even if the tx subsequently gets successfully mined.
|
|
@@ -137,16 +172,14 @@ export declare class SequencerPublisher {
|
|
|
137
172
|
/** Restarts the publisher after calling `interrupt`. */
|
|
138
173
|
restart(): void;
|
|
139
174
|
private prepareProposeTx;
|
|
140
|
-
private addProposeTx;
|
|
141
175
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* In the future this will move to be the beacon block id - which takes a bit more work
|
|
147
|
-
* to calculate and will need to be mocked in e2e tests
|
|
176
|
+
* Simulates the propose tx with eth_simulateV1
|
|
177
|
+
* @param args - The propose tx args
|
|
178
|
+
* @param timestamp - The timestamp to simulate proposal at
|
|
179
|
+
* @returns The simulation result
|
|
148
180
|
*/
|
|
149
|
-
|
|
181
|
+
private simulateProposeTx;
|
|
182
|
+
private addProposeTx;
|
|
150
183
|
}
|
|
151
184
|
export {};
|
|
152
185
|
//# sourceMappingURL=sequencer-publisher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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"}
|