@aztec/sequencer-client 3.0.0-nightly.20251128 → 3.0.0-nightly.20251201.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/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 +9 -8
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +9 -11
- 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 +6 -6
- 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 +17 -24
- package/src/sequencer/block_builder.ts +1 -1
- package/src/sequencer/metrics.ts +3 -2
- package/src/sequencer/sequencer.ts +20 -21
|
@@ -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 { 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,7 +119,7 @@ export declare class SequencerPublisher {
|
|
|
118
119
|
canProposeAtNextEthBlock(tipArchive: Fr, msgSender: EthAddress, opts?: {
|
|
119
120
|
forcePendingBlockNumber?: number;
|
|
120
121
|
}): Promise<{
|
|
121
|
-
slot:
|
|
122
|
+
slot: SlotNumber;
|
|
122
123
|
checkpointNumber: bigint;
|
|
123
124
|
timeOfNextL1Slot: bigint;
|
|
124
125
|
} | undefined>;
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsS0FBSyx1QkFBdUIsRUFBd0IsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsS0FBSyw4QkFBOEIsRUFDbkMsa0JBQWtCLEVBQ2xCLEtBQUssMEJBQTBCLEVBRS9CLEtBQUssWUFBWSxFQUNqQixLQUFLLGlCQUFpQixFQUN0QixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsRUFHaEIsY0FBYyxFQUNkLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssZ0JBQWdCLEVBTXRCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUdqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBNkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQXdCLCtCQUErQixFQUFFLEtBQUssbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEVBQXNCLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxtQkFBbUIsRUFBNkIsTUFBTSxNQUFNLENBQUM7QUFFeEgsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQWdCN0UsZUFBTyxNQUFNLE9BQU8sME9BVVYsQ0FBQztBQUVYLE1BQU0sTUFBTSxNQUFNLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBSzlDLGVBQU8sTUFBTSxjQUFjLGdlQUFvRSxDQUFDO0FBRWhHLE1BQU0sTUFBTSxzQkFBc0IsR0FBRztJQUNuQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQztJQUM1RCxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsdUJBQXVCLEVBQUUsTUFBTSxDQUFDO0NBQ2pDLENBQUM7QUFFRixVQUFVLGlCQUFpQjtJQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsT0FBTyxFQUFFLFdBQVcsQ0FBQztJQUNyQixlQUFlLEVBQUUsVUFBVSxDQUFDO0lBQzVCLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUMxQixZQUFZLEVBQUUsQ0FDWixPQUFPLEVBQUUsV0FBVyxFQUNwQixNQUFNLENBQUMsRUFBRTtRQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQztRQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixDQUFDO1FBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsS0FDbEYsT0FBTyxDQUFDO0NBQ2Q7QUFFRCxxQkFBYSxrQkFBa0I7SUFxQzNCLE9BQU8sQ0FBQyxNQUFNO0lBcENoQixPQUFPLENBQUMsV0FBVyxDQUFTO0lBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQTRCO0lBQ3BDLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFFOUIsU0FBUyxDQUFDLGFBQWEsU0FBa0Q7SUFDekUsU0FBUyxDQUFDLFdBQVcsU0FBZ0Q7SUFFckUsU0FBUyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFNO0lBRWhFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFFdkMsT0FBTyxDQUFDLGNBQWMsQ0FBMEI7SUFFaEQsbUZBQW1GO0lBQ25GLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFhO0lBSWxELE9BQWMsaUJBQWlCLEVBQUUsTUFBTSxDQUFlO0lBR3RELE9BQWMsNEJBQTRCLFNBQVM7SUFHbkQsT0FBYyxjQUFjLEVBQUUsTUFBTSxDQUFZO0lBRXpDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztJQUM5QixjQUFjLEVBQUUsY0FBYyxDQUFDO0lBQy9CLG1CQUFtQixFQUFFLDBCQUEwQixDQUFDO0lBQ2hELHdCQUF3QixFQUFFLDhCQUE4QixHQUFHLDZCQUE2QixHQUFHLFNBQVMsQ0FBQztJQUNyRyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztJQUVsRCxTQUFTLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQU07SUFFN0MsWUFDVSxNQUFNLEVBQUUsY0FBYyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUMsRUFDbEcsSUFBSSxFQUFFO1FBQ0osU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDO1FBQzVCLGNBQWMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDO1FBQ3pDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztRQUM5QixjQUFjLEVBQUUsY0FBYyxDQUFDO1FBQy9CLHdCQUF3QixFQUFFLDhCQUE4QixHQUFHLDZCQUE2QixHQUFHLFNBQVMsQ0FBQztRQUNyRywwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQztRQUN2RCxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztRQUMzQyxVQUFVLEVBQUUsVUFBVSxDQUFDO1FBQ3ZCLFlBQVksRUFBRSxZQUFZLENBQUM7UUFDM0IsT0FBTyxFQUFFLHlCQUF5QixDQUFDO1FBQ25DLFdBQVcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztLQUNkLEVBeUJGO0lBRU0saUJBQWlCLElBQUksY0FBYyxDQUV6QztJQUVNLGdCQUFnQixlQUV0QjtJQUVEOzs7T0FHRztJQUNJLCtCQUErQixDQUFDLGVBQWUsRUFBRSxVQUFVLEdBQUcsU0FBUyxRQUU3RTtJQUVNLFVBQVUsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLFFBRTNDO0lBRU0sZ0JBQWdCLElBQUksVUFBVSxDQUVwQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CLElBQUksSUFBSSxDQU1sQztJQUVEOzs7Ozs7T0FNRztJQUNVLFlBQVk7Ozs7Ozs7Ozs7Ozs7O21CQW9GeEI7SUFFRCxPQUFPLENBQUMsMkJBQTJCO0lBdUJuQzs7OztPQUlHO0lBQ0ksd0JBQXdCLENBQzdCLFVBQVUsRUFBRSxFQUFFLEVBQ2QsU0FBUyxFQUFFLFVBQVUsRUFDckIsSUFBSSxHQUFFO1FBQUUsdUJBQXVCLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBTzs7OzttQkFtQmhEO0lBQ0Q7Ozs7O09BS0c7SUFDVSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFBRSx1QkFBdUIsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFBO0tBQUUsaUJBc0NoSDtJQUVEOzs7T0FHRztJQUNVLHVCQUF1QixDQUNsQyxnQkFBZ0IsRUFBRSxtQkFBbUIsR0FDcEMsT0FBTyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQXdEN0M7SUFFRCxPQUFPLENBQUMsMkJBQTJCO0lBZ0NuQzs7Ozs7Ozs7T0FRRztJQUNVLDBCQUEwQixDQUNyQyxLQUFLLEVBQUUsT0FBTyxFQUNkLHNCQUFzQixFQUFFLCtCQUErQixFQUN2RCwrQkFBK0IsRUFBRSxTQUFTLEVBQzFDLE9BQU8sRUFBRTtRQUFFLHVCQUF1QixDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsR0FDNUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQXFDakI7WUFFYSx1QkFBdUI7SUFzRnJDOzs7OztPQUtHO0lBQ0ksMkJBQTJCLENBQ2hDLGlCQUFpQixFQUFFLFVBQVUsRUFDN0IsVUFBVSxFQUFFLFVBQVUsRUFDdEIsU0FBUyxFQUFFLE1BQU0sRUFDakIsYUFBYSxFQUFFLFVBQVUsRUFDekIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLG1CQUFtQixLQUFLLE9BQU8sQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLEdBQzNELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FVbEI7SUFFRCx1RUFBdUU7SUFDMUQsc0JBQXNCLENBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxFQUM5QixVQUFVLEVBQUUsVUFBVSxFQUN0QixTQUFTLEVBQUUsTUFBTSxFQUNqQixhQUFhLEVBQUUsVUFBVSxFQUN6QixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEtBQUssT0FBTyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUMsR0FDM0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWtIbEI7SUFFRDs7Ozs7T0FLRztJQUNVLHFCQUFxQixDQUNoQyxLQUFLLEVBQUUsT0FBTyxFQUNkLHNCQUFzQixFQUFFLCtCQUErQixFQUN2RCwrQkFBK0IsRUFBRSxTQUFTLEVBQzFDLElBQUksR0FBRTtRQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUFDLHVCQUF1QixDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQU8sR0FDbEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQW9DbEI7SUFFTSxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLEdBQUcsU0FBUyxFQUFFLElBQUksR0FBRTtRQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQTtLQUFPLFFBOEIzRztZQUVhLHlCQUF5QjtJQW9EdkM7Ozs7O09BS0c7SUFDSSxTQUFTLFNBR2Y7SUFFRCx3REFBd0Q7SUFDakQsT0FBTyxTQUdiO1lBRWEsZ0JBQWdCO1lBcUVoQixpQkFBaUI7WUF1RmpCLFlBQVk7Q0FrRjNCIn0=
|
|
@@ -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":"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"}
|
|
@@ -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 { 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,7 +228,7 @@ export class SequencerPublisher {
|
|
|
227
228
|
'InvalidProposer',
|
|
228
229
|
'InvalidArchive'
|
|
229
230
|
];
|
|
230
|
-
return this.rollupContract.canProposeAtNextEthBlock(tipArchive.toBuffer(), msgSender.toString(), this.ethereumSlotDuration, {
|
|
231
|
+
return this.rollupContract.canProposeAtNextEthBlock(tipArchive.toBuffer(), msgSender.toString(), Number(this.ethereumSlotDuration), {
|
|
231
232
|
forcePendingCheckpointNumber: opts.forcePendingBlockNumber
|
|
232
233
|
}).catch((err)=>{
|
|
233
234
|
if (err instanceof FormattedViemError && ignoredErrors.find((e)=>err.message.includes(e))) {
|
|
@@ -390,10 +391,10 @@ export class SequencerPublisher {
|
|
|
390
391
|
// so that the committee is recalculated correctly
|
|
391
392
|
const ignoreSignatures = attestationsAndSigners.attestations.length === 0;
|
|
392
393
|
if (ignoreSignatures) {
|
|
393
|
-
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber
|
|
394
|
+
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber);
|
|
394
395
|
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
|
|
396
|
+
this.log.warn(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
397
|
+
throw new Error(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
397
398
|
}
|
|
398
399
|
attestationsAndSigners.attestations = committee.map((committeeMember)=>CommitteeAttestation.fromAddress(committeeMember));
|
|
399
400
|
}
|
|
@@ -404,7 +405,6 @@ export class SequencerPublisher {
|
|
|
404
405
|
{
|
|
405
406
|
header: block.getCheckpointHeader().toViem(),
|
|
406
407
|
archive: toHex(block.archive.root.toBuffer()),
|
|
407
|
-
stateReference: block.header.state.toViem(),
|
|
408
408
|
oracleInput: {
|
|
409
409
|
feeAssetPriceModifier: 0n
|
|
410
410
|
}
|
|
@@ -590,7 +590,6 @@ export class SequencerPublisher {
|
|
|
590
590
|
const proposeTxArgs = {
|
|
591
591
|
header: checkpointHeader,
|
|
592
592
|
archive: block.archive.root.toBuffer(),
|
|
593
|
-
stateReference: block.header.state,
|
|
594
593
|
body: block.body.toBuffer(),
|
|
595
594
|
blobs,
|
|
596
595
|
attestationsAndSigners,
|
|
@@ -607,7 +606,7 @@ export class SequencerPublisher {
|
|
|
607
606
|
} catch (err) {
|
|
608
607
|
this.log.error(`Block validation failed. ${err instanceof Error ? err.message : 'No error message'}`, err, {
|
|
609
608
|
...block.getStats(),
|
|
610
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
609
|
+
slotNumber: block.header.globalVariables.slotNumber,
|
|
611
610
|
forcePendingBlockNumber: opts.forcePendingBlockNumber
|
|
612
611
|
});
|
|
613
612
|
throw err;
|
|
@@ -640,7 +639,7 @@ export class SequencerPublisher {
|
|
|
640
639
|
gasLimit,
|
|
641
640
|
txTimeoutAt: opts.txTimeoutAt
|
|
642
641
|
},
|
|
643
|
-
lastValidL2Slot: this.getCurrentL2Slot() +
|
|
642
|
+
lastValidL2Slot: SlotNumber(this.getCurrentL2Slot() + 2),
|
|
644
643
|
checkSuccess: (_req, result)=>{
|
|
645
644
|
const success = result && result.receipt && result.receipt.status === 'success' && tryExtractEvent(result.receipt.logs, this.rollupContract.address, RollupAbi, 'CheckpointInvalidated');
|
|
646
645
|
if (!success) {
|
|
@@ -769,7 +768,6 @@ export class SequencerPublisher {
|
|
|
769
768
|
{
|
|
770
769
|
header: encodedData.header.toViem(),
|
|
771
770
|
archive: toHex(encodedData.archive),
|
|
772
|
-
stateReference: encodedData.stateReference.toViem(),
|
|
773
771
|
oracleInput: {
|
|
774
772
|
// We are currently not modifying these. See #9963
|
|
775
773
|
feeAssetPriceModifier: 0n
|
|
@@ -872,7 +870,7 @@ export class SequencerPublisher {
|
|
|
872
870
|
to: this.rollupContract.address,
|
|
873
871
|
data: rollupData
|
|
874
872
|
},
|
|
875
|
-
lastValidL2Slot: block.header.globalVariables.slotNumber
|
|
873
|
+
lastValidL2Slot: block.header.globalVariables.slotNumber,
|
|
876
874
|
gasConfig: {
|
|
877
875
|
...opts,
|
|
878
876
|
gasLimit
|
|
@@ -918,7 +916,7 @@ export class SequencerPublisher {
|
|
|
918
916
|
...block.getStats(),
|
|
919
917
|
receipt,
|
|
920
918
|
txHash: receipt.transactionHash,
|
|
921
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
919
|
+
slotNumber: block.header.globalVariables.slotNumber
|
|
922
920
|
});
|
|
923
921
|
return false;
|
|
924
922
|
}
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL3NlcXVlbmNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUF3QyxLQUFLLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBQzNFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFFTCwrQkFBK0IsRUFDL0IsS0FBSyxhQUFhLEVBRWxCLEtBQUssbUJBQW1CLEVBQ3pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQWtELE1BQU0sNkJBQTZCLENBQUM7QUFFckgsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUsscUJBQXFCLEVBRTFCLEtBQUssc0JBQXNCLEVBQzVCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU9u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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":"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;AAC5F,OAAO,EAAe,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,KAAK,iBAAiB,EAAY,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAEL,+BAA+B,EAC/B,KAAK,aAAa,EAElB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,iBAAiB,EAAkD,MAAM,6BAA6B,CAAC;AAErH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAOnE,OAAO,EAAqD,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,MAAM,EAAiC,MAAM,yBAAyB,CAAC;AACvH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,KAAK,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC;AAEnH,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACxB,QAAQ,EAAE,cAAc,CAAC;QACzB,QAAQ,EAAE,cAAc,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,KAAK,IAAI,CAAC;IACX,CAAC,8BAA8B,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpF,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3D,CAAC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC/B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,KAAK,IAAI,CAAC;IACX,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5E,CAAC;;AAEF;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,cAA8D;IAiCzF,SAAS,CAAC,gBAAgB,EAAE,yBAAyB;IACrD,SAAS,CAAC,eAAe,EAAE,eAAe,GAAG,SAAS;IACtD,SAAS,CAAC,cAAc,EAAE,qBAAqB;IAC/C,SAAS,CAAC,SAAS,EAAE,GAAG;IACxB,SAAS,CAAC,UAAU,EAAE,sBAAsB;IAC5C,SAAS,CAAC,aAAa,EAAE,sBAAsB,GAAG,SAAS;IAC3D,SAAS,CAAC,aAAa,EAAE,aAAa;IACtC,SAAS,CAAC,mBAAmB,EAAE,mBAAmB;IAClD,SAAS,CAAC,YAAY,EAAE,qBAAqB;IAC7C,SAAS,CAAC,WAAW,EAAE,wBAAwB;IAC/C,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,MAAM,EAAE,eAAe;IACjC,SAAS,CAAC,SAAS,EAAE,eAAe;IACpC,SAAS,CAAC,GAAG;IA/Cf,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,4BAA4B,CAAK;IACzC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO,CAAC,kBAAkB,CAAsB;IAEhD,OAAO,CAAC,yBAAyB,CAAyB;IAE1D,oGAAoG;IACpG,OAAO,CAAC,6BAA6B,CAAyB;IAE9D,4GAA4G;IAC5G,OAAO,CAAC,0BAA0B,CAAyB;IAE3D,+GAA+G;IAC/G,SAAS,CAAC,SAAS,EAAG,kBAAkB,CAAC;IACzC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAS;IAO5C,SAAS,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAEpD,YACY,gBAAgB,EAAE,yBAAyB,EAC3C,eAAe,EAAE,eAAe,GAAG,SAAS,EAC5C,cAAc,EAAE,qBAAqB,EACrC,SAAS,EAAE,GAAG,EACd,UAAU,EAAE,sBAAsB,EAClC,aAAa,EAAE,sBAAsB,GAAG,SAAS,EACjD,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,qBAAqB,EACnC,WAAW,EAAE,wBAAwB,EACrC,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,eAAe,EACvB,SAAS,GAAE,eAAsC,EACjD,GAAG,yCAA4B,EAY1C;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,qBAAqB,6BAE3B;IAEM,SAAS,oBAEf;IAED;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,eAAe,QAwC1C;IAED,OAAO,CAAC,YAAY;IAcP,IAAI,kBAEhB;IAED;;OAEG;IACI,KAAK,SAKX;IAED;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAOjC;IAED;;;OAGG;IACI,MAAM;;MAEZ;IAED;;;;;;;OAOG;IACH,UAAgB,IAAI,kBAyMnB;YAGa,8BAA8B;IA+D5C,UACgB,QAAQ,kBAiBvB;IAED;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1G,QAAQ,CACN,aAAa,EAAE,OAAO,CAAC,cAAc,EAAE,sBAAsB,CAAC,EAC9D,UAAU,CAAC,EAAE,SAAS,EACtB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GACzB,IAAI,CAAC;YAgCM,oBAAoB;IAUlC,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,qBAAqB,CAgBxE;YAgBa,2BAA2B;IAwGzC,UAKgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,EAAE,EAAE,EACT,eAAe,EAAE,UAAU,GAAG,SAAS,GACtC,OAAO,CAAC,+BAA+B,CAAC,CAsF1C;IAED,wEAAwE;IACxE,OAAO,CAAC,sBAAsB;IA8C9B;;;OAGG;IACH,UAGgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,sBAAsB,EAAE,+BAA+B,EACvD,+BAA+B,EAAE,SAAS,EAC1C,eAAe,EAAE,sBAAsB,GAAG,SAAS,EACnD,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAqBf;IAED;;;OAGG;IACH,UAAgB,SAAS,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CACtE;QACE,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,EAAE,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,4BAA4B,EAAE,mBAAmB,CAAC;KACnD,GACD,SAAS,CACZ,CA+DA;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,iCAAiC,CACzC,SAAS,EAAE,kBAAkB,EAC7B,eAAe,EAAE,UAAU,EAC3B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,GAChB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAyC9D;IAED;;;OAGG;IACH,UAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC,CAgC5F;IAED;;;OAGG;IACH,UAAgB,oBAAoB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD1F;IAED;;;;;OAKG;IACH,UAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAClE,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAmEf;IAED,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,kBAAkB;IAK1B,IAAI,iBAAiB,WAEpB;IAED,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAEM,gBAAgB,IAAI,sBAAsB,GAAG,SAAS,CAE5D;CACF"}
|
|
@@ -499,12 +499,12 @@ export { SequencerState };
|
|
|
499
499
|
*/ async buildBlockAndEnqueuePublish(pendingTxs, proposalHeader, newGlobalVariables, proposerAddress, invalidateBlock, publisher) {
|
|
500
500
|
await publisher.validateBlockHeader(proposalHeader, invalidateBlock);
|
|
501
501
|
const blockNumber = newGlobalVariables.blockNumber;
|
|
502
|
-
const slot = proposalHeader.slotNumber
|
|
502
|
+
const slot = proposalHeader.slotNumber;
|
|
503
503
|
const l1ToL2Messages = await this.l1ToL2MessageSource.getL1ToL2Messages(blockNumber);
|
|
504
504
|
const workTimer = new Timer();
|
|
505
505
|
this.setState(SequencerState.CREATING_BLOCK, slot);
|
|
506
506
|
try {
|
|
507
|
-
const blockBuilderOptions = this.getBlockBuilderOptions(
|
|
507
|
+
const blockBuilderOptions = this.getBlockBuilderOptions(slot);
|
|
508
508
|
const buildBlockRes = await this.blockBuilder.buildBlock(pendingTxs, l1ToL2Messages, newGlobalVariables, blockBuilderOptions);
|
|
509
509
|
const { publicGas, block, publicProcessorDuration, numTxs, numMsgs, blockBuildingTimer, usedTxs, failedTxs } = buildBlockRes;
|
|
510
510
|
const blockBuildDuration = workTimer.ms();
|
|
@@ -577,14 +577,14 @@ export { SequencerState };
|
|
|
577
577
|
throw new Error('Missing validator client: Cannot collect attestations');
|
|
578
578
|
}
|
|
579
579
|
const numberOfRequiredAttestations = Math.floor(committee.length * 2 / 3) + 1;
|
|
580
|
-
const slotNumber = block.header.globalVariables.slotNumber
|
|
580
|
+
const slotNumber = block.header.globalVariables.slotNumber;
|
|
581
581
|
this.setState(SequencerState.COLLECTING_ATTESTATIONS, slotNumber);
|
|
582
582
|
this.log.debug('Creating block proposal for validators');
|
|
583
583
|
const blockProposalOptions = {
|
|
584
584
|
publishFullTxs: !!this.config.publishTxsWithProposals,
|
|
585
585
|
broadcastInvalidBlockProposal: this.config.broadcastInvalidBlockProposal
|
|
586
586
|
};
|
|
587
|
-
const proposal = await this.validatorClient.createBlockProposal(block.header.globalVariables.blockNumber, block.getCheckpointHeader(), block.archive.root,
|
|
587
|
+
const proposal = await this.validatorClient.createBlockProposal(block.header.globalVariables.blockNumber, block.getCheckpointHeader(), block.archive.root, txs, proposerAddress, blockProposalOptions);
|
|
588
588
|
if (!proposal) {
|
|
589
589
|
throw new Error(`Failed to create block proposal`);
|
|
590
590
|
}
|
|
@@ -661,9 +661,9 @@ export { SequencerState };
|
|
|
661
661
|
* @param block - The L2Block to be published.
|
|
662
662
|
*/ async enqueuePublishL2Block(block, attestationsAndSigners, attestationsAndSignersSignature, invalidateBlock, publisher) {
|
|
663
663
|
// Publishes new block to the network and awaits the tx to be mined
|
|
664
|
-
this.setState(SequencerState.PUBLISHING_BLOCK, block.header.globalVariables.slotNumber
|
|
664
|
+
this.setState(SequencerState.PUBLISHING_BLOCK, block.header.globalVariables.slotNumber);
|
|
665
665
|
// Time out tx at the end of the slot
|
|
666
|
-
const slot = block.header.globalVariables.slotNumber
|
|
666
|
+
const slot = block.header.globalVariables.slotNumber;
|
|
667
667
|
const txTimeoutAt = new Date((this.getSlotStartBuildTimestamp(slot) + this.aztecSlotDuration) * 1000);
|
|
668
668
|
const enqueued = await publisher.enqueueProposeL2Block(block, attestationsAndSigners, attestationsAndSignersSignature, {
|
|
669
669
|
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.20251201.2",
|
|
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.20251201.2",
|
|
30
|
+
"@aztec/bb-prover": "3.0.0-nightly.20251201.2",
|
|
31
|
+
"@aztec/blob-lib": "3.0.0-nightly.20251201.2",
|
|
32
|
+
"@aztec/blob-sink": "3.0.0-nightly.20251201.2",
|
|
33
|
+
"@aztec/constants": "3.0.0-nightly.20251201.2",
|
|
34
|
+
"@aztec/epoch-cache": "3.0.0-nightly.20251201.2",
|
|
35
|
+
"@aztec/ethereum": "3.0.0-nightly.20251201.2",
|
|
36
|
+
"@aztec/foundation": "3.0.0-nightly.20251201.2",
|
|
37
|
+
"@aztec/l1-artifacts": "3.0.0-nightly.20251201.2",
|
|
38
|
+
"@aztec/merkle-tree": "3.0.0-nightly.20251201.2",
|
|
39
|
+
"@aztec/node-keystore": "3.0.0-nightly.20251201.2",
|
|
40
|
+
"@aztec/noir-acvm_js": "3.0.0-nightly.20251201.2",
|
|
41
|
+
"@aztec/noir-contracts.js": "3.0.0-nightly.20251201.2",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251201.2",
|
|
43
|
+
"@aztec/noir-types": "3.0.0-nightly.20251201.2",
|
|
44
|
+
"@aztec/p2p": "3.0.0-nightly.20251201.2",
|
|
45
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20251201.2",
|
|
46
|
+
"@aztec/prover-client": "3.0.0-nightly.20251201.2",
|
|
47
|
+
"@aztec/simulator": "3.0.0-nightly.20251201.2",
|
|
48
|
+
"@aztec/slasher": "3.0.0-nightly.20251201.2",
|
|
49
|
+
"@aztec/stdlib": "3.0.0-nightly.20251201.2",
|
|
50
|
+
"@aztec/telemetry-client": "3.0.0-nightly.20251201.2",
|
|
51
|
+
"@aztec/validator-client": "3.0.0-nightly.20251201.2",
|
|
52
|
+
"@aztec/world-state": "3.0.0-nightly.20251201.2",
|
|
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.20251201.2",
|
|
59
|
+
"@aztec/kv-store": "3.0.0-nightly.20251201.2",
|
|
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 { 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,7 +341,7 @@ 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, {
|
|
344
|
+
.canProposeAtNextEthBlock(tipArchive.toBuffer(), msgSender.toString(), Number(this.ethereumSlotDuration), {
|
|
348
345
|
forcePendingCheckpointNumber: opts.forcePendingBlockNumber,
|
|
349
346
|
})
|
|
350
347
|
.catch(err => {
|
|
@@ -521,10 +518,10 @@ export class SequencerPublisher {
|
|
|
521
518
|
// so that the committee is recalculated correctly
|
|
522
519
|
const ignoreSignatures = attestationsAndSigners.attestations.length === 0;
|
|
523
520
|
if (ignoreSignatures) {
|
|
524
|
-
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber
|
|
521
|
+
const { committee } = await this.epochCache.getCommittee(block.header.globalVariables.slotNumber);
|
|
525
522
|
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
|
|
523
|
+
this.log.warn(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
524
|
+
throw new Error(`No committee found for slot ${block.header.globalVariables.slotNumber}`);
|
|
528
525
|
}
|
|
529
526
|
attestationsAndSigners.attestations = committee.map(committeeMember =>
|
|
530
527
|
CommitteeAttestation.fromAddress(committeeMember),
|
|
@@ -539,7 +536,6 @@ export class SequencerPublisher {
|
|
|
539
536
|
{
|
|
540
537
|
header: block.getCheckpointHeader().toViem(),
|
|
541
538
|
archive: toHex(block.archive.root.toBuffer()),
|
|
542
|
-
stateReference: block.header.state.toViem(),
|
|
543
539
|
oracleInput: {
|
|
544
540
|
feeAssetPriceModifier: 0n,
|
|
545
541
|
},
|
|
@@ -555,7 +551,7 @@ export class SequencerPublisher {
|
|
|
555
551
|
}
|
|
556
552
|
|
|
557
553
|
private async enqueueCastSignalHelper(
|
|
558
|
-
slotNumber:
|
|
554
|
+
slotNumber: SlotNumber,
|
|
559
555
|
timestamp: bigint,
|
|
560
556
|
signalType: GovernanceSignalAction,
|
|
561
557
|
payload: EthAddress,
|
|
@@ -648,7 +644,7 @@ export class SequencerPublisher {
|
|
|
648
644
|
*/
|
|
649
645
|
public enqueueGovernanceCastSignal(
|
|
650
646
|
governancePayload: EthAddress,
|
|
651
|
-
slotNumber:
|
|
647
|
+
slotNumber: SlotNumber,
|
|
652
648
|
timestamp: bigint,
|
|
653
649
|
signerAddress: EthAddress,
|
|
654
650
|
signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>,
|
|
@@ -667,7 +663,7 @@ export class SequencerPublisher {
|
|
|
667
663
|
/** Enqueues all slashing actions as returned by the slasher client. */
|
|
668
664
|
public async enqueueSlashingActions(
|
|
669
665
|
actions: ProposerSlashAction[],
|
|
670
|
-
slotNumber:
|
|
666
|
+
slotNumber: SlotNumber,
|
|
671
667
|
timestamp: bigint,
|
|
672
668
|
signerAddress: EthAddress,
|
|
673
669
|
signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>,
|
|
@@ -807,7 +803,6 @@ export class SequencerPublisher {
|
|
|
807
803
|
const proposeTxArgs = {
|
|
808
804
|
header: checkpointHeader,
|
|
809
805
|
archive: block.archive.root.toBuffer(),
|
|
810
|
-
stateReference: block.header.state,
|
|
811
806
|
body: block.body.toBuffer(),
|
|
812
807
|
blobs,
|
|
813
808
|
attestationsAndSigners,
|
|
@@ -826,7 +821,7 @@ export class SequencerPublisher {
|
|
|
826
821
|
} catch (err: any) {
|
|
827
822
|
this.log.error(`Block validation failed. ${err instanceof Error ? err.message : 'No error message'}`, err, {
|
|
828
823
|
...block.getStats(),
|
|
829
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
824
|
+
slotNumber: block.header.globalVariables.slotNumber,
|
|
830
825
|
forcePendingBlockNumber: opts.forcePendingBlockNumber,
|
|
831
826
|
});
|
|
832
827
|
throw err;
|
|
@@ -852,7 +847,7 @@ export class SequencerPublisher {
|
|
|
852
847
|
action: `invalidate-by-${request.reason}`,
|
|
853
848
|
request: request.request,
|
|
854
849
|
gasConfig: { gasLimit, txTimeoutAt: opts.txTimeoutAt },
|
|
855
|
-
lastValidL2Slot: this.getCurrentL2Slot() +
|
|
850
|
+
lastValidL2Slot: SlotNumber(this.getCurrentL2Slot() + 2),
|
|
856
851
|
checkSuccess: (_req, result) => {
|
|
857
852
|
const success =
|
|
858
853
|
result &&
|
|
@@ -873,7 +868,7 @@ export class SequencerPublisher {
|
|
|
873
868
|
action: Action,
|
|
874
869
|
request: L1TxRequest,
|
|
875
870
|
checkSuccess: (receipt: TransactionReceipt) => boolean | undefined,
|
|
876
|
-
slotNumber:
|
|
871
|
+
slotNumber: SlotNumber,
|
|
877
872
|
timestamp: bigint,
|
|
878
873
|
) {
|
|
879
874
|
const logData = { slotNumber, timestamp, gasLimit: undefined as bigint | undefined };
|
|
@@ -985,7 +980,6 @@ export class SequencerPublisher {
|
|
|
985
980
|
{
|
|
986
981
|
header: encodedData.header.toViem(),
|
|
987
982
|
archive: toHex(encodedData.archive),
|
|
988
|
-
stateReference: encodedData.stateReference.toViem(),
|
|
989
983
|
oracleInput: {
|
|
990
984
|
// We are currently not modifying these. See #9963
|
|
991
985
|
feeAssetPriceModifier: 0n,
|
|
@@ -1013,7 +1007,6 @@ export class SequencerPublisher {
|
|
|
1013
1007
|
{
|
|
1014
1008
|
readonly header: ViemHeader;
|
|
1015
1009
|
readonly archive: `0x${string}`;
|
|
1016
|
-
readonly stateReference: ViemStateReference;
|
|
1017
1010
|
readonly oracleInput: {
|
|
1018
1011
|
readonly feeAssetPriceModifier: 0n;
|
|
1019
1012
|
};
|
|
@@ -1128,7 +1121,7 @@ export class SequencerPublisher {
|
|
|
1128
1121
|
to: this.rollupContract.address,
|
|
1129
1122
|
data: rollupData,
|
|
1130
1123
|
},
|
|
1131
|
-
lastValidL2Slot: block.header.globalVariables.slotNumber
|
|
1124
|
+
lastValidL2Slot: block.header.globalVariables.slotNumber,
|
|
1132
1125
|
gasConfig: { ...opts, gasLimit },
|
|
1133
1126
|
blobConfig: {
|
|
1134
1127
|
blobs: encodedData.blobs.map(b => b.data),
|
|
@@ -1171,7 +1164,7 @@ export class SequencerPublisher {
|
|
|
1171
1164
|
...block.getStats(),
|
|
1172
1165
|
receipt,
|
|
1173
1166
|
txHash: receipt.transactionHash,
|
|
1174
|
-
slotNumber: block.header.globalVariables.slotNumber
|
|
1167
|
+
slotNumber: block.header.globalVariables.slotNumber,
|
|
1175
1168
|
});
|
|
1176
1169
|
return false;
|
|
1177
1170
|
}
|
|
@@ -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 { 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;
|
|
@@ -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
|
}
|