@aztec/sequencer-client 3.0.0-nightly.20251128 → 3.0.0-nightly.20251202
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/global_variable_builder/global_builder.d.ts +3 -2
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +8 -5
- package/dest/publisher/sequencer-publisher-factory.d.ts +1 -1
- package/dest/publisher/sequencer-publisher-factory.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.d.ts +10 -9
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +18 -18
- package/dest/sequencer/block_builder.js +1 -1
- package/dest/sequencer/metrics.d.ts +3 -2
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/sequencer.d.ts +10 -9
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +8 -7
- package/package.json +27 -27
- package/src/global_variable_builder/global_builder.ts +11 -7
- package/src/publisher/sequencer-publisher-factory.ts +2 -1
- package/src/publisher/sequencer-publisher.ts +38 -32
- package/src/sequencer/block_builder.ts +1 -1
- package/src/sequencer/metrics.ts +3 -2
- package/src/sequencer/sequencer.ts +21 -22
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type L1ContractsConfig, type L1ReaderConfig } from '@aztec/ethereum';
|
|
2
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
5
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
@@ -28,6 +29,6 @@ export declare class GlobalVariableBuilder implements GlobalVariableBuilderInter
|
|
|
28
29
|
* @param slotNumber - The slot number to use for the global variables, if undefined it will be calculated.
|
|
29
30
|
* @returns The global variables for the given block number.
|
|
30
31
|
*/
|
|
31
|
-
buildGlobalVariables(blockNumber: number, coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber?:
|
|
32
|
+
buildGlobalVariables(blockNumber: number, coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber?: SlotNumber): Promise<GlobalVariables>;
|
|
32
33
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iYWxfdmFyaWFibGVfYnVpbGRlci9nbG9iYWxfYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsS0FBSyxpQkFBaUIsRUFDdEIsS0FBSyxjQUFjLEVBSXBCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxxQkFBcUIsSUFBSSw4QkFBOEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUluRDs7R0FFRztBQUNILHFCQUFhLHFCQUFzQixZQUFXLDhCQUE4QjtJQUMxRSxPQUFPLENBQUMsR0FBRyxDQUFxRDtJQUNoRSxPQUFPLENBQUMsZUFBZSxDQUF3RDtJQUMvRSxPQUFPLENBQUMsb0JBQW9CLENBQWlDO0lBRTdELE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFpQjtJQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBbUI7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBUztJQUU5QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUs7SUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFLO0lBRXJCLFlBQVksTUFBTSxFQUFFLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUMsRUFjbkY7WUFNYSxzQkFBc0I7SUFldkIsa0JBQWtCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVVsRDtJQUVZLDBCQUEwQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQVEvRjtJQUVEOzs7Ozs7O09BT0c7SUFDVSxvQkFBb0IsQ0FDL0IsV0FBVyxFQUFFLE1BQU0sRUFDbkIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsVUFBVSxDQUFDLEVBQUUsVUFBVSxHQUN0QixPQUFPLENBQUMsZUFBZSxDQUFDLENBNEIxQjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAIpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,qBAAqB,IAAI,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IAC1E,OAAO,CAAC,GAAG,CAAqD;IAChE,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,oBAAoB,CAAiC;IAE7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAE9C,OAAO,CAAC,OAAO,CAAC,CAAK;IACrB,OAAO,CAAC,OAAO,CAAC,CAAK;IAErB,YAAY,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAcnF;YAMa,sBAAsB;
|
|
1
|
+
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAIpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,qBAAqB,IAAI,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IAC1E,OAAO,CAAC,GAAG,CAAqD;IAChE,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,oBAAoB,CAAiC;IAE7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAE9C,OAAO,CAAC,OAAO,CAAC,CAAK;IACrB,OAAO,CAAC,OAAO,CAAC,CAAK;IAErB,YAAY,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAcnF;YAMa,sBAAsB;IAevB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAUlD;IAEY,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAQ/F;IAED;;;;;;;OAOG;IACU,oBAAoB,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,eAAe,CAAC,CA4B1B;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RollupContract, createEthereumChain } from '@aztec/ethereum';
|
|
2
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
@@ -34,7 +35,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
34
35
|
// we need to fetch the last block written, and estimate the earliest timestamp for the next block.
|
|
35
36
|
// The timestamp of that last block will act as a lower bound for the next block.
|
|
36
37
|
const lastBlock = await this.rollupContract.getCheckpoint(await this.rollupContract.getCheckpointNumber());
|
|
37
|
-
const earliestTimestamp = await this.rollupContract.getTimestampForSlot(lastBlock.slotNumber + 1n);
|
|
38
|
+
const earliestTimestamp = await this.rollupContract.getTimestampForSlot(SlotNumber.fromBigInt(lastBlock.slotNumber + 1n));
|
|
38
39
|
const nextEthTimestamp = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
39
40
|
const timestamp = earliestTimestamp > nextEthTimestamp ? earliestTimestamp : nextEthTimestamp;
|
|
40
41
|
return new GasFees(0, await this.rollupContract.getManaBaseFeeAt(timestamp, true));
|
|
@@ -70,15 +71,17 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
70
71
|
* @returns The global variables for the given block number.
|
|
71
72
|
*/ async buildGlobalVariables(blockNumber, coinbase, feeRecipient, slotNumber) {
|
|
72
73
|
const { chainId, version } = await this.getGlobalConstantVariables();
|
|
74
|
+
let slot;
|
|
73
75
|
if (slotNumber === undefined) {
|
|
74
76
|
const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
75
|
-
|
|
77
|
+
slot = await this.rollupContract.getSlotAt(ts);
|
|
78
|
+
} else {
|
|
79
|
+
slot = slotNumber;
|
|
76
80
|
}
|
|
77
|
-
const timestamp = await this.rollupContract.getTimestampForSlot(
|
|
78
|
-
const slotFr = new Fr(slotNumber);
|
|
81
|
+
const timestamp = await this.rollupContract.getTimestampForSlot(slot);
|
|
79
82
|
// We can skip much of the logic in getCurrentBaseFees since it we already check that we are not within a slot elsewhere.
|
|
80
83
|
const gasFees = new GasFees(0, await this.rollupContract.getManaBaseFeeAt(timestamp, true));
|
|
81
|
-
const globalVariables = new GlobalVariables(chainId, version, blockNumber,
|
|
84
|
+
const globalVariables = new GlobalVariables(chainId, version, blockNumber, slot, timestamp, coinbase, feeRecipient, gasFees);
|
|
82
85
|
return globalVariables;
|
|
83
86
|
}
|
|
84
87
|
}
|
|
@@ -40,4 +40,4 @@ export declare class SequencerPublisherFactory {
|
|
|
40
40
|
*/
|
|
41
41
|
create(validatorAddress?: EthAddress): Promise<AttestorPublisherPair>;
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci1mYWN0b3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL3NlcXVlbmNlci1wdWJsaXNoZXItZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQW1CLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFakYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxRCxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRSxNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsZUFBZSxFQUFFLFVBQVUsQ0FBQztJQUM1QixTQUFTLEVBQUUsa0JBQWtCLENBQUM7Q0FDL0IsQ0FBQztBQUVGLHFCQUFhLHlCQUF5QjtJQVNsQyxPQUFPLENBQUMsZUFBZTtJQUN2QixPQUFPLENBQUMsSUFBSTtJQVRkLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBNEI7SUFFcEQsZ0ZBQWdGO0lBQ2hGLE9BQU8sQ0FBQyxXQUFXLENBQTJDO0lBRTlELE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFFdkIsWUFDVSxlQUFlLEVBQUUscUJBQXFCLEVBQ3RDLElBQUksRUFBRTtRQUNaLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDM0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxjQUFjLENBQUMsRUFBRSx1QkFBdUIsQ0FBQztRQUN6QyxZQUFZLEVBQUUsWUFBWSxDQUFDO1FBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUM7UUFDdkIsY0FBYyxFQUFFLGNBQWMsQ0FBQztRQUMvQiwwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQztRQUN2RCxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztRQUMzQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7UUFDbEMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ2pCLEVBSUY7SUFDRDs7OztPQUlHO0lBQ1UsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQXFDakY7Q0FDRiJ9
|
|
@@ -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,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAmB,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;
|
|
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,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAmB,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAe,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE3E,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE,UAAU,CAAC;IAC5B,SAAS,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,qBAAa,yBAAyB;IASlC,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,IAAI;IATd,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAA2C;IAE9D,OAAO,CAAC,MAAM,CAAS;IAEvB,YACU,eAAe,EAAE,qBAAqB,EACtC,IAAI,EAAE;QACZ,SAAS,EAAE,eAAe,CAAC;QAC3B,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACvD,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,EAAE,UAAU,CAAC;QACvB,cAAc,EAAE,cAAc,CAAC;QAC/B,0BAA0B,EAAE,0BAA0B,CAAC;QACvD,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,YAAY,EAAE,mBAAmB,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAIF;IACD;;;;OAIG;IACU,MAAM,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqCjF;CACF"}
|
|
@@ -3,6 +3,7 @@ import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
|
3
3
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
4
4
|
import { type EmpireSlashingProposerContract, FormattedViemError, type GovernanceProposerContract, type L1BlobInputs, type L1ContractsConfig, type L1TxConfig, type L1TxRequest, RollupContract, type TallySlashingProposerContract, type TransactionStats } from '@aztec/ethereum';
|
|
5
5
|
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
6
|
+
import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
6
7
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
8
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
8
9
|
import type { Fr } from '@aztec/foundation/fields';
|
|
@@ -29,7 +30,7 @@ export type InvalidateBlockRequest = {
|
|
|
29
30
|
interface RequestWithExpiry {
|
|
30
31
|
action: Action;
|
|
31
32
|
request: L1TxRequest;
|
|
32
|
-
lastValidL2Slot:
|
|
33
|
+
lastValidL2Slot: SlotNumber;
|
|
33
34
|
gasConfig?: Pick<L1TxConfig, 'txTimeoutAt' | 'gasLimit'>;
|
|
34
35
|
blobConfig?: L1BlobInputs;
|
|
35
36
|
checkSuccess: (request: L1TxRequest, result?: {
|
|
@@ -45,7 +46,7 @@ export declare class SequencerPublisher {
|
|
|
45
46
|
epochCache: EpochCache;
|
|
46
47
|
protected governanceLog: Logger;
|
|
47
48
|
protected slashingLog: Logger;
|
|
48
|
-
protected lastActions: Partial<Record<Action,
|
|
49
|
+
protected lastActions: Partial<Record<Action, SlotNumber>>;
|
|
49
50
|
protected log: Logger;
|
|
50
51
|
protected ethereumSlotDuration: bigint;
|
|
51
52
|
private blobSinkClient;
|
|
@@ -71,7 +72,7 @@ export declare class SequencerPublisher {
|
|
|
71
72
|
epochCache: EpochCache;
|
|
72
73
|
dateProvider: DateProvider;
|
|
73
74
|
metrics: SequencerPublisherMetrics;
|
|
74
|
-
lastActions: Partial<Record<Action,
|
|
75
|
+
lastActions: Partial<Record<Action, SlotNumber>>;
|
|
75
76
|
log?: Logger;
|
|
76
77
|
});
|
|
77
78
|
getRollupContract(): RollupContract;
|
|
@@ -82,7 +83,7 @@ export declare class SequencerPublisher {
|
|
|
82
83
|
*/
|
|
83
84
|
setProposerAddressForSimulation(proposerAddress: EthAddress | undefined): void;
|
|
84
85
|
addRequest(request: RequestWithExpiry): void;
|
|
85
|
-
getCurrentL2Slot():
|
|
86
|
+
getCurrentL2Slot(): SlotNumber;
|
|
86
87
|
/**
|
|
87
88
|
* Clears all pending requests without sending them.
|
|
88
89
|
*/
|
|
@@ -118,8 +119,8 @@ export declare class SequencerPublisher {
|
|
|
118
119
|
canProposeAtNextEthBlock(tipArchive: Fr, msgSender: EthAddress, opts?: {
|
|
119
120
|
forcePendingBlockNumber?: number;
|
|
120
121
|
}): Promise<{
|
|
121
|
-
slot:
|
|
122
|
-
checkpointNumber:
|
|
122
|
+
slot: SlotNumber;
|
|
123
|
+
checkpointNumber: CheckpointNumber;
|
|
123
124
|
timeOfNextL1Slot: bigint;
|
|
124
125
|
} | undefined>;
|
|
125
126
|
/**
|
|
@@ -156,9 +157,9 @@ export declare class SequencerPublisher {
|
|
|
156
157
|
* @param timestamp - The timestamp of the slot to cast a signal for.
|
|
157
158
|
* @returns True if the signal was successfully enqueued, false otherwise.
|
|
158
159
|
*/
|
|
159
|
-
enqueueGovernanceCastSignal(governancePayload: EthAddress, slotNumber:
|
|
160
|
+
enqueueGovernanceCastSignal(governancePayload: EthAddress, slotNumber: SlotNumber, timestamp: bigint, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
160
161
|
/** Enqueues all slashing actions as returned by the slasher client. */
|
|
161
|
-
enqueueSlashingActions(actions: ProposerSlashAction[], slotNumber:
|
|
162
|
+
enqueueSlashingActions(actions: ProposerSlashAction[], slotNumber: SlotNumber, timestamp: bigint, signerAddress: EthAddress, signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>): Promise<boolean>;
|
|
162
163
|
/**
|
|
163
164
|
* Proposes a L2 block on L1.
|
|
164
165
|
*
|
|
@@ -187,4 +188,4 @@ export declare class SequencerPublisher {
|
|
|
187
188
|
private addProposeTx;
|
|
188
189
|
}
|
|
189
190
|
export {};
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsS0FBSyx1QkFBdUIsRUFBd0IsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsS0FBSyw4QkFBOEIsRUFDbkMsa0JBQWtCLEVBQ2xCLEtBQUssMEJBQTBCLEVBRS9CLEtBQUssWUFBWSxFQUNqQixLQUFLLGlCQUFpQixFQUN0QixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsRUFHaEIsY0FBYyxFQUNkLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssZ0JBQWdCLEVBTXRCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUdqRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBNkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQXdCLCtCQUErQixFQUFFLEtBQUssbUJBQW1C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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,KAAK,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,KAAK,8BAA8B,EACnC,kBAAkB,EAClB,KAAK,0BAA0B,EAE/B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,WAAW,EAGhB,cAAc,EACd,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,KAAK,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,KAAK,8BAA8B,EACnC,kBAAkB,EAClB,KAAK,0BAA0B,EAE/B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,WAAW,EAGhB,cAAc,EACd,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EAMtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAsB,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAS,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAwB,+BAA+B,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACtH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAsB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAA6B,MAAM,MAAM,CAAC;AAExH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAgB7E,eAAO,MAAM,OAAO,0OAUV,CAAC;AAEX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAK9C,eAAO,MAAM,cAAc,geAAoE,CAAC;AAEhG,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,qBAAqB,GAAG,2BAA2B,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,UAAU,CAAC,CAAC;IACzD,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,YAAY,EAAE,CACZ,OAAO,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,kBAAkB,CAAC;QAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAClF,OAAO,CAAC;CACd;AAED,qBAAa,kBAAkB;IAqC3B,OAAO,CAAC,MAAM;IApChB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA4B;IACpC,UAAU,EAAE,UAAU,CAAC;IAE9B,SAAS,CAAC,aAAa,SAAkD;IACzE,SAAS,CAAC,WAAW,SAAgD;IAErE,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAM;IAEhE,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEvC,OAAO,CAAC,cAAc,CAA0B;IAEhD,mFAAmF;IACnF,OAAO,CAAC,4BAA4B,CAAC,CAAa;IAIlD,OAAc,iBAAiB,EAAE,MAAM,CAAe;IAGtD,OAAc,4BAA4B,SAAS;IAGnD,OAAc,cAAc,EAAE,MAAM,CAAY;IAEzC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,EAAE,0BAA0B,CAAC;IAChD,wBAAwB,EAAE,8BAA8B,GAAG,6BAA6B,GAAG,SAAS,CAAC;IACrG,oBAAoB,EAAE,oBAAoB,CAAC;IAElD,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAM;IAE7C,YACU,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAClG,IAAI,EAAE;QACJ,SAAS,CAAC,EAAE,eAAe,CAAC;QAC5B,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,SAAS,EAAE,kBAAkB,CAAC;QAC9B,cAAc,EAAE,cAAc,CAAC;QAC/B,wBAAwB,EAAE,8BAA8B,GAAG,6BAA6B,GAAG,SAAS,CAAC;QACrG,0BAA0B,EAAE,0BAA0B,CAAC;QACvD,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,UAAU,EAAE,UAAU,CAAC;QACvB,YAAY,EAAE,YAAY,CAAC;QAC3B,OAAO,EAAE,yBAAyB,CAAC;QACnC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,EAyBF;IAEM,iBAAiB,IAAI,cAAc,CAEzC;IAEM,gBAAgB,eAEtB;IAED;;;OAGG;IACI,+BAA+B,CAAC,eAAe,EAAE,UAAU,GAAG,SAAS,QAE7E;IAEM,UAAU,CAAC,OAAO,EAAE,iBAAiB,QAE3C;IAEM,gBAAgB,IAAI,UAAU,CAEpC;IAED;;OAEG;IACI,oBAAoB,IAAI,IAAI,CAMlC;IAED;;;;;;OAMG;IACU,YAAY;;;;;;;;;;;;;;mBAoFxB;IAED,OAAO,CAAC,2BAA2B;IAuBnC;;;;OAIG;IACI,wBAAwB,CAC7B,UAAU,EAAE,EAAE,EACd,SAAS,EAAE,UAAU,EACrB,IAAI,GAAE;QAAE,uBAAuB,CAAC,EAAE,MAAM,CAAA;KAAO;;;;mBAsBhD;IACD;;;;;OAKG;IACU,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,iBA4ChH;IAED;;;OAGG;IACU,uBAAuB,CAClC,gBAAgB,EAAE,mBAAmB,GACpC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAwD7C;IAED,OAAO,CAAC,2BAA2B;IAgCnC;;;;;;;;OAQG;IACU,0BAA0B,CACrC,KAAK,EAAE,OAAO,EACd,sBAAsB,EAAE,+BAA+B,EACvD,+BAA+B,EAAE,SAAS,EAC1C,OAAO,EAAE;QAAE,uBAAuB,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,MAAM,CAAC,CAqCjB;YAEa,uBAAuB;IAsFrC;;;;;OAKG;IACI,2BAA2B,CAChC,iBAAiB,EAAE,UAAU,EAC7B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,UAAU,EACzB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,GAC3D,OAAO,CAAC,OAAO,CAAC,CAUlB;IAED,uEAAuE;IAC1D,sBAAsB,CACjC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,UAAU,EACzB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,GAC3D,OAAO,CAAC,OAAO,CAAC,CAkHlB;IAED;;;;;OAKG;IACU,qBAAqB,CAChC,KAAK,EAAE,OAAO,EACd,sBAAsB,EAAE,+BAA+B,EACvD,+BAA+B,EAAE,SAAS,EAC1C,IAAI,GAAE;QAAE,WAAW,CAAC,EAAE,IAAI,CAAC;QAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;KAAO,GAClE,OAAO,CAAC,OAAO,CAAC,CAoClB;IAEM,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAAE,IAAI,GAAE;QAAE,WAAW,CAAC,EAAE,IAAI,CAAA;KAAO,QA8B3G;YAEa,yBAAyB;IAoDvC;;;;;OAKG;IACI,SAAS,SAGf;IAED,wDAAwD;IACjD,OAAO,SAGb;YAEa,gBAAgB;YAqEhB,iBAAiB;YA2FjB,YAAY;CAkF3B"}
|
|
@@ -3,6 +3,7 @@ import { createBlobSinkClient } from '@aztec/blob-sink/client';
|
|
|
3
3
|
import { FormattedViemError, MULTI_CALL_3_ADDRESS, Multicall3, RollupContract, WEI_CONST, formatViemError, tryExtractEvent } from '@aztec/ethereum';
|
|
4
4
|
import { sumBigint } from '@aztec/foundation/bigint';
|
|
5
5
|
import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer';
|
|
6
|
+
import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
6
7
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
8
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
8
9
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -227,8 +228,8 @@ export class SequencerPublisher {
|
|
|
227
228
|
'InvalidProposer',
|
|
228
229
|
'InvalidArchive'
|
|
229
230
|
];
|
|
230
|
-
return this.rollupContract.canProposeAtNextEthBlock(tipArchive.toBuffer(), msgSender.toString(), this.ethereumSlotDuration, {
|
|
231
|
-
forcePendingCheckpointNumber: opts.forcePendingBlockNumber
|
|
231
|
+
return this.rollupContract.canProposeAtNextEthBlock(tipArchive.toBuffer(), msgSender.toString(), Number(this.ethereumSlotDuration), {
|
|
232
|
+
forcePendingCheckpointNumber: opts.forcePendingBlockNumber !== undefined ? CheckpointNumber.fromBlockNumber(opts.forcePendingBlockNumber) : undefined
|
|
232
233
|
}).catch((err)=>{
|
|
233
234
|
if (err instanceof FormattedViemError && ignoredErrors.find((e)=>err.message.includes(e))) {
|
|
234
235
|
this.log.warn(`Failed canProposeAtTime check with ${ignoredErrors.find((e)=>err.message.includes(e))}`, {
|
|
@@ -260,7 +261,8 @@ export class SequencerPublisher {
|
|
|
260
261
|
flags
|
|
261
262
|
];
|
|
262
263
|
const ts = BigInt((await this.l1TxUtils.getBlock()).timestamp + this.ethereumSlotDuration);
|
|
263
|
-
const
|
|
264
|
+
const optsForcePendingCheckpointNumber = opts?.forcePendingBlockNumber !== undefined ? CheckpointNumber.fromBlockNumber(opts.forcePendingBlockNumber) : undefined;
|
|
265
|
+
const stateOverrides = await this.rollupContract.makePendingCheckpointNumberOverride(optsForcePendingCheckpointNumber);
|
|
264
266
|
let balance = 0n;
|
|
265
267
|
if (this.config.fishermanMode) {
|
|
266
268
|
// In fisherman mode, we can't know where the proposer is publishing from
|
|
@@ -368,9 +370,9 @@ export class SequencerPublisher {
|
|
|
368
370
|
this.log.debug(`Simulating invalidate block ${block.blockNumber}`, logData);
|
|
369
371
|
const attestationsAndSigners = new CommitteeAttestationsAndSigners(validationResult.attestations).getPackedAttestations();
|
|
370
372
|
if (reason === 'invalid-attestation') {
|
|
371
|
-
return this.rollupContract.buildInvalidateBadAttestationRequest(block.blockNumber, attestationsAndSigners, committee, validationResult.invalidIndex);
|
|
373
|
+
return this.rollupContract.buildInvalidateBadAttestationRequest(CheckpointNumber.fromBlockNumber(block.blockNumber), attestationsAndSigners, committee, validationResult.invalidIndex);
|
|
372
374
|
} else if (reason === 'insufficient-attestations') {
|
|
373
|
-
return this.rollupContract.buildInvalidateInsufficientAttestationsRequest(block.blockNumber, attestationsAndSigners, committee);
|
|
375
|
+
return this.rollupContract.buildInvalidateInsufficientAttestationsRequest(CheckpointNumber.fromBlockNumber(block.blockNumber), attestationsAndSigners, committee);
|
|
374
376
|
} else {
|
|
375
377
|
const _ = reason;
|
|
376
378
|
throw new Error(`Unknown reason for invalidation`);
|
|
@@ -390,10 +392,10 @@ export class SequencerPublisher {
|
|
|
390
392
|
// so that the committee is recalculated correctly
|
|
391
393
|
const ignoreSignatures = attestationsAndSigners.attestations.length === 0;
|
|
392
394
|
if (ignoreSignatures) {
|
|
393
|
-
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber
|
|
395
|
+
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber);
|
|
394
396
|
if (!committee) {
|
|
395
|
-
this.log.warn(`No committee found for slot ${block.header.globalVariables.slotNumber
|
|
396
|
-
throw new Error(`No committee found for slot ${block.header.globalVariables.slotNumber
|
|
397
|
+
this.log.warn(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
398
|
+
throw new Error(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
397
399
|
}
|
|
398
400
|
attestationsAndSigners.attestations = committee.map((committeeMember)=>CommitteeAttestation.fromAddress(committeeMember));
|
|
399
401
|
}
|
|
@@ -404,7 +406,6 @@ export class SequencerPublisher {
|
|
|
404
406
|
{
|
|
405
407
|
header: block.getCheckpointHeader().toViem(),
|
|
406
408
|
archive: toHex(block.archive.root.toBuffer()),
|
|
407
|
-
stateReference: block.header.state.toViem(),
|
|
408
409
|
oracleInput: {
|
|
409
410
|
feeAssetPriceModifier: 0n
|
|
410
411
|
}
|
|
@@ -590,7 +591,6 @@ export class SequencerPublisher {
|
|
|
590
591
|
const proposeTxArgs = {
|
|
591
592
|
header: checkpointHeader,
|
|
592
593
|
archive: block.archive.root.toBuffer(),
|
|
593
|
-
stateReference: block.header.state,
|
|
594
594
|
body: block.body.toBuffer(),
|
|
595
595
|
blobs,
|
|
596
596
|
attestationsAndSigners,
|
|
@@ -607,7 +607,7 @@ export class SequencerPublisher {
|
|
|
607
607
|
} catch (err) {
|
|
608
608
|
this.log.error(`Block validation failed. ${err instanceof Error ? err.message : 'No error message'}`, err, {
|
|
609
609
|
...block.getStats(),
|
|
610
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
610
|
+
slotNumber: block.header.globalVariables.slotNumber,
|
|
611
611
|
forcePendingBlockNumber: opts.forcePendingBlockNumber
|
|
612
612
|
});
|
|
613
613
|
throw err;
|
|
@@ -640,7 +640,7 @@ export class SequencerPublisher {
|
|
|
640
640
|
gasLimit,
|
|
641
641
|
txTimeoutAt: opts.txTimeoutAt
|
|
642
642
|
},
|
|
643
|
-
lastValidL2Slot: this.getCurrentL2Slot() +
|
|
643
|
+
lastValidL2Slot: SlotNumber(this.getCurrentL2Slot() + 2),
|
|
644
644
|
checkSuccess: (_req, result)=>{
|
|
645
645
|
const success = result && result.receipt && result.receipt.status === 'success' && tryExtractEvent(result.receipt.logs, this.rollupContract.address, RollupAbi, 'CheckpointInvalidated');
|
|
646
646
|
if (!success) {
|
|
@@ -769,7 +769,6 @@ export class SequencerPublisher {
|
|
|
769
769
|
{
|
|
770
770
|
header: encodedData.header.toViem(),
|
|
771
771
|
archive: toHex(encodedData.archive),
|
|
772
|
-
stateReference: encodedData.stateReference.toViem(),
|
|
773
772
|
oracleInput: {
|
|
774
773
|
// We are currently not modifying these. See #9963
|
|
775
774
|
feeAssetPriceModifier: 0n
|
|
@@ -799,8 +798,9 @@ export class SequencerPublisher {
|
|
|
799
798
|
functionName: 'propose',
|
|
800
799
|
args
|
|
801
800
|
});
|
|
802
|
-
// override the pending
|
|
803
|
-
const
|
|
801
|
+
// override the pending checkpoint number if requested
|
|
802
|
+
const optsForcePendingCheckpointNumber = options.forcePendingBlockNumber !== undefined ? CheckpointNumber.fromBlockNumber(options.forcePendingBlockNumber) : undefined;
|
|
803
|
+
const forcePendingCheckpointNumberStateDiff = (optsForcePendingCheckpointNumber !== undefined ? await this.rollupContract.makePendingCheckpointNumberOverride(optsForcePendingCheckpointNumber) : []).flatMap((override)=>override.stateDiff ?? []);
|
|
804
804
|
const stateOverrides = [
|
|
805
805
|
{
|
|
806
806
|
address: this.rollupContract.address,
|
|
@@ -810,7 +810,7 @@ export class SequencerPublisher {
|
|
|
810
810
|
slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
|
|
811
811
|
value: toPaddedHex(0n, true)
|
|
812
812
|
},
|
|
813
|
-
...
|
|
813
|
+
...forcePendingCheckpointNumberStateDiff
|
|
814
814
|
]
|
|
815
815
|
}
|
|
816
816
|
];
|
|
@@ -872,7 +872,7 @@ export class SequencerPublisher {
|
|
|
872
872
|
to: this.rollupContract.address,
|
|
873
873
|
data: rollupData
|
|
874
874
|
},
|
|
875
|
-
lastValidL2Slot: block.header.globalVariables.slotNumber
|
|
875
|
+
lastValidL2Slot: block.header.globalVariables.slotNumber,
|
|
876
876
|
gasConfig: {
|
|
877
877
|
...opts,
|
|
878
878
|
gasLimit
|
|
@@ -918,7 +918,7 @@ export class SequencerPublisher {
|
|
|
918
918
|
...block.getStats(),
|
|
919
919
|
receipt,
|
|
920
920
|
txHash: receipt.transactionHash,
|
|
921
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
921
|
+
slotNumber: block.header.globalVariables.slotNumber
|
|
922
922
|
});
|
|
923
923
|
return false;
|
|
924
924
|
}
|
|
@@ -16,7 +16,7 @@ const log = createLogger('block-builder');
|
|
|
16
16
|
export async function buildBlock(pendingTxs, l1ToL2Messages, newGlobalVariables, opts = {}, worldStateFork, processor, validator, l1Constants, dateProvider, telemetryClient = getTelemetryClient()) {
|
|
17
17
|
const blockBuildingTimer = new Timer();
|
|
18
18
|
const blockNumber = newGlobalVariables.blockNumber;
|
|
19
|
-
const slot = newGlobalVariables.slotNumber
|
|
19
|
+
const slot = newGlobalVariables.slotNumber;
|
|
20
20
|
const msgCount = l1ToL2Messages.length;
|
|
21
21
|
const stateReference = await worldStateFork.getStateReference();
|
|
22
22
|
const archiveTree = await worldStateFork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import type { RollupContract } from '@aztec/ethereum';
|
|
3
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
4
5
|
import { type Hex } from 'viem';
|
|
5
6
|
import type { SequencerState } from './utils.js';
|
|
@@ -29,11 +30,11 @@ export declare class SequencerMetrics {
|
|
|
29
30
|
recordBuiltBlock(buildDurationMs: number, totalMana: number): void;
|
|
30
31
|
recordFailedBlock(): void;
|
|
31
32
|
recordStateTransitionBufferMs(durationMs: number, state: SequencerState): void;
|
|
32
|
-
incOpenSlot(slot:
|
|
33
|
+
incOpenSlot(slot: SlotNumber, proposer: string): void;
|
|
33
34
|
incFilledSlot(proposer: string, coinbase: Hex | EthAddress | undefined): Promise<void>;
|
|
34
35
|
recordBlockProposalFailed(reason?: string): void;
|
|
35
36
|
recordBlockProposalSuccess(): void;
|
|
36
37
|
recordBlockProposalPrecheckFailed(checkType: string): void;
|
|
37
38
|
recordSlashingAttempt(actionCount: number): void;
|
|
38
39
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBTUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssTUFBTSxFQUdaLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxxQkFBYSxnQkFBZ0I7SUE2QnpCLE9BQU8sQ0FBQyxNQUFNO0lBNUJoQixTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQVE7SUFFckIsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLGtCQUFrQixDQUFZO0lBQ3RDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBUTtJQUN2QyxPQUFPLENBQUMsNkJBQTZCLENBQVk7SUFHakQsT0FBTyxDQUFDLHlCQUF5QixDQUFRO0lBQ3pDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBUTtJQUM5QyxPQUFPLENBQUMsa0JBQWtCLENBQVE7SUFDbEMsT0FBTyxDQUFDLG1CQUFtQixDQUFRO0lBRW5DLE9BQU8sQ0FBQyxPQUFPLENBQVE7SUFFdkIsT0FBTyxDQUFDLEtBQUssQ0FBZ0I7SUFDN0IsT0FBTyxDQUFDLFdBQVcsQ0FBZ0I7SUFFbkMsT0FBTyxDQUFDLG1CQUFtQixDQUFnQjtJQUMzQyxPQUFPLENBQUMsb0JBQW9CLENBQWdCO0lBQzVDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBZ0I7SUFDbkQsT0FBTyxDQUFDLGdCQUFnQixDQUFnQjtJQUV4QyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQWE7SUFFbEMsWUFDRSxNQUFNLEVBQUUsZUFBZSxFQUNmLE1BQU0sRUFBRSxjQUFjLEVBQzlCLElBQUksU0FBYyxFQXVHbkI7SUFFTSwwQkFBMEIsQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFPdkY7SUFFTSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBR25FO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQU0xRDtJQUVELGlCQUFpQixTQUloQjtJQUVELDZCQUE2QixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsUUFJdEU7SUFFRCxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxRQVc3QztJQUVLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsVUFBVSxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBaUIzRjtJQUVELHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sUUFJeEM7SUFFRCwwQkFBMEIsU0FFekI7SUFFRCxpQ0FBaUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxRQUlsRDtJQUVELHFCQUFxQixDQUFDLFdBQVcsRUFBRSxNQUFNLFFBRXhDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/sequencer/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,gBAAgB;IA6BzB,OAAO,CAAC,MAAM;IA5BhB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,uBAAuB,CAAQ;IACvC,OAAO,CAAC,6BAA6B,CAAY;IAGjD,OAAO,CAAC,yBAAyB,CAAQ;IACzC,OAAO,CAAC,8BAA8B,CAAQ;IAC9C,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,2BAA2B,CAAgB;IACnD,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/sequencer/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,gBAAgB;IA6BzB,OAAO,CAAC,MAAM;IA5BhB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,uBAAuB,CAAQ;IACvC,OAAO,CAAC,6BAA6B,CAAY;IAGjD,OAAO,CAAC,yBAAyB,CAAQ;IACzC,OAAO,CAAC,8BAA8B,CAAQ;IAC9C,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,2BAA2B,CAAgB;IACnD,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,YAAY,CAAC,CAAa;IAElC,YACE,MAAM,EAAE,eAAe,EACf,MAAM,EAAE,cAAc,EAC9B,IAAI,SAAc,EAuGnB;IAEM,0BAA0B,CAAC,yBAAyB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAOvF;IAEM,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAGnE;IAED,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAM1D;IAED,iBAAiB,SAIhB;IAED,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,QAItE;IAED,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,QAW7C;IAEK,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3F;IAED,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,QAIxC;IAED,0BAA0B,SAEzB;IAED,iCAAiC,CAAC,SAAS,EAAE,MAAM,QAIlD;IAED,qBAAqB,CAAC,WAAW,EAAE,MAAM,QAExC;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { L2Block } from '@aztec/aztec.js/block';
|
|
2
2
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
3
3
|
import { type RollupContract } from '@aztec/ethereum';
|
|
4
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
6
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
6
7
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -28,7 +29,7 @@ export type SequencerEvents = {
|
|
|
28
29
|
oldState: SequencerState;
|
|
29
30
|
newState: SequencerState;
|
|
30
31
|
secondsIntoSlot?: number;
|
|
31
|
-
slotNumber?:
|
|
32
|
+
slotNumber?: SlotNumber;
|
|
32
33
|
}) => void;
|
|
33
34
|
['proposer-rollup-check-failed']: (args: {
|
|
34
35
|
reason: string;
|
|
@@ -140,14 +141,14 @@ export declare class Sequencer extends Sequencer_base {
|
|
|
140
141
|
* @param slotNumber - The current slot number.
|
|
141
142
|
* @param force - Whether to force the transition even if the sequencer is stopped.
|
|
142
143
|
*/
|
|
143
|
-
setState(proposedState: SequencerStateWithSlot, slotNumber:
|
|
144
|
+
setState(proposedState: SequencerStateWithSlot, slotNumber: SlotNumber, opts?: {
|
|
144
145
|
force?: boolean;
|
|
145
146
|
}): void;
|
|
146
147
|
setState(proposedState: Exclude<SequencerState, SequencerStateWithSlot>, slotNumber?: undefined, opts?: {
|
|
147
148
|
force?: boolean;
|
|
148
149
|
}): void;
|
|
149
150
|
private dropFailedTxsFromP2P;
|
|
150
|
-
protected getBlockBuilderOptions(slot:
|
|
151
|
+
protected getBlockBuilderOptions(slot: SlotNumber): PublicProcessorLimits;
|
|
151
152
|
private buildBlockAndEnqueuePublish;
|
|
152
153
|
protected collectAttestations(block: L2Block, txs: Tx[], proposerAddress: EthAddress | undefined): Promise<CommitteeAttestationsAndSigners>;
|
|
153
154
|
/** Breaks the attestations before publishing based on attack configs */
|
|
@@ -163,7 +164,7 @@ export declare class Sequencer extends Sequencer_base {
|
|
|
163
164
|
*/
|
|
164
165
|
protected checkSync(args: {
|
|
165
166
|
ts: bigint;
|
|
166
|
-
slot:
|
|
167
|
+
slot: SlotNumber;
|
|
167
168
|
}): Promise<{
|
|
168
169
|
block?: L2Block;
|
|
169
170
|
blockNumber: number;
|
|
@@ -180,18 +181,18 @@ export declare class Sequencer extends Sequencer_base {
|
|
|
180
181
|
* @param context - Optional context for logging (e.g., block number)
|
|
181
182
|
* @returns A tuple of [governanceEnqueued, slashingEnqueued]
|
|
182
183
|
*/
|
|
183
|
-
protected enqueueGovernanceAndSlashingVotes(publisher: SequencerPublisher, attestorAddress: EthAddress, slot:
|
|
184
|
+
protected enqueueGovernanceAndSlashingVotes(publisher: SequencerPublisher, attestorAddress: EthAddress, slot: SlotNumber, timestamp: bigint): [Promise<boolean> | undefined, Promise<boolean> | undefined];
|
|
184
185
|
/**
|
|
185
186
|
* Checks if we are the proposer for the next slot.
|
|
186
187
|
* @returns True if we can propose, and the proposer address (undefined if anyone can propose)
|
|
187
188
|
*/
|
|
188
|
-
protected checkCanPropose(slot:
|
|
189
|
+
protected checkCanPropose(slot: SlotNumber): Promise<[boolean, EthAddress | undefined]>;
|
|
189
190
|
/**
|
|
190
191
|
* Tries to vote on slashing actions and governance when the sync check fails but we're past the max time for initializing a proposal.
|
|
191
192
|
* This allows the sequencer to participate in governance/slashing votes even when it cannot build blocks.
|
|
192
193
|
*/
|
|
193
194
|
protected tryVoteWhenSyncFails(args: {
|
|
194
|
-
slot:
|
|
195
|
+
slot: SlotNumber;
|
|
195
196
|
ts: bigint;
|
|
196
197
|
}): Promise<void>;
|
|
197
198
|
/**
|
|
@@ -200,11 +201,11 @@ export declare class Sequencer extends Sequencer_base {
|
|
|
200
201
|
* have the proposer try to invalidate, but if they fail, the sequencers in the committee are expected to try,
|
|
201
202
|
* and if they fail, any sequencer will try as well.
|
|
202
203
|
*/
|
|
203
|
-
protected considerInvalidatingBlock(syncedTo: NonNullable<Awaited<ReturnType<Sequencer['checkSync']>>>, currentSlot:
|
|
204
|
+
protected considerInvalidatingBlock(syncedTo: NonNullable<Awaited<ReturnType<Sequencer['checkSync']>>>, currentSlot: SlotNumber): Promise<void>;
|
|
204
205
|
private getSlotStartBuildTimestamp;
|
|
205
206
|
private getSecondsIntoSlot;
|
|
206
207
|
get aztecSlotDuration(): number;
|
|
207
208
|
get maxL2BlockGas(): number | undefined;
|
|
208
209
|
getSlasherClient(): SlasherClientInterface | undefined;
|
|
209
210
|
}
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL3NlcXVlbmNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUF3QyxLQUFLLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHOUMsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBRUwsK0JBQStCLEVBQy9CLEtBQUssYUFBYSxFQUVsQixLQUFLLG1CQUFtQixFQUN6QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUFrRCxNQUFNLDZCQUE2QixDQUFDO0FBRXJILE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLHFCQUFxQixFQUUxQixLQUFLLHNCQUFzQixFQUM1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFP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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
6
6
|
}
|
|
7
7
|
import { BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB, INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
8
8
|
import { FormattedViemError, NoCommitteeError } from '@aztec/ethereum';
|
|
9
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
9
10
|
import { omit, pick } from '@aztec/foundation/collection';
|
|
10
11
|
import { randomInt } from '@aztec/foundation/crypto';
|
|
11
12
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
@@ -290,7 +291,7 @@ export { SequencerState };
|
|
|
290
291
|
});
|
|
291
292
|
this.metrics.recordBlockProposalPrecheckFailed('slot_mismatch');
|
|
292
293
|
return;
|
|
293
|
-
} else if (canProposeCheck.checkpointNumber !==
|
|
294
|
+
} else if (canProposeCheck.checkpointNumber !== CheckpointNumber.fromBlockNumber(newBlockNumber)) {
|
|
294
295
|
this.log.warn(`Cannot propose block due to block mismatch with rollup contract (this can be caused by a pending archiver sync). Expected block ${newBlockNumber} but got ${canProposeCheck.checkpointNumber}.`, {
|
|
295
296
|
...syncLogData,
|
|
296
297
|
rollup: canProposeCheck,
|
|
@@ -499,12 +500,12 @@ export { SequencerState };
|
|
|
499
500
|
*/ async buildBlockAndEnqueuePublish(pendingTxs, proposalHeader, newGlobalVariables, proposerAddress, invalidateBlock, publisher) {
|
|
500
501
|
await publisher.validateBlockHeader(proposalHeader, invalidateBlock);
|
|
501
502
|
const blockNumber = newGlobalVariables.blockNumber;
|
|
502
|
-
const slot = proposalHeader.slotNumber
|
|
503
|
+
const slot = proposalHeader.slotNumber;
|
|
503
504
|
const l1ToL2Messages = await this.l1ToL2MessageSource.getL1ToL2Messages(blockNumber);
|
|
504
505
|
const workTimer = new Timer();
|
|
505
506
|
this.setState(SequencerState.CREATING_BLOCK, slot);
|
|
506
507
|
try {
|
|
507
|
-
const blockBuilderOptions = this.getBlockBuilderOptions(
|
|
508
|
+
const blockBuilderOptions = this.getBlockBuilderOptions(slot);
|
|
508
509
|
const buildBlockRes = await this.blockBuilder.buildBlock(pendingTxs, l1ToL2Messages, newGlobalVariables, blockBuilderOptions);
|
|
509
510
|
const { publicGas, block, publicProcessorDuration, numTxs, numMsgs, blockBuildingTimer, usedTxs, failedTxs } = buildBlockRes;
|
|
510
511
|
const blockBuildDuration = workTimer.ms();
|
|
@@ -577,14 +578,14 @@ export { SequencerState };
|
|
|
577
578
|
throw new Error('Missing validator client: Cannot collect attestations');
|
|
578
579
|
}
|
|
579
580
|
const numberOfRequiredAttestations = Math.floor(committee.length * 2 / 3) + 1;
|
|
580
|
-
const slotNumber = block.header.globalVariables.slotNumber
|
|
581
|
+
const slotNumber = block.header.globalVariables.slotNumber;
|
|
581
582
|
this.setState(SequencerState.COLLECTING_ATTESTATIONS, slotNumber);
|
|
582
583
|
this.log.debug('Creating block proposal for validators');
|
|
583
584
|
const blockProposalOptions = {
|
|
584
585
|
publishFullTxs: !!this.config.publishTxsWithProposals,
|
|
585
586
|
broadcastInvalidBlockProposal: this.config.broadcastInvalidBlockProposal
|
|
586
587
|
};
|
|
587
|
-
const proposal = await this.validatorClient.createBlockProposal(block.header.globalVariables.blockNumber, block.getCheckpointHeader(), block.archive.root,
|
|
588
|
+
const proposal = await this.validatorClient.createBlockProposal(block.header.globalVariables.blockNumber, block.getCheckpointHeader(), block.archive.root, txs, proposerAddress, blockProposalOptions);
|
|
588
589
|
if (!proposal) {
|
|
589
590
|
throw new Error(`Failed to create block proposal`);
|
|
590
591
|
}
|
|
@@ -661,9 +662,9 @@ export { SequencerState };
|
|
|
661
662
|
* @param block - The L2Block to be published.
|
|
662
663
|
*/ async enqueuePublishL2Block(block, attestationsAndSigners, attestationsAndSignersSignature, invalidateBlock, publisher) {
|
|
663
664
|
// Publishes new block to the network and awaits the tx to be mined
|
|
664
|
-
this.setState(SequencerState.PUBLISHING_BLOCK, block.header.globalVariables.slotNumber
|
|
665
|
+
this.setState(SequencerState.PUBLISHING_BLOCK, block.header.globalVariables.slotNumber);
|
|
665
666
|
// Time out tx at the end of the slot
|
|
666
|
-
const slot = block.header.globalVariables.slotNumber
|
|
667
|
+
const slot = block.header.globalVariables.slotNumber;
|
|
667
668
|
const txTimeoutAt = new Date((this.getSlotStartBuildTimestamp(slot) + this.aztecSlotDuration) * 1000);
|
|
668
669
|
const enqueued = await publisher.enqueueProposeL2Block(block, attestationsAndSigners, attestationsAndSignersSignature, {
|
|
669
670
|
txTimeoutAt,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20251202",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -26,37 +26,37 @@
|
|
|
26
26
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@aztec/aztec.js": "3.0.0-nightly.
|
|
30
|
-
"@aztec/bb-prover": "3.0.0-nightly.
|
|
31
|
-
"@aztec/blob-lib": "3.0.0-nightly.
|
|
32
|
-
"@aztec/blob-sink": "3.0.0-nightly.
|
|
33
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
34
|
-
"@aztec/epoch-cache": "3.0.0-nightly.
|
|
35
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
36
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
37
|
-
"@aztec/l1-artifacts": "3.0.0-nightly.
|
|
38
|
-
"@aztec/merkle-tree": "3.0.0-nightly.
|
|
39
|
-
"@aztec/node-keystore": "3.0.0-nightly.
|
|
40
|
-
"@aztec/noir-acvm_js": "3.0.0-nightly.
|
|
41
|
-
"@aztec/noir-contracts.js": "3.0.0-nightly.
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
43
|
-
"@aztec/noir-types": "3.0.0-nightly.
|
|
44
|
-
"@aztec/p2p": "3.0.0-nightly.
|
|
45
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
46
|
-
"@aztec/prover-client": "3.0.0-nightly.
|
|
47
|
-
"@aztec/simulator": "3.0.0-nightly.
|
|
48
|
-
"@aztec/slasher": "3.0.0-nightly.
|
|
49
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
50
|
-
"@aztec/telemetry-client": "3.0.0-nightly.
|
|
51
|
-
"@aztec/validator-client": "3.0.0-nightly.
|
|
52
|
-
"@aztec/world-state": "3.0.0-nightly.
|
|
29
|
+
"@aztec/aztec.js": "3.0.0-nightly.20251202",
|
|
30
|
+
"@aztec/bb-prover": "3.0.0-nightly.20251202",
|
|
31
|
+
"@aztec/blob-lib": "3.0.0-nightly.20251202",
|
|
32
|
+
"@aztec/blob-sink": "3.0.0-nightly.20251202",
|
|
33
|
+
"@aztec/constants": "3.0.0-nightly.20251202",
|
|
34
|
+
"@aztec/epoch-cache": "3.0.0-nightly.20251202",
|
|
35
|
+
"@aztec/ethereum": "3.0.0-nightly.20251202",
|
|
36
|
+
"@aztec/foundation": "3.0.0-nightly.20251202",
|
|
37
|
+
"@aztec/l1-artifacts": "3.0.0-nightly.20251202",
|
|
38
|
+
"@aztec/merkle-tree": "3.0.0-nightly.20251202",
|
|
39
|
+
"@aztec/node-keystore": "3.0.0-nightly.20251202",
|
|
40
|
+
"@aztec/noir-acvm_js": "3.0.0-nightly.20251202",
|
|
41
|
+
"@aztec/noir-contracts.js": "3.0.0-nightly.20251202",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251202",
|
|
43
|
+
"@aztec/noir-types": "3.0.0-nightly.20251202",
|
|
44
|
+
"@aztec/p2p": "3.0.0-nightly.20251202",
|
|
45
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20251202",
|
|
46
|
+
"@aztec/prover-client": "3.0.0-nightly.20251202",
|
|
47
|
+
"@aztec/simulator": "3.0.0-nightly.20251202",
|
|
48
|
+
"@aztec/slasher": "3.0.0-nightly.20251202",
|
|
49
|
+
"@aztec/stdlib": "3.0.0-nightly.20251202",
|
|
50
|
+
"@aztec/telemetry-client": "3.0.0-nightly.20251202",
|
|
51
|
+
"@aztec/validator-client": "3.0.0-nightly.20251202",
|
|
52
|
+
"@aztec/world-state": "3.0.0-nightly.20251202",
|
|
53
53
|
"lodash.chunk": "^4.2.0",
|
|
54
54
|
"tslib": "^2.4.0",
|
|
55
55
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@aztec/archiver": "3.0.0-nightly.
|
|
59
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
58
|
+
"@aztec/archiver": "3.0.0-nightly.20251202",
|
|
59
|
+
"@aztec/kv-store": "3.0.0-nightly.20251202",
|
|
60
60
|
"@jest/globals": "^30.0.0",
|
|
61
61
|
"@types/jest": "^30.0.0",
|
|
62
62
|
"@types/lodash.chunk": "^4.2.7",
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
type ViemPublicClient,
|
|
6
6
|
createEthereumChain,
|
|
7
7
|
} from '@aztec/ethereum';
|
|
8
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
8
9
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
9
10
|
import { Fr } from '@aztec/foundation/fields';
|
|
10
11
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -56,7 +57,9 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
56
57
|
// The timestamp of that last block will act as a lower bound for the next block.
|
|
57
58
|
|
|
58
59
|
const lastBlock = await this.rollupContract.getCheckpoint(await this.rollupContract.getCheckpointNumber());
|
|
59
|
-
const earliestTimestamp = await this.rollupContract.getTimestampForSlot(
|
|
60
|
+
const earliestTimestamp = await this.rollupContract.getTimestampForSlot(
|
|
61
|
+
SlotNumber.fromBigInt(lastBlock.slotNumber + 1n),
|
|
62
|
+
);
|
|
60
63
|
const nextEthTimestamp = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
61
64
|
const timestamp = earliestTimestamp > nextEthTimestamp ? earliestTimestamp : nextEthTimestamp;
|
|
62
65
|
|
|
@@ -97,18 +100,19 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
97
100
|
blockNumber: number,
|
|
98
101
|
coinbase: EthAddress,
|
|
99
102
|
feeRecipient: AztecAddress,
|
|
100
|
-
slotNumber?:
|
|
103
|
+
slotNumber?: SlotNumber,
|
|
101
104
|
): Promise<GlobalVariables> {
|
|
102
105
|
const { chainId, version } = await this.getGlobalConstantVariables();
|
|
103
106
|
|
|
107
|
+
let slot: SlotNumber;
|
|
104
108
|
if (slotNumber === undefined) {
|
|
105
109
|
const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
106
|
-
|
|
110
|
+
slot = await this.rollupContract.getSlotAt(ts);
|
|
111
|
+
} else {
|
|
112
|
+
slot = slotNumber;
|
|
107
113
|
}
|
|
108
114
|
|
|
109
|
-
const timestamp = await this.rollupContract.getTimestampForSlot(
|
|
110
|
-
|
|
111
|
-
const slotFr = new Fr(slotNumber);
|
|
115
|
+
const timestamp = await this.rollupContract.getTimestampForSlot(slot);
|
|
112
116
|
|
|
113
117
|
// We can skip much of the logic in getCurrentBaseFees since it we already check that we are not within a slot elsewhere.
|
|
114
118
|
const gasFees = new GasFees(0, await this.rollupContract.getManaBaseFeeAt(timestamp, true));
|
|
@@ -117,7 +121,7 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
117
121
|
chainId,
|
|
118
122
|
version,
|
|
119
123
|
blockNumber,
|
|
120
|
-
|
|
124
|
+
slot,
|
|
121
125
|
timestamp,
|
|
122
126
|
coinbase,
|
|
123
127
|
feeRecipient,
|
|
@@ -4,6 +4,7 @@ import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
|
4
4
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
5
5
|
import type { GovernanceProposerContract, PublisherFilter, PublisherManager, RollupContract } from '@aztec/ethereum';
|
|
6
6
|
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
7
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
7
8
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
8
9
|
import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
9
10
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -22,7 +23,7 @@ export class SequencerPublisherFactory {
|
|
|
22
23
|
private publisherMetrics: SequencerPublisherMetrics;
|
|
23
24
|
|
|
24
25
|
/** Stores the last slot in which every action was carried out by a publisher */
|
|
25
|
-
private lastActions: Partial<Record<Action,
|
|
26
|
+
private lastActions: Partial<Record<Action, SlotNumber>> = {};
|
|
26
27
|
|
|
27
28
|
private logger: Logger;
|
|
28
29
|
|
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
type TransactionStats,
|
|
19
19
|
type ViemCommitteeAttestations,
|
|
20
20
|
type ViemHeader,
|
|
21
|
-
type ViemStateReference,
|
|
22
21
|
WEI_CONST,
|
|
23
22
|
formatViemError,
|
|
24
23
|
tryExtractEvent,
|
|
@@ -26,6 +25,7 @@ import {
|
|
|
26
25
|
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
27
26
|
import { sumBigint } from '@aztec/foundation/bigint';
|
|
28
27
|
import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer';
|
|
28
|
+
import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
29
29
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
30
30
|
import { Signature, type ViemSignature } from '@aztec/foundation/eth-signature';
|
|
31
31
|
import type { Fr } from '@aztec/foundation/fields';
|
|
@@ -38,7 +38,6 @@ import { CommitteeAttestation, CommitteeAttestationsAndSigners, type ValidateBlo
|
|
|
38
38
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
39
39
|
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
40
40
|
import type { L1PublishBlockStats } from '@aztec/stdlib/stats';
|
|
41
|
-
import { StateReference } from '@aztec/stdlib/tx';
|
|
42
41
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
43
42
|
|
|
44
43
|
import { type StateOverride, type TransactionReceipt, type TypedDataDefinition, encodeFunctionData, toHex } from 'viem';
|
|
@@ -52,8 +51,6 @@ type L1ProcessArgs = {
|
|
|
52
51
|
header: CheckpointHeader;
|
|
53
52
|
/** A root of the archive tree after the L2 block is applied. */
|
|
54
53
|
archive: Buffer;
|
|
55
|
-
/** State reference after the L2 block is applied. */
|
|
56
|
-
stateReference: StateReference;
|
|
57
54
|
/** L2 block blobs containing all tx effects. */
|
|
58
55
|
blobs: Blob[];
|
|
59
56
|
/** Attestations */
|
|
@@ -92,7 +89,7 @@ export type InvalidateBlockRequest = {
|
|
|
92
89
|
interface RequestWithExpiry {
|
|
93
90
|
action: Action;
|
|
94
91
|
request: L1TxRequest;
|
|
95
|
-
lastValidL2Slot:
|
|
92
|
+
lastValidL2Slot: SlotNumber;
|
|
96
93
|
gasConfig?: Pick<L1TxConfig, 'txTimeoutAt' | 'gasLimit'>;
|
|
97
94
|
blobConfig?: L1BlobInputs;
|
|
98
95
|
checkSuccess: (
|
|
@@ -109,7 +106,7 @@ export class SequencerPublisher {
|
|
|
109
106
|
protected governanceLog = createLogger('sequencer:publisher:governance');
|
|
110
107
|
protected slashingLog = createLogger('sequencer:publisher:slashing');
|
|
111
108
|
|
|
112
|
-
protected lastActions: Partial<Record<Action,
|
|
109
|
+
protected lastActions: Partial<Record<Action, SlotNumber>> = {};
|
|
113
110
|
|
|
114
111
|
protected log: Logger;
|
|
115
112
|
protected ethereumSlotDuration: bigint;
|
|
@@ -150,7 +147,7 @@ export class SequencerPublisher {
|
|
|
150
147
|
epochCache: EpochCache;
|
|
151
148
|
dateProvider: DateProvider;
|
|
152
149
|
metrics: SequencerPublisherMetrics;
|
|
153
|
-
lastActions: Partial<Record<Action,
|
|
150
|
+
lastActions: Partial<Record<Action, SlotNumber>>;
|
|
154
151
|
log?: Logger;
|
|
155
152
|
},
|
|
156
153
|
) {
|
|
@@ -199,7 +196,7 @@ export class SequencerPublisher {
|
|
|
199
196
|
this.requests.push(request);
|
|
200
197
|
}
|
|
201
198
|
|
|
202
|
-
public getCurrentL2Slot():
|
|
199
|
+
public getCurrentL2Slot(): SlotNumber {
|
|
203
200
|
return this.epochCache.getEpochAndSlotNow().slot;
|
|
204
201
|
}
|
|
205
202
|
|
|
@@ -344,8 +341,11 @@ export class SequencerPublisher {
|
|
|
344
341
|
const ignoredErrors = ['SlotAlreadyInChain', 'InvalidProposer', 'InvalidArchive'];
|
|
345
342
|
|
|
346
343
|
return this.rollupContract
|
|
347
|
-
.canProposeAtNextEthBlock(tipArchive.toBuffer(), msgSender.toString(), this.ethereumSlotDuration, {
|
|
348
|
-
forcePendingCheckpointNumber:
|
|
344
|
+
.canProposeAtNextEthBlock(tipArchive.toBuffer(), msgSender.toString(), Number(this.ethereumSlotDuration), {
|
|
345
|
+
forcePendingCheckpointNumber:
|
|
346
|
+
opts.forcePendingBlockNumber !== undefined
|
|
347
|
+
? CheckpointNumber.fromBlockNumber(opts.forcePendingBlockNumber)
|
|
348
|
+
: undefined,
|
|
349
349
|
})
|
|
350
350
|
.catch(err => {
|
|
351
351
|
if (err instanceof FormattedViemError && ignoredErrors.find(e => err.message.includes(e))) {
|
|
@@ -378,7 +378,13 @@ export class SequencerPublisher {
|
|
|
378
378
|
] as const;
|
|
379
379
|
|
|
380
380
|
const ts = BigInt((await this.l1TxUtils.getBlock()).timestamp + this.ethereumSlotDuration);
|
|
381
|
-
const
|
|
381
|
+
const optsForcePendingCheckpointNumber =
|
|
382
|
+
opts?.forcePendingBlockNumber !== undefined
|
|
383
|
+
? CheckpointNumber.fromBlockNumber(opts.forcePendingBlockNumber)
|
|
384
|
+
: undefined;
|
|
385
|
+
const stateOverrides = await this.rollupContract.makePendingCheckpointNumberOverride(
|
|
386
|
+
optsForcePendingCheckpointNumber,
|
|
387
|
+
);
|
|
382
388
|
let balance = 0n;
|
|
383
389
|
if (this.config.fishermanMode) {
|
|
384
390
|
// In fisherman mode, we can't know where the proposer is publishing from
|
|
@@ -483,14 +489,14 @@ export class SequencerPublisher {
|
|
|
483
489
|
|
|
484
490
|
if (reason === 'invalid-attestation') {
|
|
485
491
|
return this.rollupContract.buildInvalidateBadAttestationRequest(
|
|
486
|
-
block.blockNumber,
|
|
492
|
+
CheckpointNumber.fromBlockNumber(block.blockNumber),
|
|
487
493
|
attestationsAndSigners,
|
|
488
494
|
committee,
|
|
489
495
|
validationResult.invalidIndex,
|
|
490
496
|
);
|
|
491
497
|
} else if (reason === 'insufficient-attestations') {
|
|
492
498
|
return this.rollupContract.buildInvalidateInsufficientAttestationsRequest(
|
|
493
|
-
block.blockNumber,
|
|
499
|
+
CheckpointNumber.fromBlockNumber(block.blockNumber),
|
|
494
500
|
attestationsAndSigners,
|
|
495
501
|
committee,
|
|
496
502
|
);
|
|
@@ -521,10 +527,10 @@ export class SequencerPublisher {
|
|
|
521
527
|
// so that the committee is recalculated correctly
|
|
522
528
|
const ignoreSignatures = attestationsAndSigners.attestations.length === 0;
|
|
523
529
|
if (ignoreSignatures) {
|
|
524
|
-
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber
|
|
530
|
+
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber);
|
|
525
531
|
if (!committee) {
|
|
526
|
-
this.log.warn(`No committee found for slot ${block.header.globalVariables.slotNumber
|
|
527
|
-
throw new Error(`No committee found for slot ${block.header.globalVariables.slotNumber
|
|
532
|
+
this.log.warn(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
533
|
+
throw new Error(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
528
534
|
}
|
|
529
535
|
attestationsAndSigners.attestations = committee.map(committeeMember =>
|
|
530
536
|
CommitteeAttestation.fromAddress(committeeMember),
|
|
@@ -539,7 +545,6 @@ export class SequencerPublisher {
|
|
|
539
545
|
{
|
|
540
546
|
header: block.getCheckpointHeader().toViem(),
|
|
541
547
|
archive: toHex(block.archive.root.toBuffer()),
|
|
542
|
-
stateReference: block.header.state.toViem(),
|
|
543
548
|
oracleInput: {
|
|
544
549
|
feeAssetPriceModifier: 0n,
|
|
545
550
|
},
|
|
@@ -555,7 +560,7 @@ export class SequencerPublisher {
|
|
|
555
560
|
}
|
|
556
561
|
|
|
557
562
|
private async enqueueCastSignalHelper(
|
|
558
|
-
slotNumber:
|
|
563
|
+
slotNumber: SlotNumber,
|
|
559
564
|
timestamp: bigint,
|
|
560
565
|
signalType: GovernanceSignalAction,
|
|
561
566
|
payload: EthAddress,
|
|
@@ -648,7 +653,7 @@ export class SequencerPublisher {
|
|
|
648
653
|
*/
|
|
649
654
|
public enqueueGovernanceCastSignal(
|
|
650
655
|
governancePayload: EthAddress,
|
|
651
|
-
slotNumber:
|
|
656
|
+
slotNumber: SlotNumber,
|
|
652
657
|
timestamp: bigint,
|
|
653
658
|
signerAddress: EthAddress,
|
|
654
659
|
signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>,
|
|
@@ -667,7 +672,7 @@ export class SequencerPublisher {
|
|
|
667
672
|
/** Enqueues all slashing actions as returned by the slasher client. */
|
|
668
673
|
public async enqueueSlashingActions(
|
|
669
674
|
actions: ProposerSlashAction[],
|
|
670
|
-
slotNumber:
|
|
675
|
+
slotNumber: SlotNumber,
|
|
671
676
|
timestamp: bigint,
|
|
672
677
|
signerAddress: EthAddress,
|
|
673
678
|
signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>,
|
|
@@ -807,7 +812,6 @@ export class SequencerPublisher {
|
|
|
807
812
|
const proposeTxArgs = {
|
|
808
813
|
header: checkpointHeader,
|
|
809
814
|
archive: block.archive.root.toBuffer(),
|
|
810
|
-
stateReference: block.header.state,
|
|
811
815
|
body: block.body.toBuffer(),
|
|
812
816
|
blobs,
|
|
813
817
|
attestationsAndSigners,
|
|
@@ -826,7 +830,7 @@ export class SequencerPublisher {
|
|
|
826
830
|
} catch (err: any) {
|
|
827
831
|
this.log.error(`Block validation failed. ${err instanceof Error ? err.message : 'No error message'}`, err, {
|
|
828
832
|
...block.getStats(),
|
|
829
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
833
|
+
slotNumber: block.header.globalVariables.slotNumber,
|
|
830
834
|
forcePendingBlockNumber: opts.forcePendingBlockNumber,
|
|
831
835
|
});
|
|
832
836
|
throw err;
|
|
@@ -852,7 +856,7 @@ export class SequencerPublisher {
|
|
|
852
856
|
action: `invalidate-by-${request.reason}`,
|
|
853
857
|
request: request.request,
|
|
854
858
|
gasConfig: { gasLimit, txTimeoutAt: opts.txTimeoutAt },
|
|
855
|
-
lastValidL2Slot: this.getCurrentL2Slot() +
|
|
859
|
+
lastValidL2Slot: SlotNumber(this.getCurrentL2Slot() + 2),
|
|
856
860
|
checkSuccess: (_req, result) => {
|
|
857
861
|
const success =
|
|
858
862
|
result &&
|
|
@@ -873,7 +877,7 @@ export class SequencerPublisher {
|
|
|
873
877
|
action: Action,
|
|
874
878
|
request: L1TxRequest,
|
|
875
879
|
checkSuccess: (receipt: TransactionReceipt) => boolean | undefined,
|
|
876
|
-
slotNumber:
|
|
880
|
+
slotNumber: SlotNumber,
|
|
877
881
|
timestamp: bigint,
|
|
878
882
|
) {
|
|
879
883
|
const logData = { slotNumber, timestamp, gasLimit: undefined as bigint | undefined };
|
|
@@ -985,7 +989,6 @@ export class SequencerPublisher {
|
|
|
985
989
|
{
|
|
986
990
|
header: encodedData.header.toViem(),
|
|
987
991
|
archive: toHex(encodedData.archive),
|
|
988
|
-
stateReference: encodedData.stateReference.toViem(),
|
|
989
992
|
oracleInput: {
|
|
990
993
|
// We are currently not modifying these. See #9963
|
|
991
994
|
feeAssetPriceModifier: 0n,
|
|
@@ -1013,7 +1016,6 @@ export class SequencerPublisher {
|
|
|
1013
1016
|
{
|
|
1014
1017
|
readonly header: ViemHeader;
|
|
1015
1018
|
readonly archive: `0x${string}`;
|
|
1016
|
-
readonly stateReference: ViemStateReference;
|
|
1017
1019
|
readonly oracleInput: {
|
|
1018
1020
|
readonly feeAssetPriceModifier: 0n;
|
|
1019
1021
|
};
|
|
@@ -1032,10 +1034,14 @@ export class SequencerPublisher {
|
|
|
1032
1034
|
args,
|
|
1033
1035
|
});
|
|
1034
1036
|
|
|
1035
|
-
// override the pending
|
|
1036
|
-
const
|
|
1037
|
+
// override the pending checkpoint number if requested
|
|
1038
|
+
const optsForcePendingCheckpointNumber =
|
|
1037
1039
|
options.forcePendingBlockNumber !== undefined
|
|
1038
|
-
?
|
|
1040
|
+
? CheckpointNumber.fromBlockNumber(options.forcePendingBlockNumber)
|
|
1041
|
+
: undefined;
|
|
1042
|
+
const forcePendingCheckpointNumberStateDiff = (
|
|
1043
|
+
optsForcePendingCheckpointNumber !== undefined
|
|
1044
|
+
? await this.rollupContract.makePendingCheckpointNumberOverride(optsForcePendingCheckpointNumber)
|
|
1039
1045
|
: []
|
|
1040
1046
|
).flatMap(override => override.stateDiff ?? []);
|
|
1041
1047
|
|
|
@@ -1045,7 +1051,7 @@ export class SequencerPublisher {
|
|
|
1045
1051
|
// @note we override checkBlob to false since blobs are not part simulate()
|
|
1046
1052
|
stateDiff: [
|
|
1047
1053
|
{ slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true), value: toPaddedHex(0n, true) },
|
|
1048
|
-
...
|
|
1054
|
+
...forcePendingCheckpointNumberStateDiff,
|
|
1049
1055
|
],
|
|
1050
1056
|
},
|
|
1051
1057
|
];
|
|
@@ -1128,7 +1134,7 @@ export class SequencerPublisher {
|
|
|
1128
1134
|
to: this.rollupContract.address,
|
|
1129
1135
|
data: rollupData,
|
|
1130
1136
|
},
|
|
1131
|
-
lastValidL2Slot: block.header.globalVariables.slotNumber
|
|
1137
|
+
lastValidL2Slot: block.header.globalVariables.slotNumber,
|
|
1132
1138
|
gasConfig: { ...opts, gasLimit },
|
|
1133
1139
|
blobConfig: {
|
|
1134
1140
|
blobs: encodedData.blobs.map(b => b.data),
|
|
@@ -1171,7 +1177,7 @@ export class SequencerPublisher {
|
|
|
1171
1177
|
...block.getStats(),
|
|
1172
1178
|
receipt,
|
|
1173
1179
|
txHash: receipt.transactionHash,
|
|
1174
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
1180
|
+
slotNumber: block.header.globalVariables.slotNumber,
|
|
1175
1181
|
});
|
|
1176
1182
|
return false;
|
|
1177
1183
|
}
|
|
@@ -47,7 +47,7 @@ export async function buildBlock(
|
|
|
47
47
|
): Promise<BuildBlockResult> {
|
|
48
48
|
const blockBuildingTimer = new Timer();
|
|
49
49
|
const blockNumber = newGlobalVariables.blockNumber;
|
|
50
|
-
const slot = newGlobalVariables.slotNumber
|
|
50
|
+
const slot = newGlobalVariables.slotNumber;
|
|
51
51
|
const msgCount = l1ToL2Messages.length;
|
|
52
52
|
const stateReference = await worldStateFork.getStateReference();
|
|
53
53
|
const archiveTree = await worldStateFork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
package/src/sequencer/metrics.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import type { RollupContract } from '@aztec/ethereum';
|
|
3
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import {
|
|
4
5
|
Attributes,
|
|
5
6
|
type Gauge,
|
|
@@ -41,7 +42,7 @@ export class SequencerMetrics {
|
|
|
41
42
|
private blockProposalPrecheckFailed: UpDownCounter;
|
|
42
43
|
private slashingAttempts: UpDownCounter;
|
|
43
44
|
|
|
44
|
-
private lastSeenSlot?:
|
|
45
|
+
private lastSeenSlot?: SlotNumber;
|
|
45
46
|
|
|
46
47
|
constructor(
|
|
47
48
|
client: TelemetryClient,
|
|
@@ -185,7 +186,7 @@ export class SequencerMetrics {
|
|
|
185
186
|
});
|
|
186
187
|
}
|
|
187
188
|
|
|
188
|
-
incOpenSlot(slot:
|
|
189
|
+
incOpenSlot(slot: SlotNumber, proposer: string) {
|
|
189
190
|
// sequencer went through the loop a second time. Noop
|
|
190
191
|
if (slot === this.lastSeenSlot) {
|
|
191
192
|
return;
|
|
@@ -2,7 +2,7 @@ import { L2Block } from '@aztec/aztec.js/block';
|
|
|
2
2
|
import { BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB, INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
3
3
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
4
4
|
import { FormattedViemError, NoCommitteeError, type RollupContract } from '@aztec/ethereum';
|
|
5
|
-
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
5
|
+
import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
6
6
|
import { omit, pick } from '@aztec/foundation/collection';
|
|
7
7
|
import { randomInt } from '@aztec/foundation/crypto';
|
|
8
8
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
@@ -62,7 +62,7 @@ export type SequencerEvents = {
|
|
|
62
62
|
oldState: SequencerState;
|
|
63
63
|
newState: SequencerState;
|
|
64
64
|
secondsIntoSlot?: number;
|
|
65
|
-
slotNumber?:
|
|
65
|
+
slotNumber?: SlotNumber;
|
|
66
66
|
}) => void;
|
|
67
67
|
['proposer-rollup-check-failed']: (args: { reason: string }) => void;
|
|
68
68
|
['tx-count-check-failed']: (args: { minTxs: number; availableTxs: number }) => void;
|
|
@@ -101,10 +101,10 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
101
101
|
private governanceProposerPayload: EthAddress | undefined;
|
|
102
102
|
|
|
103
103
|
/** The last slot for which we attempted to vote when sync failed, to prevent duplicate attempts. */
|
|
104
|
-
private lastSlotForVoteWhenSyncFailed:
|
|
104
|
+
private lastSlotForVoteWhenSyncFailed: SlotNumber | undefined;
|
|
105
105
|
|
|
106
106
|
/** The last slot for which we built a validation block in fisherman mode, to prevent duplicate attempts. */
|
|
107
|
-
private lastSlotForValidationBlock:
|
|
107
|
+
private lastSlotForValidationBlock: SlotNumber | undefined;
|
|
108
108
|
|
|
109
109
|
/** The maximum number of seconds that the sequencer can be into a slot to transition to a particular state. */
|
|
110
110
|
protected timetable!: SequencerTimetable;
|
|
@@ -377,7 +377,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
377
377
|
this.emit('proposer-rollup-check-failed', { reason: 'Slot mismatch' });
|
|
378
378
|
this.metrics.recordBlockProposalPrecheckFailed('slot_mismatch');
|
|
379
379
|
return;
|
|
380
|
-
} else if (canProposeCheck.checkpointNumber !==
|
|
380
|
+
} else if (canProposeCheck.checkpointNumber !== CheckpointNumber.fromBlockNumber(newBlockNumber)) {
|
|
381
381
|
this.log.warn(
|
|
382
382
|
`Cannot propose block due to block mismatch with rollup contract (this can be caused by a pending archiver sync). Expected block ${newBlockNumber} but got ${canProposeCheck.checkpointNumber}.`,
|
|
383
383
|
{ ...syncLogData, rollup: canProposeCheck, newBlockNumber, expectedSlot: slot },
|
|
@@ -466,7 +466,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
466
466
|
|
|
467
467
|
/** Tries building a block proposal, and if successful, enqueues it for publishing. */
|
|
468
468
|
private async tryBuildBlockAndEnqueuePublish(
|
|
469
|
-
slot:
|
|
469
|
+
slot: SlotNumber,
|
|
470
470
|
proposer: EthAddress | undefined,
|
|
471
471
|
newBlockNumber: number,
|
|
472
472
|
publisher: SequencerPublisher,
|
|
@@ -554,13 +554,13 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
554
554
|
* @param slotNumber - The current slot number.
|
|
555
555
|
* @param force - Whether to force the transition even if the sequencer is stopped.
|
|
556
556
|
*/
|
|
557
|
-
setState(proposedState: SequencerStateWithSlot, slotNumber:
|
|
557
|
+
setState(proposedState: SequencerStateWithSlot, slotNumber: SlotNumber, opts?: { force?: boolean }): void;
|
|
558
558
|
setState(
|
|
559
559
|
proposedState: Exclude<SequencerState, SequencerStateWithSlot>,
|
|
560
560
|
slotNumber?: undefined,
|
|
561
561
|
opts?: { force?: boolean },
|
|
562
562
|
): void;
|
|
563
|
-
setState(proposedState: SequencerState, slotNumber:
|
|
563
|
+
setState(proposedState: SequencerState, slotNumber: SlotNumber | undefined, opts: { force?: boolean } = {}): void {
|
|
564
564
|
if (this.state === SequencerState.STOPPING && proposedState !== SequencerState.STOPPED && !opts.force) {
|
|
565
565
|
this.log.warn(`Cannot set sequencer to ${proposedState} as it is stopping.`);
|
|
566
566
|
throw new SequencerInterruptedError();
|
|
@@ -601,7 +601,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
601
601
|
await this.p2pClient.deleteTxs(failedTxHashes);
|
|
602
602
|
}
|
|
603
603
|
|
|
604
|
-
protected getBlockBuilderOptions(slot:
|
|
604
|
+
protected getBlockBuilderOptions(slot: SlotNumber): PublicProcessorLimits {
|
|
605
605
|
// Deadline for processing depends on whether we're proposing a block
|
|
606
606
|
const secondsIntoSlot = this.getSecondsIntoSlot(slot);
|
|
607
607
|
const processingEndTimeWithinSlot = this.timetable.getBlockProposalExecTimeEnd(secondsIntoSlot);
|
|
@@ -644,14 +644,14 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
644
644
|
await publisher.validateBlockHeader(proposalHeader, invalidateBlock);
|
|
645
645
|
|
|
646
646
|
const blockNumber = newGlobalVariables.blockNumber;
|
|
647
|
-
const slot = proposalHeader.slotNumber
|
|
647
|
+
const slot = proposalHeader.slotNumber;
|
|
648
648
|
const l1ToL2Messages = await this.l1ToL2MessageSource.getL1ToL2Messages(blockNumber);
|
|
649
649
|
|
|
650
650
|
const workTimer = new Timer();
|
|
651
651
|
this.setState(SequencerState.CREATING_BLOCK, slot);
|
|
652
652
|
|
|
653
653
|
try {
|
|
654
|
-
const blockBuilderOptions = this.getBlockBuilderOptions(
|
|
654
|
+
const blockBuilderOptions = this.getBlockBuilderOptions(slot);
|
|
655
655
|
const buildBlockRes = await this.blockBuilder.buildBlock(
|
|
656
656
|
pendingTxs,
|
|
657
657
|
l1ToL2Messages,
|
|
@@ -767,7 +767,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
767
767
|
|
|
768
768
|
const numberOfRequiredAttestations = Math.floor((committee.length * 2) / 3) + 1;
|
|
769
769
|
|
|
770
|
-
const slotNumber = block.header.globalVariables.slotNumber
|
|
770
|
+
const slotNumber = block.header.globalVariables.slotNumber;
|
|
771
771
|
this.setState(SequencerState.COLLECTING_ATTESTATIONS, slotNumber);
|
|
772
772
|
|
|
773
773
|
this.log.debug('Creating block proposal for validators');
|
|
@@ -779,7 +779,6 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
779
779
|
block.header.globalVariables.blockNumber,
|
|
780
780
|
block.getCheckpointHeader(),
|
|
781
781
|
block.archive.root,
|
|
782
|
-
block.header.state,
|
|
783
782
|
txs,
|
|
784
783
|
proposerAddress,
|
|
785
784
|
blockProposalOptions,
|
|
@@ -897,10 +896,10 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
897
896
|
publisher: SequencerPublisher,
|
|
898
897
|
): Promise<void> {
|
|
899
898
|
// Publishes new block to the network and awaits the tx to be mined
|
|
900
|
-
this.setState(SequencerState.PUBLISHING_BLOCK, block.header.globalVariables.slotNumber
|
|
899
|
+
this.setState(SequencerState.PUBLISHING_BLOCK, block.header.globalVariables.slotNumber);
|
|
901
900
|
|
|
902
901
|
// Time out tx at the end of the slot
|
|
903
|
-
const slot = block.header.globalVariables.slotNumber
|
|
902
|
+
const slot = block.header.globalVariables.slotNumber;
|
|
904
903
|
const txTimeoutAt = new Date((this.getSlotStartBuildTimestamp(slot) + this.aztecSlotDuration) * 1000);
|
|
905
904
|
|
|
906
905
|
const enqueued = await publisher.enqueueProposeL2Block(
|
|
@@ -922,7 +921,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
922
921
|
* Returns whether all dependencies have caught up.
|
|
923
922
|
* We don't check against the previous block submitted since it may have been reorg'd out.
|
|
924
923
|
*/
|
|
925
|
-
protected async checkSync(args: { ts: bigint; slot:
|
|
924
|
+
protected async checkSync(args: { ts: bigint; slot: SlotNumber }): Promise<
|
|
926
925
|
| {
|
|
927
926
|
block?: L2Block;
|
|
928
927
|
blockNumber: number;
|
|
@@ -1008,7 +1007,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
1008
1007
|
protected enqueueGovernanceAndSlashingVotes(
|
|
1009
1008
|
publisher: SequencerPublisher,
|
|
1010
1009
|
attestorAddress: EthAddress,
|
|
1011
|
-
slot:
|
|
1010
|
+
slot: SlotNumber,
|
|
1012
1011
|
timestamp: bigint,
|
|
1013
1012
|
): [Promise<boolean> | undefined, Promise<boolean> | undefined] {
|
|
1014
1013
|
try {
|
|
@@ -1057,7 +1056,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
1057
1056
|
* Checks if we are the proposer for the next slot.
|
|
1058
1057
|
* @returns True if we can propose, and the proposer address (undefined if anyone can propose)
|
|
1059
1058
|
*/
|
|
1060
|
-
protected async checkCanPropose(slot:
|
|
1059
|
+
protected async checkCanPropose(slot: SlotNumber): Promise<[boolean, EthAddress | undefined]> {
|
|
1061
1060
|
let proposer: EthAddress | undefined;
|
|
1062
1061
|
|
|
1063
1062
|
try {
|
|
@@ -1095,7 +1094,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
1095
1094
|
* Tries to vote on slashing actions and governance when the sync check fails but we're past the max time for initializing a proposal.
|
|
1096
1095
|
* This allows the sequencer to participate in governance/slashing votes even when it cannot build blocks.
|
|
1097
1096
|
*/
|
|
1098
|
-
protected async tryVoteWhenSyncFails(args: { slot:
|
|
1097
|
+
protected async tryVoteWhenSyncFails(args: { slot: SlotNumber; ts: bigint }): Promise<void> {
|
|
1099
1098
|
const { slot, ts } = args;
|
|
1100
1099
|
|
|
1101
1100
|
// Prevent duplicate attempts in the same slot
|
|
@@ -1162,7 +1161,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
1162
1161
|
*/
|
|
1163
1162
|
protected async considerInvalidatingBlock(
|
|
1164
1163
|
syncedTo: NonNullable<Awaited<ReturnType<Sequencer['checkSync']>>>,
|
|
1165
|
-
currentSlot:
|
|
1164
|
+
currentSlot: SlotNumber,
|
|
1166
1165
|
): Promise<void> {
|
|
1167
1166
|
const { pendingChainValidationStatus, l1Timestamp } = syncedTo;
|
|
1168
1167
|
if (pendingChainValidationStatus.valid) {
|
|
@@ -1232,11 +1231,11 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
1232
1231
|
}
|
|
1233
1232
|
}
|
|
1234
1233
|
|
|
1235
|
-
private getSlotStartBuildTimestamp(slotNumber:
|
|
1234
|
+
private getSlotStartBuildTimestamp(slotNumber: SlotNumber): number {
|
|
1236
1235
|
return getSlotStartBuildTimestamp(slotNumber, this.l1Constants);
|
|
1237
1236
|
}
|
|
1238
1237
|
|
|
1239
|
-
private getSecondsIntoSlot(slotNumber:
|
|
1238
|
+
private getSecondsIntoSlot(slotNumber: SlotNumber): number {
|
|
1240
1239
|
const slotStartTimestamp = this.getSlotStartBuildTimestamp(slotNumber);
|
|
1241
1240
|
return Number((this.dateProvider.now() / 1000 - slotStartTimestamp).toFixed(3));
|
|
1242
1241
|
}
|