@aztec/sequencer-client 4.0.0-nightly.20260107 → 4.0.0-nightly.20260110
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 +4 -4
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +11 -11
- package/dest/publisher/sequencer-publisher-metrics.d.ts +1 -1
- package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-metrics.js +15 -86
- package/dest/publisher/sequencer-publisher.d.ts +3 -2
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +398 -3
- package/dest/sequencer/checkpoint_proposal_job.d.ts +5 -3
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +429 -1
- package/dest/sequencer/metrics.d.ts +1 -1
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +27 -118
- package/dest/sequencer/sequencer.d.ts +2 -1
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +18 -6
- package/dest/test/utils.d.ts +1 -1
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +3 -4
- package/package.json +27 -27
- package/src/global_variable_builder/global_builder.ts +11 -11
- package/src/publisher/sequencer-publisher-metrics.ts +14 -70
- package/src/publisher/sequencer-publisher.ts +9 -3
- package/src/sequencer/checkpoint_proposal_job.ts +17 -1
- package/src/sequencer/metrics.ts +20 -128
- package/src/sequencer/sequencer.ts +5 -2
- package/src/test/utils.ts +4 -10
|
@@ -73,6 +73,7 @@ export declare class Sequencer extends Sequencer_base {
|
|
|
73
73
|
start(): void;
|
|
74
74
|
/** Stops the sequencer from building blocks and moves to STOPPED state. */
|
|
75
75
|
stop(): Promise<void>;
|
|
76
|
+
/** Main sequencer loop with a try/catch */
|
|
76
77
|
protected safeWork(): Promise<void>;
|
|
77
78
|
/** Returns the current state of the sequencer. */
|
|
78
79
|
status(): {
|
|
@@ -174,4 +175,4 @@ type SequencerSyncCheckResult = {
|
|
|
174
175
|
l1Timestamp: bigint;
|
|
175
176
|
pendingChainValidationStatus: ValidateBlockResult;
|
|
176
177
|
};
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL3NlcXVlbmNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQW9CLEtBQUssY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBZSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFDTCxLQUFLLHVCQUF1QixFQUM1QixLQUFLLGVBQWUsRUFFcEIsS0FBSyxzQkFBc0IsRUFDNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR25FLE9BQU8sRUFBYyxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBaUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2SCxPQUFPLEtBQUssRUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAe,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEzG,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EAEpB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,
|
|
1
|
+
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAe,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEzG,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EAEpB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,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,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,CAAC;;AAE1B;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,cAA8D;IAgCzF,SAAS,CAAC,gBAAgB,EAAE,yBAAyB;IACrD,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,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,kBAAkB,EAAE,0BAA0B;IACxD,SAAS,CAAC,WAAW,EAAE,wBAAwB;IAC/C,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,cAAc,EAAE,cAAc;IAExC,SAAS,CAAC,SAAS,EAAE,eAAe;IACpC,SAAS,CAAC,GAAG;IA9Cf,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAmB;IAElC,oGAAoG;IACpG,OAAO,CAAC,6BAA6B,CAAyB;IAE9D,qGAAqG;IACrG,OAAO,CAAC,gCAAgC,CAAyB;IAEjE,0CAA0C;IAC1C,OAAO,CAAC,sBAAsB,CAAyB;IAEvD,gFAAgF;IAChF,OAAO,CAAC,8BAA8B,CAA0B;IAEhE,+GAA+G;IAC/G,SAAS,CAAC,SAAS,EAAG,kBAAkB,CAAC;IAQzC,SAAS,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAEpD,+BAA+B;IAC/B,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAA0B;IAEnE,YACY,gBAAgB,EAAE,yBAAyB,EAC3C,eAAe,EAAE,eAAe,EAChC,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,kBAAkB,EAAE,0BAA0B,EAC9C,WAAW,EAAE,wBAAwB,EACrC,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EACxC,MAAM,EAAE,eAAe,EACb,SAAS,GAAE,eAAsC,EACjD,GAAG,yCAA4B,EAW1C;IAED,+EAA+E;IACxE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,QAgBnD;IAED,8FAA8F;IACjF,IAAI,kBAGhB;IAED,oDAAoD;IAC7C,KAAK,SASX;IAED,2EAA2E;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAOjC;IAED,2CAA2C;IAC3C,UAAgB,QAAQ,kBAqBvB;IAED,kDAAkD;IAC3C,MAAM;;MAEZ;IAED;;;;;;;OAOG;IACH,UACgB,IAAI,oCA4BnB;YAQa,yBAAyB;IAuIvC,SAAS,CAAC,2BAA2B,CACnC,IAAI,EAAE,UAAU,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,WAAW,EAChC,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,SAAS,EAAE,kBAAkB,EAC7B,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,sBAAsB,GAAG,SAAS,GAClD,qBAAqB,CA2BvB;IAED;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAChB,aAAa,EAAE,cAAc,EAC7B,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAC7B,IAAI,CA6BN;IAED;;;OAGG;IACH,UAAgB,SAAS,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CA8D/G;IAED;;;OAGG;IACH,UAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC,CAgC5F;IAED;;;OAGG;IACH,UACgB,oBAAoB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE1F;IAED;;;;;OAKG;IACH,UAAgB,yBAAyB,CACvC,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAoFf;IAED,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,kBAAkB;IAK1B,IAAW,iBAAiB,WAE3B;IAED,IAAW,aAAa,IAAI,MAAM,GAAG,SAAS,CAE7C;IAEM,gBAAgB,IAAI,sBAAsB,GAAG,SAAS,CAE5D;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,qBAAqB,iBAE3B;IAEM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEf;IAED,OAAO,KAAK,gBAAgB,GAE3B;CACF;AAED,KAAK,wBAAwB,GAAG;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,EAAE,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B,EAAE,mBAAmB,CAAC;CACnD,CAAC"}
|
|
@@ -370,7 +370,7 @@ function applyDecs2203RFactory() {
|
|
|
370
370
|
function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
371
371
|
return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
|
|
372
372
|
}
|
|
373
|
-
var _dec, _initProto;
|
|
373
|
+
var _dec, _dec1, _dec2, _initProto;
|
|
374
374
|
import { getKzg } from '@aztec/blob-lib';
|
|
375
375
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
376
376
|
import { NoCommitteeError } from '@aztec/ethereum/contracts';
|
|
@@ -384,7 +384,7 @@ import { getSlotAtTimestamp, getSlotStartBuildTimestamp } from '@aztec/stdlib/ep
|
|
|
384
384
|
import { SequencerConfigSchema } from '@aztec/stdlib/interfaces/server';
|
|
385
385
|
import { pickFromSchema } from '@aztec/stdlib/schemas';
|
|
386
386
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
387
|
-
import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
387
|
+
import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
388
388
|
import EventEmitter from 'node:events';
|
|
389
389
|
import { DefaultSequencerConfig } from '../config.js';
|
|
390
390
|
import { CheckpointProposalJob } from './checkpoint_proposal_job.js';
|
|
@@ -394,7 +394,9 @@ import { SequencerMetrics } from './metrics.js';
|
|
|
394
394
|
import { SequencerTimetable } from './timetable.js';
|
|
395
395
|
import { SequencerState } from './utils.js';
|
|
396
396
|
export { SequencerState };
|
|
397
|
-
_dec = trackSpan('Sequencer.work')
|
|
397
|
+
_dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpointProposal'), _dec2 = trackSpan('Seqeuencer.tryVoteWhenSyncFails', ({ slot })=>({
|
|
398
|
+
[Attributes.SLOT_NUMBER]: slot
|
|
399
|
+
}));
|
|
398
400
|
/**
|
|
399
401
|
* Sequencer client
|
|
400
402
|
* - Checks whether it is elected as proposer for the next slot
|
|
@@ -423,7 +425,17 @@ _dec = trackSpan('Sequencer.work');
|
|
|
423
425
|
[
|
|
424
426
|
_dec,
|
|
425
427
|
2,
|
|
426
|
-
"
|
|
428
|
+
"work"
|
|
429
|
+
],
|
|
430
|
+
[
|
|
431
|
+
_dec1,
|
|
432
|
+
2,
|
|
433
|
+
"prepareCheckpointProposal"
|
|
434
|
+
],
|
|
435
|
+
[
|
|
436
|
+
_dec2,
|
|
437
|
+
2,
|
|
438
|
+
"tryVoteWhenSyncFails"
|
|
427
439
|
]
|
|
428
440
|
], []));
|
|
429
441
|
}
|
|
@@ -489,7 +501,7 @@ _dec = trackSpan('Sequencer.work');
|
|
|
489
501
|
});
|
|
490
502
|
this.log.info('Stopped sequencer');
|
|
491
503
|
}
|
|
492
|
-
async safeWork() {
|
|
504
|
+
/** Main sequencer loop with a try/catch */ async safeWork() {
|
|
493
505
|
try {
|
|
494
506
|
await this.work();
|
|
495
507
|
} catch (err) {
|
|
@@ -667,7 +679,7 @@ _dec = trackSpan('Sequencer.work');
|
|
|
667
679
|
return this.createCheckpointProposalJob(slot, checkpointNumber, syncedTo.blockNumber, proposer, publisher, attestorAddress, invalidateBlock);
|
|
668
680
|
}
|
|
669
681
|
createCheckpointProposalJob(slot, checkpointNumber, syncedToBlockNumber, proposer, publisher, attestorAddress, invalidateBlock) {
|
|
670
|
-
return new CheckpointProposalJob(slot, checkpointNumber, syncedToBlockNumber, proposer, publisher, attestorAddress, invalidateBlock, this.validatorClient, this.globalsBuilder, this.p2pClient, this.worldState, this.l1ToL2MessageSource, this.checkpointsBuilder, this.l1Constants, this.config, this.timetable, this.slasherClient, this.epochCache, this.dateProvider, this.metrics, this, this.setState.bind(this), this.log);
|
|
682
|
+
return new CheckpointProposalJob(slot, checkpointNumber, syncedToBlockNumber, proposer, publisher, attestorAddress, invalidateBlock, this.validatorClient, this.globalsBuilder, this.p2pClient, this.worldState, this.l1ToL2MessageSource, this.checkpointsBuilder, this.l1Constants, this.config, this.timetable, this.slasherClient, this.epochCache, this.dateProvider, this.metrics, this, this.setState.bind(this), this.log, this.tracer);
|
|
671
683
|
}
|
|
672
684
|
/**
|
|
673
685
|
* Internal helper for setting the sequencer state and checks if we have enough time left in the slot to transition to the new state.
|
package/dest/test/utils.d.ts
CHANGED
|
@@ -46,4 +46,4 @@ export declare function setupTxsAndBlock(p2p: MockProxy<P2P>, globalVariables: G
|
|
|
46
46
|
txs: Tx[];
|
|
47
47
|
block: L2BlockNew;
|
|
48
48
|
}>;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUd0RixPQUFPLEVBQWUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFvQyxNQUFNLGtCQUFrQixDQUFDO0FBRTNHLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdGOztHQUVHO0FBQ0gsd0JBQXNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FNckU7QUFFRDs7R0FFRztBQUNILHdCQUFzQixTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQVVoRztBQUVEOztHQUVHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBR25FO0FBRUQ7O0dBRUc7QUFDSCx3QkFBdUIsY0FBYyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FJbkY7QUFFRDs7R0FFRztBQUNILHdCQUFnQixvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxHQUFHLG9CQUFvQixFQUFFLENBR3BGO0FBc0JEOztHQUVHO0FBQ0gsd0JBQWdCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsR0FBRyxhQUFhLENBSzFGO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsR0FBRyxnQkFBZ0IsQ0FRcEg7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsZ0JBQWdCLENBQ3BDLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQ25CLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLEVBQUUsR0FDVixPQUFPLENBQUM7SUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFBQyxLQUFLLEVBQUUsVUFBVSxDQUFBO0NBQUUsQ0FBQyxDQUszQyJ9
|
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,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAGtF,OAAO,
|
|
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,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAGtF,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,UAAU,CAAC,CAUhG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAGnE;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;AAsBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAK1F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAQpH;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,UAAU,CAAA;CAAE,CAAC,CAK3C"}
|
package/dest/test/utils.js
CHANGED
|
@@ -8,7 +8,7 @@ import { CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
|
|
|
8
8
|
import { BlockAttestation, BlockProposal, ConsensusPayload } from '@aztec/stdlib/p2p';
|
|
9
9
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
10
10
|
import { makeAppendOnlyTreeSnapshot, mockTxForRollup } from '@aztec/stdlib/testing';
|
|
11
|
-
import { BlockHeader,
|
|
11
|
+
import { BlockHeader, makeProcessedTxFromPrivateOnlyTx } from '@aztec/stdlib/tx';
|
|
12
12
|
// Re-export mock classes from their dedicated file
|
|
13
13
|
export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint_builder.js';
|
|
14
14
|
/**
|
|
@@ -54,11 +54,10 @@ export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint
|
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Creates a CheckpointHeader from an L2BlockNew for testing purposes.
|
|
57
|
-
* Uses mock values for
|
|
58
|
-
* L2BlockNew doesn't have these fields.
|
|
57
|
+
* Uses mock values for blockHeadersHash, blobsHash and inHash since L2BlockNew doesn't have these fields.
|
|
59
58
|
*/ function createCheckpointHeaderFromBlock(block) {
|
|
60
59
|
const gv = block.header.globalVariables;
|
|
61
|
-
return new CheckpointHeader(block.header.lastArchive.root, Fr.random(),
|
|
60
|
+
return new CheckpointHeader(block.header.lastArchive.root, Fr.random(), Fr.random(), Fr.random(), gv.slotNumber, gv.timestamp, gv.coinbase, gv.feeRecipient, gv.gasFees, block.header.totalManaUsed);
|
|
62
61
|
}
|
|
63
62
|
/**
|
|
64
63
|
* Creates a block proposal from a block and signature
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "4.0.0-nightly.
|
|
3
|
+
"version": "4.0.0-nightly.20260110",
|
|
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": "4.0.0-nightly.
|
|
30
|
-
"@aztec/bb-prover": "4.0.0-nightly.
|
|
31
|
-
"@aztec/blob-client": "4.0.0-nightly.
|
|
32
|
-
"@aztec/blob-lib": "4.0.0-nightly.
|
|
33
|
-
"@aztec/constants": "4.0.0-nightly.
|
|
34
|
-
"@aztec/epoch-cache": "4.0.0-nightly.
|
|
35
|
-
"@aztec/ethereum": "4.0.0-nightly.
|
|
36
|
-
"@aztec/foundation": "4.0.0-nightly.
|
|
37
|
-
"@aztec/l1-artifacts": "4.0.0-nightly.
|
|
38
|
-
"@aztec/merkle-tree": "4.0.0-nightly.
|
|
39
|
-
"@aztec/node-keystore": "4.0.0-nightly.
|
|
40
|
-
"@aztec/noir-acvm_js": "4.0.0-nightly.
|
|
41
|
-
"@aztec/noir-contracts.js": "4.0.0-nightly.
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "4.0.0-nightly.
|
|
43
|
-
"@aztec/noir-types": "4.0.0-nightly.
|
|
44
|
-
"@aztec/p2p": "4.0.0-nightly.
|
|
45
|
-
"@aztec/protocol-contracts": "4.0.0-nightly.
|
|
46
|
-
"@aztec/prover-client": "4.0.0-nightly.
|
|
47
|
-
"@aztec/simulator": "4.0.0-nightly.
|
|
48
|
-
"@aztec/slasher": "4.0.0-nightly.
|
|
49
|
-
"@aztec/stdlib": "4.0.0-nightly.
|
|
50
|
-
"@aztec/telemetry-client": "4.0.0-nightly.
|
|
51
|
-
"@aztec/validator-client": "4.0.0-nightly.
|
|
52
|
-
"@aztec/world-state": "4.0.0-nightly.
|
|
29
|
+
"@aztec/aztec.js": "4.0.0-nightly.20260110",
|
|
30
|
+
"@aztec/bb-prover": "4.0.0-nightly.20260110",
|
|
31
|
+
"@aztec/blob-client": "4.0.0-nightly.20260110",
|
|
32
|
+
"@aztec/blob-lib": "4.0.0-nightly.20260110",
|
|
33
|
+
"@aztec/constants": "4.0.0-nightly.20260110",
|
|
34
|
+
"@aztec/epoch-cache": "4.0.0-nightly.20260110",
|
|
35
|
+
"@aztec/ethereum": "4.0.0-nightly.20260110",
|
|
36
|
+
"@aztec/foundation": "4.0.0-nightly.20260110",
|
|
37
|
+
"@aztec/l1-artifacts": "4.0.0-nightly.20260110",
|
|
38
|
+
"@aztec/merkle-tree": "4.0.0-nightly.20260110",
|
|
39
|
+
"@aztec/node-keystore": "4.0.0-nightly.20260110",
|
|
40
|
+
"@aztec/noir-acvm_js": "4.0.0-nightly.20260110",
|
|
41
|
+
"@aztec/noir-contracts.js": "4.0.0-nightly.20260110",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260110",
|
|
43
|
+
"@aztec/noir-types": "4.0.0-nightly.20260110",
|
|
44
|
+
"@aztec/p2p": "4.0.0-nightly.20260110",
|
|
45
|
+
"@aztec/protocol-contracts": "4.0.0-nightly.20260110",
|
|
46
|
+
"@aztec/prover-client": "4.0.0-nightly.20260110",
|
|
47
|
+
"@aztec/simulator": "4.0.0-nightly.20260110",
|
|
48
|
+
"@aztec/slasher": "4.0.0-nightly.20260110",
|
|
49
|
+
"@aztec/stdlib": "4.0.0-nightly.20260110",
|
|
50
|
+
"@aztec/telemetry-client": "4.0.0-nightly.20260110",
|
|
51
|
+
"@aztec/validator-client": "4.0.0-nightly.20260110",
|
|
52
|
+
"@aztec/world-state": "4.0.0-nightly.20260110",
|
|
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": "4.0.0-nightly.
|
|
59
|
-
"@aztec/kv-store": "4.0.0-nightly.
|
|
58
|
+
"@aztec/archiver": "4.0.0-nightly.20260110",
|
|
59
|
+
"@aztec/kv-store": "4.0.0-nightly.20260110",
|
|
60
60
|
"@jest/globals": "^30.0.0",
|
|
61
61
|
"@types/jest": "^30.0.0",
|
|
62
62
|
"@types/lodash.chunk": "^4.2.7",
|
|
@@ -23,7 +23,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
23
23
|
*/
|
|
24
24
|
export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
25
25
|
private log = createLogger('sequencer:global_variable_builder');
|
|
26
|
-
private
|
|
26
|
+
private currentMinFees: Promise<GasFees> = Promise.resolve(new GasFees(0, 0));
|
|
27
27
|
private currentL1BlockNumber: bigint | undefined = undefined;
|
|
28
28
|
|
|
29
29
|
private readonly rollupContract: RollupContract;
|
|
@@ -61,10 +61,10 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
|
-
* Computes the "current"
|
|
65
|
-
* @returns
|
|
64
|
+
* Computes the "current" min fees, e.g., the price that you currently should pay to get include in the next block
|
|
65
|
+
* @returns Min fees for the next block
|
|
66
66
|
*/
|
|
67
|
-
private async
|
|
67
|
+
private async computeCurrentMinFees(): Promise<GasFees> {
|
|
68
68
|
// Since this might be called in the middle of a slot where a block might have been published,
|
|
69
69
|
// we need to fetch the last block written, and estimate the earliest timestamp for the next block.
|
|
70
70
|
// The timestamp of that last block will act as a lower bound for the next block.
|
|
@@ -76,19 +76,19 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
76
76
|
const nextEthTimestamp = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
77
77
|
const timestamp = earliestTimestamp > nextEthTimestamp ? earliestTimestamp : nextEthTimestamp;
|
|
78
78
|
|
|
79
|
-
return new GasFees(0, await this.rollupContract.
|
|
79
|
+
return new GasFees(0, await this.rollupContract.getManaMinFeeAt(timestamp, true));
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
public async
|
|
82
|
+
public async getCurrentMinFees(): Promise<GasFees> {
|
|
83
83
|
// Get the current block number
|
|
84
84
|
const blockNumber = await this.publicClient.getBlockNumber();
|
|
85
85
|
|
|
86
|
-
// If the L1 block number has changed then chain a new promise to get the current
|
|
86
|
+
// If the L1 block number has changed then chain a new promise to get the current min fees
|
|
87
87
|
if (this.currentL1BlockNumber === undefined || blockNumber > this.currentL1BlockNumber) {
|
|
88
88
|
this.currentL1BlockNumber = blockNumber;
|
|
89
|
-
this.
|
|
89
|
+
this.currentMinFees = this.currentMinFees.then(() => this.computeCurrentMinFees());
|
|
90
90
|
}
|
|
91
|
-
return this.
|
|
91
|
+
return this.currentMinFees;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/**
|
|
@@ -128,9 +128,9 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
128
128
|
l1GenesisTime: this.l1GenesisTime,
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
-
// We can skip much of the logic in
|
|
131
|
+
// We can skip much of the logic in getCurrentMinFees since it we already check that we are not within a slot elsewhere.
|
|
132
132
|
// TODO(palla/mbps): Can we use a cached value here?
|
|
133
|
-
const gasFees = new GasFees(0, await this.rollupContract.
|
|
133
|
+
const gasFees = new GasFees(0, await this.rollupContract.getManaMinFeeAt(timestamp, true));
|
|
134
134
|
|
|
135
135
|
return { chainId, version, slotNumber, timestamp, coinbase, feeRecipient, gasFees };
|
|
136
136
|
}
|
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
Metrics,
|
|
8
8
|
type TelemetryClient,
|
|
9
9
|
type UpDownCounter,
|
|
10
|
-
ValueType,
|
|
11
10
|
} from '@aztec/telemetry-client';
|
|
12
11
|
|
|
13
12
|
import { formatEther } from 'viem/utils';
|
|
@@ -40,88 +39,33 @@ export class SequencerPublisherMetrics {
|
|
|
40
39
|
) {
|
|
41
40
|
const meter = client.getMeter(name);
|
|
42
41
|
|
|
43
|
-
this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE
|
|
44
|
-
description: 'The gas price used for transactions',
|
|
45
|
-
unit: 'gwei',
|
|
46
|
-
valueType: ValueType.DOUBLE,
|
|
47
|
-
});
|
|
42
|
+
this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE);
|
|
48
43
|
|
|
49
|
-
this.txCount = meter.createUpDownCounter(Metrics.L1_PUBLISHER_TX_COUNT
|
|
50
|
-
description: 'The number of transactions processed',
|
|
51
|
-
});
|
|
44
|
+
this.txCount = meter.createUpDownCounter(Metrics.L1_PUBLISHER_TX_COUNT);
|
|
52
45
|
|
|
53
|
-
this.txDuration = meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION
|
|
54
|
-
description: 'The duration of transaction processing',
|
|
55
|
-
unit: 'ms',
|
|
56
|
-
valueType: ValueType.INT,
|
|
57
|
-
});
|
|
46
|
+
this.txDuration = meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION);
|
|
58
47
|
|
|
59
|
-
this.txGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS
|
|
60
|
-
description: 'The gas consumed by transactions',
|
|
61
|
-
unit: 'gas',
|
|
62
|
-
valueType: ValueType.INT,
|
|
63
|
-
});
|
|
48
|
+
this.txGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS);
|
|
64
49
|
|
|
65
|
-
this.txCalldataSize = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE
|
|
66
|
-
description: 'The size of the calldata in transactions',
|
|
67
|
-
unit: 'By',
|
|
68
|
-
valueType: ValueType.INT,
|
|
69
|
-
});
|
|
50
|
+
this.txCalldataSize = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE);
|
|
70
51
|
|
|
71
|
-
this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS
|
|
72
|
-
description: 'The gas consumed by the calldata in transactions',
|
|
73
|
-
unit: 'gas',
|
|
74
|
-
valueType: ValueType.INT,
|
|
75
|
-
});
|
|
52
|
+
this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS);
|
|
76
53
|
|
|
77
|
-
this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED
|
|
78
|
-
description: 'The amount of blob gas used in transactions',
|
|
79
|
-
unit: 'gas',
|
|
80
|
-
valueType: ValueType.INT,
|
|
81
|
-
});
|
|
54
|
+
this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED);
|
|
82
55
|
|
|
83
|
-
this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST
|
|
84
|
-
description: 'The gas cost of blobs in transactions',
|
|
85
|
-
unit: 'gwei',
|
|
86
|
-
valueType: ValueType.INT,
|
|
87
|
-
});
|
|
56
|
+
this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST);
|
|
88
57
|
|
|
89
|
-
this.blobCountHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_COUNT
|
|
90
|
-
description: 'Number of blobs in L1 transactions',
|
|
91
|
-
unit: 'blobs',
|
|
92
|
-
valueType: ValueType.INT,
|
|
93
|
-
});
|
|
58
|
+
this.blobCountHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_COUNT);
|
|
94
59
|
|
|
95
|
-
this.blobInclusionBlocksHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_INCLUSION_BLOCKS
|
|
96
|
-
description: 'Number of L1 blocks between blob tx submission and inclusion',
|
|
97
|
-
unit: 'blocks',
|
|
98
|
-
valueType: ValueType.INT,
|
|
99
|
-
});
|
|
60
|
+
this.blobInclusionBlocksHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_INCLUSION_BLOCKS);
|
|
100
61
|
|
|
101
|
-
this.blobTxSuccessCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_SUCCESS
|
|
102
|
-
description: 'Number of successful L1 transactions with blobs',
|
|
103
|
-
});
|
|
62
|
+
this.blobTxSuccessCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_SUCCESS);
|
|
104
63
|
|
|
105
|
-
this.blobTxFailureCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_FAILURE
|
|
106
|
-
description: 'Number of failed L1 transactions with blobs',
|
|
107
|
-
});
|
|
64
|
+
this.blobTxFailureCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_FAILURE);
|
|
108
65
|
|
|
109
|
-
this.txTotalFee = meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE
|
|
110
|
-
description: 'How much L1 tx costs',
|
|
111
|
-
unit: 'eth',
|
|
112
|
-
valueType: ValueType.DOUBLE,
|
|
113
|
-
advice: {
|
|
114
|
-
explicitBucketBoundaries: [
|
|
115
|
-
0.001, 0.002, 0.004, 0.008, 0.01, 0.02, 0.04, 0.08, 0.1, 0.2, 0.4, 0.8, 1, 1.2, 1.4, 1.8, 2,
|
|
116
|
-
],
|
|
117
|
-
},
|
|
118
|
-
});
|
|
66
|
+
this.txTotalFee = meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE);
|
|
119
67
|
|
|
120
|
-
this.senderBalance = meter.createGauge(Metrics.L1_PUBLISHER_BALANCE
|
|
121
|
-
unit: 'eth',
|
|
122
|
-
description: 'The balance of the sender address',
|
|
123
|
-
valueType: ValueType.DOUBLE,
|
|
124
|
-
});
|
|
68
|
+
this.senderBalance = meter.createGauge(Metrics.L1_PUBLISHER_BALANCE);
|
|
125
69
|
}
|
|
126
70
|
|
|
127
71
|
recordFailedTx(txType: L1TxType) {
|
|
@@ -40,7 +40,7 @@ import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
|
40
40
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
41
41
|
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
42
42
|
import type { L1PublishCheckpointStats } from '@aztec/stdlib/stats';
|
|
43
|
-
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
43
|
+
import { type TelemetryClient, type Tracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
44
44
|
|
|
45
45
|
import { type StateOverride, type TransactionReceipt, type TypedDataDefinition, encodeFunctionData, toHex } from 'viem';
|
|
46
46
|
|
|
@@ -139,6 +139,8 @@ export class SequencerPublisher {
|
|
|
139
139
|
public slashingProposerContract: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
|
|
140
140
|
public slashFactoryContract: SlashFactoryContract;
|
|
141
141
|
|
|
142
|
+
public readonly tracer: Tracer;
|
|
143
|
+
|
|
142
144
|
protected requests: RequestWithExpiry[] = [];
|
|
143
145
|
|
|
144
146
|
constructor(
|
|
@@ -167,6 +169,7 @@ export class SequencerPublisher {
|
|
|
167
169
|
|
|
168
170
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
169
171
|
this.metrics = deps.metrics ?? new SequencerPublisherMetrics(telemetry, 'SequencerPublisher');
|
|
172
|
+
this.tracer = telemetry.getTracer('SequencerPublisher');
|
|
170
173
|
this.l1TxUtils = deps.l1TxUtils;
|
|
171
174
|
|
|
172
175
|
this.rollupContract = deps.rollupContract;
|
|
@@ -296,6 +299,7 @@ export class SequencerPublisher {
|
|
|
296
299
|
* - a receipt and errorMsg if it failed on L1
|
|
297
300
|
* - undefined if no valid requests are found OR the tx failed to send.
|
|
298
301
|
*/
|
|
302
|
+
@trackSpan('SequencerPublisher.sendRequests')
|
|
299
303
|
public async sendRequests() {
|
|
300
304
|
const requestsToProcess = [...this.requests];
|
|
301
305
|
this.requests = [];
|
|
@@ -442,10 +446,11 @@ export class SequencerPublisher {
|
|
|
442
446
|
* It will throw if the block header is invalid.
|
|
443
447
|
* @param header - The block header to validate
|
|
444
448
|
*/
|
|
449
|
+
@trackSpan('SequencerPublisher.validateBlockHeader')
|
|
445
450
|
public async validateBlockHeader(
|
|
446
451
|
header: CheckpointHeader,
|
|
447
452
|
opts?: { forcePendingBlockNumber: BlockNumber | undefined },
|
|
448
|
-
) {
|
|
453
|
+
): Promise<void> {
|
|
449
454
|
const flags = { ignoreDA: true, ignoreSignatures: true };
|
|
450
455
|
|
|
451
456
|
const args = [
|
|
@@ -454,7 +459,7 @@ export class SequencerPublisher {
|
|
|
454
459
|
[], // no signers
|
|
455
460
|
Signature.empty().toViemSignature(),
|
|
456
461
|
`0x${'0'.repeat(64)}`, // 32 empty bytes
|
|
457
|
-
header.
|
|
462
|
+
header.blobsHash.toString(),
|
|
458
463
|
flags,
|
|
459
464
|
] as const;
|
|
460
465
|
|
|
@@ -588,6 +593,7 @@ export class SequencerPublisher {
|
|
|
588
593
|
}
|
|
589
594
|
|
|
590
595
|
/** Simulates `propose` to make sure that the checkpoint is valid for submission */
|
|
596
|
+
@trackSpan('SequencerPublisher.validateCheckpointForSubmission')
|
|
591
597
|
public async validateCheckpointForSubmission(
|
|
592
598
|
checkpoint: Checkpoint,
|
|
593
599
|
attestationsAndSigners: CommitteeAttestationsAndSigners,
|
|
@@ -32,6 +32,7 @@ import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
|
32
32
|
import type { L2BlockBuiltStats } from '@aztec/stdlib/stats';
|
|
33
33
|
import { type FailedTx, Tx } from '@aztec/stdlib/tx';
|
|
34
34
|
import { AttestationTimeoutError } from '@aztec/stdlib/validators';
|
|
35
|
+
import { Attributes, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
35
36
|
import type { ValidatorClient } from '@aztec/validator-client';
|
|
36
37
|
|
|
37
38
|
import type { GlobalVariableBuilder } from '../global_variable_builder/global_builder.js';
|
|
@@ -54,7 +55,7 @@ const TXS_POLLING_MS = 500;
|
|
|
54
55
|
* as well as enqueueing votes for slashing and governance proposals. This class is created from
|
|
55
56
|
* the Sequencer once the check for being the proposer for the slot has succeeded.
|
|
56
57
|
*/
|
|
57
|
-
export class CheckpointProposalJob {
|
|
58
|
+
export class CheckpointProposalJob implements Traceable {
|
|
58
59
|
constructor(
|
|
59
60
|
private readonly slot: SlotNumber,
|
|
60
61
|
private readonly checkpointNumber: CheckpointNumber,
|
|
@@ -80,12 +81,14 @@ export class CheckpointProposalJob {
|
|
|
80
81
|
private readonly eventEmitter: TypedEventEmitter<SequencerEvents>,
|
|
81
82
|
private readonly setStateFn: (state: SequencerState, slot?: SlotNumber) => void,
|
|
82
83
|
protected readonly log: Logger,
|
|
84
|
+
public readonly tracer: Tracer,
|
|
83
85
|
) {}
|
|
84
86
|
|
|
85
87
|
/**
|
|
86
88
|
* Executes the checkpoint proposal job.
|
|
87
89
|
* Returns the published checkpoint if successful, undefined otherwise.
|
|
88
90
|
*/
|
|
91
|
+
@trackSpan('CheckpointProposalJob.execute')
|
|
89
92
|
public async execute(): Promise<Checkpoint | undefined> {
|
|
90
93
|
// Enqueue governance and slashing votes (returns promises that will be awaited later)
|
|
91
94
|
// In fisherman mode, we simulate slashing but don't actually publish to L1
|
|
@@ -132,6 +135,13 @@ export class CheckpointProposalJob {
|
|
|
132
135
|
}
|
|
133
136
|
}
|
|
134
137
|
|
|
138
|
+
@trackSpan('CheckpointProposalJob.proposeCheckpoint', function () {
|
|
139
|
+
return {
|
|
140
|
+
// nullish operator needed for tests
|
|
141
|
+
[Attributes.COINBASE]: this.validatorClient.getCoinbaseForAttestor(this.attestorAddress)?.toString(),
|
|
142
|
+
[Attributes.SLOT_NUMBER]: this.slot,
|
|
143
|
+
};
|
|
144
|
+
})
|
|
135
145
|
private async proposeCheckpoint(): Promise<Checkpoint | undefined> {
|
|
136
146
|
try {
|
|
137
147
|
// Get operator configured coinbase and fee recipient for this attestor
|
|
@@ -248,6 +258,7 @@ export class CheckpointProposalJob {
|
|
|
248
258
|
/**
|
|
249
259
|
* Builds blocks for a checkpoint within the current slot.
|
|
250
260
|
*/
|
|
261
|
+
@trackSpan('CheckpointProposalJob.buildBlocksForCheckpoint')
|
|
251
262
|
private async buildBlocksForCheckpoint(
|
|
252
263
|
checkpointBuilder: CheckpointBuilder,
|
|
253
264
|
timestamp: bigint,
|
|
@@ -366,6 +377,7 @@ export class CheckpointProposalJob {
|
|
|
366
377
|
}
|
|
367
378
|
|
|
368
379
|
/** Sleeps until it is time to produce the next block in the slot */
|
|
380
|
+
@trackSpan('CheckpointProposalJob.waitUntilNextSubslot')
|
|
369
381
|
private async waitUntilNextSubslot(nextSubslotStart: number) {
|
|
370
382
|
this.setStateFn(SequencerState.WAITING_UNTIL_NEXT_BLOCK, this.slot);
|
|
371
383
|
this.log.verbose(`Waiting until time for the next block at ${nextSubslotStart}s into slot`, { slot: this.slot });
|
|
@@ -373,6 +385,7 @@ export class CheckpointProposalJob {
|
|
|
373
385
|
}
|
|
374
386
|
|
|
375
387
|
/** Builds a single block. Called from the main block building loop. */
|
|
388
|
+
@trackSpan('CheckpointProposalJob.buildSingleBlock')
|
|
376
389
|
private async buildSingleBlock(
|
|
377
390
|
checkpointBuilder: CheckpointBuilder,
|
|
378
391
|
opts: {
|
|
@@ -484,6 +497,7 @@ export class CheckpointProposalJob {
|
|
|
484
497
|
}
|
|
485
498
|
|
|
486
499
|
/** Waits until minTxs are available on the pool for building a block. */
|
|
500
|
+
@trackSpan('CheckpointProposalJob.waitForMinTxs')
|
|
487
501
|
private async waitForMinTxs(opts: {
|
|
488
502
|
forceCreate?: boolean;
|
|
489
503
|
blockNumber: BlockNumber;
|
|
@@ -524,6 +538,7 @@ export class CheckpointProposalJob {
|
|
|
524
538
|
* Waits for enough attestations to be collected via p2p.
|
|
525
539
|
* This is run after all blocks for the checkpoint have been built.
|
|
526
540
|
*/
|
|
541
|
+
@trackSpan('CheckpointProposalJob.waitForAttestations')
|
|
527
542
|
private async waitForAttestations(proposal: BlockProposal): Promise<CommitteeAttestationsAndSigners> {
|
|
528
543
|
if (this.config.fishermanMode) {
|
|
529
544
|
this.log.debug('Skipping attestation collection in fisherman mode');
|
|
@@ -685,6 +700,7 @@ export class CheckpointProposalJob {
|
|
|
685
700
|
}
|
|
686
701
|
|
|
687
702
|
/** Waits until a specific time within the current slot */
|
|
703
|
+
@trackSpan('CheckpointProposalJob.waitUntilTimeInSlot')
|
|
688
704
|
protected async waitUntilTimeInSlot(targetSecondsIntoSlot: number): Promise<void> {
|
|
689
705
|
const slotStartTimestamp = this.getSlotStartBuildTimestamp();
|
|
690
706
|
const targetTimestamp = slotStartTimestamp + targetSecondsIntoSlot;
|