@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
|
@@ -38,10 +38,9 @@ export class SequencerTimetable {
|
|
|
38
38
|
/** Whether assertTimeLeft will throw if not enough time. */ enforce;
|
|
39
39
|
/** Duration per block when building multiple blocks per slot (undefined = single block per slot) */ blockDuration;
|
|
40
40
|
/** Maximum number of blocks that can be built in this slot configuration */ maxNumberOfBlocks;
|
|
41
|
-
/** Whether pipelining is enabled (checkpoint finalization deferred to next slot). */ pipelining;
|
|
42
41
|
/**
|
|
43
|
-
* How far into the target slot attestation collection can
|
|
44
|
-
*
|
|
42
|
+
* How far into the target slot assembly and attestation collection can start when pipelining.
|
|
43
|
+
* Production-like timing keeps this at zero; fast local publishing profiles can use the attestation window.
|
|
45
44
|
*/ pipeliningAttestationGracePeriod;
|
|
46
45
|
constructor(opts, metrics, log){
|
|
47
46
|
this.metrics = metrics;
|
|
@@ -54,14 +53,12 @@ export class SequencerTimetable {
|
|
|
54
53
|
this.l1PublishingTime = opts.l1PublishingTime;
|
|
55
54
|
this.blockDuration = opts.blockDurationMs ? opts.blockDurationMs / 1000 : undefined;
|
|
56
55
|
this.enforce = opts.enforce;
|
|
57
|
-
this.pipelining = opts.pipelining ?? false;
|
|
58
56
|
this.checkpointTiming = createCheckpointTimingModel({
|
|
59
57
|
aztecSlotDuration: this.aztecSlotDuration,
|
|
60
58
|
ethereumSlotDuration: this.ethereumSlotDuration,
|
|
61
59
|
blockDuration: this.blockDuration,
|
|
62
60
|
l1PublishingTime: this.l1PublishingTime,
|
|
63
|
-
p2pPropagationTime: opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME
|
|
64
|
-
pipelining: this.pipelining
|
|
61
|
+
p2pPropagationTime: opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME
|
|
65
62
|
});
|
|
66
63
|
this.p2pPropagationTime = this.checkpointTiming.p2pPropagationTime;
|
|
67
64
|
this.checkpointAssembleTime = this.checkpointTiming.checkpointAssembleTime;
|
|
@@ -84,7 +81,6 @@ export class SequencerTimetable {
|
|
|
84
81
|
blockAssembleTime: this.checkpointAssembleTime,
|
|
85
82
|
initializeDeadline: this.initializeDeadline,
|
|
86
83
|
enforce: this.enforce,
|
|
87
|
-
pipelining: this.pipelining,
|
|
88
84
|
pipeliningAttestationGracePeriod: this.pipeliningAttestationGracePeriod,
|
|
89
85
|
minWorkToDo: this.checkpointTiming.minimumBuildSlotWork,
|
|
90
86
|
blockDuration: this.blockDuration,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
2
|
-
export type SequencerRollupConstants = Pick<L1RollupConstants, 'ethereumSlotDuration' | 'l1GenesisTime' | 'slotDuration' | 'rollupManaLimit'>;
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export type SequencerRollupConstants = Pick<L1RollupConstants, 'ethereumSlotDuration' | 'l1GenesisTime' | 'slotDuration' | 'rollupManaLimit' | 'epochDuration'>;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRSxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUN6QyxpQkFBaUIsRUFDakIsc0JBQXNCLEdBQUcsZUFBZSxHQUFHLGNBQWMsR0FBRyxpQkFBaUIsR0FBRyxlQUFlLENBQ2hHLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sequencer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,iBAAiB,EACjB,sBAAsB,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sequencer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,iBAAiB,EACjB,sBAAsB,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,GAAG,eAAe,CAChG,CAAC"}
|
package/dest/test/utils.d.ts
CHANGED
|
@@ -50,4 +50,4 @@ export declare function setupTxsAndBlock(p2p: MockProxy<P2P>, globalVariables: G
|
|
|
50
50
|
txs: Tx[];
|
|
51
51
|
block: L2Block;
|
|
52
52
|
}>;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQU8vRyxPQUFPLEVBQWUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFvQyxNQUFNLGtCQUFrQixDQUFDO0FBRTNHLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdGOztHQUVHO0FBQ0gsd0JBQXNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FNckU7QUFFRDs7R0FFRztBQUNILHdCQUFzQixTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWdCN0Y7QUFFRDs7R0FFRztBQUNILHdCQUFnQixjQUFjLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUluRTtBQUVEOztHQUVHO0FBQ0gsd0JBQXVCLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBSW5GO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQUMsTUFBTSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsRUFBRSxDQUdwRjtBQXVCRDs7R0FFRztBQUNILHdCQUFnQixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUcsYUFBYSxDQVd2RjtBQUVEOztHQUVHO0FBQ0gsd0JBQWdCLHdCQUF3QixDQUN0QyxLQUFLLEVBQUUsT0FBTyxFQUNkLG1CQUFtQixFQUFFLFNBQVMsRUFDOUIsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUMxQixxQkFBcUIsR0FBRSxNQUFXLEdBQ2pDLGtCQUFrQixDQWdCcEI7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLDJCQUEyQixDQUN6QyxLQUFLLEVBQUUsT0FBTyxFQUNkLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLHFCQUFxQixHQUFFLE1BQVcsR0FDakMscUJBQXFCLENBYXZCO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQXNCLGdCQUFnQixDQUNwQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUNuQixlQUFlLEVBQUUsZUFBZSxFQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUNmLE9BQU8sRUFBRSxFQUFFLEdBQ1YsT0FBTyxDQUFDO0lBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQTtDQUFFLENBQUMsQ0FLeEMifQ==
|
package/dest/test/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAO/G,OAAO,EAAe,eAAe,EAAE,KAAK,EAAE,EAAoC,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE7F;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAInE;AAED;;GAEG;AACH,wBAAuB,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAInF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAGpF;AAuBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAWvF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,mBAAmB,EAAE,SAAS,EAC9B,cAAc,CAAC,EAAE,SAAS,EAC1B,qBAAqB,GAAE,MAAW,GACjC,kBAAkB,CAgBpB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,EAClB,qBAAqB,GAAE,MAAW,GACjC,qBAAqB,CAavB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EACnB,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,EAAE,GACV,OAAO,CAAC;IAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAKxC"}
|
package/dest/test/utils.js
CHANGED
|
@@ -7,7 +7,7 @@ import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
|
7
7
|
import { CommitteeAttestation, L2Block } from '@aztec/stdlib/block';
|
|
8
8
|
import { BlockProposal, CheckpointAttestation, CheckpointProposal, ConsensusPayload } from '@aztec/stdlib/p2p';
|
|
9
9
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
10
|
-
import { makeAppendOnlyTreeSnapshot, mockTxForRollup } from '@aztec/stdlib/testing';
|
|
10
|
+
import { TEST_COORDINATION_SIGNATURE_CONTEXT, makeAppendOnlyTreeSnapshot, mockTxForRollup } from '@aztec/stdlib/testing';
|
|
11
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';
|
|
@@ -64,14 +64,14 @@ export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint
|
|
|
64
64
|
* Creates a block proposal from a block and signature
|
|
65
65
|
*/ export function createBlockProposal(block, signature) {
|
|
66
66
|
const txHashes = block.body.txEffects.map((tx)=>tx.txHash);
|
|
67
|
-
return new BlockProposal(block.header, block.indexWithinCheckpoint, Fr.ZERO, block.archive.root, txHashes, signature);
|
|
67
|
+
return new BlockProposal(block.header, block.indexWithinCheckpoint, Fr.ZERO, block.archive.root, txHashes, signature, TEST_COORDINATION_SIGNATURE_CONTEXT);
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
70
|
* Creates a checkpoint proposal from a block and signature
|
|
71
71
|
*/ export function createCheckpointProposal(block, checkpointSignature, blockSignature, feeAssetPriceModifier = 0n) {
|
|
72
72
|
const txHashes = block.body.txEffects.map((tx)=>tx.txHash);
|
|
73
73
|
const checkpointHeader = createCheckpointHeaderFromBlock(block);
|
|
74
|
-
return new CheckpointProposal(checkpointHeader, block.archive.root, feeAssetPriceModifier, checkpointSignature, {
|
|
74
|
+
return new CheckpointProposal(checkpointHeader, block.archive.root, feeAssetPriceModifier, checkpointSignature, TEST_COORDINATION_SIGNATURE_CONTEXT, {
|
|
75
75
|
blockHeader: block.header,
|
|
76
76
|
indexWithinCheckpoint: block.indexWithinCheckpoint,
|
|
77
77
|
txHashes,
|
|
@@ -84,10 +84,11 @@ export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint
|
|
|
84
84
|
* In production, the sender is recovered from the signature.
|
|
85
85
|
*/ export function createCheckpointAttestation(block, signature, sender, feeAssetPriceModifier = 0n) {
|
|
86
86
|
const checkpointHeader = createCheckpointHeaderFromBlock(block);
|
|
87
|
-
const payload = new ConsensusPayload(checkpointHeader, block.archive.root, feeAssetPriceModifier);
|
|
87
|
+
const payload = new ConsensusPayload(checkpointHeader, block.archive.root, feeAssetPriceModifier, TEST_COORDINATION_SIGNATURE_CONTEXT);
|
|
88
88
|
const attestation = new CheckpointAttestation(payload, signature, signature);
|
|
89
|
-
//
|
|
90
|
-
attestation.
|
|
89
|
+
// Bypass signature recovery for testing since we use random signatures
|
|
90
|
+
attestation.getSender = ()=>sender;
|
|
91
|
+
attestation.getProposer = ()=>sender;
|
|
91
92
|
return attestation;
|
|
92
93
|
}
|
|
93
94
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.b3d3157a",
|
|
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": "0.0.1-commit.
|
|
30
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
31
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
32
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
33
|
-
"@aztec/constants": "0.0.1-commit.
|
|
34
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
35
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
36
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
37
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
38
|
-
"@aztec/node-keystore": "0.0.1-commit.
|
|
39
|
-
"@aztec/noir-acvm_js": "0.0.1-commit.
|
|
40
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
41
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
42
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
43
|
-
"@aztec/p2p": "0.0.1-commit.
|
|
44
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
45
|
-
"@aztec/prover-client": "0.0.1-commit.
|
|
46
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
47
|
-
"@aztec/slasher": "0.0.1-commit.
|
|
48
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
49
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
50
|
-
"@aztec/validator-client": "0.0.1-commit.
|
|
51
|
-
"@aztec/validator-ha-signer": "0.0.1-commit.
|
|
52
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
29
|
+
"@aztec/aztec.js": "0.0.1-commit.b3d3157a",
|
|
30
|
+
"@aztec/bb-prover": "0.0.1-commit.b3d3157a",
|
|
31
|
+
"@aztec/blob-client": "0.0.1-commit.b3d3157a",
|
|
32
|
+
"@aztec/blob-lib": "0.0.1-commit.b3d3157a",
|
|
33
|
+
"@aztec/constants": "0.0.1-commit.b3d3157a",
|
|
34
|
+
"@aztec/epoch-cache": "0.0.1-commit.b3d3157a",
|
|
35
|
+
"@aztec/ethereum": "0.0.1-commit.b3d3157a",
|
|
36
|
+
"@aztec/foundation": "0.0.1-commit.b3d3157a",
|
|
37
|
+
"@aztec/l1-artifacts": "0.0.1-commit.b3d3157a",
|
|
38
|
+
"@aztec/node-keystore": "0.0.1-commit.b3d3157a",
|
|
39
|
+
"@aztec/noir-acvm_js": "0.0.1-commit.b3d3157a",
|
|
40
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.b3d3157a",
|
|
41
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.b3d3157a",
|
|
42
|
+
"@aztec/noir-types": "0.0.1-commit.b3d3157a",
|
|
43
|
+
"@aztec/p2p": "0.0.1-commit.b3d3157a",
|
|
44
|
+
"@aztec/protocol-contracts": "0.0.1-commit.b3d3157a",
|
|
45
|
+
"@aztec/prover-client": "0.0.1-commit.b3d3157a",
|
|
46
|
+
"@aztec/simulator": "0.0.1-commit.b3d3157a",
|
|
47
|
+
"@aztec/slasher": "0.0.1-commit.b3d3157a",
|
|
48
|
+
"@aztec/stdlib": "0.0.1-commit.b3d3157a",
|
|
49
|
+
"@aztec/telemetry-client": "0.0.1-commit.b3d3157a",
|
|
50
|
+
"@aztec/validator-client": "0.0.1-commit.b3d3157a",
|
|
51
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.b3d3157a",
|
|
52
|
+
"@aztec/world-state": "0.0.1-commit.b3d3157a",
|
|
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": "0.0.1-commit.
|
|
59
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
58
|
+
"@aztec/archiver": "0.0.1-commit.b3d3157a",
|
|
59
|
+
"@aztec/kv-store": "0.0.1-commit.b3d3157a",
|
|
60
60
|
"@electric-sql/pglite": "^0.3.14",
|
|
61
61
|
"@jest/globals": "^30.0.0",
|
|
62
62
|
"@types/jest": "^30.0.0",
|
|
@@ -12,7 +12,7 @@ import type { DateProvider } from '@aztec/foundation/timer';
|
|
|
12
12
|
import type { KeystoreManager } from '@aztec/node-keystore';
|
|
13
13
|
import type { P2P } from '@aztec/p2p';
|
|
14
14
|
import type { SlasherClientInterface } from '@aztec/slasher';
|
|
15
|
-
import type { L2BlockSink, L2BlockSource } from '@aztec/stdlib/block';
|
|
15
|
+
import type { L2BlockSink, L2BlockSource, ProposedCheckpointSink } from '@aztec/stdlib/block';
|
|
16
16
|
import type { ValidatorClientFullConfig, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
17
17
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
18
18
|
import { L1Metrics, type TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -56,7 +56,7 @@ export class SequencerClient {
|
|
|
56
56
|
worldStateSynchronizer: WorldStateSynchronizer;
|
|
57
57
|
slasherClient: SlasherClientInterface | undefined;
|
|
58
58
|
checkpointsBuilder: FullNodeCheckpointsBuilder;
|
|
59
|
-
l2BlockSource: L2BlockSource & L2BlockSink;
|
|
59
|
+
l2BlockSource: L2BlockSource & L2BlockSink & ProposedCheckpointSink;
|
|
60
60
|
l1ToL2MessageSource: L1ToL2MessageSource;
|
|
61
61
|
telemetry: TelemetryClient;
|
|
62
62
|
publisherFactory?: SequencerPublisherFactory;
|
|
@@ -92,7 +92,7 @@ export class SequencerClient {
|
|
|
92
92
|
bindings: log.getBindings(),
|
|
93
93
|
funder: deps.funderL1TxUtils,
|
|
94
94
|
});
|
|
95
|
-
const rollupContract = new RollupContract(publicClient, config.
|
|
95
|
+
const rollupContract = new RollupContract(publicClient, config.rollupAddress.toString());
|
|
96
96
|
const [l1GenesisTime, slotDuration, rollupManaLimit] = await Promise.all([
|
|
97
97
|
rollupContract.getL1GenesisTime(),
|
|
98
98
|
rollupContract.getSlotDuration(),
|
|
@@ -101,18 +101,17 @@ export class SequencerClient {
|
|
|
101
101
|
|
|
102
102
|
const governanceProposerContract = new GovernanceProposerContract(
|
|
103
103
|
publicClient,
|
|
104
|
-
config.
|
|
104
|
+
config.governanceProposerAddress.toString(),
|
|
105
105
|
);
|
|
106
106
|
const epochCache =
|
|
107
107
|
deps.epochCache ??
|
|
108
108
|
(await EpochCache.create(
|
|
109
|
-
config.
|
|
109
|
+
config.rollupAddress,
|
|
110
110
|
{
|
|
111
111
|
l1RpcUrls: rpcUrls,
|
|
112
112
|
l1ChainId: chainId,
|
|
113
113
|
viemPollingIntervalMS: config.viemPollingIntervalMS,
|
|
114
114
|
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
115
|
-
enableProposerPipelining: config.enableProposerPipelining,
|
|
116
115
|
},
|
|
117
116
|
{ dateProvider: deps.dateProvider },
|
|
118
117
|
));
|
|
@@ -145,7 +144,13 @@ export class SequencerClient {
|
|
|
145
144
|
|
|
146
145
|
const { maxL2BlockGas, maxDABlockGas, maxTxsPerBlock } = capPerBlockLimits(config, rollupManaLimit, log);
|
|
147
146
|
|
|
148
|
-
const l1Constants = {
|
|
147
|
+
const l1Constants = {
|
|
148
|
+
l1GenesisTime,
|
|
149
|
+
slotDuration: Number(slotDuration),
|
|
150
|
+
ethereumSlotDuration,
|
|
151
|
+
rollupManaLimit,
|
|
152
|
+
epochDuration: config.aztecEpochDuration,
|
|
153
|
+
};
|
|
149
154
|
|
|
150
155
|
const sequencer = new Sequencer(
|
|
151
156
|
publisherFactory,
|
package/src/config.ts
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
booleanConfigHelper,
|
|
6
6
|
getConfigFromMappings,
|
|
7
7
|
numberConfigHelper,
|
|
8
|
+
optionalNumberConfigHelper,
|
|
8
9
|
pickConfigMappings,
|
|
9
10
|
} from '@aztec/foundation/config';
|
|
10
11
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
@@ -13,10 +14,9 @@ import { type P2PConfig, p2pConfigMappings } from '@aztec/p2p/config';
|
|
|
13
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
15
|
import {
|
|
15
16
|
type ChainConfig,
|
|
16
|
-
|
|
17
|
+
DEFAULT_MAX_BLOCKS_PER_CHECKPOINT,
|
|
17
18
|
type SequencerConfig,
|
|
18
19
|
chainConfigMappings,
|
|
19
|
-
pipelineConfigMappings,
|
|
20
20
|
sharedSequencerConfigMappings,
|
|
21
21
|
} from '@aztec/stdlib/config';
|
|
22
22
|
import type { ResolvedSequencerConfig } from '@aztec/stdlib/interfaces/server';
|
|
@@ -50,7 +50,9 @@ export const DefaultSequencerConfig = {
|
|
|
50
50
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: 432, // 36 L1 blocks
|
|
51
51
|
skipCollectingAttestations: false,
|
|
52
52
|
skipInvalidateBlockAsProposer: false,
|
|
53
|
+
skipWaitForValidParentCheckpointOnL1: false,
|
|
53
54
|
broadcastInvalidBlockProposal: false,
|
|
55
|
+
broadcastInvalidCheckpointProposalOnly: false,
|
|
54
56
|
injectFakeAttestation: false,
|
|
55
57
|
injectHighSValueAttestation: false,
|
|
56
58
|
injectUnrecoverableSignatureAttestation: false,
|
|
@@ -58,6 +60,7 @@ export const DefaultSequencerConfig = {
|
|
|
58
60
|
shuffleAttestationOrdering: false,
|
|
59
61
|
skipPushProposedBlocksToArchiver: false,
|
|
60
62
|
skipPublishingCheckpointsPercent: 0,
|
|
63
|
+
maxBlocksPerCheckpoint: DEFAULT_MAX_BLOCKS_PER_CHECKPOINT,
|
|
61
64
|
} satisfies ResolvedSequencerConfig;
|
|
62
65
|
|
|
63
66
|
/**
|
|
@@ -70,7 +73,6 @@ export type SequencerClientConfig = SequencerPublisherConfig &
|
|
|
70
73
|
SequencerConfig &
|
|
71
74
|
L1ReaderConfig &
|
|
72
75
|
ChainConfig &
|
|
73
|
-
PipelineConfig &
|
|
74
76
|
Pick<P2PConfig, 'txPublicSetupAllowListExtend'> &
|
|
75
77
|
Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration' | 'aztecEpochDuration'>;
|
|
76
78
|
|
|
@@ -83,7 +85,7 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
83
85
|
maxTxsPerCheckpoint: {
|
|
84
86
|
env: 'SEQ_MAX_TX_PER_CHECKPOINT',
|
|
85
87
|
description: 'The maximum number of txs across all blocks in a checkpoint.',
|
|
86
|
-
|
|
88
|
+
...optionalNumberConfigHelper(),
|
|
87
89
|
},
|
|
88
90
|
minTxsPerBlock: {
|
|
89
91
|
env: 'SEQ_MIN_TX_PER_BLOCK',
|
|
@@ -102,12 +104,12 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
102
104
|
maxL2BlockGas: {
|
|
103
105
|
env: 'SEQ_MAX_L2_BLOCK_GAS',
|
|
104
106
|
description: 'The maximum L2 block gas.',
|
|
105
|
-
|
|
107
|
+
...optionalNumberConfigHelper(),
|
|
106
108
|
},
|
|
107
109
|
maxDABlockGas: {
|
|
108
110
|
env: 'SEQ_MAX_DA_BLOCK_GAS',
|
|
109
111
|
description: 'The maximum DA block gas.',
|
|
110
|
-
|
|
112
|
+
...optionalNumberConfigHelper(),
|
|
111
113
|
},
|
|
112
114
|
perBlockAllocationMultiplier: {
|
|
113
115
|
env: 'SEQ_PER_BLOCK_ALLOCATION_MULTIPLIER',
|
|
@@ -153,7 +155,7 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
153
155
|
l1PublishingTime: {
|
|
154
156
|
env: 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT',
|
|
155
157
|
description: 'How much time (in seconds) we allow in the slot for publishing the L1 tx (defaults to 1 L1 slot).',
|
|
156
|
-
|
|
158
|
+
...optionalNumberConfigHelper(),
|
|
157
159
|
},
|
|
158
160
|
fakeProcessingDelayPerTxMs: {
|
|
159
161
|
description: 'Used for testing to introduce a fake delay after processing each tx',
|
|
@@ -184,10 +186,25 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
184
186
|
description: 'Do not invalidate the previous block if invalid when we are the proposer (for testing only)',
|
|
185
187
|
...booleanConfigHelper(DefaultSequencerConfig.skipInvalidateBlockAsProposer),
|
|
186
188
|
},
|
|
189
|
+
skipWaitForValidParentCheckpointOnL1: {
|
|
190
|
+
description:
|
|
191
|
+
'Bypass the parent checkpoint validity check before submitting a pipelined checkpoint, ' +
|
|
192
|
+
'allowing the proposer to publish even when the parent landed on L1 with invalid attestations (for testing only)',
|
|
193
|
+
...booleanConfigHelper(DefaultSequencerConfig.skipWaitForValidParentCheckpointOnL1),
|
|
194
|
+
},
|
|
187
195
|
broadcastInvalidBlockProposal: {
|
|
188
196
|
description: 'Broadcast invalid block proposals with corrupted state (for testing only)',
|
|
189
197
|
...booleanConfigHelper(DefaultSequencerConfig.broadcastInvalidBlockProposal),
|
|
190
198
|
},
|
|
199
|
+
invalidBlockProposalIndexWithinCheckpoint: {
|
|
200
|
+
description: 'Broadcast an invalid block proposal only at this indexWithinCheckpoint (for testing only)',
|
|
201
|
+
...optionalNumberConfigHelper(),
|
|
202
|
+
},
|
|
203
|
+
broadcastInvalidCheckpointProposalOnly: {
|
|
204
|
+
description:
|
|
205
|
+
'Broadcast invalid checkpoint proposals while keeping the underlying block proposals valid (for testing only). When unset, the checkpoint follows broadcastInvalidBlockProposal.',
|
|
206
|
+
...booleanConfigHelper(DefaultSequencerConfig.broadcastInvalidCheckpointProposalOnly),
|
|
207
|
+
},
|
|
191
208
|
injectFakeAttestation: {
|
|
192
209
|
description: 'Inject a fake attestation (for testing only)',
|
|
193
210
|
...booleanConfigHelper(DefaultSequencerConfig.injectFakeAttestation),
|
|
@@ -228,12 +245,24 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
228
245
|
description: 'Percent probability (0 - 100) of sequencer skipping checkpoint publishing (testing only)',
|
|
229
246
|
...numberConfigHelper(DefaultSequencerConfig.skipPublishingCheckpointsPercent),
|
|
230
247
|
},
|
|
248
|
+
skipBroadcastProposals: {
|
|
249
|
+
description: 'Skip broadcasting checkpoint and block proposals via gossipsub when proposer (for testing only)',
|
|
250
|
+
...booleanConfigHelper(false),
|
|
251
|
+
},
|
|
252
|
+
skipBroadcastCheckpointProposal: {
|
|
253
|
+
description:
|
|
254
|
+
'Skip broadcasting only the CheckpointProposal via gossipsub when proposer; the held last block is broadcast ' +
|
|
255
|
+
'standalone instead so peers still receive it as a proposed-but-uncheckpointed tip (for testing only)',
|
|
256
|
+
...booleanConfigHelper(false),
|
|
257
|
+
},
|
|
258
|
+
pauseProposingForSlots: {
|
|
259
|
+
description:
|
|
260
|
+
'List of slots for which the sequencer will not produce a proposal (for testing only). Attestation paths are unaffected.',
|
|
261
|
+
},
|
|
231
262
|
...pickConfigMappings(p2pConfigMappings, ['txPublicSetupAllowListExtend']),
|
|
232
263
|
};
|
|
233
264
|
|
|
234
265
|
export const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig> = {
|
|
235
|
-
// chainConfigMappings must come first: its l1Contracts only maps rollupAddress,
|
|
236
|
-
// while l1ReaderConfigMappings (spread later) maps all L1 contract addresses.
|
|
237
266
|
...chainConfigMappings,
|
|
238
267
|
...validatorClientConfigMappings,
|
|
239
268
|
...sequencerConfigMappings,
|
|
@@ -241,7 +270,6 @@ export const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientCo
|
|
|
241
270
|
...l1ReaderConfigMappings,
|
|
242
271
|
...sequencerTxSenderConfigMappings,
|
|
243
272
|
...sequencerPublisherConfigMappings,
|
|
244
|
-
...pipelineConfigMappings,
|
|
245
273
|
...pickConfigMappings(l1ContractsConfigMappings, ['ethereumSlotDuration', 'aztecSlotDuration', 'aztecEpochDuration']),
|
|
246
274
|
};
|
|
247
275
|
|
|
@@ -27,7 +27,7 @@ export class FeeProviderImpl implements FeeProvider {
|
|
|
27
27
|
this.ethereumSlotDuration = config.ethereumSlotDuration;
|
|
28
28
|
this.l1GenesisTime = config.l1GenesisTime;
|
|
29
29
|
|
|
30
|
-
this.rollupContract = new RollupContract(this.publicClient, config.
|
|
30
|
+
this.rollupContract = new RollupContract(this.publicClient, config.rollupAddress);
|
|
31
31
|
this.feePredictor = new FeePredictor(this.rollupContract, this.publicClient, this.dateProvider, {
|
|
32
32
|
slotDuration: config.slotDuration,
|
|
33
33
|
l1GenesisTime: config.l1GenesisTime,
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
type SimulationOverridesPlan,
|
|
4
4
|
buildSimulationOverridesStateOverride,
|
|
5
5
|
} from '@aztec/ethereum/contracts';
|
|
6
|
-
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
7
6
|
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
8
7
|
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
9
8
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
@@ -20,7 +19,7 @@ import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
|
20
19
|
|
|
21
20
|
/** Configuration for the GlobalVariableBuilder (excludes L1 client config). */
|
|
22
21
|
export type GlobalVariableBuilderConfig = {
|
|
23
|
-
|
|
22
|
+
rollupAddress: EthAddress;
|
|
24
23
|
ethereumSlotDuration: number;
|
|
25
24
|
rollupVersion: bigint;
|
|
26
25
|
} & Pick<L1RollupConstants, 'slotDuration' | 'l1GenesisTime'>;
|
|
@@ -49,7 +48,7 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
49
48
|
this.aztecSlotDuration = config.slotDuration;
|
|
50
49
|
this.l1GenesisTime = config.l1GenesisTime;
|
|
51
50
|
|
|
52
|
-
this.rollupContract = new RollupContract(this.publicClient, config.
|
|
51
|
+
this.rollupContract = new RollupContract(this.publicClient, config.rollupAddress);
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
/**
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
export * from './client/index.js';
|
|
2
2
|
export * from './config.js';
|
|
3
3
|
export * from './publisher/index.js';
|
|
4
|
-
export {
|
|
4
|
+
export {
|
|
5
|
+
AutomineSequencer,
|
|
6
|
+
type AutomineSequencerConstants,
|
|
7
|
+
type AutomineSequencerDeps,
|
|
8
|
+
createAutomineSequencer,
|
|
9
|
+
type CreateAutomineSequencerArgs,
|
|
10
|
+
Sequencer,
|
|
11
|
+
SequencerState,
|
|
12
|
+
type SequencerEvents,
|
|
13
|
+
} from './sequencer/index.js';
|
|
5
14
|
|
|
6
15
|
// Used by the node to simulate public parts of transactions. Should these be moved to a shared library?
|
|
7
16
|
// ISSUE(#9832)
|
package/src/publisher/config.ts
CHANGED
|
@@ -115,7 +115,7 @@ export function getPublisherConfigFromSequencerConfig(config: SequencerPublisher
|
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
export const proverTxSenderConfigMappings: ConfigMappingsType<
|
|
118
|
+
export const proverTxSenderConfigMappings: ConfigMappingsType<ProverTxSenderConfig> = {
|
|
119
119
|
...l1ReaderConfigMappings,
|
|
120
120
|
proverPublisherPrivateKeys: {
|
|
121
121
|
env: `PROVER_PUBLISHER_PRIVATE_KEYS`,
|
|
@@ -133,7 +133,7 @@ export const proverTxSenderConfigMappings: ConfigMappingsType<Omit<ProverTxSende
|
|
|
133
133
|
},
|
|
134
134
|
};
|
|
135
135
|
|
|
136
|
-
export const sequencerTxSenderConfigMappings: ConfigMappingsType<
|
|
136
|
+
export const sequencerTxSenderConfigMappings: ConfigMappingsType<SequencerTxSenderConfig> = {
|
|
137
137
|
...l1ReaderConfigMappings,
|
|
138
138
|
sequencerPublisherPrivateKeys: {
|
|
139
139
|
env: `SEQ_PUBLISHER_PRIVATE_KEYS`,
|