@aztec/sequencer-client 0.0.1-commit.b2a5d0dd1 → 0.0.1-commit.b3d3157a
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/README.md +281 -21
- package/dest/client/sequencer-client.d.ts +3 -3
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +6 -6
- package/dest/config.d.ts +6 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +33 -10
- package/dest/global_variable_builder/fee_provider.js +1 -1
- package/dest/global_variable_builder/global_builder.d.ts +2 -3
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +1 -1
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/publisher/config.d.ts +3 -3
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/sequencer-bundle-simulator.d.ts +96 -0
- package/dest/publisher/sequencer-bundle-simulator.d.ts.map +1 -0
- package/dest/publisher/sequencer-bundle-simulator.js +198 -0
- package/dest/publisher/sequencer-publisher.d.ts +36 -36
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +271 -500
- package/dest/sequencer/automine/automine_factory.d.ts +54 -0
- package/dest/sequencer/automine/automine_factory.d.ts.map +1 -0
- package/dest/sequencer/automine/automine_factory.js +84 -0
- package/dest/sequencer/automine/automine_sequencer.d.ts +151 -0
- package/dest/sequencer/automine/automine_sequencer.d.ts.map +1 -0
- package/dest/sequencer/automine/automine_sequencer.js +509 -0
- package/dest/sequencer/chain_state_overrides.d.ts +52 -16
- package/dest/sequencer/chain_state_overrides.d.ts.map +1 -1
- package/dest/sequencer/chain_state_overrides.js +86 -27
- package/dest/sequencer/checkpoint_proposal_job.d.ts +24 -6
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +373 -83
- package/dest/sequencer/events.d.ts +42 -2
- package/dest/sequencer/events.d.ts.map +1 -1
- package/dest/sequencer/index.d.ts +3 -1
- package/dest/sequencer/index.d.ts.map +1 -1
- package/dest/sequencer/index.js +2 -0
- package/dest/sequencer/metrics.d.ts +3 -1
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +7 -0
- package/dest/sequencer/sequencer.d.ts +44 -9
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +256 -79
- package/dest/sequencer/timetable.d.ts +3 -6
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +3 -7
- package/dest/sequencer/types.d.ts +2 -2
- package/dest/sequencer/types.d.ts.map +1 -1
- package/dest/test/utils.d.ts +1 -1
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +7 -6
- package/package.json +27 -27
- package/src/client/sequencer-client.ts +12 -7
- package/src/config.ts +38 -10
- package/src/global_variable_builder/fee_provider.ts +1 -1
- package/src/global_variable_builder/global_builder.ts +2 -3
- package/src/index.ts +10 -1
- package/src/publisher/config.ts +2 -2
- package/src/publisher/sequencer-bundle-simulator.ts +254 -0
- package/src/publisher/sequencer-publisher.ts +286 -521
- package/src/sequencer/README.md +162 -520
- package/src/sequencer/automine/README.md +46 -0
- package/src/sequencer/automine/automine_factory.ts +145 -0
- package/src/sequencer/automine/automine_sequencer.ts +595 -0
- package/src/sequencer/chain_state_overrides.ts +133 -58
- package/src/sequencer/checkpoint_proposal_job.ts +420 -100
- package/src/sequencer/events.ts +46 -2
- package/src/sequencer/index.ts +2 -0
- package/src/sequencer/metrics.ts +9 -0
- package/src/sequencer/sequencer.ts +284 -95
- package/src/sequencer/timetable.ts +2 -9
- package/src/sequencer/types.ts +1 -1
- package/src/test/utils.ts +28 -10
package/src/sequencer/events.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
|
+
import type { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { BlockHash } from '@aztec/stdlib/block';
|
|
2
3
|
|
|
3
4
|
import type { Action } from '../publisher/sequencer-publisher.js';
|
|
4
5
|
import type { SequencerState } from './utils.js';
|
|
@@ -9,12 +10,55 @@ export type SequencerEvents = {
|
|
|
9
10
|
newState: SequencerState;
|
|
10
11
|
secondsIntoSlot?: number;
|
|
11
12
|
slot?: SlotNumber;
|
|
13
|
+
timeReferenceSlot?: SlotNumber;
|
|
14
|
+
}) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Emitted by the sequencer once it has decided it is going to attempt to build a
|
|
17
|
+
* checkpoint for `targetSlot`, after computing the L1 simulation overrides used by
|
|
18
|
+
* `canProposeAt`. Fired BEFORE the L1 simulation is run, so consumers can observe the
|
|
19
|
+
* decision regardless of whether the propose ultimately lands.
|
|
20
|
+
*
|
|
21
|
+
* - `hadProposedParent` indicates whether the build saw a proposed (pipelined) parent
|
|
22
|
+
* checkpoint that hasn't landed on L1 yet.
|
|
23
|
+
* - `provenOverride` is the assumed proven checkpoint number pinned for the L1
|
|
24
|
+
* simulation. The plan always pins both chain tips to short-circuit `canPruneAtTime`,
|
|
25
|
+
* so this is populated whenever a simulation plan was built — the value either
|
|
26
|
+
* matches the on-chain proven snapshot (defensive pin) or the assumed-proven
|
|
27
|
+
* checkpoint when building optimistically across a pruning boundary.
|
|
28
|
+
* - `simulatedPending` is the pending checkpoint passed to L1 simulation. The plan
|
|
29
|
+
* always pins both chain tips to short-circuit `canPruneAtTime`, so this reflects
|
|
30
|
+
* either the pipelined/invalidated tip or the on-chain pending snapshot.
|
|
31
|
+
*/
|
|
32
|
+
['preparing-checkpoint']: (args: {
|
|
33
|
+
targetSlot: SlotNumber;
|
|
34
|
+
checkpointNumber: CheckpointNumber;
|
|
35
|
+
hadProposedParent: boolean;
|
|
36
|
+
provenOverride: CheckpointNumber | undefined;
|
|
37
|
+
simulatedPending: CheckpointNumber | undefined;
|
|
12
38
|
}) => void;
|
|
13
39
|
['proposer-rollup-check-failed']: (args: { reason: string; slot: SlotNumber }) => void;
|
|
14
40
|
['block-tx-count-check-failed']: (args: { minTxs: number; availableTxs: number; slot: SlotNumber }) => void;
|
|
15
41
|
['block-build-failed']: (args: { reason: string; slot: SlotNumber }) => void;
|
|
16
|
-
['block-proposed']: (args: {
|
|
42
|
+
['block-proposed']: (args: {
|
|
43
|
+
blockNumber: BlockNumber;
|
|
44
|
+
blockHash: BlockHash;
|
|
45
|
+
checkpointNumber: CheckpointNumber;
|
|
46
|
+
indexWithinCheckpoint: IndexWithinCheckpoint;
|
|
47
|
+
slot: SlotNumber;
|
|
48
|
+
buildSlot: SlotNumber;
|
|
49
|
+
}) => void;
|
|
17
50
|
['checkpoint-empty']: (args: { slot: SlotNumber }) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Emitted when the proposer's pre-broadcast `validateBlockHeader` simulation fails. This is a
|
|
53
|
+
* last-chance check before we gossip a checkpoint proposal: a failure here means the header
|
|
54
|
+
* would not be accepted by L1 (e.g. archive mismatch, stale chain tip, or some other state
|
|
55
|
+
* drift between when we built the checkpoint and when we are about to broadcast it).
|
|
56
|
+
*/
|
|
57
|
+
['header-validation-failed']: (args: {
|
|
58
|
+
slot: SlotNumber;
|
|
59
|
+
checkpointNumber: CheckpointNumber;
|
|
60
|
+
reason: string;
|
|
61
|
+
}) => void;
|
|
18
62
|
['checkpoint-publish-failed']: (args: {
|
|
19
63
|
slot: SlotNumber;
|
|
20
64
|
successfulActions?: Action[];
|
package/src/sequencer/index.ts
CHANGED
package/src/sequencer/metrics.ts
CHANGED
|
@@ -26,6 +26,7 @@ export class SequencerMetrics {
|
|
|
26
26
|
private blockBuildDuration: Histogram;
|
|
27
27
|
private blockBuildManaPerSecond: Gauge;
|
|
28
28
|
private stateTransitionBufferDuration: Histogram;
|
|
29
|
+
private stateDuration: Histogram;
|
|
29
30
|
|
|
30
31
|
// these are gauges because for individual sequencers building a block is not something that happens often enough to warrant a histogram
|
|
31
32
|
private timeToCollectAttestations: Gauge;
|
|
@@ -90,6 +91,8 @@ export class SequencerMetrics {
|
|
|
90
91
|
|
|
91
92
|
this.stateTransitionBufferDuration = this.meter.createHistogram(Metrics.SEQUENCER_STATE_TRANSITION_BUFFER_DURATION);
|
|
92
93
|
|
|
94
|
+
this.stateDuration = this.meter.createHistogram(Metrics.SEQUENCER_STATE_DURATION);
|
|
95
|
+
|
|
93
96
|
this.rewards = this.meter.createGauge(Metrics.SEQUENCER_CURRENT_SLOT_REWARDS);
|
|
94
97
|
|
|
95
98
|
this.slots = createUpDownCounterWithDefault(this.meter, Metrics.SEQUENCER_SLOT_COUNT);
|
|
@@ -252,6 +255,12 @@ export class SequencerMetrics {
|
|
|
252
255
|
});
|
|
253
256
|
}
|
|
254
257
|
|
|
258
|
+
recordStateDuration(durationMs: number, state: SequencerState) {
|
|
259
|
+
this.stateDuration.record(Math.ceil(durationMs), {
|
|
260
|
+
[Attributes.SEQUENCER_STATE]: state,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
|
|
255
264
|
recordPipelineDepth(depth: number) {
|
|
256
265
|
this.pipelineDepth.record(depth);
|
|
257
266
|
}
|