@aztec/sequencer-client 5.0.0-rc.1 → 5.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/config.js +1 -1
- package/dest/global_variable_builder/global_builder.d.ts +3 -16
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +2 -25
- package/dest/publisher/config.d.ts +5 -1
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +11 -1
- package/dest/publisher/sequencer-publisher.d.ts +17 -4
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +113 -20
- package/dest/sequencer/automine/automine_sequencer.d.ts +8 -3
- package/dest/sequencer/automine/automine_sequencer.d.ts.map +1 -1
- package/dest/sequencer/automine/automine_sequencer.js +16 -4
- package/dest/sequencer/checkpoint_proposal_job.d.ts +1 -1
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +2 -3
- package/dest/sequencer/sequencer.d.ts +9 -7
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +46 -41
- package/dest/test/utils.d.ts +1 -1
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +1 -1
- package/package.json +27 -27
- package/src/config.ts +1 -1
- package/src/global_variable_builder/global_builder.ts +2 -34
- package/src/publisher/config.ts +22 -1
- package/src/publisher/sequencer-publisher.ts +108 -21
- package/src/sequencer/automine/automine_sequencer.ts +16 -4
- package/src/sequencer/checkpoint_proposal_job.ts +3 -5
- package/src/sequencer/sequencer.ts +52 -48
- package/src/test/utils.ts +1 -0
- package/dest/sequencer/chain_state_overrides.d.ts +0 -61
- package/dest/sequencer/chain_state_overrides.d.ts.map +0 -1
- package/dest/sequencer/chain_state_overrides.js +0 -98
- package/src/sequencer/chain_state_overrides.ts +0 -169
package/dest/config.js
CHANGED
|
@@ -98,7 +98,7 @@ export const sequencerConfigMappings = {
|
|
|
98
98
|
},
|
|
99
99
|
feeRecipient: {
|
|
100
100
|
env: 'FEE_RECIPIENT',
|
|
101
|
-
parseEnv: (val)=>AztecAddress.
|
|
101
|
+
parseEnv: (val)=>AztecAddress.fromStringUnsafe(val),
|
|
102
102
|
description: 'Address to receive fees.'
|
|
103
103
|
},
|
|
104
104
|
acvmWorkingDirectory: {
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { type SimulationOverridesPlan } from '@aztec/ethereum/contracts';
|
|
2
2
|
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
3
|
-
import {
|
|
3
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import type { DateProvider } from '@aztec/foundation/timer';
|
|
6
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
6
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
8
7
|
import type { CheckpointGlobalVariables, GlobalVariableBuilder as GlobalVariableBuilderInterface } from '@aztec/stdlib/tx';
|
|
9
|
-
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
10
8
|
/** Configuration for the GlobalVariableBuilder (excludes L1 client config). */
|
|
11
9
|
export type GlobalVariableBuilderConfig = {
|
|
12
10
|
rollupAddress: EthAddress;
|
|
@@ -17,25 +15,14 @@ export type GlobalVariableBuilderConfig = {
|
|
|
17
15
|
* Simple global variables builder.
|
|
18
16
|
*/
|
|
19
17
|
export declare class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
20
|
-
private readonly dateProvider;
|
|
21
18
|
private readonly publicClient;
|
|
22
19
|
private readonly rollupContract;
|
|
23
|
-
private readonly ethereumSlotDuration;
|
|
24
20
|
private readonly aztecSlotDuration;
|
|
25
21
|
private readonly l1GenesisTime;
|
|
26
22
|
private chainId;
|
|
27
23
|
private version;
|
|
28
|
-
constructor(
|
|
29
|
-
/**
|
|
30
|
-
* Simple builder of global variables.
|
|
31
|
-
* @param blockNumber - The block number to build global variables for.
|
|
32
|
-
* @param coinbase - The address to receive block reward.
|
|
33
|
-
* @param feeRecipient - The address to receive fees.
|
|
34
|
-
* @param slotNumber - The slot number to use for the global variables, if undefined it will be calculated.
|
|
35
|
-
* @returns The global variables for the given block number.
|
|
36
|
-
*/
|
|
37
|
-
buildGlobalVariables(blockNumber: BlockNumber, coinbase: EthAddress, feeRecipient: AztecAddress, maybeSlot?: SlotNumber): Promise<GlobalVariables>;
|
|
24
|
+
constructor(publicClient: ViemPublicClient, config: GlobalVariableBuilderConfig);
|
|
38
25
|
/** Builds global variables that are constant throughout a checkpoint. */
|
|
39
26
|
buildCheckpointGlobalVariables(coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber: SlotNumber, simulationOverridesPlan?: SimulationOverridesPlan): Promise<CheckpointGlobalVariables>;
|
|
40
27
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iYWxfdmFyaWFibGVfYnVpbGRlci9nbG9iYWxfYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyx1QkFBdUIsRUFFN0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUF1QixNQUFNLDZCQUE2QixDQUFDO0FBRTFGLE9BQU8sS0FBSyxFQUNWLHlCQUF5QixFQUN6QixxQkFBcUIsSUFBSSw4QkFBOEIsRUFDeEQsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQiwrRUFBK0U7QUFDL0UsTUFBTSxNQUFNLDJCQUEyQixHQUFHO0lBQ3hDLGFBQWEsRUFBRSxVQUFVLENBQUM7SUFDMUIsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLGFBQWEsRUFBRSxNQUFNLENBQUM7Q0FDdkIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBRTlEOztHQUVHO0FBQ0gscUJBQWEscUJBQXNCLFlBQVcsOEJBQThCO0lBU3hFLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQVIvQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBaUI7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBUztJQUMzQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBUztJQUV2QyxPQUFPLENBQUMsT0FBTyxDQUFLO0lBQ3BCLE9BQU8sQ0FBQyxPQUFPLENBQUs7SUFFcEIsWUFDbUIsWUFBWSxFQUFFLGdCQUFnQixFQUMvQyxNQUFNLEVBQUUsMkJBQTJCLEVBU3BDO0lBRUQseUVBQXlFO0lBQzVELDhCQUE4QixDQUN6QyxRQUFRLEVBQUUsVUFBVSxFQUNwQixZQUFZLEVBQUUsWUFBWSxFQUMxQixVQUFVLEVBQUUsVUFBVSxFQUN0Qix1QkFBdUIsQ0FBQyxFQUFFLHVCQUF1QixHQUNoRCxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FZcEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,6BAA6B,CAAC;AAE1F,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,IAAI,8BAA8B,EACxD,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,UAAU,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC;AAE9D;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IASxE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAK;IAEpB,YACmB,YAAY,EAAE,gBAAgB,EAC/C,MAAM,EAAE,2BAA2B,EASpC;IAED,yEAAyE;IAC5D,8BAA8B,CACzC,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,uBAAuB,CAAC,EAAE,uBAAuB,GAChD,OAAO,CAAC,yBAAyB,CAAC,CAYpC;CACF"}
|
|
@@ -1,47 +1,24 @@
|
|
|
1
1
|
import { RollupContract, buildSimulationOverridesStateOverride } from '@aztec/ethereum/contracts';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import {
|
|
3
|
+
import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
4
4
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
5
|
-
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
6
5
|
/**
|
|
7
6
|
* Simple global variables builder.
|
|
8
7
|
*/ export class GlobalVariableBuilder {
|
|
9
|
-
dateProvider;
|
|
10
8
|
publicClient;
|
|
11
9
|
rollupContract;
|
|
12
|
-
ethereumSlotDuration;
|
|
13
10
|
aztecSlotDuration;
|
|
14
11
|
l1GenesisTime;
|
|
15
12
|
chainId;
|
|
16
13
|
version;
|
|
17
|
-
constructor(
|
|
18
|
-
this.dateProvider = dateProvider;
|
|
14
|
+
constructor(publicClient, config){
|
|
19
15
|
this.publicClient = publicClient;
|
|
20
16
|
this.version = new Fr(config.rollupVersion);
|
|
21
17
|
this.chainId = new Fr(this.publicClient.chain.id);
|
|
22
|
-
this.ethereumSlotDuration = config.ethereumSlotDuration;
|
|
23
18
|
this.aztecSlotDuration = config.slotDuration;
|
|
24
19
|
this.l1GenesisTime = config.l1GenesisTime;
|
|
25
20
|
this.rollupContract = new RollupContract(this.publicClient, config.rollupAddress);
|
|
26
21
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Simple builder of global variables.
|
|
29
|
-
* @param blockNumber - The block number to build global variables for.
|
|
30
|
-
* @param coinbase - The address to receive block reward.
|
|
31
|
-
* @param feeRecipient - The address to receive fees.
|
|
32
|
-
* @param slotNumber - The slot number to use for the global variables, if undefined it will be calculated.
|
|
33
|
-
* @returns The global variables for the given block number.
|
|
34
|
-
*/ async buildGlobalVariables(blockNumber, coinbase, feeRecipient, maybeSlot) {
|
|
35
|
-
const slot = maybeSlot ?? await this.rollupContract.getSlotAt(getNextL1SlotTimestamp(this.dateProvider.nowInSeconds(), {
|
|
36
|
-
l1GenesisTime: this.l1GenesisTime,
|
|
37
|
-
ethereumSlotDuration: this.ethereumSlotDuration
|
|
38
|
-
}));
|
|
39
|
-
const checkpointGlobalVariables = await this.buildCheckpointGlobalVariables(coinbase, feeRecipient, slot);
|
|
40
|
-
return GlobalVariables.from({
|
|
41
|
-
blockNumber,
|
|
42
|
-
...checkpointGlobalVariables
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
22
|
/** Builds global variables that are constant throughout a checkpoint. */ async buildCheckpointGlobalVariables(coinbase, feeRecipient, slotNumber, simulationOverridesPlan) {
|
|
46
23
|
const { chainId, version } = this;
|
|
47
24
|
const timestamp = getTimestampForSlot(slotNumber, {
|
|
@@ -48,6 +48,10 @@ export type SequencerPublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
|
48
48
|
fishermanMode?: boolean;
|
|
49
49
|
sequencerPublisherAllowInvalidStates?: boolean;
|
|
50
50
|
sequencerPublisherForwarderAddress?: EthAddress;
|
|
51
|
+
/** How long to wait for the previous L1 block before sending scheduled publisher txs anyway. */
|
|
52
|
+
sequencerPublisherPreviousL1BlockWaitTimeoutMs: number;
|
|
53
|
+
/** Poll interval while waiting for the previous L1 block before scheduled publisher txs. */
|
|
54
|
+
sequencerPublisherPreviousL1BlockWaitPollIntervalMs: number;
|
|
51
55
|
/** Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path */
|
|
52
56
|
l1TxFailedStore?: string;
|
|
53
57
|
/** Min ETH balance below which a publisher gets funded. Undefined = funding disabled. */
|
|
@@ -61,4 +65,4 @@ export declare const proverTxSenderConfigMappings: ConfigMappingsType<ProverTxSe
|
|
|
61
65
|
export declare const sequencerTxSenderConfigMappings: ConfigMappingsType<SequencerTxSenderConfig>;
|
|
62
66
|
export declare const sequencerPublisherConfigMappings: ConfigMappingsType<SequencerPublisherConfig & L1TxUtilsConfig>;
|
|
63
67
|
export declare const proverPublisherConfigMappings: ConfigMappingsType<ProverPublisherConfig & L1TxUtilsConfig>;
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBMkIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEYsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUEyQixNQUFNLG9DQUFvQyxDQUFDO0FBQ25HLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBR1osTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJM0Qsa0RBQWtEO0FBQ2xELE1BQU0sTUFBTSxjQUFjLEdBQUcsY0FBYyxHQUFHO0lBQzVDLG1EQUFtRDtJQUNuRCxvQkFBb0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwRCwwREFBMEQ7SUFDMUQsa0JBQWtCLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztDQUNuQyxDQUFDO0FBRUYsTUFBTSxNQUFNLG9CQUFvQixHQUFHLGNBQWMsR0FBRztJQUNsRCwwQkFBMEIsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxRCx3QkFBd0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0NBQ3pDLENBQUM7QUFFRixNQUFNLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxHQUFHO0lBQ3JELDZCQUE2QixDQUFDLEVBQUUsV0FBVyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzdELDJCQUEyQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7Q0FDNUMsQ0FBQztBQUVGLHdCQUFnQixpQ0FBaUMsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEdBQUcsY0FBYyxDQU05RjtBQUVELHdCQUFnQixvQ0FBb0MsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLEdBQUcsY0FBYyxDQU1wRztBQUVELHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sZUFBZSxHQUFHLGVBQWUsR0FDM0MsZ0JBQWdCLEdBQUc7SUFDakIsb0dBQW9HO0lBQ3BHLDJCQUEyQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3RDLDRHQUE0RztJQUM1RyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDeEIsd0dBQXdHO0lBQ3hHLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxDQUFDO0lBQ3ZDLDRGQUE0RjtJQUM1RixlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDekIseUZBQXlGO0lBQ3pGLHlCQUF5QixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ25DLG9GQUFvRjtJQUNwRixzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNqQyxDQUFDO0FBa0JKLE1BQU0sTUFBTSxxQkFBcUIsR0FBRyxlQUFlLEdBQ2pELGdCQUFnQixHQUFHO0lBQ2pCLGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN4QixpQ0FBaUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM1QywrQkFBK0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUM3Qyx5RkFBeUY7SUFDekYseUJBQXlCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbkMsb0ZBQW9GO0lBQ3BGLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2pDLENBQUM7QUFFSixNQUFNLE1BQU0sd0JBQXdCLEdBQUcsZUFBZSxHQUNwRCxnQkFBZ0IsR0FBRztJQUNqQixhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDeEIsb0NBQW9DLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDL0Msa0NBQWtDLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDaEQsZ0dBQWdHO0lBQ2hHLDhDQUE4QyxFQUFFLE1BQU0sQ0FBQztJQUN2RCw0RkFBNEY7SUFDNUYsbURBQW1ELEVBQUUsTUFBTSxDQUFDO0lBQzVELDRGQUE0RjtJQUM1RixlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDekIseUZBQXlGO0lBQ3pGLHlCQUF5QixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ25DLG9GQUFvRjtJQUNwRixzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNqQyxDQUFDO0FBRUosd0JBQWdCLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsR0FBRyxlQUFlLENBTWpHO0FBRUQsd0JBQWdCLHFDQUFxQyxDQUFDLE1BQU0sRUFBRSx3QkFBd0IsR0FBRyxlQUFlLENBT3ZHO0FBRUQsZUFBTyxNQUFNLDRCQUE0QixFQUFFLGtCQUFrQixDQUFDLG9CQUFvQixDQWdCakYsQ0FBQztBQUVGLGVBQU8sTUFBTSwrQkFBK0IsRUFBRSxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FnQnZGLENBQUM7QUFFRixlQUFPLE1BQU0sZ0NBQWdDLEVBQUUsa0JBQWtCLENBQUMsd0JBQXdCLEdBQUcsZUFBZSxDQW9DM0csQ0FBQztBQUVGLGVBQU8sTUFBTSw2QkFBNkIsRUFBRSxrQkFBa0IsQ0FBQyxxQkFBcUIsR0FBRyxlQUFlLENBb0JyRyxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,oCAAoC,CAAC;AACnG,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"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"}
|
package/dest/publisher/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { blobClientConfigMapping } from '@aztec/blob-client/client/config';
|
|
2
2
|
import { l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
|
|
3
3
|
import { l1TxUtilsConfigMappings } from '@aztec/ethereum/l1-tx-utils/config';
|
|
4
|
-
import { SecretValue, booleanConfigHelper } from '@aztec/foundation/config';
|
|
4
|
+
import { SecretValue, booleanConfigHelper, numberConfigHelper } from '@aztec/foundation/config';
|
|
5
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
6
|
import { parseEther } from 'viem';
|
|
7
7
|
export function getTxSenderConfigFromProverConfig(config) {
|
|
@@ -99,6 +99,16 @@ export const sequencerPublisherConfigMappings = {
|
|
|
99
99
|
description: 'Address of the forwarder contract to wrap all L1 transactions through (for testing purposes only)',
|
|
100
100
|
parseEnv: (val)=>EthAddress.fromString(val)
|
|
101
101
|
},
|
|
102
|
+
sequencerPublisherPreviousL1BlockWaitTimeoutMs: {
|
|
103
|
+
env: `SEQ_PUBLISHER_PREVIOUS_L1_BLOCK_WAIT_TIMEOUT_MS`,
|
|
104
|
+
description: 'How long to wait for the previous L1 block before sending scheduled publisher txs anyway, in milliseconds.',
|
|
105
|
+
...numberConfigHelper(8_000)
|
|
106
|
+
},
|
|
107
|
+
sequencerPublisherPreviousL1BlockWaitPollIntervalMs: {
|
|
108
|
+
env: `SEQ_PUBLISHER_PREVIOUS_L1_BLOCK_WAIT_POLL_INTERVAL_MS`,
|
|
109
|
+
description: 'Poll interval while waiting for the previous L1 block before scheduled publisher txs, in milliseconds.',
|
|
110
|
+
...numberConfigHelper(500)
|
|
111
|
+
},
|
|
102
112
|
l1TxFailedStore: {
|
|
103
113
|
env: 'L1_TX_FAILED_STORE',
|
|
104
114
|
description: 'Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path'
|
|
@@ -33,9 +33,9 @@ export type SendRequestsResult = {
|
|
|
33
33
|
/** Actions whose L1 simulation failed (subset of sentActions). */
|
|
34
34
|
failedActions: Action[];
|
|
35
35
|
};
|
|
36
|
-
export declare const Actions: readonly ["invalidate-by-invalid-attestation", "invalidate-by-insufficient-attestations", "propose", "governance-signal", "vote-offenses", "execute-slash"];
|
|
36
|
+
export declare const Actions: readonly ["invalidate-by-invalid-attestation", "invalidate-by-insufficient-attestations", "prune", "propose", "governance-signal", "vote-offenses", "execute-slash"];
|
|
37
37
|
export type Action = (typeof Actions)[number];
|
|
38
|
-
export declare const compareActions: (a: "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses", b: "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses") => number;
|
|
38
|
+
export declare const compareActions: (a: "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "prune" | "vote-offenses", b: "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "prune" | "vote-offenses") => number;
|
|
39
39
|
export type InvalidateCheckpointRequest = {
|
|
40
40
|
request: L1TxRequest;
|
|
41
41
|
reason: 'invalid-attestation' | 'insufficient-attestations';
|
|
@@ -79,6 +79,8 @@ export declare class SequencerPublisher {
|
|
|
79
79
|
protected log: Logger;
|
|
80
80
|
protected ethereumSlotDuration: bigint;
|
|
81
81
|
protected aztecSlotDuration: bigint;
|
|
82
|
+
private readonly previousL1BlockWaitTimeoutMs;
|
|
83
|
+
private readonly previousL1BlockWaitPollIntervalMs;
|
|
82
84
|
/** Date provider for wall-clock time. */
|
|
83
85
|
private readonly dateProvider;
|
|
84
86
|
private blobClient;
|
|
@@ -96,7 +98,7 @@ export declare class SequencerPublisher {
|
|
|
96
98
|
slashingProposerContract: SlashingProposerContract | undefined;
|
|
97
99
|
readonly tracer: Tracer;
|
|
98
100
|
protected requests: RequestWithExpiry[];
|
|
99
|
-
constructor(config: Pick<SequencerPublisherConfig, 'fishermanMode' | 'l1TxFailedStore'> & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration'> & {
|
|
101
|
+
constructor(config: Pick<SequencerPublisherConfig, 'fishermanMode' | 'l1TxFailedStore' | 'sequencerPublisherPreviousL1BlockWaitTimeoutMs' | 'sequencerPublisherPreviousL1BlockWaitPollIntervalMs'> & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration'> & {
|
|
100
102
|
l1ChainId: number;
|
|
101
103
|
}, deps: {
|
|
102
104
|
telemetry?: TelemetryClient;
|
|
@@ -163,6 +165,7 @@ export declare class SequencerPublisher {
|
|
|
163
165
|
private backupDroppedInSim;
|
|
164
166
|
private forwardWithPublisherRotation;
|
|
165
167
|
sendRequestsAt(targetSlot: SlotNumber): Promise<SendRequestsResult | undefined>;
|
|
168
|
+
private waitForTargetSlot;
|
|
166
169
|
private callbackBundledTransactions;
|
|
167
170
|
/**
|
|
168
171
|
* @notice Will call `canProposeAt` to make sure that it is possible to propose
|
|
@@ -194,6 +197,16 @@ export declare class SequencerPublisher {
|
|
|
194
197
|
* @returns True if the signal was successfully enqueued, false otherwise.
|
|
195
198
|
*/
|
|
196
199
|
enqueueGovernanceCastSignal(governancePayload: EthAddress, slotNumber: SlotNumber, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
200
|
+
/**
|
|
201
|
+
* Enqueues a `prune()` transaction if the rollup is prunable at the given slot's L1 timestamp.
|
|
202
|
+
* `prune()` is permissionless and idempotent — if the chain is no longer prunable by send time the
|
|
203
|
+
* bundle simulation usually drops the entry; on a node without `eth_simulateV1` the bundle is sent
|
|
204
|
+
* as-is and the prune reverts `Rollup__NothingToPrune` inside `aggregate3(allowFailure: true)`
|
|
205
|
+
* (a failed action, never a whole-tx revert). Used by the failed-sync fallback so a stuck pending
|
|
206
|
+
* chain (e.g. bad data blocking sync) can be wound back to recover.
|
|
207
|
+
* @returns true if a prune request was enqueued, false otherwise.
|
|
208
|
+
*/
|
|
209
|
+
enqueuePruneIfPrunable(slotNumber: SlotNumber): Promise<boolean>;
|
|
197
210
|
/** Enqueues all slashing actions as returned by the slasher client. */
|
|
198
211
|
enqueueSlashingActions(actions: ProposerSlashAction[], slotNumber: SlotNumber, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
199
212
|
/** Enqueues a proposal for a checkpoint on L1 */
|
|
@@ -222,4 +235,4 @@ export declare class SequencerPublisher {
|
|
|
222
235
|
private getNextL1SlotTimestamp;
|
|
223
236
|
}
|
|
224
237
|
export {};
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBRUwsS0FBSywwQkFBMEIsRUFJL0IsS0FBSyxjQUFjLEVBQ25CLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssd0JBQXdCLEVBRTlCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUYsT0FBTyxFQUNMLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsRUFDaEIsS0FBSyxTQUFTLEVBRWQsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSw2QkFBNkIsQ0FBQztBQVFyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHL0UsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQTZCLE1BQU0sZ0JBQWdCLENB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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,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAEL,KAAK,0BAA0B,EAI/B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAE9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,mBAAmB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EAEd,KAAK,gBAAgB,EAEtB,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG/E,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAM3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAiC,MAAM,yBAAyB,CAAC;AAE3G,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAIzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAiB7E,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6DAA6D;IAC7D,MAAM,EAAE;QAAE,OAAO,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACxC,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAkBF,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -408,6 +408,7 @@ import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
|
408
408
|
export const Actions = [
|
|
409
409
|
'invalidate-by-invalid-attestation',
|
|
410
410
|
'invalidate-by-insufficient-attestations',
|
|
411
|
+
'prune',
|
|
411
412
|
'propose',
|
|
412
413
|
'governance-signal',
|
|
413
414
|
'vote-offenses',
|
|
@@ -446,6 +447,8 @@ export class SequencerPublisher {
|
|
|
446
447
|
log;
|
|
447
448
|
ethereumSlotDuration;
|
|
448
449
|
aztecSlotDuration;
|
|
450
|
+
previousL1BlockWaitTimeoutMs;
|
|
451
|
+
previousL1BlockWaitPollIntervalMs;
|
|
449
452
|
/** Date provider for wall-clock time. */ dateProvider;
|
|
450
453
|
blobClient;
|
|
451
454
|
/** Optional callback to obtain a replacement publisher when the current one fails to send. */ getNextPublisher;
|
|
@@ -473,6 +476,8 @@ export class SequencerPublisher {
|
|
|
473
476
|
this.log = deps.log ?? createLogger('sequencer:publisher');
|
|
474
477
|
this.ethereumSlotDuration = BigInt(config.ethereumSlotDuration);
|
|
475
478
|
this.aztecSlotDuration = BigInt(config.aztecSlotDuration);
|
|
479
|
+
this.previousL1BlockWaitTimeoutMs = config.sequencerPublisherPreviousL1BlockWaitTimeoutMs;
|
|
480
|
+
this.previousL1BlockWaitPollIntervalMs = config.sequencerPublisherPreviousL1BlockWaitPollIntervalMs;
|
|
476
481
|
this.dateProvider = deps.dateProvider;
|
|
477
482
|
this.epochCache = deps.epochCache;
|
|
478
483
|
this.lastActions = deps.lastActions;
|
|
@@ -789,33 +794,71 @@ export class SequencerPublisher {
|
|
|
789
794
|
}
|
|
790
795
|
/*
|
|
791
796
|
* Schedules sending all enqueued requests at (or after) the start of the given L2 slot.
|
|
792
|
-
* Sleeps until one L1 slot before the L2 slot boundary so the tx has a chance of being
|
|
793
|
-
* picked up by the first L1 block of the L2 slot.
|
|
794
|
-
* NB: there is a known correctness risk — being included in the L1 block right before the
|
|
795
|
-
* L2 slot starts would revert propose with HeaderLib__InvalidSlotNumber.
|
|
796
|
-
* Uses InterruptibleSleep so it can be cancelled via interrupt().
|
|
797
797
|
*/ async sendRequestsAt(targetSlot) {
|
|
798
|
-
|
|
799
|
-
// Start of the target L2 slot, in ms (getTimestampForSlot returns seconds).
|
|
800
|
-
const startOfTargetSlotMs = Number(getTimestampForSlot(targetSlot, l1Constants)) * 1000;
|
|
801
|
-
// Aim to be in the mempool one L1 slot before the L2 slot starts, so we have a chance of
|
|
802
|
-
// being picked up by the first L1 block of the L2 slot.
|
|
803
|
-
const submitAfterMs = startOfTargetSlotMs - Number(this.ethereumSlotDuration) * 1000;
|
|
798
|
+
await this.waitForTargetSlot(targetSlot);
|
|
804
799
|
if (this.interrupted) {
|
|
805
800
|
return undefined;
|
|
806
801
|
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
802
|
+
return this.sendRequests(targetSlot);
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Sleeps until one L1 slot before the L2 slot boundary, and then waits for that L1 block
|
|
806
|
+
* to be mined, so we don't risk being included in it. If that block never gets mined after
|
|
807
|
+
* a timeout, we assume it got skipped on L1, so we send the tx anyway.
|
|
808
|
+
*/ async waitForTargetSlot(targetSlot) {
|
|
809
|
+
const l1Constants = this.epochCache.getL1Constants();
|
|
810
|
+
const nowInSeconds = this.dateProvider.nowInSeconds();
|
|
811
|
+
const startOfTargetSlotTs = getTimestampForSlot(targetSlot, l1Constants);
|
|
812
|
+
const previousL1BlockTs = startOfTargetSlotTs - this.ethereumSlotDuration;
|
|
813
|
+
const waitDeadlineTs = previousL1BlockTs + BigInt(this.previousL1BlockWaitTimeoutMs / 1000);
|
|
814
|
+
const logCtx = {
|
|
815
|
+
targetSlot,
|
|
816
|
+
startOfTargetSlotTs,
|
|
817
|
+
nowInSeconds,
|
|
818
|
+
previousL1BlockTs,
|
|
819
|
+
waitDeadlineTs
|
|
820
|
+
};
|
|
821
|
+
// Check if we are already past time
|
|
822
|
+
if (nowInSeconds >= startOfTargetSlotTs) {
|
|
823
|
+
this.log.verbose(`Target slot ${targetSlot} already started, sending requests immediately`, logCtx);
|
|
824
|
+
return;
|
|
825
|
+
}
|
|
826
|
+
// Otherwise we wait
|
|
827
|
+
this.log.debug(`Waiting for slot ${targetSlot} before sending requests`, logCtx);
|
|
828
|
+
// Wait until previous L1 block timestamp first
|
|
829
|
+
const sleepMs = (Number(previousL1BlockTs) - nowInSeconds) * 1000;
|
|
830
|
+
if (sleepMs > 0 && !this.interrupted) {
|
|
831
|
+
this.log.trace(`Sleeping ${sleepMs}ms before waiting for previous L1 block`, logCtx);
|
|
813
832
|
await this.interruptibleSleep.sleep(sleepMs);
|
|
814
833
|
}
|
|
815
|
-
|
|
816
|
-
|
|
834
|
+
// Then loop until we see the previous L1 block, so we know that we cannot be included in it.
|
|
835
|
+
// We time out after a while, once we are sure that that block is skipped in L1.
|
|
836
|
+
while(!this.interrupted){
|
|
837
|
+
try {
|
|
838
|
+
const nowInSeconds = this.dateProvider.nowInSeconds();
|
|
839
|
+
logCtx.nowInSeconds = nowInSeconds;
|
|
840
|
+
if (nowInSeconds >= waitDeadlineTs) {
|
|
841
|
+
this.log.warn(`Timed out waiting for previous L1 block before sending requests, proceeding`, logCtx);
|
|
842
|
+
return;
|
|
843
|
+
}
|
|
844
|
+
const latestBlockTs = await this.l1TxUtils.getBlock().then((b)=>b.timestamp);
|
|
845
|
+
if (latestBlockTs >= previousL1BlockTs) {
|
|
846
|
+
this.log.debug(`Previous L1 block mined, proceeding to send requests`, {
|
|
847
|
+
...logCtx,
|
|
848
|
+
latestBlockTs
|
|
849
|
+
});
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
this.log.trace(`Previous L1 block not mined yet, continuing to wait`, {
|
|
853
|
+
...logCtx,
|
|
854
|
+
latestBlockTs
|
|
855
|
+
});
|
|
856
|
+
} catch (err) {
|
|
857
|
+
this.log.error(`Error while waiting for previous L1 block before sending requests; retrying`, err, logCtx);
|
|
858
|
+
} finally{
|
|
859
|
+
await this.interruptibleSleep.sleep(this.previousL1BlockWaitPollIntervalMs);
|
|
860
|
+
}
|
|
817
861
|
}
|
|
818
|
-
return this.sendRequests(targetSlot);
|
|
819
862
|
}
|
|
820
863
|
callbackBundledTransactions(requests, result) {
|
|
821
864
|
const actionsListStr = requests.map((r)=>r.action).join(', ');
|
|
@@ -1125,6 +1168,56 @@ export class SequencerPublisher {
|
|
|
1125
1168
|
*/ enqueueGovernanceCastSignal(governancePayload, slotNumber, signerAddress, signer) {
|
|
1126
1169
|
return this.enqueueCastSignalHelper(slotNumber, 'governance-signal', governancePayload, this.govProposerContract, signerAddress, signer);
|
|
1127
1170
|
}
|
|
1171
|
+
/**
|
|
1172
|
+
* Enqueues a `prune()` transaction if the rollup is prunable at the given slot's L1 timestamp.
|
|
1173
|
+
* `prune()` is permissionless and idempotent — if the chain is no longer prunable by send time the
|
|
1174
|
+
* bundle simulation usually drops the entry; on a node without `eth_simulateV1` the bundle is sent
|
|
1175
|
+
* as-is and the prune reverts `Rollup__NothingToPrune` inside `aggregate3(allowFailure: true)`
|
|
1176
|
+
* (a failed action, never a whole-tx revert). Used by the failed-sync fallback so a stuck pending
|
|
1177
|
+
* chain (e.g. bad data blocking sync) can be wound back to recover.
|
|
1178
|
+
* @returns true if a prune request was enqueued, false otherwise.
|
|
1179
|
+
*/ async enqueuePruneIfPrunable(slotNumber) {
|
|
1180
|
+
if (this.lastActions['prune'] === slotNumber) {
|
|
1181
|
+
this.log.debug(`Skipping duplicate prune for slot ${slotNumber}`, {
|
|
1182
|
+
slotNumber
|
|
1183
|
+
});
|
|
1184
|
+
return false;
|
|
1185
|
+
}
|
|
1186
|
+
// Use the SAME timestamp the bundle simulator overrides block.timestamp with at send time
|
|
1187
|
+
// (sequencer-bundle-simulator.ts) so this upfront check and the send-time sim agree. Slot-start
|
|
1188
|
+
// and last-L1-slot both fall within the same L2 slot (and epoch, which is what `canPruneAtTime`
|
|
1189
|
+
// derives), so they agree today; matching the simulator keeps it robust if the contract ever uses
|
|
1190
|
+
// the timestamp more granularly.
|
|
1191
|
+
const ts = getLastL1SlotTimestampForL2Slot(slotNumber, this.epochCache.getL1Constants());
|
|
1192
|
+
const canPrune = await this.rollupContract.canPruneAtTime(ts).catch((err)=>{
|
|
1193
|
+
this.log.error(`Failed to check canPruneAtTime for slot ${slotNumber}`, err, {
|
|
1194
|
+
slotNumber
|
|
1195
|
+
});
|
|
1196
|
+
return false;
|
|
1197
|
+
});
|
|
1198
|
+
if (!canPrune) {
|
|
1199
|
+
this.log.debug(`Rollup not prunable at slot ${slotNumber}`, {
|
|
1200
|
+
slotNumber
|
|
1201
|
+
});
|
|
1202
|
+
return false;
|
|
1203
|
+
}
|
|
1204
|
+
const request = {
|
|
1205
|
+
to: this.rollupContract.address,
|
|
1206
|
+
data: encodeFunctionData({
|
|
1207
|
+
abi: RollupAbi,
|
|
1208
|
+
functionName: 'prune',
|
|
1209
|
+
args: []
|
|
1210
|
+
})
|
|
1211
|
+
};
|
|
1212
|
+
this.log.info(`Enqueuing rollup prune for slot ${slotNumber}`, {
|
|
1213
|
+
slotNumber
|
|
1214
|
+
});
|
|
1215
|
+
return this.enqueueRequest('prune', request, {
|
|
1216
|
+
address: this.rollupContract.address,
|
|
1217
|
+
abi: RollupAbi,
|
|
1218
|
+
eventName: 'PrunedPending'
|
|
1219
|
+
}, slotNumber);
|
|
1220
|
+
}
|
|
1128
1221
|
/** Enqueues all slashing actions as returned by the slasher client. */ async enqueueSlashingActions(actions, slotNumber, signerAddress, signer) {
|
|
1129
1222
|
if (actions.length === 0) {
|
|
1130
1223
|
this.log.debug(`No slashing actions to enqueue for slot ${slotNumber}`);
|
|
@@ -141,10 +141,15 @@ export declare class AutomineSequencer {
|
|
|
141
141
|
/**
|
|
142
142
|
* Warps L1 timestamp to `targetTimestampSec`. Rounded up to the next aztec-slot
|
|
143
143
|
* boundary so the next build lands on a fresh slot. Atomic with respect to builds —
|
|
144
|
-
* the queue ensures no build is in flight while the warp executes.
|
|
144
|
+
* the queue ensures no build is in flight while the warp executes. A no-op when the
|
|
145
|
+
* target is already at or behind the current L1 time (see {@link runWarp}).
|
|
145
146
|
*/
|
|
146
147
|
warpTo(targetTimestampSec: number): Promise<void>;
|
|
147
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* Warps L1 timestamp forward by `deltaSec` seconds from the current L1 time, rounded up to the next
|
|
150
|
+
* aztec-slot boundary. Throws if `deltaSec` is not positive (warping "by" a non-positive amount is a
|
|
151
|
+
* caller bug — unlike {@link warpTo}, which no-ops on a past target).
|
|
152
|
+
*/
|
|
148
153
|
warpBy(deltaSec: number): Promise<void>;
|
|
149
154
|
/**
|
|
150
155
|
* Reorgs L1 so that every L1 block strictly after the one that published
|
|
@@ -181,4 +186,4 @@ export declare class AutomineSequencer {
|
|
|
181
186
|
private tryBuildBlock;
|
|
182
187
|
private dropFailedTxsFromP2P;
|
|
183
188
|
}
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b21pbmVfc2VxdWVuY2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VxdWVuY2VyL2F1dG9taW5lL2F1dG9taW5lX3NlcXVlbmNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxhQUFhLEVBQW9CLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUFlLGdCQUFnQixFQUEyQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pHLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLFNBQVMsSUFBSSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFtQyxLQUFLLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhHLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxLQUFLLGlCQUFpQixFQUl2QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBNkIsS0FBSyxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pHLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsNEJBQTRCLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automine_sequencer.d.ts","sourceRoot":"","sources":["../../../src/sequencer/automine/automine_sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAe,gBAAgB,EAA2B,MAAM,iCAAiC,CAAC;AACzG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAmC,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAExG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,KAAK,iBAAiB,EAIvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAA6B,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,KAAK,EAGV,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAEhG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,iBAAiB,EACjB,sBAAsB,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,GAAG,eAAe,CAChG,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,sBAAsB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,6EAA6E;IAC7E,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACjD,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,WAAW,EAAE,0BAA0B,CAAC;IACxC,QAAQ,EAAE,UAAU,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,4BAA4B,CAAC;IAC/C,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;IAC3E;;;OAGG;IACH,QAAQ,EAAE,IAAI,CACZ,QAAQ,EACR,YAAY,GAAG,UAAU,GAAG,uBAAuB,GAAG,eAAe,GAAG,iCAAiC,CAC1G,CAAC;IACF,uEAAuE;IACvE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;IAC3C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oHAAoH;IACpH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAE7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,+GAA+G;IAC/G,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,eAAe,CAAC,CAAa;IAErC,oFAAoF;IACpF,OAAO,CAAC,WAAW,CAAuD;IAE1E,sEAAsE;IACtE,OAAO,CAAC,aAAa,CAAc;IAEnC,2FAA2F;IAC3F,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAE5C,YAAY,IAAI,EAAE,qBAAqB,EAKtC;IAED,yGAAyG;IACzG,OAAO,CAAC,mBAAmB;IAO3B;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BlC;IAED;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAWjC;IAED;;;;OAIG;IACI,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAgBpD;IAED;;;;OAIG;IACI,KAAK,IAAI,IAAI,CAMnB;IAED,8EAA8E;IACvE,MAAM,IAAI,IAAI,CAMpB;IAED;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAE1D;IAED,6FAA6F;IACtF,SAAS,IAAI,eAAe,CAElC;IAED,kEAAkE;IAC3D,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAQzC;IAED
|
|
1
|
+
{"version":3,"file":"automine_sequencer.d.ts","sourceRoot":"","sources":["../../../src/sequencer/automine/automine_sequencer.ts"],"names":[],"mappings":"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"}
|
|
@@ -233,11 +233,19 @@ import { InsufficientValidTxsError } from '@aztec/stdlib/interfaces/server';
|
|
|
233
233
|
/**
|
|
234
234
|
* Warps L1 timestamp to `targetTimestampSec`. Rounded up to the next aztec-slot
|
|
235
235
|
* boundary so the next build lands on a fresh slot. Atomic with respect to builds —
|
|
236
|
-
* the queue ensures no build is in flight while the warp executes.
|
|
236
|
+
* the queue ensures no build is in flight while the warp executes. A no-op when the
|
|
237
|
+
* target is already at or behind the current L1 time (see {@link runWarp}).
|
|
237
238
|
*/ warpTo(targetTimestampSec) {
|
|
238
239
|
return this.queue.put(()=>this.runWarp(targetTimestampSec));
|
|
239
240
|
}
|
|
240
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* Warps L1 timestamp forward by `deltaSec` seconds from the current L1 time, rounded up to the next
|
|
243
|
+
* aztec-slot boundary. Throws if `deltaSec` is not positive (warping "by" a non-positive amount is a
|
|
244
|
+
* caller bug — unlike {@link warpTo}, which no-ops on a past target).
|
|
245
|
+
*/ warpBy(deltaSec) {
|
|
246
|
+
if (deltaSec <= 0) {
|
|
247
|
+
throw new Error(`warpL2TimeAtLeastBy: duration must be positive, got ${deltaSec} seconds.`);
|
|
248
|
+
}
|
|
241
249
|
return this.queue.put(async ()=>{
|
|
242
250
|
const current = await this.deps.ethCheatCodes.lastBlockTimestamp();
|
|
243
251
|
await this.runWarp(current + deltaSec);
|
|
@@ -357,7 +365,10 @@ import { InsufficientValidTxsError } from '@aztec/stdlib/interfaces/server';
|
|
|
357
365
|
if (slotBoundaryTs > pendingBlockTs) {
|
|
358
366
|
await this.deps.ethCheatCodes.setNextBlockTimestamp(slotBoundaryTs);
|
|
359
367
|
}
|
|
360
|
-
const tips = await
|
|
368
|
+
const [tips, proposedCheckpoint] = await Promise.all([
|
|
369
|
+
this.deps.l2BlockSource.getL2Tips(),
|
|
370
|
+
this.deps.l2BlockSource.getProposedCheckpointData()
|
|
371
|
+
]);
|
|
361
372
|
const syncedToBlockNumber = tips.proposed.number;
|
|
362
373
|
// Ensure world state has processed the archiver's tip before forking. Without this,
|
|
363
374
|
// world state may still be at the previous block (since it syncs asynchronously from
|
|
@@ -365,7 +376,8 @@ import { InsufficientValidTxsError } from '@aztec/stdlib/interfaces/server';
|
|
|
365
376
|
// "Unable to initialize from future block".
|
|
366
377
|
await this.deps.worldState.syncImmediate(BlockNumber(syncedToBlockNumber));
|
|
367
378
|
const nextBlockNumber = BlockNumber(syncedToBlockNumber + 1);
|
|
368
|
-
const
|
|
379
|
+
const parentCheckpointNumber = proposedCheckpoint?.checkpointNumber ?? tips.checkpointed.checkpoint.number;
|
|
380
|
+
const checkpointNumber = CheckpointNumber(parentCheckpointNumber + 1);
|
|
369
381
|
const targetEpoch = getEpochAtSlot(SlotNumber(targetSlot), this.deps.l1Constants);
|
|
370
382
|
this.log.verbose(`Building automine checkpoint`, {
|
|
371
383
|
checkpointNumber,
|