@aztec/sequencer-client 0.0.1-commit.3e3d0c9cd → 0.0.1-commit.3f5453c7b
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 +6 -13
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +32 -84
- package/dest/config.d.ts +3 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +2 -9
- package/dest/global_variable_builder/fee_predictor.d.ts +37 -0
- package/dest/global_variable_builder/fee_predictor.d.ts.map +1 -0
- package/dest/global_variable_builder/fee_predictor.js +128 -0
- package/dest/global_variable_builder/fee_provider.d.ts +21 -0
- package/dest/global_variable_builder/fee_provider.d.ts.map +1 -0
- package/dest/global_variable_builder/fee_provider.js +58 -0
- package/dest/global_variable_builder/global_builder.d.ts +15 -14
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +16 -51
- package/dest/global_variable_builder/index.d.ts +4 -2
- package/dest/global_variable_builder/index.d.ts.map +1 -1
- package/dest/global_variable_builder/index.js +2 -0
- package/dest/publisher/config.d.ts +13 -1
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +17 -2
- package/dest/publisher/sequencer-publisher-factory.d.ts +3 -5
- package/dest/publisher/sequencer-publisher-factory.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-factory.js +2 -3
- package/dest/publisher/sequencer-publisher.d.ts +51 -43
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +124 -110
- package/dest/sequencer/chain_state_overrides.d.ts +25 -0
- package/dest/sequencer/chain_state_overrides.d.ts.map +1 -0
- package/dest/sequencer/chain_state_overrides.js +39 -0
- package/dest/sequencer/checkpoint_proposal_job.d.ts +26 -7
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +274 -159
- package/dest/sequencer/checkpoint_proposal_job_metrics.d.ts +34 -0
- package/dest/sequencer/checkpoint_proposal_job_metrics.d.ts.map +1 -0
- package/dest/sequencer/checkpoint_proposal_job_metrics.js +72 -0
- package/dest/sequencer/checkpoint_voter.d.ts +1 -2
- package/dest/sequencer/checkpoint_voter.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_voter.js +2 -5
- package/dest/sequencer/events.d.ts +2 -1
- package/dest/sequencer/events.d.ts.map +1 -1
- package/dest/sequencer/metrics.d.ts +9 -10
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +23 -20
- package/dest/sequencer/sequencer.d.ts +20 -7
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +125 -60
- package/dest/sequencer/timetable.d.ts +14 -1
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +45 -36
- package/dest/test/mock_checkpoint_builder.d.ts +4 -8
- package/dest/test/mock_checkpoint_builder.d.ts.map +1 -1
- package/package.json +27 -27
- package/src/client/sequencer-client.ts +44 -110
- package/src/config.ts +4 -8
- package/src/global_variable_builder/README.md +44 -0
- package/src/global_variable_builder/fee_predictor.ts +172 -0
- package/src/global_variable_builder/fee_provider.ts +75 -0
- package/src/global_variable_builder/global_builder.ts +26 -63
- package/src/global_variable_builder/index.ts +3 -1
- package/src/publisher/config.ts +32 -0
- package/src/publisher/sequencer-publisher-factory.ts +3 -6
- package/src/publisher/sequencer-publisher.ts +191 -157
- package/src/sequencer/README.md +83 -13
- package/src/sequencer/chain_state_overrides.ts +87 -0
- package/src/sequencer/checkpoint_proposal_job.ts +353 -186
- package/src/sequencer/checkpoint_proposal_job_metrics.ts +128 -0
- package/src/sequencer/checkpoint_voter.ts +1 -12
- package/src/sequencer/events.ts +1 -1
- package/src/sequencer/metrics.ts +29 -25
- package/src/sequencer/sequencer.ts +185 -66
- package/src/sequencer/timetable.ts +57 -45
- package/src/test/mock_checkpoint_builder.ts +3 -3
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type {
|
|
1
|
+
import { type SimulationOverridesPlan } from '@aztec/ethereum/contracts';
|
|
2
|
+
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
|
+
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
3
4
|
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
5
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import type { DateProvider } from '@aztec/foundation/timer';
|
|
5
7
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
8
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
7
|
-
import { GasFees } from '@aztec/stdlib/gas';
|
|
8
9
|
import type { CheckpointGlobalVariables, GlobalVariableBuilder as GlobalVariableBuilderInterface } from '@aztec/stdlib/tx';
|
|
9
10
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
11
|
+
/** Configuration for the GlobalVariableBuilder (excludes L1 client config). */
|
|
12
|
+
export type GlobalVariableBuilderConfig = {
|
|
13
|
+
l1Contracts: Pick<L1ContractAddresses, 'rollupAddress'>;
|
|
14
|
+
ethereumSlotDuration: number;
|
|
15
|
+
rollupVersion: bigint;
|
|
16
|
+
} & Pick<L1RollupConstants, 'slotDuration' | 'l1GenesisTime'>;
|
|
10
17
|
/**
|
|
11
18
|
* Simple global variables builder.
|
|
12
19
|
*/
|
|
13
20
|
export declare class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
14
|
-
private
|
|
15
|
-
private currentMinFees;
|
|
16
|
-
private currentL1BlockNumber;
|
|
17
|
-
private readonly rollupContract;
|
|
21
|
+
private readonly dateProvider;
|
|
18
22
|
private readonly publicClient;
|
|
23
|
+
private readonly rollupContract;
|
|
19
24
|
private readonly ethereumSlotDuration;
|
|
20
25
|
private readonly aztecSlotDuration;
|
|
21
26
|
private readonly l1GenesisTime;
|
|
22
27
|
private chainId;
|
|
23
28
|
private version;
|
|
24
|
-
constructor(
|
|
25
|
-
rollupVersion: bigint;
|
|
26
|
-
});
|
|
27
|
-
private computeCurrentMinFees;
|
|
28
|
-
getCurrentMinFees(): Promise<GasFees>;
|
|
29
|
+
constructor(dateProvider: DateProvider, publicClient: ViemPublicClient, config: GlobalVariableBuilderConfig);
|
|
29
30
|
/**
|
|
30
31
|
* Simple builder of global variables.
|
|
31
32
|
* @param blockNumber - The block number to build global variables for.
|
|
@@ -36,6 +37,6 @@ export declare class GlobalVariableBuilder implements GlobalVariableBuilderInter
|
|
|
36
37
|
*/
|
|
37
38
|
buildGlobalVariables(blockNumber: BlockNumber, coinbase: EthAddress, feeRecipient: AztecAddress, maybeSlot?: SlotNumber): Promise<GlobalVariables>;
|
|
38
39
|
/** Builds global variables that are constant throughout a checkpoint. */
|
|
39
|
-
buildCheckpointGlobalVariables(coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber: SlotNumber): Promise<CheckpointGlobalVariables>;
|
|
40
|
+
buildCheckpointGlobalVariables(coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber: SlotNumber, simulationOverridesPlan?: SimulationOverridesPlan): Promise<CheckpointGlobalVariables>;
|
|
40
41
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iYWxfdmFyaWFibGVfYnVpbGRlci9nbG9iYWxfYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyx1QkFBdUIsRUFFN0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBK0MsTUFBTSw2QkFBNkIsQ0FBQztBQUVsSCxPQUFPLEtBQUssRUFDVix5QkFBeUIsRUFDekIscUJBQXFCLElBQUksOEJBQThCLEVBQ3hELE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELCtFQUErRTtBQUMvRSxNQUFNLE1BQU0sMkJBQTJCLEdBQUc7SUFDeEMsV0FBVyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4RCxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IsYUFBYSxFQUFFLE1BQU0sQ0FBQztDQUN2QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLEdBQUcsZUFBZSxDQUFDLENBQUM7QUFFOUQ7O0dBRUc7QUFDSCxxQkFBYSxxQkFBc0IsWUFBVyw4QkFBOEI7SUFVeEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZO0lBQzdCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQVYvQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBaUI7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBUztJQUM5QyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFTO0lBQzNDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFTO0lBRXZDLE9BQU8sQ0FBQyxPQUFPLENBQUs7SUFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBSztJQUVwQixZQUNtQixZQUFZLEVBQUUsWUFBWSxFQUMxQixZQUFZLEVBQUUsZ0JBQWdCLEVBQy9DLE1BQU0sRUFBRSwyQkFBMkIsRUFVcEM7SUFFRDs7Ozs7OztPQU9HO0lBQ1Usb0JBQW9CLENBQy9CLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLFFBQVEsRUFBRSxVQUFVLEVBQ3BCLFlBQVksRUFBRSxZQUFZLEVBQzFCLFNBQVMsQ0FBQyxFQUFFLFVBQVUsR0FDckIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQVkxQjtJQUVELHlFQUF5RTtJQUM1RCw4QkFBOEIsQ0FDekMsUUFBUSxFQUFFLFVBQVUsRUFDcEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsVUFBVSxFQUFFLFVBQVUsRUFDdEIsdUJBQXVCLENBQUMsRUFBRSx1QkFBdUIsR0FDaEQsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBWXBDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"
|
|
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,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAA+C,MAAM,6BAA6B,CAAC;AAElH,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,IAAI,8BAA8B,EACxD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;IACxD,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;IAUxE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,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,YAAY,EAC1B,YAAY,EAAE,gBAAgB,EAC/C,MAAM,EAAE,2BAA2B,EAUpC;IAED;;;;;;;OAOG;IACU,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC,CAY1B;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,65 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { makeL1HttpTransport } from '@aztec/ethereum/client';
|
|
3
|
-
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
4
|
-
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
|
+
import { RollupContract, buildSimulationOverridesStateOverride } from '@aztec/ethereum/contracts';
|
|
5
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
|
-
import {
|
|
7
|
-
import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
3
|
+
import { getNextL1SlotTimestamp, getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
8
4
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
9
5
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
10
|
-
import { createPublicClient } from 'viem';
|
|
11
6
|
/**
|
|
12
7
|
* Simple global variables builder.
|
|
13
8
|
*/ export class GlobalVariableBuilder {
|
|
14
|
-
|
|
15
|
-
currentMinFees = Promise.resolve(new GasFees(0, 0));
|
|
16
|
-
currentL1BlockNumber = undefined;
|
|
17
|
-
rollupContract;
|
|
9
|
+
dateProvider;
|
|
18
10
|
publicClient;
|
|
11
|
+
rollupContract;
|
|
19
12
|
ethereumSlotDuration;
|
|
20
13
|
aztecSlotDuration;
|
|
21
14
|
l1GenesisTime;
|
|
22
15
|
chainId;
|
|
23
16
|
version;
|
|
24
|
-
constructor(config){
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
constructor(dateProvider, publicClient, config){
|
|
18
|
+
this.dateProvider = dateProvider;
|
|
19
|
+
this.publicClient = publicClient;
|
|
27
20
|
this.version = new Fr(config.rollupVersion);
|
|
28
|
-
this.chainId = new Fr(
|
|
21
|
+
this.chainId = new Fr(this.publicClient.chain.id);
|
|
29
22
|
this.ethereumSlotDuration = config.ethereumSlotDuration;
|
|
30
23
|
this.aztecSlotDuration = config.slotDuration;
|
|
31
24
|
this.l1GenesisTime = config.l1GenesisTime;
|
|
32
|
-
this.
|
|
33
|
-
chain: chain.chainInfo,
|
|
34
|
-
transport: makeL1HttpTransport(chain.rpcUrls, {
|
|
35
|
-
timeout: config.l1HttpTimeoutMS
|
|
36
|
-
}),
|
|
37
|
-
pollingInterval: config.viemPollingIntervalMS
|
|
38
|
-
});
|
|
39
|
-
this.rollupContract = new RollupContract(this.publicClient, l1Contracts.rollupAddress);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Computes the "current" min fees, e.g., the price that you currently should pay to get include in the next block
|
|
43
|
-
* @returns Min fees for the next block
|
|
44
|
-
*/ async computeCurrentMinFees() {
|
|
45
|
-
// Since this might be called in the middle of a slot where a block might have been published,
|
|
46
|
-
// we need to fetch the last block written, and estimate the earliest timestamp for the next block.
|
|
47
|
-
// The timestamp of that last block will act as a lower bound for the next block.
|
|
48
|
-
const lastCheckpoint = await this.rollupContract.getPendingCheckpoint();
|
|
49
|
-
const earliestTimestamp = await this.rollupContract.getTimestampForSlot(SlotNumber.fromBigInt(BigInt(lastCheckpoint.slotNumber) + 1n));
|
|
50
|
-
const nextEthTimestamp = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
51
|
-
const timestamp = earliestTimestamp > nextEthTimestamp ? earliestTimestamp : nextEthTimestamp;
|
|
52
|
-
return new GasFees(0, await this.rollupContract.getManaMinFeeAt(timestamp, true));
|
|
53
|
-
}
|
|
54
|
-
async getCurrentMinFees() {
|
|
55
|
-
// Get the current block number
|
|
56
|
-
const blockNumber = await this.publicClient.getBlockNumber();
|
|
57
|
-
// If the L1 block number has changed then chain a new promise to get the current min fees
|
|
58
|
-
if (this.currentL1BlockNumber === undefined || blockNumber > this.currentL1BlockNumber) {
|
|
59
|
-
this.currentL1BlockNumber = blockNumber;
|
|
60
|
-
this.currentMinFees = this.currentMinFees.then(()=>this.computeCurrentMinFees());
|
|
61
|
-
}
|
|
62
|
-
return this.currentMinFees;
|
|
25
|
+
this.rollupContract = new RollupContract(this.publicClient, config.l1Contracts.rollupAddress);
|
|
63
26
|
}
|
|
64
27
|
/**
|
|
65
28
|
* Simple builder of global variables.
|
|
@@ -69,22 +32,24 @@ import { createPublicClient } from 'viem';
|
|
|
69
32
|
* @param slotNumber - The slot number to use for the global variables, if undefined it will be calculated.
|
|
70
33
|
* @returns The global variables for the given block number.
|
|
71
34
|
*/ async buildGlobalVariables(blockNumber, coinbase, feeRecipient, maybeSlot) {
|
|
72
|
-
const slot = maybeSlot ?? await this.rollupContract.getSlotAt(
|
|
35
|
+
const slot = maybeSlot ?? await this.rollupContract.getSlotAt(getNextL1SlotTimestamp(this.dateProvider.nowInSeconds(), {
|
|
36
|
+
l1GenesisTime: this.l1GenesisTime,
|
|
37
|
+
ethereumSlotDuration: this.ethereumSlotDuration
|
|
38
|
+
}));
|
|
73
39
|
const checkpointGlobalVariables = await this.buildCheckpointGlobalVariables(coinbase, feeRecipient, slot);
|
|
74
40
|
return GlobalVariables.from({
|
|
75
41
|
blockNumber,
|
|
76
42
|
...checkpointGlobalVariables
|
|
77
43
|
});
|
|
78
44
|
}
|
|
79
|
-
/** Builds global variables that are constant throughout a checkpoint. */ async buildCheckpointGlobalVariables(coinbase, feeRecipient, slotNumber) {
|
|
45
|
+
/** Builds global variables that are constant throughout a checkpoint. */ async buildCheckpointGlobalVariables(coinbase, feeRecipient, slotNumber, simulationOverridesPlan) {
|
|
80
46
|
const { chainId, version } = this;
|
|
81
47
|
const timestamp = getTimestampForSlot(slotNumber, {
|
|
82
48
|
slotDuration: this.aztecSlotDuration,
|
|
83
49
|
l1GenesisTime: this.l1GenesisTime
|
|
84
50
|
});
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const gasFees = new GasFees(0, await this.rollupContract.getManaMinFeeAt(timestamp, true));
|
|
51
|
+
const stateOverride = await buildSimulationOverridesStateOverride(this.rollupContract, simulationOverridesPlan);
|
|
52
|
+
const gasFees = new GasFees(0, await this.rollupContract.getManaMinFeeAt(timestamp, true, stateOverride));
|
|
88
53
|
return {
|
|
89
54
|
chainId,
|
|
90
55
|
version,
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export { FeeProviderImpl } from './fee_provider.js';
|
|
2
|
+
export { GlobalVariableBuilder, type GlobalVariableBuilderConfig } from './global_builder.js';
|
|
3
|
+
export { FeePredictor } from './fee_predictor.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iYWxfdmFyaWFibGVfYnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEtBQUssMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -30,11 +30,19 @@ export type PublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
|
30
30
|
publisherForwarderAddress?: EthAddress;
|
|
31
31
|
/** Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path */
|
|
32
32
|
l1TxFailedStore?: string;
|
|
33
|
+
/** Min ETH balance below which a publisher gets funded. Undefined = funding disabled. */
|
|
34
|
+
publisherFundingThreshold?: bigint;
|
|
35
|
+
/** Amount of ETH to send when funding a publisher. Undefined = funding disabled. */
|
|
36
|
+
publisherFundingAmount?: bigint;
|
|
33
37
|
};
|
|
34
38
|
export type ProverPublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
35
39
|
fishermanMode?: boolean;
|
|
36
40
|
proverPublisherAllowInvalidStates?: boolean;
|
|
37
41
|
proverPublisherForwarderAddress?: EthAddress;
|
|
42
|
+
/** Min ETH balance below which a publisher gets funded. Undefined = funding disabled. */
|
|
43
|
+
publisherFundingThreshold?: bigint;
|
|
44
|
+
/** Amount of ETH to send when funding a publisher. Undefined = funding disabled. */
|
|
45
|
+
publisherFundingAmount?: bigint;
|
|
38
46
|
};
|
|
39
47
|
export type SequencerPublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
40
48
|
fishermanMode?: boolean;
|
|
@@ -42,6 +50,10 @@ export type SequencerPublisherConfig = L1TxUtilsConfig & BlobClientConfig & {
|
|
|
42
50
|
sequencerPublisherForwarderAddress?: EthAddress;
|
|
43
51
|
/** Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path */
|
|
44
52
|
l1TxFailedStore?: string;
|
|
53
|
+
/** Min ETH balance below which a publisher gets funded. Undefined = funding disabled. */
|
|
54
|
+
publisherFundingThreshold?: bigint;
|
|
55
|
+
/** Amount of ETH to send when funding a publisher. Undefined = funding disabled. */
|
|
56
|
+
publisherFundingAmount?: bigint;
|
|
45
57
|
};
|
|
46
58
|
export declare function getPublisherConfigFromProverConfig(config: ProverPublisherConfig): PublisherConfig;
|
|
47
59
|
export declare function getPublisherConfigFromSequencerConfig(config: SequencerPublisherConfig): PublisherConfig;
|
|
@@ -49,4 +61,4 @@ export declare const proverTxSenderConfigMappings: ConfigMappingsType<Omit<Prove
|
|
|
49
61
|
export declare const sequencerTxSenderConfigMappings: ConfigMappingsType<Omit<SequencerTxSenderConfig, 'l1Contracts'>>;
|
|
50
62
|
export declare const sequencerPublisherConfigMappings: ConfigMappingsType<SequencerPublisherConfig & L1TxUtilsConfig>;
|
|
51
63
|
export declare const proverPublisherConfigMappings: ConfigMappingsType<ProverPublisherConfig & L1TxUtilsConfig>;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBMkIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEYsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUEyQixNQUFNLG9DQUFvQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLFdBQVcsRUFBdUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJM0Qsa0RBQWtEO0FBQ2xELE1BQU0sTUFBTSxjQUFjLEdBQUcsY0FBYyxHQUFHO0lBQzVDLG1EQUFtRDtJQUNuRCxvQkFBb0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwRCwwREFBMEQ7SUFDMUQsa0JBQWtCLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztDQUNuQyxDQUFDO0FBRUYsTUFBTSxNQUFNLG9CQUFvQixHQUFHLGNBQWMsR0FBRztJQUNsRCwwQkFBMEIsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxRCx3QkFBd0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0NBQ3pDLENBQUM7QUFFRixNQUFNLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxHQUFHO0lBQ3JELDZCQUE2QixDQUFDLEVBQUUsV0FBVyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzdELDJCQUEyQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7Q0FDNUMsQ0FBQztBQUVGLHdCQUFnQixpQ0FBaUMsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEdBQUcsY0FBYyxDQU05RjtBQUVELHdCQUFnQixvQ0FBb0MsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLEdBQUcsY0FBYyxDQU1wRztBQUVELHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sZUFBZSxHQUFHLGVBQWUsR0FDM0MsZ0JBQWdCLEdBQUc7SUFDakIsb0dBQW9HO0lBQ3BHLDJCQUEyQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3RDLDRHQUE0RztJQUM1RyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDeEIsd0dBQXdHO0lBQ3hHLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxDQUFDO0lBQ3ZDLDRGQUE0RjtJQUM1RixlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDekIseUZBQXlGO0lBQ3pGLHlCQUF5QixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ25DLG9GQUFvRjtJQUNwRixzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNqQyxDQUFDO0FBa0JKLE1BQU0sTUFBTSxxQkFBcUIsR0FBRyxlQUFlLEdBQ2pELGdCQUFnQixHQUFHO0lBQ2pCLGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN4QixpQ0FBaUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM1QywrQkFBK0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUM3Qyx5RkFBeUY7SUFDekYseUJBQXlCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbkMsb0ZBQW9GO0lBQ3BGLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2pDLENBQUM7QUFFSixNQUFNLE1BQU0sd0JBQXdCLEdBQUcsZUFBZSxHQUNwRCxnQkFBZ0IsR0FBRztJQUNqQixhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDeEIsb0NBQW9DLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDL0Msa0NBQWtDLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDaEQsNEZBQTRGO0lBQzVGLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN6Qix5RkFBeUY7SUFDekYseUJBQXlCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbkMsb0ZBQW9GO0lBQ3BGLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2pDLENBQUM7QUFFSix3QkFBZ0Isa0NBQWtDLENBQUMsTUFBTSxFQUFFLHFCQUFxQixHQUFHLGVBQWUsQ0FNakc7QUFFRCx3QkFBZ0IscUNBQXFDLENBQUMsTUFBTSxFQUFFLHdCQUF3QixHQUFHLGVBQWUsQ0FPdkc7QUFFRCxlQUFPLE1BQU0sNEJBQTRCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxDQWV0RyxDQUFDO0FBRUYsZUFBTyxNQUFNLCtCQUErQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxhQUFhLENBQUMsQ0FlNUcsQ0FBQztBQUVGLGVBQU8sTUFBTSxnQ0FBZ0MsRUFBRSxrQkFBa0IsQ0FBQyx3QkFBd0IsR0FBRyxlQUFlLENBd0IzRyxDQUFDO0FBRUYsZUFBTyxNQUFNLDZCQUE2QixFQUFFLGtCQUFrQixDQUFDLHFCQUFxQixHQUFHLGVBQWUsQ0FvQnJHLENBQUMifQ==
|
|
@@ -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,EAAE,KAAK,kBAAkB,EAAE,WAAW,EAAuB,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
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
|
@@ -3,6 +3,7 @@ import { l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
|
|
|
3
3
|
import { l1TxUtilsConfigMappings } from '@aztec/ethereum/l1-tx-utils/config';
|
|
4
4
|
import { SecretValue, booleanConfigHelper } from '@aztec/foundation/config';
|
|
5
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { parseEther } from 'viem';
|
|
6
7
|
export function getTxSenderConfigFromProverConfig(config) {
|
|
7
8
|
return {
|
|
8
9
|
...config,
|
|
@@ -17,6 +18,18 @@ export function getTxSenderConfigFromSequencerConfig(config) {
|
|
|
17
18
|
publisherAddresses: config.sequencerPublisherAddresses
|
|
18
19
|
};
|
|
19
20
|
}
|
|
21
|
+
/** Shared config mappings for publisher funding, used by both sequencer and prover publisher configs. */ const publisherFundingConfigMappings = {
|
|
22
|
+
publisherFundingThreshold: {
|
|
23
|
+
env: 'PUBLISHER_FUNDING_THRESHOLD',
|
|
24
|
+
description: 'Min ETH balance below which a publisher gets funded. Specified in ether (e.g. 0.1). Unset = funding disabled.',
|
|
25
|
+
parseEnv: (val)=>parseEther(val)
|
|
26
|
+
},
|
|
27
|
+
publisherFundingAmount: {
|
|
28
|
+
env: 'PUBLISHER_FUNDING_AMOUNT',
|
|
29
|
+
description: 'Amount of ETH to send when funding a publisher. Specified in ether (e.g. 0.5). Unset = funding disabled.',
|
|
30
|
+
parseEnv: (val)=>parseEther(val)
|
|
31
|
+
}
|
|
32
|
+
};
|
|
20
33
|
export function getPublisherConfigFromProverConfig(config) {
|
|
21
34
|
return {
|
|
22
35
|
...config,
|
|
@@ -89,7 +102,8 @@ export const sequencerPublisherConfigMappings = {
|
|
|
89
102
|
l1TxFailedStore: {
|
|
90
103
|
env: 'L1_TX_FAILED_STORE',
|
|
91
104
|
description: 'Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path'
|
|
92
|
-
}
|
|
105
|
+
},
|
|
106
|
+
...publisherFundingConfigMappings
|
|
93
107
|
};
|
|
94
108
|
export const proverPublisherConfigMappings = {
|
|
95
109
|
...l1TxUtilsConfigMappings,
|
|
@@ -108,5 +122,6 @@ export const proverPublisherConfigMappings = {
|
|
|
108
122
|
env: `PROVER_PUBLISHER_FORWARDER_ADDRESS`,
|
|
109
123
|
description: 'Address of the forwarder contract to wrap all L1 transactions through (for testing purposes only)',
|
|
110
124
|
parseEnv: (val)=>val ? EthAddress.fromString(val) : undefined
|
|
111
|
-
}
|
|
125
|
+
},
|
|
126
|
+
...publisherFundingConfigMappings
|
|
112
127
|
};
|
|
@@ -6,7 +6,6 @@ import type { GovernanceProposerContract, RollupContract } from '@aztec/ethereum
|
|
|
6
6
|
import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
7
7
|
import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
8
8
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
9
|
-
import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
10
9
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
11
10
|
import { NodeKeystoreAdapter } from '@aztec/validator-client';
|
|
12
11
|
import type { SequencerClientConfig } from '../config.js';
|
|
@@ -31,7 +30,6 @@ export declare class SequencerPublisherFactory {
|
|
|
31
30
|
epochCache: EpochCache;
|
|
32
31
|
rollupContract: RollupContract;
|
|
33
32
|
governanceProposerContract: GovernanceProposerContract;
|
|
34
|
-
slashFactoryContract: SlashFactoryContract;
|
|
35
33
|
nodeKeyStore: NodeKeystoreAdapter;
|
|
36
34
|
logger?: Logger;
|
|
37
35
|
});
|
|
@@ -46,7 +44,7 @@ export declare class SequencerPublisherFactory {
|
|
|
46
44
|
* @returns A new SequencerPublisher instance.
|
|
47
45
|
*/
|
|
48
46
|
create(validatorAddress?: EthAddress): Promise<AttestorPublisherPair>;
|
|
49
|
-
/**
|
|
50
|
-
|
|
47
|
+
/** Stops all publishers managed by this factory. Used during sequencer shutdown. */
|
|
48
|
+
stopAll(): Promise<void>;
|
|
51
49
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci1mYWN0b3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL3NlcXVlbmNlci1wdWJsaXNoZXItZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFM0YsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUQsT0FBTyxFQUFlLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0UsTUFBTSxNQUFNLHFCQUFxQixHQUFHO0lBQ2xDLGVBQWUsRUFBRSxVQUFVLENBQUM7SUFDNUIsU0FBUyxFQUFFLGtCQUFrQixDQUFDO0NBQy9CLENBQUM7QUFFRixxQkFBYSx5QkFBeUI7SUFXbEMsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLElBQUk7SUFYZCxPQUFPLENBQUMsZ0JBQWdCLENBQTRCO0lBRXBELGdGQUFnRjtJQUNoRixPQUFPLENBQUMsV0FBVyxDQUEyQztJQUU5RCxPQUFPLENBQUMsWUFBWSxDQUFzQjtJQUUxQyxPQUFPLENBQUMsTUFBTSxDQUFTO0lBRXZCLFlBQ1UsZUFBZSxFQUFFLHFCQUFxQixFQUN0QyxJQUFJLEVBQUU7UUFDWixTQUFTLEVBQUUsZUFBZSxDQUFDO1FBQzNCLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztRQUNoQyxZQUFZLEVBQUUsWUFBWSxDQUFDO1FBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUM7UUFDdkIsY0FBYyxFQUFFLGNBQWMsQ0FBQztRQUMvQiwwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQztRQUN2RCxZQUFZLEVBQUUsbUJBQW1CLENBQUM7UUFDbEMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ2pCLEVBS0Y7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEdBQUcsSUFBSSxDQUU1RDtJQUVEOzs7O09BSUc7SUFDVSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBbURqRjtJQUVELG9GQUFvRjtJQUN2RSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVwQztDQUNGIn0=
|
|
@@ -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,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,
|
|
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,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,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,CAmDjF;IAED,oFAAoF;IACvE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;CACF"}
|
|
@@ -59,7 +59,6 @@ export class SequencerPublisherFactory {
|
|
|
59
59
|
epochCache: this.deps.epochCache,
|
|
60
60
|
governanceProposerContract: this.deps.governanceProposerContract,
|
|
61
61
|
slashingProposerContract,
|
|
62
|
-
slashFactoryContract: this.deps.slashFactoryContract,
|
|
63
62
|
dateProvider: this.deps.dateProvider,
|
|
64
63
|
metrics: this.publisherMetrics,
|
|
65
64
|
lastActions: this.lastActions,
|
|
@@ -70,7 +69,7 @@ export class SequencerPublisherFactory {
|
|
|
70
69
|
publisher
|
|
71
70
|
};
|
|
72
71
|
}
|
|
73
|
-
/**
|
|
74
|
-
this.deps.publisherManager.
|
|
72
|
+
/** Stops all publishers managed by this factory. Used during sequencer shutdown. */ async stopAll() {
|
|
73
|
+
await this.deps.publisherManager.stop();
|
|
75
74
|
}
|
|
76
75
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
2
2
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
3
3
|
import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
4
|
-
import { type
|
|
4
|
+
import { type GovernanceProposerContract, RollupContract, type SimulationOverridesPlan, type SlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import { type L1FeeAnalysisResult, L1FeeAnalyzer } from '@aztec/ethereum/l1-fee-analysis';
|
|
6
6
|
import { type L1BlobInputs, type L1TxConfig, type L1TxRequest, type L1TxUtils, type TransactionStats } from '@aztec/ethereum/l1-tx-utils';
|
|
7
7
|
import { FormattedViemError } from '@aztec/ethereum/utils';
|
|
@@ -10,25 +10,46 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
10
10
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
11
11
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
12
12
|
import { type Logger } from '@aztec/foundation/log';
|
|
13
|
-
import { DateProvider } from '@aztec/foundation/timer';
|
|
13
|
+
import { type DateProvider } from '@aztec/foundation/timer';
|
|
14
14
|
import { type ProposerSlashAction } from '@aztec/slasher';
|
|
15
15
|
import { CommitteeAttestationsAndSigners, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
16
16
|
import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
17
|
-
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
18
17
|
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
19
18
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
20
19
|
import { type TransactionReceipt, type TypedDataDefinition } from 'viem';
|
|
21
20
|
import type { SequencerPublisherConfig } from './config.js';
|
|
22
21
|
import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
23
|
-
|
|
22
|
+
/** Result of a sendRequests call, returned by both sendRequests() and sendRequestsAt(). */
|
|
23
|
+
export type SendRequestsResult = {
|
|
24
|
+
/** The L1 transaction receipt or error from the bundled multicall. */
|
|
25
|
+
result: {
|
|
26
|
+
receipt: TransactionReceipt;
|
|
27
|
+
errorMsg?: string;
|
|
28
|
+
} | FormattedViemError;
|
|
29
|
+
/** Actions that expired (past their deadline) before the request was sent. */
|
|
30
|
+
expiredActions: Action[];
|
|
31
|
+
/** Actions that were included in the sent L1 transaction. */
|
|
32
|
+
sentActions: Action[];
|
|
33
|
+
/** Actions whose L1 simulation succeeded (subset of sentActions). */
|
|
34
|
+
successfulActions: Action[];
|
|
35
|
+
/** Actions whose L1 simulation failed (subset of sentActions). */
|
|
36
|
+
failedActions: Action[];
|
|
37
|
+
};
|
|
38
|
+
export declare const Actions: readonly ["invalidate-by-invalid-attestation", "invalidate-by-insufficient-attestations", "propose", "governance-signal", "vote-offenses", "execute-slash"];
|
|
24
39
|
export type Action = (typeof Actions)[number];
|
|
25
|
-
export declare const compareActions: (a: "
|
|
40
|
+
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;
|
|
26
41
|
export type InvalidateCheckpointRequest = {
|
|
27
42
|
request: L1TxRequest;
|
|
28
43
|
reason: 'invalid-attestation' | 'insufficient-attestations';
|
|
29
44
|
gasUsed: bigint;
|
|
30
45
|
checkpointNumber: CheckpointNumber;
|
|
31
46
|
forcePendingCheckpointNumber: CheckpointNumber;
|
|
47
|
+
/** Archive at the rollback target checkpoint (checkpoint N-1). */
|
|
48
|
+
lastArchive: Fr;
|
|
49
|
+
};
|
|
50
|
+
type EnqueueProposeCheckpointOpts = {
|
|
51
|
+
txTimeoutAt?: Date;
|
|
52
|
+
simulationOverridesPlan?: SimulationOverridesPlan;
|
|
32
53
|
};
|
|
33
54
|
interface RequestWithExpiry {
|
|
34
55
|
action: Action;
|
|
@@ -36,6 +57,8 @@ interface RequestWithExpiry {
|
|
|
36
57
|
lastValidL2Slot: SlotNumber;
|
|
37
58
|
gasConfig?: Pick<L1TxConfig, 'txTimeoutAt' | 'gasLimit'>;
|
|
38
59
|
blobConfig?: L1BlobInputs;
|
|
60
|
+
/** Optional pre-send validation. If it rejects, the request is discarded. */
|
|
61
|
+
preCheck?: () => Promise<void>;
|
|
39
62
|
checkSuccess: (request: L1TxRequest, result?: {
|
|
40
63
|
receipt: TransactionReceipt;
|
|
41
64
|
stats?: TransactionStats;
|
|
@@ -55,6 +78,9 @@ export declare class SequencerPublisher {
|
|
|
55
78
|
private payloadProposedCache;
|
|
56
79
|
protected log: Logger;
|
|
57
80
|
protected ethereumSlotDuration: bigint;
|
|
81
|
+
protected aztecSlotDuration: bigint;
|
|
82
|
+
/** Date provider for wall-clock time. */
|
|
83
|
+
private readonly dateProvider;
|
|
58
84
|
private blobClient;
|
|
59
85
|
/** Address to use for simulations in fisherman mode (actual proposer's address) */
|
|
60
86
|
private proposerAddressForSimulation?;
|
|
@@ -64,25 +90,25 @@ export declare class SequencerPublisher {
|
|
|
64
90
|
private l1FeeAnalyzer?;
|
|
65
91
|
/** Fee asset price oracle for computing price modifiers from Uniswap V4 */
|
|
66
92
|
private feeAssetPriceOracle;
|
|
93
|
+
/** Interruptible sleep used by sendRequestsAt to wait until a target timestamp. */
|
|
94
|
+
private readonly interruptibleSleep;
|
|
67
95
|
static MULTICALL_OVERHEAD_GAS_GUESS: bigint;
|
|
68
96
|
static VOTE_GAS_GUESS: bigint;
|
|
69
97
|
l1TxUtils: L1TxUtils;
|
|
70
98
|
rollupContract: RollupContract;
|
|
71
99
|
govProposerContract: GovernanceProposerContract;
|
|
72
|
-
slashingProposerContract:
|
|
73
|
-
slashFactoryContract: SlashFactoryContract;
|
|
100
|
+
slashingProposerContract: SlashingProposerContract | undefined;
|
|
74
101
|
readonly tracer: Tracer;
|
|
75
102
|
protected requests: RequestWithExpiry[];
|
|
76
|
-
constructor(config: Pick<SequencerPublisherConfig, 'fishermanMode' | 'l1TxFailedStore'> & Pick<L1ContractsConfig, 'ethereumSlotDuration'> & {
|
|
103
|
+
constructor(config: Pick<SequencerPublisherConfig, 'fishermanMode' | 'l1TxFailedStore'> & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration'> & {
|
|
77
104
|
l1ChainId: number;
|
|
78
105
|
}, deps: {
|
|
79
106
|
telemetry?: TelemetryClient;
|
|
80
107
|
blobClient: BlobClientInterface;
|
|
81
108
|
l1TxUtils: L1TxUtils;
|
|
82
109
|
rollupContract: RollupContract;
|
|
83
|
-
slashingProposerContract:
|
|
110
|
+
slashingProposerContract: SlashingProposerContract | undefined;
|
|
84
111
|
governanceProposerContract: GovernanceProposerContract;
|
|
85
|
-
slashFactoryContract: SlashFactoryContract;
|
|
86
112
|
epochCache: EpochCache;
|
|
87
113
|
dateProvider: DateProvider;
|
|
88
114
|
metrics: SequencerPublisherMetrics;
|
|
@@ -132,31 +158,16 @@ export declare class SequencerPublisher {
|
|
|
132
158
|
* - a receipt and errorMsg if it failed on L1
|
|
133
159
|
* - undefined if no valid requests are found OR the tx failed to send.
|
|
134
160
|
*/
|
|
135
|
-
sendRequests(): Promise<
|
|
136
|
-
result: FormattedViemError | {
|
|
137
|
-
receipt: TransactionReceipt<bigint, number, "reverted" | "success", import("viem").TransactionType>;
|
|
138
|
-
stats: TransactionStats | undefined;
|
|
139
|
-
errorMsg?: undefined;
|
|
140
|
-
} | {
|
|
141
|
-
stats?: undefined;
|
|
142
|
-
receipt: TransactionReceipt<bigint, number, "reverted" | "success", import("viem").TransactionType>;
|
|
143
|
-
errorMsg: string | undefined;
|
|
144
|
-
};
|
|
145
|
-
expiredActions: ("create-empire-payload" | "empire-slashing-signal" | "execute-empire-payload" | "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses")[];
|
|
146
|
-
sentActions: ("create-empire-payload" | "empire-slashing-signal" | "execute-empire-payload" | "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses")[];
|
|
147
|
-
successfulActions: ("create-empire-payload" | "empire-slashing-signal" | "execute-empire-payload" | "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses")[];
|
|
148
|
-
failedActions: ("create-empire-payload" | "empire-slashing-signal" | "execute-empire-payload" | "execute-slash" | "governance-signal" | "invalidate-by-insufficient-attestations" | "invalidate-by-invalid-attestation" | "propose" | "vote-offenses")[];
|
|
149
|
-
} | undefined>;
|
|
161
|
+
sendRequests(): Promise<SendRequestsResult | undefined>;
|
|
150
162
|
private forwardWithPublisherRotation;
|
|
163
|
+
sendRequestsAt(submitAfter: Date): Promise<SendRequestsResult | undefined>;
|
|
151
164
|
private callbackBundledTransactions;
|
|
152
165
|
/**
|
|
153
|
-
* @notice Will call `
|
|
166
|
+
* @notice Will call `canProposeAt` to make sure that it is possible to propose
|
|
154
167
|
* @param tipArchive - The archive to check
|
|
155
168
|
* @returns The slot and block number if it is possible to propose, undefined otherwise
|
|
156
169
|
*/
|
|
157
|
-
|
|
158
|
-
forcePendingCheckpointNumber?: CheckpointNumber;
|
|
159
|
-
}): Promise<{
|
|
170
|
+
canProposeAt(tipArchive: Fr, msgSender: EthAddress, simulationOverridesPlan?: SimulationOverridesPlan): Promise<{
|
|
160
171
|
slot: SlotNumber;
|
|
161
172
|
checkpointNumber: CheckpointNumber;
|
|
162
173
|
timeOfNextL1Slot: bigint;
|
|
@@ -167,9 +178,7 @@ export declare class SequencerPublisher {
|
|
|
167
178
|
* It will throw if the block header is invalid.
|
|
168
179
|
* @param header - The block header to validate
|
|
169
180
|
*/
|
|
170
|
-
validateBlockHeader(header: CheckpointHeader,
|
|
171
|
-
forcePendingCheckpointNumber: CheckpointNumber | undefined;
|
|
172
|
-
}): Promise<void>;
|
|
181
|
+
validateBlockHeader(header: CheckpointHeader, simulationOverridesPlan?: SimulationOverridesPlan): Promise<void>;
|
|
173
182
|
/**
|
|
174
183
|
* Simulate making a call to invalidate a checkpoint with invalid attestations. Returns undefined if no need to invalidate.
|
|
175
184
|
* @param validationResult - The validation result indicating which checkpoint to invalidate (as returned by the archiver)
|
|
@@ -177,25 +186,19 @@ export declare class SequencerPublisher {
|
|
|
177
186
|
simulateInvalidateCheckpoint(validationResult: ValidateCheckpointResult): Promise<InvalidateCheckpointRequest | undefined>;
|
|
178
187
|
private buildInvalidateCheckpointRequest;
|
|
179
188
|
/** Simulates `propose` to make sure that the checkpoint is valid for submission */
|
|
180
|
-
validateCheckpointForSubmission(checkpoint: Checkpoint, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature,
|
|
181
|
-
forcePendingCheckpointNumber?: CheckpointNumber;
|
|
182
|
-
}): Promise<bigint>;
|
|
189
|
+
validateCheckpointForSubmission(checkpoint: Checkpoint, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, simulationOverridesPlan?: SimulationOverridesPlan): Promise<void>;
|
|
183
190
|
private enqueueCastSignalHelper;
|
|
184
191
|
private isPayloadEmpty;
|
|
185
192
|
/**
|
|
186
193
|
* Enqueues a governance castSignal transaction to cast a signal for a given slot number.
|
|
187
194
|
* @param slotNumber - The slot number to cast a signal for.
|
|
188
|
-
* @param timestamp - The timestamp of the slot to cast a signal for.
|
|
189
195
|
* @returns True if the signal was successfully enqueued, false otherwise.
|
|
190
196
|
*/
|
|
191
|
-
enqueueGovernanceCastSignal(governancePayload: EthAddress, slotNumber: SlotNumber,
|
|
197
|
+
enqueueGovernanceCastSignal(governancePayload: EthAddress, slotNumber: SlotNumber, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
192
198
|
/** Enqueues all slashing actions as returned by the slasher client. */
|
|
193
|
-
enqueueSlashingActions(actions: ProposerSlashAction[], slotNumber: SlotNumber,
|
|
199
|
+
enqueueSlashingActions(actions: ProposerSlashAction[], slotNumber: SlotNumber, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
194
200
|
/** Simulates and enqueues a proposal for a checkpoint on L1 */
|
|
195
|
-
enqueueProposeCheckpoint(checkpoint: Checkpoint, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, opts?:
|
|
196
|
-
txTimeoutAt?: Date;
|
|
197
|
-
forcePendingCheckpointNumber?: CheckpointNumber;
|
|
198
|
-
}): Promise<void>;
|
|
201
|
+
enqueueProposeCheckpoint(checkpoint: Checkpoint, attestationsAndSigners: CommitteeAttestationsAndSigners, attestationsAndSignersSignature: Signature, opts?: EnqueueProposeCheckpointOpts): Promise<void>;
|
|
199
202
|
enqueueInvalidateCheckpoint(request: InvalidateCheckpointRequest | undefined, opts?: {
|
|
200
203
|
txTimeoutAt?: Date;
|
|
201
204
|
}): void;
|
|
@@ -212,6 +215,11 @@ export declare class SequencerPublisher {
|
|
|
212
215
|
private prepareProposeTx;
|
|
213
216
|
private simulateProposeTx;
|
|
214
217
|
private addProposeTx;
|
|
218
|
+
/** Returns the timestamp of the last L1 slot within a given L2 slot. Used as the simulation timestamp
|
|
219
|
+
* for eth_simulateV1 calls, since it's guaranteed to be greater than any L1 block produced during the slot. */
|
|
220
|
+
private getSimulationTimestamp;
|
|
221
|
+
/** Returns the timestamp of the next L1 slot boundary after now. */
|
|
222
|
+
private getNextL1SlotTimestamp;
|
|
215
223
|
}
|
|
216
224
|
export {};
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBRUwsS0FBSywwQkFBMEIsRUFJL0IsY0FBYyxFQUVkLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssd0JBQXdCLEVBSTlCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUYsT0FBTyxFQUNMLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsRUFDaEIsS0FBSyxTQUFTLEVBRWQsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQStDLE1BQU0sdUJBQXVCLENBQUM7QUFFeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRy9FLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUlsRSxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxP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
|