@aztec/sequencer-client 0.0.1-commit.8afd444 → 0.0.1-commit.8f9871590
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/config.d.ts +1 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +4 -8
- package/dest/publisher/sequencer-publisher.d.ts +8 -1
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +14 -5
- package/dest/sequencer/checkpoint_proposal_job.d.ts +3 -1
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +10 -5
- package/dest/sequencer/metrics.d.ts +5 -1
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +54 -5
- package/dest/sequencer/sequencer.d.ts +1 -1
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +1 -0
- package/dest/sequencer/timetable.d.ts +1 -4
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +1 -4
- package/dest/test/mock_checkpoint_builder.d.ts +5 -3
- package/dest/test/mock_checkpoint_builder.d.ts.map +1 -1
- package/dest/test/mock_checkpoint_builder.js +6 -4
- package/dest/test/utils.d.ts +3 -3
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +5 -4
- package/package.json +28 -28
- package/src/config.ts +9 -11
- package/src/publisher/sequencer-publisher.ts +27 -5
- package/src/sequencer/checkpoint_proposal_job.ts +13 -3
- package/src/sequencer/metrics.ts +53 -5
- package/src/sequencer/sequencer.ts +1 -0
- package/src/sequencer/timetable.ts +6 -5
- package/src/test/mock_checkpoint_builder.ts +12 -1
- package/src/test/utils.ts +5 -2
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
-
import {
|
|
2
|
+
import { CHECKPOINT_ASSEMBLE_TIME, CHECKPOINT_INITIALIZATION_TIME, DEFAULT_P2P_PROPAGATION_TIME, MIN_EXECUTION_TIME } from '@aztec/stdlib/timetable';
|
|
3
3
|
import { SequencerTooSlowError } from './errors.js';
|
|
4
4
|
import { SequencerState } from './utils.js';
|
|
5
|
-
export const MIN_EXECUTION_TIME = 2;
|
|
6
|
-
export const CHECKPOINT_INITIALIZATION_TIME = 1;
|
|
7
|
-
export const CHECKPOINT_ASSEMBLE_TIME = 1;
|
|
8
5
|
export class SequencerTimetable {
|
|
9
6
|
metrics;
|
|
10
7
|
log;
|
|
@@ -63,6 +63,7 @@ export declare class MockCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
63
63
|
constants: CheckpointGlobalVariables;
|
|
64
64
|
l1ToL2Messages: Fr[];
|
|
65
65
|
previousCheckpointOutHashes: Fr[];
|
|
66
|
+
feeAssetPriceModifier: bigint;
|
|
66
67
|
}>;
|
|
67
68
|
openCheckpointCalls: Array<{
|
|
68
69
|
checkpointNumber: CheckpointNumber;
|
|
@@ -70,6 +71,7 @@ export declare class MockCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
70
71
|
l1ToL2Messages: Fr[];
|
|
71
72
|
previousCheckpointOutHashes: Fr[];
|
|
72
73
|
existingBlocks: L2Block[];
|
|
74
|
+
feeAssetPriceModifier: bigint;
|
|
73
75
|
}>;
|
|
74
76
|
updateConfigCalls: Array<Partial<FullNodeBlockBuilderConfig>>;
|
|
75
77
|
/**
|
|
@@ -86,10 +88,10 @@ export declare class MockCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
86
88
|
getCheckpointBuilder(): MockCheckpointBuilder | undefined;
|
|
87
89
|
getConfig(): FullNodeBlockBuilderConfig;
|
|
88
90
|
updateConfig(config: Partial<FullNodeBlockBuilderConfig>): void;
|
|
89
|
-
startCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], _fork: MerkleTreeWriteOperations): Promise<ICheckpointBlockBuilder>;
|
|
90
|
-
openCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], _fork: MerkleTreeWriteOperations, existingBlocks?: L2Block[]): Promise<ICheckpointBlockBuilder>;
|
|
91
|
+
startCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, feeAssetPriceModifier: bigint, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], _fork: MerkleTreeWriteOperations): Promise<ICheckpointBlockBuilder>;
|
|
92
|
+
openCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, feeAssetPriceModifier: bigint, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], _fork: MerkleTreeWriteOperations, existingBlocks?: L2Block[]): Promise<ICheckpointBlockBuilder>;
|
|
91
93
|
getFork(_blockNumber: BlockNumber): Promise<MerkleTreeWriteOperations>;
|
|
92
94
|
/** Reset for reuse in another test */
|
|
93
95
|
reset(): void;
|
|
94
96
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19jaGVja3BvaW50X2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfY2hlY2twb2ludF9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUNWLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDdEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUd6QyxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVFOzs7R0FHRztBQUNILHFCQUFhLHFCQUFzQixZQUFXLHVCQUF1QjtJQXdCakUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO0lBeEJuQyxPQUFPLENBQUMsTUFBTSxDQUFpQjtJQUMvQixPQUFPLENBQUMsV0FBVyxDQUFpQjtJQUNwQyxPQUFPLENBQUMsZUFBZSxDQUFjO0lBQ3JDLE9BQU8sQ0FBQyxVQUFVLENBQUs7SUFFdkIscUZBQXFGO0lBQ3JGLE9BQU8sQ0FBQyxhQUFhLENBQTBDO0lBRS9ELGlDQUFpQztJQUMxQixlQUFlLEVBQUUsS0FBSyxDQUFDO1FBQzVCLFdBQVcsRUFBRSxXQUFXLENBQUM7UUFDekIsU0FBUyxFQUFFLE1BQU0sQ0FBQztRQUNsQixJ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/test/mock_checkpoint_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,yBAAyB,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,uBAAuB;IAwBjE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAxBnC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,UAAU,CAAK;IAEvB,qFAAqF;IACrF,OAAO,CAAC,aAAa,CAA0C;IAE/D,iCAAiC;IAC1B,eAAe,EAAE,KAAK,CAAC;QAC5B,WAAW,EAAE,WAAW,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,qBAAqB,CAAC;KAC7B,CAAC,CAAM;IACR,oEAAoE;IAC7D,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAC1C,wBAAwB,UAAS;IACjC,mBAAmB,UAAS;IAEnC,4DAA4D;IACrD,YAAY,EAAE,KAAK,GAAG,SAAS,CAAa;IAEnD,YACmB,SAAS,EAAE,yBAAyB,EACpC,gBAAgB,EAAE,gBAAgB,EACjD;IAEJ,4EAA4E;IAC5E,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAM5D;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,OAAO,GAAG,IAAI,CAI9C;IAED,eAAe,IAAI,yBAAyB,CAE3C;IAEK,UAAU,CACd,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EAC5C,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,4BAA4B,CAAC,CA6CvC;IAED,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CAcxC;IAED,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAiBnC;IAED;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B,sCAAsC;IACtC,KAAK,IAAI,IAAI,CAWZ;CACF;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,iCAAiC;IAC1B,oBAAoB,EAAE,KAAK,CAAC;QACjC,gBAAgB,EAAE,gBAAgB,CAAC;QACnC,SAAS,EAAE,yBAAyB,CAAC;QACrC,cAAc,EAAE,EAAE,EAAE,CAAC;QACrB,2BAA2B,EAAE,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mock_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/test/mock_checkpoint_builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -181,12 +181,13 @@ import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
|
|
|
181
181
|
updateConfig(config) {
|
|
182
182
|
this.updateConfigCalls.push(config);
|
|
183
183
|
}
|
|
184
|
-
startCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, _fork) {
|
|
184
|
+
startCheckpoint(checkpointNumber, constants, feeAssetPriceModifier, l1ToL2Messages, previousCheckpointOutHashes, _fork) {
|
|
185
185
|
this.startCheckpointCalls.push({
|
|
186
186
|
checkpointNumber,
|
|
187
187
|
constants,
|
|
188
188
|
l1ToL2Messages,
|
|
189
|
-
previousCheckpointOutHashes
|
|
189
|
+
previousCheckpointOutHashes,
|
|
190
|
+
feeAssetPriceModifier
|
|
190
191
|
});
|
|
191
192
|
if (!this.checkpointBuilder) {
|
|
192
193
|
// Auto-create a builder if none was set
|
|
@@ -194,13 +195,14 @@ import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
|
|
|
194
195
|
}
|
|
195
196
|
return Promise.resolve(this.checkpointBuilder);
|
|
196
197
|
}
|
|
197
|
-
openCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, _fork, existingBlocks = []) {
|
|
198
|
+
openCheckpoint(checkpointNumber, constants, feeAssetPriceModifier, l1ToL2Messages, previousCheckpointOutHashes, _fork, existingBlocks = []) {
|
|
198
199
|
this.openCheckpointCalls.push({
|
|
199
200
|
checkpointNumber,
|
|
200
201
|
constants,
|
|
201
202
|
l1ToL2Messages,
|
|
202
203
|
previousCheckpointOutHashes,
|
|
203
|
-
existingBlocks
|
|
204
|
+
existingBlocks,
|
|
205
|
+
feeAssetPriceModifier
|
|
204
206
|
});
|
|
205
207
|
if (!this.checkpointBuilder) {
|
|
206
208
|
// Auto-create a builder if none was set
|
package/dest/test/utils.d.ts
CHANGED
|
@@ -35,13 +35,13 @@ export declare function createBlockProposal(block: L2Block, signature: Signature
|
|
|
35
35
|
/**
|
|
36
36
|
* Creates a checkpoint proposal from a block and signature
|
|
37
37
|
*/
|
|
38
|
-
export declare function createCheckpointProposal(block: L2Block, checkpointSignature: Signature, blockSignature?: Signature): CheckpointProposal;
|
|
38
|
+
export declare function createCheckpointProposal(block: L2Block, checkpointSignature: Signature, blockSignature?: Signature, feeAssetPriceModifier?: bigint): CheckpointProposal;
|
|
39
39
|
/**
|
|
40
40
|
* Creates a checkpoint attestation from a block and signature.
|
|
41
41
|
* Note: We manually set the sender since we use random signatures in tests.
|
|
42
42
|
* In production, the sender is recovered from the signature.
|
|
43
43
|
*/
|
|
44
|
-
export declare function createCheckpointAttestation(block: L2Block, signature: Signature, sender: EthAddress): CheckpointAttestation;
|
|
44
|
+
export declare function createCheckpointAttestation(block: L2Block, signature: Signature, sender: EthAddress, feeAssetPriceModifier?: bigint): CheckpointAttestation;
|
|
45
45
|
/**
|
|
46
46
|
* Creates transactions and a block, and mocks P2P to return them.
|
|
47
47
|
* Helper for tests that need to set up a block with transactions.
|
|
@@ -50,4 +50,4 @@ export declare function setupTxsAndBlock(p2p: MockProxy<P2P>, globalVariables: G
|
|
|
50
50
|
txs: Tx[];
|
|
51
51
|
block: L2Block;
|
|
52
52
|
}>;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUcvRyxPQUFPLEVBQWUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFvQyxNQUFNLGtCQUFrQixDQUFDO0FBRTNHLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdGOztHQUVHO0FBQ0gsd0JBQXNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FNckU7QUFFRDs7R0FFRztBQUNILHdCQUFzQixTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWdCN0Y7QUFFRDs7R0FFRztBQUNILHdCQUFnQixjQUFjLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUluRTtBQUVEOztHQUVHO0FBQ0gsd0JBQXVCLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBSW5GO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQUMsTUFBTSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsRUFBRSxDQUdwRjtBQXVCRDs7R0FFRztBQUNILHdCQUFnQixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUcsYUFBYSxDQVV2RjtBQUVEOztHQUVHO0FBQ0gsd0JBQWdCLHdCQUF3QixDQUN0QyxLQUFLLEVBQUUsT0FBTyxFQUNkLG1CQUFtQixFQUFFLFNBQVMsRUFDOUIsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUMxQixxQkFBcUIsR0FBRSxNQUFXLEdBQ2pDLGtCQUFrQixDQVNwQjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsMkJBQTJCLENBQ3pDLEtBQUssRUFBRSxPQUFPLEVBQ2QsU0FBUyxFQUFFLFNBQVMsRUFDcEIsTUFBTSxFQUFFLFVBQVUsRUFDbEIscUJBQXFCLEdBQUUsTUFBVyxHQUNqQyxxQkFBcUIsQ0FPdkI7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsZ0JBQWdCLENBQ3BDLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQ25CLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLEVBQUUsR0FDVixPQUFPLENBQUM7SUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFBQyxLQUFLLEVBQUUsT0FBTyxDQUFBO0NBQUUsQ0FBQyxDQUt4QyJ9
|
package/dest/test/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAG/G,OAAO,EAAe,eAAe,EAAE,KAAK,EAAE,EAAoC,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE7F;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAG/G,OAAO,EAAe,eAAe,EAAE,KAAK,EAAE,EAAoC,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE7F;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAInE;AAED;;GAEG;AACH,wBAAuB,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAInF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAGpF;AAuBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAUvF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,mBAAmB,EAAE,SAAS,EAC9B,cAAc,CAAC,EAAE,SAAS,EAC1B,qBAAqB,GAAE,MAAW,GACjC,kBAAkB,CASpB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,EAClB,qBAAqB,GAAE,MAAW,GACjC,qBAAqB,CAOvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EACnB,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,EAAE,GACV,OAAO,CAAC;IAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAKxC"}
|
package/dest/test/utils.js
CHANGED
|
@@ -36,6 +36,7 @@ export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint
|
|
|
36
36
|
*/ export function mockPendingTxs(p2p, txs) {
|
|
37
37
|
p2p.getPendingTxCount.mockResolvedValue(txs.length);
|
|
38
38
|
p2p.iteratePendingTxs.mockImplementation(()=>mockTxIterator(Promise.resolve(txs)));
|
|
39
|
+
p2p.iterateEligiblePendingTxs.mockImplementation(()=>mockTxIterator(Promise.resolve(txs)));
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
41
42
|
* Creates an async iterator for transactions
|
|
@@ -67,10 +68,10 @@ export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint
|
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
69
70
|
* Creates a checkpoint proposal from a block and signature
|
|
70
|
-
*/ export function createCheckpointProposal(block, checkpointSignature, blockSignature) {
|
|
71
|
+
*/ export function createCheckpointProposal(block, checkpointSignature, blockSignature, feeAssetPriceModifier = 0n) {
|
|
71
72
|
const txHashes = block.body.txEffects.map((tx)=>tx.txHash);
|
|
72
73
|
const checkpointHeader = createCheckpointHeaderFromBlock(block);
|
|
73
|
-
return new CheckpointProposal(checkpointHeader, block.archive.root, checkpointSignature, {
|
|
74
|
+
return new CheckpointProposal(checkpointHeader, block.archive.root, feeAssetPriceModifier, checkpointSignature, {
|
|
74
75
|
blockHeader: block.header,
|
|
75
76
|
indexWithinCheckpoint: block.indexWithinCheckpoint,
|
|
76
77
|
txHashes,
|
|
@@ -81,9 +82,9 @@ export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint
|
|
|
81
82
|
* Creates a checkpoint attestation from a block and signature.
|
|
82
83
|
* Note: We manually set the sender since we use random signatures in tests.
|
|
83
84
|
* In production, the sender is recovered from the signature.
|
|
84
|
-
*/ export function createCheckpointAttestation(block, signature, sender) {
|
|
85
|
+
*/ export function createCheckpointAttestation(block, signature, sender, feeAssetPriceModifier = 0n) {
|
|
85
86
|
const checkpointHeader = createCheckpointHeaderFromBlock(block);
|
|
86
|
-
const payload = new ConsensusPayload(checkpointHeader, block.archive.root);
|
|
87
|
+
const payload = new ConsensusPayload(checkpointHeader, block.archive.root, feeAssetPriceModifier);
|
|
87
88
|
const attestation = new CheckpointAttestation(payload, signature, signature);
|
|
88
89
|
// Set sender directly for testing (bypasses signature recovery)
|
|
89
90
|
attestation.sender = sender;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.8f9871590",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -26,38 +26,38 @@
|
|
|
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": "0.0.1-commit.
|
|
30
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
31
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
32
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
33
|
-
"@aztec/constants": "0.0.1-commit.
|
|
34
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
35
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
36
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
37
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
38
|
-
"@aztec/merkle-tree": "0.0.1-commit.
|
|
39
|
-
"@aztec/node-keystore": "0.0.1-commit.
|
|
40
|
-
"@aztec/noir-acvm_js": "0.0.1-commit.
|
|
41
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
43
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
44
|
-
"@aztec/p2p": "0.0.1-commit.
|
|
45
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
46
|
-
"@aztec/prover-client": "0.0.1-commit.
|
|
47
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
48
|
-
"@aztec/slasher": "0.0.1-commit.
|
|
49
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
50
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
51
|
-
"@aztec/validator-client": "0.0.1-commit.
|
|
52
|
-
"@aztec/validator-ha-signer": "0.0.1-commit.
|
|
53
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
29
|
+
"@aztec/aztec.js": "0.0.1-commit.8f9871590",
|
|
30
|
+
"@aztec/bb-prover": "0.0.1-commit.8f9871590",
|
|
31
|
+
"@aztec/blob-client": "0.0.1-commit.8f9871590",
|
|
32
|
+
"@aztec/blob-lib": "0.0.1-commit.8f9871590",
|
|
33
|
+
"@aztec/constants": "0.0.1-commit.8f9871590",
|
|
34
|
+
"@aztec/epoch-cache": "0.0.1-commit.8f9871590",
|
|
35
|
+
"@aztec/ethereum": "0.0.1-commit.8f9871590",
|
|
36
|
+
"@aztec/foundation": "0.0.1-commit.8f9871590",
|
|
37
|
+
"@aztec/l1-artifacts": "0.0.1-commit.8f9871590",
|
|
38
|
+
"@aztec/merkle-tree": "0.0.1-commit.8f9871590",
|
|
39
|
+
"@aztec/node-keystore": "0.0.1-commit.8f9871590",
|
|
40
|
+
"@aztec/noir-acvm_js": "0.0.1-commit.8f9871590",
|
|
41
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.8f9871590",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.8f9871590",
|
|
43
|
+
"@aztec/noir-types": "0.0.1-commit.8f9871590",
|
|
44
|
+
"@aztec/p2p": "0.0.1-commit.8f9871590",
|
|
45
|
+
"@aztec/protocol-contracts": "0.0.1-commit.8f9871590",
|
|
46
|
+
"@aztec/prover-client": "0.0.1-commit.8f9871590",
|
|
47
|
+
"@aztec/simulator": "0.0.1-commit.8f9871590",
|
|
48
|
+
"@aztec/slasher": "0.0.1-commit.8f9871590",
|
|
49
|
+
"@aztec/stdlib": "0.0.1-commit.8f9871590",
|
|
50
|
+
"@aztec/telemetry-client": "0.0.1-commit.8f9871590",
|
|
51
|
+
"@aztec/validator-client": "0.0.1-commit.8f9871590",
|
|
52
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.8f9871590",
|
|
53
|
+
"@aztec/world-state": "0.0.1-commit.8f9871590",
|
|
54
54
|
"lodash.chunk": "^4.2.0",
|
|
55
55
|
"tslib": "^2.4.0",
|
|
56
56
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
60
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
59
|
+
"@aztec/archiver": "0.0.1-commit.8f9871590",
|
|
60
|
+
"@aztec/kv-store": "0.0.1-commit.8f9871590",
|
|
61
61
|
"@electric-sql/pglite": "^0.3.14",
|
|
62
62
|
"@jest/globals": "^30.0.0",
|
|
63
63
|
"@types/jest": "^30.0.0",
|
package/src/config.ts
CHANGED
|
@@ -11,8 +11,14 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
11
11
|
import { type KeyStoreConfig, keyStoreConfigMappings } from '@aztec/node-keystore/config';
|
|
12
12
|
import { type P2PConfig, p2pConfigMappings } from '@aztec/p2p/config';
|
|
13
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
type ChainConfig,
|
|
16
|
+
type SequencerConfig,
|
|
17
|
+
chainConfigMappings,
|
|
18
|
+
sharedSequencerConfigMappings,
|
|
19
|
+
} from '@aztec/stdlib/config';
|
|
15
20
|
import type { ResolvedSequencerConfig } from '@aztec/stdlib/interfaces/server';
|
|
21
|
+
import { DEFAULT_P2P_PROPAGATION_TIME } from '@aztec/stdlib/timetable';
|
|
16
22
|
import { type ValidatorClientConfig, validatorClientConfigMappings } from '@aztec/validator-client/config';
|
|
17
23
|
|
|
18
24
|
import {
|
|
@@ -25,8 +31,6 @@ import {
|
|
|
25
31
|
export * from './publisher/config.js';
|
|
26
32
|
export type { SequencerConfig };
|
|
27
33
|
|
|
28
|
-
export const DEFAULT_ATTESTATION_PROPAGATION_TIME = 2;
|
|
29
|
-
|
|
30
34
|
/**
|
|
31
35
|
* Default values for SequencerConfig.
|
|
32
36
|
* Centralized location for all sequencer configuration defaults.
|
|
@@ -41,7 +45,7 @@ export const DefaultSequencerConfig: ResolvedSequencerConfig = {
|
|
|
41
45
|
maxDABlockGas: 10e9,
|
|
42
46
|
maxBlockSizeInBytes: 1024 * 1024,
|
|
43
47
|
enforceTimeTable: true,
|
|
44
|
-
attestationPropagationTime:
|
|
48
|
+
attestationPropagationTime: DEFAULT_P2P_PROPAGATION_TIME,
|
|
45
49
|
secondsBeforeInvalidatingBlockAsCommitteeMember: 144, // 12 L1 blocks
|
|
46
50
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: 432, // 36 L1 blocks
|
|
47
51
|
skipCollectingAttestations: false,
|
|
@@ -191,13 +195,7 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
191
195
|
description: 'Shuffle attestation ordering to create invalid ordering (for testing only)',
|
|
192
196
|
...booleanConfigHelper(DefaultSequencerConfig.shuffleAttestationOrdering),
|
|
193
197
|
},
|
|
194
|
-
|
|
195
|
-
env: 'SEQ_BLOCK_DURATION_MS',
|
|
196
|
-
description:
|
|
197
|
-
'Duration per block in milliseconds when building multiple blocks per slot. ' +
|
|
198
|
-
'If undefined (default), builds a single block per slot using the full slot duration.',
|
|
199
|
-
parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
|
|
200
|
-
},
|
|
198
|
+
...sharedSequencerConfigMappings,
|
|
201
199
|
buildCheckpointIfEmpty: {
|
|
202
200
|
env: 'SEQ_BUILD_CHECKPOINT_IF_EMPTY',
|
|
203
201
|
description: 'Have sequencer build and publish an empty checkpoint if there are no txs',
|
|
@@ -4,6 +4,7 @@ import type { EpochCache } from '@aztec/epoch-cache';
|
|
|
4
4
|
import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
5
5
|
import {
|
|
6
6
|
type EmpireSlashingProposerContract,
|
|
7
|
+
FeeAssetPriceOracle,
|
|
7
8
|
type GovernanceProposerContract,
|
|
8
9
|
type IEmpireBase,
|
|
9
10
|
MULTI_CALL_3_ADDRESS,
|
|
@@ -60,6 +61,8 @@ type L1ProcessArgs = {
|
|
|
60
61
|
attestationsAndSigners: CommitteeAttestationsAndSigners;
|
|
61
62
|
/** Attestations and signers signature */
|
|
62
63
|
attestationsAndSignersSignature: Signature;
|
|
64
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
65
|
+
feeAssetPriceModifier: bigint;
|
|
63
66
|
};
|
|
64
67
|
|
|
65
68
|
export const Actions = [
|
|
@@ -123,6 +126,10 @@ export class SequencerPublisher {
|
|
|
123
126
|
|
|
124
127
|
/** L1 fee analyzer for fisherman mode */
|
|
125
128
|
private l1FeeAnalyzer?: L1FeeAnalyzer;
|
|
129
|
+
|
|
130
|
+
/** Fee asset price oracle for computing price modifiers from Uniswap V4 */
|
|
131
|
+
private feeAssetPriceOracle: FeeAssetPriceOracle;
|
|
132
|
+
|
|
126
133
|
// A CALL to a cold address is 2700 gas
|
|
127
134
|
public static MULTICALL_OVERHEAD_GAS_GUESS = 5000n;
|
|
128
135
|
|
|
@@ -188,12 +195,27 @@ export class SequencerPublisher {
|
|
|
188
195
|
createLogger('sequencer:publisher:fee-analyzer'),
|
|
189
196
|
);
|
|
190
197
|
}
|
|
198
|
+
|
|
199
|
+
// Initialize fee asset price oracle
|
|
200
|
+
this.feeAssetPriceOracle = new FeeAssetPriceOracle(
|
|
201
|
+
this.l1TxUtils.client,
|
|
202
|
+
this.rollupContract,
|
|
203
|
+
createLogger('sequencer:publisher:price-oracle'),
|
|
204
|
+
);
|
|
191
205
|
}
|
|
192
206
|
|
|
193
207
|
public getRollupContract(): RollupContract {
|
|
194
208
|
return this.rollupContract;
|
|
195
209
|
}
|
|
196
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Gets the fee asset price modifier from the oracle.
|
|
213
|
+
* Returns 0n if the oracle query fails.
|
|
214
|
+
*/
|
|
215
|
+
public getFeeAssetPriceModifier(): Promise<bigint> {
|
|
216
|
+
return this.feeAssetPriceOracle.computePriceModifier();
|
|
217
|
+
}
|
|
218
|
+
|
|
197
219
|
public getSenderAddress() {
|
|
198
220
|
return this.l1TxUtils.getSenderAddress();
|
|
199
221
|
}
|
|
@@ -642,7 +664,7 @@ export class SequencerPublisher {
|
|
|
642
664
|
header: checkpoint.header.toViem(),
|
|
643
665
|
archive: toHex(checkpoint.archive.root.toBuffer()),
|
|
644
666
|
oracleInput: {
|
|
645
|
-
feeAssetPriceModifier:
|
|
667
|
+
feeAssetPriceModifier: checkpoint.feeAssetPriceModifier,
|
|
646
668
|
},
|
|
647
669
|
},
|
|
648
670
|
attestationsAndSigners.getPackedAttestations(),
|
|
@@ -920,12 +942,13 @@ export class SequencerPublisher {
|
|
|
920
942
|
const blobFields = checkpoint.toBlobFields();
|
|
921
943
|
const blobs = getBlobsPerL1Block(blobFields);
|
|
922
944
|
|
|
923
|
-
const proposeTxArgs = {
|
|
945
|
+
const proposeTxArgs: L1ProcessArgs = {
|
|
924
946
|
header: checkpointHeader,
|
|
925
947
|
archive: checkpoint.archive.root.toBuffer(),
|
|
926
948
|
blobs,
|
|
927
949
|
attestationsAndSigners,
|
|
928
950
|
attestationsAndSignersSignature,
|
|
951
|
+
feeAssetPriceModifier: checkpoint.feeAssetPriceModifier,
|
|
929
952
|
};
|
|
930
953
|
|
|
931
954
|
let ts: bigint;
|
|
@@ -1113,8 +1136,7 @@ export class SequencerPublisher {
|
|
|
1113
1136
|
header: encodedData.header.toViem(),
|
|
1114
1137
|
archive: toHex(encodedData.archive),
|
|
1115
1138
|
oracleInput: {
|
|
1116
|
-
|
|
1117
|
-
feeAssetPriceModifier: 0n,
|
|
1139
|
+
feeAssetPriceModifier: encodedData.feeAssetPriceModifier,
|
|
1118
1140
|
},
|
|
1119
1141
|
},
|
|
1120
1142
|
encodedData.attestationsAndSigners.getPackedAttestations(),
|
|
@@ -1140,7 +1162,7 @@ export class SequencerPublisher {
|
|
|
1140
1162
|
readonly header: ViemHeader;
|
|
1141
1163
|
readonly archive: `0x${string}`;
|
|
1142
1164
|
readonly oracleInput: {
|
|
1143
|
-
readonly feeAssetPriceModifier:
|
|
1165
|
+
readonly feeAssetPriceModifier: bigint;
|
|
1144
1166
|
};
|
|
1145
1167
|
},
|
|
1146
1168
|
ViemCommitteeAttestations,
|
|
@@ -191,6 +191,9 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
191
191
|
);
|
|
192
192
|
const previousCheckpointOutHashes = previousCheckpoints.map(c => c.getCheckpointOutHash());
|
|
193
193
|
|
|
194
|
+
// Get the fee asset price modifier from the oracle
|
|
195
|
+
const feeAssetPriceModifier = await this.publisher.getFeeAssetPriceModifier();
|
|
196
|
+
|
|
194
197
|
// Create a long-lived forked world state for the checkpoint builder
|
|
195
198
|
using fork = await this.worldState.fork(this.syncedToBlockNumber, { closeDelayMs: 12_000 });
|
|
196
199
|
|
|
@@ -198,6 +201,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
198
201
|
const checkpointBuilder = await this.checkpointsBuilder.startCheckpoint(
|
|
199
202
|
this.checkpointNumber,
|
|
200
203
|
checkpointGlobalVariables,
|
|
204
|
+
feeAssetPriceModifier,
|
|
201
205
|
l1ToL2Messages,
|
|
202
206
|
previousCheckpointOutHashes,
|
|
203
207
|
fork,
|
|
@@ -275,6 +279,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
275
279
|
const proposal = await this.validatorClient.createCheckpointProposal(
|
|
276
280
|
checkpoint.header,
|
|
277
281
|
checkpoint.archive.root,
|
|
282
|
+
feeAssetPriceModifier,
|
|
278
283
|
lastBlock,
|
|
279
284
|
this.proposer,
|
|
280
285
|
checkpointProposalOptions,
|
|
@@ -516,7 +521,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
516
521
|
// Create iterator to pending txs. We filter out txs already included in previous blocks in the checkpoint
|
|
517
522
|
// just in case p2p failed to sync the provisional block and didn't get to remove those txs from the mempool yet.
|
|
518
523
|
const pendingTxs = filter(
|
|
519
|
-
this.p2pClient.
|
|
524
|
+
this.p2pClient.iterateEligiblePendingTxs(),
|
|
520
525
|
tx => !txHashesAlreadyIncluded.has(tx.txHash.toString()),
|
|
521
526
|
);
|
|
522
527
|
|
|
@@ -650,7 +655,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
650
655
|
`Waiting for enough txs to build block ${blockNumber} at index ${indexWithinCheckpoint} in slot ${this.slot} (have ${availableTxs} but need ${minTxs})`,
|
|
651
656
|
{ blockNumber, slot: this.slot, indexWithinCheckpoint },
|
|
652
657
|
);
|
|
653
|
-
await
|
|
658
|
+
await this.waitForTxsPollingInterval();
|
|
654
659
|
availableTxs = await this.p2pClient.getPendingTxCount();
|
|
655
660
|
}
|
|
656
661
|
|
|
@@ -779,7 +784,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
779
784
|
const failedTxData = failedTxs.map(fail => fail.tx);
|
|
780
785
|
const failedTxHashes = failedTxData.map(tx => tx.getTxHash());
|
|
781
786
|
this.log.verbose(`Dropping failed txs ${failedTxHashes.join(', ')}`);
|
|
782
|
-
await this.p2pClient.
|
|
787
|
+
await this.p2pClient.handleFailedExecution(failedTxHashes);
|
|
783
788
|
}
|
|
784
789
|
|
|
785
790
|
/**
|
|
@@ -857,6 +862,11 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
857
862
|
await sleepUntil(new Date(targetTimestamp * 1000), this.dateProvider.nowAsDate());
|
|
858
863
|
}
|
|
859
864
|
|
|
865
|
+
/** Waits the polling interval for transactions. Extracted for test overriding. */
|
|
866
|
+
protected async waitForTxsPollingInterval(): Promise<void> {
|
|
867
|
+
await sleep(TXS_POLLING_MS);
|
|
868
|
+
}
|
|
869
|
+
|
|
860
870
|
private getSlotStartBuildTimestamp(): number {
|
|
861
871
|
return getSlotStartBuildTimestamp(this.slot, this.l1Constants);
|
|
862
872
|
}
|
package/src/sequencer/metrics.ts
CHANGED
|
@@ -51,6 +51,10 @@ export class SequencerMetrics {
|
|
|
51
51
|
private fishermanTimeBeforeBlock: Histogram;
|
|
52
52
|
private fishermanPendingBlobTxCount: Histogram;
|
|
53
53
|
private fishermanIncludedBlobTxCount: Histogram;
|
|
54
|
+
private fishermanPendingBlobCount: Histogram;
|
|
55
|
+
private fishermanIncludedBlobCount: Histogram;
|
|
56
|
+
private fishermanBlockBlobsFull: UpDownCounter;
|
|
57
|
+
private fishermanMaxBlobCapacity: Histogram;
|
|
54
58
|
private fishermanCalculatedPriorityFee: Histogram;
|
|
55
59
|
private fishermanPriorityFeeDelta: Histogram;
|
|
56
60
|
private fishermanEstimatedCost: Histogram;
|
|
@@ -131,6 +135,7 @@ export class SequencerMetrics {
|
|
|
131
135
|
Metrics.FISHERMAN_FEE_ANALYSIS_WOULD_BE_INCLUDED,
|
|
132
136
|
{
|
|
133
137
|
[Attributes.OK]: [true, false],
|
|
138
|
+
[Attributes.BLOCK_FULL]: ['true', 'false'],
|
|
134
139
|
},
|
|
135
140
|
);
|
|
136
141
|
|
|
@@ -161,6 +166,20 @@ export class SequencerMetrics {
|
|
|
161
166
|
this.fishermanMinedBlobTxTotalCost = this.meter.createHistogram(
|
|
162
167
|
Metrics.FISHERMAN_FEE_ANALYSIS_MINED_BLOB_TX_TOTAL_COST,
|
|
163
168
|
);
|
|
169
|
+
|
|
170
|
+
this.fishermanPendingBlobCount = this.meter.createHistogram(Metrics.FISHERMAN_FEE_ANALYSIS_PENDING_BLOB_COUNT);
|
|
171
|
+
|
|
172
|
+
this.fishermanIncludedBlobCount = this.meter.createHistogram(Metrics.FISHERMAN_FEE_ANALYSIS_INCLUDED_BLOB_COUNT);
|
|
173
|
+
|
|
174
|
+
this.fishermanBlockBlobsFull = createUpDownCounterWithDefault(
|
|
175
|
+
this.meter,
|
|
176
|
+
Metrics.FISHERMAN_FEE_ANALYSIS_BLOCK_BLOBS_FULL,
|
|
177
|
+
{
|
|
178
|
+
[Attributes.OK]: [true, false],
|
|
179
|
+
},
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
this.fishermanMaxBlobCapacity = this.meter.createHistogram(Metrics.FISHERMAN_FEE_ANALYSIS_MAX_BLOB_CAPACITY);
|
|
164
183
|
}
|
|
165
184
|
|
|
166
185
|
public recordRequiredAttestations(requiredAttestationsCount: number, allowanceMs: number) {
|
|
@@ -281,10 +300,12 @@ export class SequencerMetrics {
|
|
|
281
300
|
|
|
282
301
|
// Record pending block snapshot data (once per strategy for comparison)
|
|
283
302
|
this.fishermanPendingBlobTxCount.record(analysis.pendingSnapshot.pendingBlobTxCount, strategyAttributes);
|
|
303
|
+
this.fishermanPendingBlobCount.record(analysis.pendingSnapshot.pendingBlobCount, strategyAttributes);
|
|
284
304
|
|
|
285
305
|
// Record mined block data if available
|
|
286
306
|
if (analysis.minedBlock) {
|
|
287
307
|
this.fishermanIncludedBlobTxCount.record(analysis.minedBlock.includedBlobTxCount, strategyAttributes);
|
|
308
|
+
this.fishermanIncludedBlobCount.record(analysis.minedBlock.includedBlobCount, strategyAttributes);
|
|
288
309
|
|
|
289
310
|
// Record actual fees from blob transactions in the mined block
|
|
290
311
|
for (const blobTx of analysis.minedBlock.includedBlobTxs) {
|
|
@@ -318,13 +339,28 @@ export class SequencerMetrics {
|
|
|
318
339
|
if (analysis.analysis) {
|
|
319
340
|
this.fishermanTimeBeforeBlock.record(Math.ceil(analysis.analysis.timeBeforeBlockMs), strategyAttributes);
|
|
320
341
|
|
|
342
|
+
// Record whether the block reached 100% blob capacity
|
|
343
|
+
if (analysis.analysis.blockBlobsFull) {
|
|
344
|
+
this.fishermanBlockBlobsFull.add(1, { ...strategyAttributes, [Attributes.OK]: true });
|
|
345
|
+
} else {
|
|
346
|
+
this.fishermanBlockBlobsFull.add(1, { ...strategyAttributes, [Attributes.OK]: false });
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// Record the max blob capacity for this block
|
|
350
|
+
this.fishermanMaxBlobCapacity.record(analysis.analysis.maxBlobCapacity, strategyAttributes);
|
|
351
|
+
|
|
321
352
|
// Record strategy-specific inclusion result
|
|
322
353
|
if (strategyResult.wouldBeIncluded !== undefined) {
|
|
354
|
+
const inclusionAttributes = {
|
|
355
|
+
...strategyAttributes,
|
|
356
|
+
[Attributes.BLOCK_FULL]: analysis.analysis.blockBlobsFull ? 'true' : 'false',
|
|
357
|
+
};
|
|
358
|
+
|
|
323
359
|
if (strategyResult.wouldBeIncluded) {
|
|
324
|
-
this.fishermanWouldBeIncluded.add(1, { ...
|
|
360
|
+
this.fishermanWouldBeIncluded.add(1, { ...inclusionAttributes, [Attributes.OK]: true });
|
|
325
361
|
} else {
|
|
326
362
|
this.fishermanWouldBeIncluded.add(1, {
|
|
327
|
-
...
|
|
363
|
+
...inclusionAttributes,
|
|
328
364
|
[Attributes.OK]: false,
|
|
329
365
|
...(strategyResult.exclusionReason && { [Attributes.ERROR_TYPE]: strategyResult.exclusionReason }),
|
|
330
366
|
});
|
|
@@ -334,17 +370,29 @@ export class SequencerMetrics {
|
|
|
334
370
|
// Record strategy-specific priority fee delta
|
|
335
371
|
if (strategyResult.priorityFeeDelta !== undefined) {
|
|
336
372
|
const priorityFeeDeltaGwei = Number(strategyResult.priorityFeeDelta) / 1e9;
|
|
337
|
-
|
|
373
|
+
const deltaAttributes = {
|
|
374
|
+
...strategyAttributes,
|
|
375
|
+
[Attributes.BLOCK_FULL]: analysis.analysis.blockBlobsFull ? 'true' : 'false',
|
|
376
|
+
};
|
|
377
|
+
this.fishermanPriorityFeeDelta.record(priorityFeeDeltaGwei, deltaAttributes);
|
|
338
378
|
}
|
|
339
379
|
|
|
340
380
|
// Record estimated cost if available
|
|
341
381
|
if (strategyResult.estimatedCostEth !== undefined) {
|
|
342
|
-
|
|
382
|
+
const costAttributes = {
|
|
383
|
+
...strategyAttributes,
|
|
384
|
+
[Attributes.BLOCK_FULL]: analysis.analysis.blockBlobsFull ? 'true' : 'false',
|
|
385
|
+
};
|
|
386
|
+
this.fishermanEstimatedCost.record(strategyResult.estimatedCostEth, costAttributes);
|
|
343
387
|
}
|
|
344
388
|
|
|
345
389
|
// Record estimated overpayment if available
|
|
346
390
|
if (strategyResult.estimatedOverpaymentEth !== undefined) {
|
|
347
|
-
|
|
391
|
+
const overpaymentAttributes = {
|
|
392
|
+
...strategyAttributes,
|
|
393
|
+
[Attributes.BLOCK_FULL]: analysis.analysis.blockBlobsFull ? 'true' : 'false',
|
|
394
|
+
};
|
|
395
|
+
this.fishermanEstimatedOverpayment.record(strategyResult.estimatedOverpaymentEth, overpaymentAttributes);
|
|
348
396
|
}
|
|
349
397
|
}
|
|
350
398
|
}
|
|
@@ -376,6 +376,7 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
376
376
|
}
|
|
377
377
|
|
|
378
378
|
this.lastSlotForCheckpointProposalJob = slot;
|
|
379
|
+
await this.p2pClient.prepareForSlot(slot);
|
|
379
380
|
this.log.info(`Preparing checkpoint proposal ${checkpointNumber} at slot ${slot}`, { ...logCtx, proposer });
|
|
380
381
|
|
|
381
382
|
// Create and return the checkpoint proposal job
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
+
import {
|
|
3
|
+
CHECKPOINT_ASSEMBLE_TIME,
|
|
4
|
+
CHECKPOINT_INITIALIZATION_TIME,
|
|
5
|
+
DEFAULT_P2P_PROPAGATION_TIME,
|
|
6
|
+
MIN_EXECUTION_TIME,
|
|
7
|
+
} from '@aztec/stdlib/timetable';
|
|
2
8
|
|
|
3
|
-
import { DEFAULT_ATTESTATION_PROPAGATION_TIME as DEFAULT_P2P_PROPAGATION_TIME } from '../config.js';
|
|
4
9
|
import { SequencerTooSlowError } from './errors.js';
|
|
5
10
|
import type { SequencerMetrics } from './metrics.js';
|
|
6
11
|
import { SequencerState } from './utils.js';
|
|
7
12
|
|
|
8
|
-
export const MIN_EXECUTION_TIME = 2;
|
|
9
|
-
export const CHECKPOINT_INITIALIZATION_TIME = 1;
|
|
10
|
-
export const CHECKPOINT_ASSEMBLE_TIME = 1;
|
|
11
|
-
|
|
12
13
|
export class SequencerTimetable {
|
|
13
14
|
/**
|
|
14
15
|
* How late into the slot can we be to start working. Computed as the total time needed for assembling and publishing a block,
|