@aztec/sequencer-client 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212
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/client/index.d.ts +1 -1
- package/dest/client/sequencer-client.d.ts +7 -6
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +23 -14
- package/dest/config.d.ts +5 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +21 -1
- package/dest/global_variable_builder/global_builder.d.ts +5 -7
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +12 -8
- package/dest/global_variable_builder/index.d.ts +1 -1
- package/dest/index.d.ts +1 -1
- package/dest/publisher/config.d.ts +9 -10
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +19 -17
- package/dest/publisher/index.d.ts +2 -2
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/index.js +1 -1
- package/dest/publisher/sequencer-publisher-factory.d.ts +9 -3
- package/dest/publisher/sequencer-publisher-factory.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-factory.js +8 -1
- package/dest/publisher/sequencer-publisher-metrics.d.ts +2 -2
- package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-metrics.js +1 -1
- package/dest/publisher/sequencer-publisher.d.ts +53 -50
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +187 -132
- package/dest/sequencer/block_builder.d.ts +6 -8
- package/dest/sequencer/block_builder.d.ts.map +1 -1
- package/dest/sequencer/block_builder.js +18 -9
- package/dest/sequencer/config.d.ts +2 -2
- package/dest/sequencer/config.d.ts.map +1 -1
- package/dest/sequencer/errors.d.ts +11 -0
- package/dest/sequencer/errors.d.ts.map +1 -0
- package/dest/sequencer/errors.js +15 -0
- package/dest/sequencer/index.d.ts +1 -1
- package/dest/sequencer/metrics.d.ts +17 -20
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +59 -87
- package/dest/sequencer/sequencer.d.ts +54 -32
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +458 -184
- package/dest/sequencer/timetable.d.ts +4 -8
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +3 -10
- package/dest/sequencer/utils.d.ts +11 -25
- package/dest/sequencer/utils.d.ts.map +1 -1
- package/dest/sequencer/utils.js +9 -24
- package/dest/test/index.d.ts +2 -2
- package/dest/test/index.d.ts.map +1 -1
- package/dest/tx_validator/nullifier_cache.d.ts +1 -1
- package/dest/tx_validator/nullifier_cache.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.d.ts +4 -3
- package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.js +12 -9
- package/package.json +32 -31
- package/src/client/sequencer-client.ts +24 -18
- package/src/config.ts +23 -6
- package/src/global_variable_builder/global_builder.ts +19 -17
- package/src/publisher/config.ts +29 -27
- package/src/publisher/index.ts +1 -1
- package/src/publisher/sequencer-publisher-factory.ts +16 -3
- package/src/publisher/sequencer-publisher-metrics.ts +1 -1
- package/src/publisher/sequencer-publisher.ts +257 -183
- package/src/sequencer/block_builder.ts +23 -28
- package/src/sequencer/config.ts +1 -1
- package/src/sequencer/errors.ts +21 -0
- package/src/sequencer/metrics.ts +71 -98
- package/src/sequencer/sequencer.ts +546 -237
- package/src/sequencer/timetable.ts +10 -14
- package/src/sequencer/utils.ts +10 -24
- package/src/test/index.ts +1 -1
- package/src/tx_validator/tx_validator_factory.ts +13 -7
|
@@ -37,18 +37,14 @@ export declare class SequencerTimetable {
|
|
|
37
37
|
maxL1TxInclusionTimeIntoSlot: number;
|
|
38
38
|
attestationPropagationTime?: number;
|
|
39
39
|
enforce: boolean;
|
|
40
|
-
}, metrics?: SequencerMetrics | undefined, log?: import("@aztec/aztec.js").Logger);
|
|
40
|
+
}, metrics?: SequencerMetrics | undefined, log?: import("@aztec/aztec.js/log").Logger);
|
|
41
41
|
private get afterBlockBuildingTimeNeededWithoutReexec();
|
|
42
42
|
getBlockProposalExecTimeEnd(secondsIntoSlot: number): number;
|
|
43
43
|
private get afterBlockReexecTimeNeeded();
|
|
44
44
|
getValidatorReexecTimeEnd(secondsIntoSlot?: number): number;
|
|
45
|
+
getMaxAllowedTime(state: Extract<SequencerState, SequencerState.STOPPED | SequencerState.IDLE | SequencerState.SYNCHRONIZING>): undefined;
|
|
46
|
+
getMaxAllowedTime(state: Exclude<SequencerState, SequencerState.STOPPED | SequencerState.IDLE | SequencerState.SYNCHRONIZING>): number;
|
|
45
47
|
getMaxAllowedTime(state: SequencerState): number | undefined;
|
|
46
48
|
assertTimeLeft(newState: SequencerState, secondsIntoSlot: number): void;
|
|
47
49
|
}
|
|
48
|
-
|
|
49
|
-
readonly proposedState: SequencerState;
|
|
50
|
-
readonly maxAllowedTime: number;
|
|
51
|
-
readonly currentTime: number;
|
|
52
|
-
constructor(proposedState: SequencerState, maxAllowedTime: number, currentTime: number);
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=timetable.d.ts.map
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL3RpbWV0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBTTVDLHFCQUFhLGtCQUFrQjtJQStDM0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBL0N0Qjs7OztPQUlHO0lBQ0gsU0FBZ0Isa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBRTNDOzs7O09BSUc7SUFDSCxTQUFnQixnQkFBZ0IsU0FBQztJQUVqQyxzSEFBc0g7SUFDdEgsU0FBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxDQUFzQjtJQUU5RCx1REFBdUQ7SUFDdkQsU0FBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxDQUFzQjtJQUU5RCxtR0FBbUc7SUFDbkcsU0FBZ0IsMEJBQTBCLEVBQUUsTUFBTSxDQUFDO0lBRW5ELG1JQUFtSTtJQUNuSSxTQUFnQixtQkFBbUIsRUFBRSxNQUFNLENBQXlCO0lBRXBFLHdDQUF3QztJQUN4QyxTQUFnQixvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFFN0Msa0ZBQWtGO0lBQ2xGLFNBQWdCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUUxQywySUFBMkk7SUFDM0ksU0FBZ0IsNEJBQTRCLEVBQUUsTUFBTSxDQUFDO0lBRXJELDREQUE0RDtJQUM1RCxTQUFnQixPQUFPLEVBQUUsT0FBTyxDQUFDO0lBRWpDLFlBQ0UsSUFBSSxFQUFFO1FBQ0osb0JBQW9CLEVBQUUsTUFBTSxDQUFDO1FBQzdCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUMxQiw0QkFBNEIsRUFBRSxNQUFNLENBQUM7UUFDckMsMEJBQTBCLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDcEMsT0FBTyxFQUFFLE9BQU8sQ0FBQztLQUNsQixFQUNnQixPQUFPLENBQUMsOEJBQWtCLEVBQzFCLEdBQUcsdUNBQXNDLEVBNkMzRDtJQUVELE9BQU8sS0FBSyx5Q0FBeUMsR0FFcEQ7SUFFTSwyQkFBMkIsQ0FBQyxlQUFlLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FhbEU7SUFFRCxPQUFPLEtBQUssMEJBQTBCLEdBRXJDO0lBRU0seUJBQXlCLENBQUMsZUFBZSxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FRakU7SUFFTSxpQkFBaUIsQ0FDdEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FDMUcsU0FBUyxDQUFDO0lBQ04saUJBQWlCLENBQ3RCLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLEdBQzFHLE1BQU0sQ0FBQztJQUNILGlCQUFpQixDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQXdCN0QsY0FBYyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFpQnRFO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timetable.d.ts","sourceRoot":"","sources":["../../src/sequencer/timetable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"timetable.d.ts","sourceRoot":"","sources":["../../src/sequencer/timetable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C,qBAAa,kBAAkB;IA+C3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IA/CtB;;;;OAIG;IACH,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAE3C;;;;OAIG;IACH,SAAgB,gBAAgB,SAAC;IAEjC,sHAAsH;IACtH,SAAgB,gBAAgB,EAAE,MAAM,CAAsB;IAE9D,uDAAuD;IACvD,SAAgB,gBAAgB,EAAE,MAAM,CAAsB;IAE9D,mGAAmG;IACnG,SAAgB,0BAA0B,EAAE,MAAM,CAAC;IAEnD,mIAAmI;IACnI,SAAgB,mBAAmB,EAAE,MAAM,CAAyB;IAEpE,wCAAwC;IACxC,SAAgB,oBAAoB,EAAE,MAAM,CAAC;IAE7C,kFAAkF;IAClF,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAE1C,2IAA2I;IAC3I,SAAgB,4BAA4B,EAAE,MAAM,CAAC;IAErD,4DAA4D;IAC5D,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,YACE,IAAI,EAAE;QACJ,oBAAoB,EAAE,MAAM,CAAC;QAC7B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,4BAA4B,EAAE,MAAM,CAAC;QACrC,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,OAAO,EAAE,OAAO,CAAC;KAClB,EACgB,OAAO,CAAC,8BAAkB,EAC1B,GAAG,uCAAsC,EA6C3D;IAED,OAAO,KAAK,yCAAyC,GAEpD;IAEM,2BAA2B,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAalE;IAED,OAAO,KAAK,0BAA0B,GAErC;IAEM,yBAAyB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAQjE;IAEM,iBAAiB,CACtB,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,GAC1G,SAAS,CAAC;IACN,iBAAiB,CACtB,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,GAC1G,MAAM,CAAC;IACH,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;IAwB7D,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,QAiBtE;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/aztec.js';
|
|
1
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
2
|
import { DEFAULT_ATTESTATION_PROPAGATION_TIME } from '../config.js';
|
|
3
|
+
import { SequencerTooSlowError } from './errors.js';
|
|
3
4
|
import { SequencerState } from './utils.js';
|
|
4
5
|
const MIN_EXECUTION_TIME = 1;
|
|
5
6
|
const BLOCK_PREPARE_TIME = 1;
|
|
@@ -95,6 +96,7 @@ export class SequencerTimetable {
|
|
|
95
96
|
getMaxAllowedTime(state) {
|
|
96
97
|
switch(state){
|
|
97
98
|
case SequencerState.STOPPED:
|
|
99
|
+
case SequencerState.STOPPING:
|
|
98
100
|
case SequencerState.IDLE:
|
|
99
101
|
case SequencerState.SYNCHRONIZING:
|
|
100
102
|
return; // We don't really care about times for this states
|
|
@@ -133,12 +135,3 @@ export class SequencerTimetable {
|
|
|
133
135
|
});
|
|
134
136
|
}
|
|
135
137
|
}
|
|
136
|
-
export class SequencerTooSlowError extends Error {
|
|
137
|
-
proposedState;
|
|
138
|
-
maxAllowedTime;
|
|
139
|
-
currentTime;
|
|
140
|
-
constructor(proposedState, maxAllowedTime, currentTime){
|
|
141
|
-
super(`Too far into slot for ${proposedState} (time into slot ${currentTime}s greater than ${maxAllowedTime}s allowance)`), this.proposedState = proposedState, this.maxAllowedTime = maxAllowedTime, this.currentTime = currentTime;
|
|
142
|
-
this.name = 'SequencerTooSlowError';
|
|
143
|
-
}
|
|
144
|
-
}
|
|
@@ -1,38 +1,24 @@
|
|
|
1
1
|
export declare enum SequencerState {
|
|
2
|
-
/**
|
|
3
|
-
* Sequencer is stopped and not processing any txs from the pool.
|
|
4
|
-
*/
|
|
2
|
+
/** Sequencer is stopped and not processing any txs from the pool. */
|
|
5
3
|
STOPPED = "STOPPED",
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
/** Sequencer is being stopped. Will move to STOPPED shortly. */
|
|
5
|
+
STOPPING = "STOPPING",
|
|
6
|
+
/** Sequencer is awaiting the next call to work(). */
|
|
9
7
|
IDLE = "IDLE",
|
|
10
|
-
/**
|
|
11
|
-
* Synchronizing with the L2 chain.
|
|
12
|
-
*/
|
|
8
|
+
/** Synchronizing with the L2 chain. */
|
|
13
9
|
SYNCHRONIZING = "SYNCHRONIZING",
|
|
14
|
-
/**
|
|
15
|
-
* Checking if we are the proposer for the current slot.
|
|
16
|
-
*/
|
|
10
|
+
/** Checking if we are the proposer for the current slot. */
|
|
17
11
|
PROPOSER_CHECK = "PROPOSER_CHECK",
|
|
18
|
-
/**
|
|
19
|
-
* Initializing the block proposal. Will move to CREATING_BLOCK if there are valid txs to include, or back to SYNCHRONIZING otherwise.
|
|
20
|
-
*/
|
|
12
|
+
/** Initializing the block proposal. Will move to CREATING_BLOCK if there are valid txs to include, or back to SYNCHRONIZING otherwise. */
|
|
21
13
|
INITIALIZING_PROPOSAL = "INITIALIZING_PROPOSAL",
|
|
22
|
-
/**
|
|
23
|
-
* Creating a new L2 block. Includes processing public function calls and running rollup circuits. Will move to PUBLISHING_CONTRACT_DATA.
|
|
24
|
-
*/
|
|
14
|
+
/** Creating a new L2 block. Includes processing public function calls and running rollup circuits. Will move to PUBLISHING_CONTRACT_DATA. */
|
|
25
15
|
CREATING_BLOCK = "CREATING_BLOCK",
|
|
26
|
-
/**
|
|
27
|
-
* Collecting attestations from its peers. Will move to PUBLISHING_BLOCK.
|
|
28
|
-
*/
|
|
16
|
+
/** Collecting attestations from its peers. Will move to PUBLISHING_BLOCK. */
|
|
29
17
|
COLLECTING_ATTESTATIONS = "COLLECTING_ATTESTATIONS",
|
|
30
|
-
/**
|
|
31
|
-
* Sending the tx to L1 with the L2 block data and awaiting it to be mined. Will move to SYNCHRONIZING.
|
|
32
|
-
*/
|
|
18
|
+
/** Sending the tx to L1 with the L2 block data and awaiting it to be mined. Will move to SYNCHRONIZING. */
|
|
33
19
|
PUBLISHING_BLOCK = "PUBLISHING_BLOCK"
|
|
34
20
|
}
|
|
35
21
|
export type SequencerStateWithSlot = SequencerState.INITIALIZING_PROPOSAL | SequencerState.CREATING_BLOCK | SequencerState.COLLECTING_ATTESTATIONS | SequencerState.PUBLISHING_BLOCK | SequencerState.PROPOSER_CHECK;
|
|
36
22
|
export type SequencerStateCallback = () => SequencerState;
|
|
37
23
|
export declare function sequencerStateToNumber(state: SequencerState): number;
|
|
38
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQVksY0FBYztJQUN4QixxRUFBcUU7SUFDckUsT0FBTyxZQUFZO0lBQ25CLGdFQUFnRTtJQUNoRSxRQUFRLGFBQWE7SUFDckIscURBQXFEO0lBQ3JELElBQUksU0FBUztJQUNiLHVDQUF1QztJQUN2QyxhQUFhLGtCQUFrQjtJQUMvQiw0REFBNEQ7SUFDNUQsY0FBYyxtQkFBbUI7SUFDakMsMElBQTBJO0lBQzFJLHFCQUFxQiwwQkFBMEI7SUFDL0MsNklBQTZJO0lBQzdJLGNBQWMsbUJBQW1CO0lBQ2pDLDZFQUE2RTtJQUM3RSx1QkFBdUIsNEJBQTRCO0lBQ25ELDJHQUEyRztJQUMzRyxnQkFBZ0IscUJBQXFCO0NBQ3RDO0FBRUQsTUFBTSxNQUFNLHNCQUFzQixHQUM5QixjQUFjLENBQUMscUJBQXFCLEdBQ3BDLGNBQWMsQ0FBQyxjQUFjLEdBQzdCLGNBQWMsQ0FBQyx1QkFBdUIsR0FDdEMsY0FBYyxDQUFDLGdCQUFnQixHQUMvQixjQUFjLENBQUMsY0FBYyxDQUFDO0FBRWxDLE1BQU0sTUFBTSxzQkFBc0IsR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUUxRCx3QkFBZ0Isc0JBQXNCLENBQUMsS0FBSyxFQUFFLGNBQWMsR0FBRyxNQUFNLENBRXBFIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/sequencer/utils.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACxB
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/sequencer/utils.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACxB,qEAAqE;IACrE,OAAO,YAAY;IACnB,gEAAgE;IAChE,QAAQ,aAAa;IACrB,qDAAqD;IACrD,IAAI,SAAS;IACb,uCAAuC;IACvC,aAAa,kBAAkB;IAC/B,4DAA4D;IAC5D,cAAc,mBAAmB;IACjC,0IAA0I;IAC1I,qBAAqB,0BAA0B;IAC/C,6IAA6I;IAC7I,cAAc,mBAAmB;IACjC,6EAA6E;IAC7E,uBAAuB,4BAA4B;IACnD,2GAA2G;IAC3G,gBAAgB,qBAAqB;CACtC;AAED,MAAM,MAAM,sBAAsB,GAC9B,cAAc,CAAC,qBAAqB,GACpC,cAAc,CAAC,cAAc,GAC7B,cAAc,CAAC,uBAAuB,GACtC,cAAc,CAAC,gBAAgB,GAC/B,cAAc,CAAC,cAAc,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAAG,MAAM,cAAc,CAAC;AAE1D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAEpE"}
|
package/dest/sequencer/utils.js
CHANGED
|
@@ -1,28 +1,13 @@
|
|
|
1
1
|
export var SequencerState = /*#__PURE__*/ function(SequencerState) {
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Checking if we are the proposer for the current slot.
|
|
13
|
-
*/ SequencerState["PROPOSER_CHECK"] = "PROPOSER_CHECK";
|
|
14
|
-
/**
|
|
15
|
-
* Initializing the block proposal. Will move to CREATING_BLOCK if there are valid txs to include, or back to SYNCHRONIZING otherwise.
|
|
16
|
-
*/ SequencerState["INITIALIZING_PROPOSAL"] = "INITIALIZING_PROPOSAL";
|
|
17
|
-
/**
|
|
18
|
-
* Creating a new L2 block. Includes processing public function calls and running rollup circuits. Will move to PUBLISHING_CONTRACT_DATA.
|
|
19
|
-
*/ SequencerState["CREATING_BLOCK"] = "CREATING_BLOCK";
|
|
20
|
-
/**
|
|
21
|
-
* Collecting attestations from its peers. Will move to PUBLISHING_BLOCK.
|
|
22
|
-
*/ SequencerState["COLLECTING_ATTESTATIONS"] = "COLLECTING_ATTESTATIONS";
|
|
23
|
-
/**
|
|
24
|
-
* Sending the tx to L1 with the L2 block data and awaiting it to be mined. Will move to SYNCHRONIZING.
|
|
25
|
-
*/ SequencerState["PUBLISHING_BLOCK"] = "PUBLISHING_BLOCK";
|
|
2
|
+
/** Sequencer is stopped and not processing any txs from the pool. */ SequencerState["STOPPED"] = "STOPPED";
|
|
3
|
+
/** Sequencer is being stopped. Will move to STOPPED shortly. */ SequencerState["STOPPING"] = "STOPPING";
|
|
4
|
+
/** Sequencer is awaiting the next call to work(). */ SequencerState["IDLE"] = "IDLE";
|
|
5
|
+
/** Synchronizing with the L2 chain. */ SequencerState["SYNCHRONIZING"] = "SYNCHRONIZING";
|
|
6
|
+
/** Checking if we are the proposer for the current slot. */ SequencerState["PROPOSER_CHECK"] = "PROPOSER_CHECK";
|
|
7
|
+
/** Initializing the block proposal. Will move to CREATING_BLOCK if there are valid txs to include, or back to SYNCHRONIZING otherwise. */ SequencerState["INITIALIZING_PROPOSAL"] = "INITIALIZING_PROPOSAL";
|
|
8
|
+
/** Creating a new L2 block. Includes processing public function calls and running rollup circuits. Will move to PUBLISHING_CONTRACT_DATA. */ SequencerState["CREATING_BLOCK"] = "CREATING_BLOCK";
|
|
9
|
+
/** Collecting attestations from its peers. Will move to PUBLISHING_BLOCK. */ SequencerState["COLLECTING_ATTESTATIONS"] = "COLLECTING_ATTESTATIONS";
|
|
10
|
+
/** Sending the tx to L1 with the L2 block data and awaiting it to be mined. Will move to SYNCHRONIZING. */ SequencerState["PUBLISHING_BLOCK"] = "PUBLISHING_BLOCK";
|
|
26
11
|
return SequencerState;
|
|
27
12
|
}({});
|
|
28
13
|
export function sequencerStateToNumber(state) {
|
package/dest/test/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { PublisherManager } from '@aztec/ethereum';
|
|
2
1
|
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
2
|
+
import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
3
3
|
import type { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
4
4
|
import type { ValidatorClient } from '@aztec/validator-client';
|
|
5
5
|
import { SequencerClient } from '../client/sequencer-client.js';
|
|
@@ -21,4 +21,4 @@ declare class TestSequencerClient_ extends SequencerClient {
|
|
|
21
21
|
}
|
|
22
22
|
export type TestSequencerClient = TestSequencerClient_;
|
|
23
23
|
export {};
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsY0FBTSxjQUFlLFNBQVEsU0FBUztJQUNyQixzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQztJQUMvQyxTQUFTLEVBQUUsa0JBQWtCLENBQUM7SUFDOUIsU0FBUyxFQUFFLGtCQUFrQixDQUFDO0lBQzlCLGdCQUFnQixFQUFFLHlCQUF5QixDQUFDO0lBQzVDLGVBQWUsRUFBRSxlQUFlLENBQUM7Q0FDakQ7QUFFRCxNQUFNLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUUzQyxjQUFNLG9CQUFxQixTQUFRLGVBQWU7SUFDakMsU0FBUyxFQUFFLGFBQWEsQ0FBQztJQUN6QixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0NBQ3ZFO0FBRUQsTUFBTSxNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDIn0=
|
package/dest/test/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,cAAM,cAAe,SAAQ,SAAS;IACrB,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,eAAe,EAAE,eAAe,CAAC;CACjD;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAE3C,cAAM,oBAAqB,SAAQ,eAAe;IACjC,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;CACvE;AAED,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC"}
|
|
@@ -11,4 +11,4 @@ export declare class NullifierCache implements NullifierSource {
|
|
|
11
11
|
nullifiersExist(nullifiers: Buffer[]): Promise<boolean[]>;
|
|
12
12
|
addNullifiers(nullifiers: Buffer[]): void;
|
|
13
13
|
}
|
|
14
|
-
//# sourceMappingURL=
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlmaWVyX2NhY2hlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL251bGxpZmllcl9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdoRjs7O0dBR0c7QUFDSCxxQkFBYSxjQUFlLFlBQVcsZUFBZTtJQUd4QyxPQUFPLENBQUMsRUFBRTtJQUZ0QixVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLFlBQW9CLEVBQUUsRUFBRSx3QkFBd0IsRUFFL0M7SUFFWSxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQU9yRTtJQUVNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBSXhDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullifier_cache.d.ts","sourceRoot":"","sources":["../../src/tx_validator/nullifier_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IAGxC,OAAO,CAAC,EAAE;IAFtB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"nullifier_cache.d.ts","sourceRoot":"","sources":["../../src/tx_validator/nullifier_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IAGxC,OAAO,CAAC,EAAE;IAFtB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB,YAAoB,EAAE,EAAE,wBAAwB,EAE/C;IAEY,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAOrE;IAEM,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAIxC;CACF"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
2
3
|
import type { GasFees } from '@aztec/stdlib/gas';
|
|
3
4
|
import type { AllowedElement, ClientProtocolCircuitVerifier, MerkleTreeReadOperations, PublicProcessorValidator } from '@aztec/stdlib/interfaces/server';
|
|
4
5
|
import { GlobalVariables, type Tx, type TxValidator } from '@aztec/stdlib/tx';
|
|
5
6
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
6
|
-
export declare function createValidatorForAcceptingTxs(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted
|
|
7
|
+
export declare function createValidatorForAcceptingTxs(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted }: {
|
|
7
8
|
l1ChainId: number;
|
|
8
9
|
rollupVersion: number;
|
|
9
10
|
setupAllowList: AllowedElement[];
|
|
10
11
|
gasFees: GasFees;
|
|
11
12
|
skipFeeEnforcement?: boolean;
|
|
12
13
|
timestamp: UInt64;
|
|
13
|
-
blockNumber:
|
|
14
|
+
blockNumber: BlockNumber;
|
|
14
15
|
txsPermitted: boolean;
|
|
15
16
|
}): TxValidator<Tx>;
|
|
16
17
|
export declare function createValidatorForBlockBuilding(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, globalVariables: GlobalVariables, setupAllowList: AllowedElement[]): PublicProcessorValidator;
|
|
17
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvdHhfdmFsaWRhdG9yX2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBaUI5RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUNWLGNBQWMsRUFDZCw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN6QixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlsRCx3QkFBZ0IsOEJBQThCLENBQzVDLEVBQUUsRUFBRSx3QkFBd0IsRUFDNUIsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFFBQVEsRUFBRSw2QkFBNkIsR0FBRyxTQUFTLEVBQ25ELEVBQ0UsU0FBUyxFQUNULGFBQWEsRUFDYixjQUFjLEVBQ2QsT0FBTyxFQUNQLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDYixFQUFFO0lBQ0QsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUNqQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUN6QixZQUFZLEVBQUUsT0FBTyxDQUFDO0NBQ3ZCLEdBQ0EsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQTRCakI7QUFFRCx3QkFBZ0IsK0JBQStCLENBQzdDLEVBQUUsRUFBRSx3QkFBd0IsRUFDNUIsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FDL0Isd0JBQXdCLENBZ0IxQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAiB9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,6BAA6B,GAAG,SAAS,EACnD,EACE,SAAS,EACT,aAAa,EACb,cAAc,EACd,OAAO,EACP,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,YAAY,EACb,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;CACvB,GACA,WAAW,CAAC,EAAE,CAAC,CA4BjB;AAED,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,EAAE,GAC/B,wBAAwB,CAgB1B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
|
-
import { AggregateTxValidator, ArchiveCache, BlockHeaderTxValidator, DataTxValidator, DoubleSpendTxValidator, GasTxValidator, MetadataTxValidator, PhasesTxValidator, TxPermittedValidator, TxProofValidator } from '@aztec/p2p';
|
|
4
|
-
import { ProtocolContractAddress,
|
|
3
|
+
import { AggregateTxValidator, ArchiveCache, BlockHeaderTxValidator, DataTxValidator, DoubleSpendTxValidator, GasTxValidator, MetadataTxValidator, PhasesTxValidator, TimestampTxValidator, TxPermittedValidator, TxProofValidator } from '@aztec/p2p';
|
|
4
|
+
import { ProtocolContractAddress, protocolContractsHash } from '@aztec/protocol-contracts';
|
|
5
5
|
import { DatabasePublicStateSource } from '@aztec/stdlib/trees';
|
|
6
6
|
import { NullifierCache } from './nullifier_cache.js';
|
|
7
7
|
export function createValidatorForAcceptingTxs(db, contractDataSource, verifier, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted }) {
|
|
@@ -11,11 +11,13 @@ export function createValidatorForAcceptingTxs(db, contractDataSource, verifier,
|
|
|
11
11
|
new MetadataTxValidator({
|
|
12
12
|
l1ChainId: new Fr(l1ChainId),
|
|
13
13
|
rollupVersion: new Fr(rollupVersion),
|
|
14
|
-
|
|
15
|
-
blockNumber,
|
|
16
|
-
protocolContractTreeRoot,
|
|
14
|
+
protocolContractsHash,
|
|
17
15
|
vkTreeRoot: getVKTreeRoot()
|
|
18
16
|
}),
|
|
17
|
+
new TimestampTxValidator({
|
|
18
|
+
timestamp,
|
|
19
|
+
blockNumber
|
|
20
|
+
}),
|
|
19
21
|
new DoubleSpendTxValidator(new NullifierCache(db)),
|
|
20
22
|
new PhasesTxValidator(contractDataSource, setupAllowList, timestamp),
|
|
21
23
|
new BlockHeaderTxValidator(new ArchiveCache(db))
|
|
@@ -42,9 +44,10 @@ function preprocessValidator(nullifierCache, archiveCache, publicStateSource, co
|
|
|
42
44
|
return new AggregateTxValidator(new MetadataTxValidator({
|
|
43
45
|
l1ChainId: globalVariables.chainId,
|
|
44
46
|
rollupVersion: globalVariables.version,
|
|
45
|
-
|
|
46
|
-
blockNumber: globalVariables.blockNumber,
|
|
47
|
-
protocolContractTreeRoot,
|
|
47
|
+
protocolContractsHash,
|
|
48
48
|
vkTreeRoot: getVKTreeRoot()
|
|
49
|
+
}), new TimestampTxValidator({
|
|
50
|
+
timestamp: globalVariables.timestamp,
|
|
51
|
+
blockNumber: globalVariables.blockNumber
|
|
49
52
|
}), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList, globalVariables.timestamp), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, globalVariables.gasFees), new BlockHeaderTxValidator(archiveCache));
|
|
50
53
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-devnet.20251212",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -18,53 +18,54 @@
|
|
|
18
18
|
"../package.common.json"
|
|
19
19
|
],
|
|
20
20
|
"scripts": {
|
|
21
|
-
"build": "yarn clean && tsc
|
|
22
|
-
"build:dev": "tsc
|
|
21
|
+
"build": "yarn clean && ../scripts/tsc.sh",
|
|
22
|
+
"build:dev": "../scripts/tsc.sh --watch",
|
|
23
23
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
24
24
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
|
|
25
25
|
"test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
|
|
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-
|
|
30
|
-
"@aztec/bb-prover": "3.0.0-
|
|
31
|
-
"@aztec/blob-lib": "3.0.0-
|
|
32
|
-
"@aztec/blob-sink": "3.0.0-
|
|
33
|
-
"@aztec/constants": "3.0.0-
|
|
34
|
-
"@aztec/epoch-cache": "3.0.0-
|
|
35
|
-
"@aztec/ethereum": "3.0.0-
|
|
36
|
-
"@aztec/foundation": "3.0.0-
|
|
37
|
-
"@aztec/l1-artifacts": "3.0.0-
|
|
38
|
-
"@aztec/merkle-tree": "3.0.0-
|
|
39
|
-
"@aztec/
|
|
40
|
-
"@aztec/noir-
|
|
41
|
-
"@aztec/noir-
|
|
42
|
-
"@aztec/noir-types": "3.0.0-
|
|
43
|
-
"@aztec/
|
|
44
|
-
"@aztec/
|
|
45
|
-
"@aztec/
|
|
46
|
-
"@aztec/
|
|
47
|
-
"@aztec/
|
|
48
|
-
"@aztec/
|
|
49
|
-
"@aztec/
|
|
50
|
-
"@aztec/
|
|
51
|
-
"@aztec/
|
|
29
|
+
"@aztec/aztec.js": "3.0.0-devnet.20251212",
|
|
30
|
+
"@aztec/bb-prover": "3.0.0-devnet.20251212",
|
|
31
|
+
"@aztec/blob-lib": "3.0.0-devnet.20251212",
|
|
32
|
+
"@aztec/blob-sink": "3.0.0-devnet.20251212",
|
|
33
|
+
"@aztec/constants": "3.0.0-devnet.20251212",
|
|
34
|
+
"@aztec/epoch-cache": "3.0.0-devnet.20251212",
|
|
35
|
+
"@aztec/ethereum": "3.0.0-devnet.20251212",
|
|
36
|
+
"@aztec/foundation": "3.0.0-devnet.20251212",
|
|
37
|
+
"@aztec/l1-artifacts": "3.0.0-devnet.20251212",
|
|
38
|
+
"@aztec/merkle-tree": "3.0.0-devnet.20251212",
|
|
39
|
+
"@aztec/node-keystore": "3.0.0-devnet.20251212",
|
|
40
|
+
"@aztec/noir-acvm_js": "3.0.0-devnet.20251212",
|
|
41
|
+
"@aztec/noir-contracts.js": "3.0.0-devnet.20251212",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-devnet.20251212",
|
|
43
|
+
"@aztec/noir-types": "3.0.0-devnet.20251212",
|
|
44
|
+
"@aztec/p2p": "3.0.0-devnet.20251212",
|
|
45
|
+
"@aztec/protocol-contracts": "3.0.0-devnet.20251212",
|
|
46
|
+
"@aztec/prover-client": "3.0.0-devnet.20251212",
|
|
47
|
+
"@aztec/simulator": "3.0.0-devnet.20251212",
|
|
48
|
+
"@aztec/slasher": "3.0.0-devnet.20251212",
|
|
49
|
+
"@aztec/stdlib": "3.0.0-devnet.20251212",
|
|
50
|
+
"@aztec/telemetry-client": "3.0.0-devnet.20251212",
|
|
51
|
+
"@aztec/validator-client": "3.0.0-devnet.20251212",
|
|
52
|
+
"@aztec/world-state": "3.0.0-devnet.20251212",
|
|
52
53
|
"lodash.chunk": "^4.2.0",
|
|
53
|
-
"lodash.pick": "^4.4.0",
|
|
54
54
|
"tslib": "^2.4.0",
|
|
55
|
-
"viem": "2.
|
|
55
|
+
"viem": "npm:@aztec/viem@2.38.2"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@aztec/archiver": "3.0.0-
|
|
59
|
-
"@aztec/kv-store": "3.0.0-
|
|
58
|
+
"@aztec/archiver": "3.0.0-devnet.20251212",
|
|
59
|
+
"@aztec/kv-store": "3.0.0-devnet.20251212",
|
|
60
60
|
"@jest/globals": "^30.0.0",
|
|
61
61
|
"@types/jest": "^30.0.0",
|
|
62
62
|
"@types/lodash.chunk": "^4.2.7",
|
|
63
63
|
"@types/lodash.pick": "^4.4.7",
|
|
64
64
|
"@types/node": "^22.15.17",
|
|
65
|
+
"@typescript/native-preview": "7.0.0-dev.20251126.1",
|
|
65
66
|
"concurrently": "^7.6.0",
|
|
66
67
|
"eslint": "^9.26.0",
|
|
67
|
-
"express": "^4.21.
|
|
68
|
+
"express": "^4.21.2",
|
|
68
69
|
"jest": "^30.0.0",
|
|
69
70
|
"jest-mock-extended": "^4.0.0",
|
|
70
71
|
"prettier": "^3.5.3",
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
2
2
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
RollupContract,
|
|
7
|
-
getPublicClient,
|
|
8
|
-
isAnvilTestChain,
|
|
9
|
-
} from '@aztec/ethereum';
|
|
3
|
+
import { isAnvilTestChain } from '@aztec/ethereum/chain';
|
|
4
|
+
import { getPublicClient } from '@aztec/ethereum/client';
|
|
5
|
+
import { GovernanceProposerContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
10
6
|
import { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
7
|
+
import { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
11
8
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
12
9
|
import { createLogger } from '@aztec/foundation/log';
|
|
13
10
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
@@ -15,7 +12,11 @@ import type { KeystoreManager } from '@aztec/node-keystore';
|
|
|
15
12
|
import type { P2P } from '@aztec/p2p';
|
|
16
13
|
import type { SlasherClientInterface } from '@aztec/slasher';
|
|
17
14
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
18
|
-
import type {
|
|
15
|
+
import type {
|
|
16
|
+
IFullNodeBlockBuilder,
|
|
17
|
+
ValidatorClientFullConfig,
|
|
18
|
+
WorldStateSynchronizer,
|
|
19
|
+
} from '@aztec/stdlib/interfaces/server';
|
|
19
20
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
20
21
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
21
22
|
import { L1Metrics, type TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -33,6 +34,7 @@ export class SequencerClient {
|
|
|
33
34
|
constructor(
|
|
34
35
|
protected publisherManager: PublisherManager<L1TxUtilsWithBlobs>,
|
|
35
36
|
protected sequencer: Sequencer,
|
|
37
|
+
protected blockBuilder: IFullNodeBlockBuilder,
|
|
36
38
|
protected validatorClient?: ValidatorClient,
|
|
37
39
|
private l1Metrics?: L1Metrics,
|
|
38
40
|
) {}
|
|
@@ -79,7 +81,7 @@ export class SequencerClient {
|
|
|
79
81
|
telemetry: telemetryClient,
|
|
80
82
|
} = deps;
|
|
81
83
|
const { l1RpcUrls: rpcUrls, l1ChainId: chainId } = config;
|
|
82
|
-
const log = createLogger('sequencer
|
|
84
|
+
const log = createLogger('sequencer');
|
|
83
85
|
const publicClient = getPublicClient(config);
|
|
84
86
|
const l1TxUtils = deps.l1TxUtils;
|
|
85
87
|
const l1Metrics = new L1Metrics(
|
|
@@ -87,7 +89,7 @@ export class SequencerClient {
|
|
|
87
89
|
publicClient,
|
|
88
90
|
l1TxUtils.map(x => x.getSenderAddress()),
|
|
89
91
|
);
|
|
90
|
-
const publisherManager = new PublisherManager(l1TxUtils);
|
|
92
|
+
const publisherManager = new PublisherManager(l1TxUtils, config);
|
|
91
93
|
const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
|
|
92
94
|
const [l1GenesisTime, slotDuration] = await Promise.all([
|
|
93
95
|
rollupContract.getL1GenesisTime(),
|
|
@@ -106,9 +108,7 @@ export class SequencerClient {
|
|
|
106
108
|
l1RpcUrls: rpcUrls,
|
|
107
109
|
l1ChainId: chainId,
|
|
108
110
|
viemPollingIntervalMS: config.viemPollingIntervalMS,
|
|
109
|
-
aztecSlotDuration: config.aztecSlotDuration,
|
|
110
111
|
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
111
|
-
aztecEpochDuration: config.aztecEpochDuration,
|
|
112
112
|
},
|
|
113
113
|
{ dateProvider: deps.dateProvider },
|
|
114
114
|
));
|
|
@@ -130,6 +130,7 @@ export class SequencerClient {
|
|
|
130
130
|
dateProvider: deps.dateProvider,
|
|
131
131
|
publisherManager,
|
|
132
132
|
nodeKeyStore: NodeKeystoreAdapter.fromKeyStoreManager(deps.nodeKeyStore),
|
|
133
|
+
logger: log,
|
|
133
134
|
});
|
|
134
135
|
const globalsBuilder = new GlobalVariableBuilder(config);
|
|
135
136
|
|
|
@@ -150,8 +151,8 @@ export class SequencerClient {
|
|
|
150
151
|
// In theory, the L1 slot has an initial 4s phase where the block is propagated, so we could
|
|
151
152
|
// make it with a propagation time into slot equal to 4s. However, we prefer being conservative.
|
|
152
153
|
// See https://www.blocknative.com/blog/anatomy-of-a-slot#7 for more info.
|
|
153
|
-
const
|
|
154
|
-
|
|
154
|
+
const maxInclusionBasedOnChain = isAnvilTestChain(config.l1ChainId) ? ethereumSlotDuration - 1 : 0;
|
|
155
|
+
const maxL1TxInclusionTimeIntoSlot = config.maxL1TxInclusionTimeIntoSlot ?? maxInclusionBasedOnChain;
|
|
155
156
|
|
|
156
157
|
const l1Constants = {
|
|
157
158
|
l1GenesisTime,
|
|
@@ -175,19 +176,22 @@ export class SequencerClient {
|
|
|
175
176
|
rollupContract,
|
|
176
177
|
{ ...config, maxL1TxInclusionTimeIntoSlot, maxL2BlockGas: sequencerManaLimit },
|
|
177
178
|
telemetryClient,
|
|
179
|
+
log,
|
|
178
180
|
);
|
|
179
181
|
|
|
180
182
|
await sequencer.init();
|
|
181
183
|
|
|
182
|
-
return new SequencerClient(publisherManager, sequencer, validatorClient, l1Metrics);
|
|
184
|
+
return new SequencerClient(publisherManager, sequencer, blockBuilder, validatorClient, l1Metrics);
|
|
183
185
|
}
|
|
184
186
|
|
|
185
187
|
/**
|
|
186
|
-
* Updates sequencer config.
|
|
188
|
+
* Updates sequencer and validator client config.
|
|
187
189
|
* @param config - New parameters.
|
|
188
190
|
*/
|
|
189
|
-
public
|
|
190
|
-
|
|
191
|
+
public updateConfig(config: SequencerConfig & Partial<ValidatorClientFullConfig>) {
|
|
192
|
+
this.sequencer.updateConfig(config);
|
|
193
|
+
this.blockBuilder.updateConfig(config);
|
|
194
|
+
this.validatorClient?.updateConfig(config);
|
|
191
195
|
}
|
|
192
196
|
|
|
193
197
|
/** Starts the sequencer. */
|
|
@@ -195,6 +199,7 @@ export class SequencerClient {
|
|
|
195
199
|
await this.validatorClient?.start();
|
|
196
200
|
this.sequencer.start();
|
|
197
201
|
this.l1Metrics?.start();
|
|
202
|
+
await this.publisherManager.loadState();
|
|
198
203
|
}
|
|
199
204
|
|
|
200
205
|
/**
|
|
@@ -202,6 +207,7 @@ export class SequencerClient {
|
|
|
202
207
|
*/
|
|
203
208
|
public async stop() {
|
|
204
209
|
await this.sequencer.stop();
|
|
210
|
+
await this.validatorClient?.stop();
|
|
205
211
|
this.publisherManager.interrupt();
|
|
206
212
|
this.l1Metrics?.stop();
|
|
207
213
|
}
|
package/src/config.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
type L1ReaderConfig,
|
|
4
|
-
l1ContractsConfigMappings,
|
|
5
|
-
l1ReaderConfigMappings,
|
|
6
|
-
} from '@aztec/ethereum';
|
|
1
|
+
import { type L1ContractsConfig, l1ContractsConfigMappings } from '@aztec/ethereum/config';
|
|
2
|
+
import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
|
|
7
3
|
import {
|
|
8
4
|
type ConfigMappingsType,
|
|
9
5
|
booleanConfigHelper,
|
|
@@ -12,6 +8,7 @@ import {
|
|
|
12
8
|
pickConfigMappings,
|
|
13
9
|
} from '@aztec/foundation/config';
|
|
14
10
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
11
|
+
import { type KeyStoreConfig, keyStoreConfigMappings } from '@aztec/node-keystore';
|
|
15
12
|
import { type P2PConfig, p2pConfigMappings } from '@aztec/p2p';
|
|
16
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
17
14
|
import { type ChainConfig, type SequencerConfig, chainConfigMappings } from '@aztec/stdlib/config';
|
|
@@ -33,6 +30,7 @@ export const DEFAULT_ATTESTATION_PROPAGATION_TIME = 2;
|
|
|
33
30
|
* Configuration settings for the SequencerClient.
|
|
34
31
|
*/
|
|
35
32
|
export type SequencerClientConfig = PublisherConfig &
|
|
33
|
+
KeyStoreConfig &
|
|
36
34
|
ValidatorClientConfig &
|
|
37
35
|
TxSenderConfig &
|
|
38
36
|
SequencerConfig &
|
|
@@ -143,12 +141,31 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
143
141
|
description: 'Do not invalidate the previous block if invalid when we are the proposer (for testing only)',
|
|
144
142
|
...booleanConfigHelper(false),
|
|
145
143
|
},
|
|
144
|
+
broadcastInvalidBlockProposal: {
|
|
145
|
+
description: 'Broadcast invalid block proposals with corrupted state (for testing only)',
|
|
146
|
+
...booleanConfigHelper(false),
|
|
147
|
+
},
|
|
148
|
+
injectFakeAttestation: {
|
|
149
|
+
description: 'Inject a fake attestation (for testing only)',
|
|
150
|
+
...booleanConfigHelper(false),
|
|
151
|
+
},
|
|
152
|
+
fishermanMode: {
|
|
153
|
+
env: 'FISHERMAN_MODE',
|
|
154
|
+
description:
|
|
155
|
+
'Whether to run in fisherman mode: builds blocks on every slot for validation without publishing to L1',
|
|
156
|
+
...booleanConfigHelper(false),
|
|
157
|
+
},
|
|
158
|
+
shuffleAttestationOrdering: {
|
|
159
|
+
description: 'Shuffle attestation ordering to create invalid ordering (for testing only)',
|
|
160
|
+
...booleanConfigHelper(false),
|
|
161
|
+
},
|
|
146
162
|
...pickConfigMappings(p2pConfigMappings, ['txPublicSetupAllowList']),
|
|
147
163
|
};
|
|
148
164
|
|
|
149
165
|
export const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig> = {
|
|
150
166
|
...validatorClientConfigMappings,
|
|
151
167
|
...sequencerConfigMappings,
|
|
168
|
+
...keyStoreConfigMappings,
|
|
152
169
|
...l1ReaderConfigMappings,
|
|
153
170
|
...getTxSenderConfigMappings('SEQ'),
|
|
154
171
|
...getPublisherConfigMappings('SEQ'),
|