@aztec/sequencer-client 0.82.3 → 0.83.0
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/sequencer-client.d.ts +1 -0
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +10 -1
- package/dest/config.js +1 -1
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +3 -2
- package/dest/sequencer/sequencer.d.ts +1 -0
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +6 -3
- package/dest/slasher/slasher_client.d.ts.map +1 -1
- package/dest/slasher/slasher_client.js +7 -4
- package/dest/tx_validator/tx_validator_factory.d.ts +4 -4
- package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.js +5 -9
- package/package.json +25 -25
- package/src/client/sequencer-client.ts +13 -1
- package/src/config.ts +1 -1
- package/src/publisher/sequencer-publisher.ts +4 -2
- package/src/sequencer/sequencer.ts +7 -3
- package/src/slasher/slasher_client.ts +10 -4
- package/src/tx_validator/tx_validator_factory.ts +7 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,eAAe;IACd,SAAS,CAAC,SAAS,EAAE,SAAS;gBAApB,SAAS,EAAE,SAAS;IAE1C;;;;;;;;;;;;OAYG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE;QACJ,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;QAC7C,SAAS,EAAE,GAAG,CAAC;QACf,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,aAAa,EAAE,aAAa,CAAC;QAC7B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,EAAE,aAAa,CAAC;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC;QAC3B,SAAS,CAAC,EAAE,kBAAkB,CAAC;QAC/B,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,SAAS,CAAC,EAAE,kBAAkB,CAAC;KAChC;
|
|
1
|
+
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,eAAe;IACd,SAAS,CAAC,SAAS,EAAE,SAAS;gBAApB,SAAS,EAAE,SAAS;IAE1C;;;;;;;;;;;;OAYG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE;QACJ,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;QAC7C,SAAS,EAAE,GAAG,CAAC;QACf,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,aAAa,EAAE,aAAa,CAAC;QAC7B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,EAAE,aAAa,CAAC;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC;QAC3B,SAAS,CAAC,EAAE,kBAAkB,CAAC;QAC/B,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,SAAS,CAAC,EAAE,kBAAkB,CAAC;KAChC;IAyHH;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB,uGAAuG;IAChG,KAAK;IAIZ;;OAEG;IACI,OAAO;IAId,IAAI,QAAQ,IAAI,UAAU,CAEzB;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,gBAAgB,IAAI,UAAU,CAEjC;IAED,IAAI,gBAAgB,IAAI,UAAU,GAAG,SAAS,CAE7C;IAED,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;CACF"}
|
|
@@ -66,6 +66,11 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
66
66
|
const globalsBuilder = new GlobalVariableBuilder(config);
|
|
67
67
|
const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, deps.dateProvider, telemetryClient);
|
|
68
68
|
const ethereumSlotDuration = config.ethereumSlotDuration;
|
|
69
|
+
const rollupManaLimit = await rollupContract.getManaLimit();
|
|
70
|
+
const sequencerManaLimit = config.maxL2BlockGas ?? Number(rollupManaLimit);
|
|
71
|
+
if (sequencerManaLimit > Number(rollupManaLimit)) {
|
|
72
|
+
throw new Error(`provided maxL2BlockGas of ${sequencerManaLimit} is greater than the maximum allowed by the L1 (${rollupManaLimit})`);
|
|
73
|
+
}
|
|
69
74
|
// When running in anvil, assume we can post a tx up until the very last second of an L1 slot.
|
|
70
75
|
// Otherwise, assume we must have broadcasted the tx before the slot started (we use a default
|
|
71
76
|
// maxL1TxInclusionTimeIntoSlot of zero) to get the tx into that L1 slot.
|
|
@@ -80,7 +85,8 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
80
85
|
};
|
|
81
86
|
const sequencer = new Sequencer(publisher, validatorClient, globalsBuilder, p2pClient, worldStateSynchronizer, slasherClient, new LightweightBlockBuilderFactory(telemetryClient), l2BlockSource, l1ToL2MessageSource, publicProcessorFactory, contractDataSource, l1Constants, deps.dateProvider, {
|
|
82
87
|
...config,
|
|
83
|
-
maxL1TxInclusionTimeIntoSlot
|
|
88
|
+
maxL1TxInclusionTimeIntoSlot,
|
|
89
|
+
maxL2BlockGas: sequencerManaLimit
|
|
84
90
|
}, telemetryClient);
|
|
85
91
|
await validatorClient?.start();
|
|
86
92
|
await sequencer.start();
|
|
@@ -117,4 +123,7 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
117
123
|
get validatorAddress() {
|
|
118
124
|
return this.sequencer.getValidatorAddress();
|
|
119
125
|
}
|
|
126
|
+
get maxL2BlockGas() {
|
|
127
|
+
return this.sequencer.maxL2BlockGas;
|
|
128
|
+
}
|
|
120
129
|
}
|
package/dest/config.js
CHANGED
|
@@ -67,7 +67,7 @@ export const sequencerConfigMappings = {
|
|
|
67
67
|
env: 'SEQ_ENFORCE_TIME_TABLE',
|
|
68
68
|
description: 'Whether to enforce the time table when building blocks',
|
|
69
69
|
...booleanConfigHelper(),
|
|
70
|
-
defaultValue:
|
|
70
|
+
defaultValue: true
|
|
71
71
|
},
|
|
72
72
|
governanceProposerPayload: {
|
|
73
73
|
env: 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -218,15 +218,16 @@ export class SequencerPublisher {
|
|
|
218
218
|
}
|
|
219
219
|
const cachedLastVote = this.myLastVotes[voteType];
|
|
220
220
|
this.myLastVotes[voteType] = slotNumber;
|
|
221
|
+
const action = voteType === 0 ? 'governance-vote' : 'slashing-vote';
|
|
221
222
|
this.addRequest({
|
|
222
|
-
action
|
|
223
|
+
action,
|
|
223
224
|
request: base.createVoteRequest(payload.toString()),
|
|
224
225
|
lastValidL2Slot: slotNumber,
|
|
225
226
|
onResult: (_request, result)=>{
|
|
226
227
|
if (!result || result.receipt.status !== 'success') {
|
|
227
228
|
this.myLastVotes[voteType] = cachedLastVote;
|
|
228
229
|
} else {
|
|
229
|
-
this.log.info(`
|
|
230
|
+
this.log.info(`Voting in [${action}] for ${payload} at slot ${slotNumber} in round ${round}`);
|
|
230
231
|
}
|
|
231
232
|
}
|
|
232
233
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
19
19
|
import { BlockHeader, ContentCommitment, StateReference, Tx } from '@aztec/stdlib/tx';
|
|
20
20
|
import { Attributes, L1Metrics, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
21
21
|
import { VoteType } from '../publisher/sequencer-publisher.js';
|
|
22
|
-
import {
|
|
22
|
+
import { createValidatorForBlockBuilding } from '../tx_validator/tx_validator_factory.js';
|
|
23
23
|
import { getDefaultAllowedSetupFunctions } from './allowed.js';
|
|
24
24
|
import { SequencerMetrics } from './metrics.js';
|
|
25
25
|
import { SequencerTimetable, SequencerTooSlowError } from './timetable.js';
|
|
@@ -370,7 +370,7 @@ export { SequencerState };
|
|
|
370
370
|
now: new Date(this.dateProvider.now()),
|
|
371
371
|
deadline
|
|
372
372
|
});
|
|
373
|
-
const
|
|
373
|
+
const validator = createValidatorForBlockBuilding(publicProcessorDBFork, this.contractDataSource, newGlobalVariables, this.allowedInSetup);
|
|
374
374
|
// TODO(#11000): Public processor should just handle processing, one tx at a time. It should be responsibility
|
|
375
375
|
// of the sequencer to update world state and iterate over txs. We should refactor this along with unifying the
|
|
376
376
|
// publicProcessorFork and orchestratorFork, to avoid doing tree insertions twice when building the block.
|
|
@@ -385,7 +385,7 @@ export { SequencerState };
|
|
|
385
385
|
deadline,
|
|
386
386
|
...proposerLimits
|
|
387
387
|
};
|
|
388
|
-
const [publicProcessorDuration, [processedTxs, failedTxs]] = await elapsed(()=>processor.process(pendingTxs, limits,
|
|
388
|
+
const [publicProcessorDuration, [processedTxs, failedTxs]] = await elapsed(()=>processor.process(pendingTxs, limits, validator));
|
|
389
389
|
if (!opts.validateOnly && failedTxs.length > 0) {
|
|
390
390
|
const failedTxData = failedTxs.map((fail)=>fail.tx);
|
|
391
391
|
const failedTxHashes = await Tx.getHashes(failedTxData);
|
|
@@ -609,6 +609,9 @@ export { SequencerState };
|
|
|
609
609
|
get feeRecipient() {
|
|
610
610
|
return this._feeRecipient;
|
|
611
611
|
}
|
|
612
|
+
get maxL2BlockGas() {
|
|
613
|
+
return this.config.maxL2BlockGas;
|
|
614
|
+
}
|
|
612
615
|
}
|
|
613
616
|
_ts_decorate([
|
|
614
617
|
trackSpan('Sequencer.work')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slasher_client.d.ts","sourceRoot":"","sources":["../../src/slasher/slasher_client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAE/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,eAAe,EAAE,UAAU,EAAsB,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,KAAK,qBAAqB,EAA+D,MAAM,MAAM,CAAC;AAE/G;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;IAC1B;;OAEG;IACH,eAAe,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAQD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAWzC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,WAAW,CAAoB;IAEvC,SAAS,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,OAAO,eAAe,EAAE,gBAAgB,CAAC,CAAa;IAK7G,OAAO,CAAC,cAAc,CAAc;gBAG1B,MAAM,EAAE,aAAa,GAAG,iBAAiB,GAAG,cAAc,EAC1D,aAAa,EAAE,yBAAyB,EAChD,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA0B;IAwBhC,KAAK;IAMC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"slasher_client.d.ts","sourceRoot":"","sources":["../../src/slasher/slasher_client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAE/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,eAAe,EAAE,UAAU,EAAsB,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,KAAK,qBAAqB,EAA+D,MAAM,MAAM,CAAC;AAE/G;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;IAC1B;;OAEG;IACH,eAAe,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAQD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAWzC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,WAAW,CAAoB;IAEvC,SAAS,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,OAAO,eAAe,EAAE,gBAAgB,CAAC,CAAa;IAK7G,OAAO,CAAC,cAAc,CAAc;gBAG1B,MAAM,EAAE,aAAa,GAAG,iBAAiB,GAAG,cAAc,EAC1D,aAAa,EAAE,yBAAyB,EAChD,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA0B;IAwBhC,KAAK;IAMC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAgC1E,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAavE;;;OAGG;IACI,IAAI;IAMX,OAAO,CAAC,mBAAmB;CAqB5B"}
|
|
@@ -49,7 +49,7 @@ import { createPublicClient, fallback, getAddress, getContract, http } from 'vie
|
|
|
49
49
|
slashingAmount;
|
|
50
50
|
constructor(config, l2BlockSource, telemetry = getTelemetryClient(), log = createLogger('slasher')){
|
|
51
51
|
super(telemetry, 'slasher'), this.config = config, this.l2BlockSource = l2BlockSource, this.log = log, this.slashEvents = [], this.slashFactoryContract = undefined, this.slashingAmount = 0n;
|
|
52
|
-
if (config.l1Contracts.slashFactoryAddress && config.l1Contracts.slashFactoryAddress
|
|
52
|
+
if (config.l1Contracts.slashFactoryAddress && !config.l1Contracts.slashFactoryAddress.equals(EthAddress.ZERO)) {
|
|
53
53
|
const chain = createEthereumChain(config.l1RpcUrls, config.l1ChainId);
|
|
54
54
|
const publicClient = createPublicClient({
|
|
55
55
|
chain: chain.chainInfo,
|
|
@@ -90,7 +90,7 @@ import { createPublicClient, fallback, getAddress, getContract, http } from 'vie
|
|
|
90
90
|
]);
|
|
91
91
|
if (!isDeployed) {
|
|
92
92
|
// The proposal cannot be executed until it is deployed
|
|
93
|
-
this.log.verbose(`Voting on not yet deployed payload: ${payloadAddress}`);
|
|
93
|
+
this.log.verbose(`Voting on not yet deployed payload for epoch ${slashEvent.epoch} and amount ${slashEvent.amount} at: ${payloadAddress}`);
|
|
94
94
|
}
|
|
95
95
|
return EthAddress.fromString(payloadAddress);
|
|
96
96
|
}
|
|
@@ -115,10 +115,13 @@ import { createPublicClient, fallback, getAddress, getContract, http } from 'vie
|
|
|
115
115
|
this.l2BlockSource.removeListener(L2BlockSourceEvents.L2PruneDetected, this.handlePruneL2Blocks.bind(this));
|
|
116
116
|
this.log.info('Slasher client stopped.');
|
|
117
117
|
}
|
|
118
|
-
// I need to get the slot number from the block that was just pruned
|
|
119
118
|
handlePruneL2Blocks(event) {
|
|
119
|
+
// We do not try to slash if the penalty is 0
|
|
120
|
+
if (this.slashingAmount == 0n) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
120
123
|
const { slotNumber, epochNumber } = event;
|
|
121
|
-
this.log.info(`Detected chain prune. Punishing the validators at epoch ${epochNumber}
|
|
124
|
+
this.log.info(`Detected chain prune. Punishing the validators at epoch ${epochNumber}`, event);
|
|
122
125
|
// Set the lifetime such that we have a full round that we could vote throughout.
|
|
123
126
|
const slotsIntoRound = slotNumber % BigInt(this.config.slashingRoundSize);
|
|
124
127
|
const toNext = slotsIntoRound == 0n ? 0n : BigInt(this.config.slashingRoundSize) - slotsIntoRound;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
2
2
|
import type { GasFees } from '@aztec/stdlib/gas';
|
|
3
3
|
import type { AllowedElement, ClientProtocolCircuitVerifier, MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
|
|
4
|
-
import { GlobalVariables, type
|
|
4
|
+
import { GlobalVariables, type Tx, type TxValidator } from '@aztec/stdlib/tx';
|
|
5
5
|
import { NullifierCache } from './nullifier_cache.js';
|
|
6
|
-
export declare function createValidatorForAcceptingTxs(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { blockNumber, l1ChainId, setupAllowList, gasFees, skipFeeEnforcement, }: {
|
|
6
|
+
export declare function createValidatorForAcceptingTxs(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { blockNumber, l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, }: {
|
|
7
7
|
blockNumber: number;
|
|
8
8
|
l1ChainId: number;
|
|
9
|
+
rollupVersion: number;
|
|
9
10
|
setupAllowList: AllowedElement[];
|
|
10
11
|
gasFees: GasFees;
|
|
11
12
|
skipFeeEnforcement?: boolean;
|
|
12
13
|
}): TxValidator<Tx>;
|
|
13
|
-
export declare function
|
|
14
|
+
export declare function createValidatorForBlockBuilding(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, globalVariables: GlobalVariables, setupAllowList: AllowedElement[]): {
|
|
14
15
|
preprocessValidator: TxValidator<Tx>;
|
|
15
|
-
postprocessValidator: TxValidator<ProcessedTx>;
|
|
16
16
|
nullifierCache: NullifierCache;
|
|
17
17
|
};
|
|
18
18
|
//# sourceMappingURL=tx_validator_factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EACV,cAAc,EACd,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EACV,cAAc,EACd,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI9E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,6BAA6B,GAAG,SAAS,EACnD,EACE,WAAW,EACX,SAAS,EACT,aAAa,EACb,cAAc,EACd,OAAO,EACP,kBAAkB,GACnB,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,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;CAC9B,GACA,WAAW,CAAC,EAAE,CAAC,CAkBjB;AAED,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,EAAE,GAC/B;IACD,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;CAChC,CAgBA"}
|
|
@@ -7,10 +7,10 @@ import { ArchiveCache } from './archive_cache.js';
|
|
|
7
7
|
import { GasTxValidator } from './gas_validator.js';
|
|
8
8
|
import { NullifierCache } from './nullifier_cache.js';
|
|
9
9
|
import { PhasesTxValidator } from './phases_validator.js';
|
|
10
|
-
export function createValidatorForAcceptingTxs(db, contractDataSource, verifier, { blockNumber, l1ChainId, setupAllowList, gasFees, skipFeeEnforcement }) {
|
|
10
|
+
export function createValidatorForAcceptingTxs(db, contractDataSource, verifier, { blockNumber, l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement }) {
|
|
11
11
|
const validators = [
|
|
12
12
|
new DataTxValidator(),
|
|
13
|
-
new MetadataTxValidator(new Fr(l1ChainId), new Fr(blockNumber)),
|
|
13
|
+
new MetadataTxValidator(new Fr(l1ChainId), new Fr(rollupVersion), new Fr(blockNumber)),
|
|
14
14
|
new DoubleSpendTxValidator(new NullifierCache(db)),
|
|
15
15
|
new PhasesTxValidator(contractDataSource, setupAllowList, blockNumber),
|
|
16
16
|
new BlockHeaderTxValidator(new ArchiveCache(db))
|
|
@@ -23,13 +23,12 @@ export function createValidatorForAcceptingTxs(db, contractDataSource, verifier,
|
|
|
23
23
|
}
|
|
24
24
|
return new AggregateTxValidator(...validators);
|
|
25
25
|
}
|
|
26
|
-
export function
|
|
26
|
+
export function createValidatorForBlockBuilding(db, contractDataSource, globalVariables, setupAllowList) {
|
|
27
27
|
const nullifierCache = new NullifierCache(db);
|
|
28
28
|
const archiveCache = new ArchiveCache(db);
|
|
29
29
|
const publicStateSource = new DatabasePublicStateSource(db);
|
|
30
30
|
return {
|
|
31
31
|
preprocessValidator: preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource, globalVariables, setupAllowList),
|
|
32
|
-
postprocessValidator: postprocessValidator(nullifierCache),
|
|
33
32
|
nullifierCache
|
|
34
33
|
};
|
|
35
34
|
}
|
|
@@ -45,13 +44,10 @@ class DatabasePublicStateSource {
|
|
|
45
44
|
return Fr.ZERO;
|
|
46
45
|
}
|
|
47
46
|
const preimage = await this.db.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
|
|
48
|
-
return preimage.value;
|
|
47
|
+
return preimage.leaf.value;
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
50
|
function preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource, globalVariables, setupAllowList) {
|
|
52
51
|
// We don't include the TxProofValidator nor the DataTxValidator here because they are already checked by the time we get to block building.
|
|
53
|
-
return new AggregateTxValidator(new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList, globalVariables.blockNumber.toNumber()), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, globalVariables.gasFees), new BlockHeaderTxValidator(archiveCache));
|
|
54
|
-
}
|
|
55
|
-
function postprocessValidator(nullifierCache) {
|
|
56
|
-
return new DoubleSpendTxValidator(nullifierCache);
|
|
52
|
+
return new AggregateTxValidator(new MetadataTxValidator(globalVariables.chainId, globalVariables.version, globalVariables.blockNumber), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList, globalVariables.blockNumber.toNumber()), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, globalVariables.gasFees), new BlockHeaderTxValidator(archiveCache));
|
|
57
53
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.83.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -28,36 +28,36 @@
|
|
|
28
28
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aztec/aztec.js": "0.
|
|
32
|
-
"@aztec/bb-prover": "0.
|
|
33
|
-
"@aztec/blob-lib": "0.
|
|
34
|
-
"@aztec/blob-sink": "0.
|
|
35
|
-
"@aztec/constants": "0.
|
|
36
|
-
"@aztec/epoch-cache": "0.
|
|
37
|
-
"@aztec/ethereum": "0.
|
|
38
|
-
"@aztec/foundation": "0.
|
|
39
|
-
"@aztec/l1-artifacts": "0.
|
|
40
|
-
"@aztec/merkle-tree": "0.
|
|
41
|
-
"@aztec/noir-acvm_js": "0.
|
|
42
|
-
"@aztec/noir-contracts.js": "0.
|
|
43
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
44
|
-
"@aztec/noir-types": "0.
|
|
45
|
-
"@aztec/p2p": "0.
|
|
46
|
-
"@aztec/protocol-contracts": "0.
|
|
47
|
-
"@aztec/prover-client": "0.
|
|
48
|
-
"@aztec/simulator": "0.
|
|
49
|
-
"@aztec/stdlib": "0.
|
|
50
|
-
"@aztec/telemetry-client": "0.
|
|
51
|
-
"@aztec/validator-client": "0.
|
|
52
|
-
"@aztec/world-state": "0.
|
|
31
|
+
"@aztec/aztec.js": "0.83.0",
|
|
32
|
+
"@aztec/bb-prover": "0.83.0",
|
|
33
|
+
"@aztec/blob-lib": "0.83.0",
|
|
34
|
+
"@aztec/blob-sink": "0.83.0",
|
|
35
|
+
"@aztec/constants": "0.83.0",
|
|
36
|
+
"@aztec/epoch-cache": "0.83.0",
|
|
37
|
+
"@aztec/ethereum": "0.83.0",
|
|
38
|
+
"@aztec/foundation": "0.83.0",
|
|
39
|
+
"@aztec/l1-artifacts": "0.83.0",
|
|
40
|
+
"@aztec/merkle-tree": "0.83.0",
|
|
41
|
+
"@aztec/noir-acvm_js": "0.83.0",
|
|
42
|
+
"@aztec/noir-contracts.js": "0.83.0",
|
|
43
|
+
"@aztec/noir-protocol-circuits-types": "0.83.0",
|
|
44
|
+
"@aztec/noir-types": "0.83.0",
|
|
45
|
+
"@aztec/p2p": "0.83.0",
|
|
46
|
+
"@aztec/protocol-contracts": "0.83.0",
|
|
47
|
+
"@aztec/prover-client": "0.83.0",
|
|
48
|
+
"@aztec/simulator": "0.83.0",
|
|
49
|
+
"@aztec/stdlib": "0.83.0",
|
|
50
|
+
"@aztec/telemetry-client": "0.83.0",
|
|
51
|
+
"@aztec/validator-client": "0.83.0",
|
|
52
|
+
"@aztec/world-state": "0.83.0",
|
|
53
53
|
"lodash.chunk": "^4.2.0",
|
|
54
54
|
"lodash.pick": "^4.4.0",
|
|
55
55
|
"tslib": "^2.4.0",
|
|
56
56
|
"viem": "2.23.7"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@aztec/archiver": "0.
|
|
60
|
-
"@aztec/kv-store": "0.
|
|
59
|
+
"@aztec/archiver": "0.83.0",
|
|
60
|
+
"@aztec/kv-store": "0.83.0",
|
|
61
61
|
"@jest/globals": "^29.5.0",
|
|
62
62
|
"@types/jest": "^29.5.0",
|
|
63
63
|
"@types/levelup": "^5.1.2",
|
|
@@ -141,6 +141,14 @@ export class SequencerClient {
|
|
|
141
141
|
|
|
142
142
|
const ethereumSlotDuration = config.ethereumSlotDuration;
|
|
143
143
|
|
|
144
|
+
const rollupManaLimit = await rollupContract.getManaLimit();
|
|
145
|
+
const sequencerManaLimit = config.maxL2BlockGas ?? Number(rollupManaLimit);
|
|
146
|
+
if (sequencerManaLimit > Number(rollupManaLimit)) {
|
|
147
|
+
throw new Error(
|
|
148
|
+
`provided maxL2BlockGas of ${sequencerManaLimit} is greater than the maximum allowed by the L1 (${rollupManaLimit})`,
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
144
152
|
// When running in anvil, assume we can post a tx up until the very last second of an L1 slot.
|
|
145
153
|
// Otherwise, assume we must have broadcasted the tx before the slot started (we use a default
|
|
146
154
|
// maxL1TxInclusionTimeIntoSlot of zero) to get the tx into that L1 slot.
|
|
@@ -170,7 +178,7 @@ export class SequencerClient {
|
|
|
170
178
|
contractDataSource,
|
|
171
179
|
l1Constants,
|
|
172
180
|
deps.dateProvider,
|
|
173
|
-
{ ...config, maxL1TxInclusionTimeIntoSlot },
|
|
181
|
+
{ ...config, maxL1TxInclusionTimeIntoSlot, maxL2BlockGas: sequencerManaLimit },
|
|
174
182
|
telemetryClient,
|
|
175
183
|
);
|
|
176
184
|
await validatorClient?.start();
|
|
@@ -220,4 +228,8 @@ export class SequencerClient {
|
|
|
220
228
|
get validatorAddress(): EthAddress | undefined {
|
|
221
229
|
return this.sequencer.getValidatorAddress();
|
|
222
230
|
}
|
|
231
|
+
|
|
232
|
+
get maxL2BlockGas(): number | undefined {
|
|
233
|
+
return this.sequencer.maxL2BlockGas;
|
|
234
|
+
}
|
|
223
235
|
}
|
package/src/config.ts
CHANGED
|
@@ -99,7 +99,7 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
99
99
|
env: 'SEQ_ENFORCE_TIME_TABLE',
|
|
100
100
|
description: 'Whether to enforce the time table when building blocks',
|
|
101
101
|
...booleanConfigHelper(),
|
|
102
|
-
defaultValue:
|
|
102
|
+
defaultValue: true,
|
|
103
103
|
},
|
|
104
104
|
governanceProposerPayload: {
|
|
105
105
|
env: 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS',
|
|
@@ -336,15 +336,17 @@ export class SequencerPublisher {
|
|
|
336
336
|
const cachedLastVote = this.myLastVotes[voteType];
|
|
337
337
|
this.myLastVotes[voteType] = slotNumber;
|
|
338
338
|
|
|
339
|
+
const action = voteType === VoteType.GOVERNANCE ? 'governance-vote' : 'slashing-vote';
|
|
340
|
+
|
|
339
341
|
this.addRequest({
|
|
340
|
-
action
|
|
342
|
+
action,
|
|
341
343
|
request: base.createVoteRequest(payload.toString()),
|
|
342
344
|
lastValidL2Slot: slotNumber,
|
|
343
345
|
onResult: (_request, result) => {
|
|
344
346
|
if (!result || result.receipt.status !== 'success') {
|
|
345
347
|
this.myLastVotes[voteType] = cachedLastVote;
|
|
346
348
|
} else {
|
|
347
|
-
this.log.info(`
|
|
349
|
+
this.log.info(`Voting in [${action}] for ${payload} at slot ${slotNumber} in round ${round}`);
|
|
348
350
|
}
|
|
349
351
|
},
|
|
350
352
|
});
|
|
@@ -46,7 +46,7 @@ import type { ValidatorClient } from '@aztec/validator-client';
|
|
|
46
46
|
import type { GlobalVariableBuilder } from '../global_variable_builder/global_builder.js';
|
|
47
47
|
import { type SequencerPublisher, VoteType } from '../publisher/sequencer-publisher.js';
|
|
48
48
|
import type { SlasherClient } from '../slasher/slasher_client.js';
|
|
49
|
-
import {
|
|
49
|
+
import { createValidatorForBlockBuilding } from '../tx_validator/tx_validator_factory.js';
|
|
50
50
|
import { getDefaultAllowedSetupFunctions } from './allowed.js';
|
|
51
51
|
import type { SequencerConfig } from './config.js';
|
|
52
52
|
import { SequencerMetrics } from './metrics.js';
|
|
@@ -465,7 +465,7 @@ export class Sequencer {
|
|
|
465
465
|
deadline,
|
|
466
466
|
});
|
|
467
467
|
|
|
468
|
-
const
|
|
468
|
+
const validator = createValidatorForBlockBuilding(
|
|
469
469
|
publicProcessorDBFork,
|
|
470
470
|
this.contractDataSource,
|
|
471
471
|
newGlobalVariables,
|
|
@@ -482,7 +482,7 @@ export class Sequencer {
|
|
|
482
482
|
};
|
|
483
483
|
const limits = opts.validateOnly ? { deadline } : { deadline, ...proposerLimits };
|
|
484
484
|
const [publicProcessorDuration, [processedTxs, failedTxs]] = await elapsed(() =>
|
|
485
|
-
processor.process(pendingTxs, limits,
|
|
485
|
+
processor.process(pendingTxs, limits, validator),
|
|
486
486
|
);
|
|
487
487
|
|
|
488
488
|
if (!opts.validateOnly && failedTxs.length > 0) {
|
|
@@ -773,4 +773,8 @@ export class Sequencer {
|
|
|
773
773
|
get feeRecipient(): AztecAddress {
|
|
774
774
|
return this._feeRecipient;
|
|
775
775
|
}
|
|
776
|
+
|
|
777
|
+
get maxL2BlockGas(): number | undefined {
|
|
778
|
+
return this.config.maxL2BlockGas;
|
|
779
|
+
}
|
|
776
780
|
}
|
|
@@ -94,7 +94,7 @@ export class SlasherClient extends WithTracer {
|
|
|
94
94
|
) {
|
|
95
95
|
super(telemetry, 'slasher');
|
|
96
96
|
|
|
97
|
-
if (config.l1Contracts.slashFactoryAddress && config.l1Contracts.slashFactoryAddress
|
|
97
|
+
if (config.l1Contracts.slashFactoryAddress && !config.l1Contracts.slashFactoryAddress.equals(EthAddress.ZERO)) {
|
|
98
98
|
const chain = createEthereumChain(config.l1RpcUrls, config.l1ChainId);
|
|
99
99
|
const publicClient = createPublicClient({
|
|
100
100
|
chain: chain.chainInfo,
|
|
@@ -144,7 +144,9 @@ export class SlasherClient extends WithTracer {
|
|
|
144
144
|
|
|
145
145
|
if (!isDeployed) {
|
|
146
146
|
// The proposal cannot be executed until it is deployed
|
|
147
|
-
this.log.verbose(
|
|
147
|
+
this.log.verbose(
|
|
148
|
+
`Voting on not yet deployed payload for epoch ${slashEvent.epoch} and amount ${slashEvent.amount} at: ${payloadAddress}`,
|
|
149
|
+
);
|
|
148
150
|
}
|
|
149
151
|
|
|
150
152
|
return EthAddress.fromString(payloadAddress);
|
|
@@ -173,10 +175,14 @@ export class SlasherClient extends WithTracer {
|
|
|
173
175
|
this.log.info('Slasher client stopped.');
|
|
174
176
|
}
|
|
175
177
|
|
|
176
|
-
// I need to get the slot number from the block that was just pruned
|
|
177
178
|
private handlePruneL2Blocks(event: L2BlockSourceEvent): void {
|
|
179
|
+
// We do not try to slash if the penalty is 0
|
|
180
|
+
if (this.slashingAmount == 0n) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
|
|
178
184
|
const { slotNumber, epochNumber } = event;
|
|
179
|
-
this.log.info(`Detected chain prune. Punishing the validators at epoch ${epochNumber}
|
|
185
|
+
this.log.info(`Detected chain prune. Punishing the validators at epoch ${epochNumber}`, event);
|
|
180
186
|
|
|
181
187
|
// Set the lifetime such that we have a full round that we could vote throughout.
|
|
182
188
|
const slotsIntoRound = slotNumber % BigInt(this.config.slashingRoundSize);
|
|
@@ -19,7 +19,7 @@ import type {
|
|
|
19
19
|
MerkleTreeReadOperations,
|
|
20
20
|
} from '@aztec/stdlib/interfaces/server';
|
|
21
21
|
import type { PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
22
|
-
import { GlobalVariables, type
|
|
22
|
+
import { GlobalVariables, type Tx, type TxValidator } from '@aztec/stdlib/tx';
|
|
23
23
|
|
|
24
24
|
import { ArchiveCache } from './archive_cache.js';
|
|
25
25
|
import { GasTxValidator, type PublicStateSource } from './gas_validator.js';
|
|
@@ -33,12 +33,14 @@ export function createValidatorForAcceptingTxs(
|
|
|
33
33
|
{
|
|
34
34
|
blockNumber,
|
|
35
35
|
l1ChainId,
|
|
36
|
+
rollupVersion,
|
|
36
37
|
setupAllowList,
|
|
37
38
|
gasFees,
|
|
38
39
|
skipFeeEnforcement,
|
|
39
40
|
}: {
|
|
40
41
|
blockNumber: number;
|
|
41
42
|
l1ChainId: number;
|
|
43
|
+
rollupVersion: number;
|
|
42
44
|
setupAllowList: AllowedElement[];
|
|
43
45
|
gasFees: GasFees;
|
|
44
46
|
skipFeeEnforcement?: boolean;
|
|
@@ -46,7 +48,7 @@ export function createValidatorForAcceptingTxs(
|
|
|
46
48
|
): TxValidator<Tx> {
|
|
47
49
|
const validators: TxValidator<Tx>[] = [
|
|
48
50
|
new DataTxValidator(),
|
|
49
|
-
new MetadataTxValidator(new Fr(l1ChainId), new Fr(blockNumber)),
|
|
51
|
+
new MetadataTxValidator(new Fr(l1ChainId), new Fr(rollupVersion), new Fr(blockNumber)),
|
|
50
52
|
new DoubleSpendTxValidator(new NullifierCache(db)),
|
|
51
53
|
new PhasesTxValidator(contractDataSource, setupAllowList, blockNumber),
|
|
52
54
|
new BlockHeaderTxValidator(new ArchiveCache(db)),
|
|
@@ -63,14 +65,13 @@ export function createValidatorForAcceptingTxs(
|
|
|
63
65
|
return new AggregateTxValidator(...validators);
|
|
64
66
|
}
|
|
65
67
|
|
|
66
|
-
export function
|
|
68
|
+
export function createValidatorForBlockBuilding(
|
|
67
69
|
db: MerkleTreeReadOperations,
|
|
68
70
|
contractDataSource: ContractDataSource,
|
|
69
71
|
globalVariables: GlobalVariables,
|
|
70
72
|
setupAllowList: AllowedElement[],
|
|
71
73
|
): {
|
|
72
74
|
preprocessValidator: TxValidator<Tx>;
|
|
73
|
-
postprocessValidator: TxValidator<ProcessedTx>;
|
|
74
75
|
nullifierCache: NullifierCache;
|
|
75
76
|
} {
|
|
76
77
|
const nullifierCache = new NullifierCache(db);
|
|
@@ -86,7 +87,6 @@ export function createValidatorsForBlockBuilding(
|
|
|
86
87
|
globalVariables,
|
|
87
88
|
setupAllowList,
|
|
88
89
|
),
|
|
89
|
-
postprocessValidator: postprocessValidator(nullifierCache),
|
|
90
90
|
nullifierCache,
|
|
91
91
|
};
|
|
92
92
|
}
|
|
@@ -107,7 +107,7 @@ class DatabasePublicStateSource implements PublicStateSource {
|
|
|
107
107
|
lowLeafResult.index,
|
|
108
108
|
)) as PublicDataTreeLeafPreimage;
|
|
109
109
|
|
|
110
|
-
return preimage.value;
|
|
110
|
+
return preimage.leaf.value;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
|
|
@@ -121,14 +121,10 @@ function preprocessValidator(
|
|
|
121
121
|
): TxValidator<Tx> {
|
|
122
122
|
// We don't include the TxProofValidator nor the DataTxValidator here because they are already checked by the time we get to block building.
|
|
123
123
|
return new AggregateTxValidator(
|
|
124
|
-
new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber),
|
|
124
|
+
new MetadataTxValidator(globalVariables.chainId, globalVariables.version, globalVariables.blockNumber),
|
|
125
125
|
new DoubleSpendTxValidator(nullifierCache),
|
|
126
126
|
new PhasesTxValidator(contractDataSource, setupAllowList, globalVariables.blockNumber.toNumber()),
|
|
127
127
|
new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, globalVariables.gasFees),
|
|
128
128
|
new BlockHeaderTxValidator(archiveCache),
|
|
129
129
|
);
|
|
130
130
|
}
|
|
131
|
-
|
|
132
|
-
function postprocessValidator(nullifierCache: NullifierCache): TxValidator<ProcessedTx> {
|
|
133
|
-
return new DoubleSpendTxValidator(nullifierCache);
|
|
134
|
-
}
|