@aztec/sequencer-client 0.69.0 → 0.69.1

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.
Files changed (60) hide show
  1. package/dest/client/sequencer-client.d.ts +2 -0
  2. package/dest/client/sequencer-client.d.ts.map +1 -1
  3. package/dest/client/sequencer-client.js +3 -4
  4. package/dest/config.d.ts.map +1 -1
  5. package/dest/config.js +11 -1
  6. package/dest/index.d.ts +3 -1
  7. package/dest/index.d.ts.map +1 -1
  8. package/dest/index.js +4 -2
  9. package/dest/publisher/config.d.ts +4 -0
  10. package/dest/publisher/config.d.ts.map +1 -1
  11. package/dest/publisher/config.js +6 -1
  12. package/dest/publisher/l1-publisher.d.ts +36 -11
  13. package/dest/publisher/l1-publisher.d.ts.map +1 -1
  14. package/dest/publisher/l1-publisher.js +154 -88
  15. package/dest/sequencer/index.d.ts +1 -0
  16. package/dest/sequencer/index.d.ts.map +1 -1
  17. package/dest/sequencer/index.js +2 -1
  18. package/dest/sequencer/sequencer.d.ts +9 -16
  19. package/dest/sequencer/sequencer.d.ts.map +1 -1
  20. package/dest/sequencer/sequencer.js +61 -130
  21. package/dest/sequencer/utils.d.ts +2 -2
  22. package/dest/sequencer/utils.d.ts.map +1 -1
  23. package/dest/sequencer/utils.js +3 -3
  24. package/dest/slasher/factory.d.ts +11 -0
  25. package/dest/slasher/factory.d.ts.map +1 -0
  26. package/dest/slasher/factory.js +10 -0
  27. package/dest/slasher/index.d.ts +3 -0
  28. package/dest/slasher/index.d.ts.map +1 -0
  29. package/dest/slasher/index.js +3 -0
  30. package/dest/slasher/slasher_client.d.ts +127 -0
  31. package/dest/slasher/slasher_client.d.ts.map +1 -0
  32. package/dest/slasher/slasher_client.js +305 -0
  33. package/dest/tx_validator/gas_validator.d.ts +2 -3
  34. package/dest/tx_validator/gas_validator.d.ts.map +1 -1
  35. package/dest/tx_validator/gas_validator.js +9 -22
  36. package/dest/tx_validator/nullifier_cache.d.ts +16 -0
  37. package/dest/tx_validator/nullifier_cache.d.ts.map +1 -0
  38. package/dest/tx_validator/nullifier_cache.js +24 -0
  39. package/dest/tx_validator/phases_validator.d.ts +2 -3
  40. package/dest/tx_validator/phases_validator.d.ts.map +1 -1
  41. package/dest/tx_validator/phases_validator.js +15 -24
  42. package/dest/tx_validator/tx_validator_factory.d.ts +15 -14
  43. package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
  44. package/dest/tx_validator/tx_validator_factory.js +38 -24
  45. package/package.json +21 -19
  46. package/src/client/sequencer-client.ts +5 -2
  47. package/src/config.ts +10 -0
  48. package/src/index.ts +3 -1
  49. package/src/publisher/config.ts +10 -0
  50. package/src/publisher/l1-publisher.ts +180 -97
  51. package/src/sequencer/index.ts +1 -0
  52. package/src/sequencer/sequencer.ts +70 -180
  53. package/src/sequencer/utils.ts +2 -2
  54. package/src/slasher/factory.ts +22 -0
  55. package/src/slasher/index.ts +2 -0
  56. package/src/slasher/slasher_client.ts +402 -0
  57. package/src/tx_validator/gas_validator.ts +11 -24
  58. package/src/tx_validator/nullifier_cache.ts +29 -0
  59. package/src/tx_validator/phases_validator.ts +22 -33
  60. package/src/tx_validator/tx_validator_factory.ts +82 -40
@@ -9,37 +9,28 @@ export class PhasesTxValidator {
9
9
  _PhasesTxValidator_log.set(this, createLogger('sequencer:tx_validator:tx_phases'));
10
10
  this.contractDataSource = new ContractsDataSourcePublicDB(contracts);
11
11
  }
12
- async validateTxs(txs) {
13
- const validTxs = [];
14
- const invalidTxs = [];
15
- for (const tx of txs) {
12
+ async validateTx(tx) {
13
+ try {
16
14
  // TODO(@spalladino): We add this just to handle public authwit-check calls during setup
17
15
  // which are needed for public FPC flows, but fail if the account contract hasnt been deployed yet,
18
16
  // which is what we're trying to do as part of the current txs.
19
17
  await this.contractDataSource.addNewContracts(tx);
20
- if (await this.validateTx(tx)) {
21
- validTxs.push(tx);
18
+ if (!tx.data.forPublic) {
19
+ __classPrivateFieldGet(this, _PhasesTxValidator_log, "f").debug(`Tx ${Tx.getHash(tx)} does not contain enqueued public functions. Skipping phases validation.`);
20
+ return { result: 'valid' };
22
21
  }
23
- else {
24
- invalidTxs.push(tx);
22
+ const setupFns = getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP);
23
+ for (const setupFn of setupFns) {
24
+ if (!(await this.isOnAllowList(setupFn, this.setupAllowList))) {
25
+ __classPrivateFieldGet(this, _PhasesTxValidator_log, "f").warn(`Rejecting tx ${Tx.getHash(tx)} because it calls setup function not on allow list: ${setupFn.callContext.contractAddress}:${setupFn.callContext.functionSelector}`, { allowList: this.setupAllowList });
26
+ return { result: 'invalid', reason: ['Setup function not on allow list'] };
27
+ }
25
28
  }
26
- await this.contractDataSource.removeNewContracts(tx);
29
+ return { result: 'valid' };
27
30
  }
28
- return Promise.resolve([validTxs, invalidTxs]);
29
- }
30
- async validateTx(tx) {
31
- if (!tx.data.forPublic) {
32
- __classPrivateFieldGet(this, _PhasesTxValidator_log, "f").debug(`Tx ${Tx.getHash(tx)} does not contain enqueued public functions. Skipping phases validation.`);
33
- return true;
34
- }
35
- const setupFns = getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP);
36
- for (const setupFn of setupFns) {
37
- if (!(await this.isOnAllowList(setupFn, this.setupAllowList))) {
38
- __classPrivateFieldGet(this, _PhasesTxValidator_log, "f").warn(`Rejecting tx ${Tx.getHash(tx)} because it calls setup function not on allow list: ${setupFn.callContext.contractAddress}:${setupFn.callContext.functionSelector}`);
39
- return false;
40
- }
31
+ finally {
32
+ await this.contractDataSource.removeNewContracts(tx);
41
33
  }
42
- return true;
43
34
  }
44
35
  async isOnAllowList(publicCall, allowList) {
45
36
  if (publicCall.isEmpty()) {
@@ -78,4 +69,4 @@ export class PhasesTxValidator {
78
69
  }
79
70
  }
80
71
  _PhasesTxValidator_log = new WeakMap();
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxFQUFFLEVBQ0YsZ0JBQWdCLEdBRWpCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVGLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBWSxTQUE2QixFQUFVLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUhuRixpQ0FBTyxZQUFZLENBQUMsa0NBQWtDLENBQUMsRUFBQztRQUl0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFTO1FBQ3pCLE1BQU0sUUFBUSxHQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBUyxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNyQix3RkFBd0Y7WUFDeEYsbUdBQW1HO1lBQ25HLCtEQUErRDtZQUMvRCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbEQsSUFBSSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBRUQsTUFBTSxJQUFJ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
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxFQUFFLEVBQ0YsZ0JBQWdCLEdBR2pCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVGLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBWSxTQUE2QixFQUFVLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUhuRixpQ0FBTyxZQUFZLENBQUMsa0NBQWtDLENBQUMsRUFBQztRQUl0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFNO1FBQ3JCLElBQUksQ0FBQztZQUNILHdGQUF3RjtZQUN4RixtR0FBbUc7WUFDbkcsK0RBQStEO1lBQy9ELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkIsdUJBQUEsSUFBSSw4QkFBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLDBFQUEwRSxDQUFDLENBQUM7Z0JBQ2hILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDN0IsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RSxLQUFL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
@@ -1,15 +1,16 @@
1
- import { type AllowedElement, type MerkleTreeReadOperations, type ProcessedTx, type Tx, type TxValidator } from '@aztec/circuit-types';
2
- import { type ContractDataSource, type GlobalVariables } from '@aztec/circuits.js';
3
- import { type NullifierSource } from '@aztec/p2p';
4
- import { type PublicStateSource } from './gas_validator.js';
5
- export declare class TxValidatorFactory {
6
- private committedDb;
7
- private contractDataSource;
8
- private enforceFees;
9
- nullifierSource: NullifierSource;
10
- publicStateSource: PublicStateSource;
11
- constructor(committedDb: MerkleTreeReadOperations, contractDataSource: ContractDataSource, enforceFees: boolean);
12
- validatorForNewTxs(globalVariables: GlobalVariables, setupAllowList: AllowedElement[]): TxValidator<Tx>;
13
- validatorForProcessedTxs(fork: MerkleTreeReadOperations): TxValidator<ProcessedTx>;
14
- }
1
+ import { type AllowedElement, type ClientProtocolCircuitVerifier, type MerkleTreeReadOperations, type ProcessedTx, type Tx, type TxValidator } from '@aztec/circuit-types';
2
+ import { type ContractDataSource, type GasFees, type GlobalVariables } from '@aztec/circuits.js';
3
+ import { NullifierCache } from './nullifier_cache.js';
4
+ export declare function createValidatorForAcceptingTxs(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, data: {
5
+ blockNumber: number;
6
+ l1ChainId: number;
7
+ enforceFees: boolean;
8
+ setupAllowList: AllowedElement[];
9
+ gasFees: GasFees;
10
+ }): TxValidator<Tx>;
11
+ export declare function createValidatorsForBlockBuilding(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, globalVariables: GlobalVariables, enforceFees: boolean, setupAllowList: AllowedElement[]): {
12
+ preprocessValidator: TxValidator<Tx>;
13
+ postprocessValidator: TxValidator<ProcessedTx>;
14
+ nullifierCache: NullifierCache;
15
+ };
15
16
  //# 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":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,EAAE,EACP,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5E,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW;IALrB,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,iBAAiB,CAAC;gBAE3B,WAAW,EAAE,wBAAwB,EACrC,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO;IAgB9B,kBAAkB,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;IAevG,wBAAwB,CAAC,IAAI,EAAE,wBAAwB,GAAG,WAAW,CAAC,WAAW,CAAC;CAKnF"}
1
+ {"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,EAAE,EACP,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAqB,KAAK,kBAAkB,EAAM,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAYxH,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,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB,GACA,WAAW,CAAC,EAAE,CAAC,CAejB;AAED,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,cAAc,EAAE,GAC/B;IACD,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,oBAAoB,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,cAAc,EAAE,cAAc,CAAC;CAChC,CAgBA"}
@@ -1,32 +1,46 @@
1
- import { MerkleTreeId, } from '@aztec/circuit-types';
2
- import { AggregateTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, } from '@aztec/p2p';
1
+ import { Fr } from '@aztec/circuits.js';
2
+ import { AggregateTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, TxProofValidator, } from '@aztec/p2p';
3
3
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
4
  import { readPublicState } from '@aztec/simulator';
5
5
  import { GasTxValidator } from './gas_validator.js';
6
+ import { NullifierCache } from './nullifier_cache.js';
6
7
  import { PhasesTxValidator } from './phases_validator.js';
7
- export class TxValidatorFactory {
8
- constructor(committedDb, contractDataSource, enforceFees) {
9
- this.committedDb = committedDb;
10
- this.contractDataSource = contractDataSource;
11
- this.enforceFees = enforceFees;
12
- this.nullifierSource = {
13
- getNullifierIndices: nullifiers => this.committedDb
14
- .findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers)
15
- .then(x => x.filter(index => index !== undefined)),
16
- };
17
- this.publicStateSource = {
18
- storageRead: (contractAddress, slot) => {
19
- return readPublicState(this.committedDb, contractAddress, slot);
20
- },
21
- };
8
+ export function createValidatorForAcceptingTxs(db, contractDataSource, verifier, data) {
9
+ const { blockNumber, l1ChainId, enforceFees, setupAllowList, gasFees } = data;
10
+ const validators = [
11
+ new DataTxValidator(),
12
+ new MetadataTxValidator(new Fr(l1ChainId), new Fr(blockNumber)),
13
+ new DoubleSpendTxValidator(new NullifierCache(db)),
14
+ new PhasesTxValidator(contractDataSource, setupAllowList),
15
+ new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, enforceFees, gasFees),
16
+ ];
17
+ if (verifier) {
18
+ validators.push(new TxProofValidator(verifier));
22
19
  }
23
- validatorForNewTxs(globalVariables, setupAllowList) {
24
- return new AggregateTxValidator(new DataTxValidator(), new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(this.nullifierSource), new PhasesTxValidator(this.contractDataSource, setupAllowList), new GasTxValidator(this.publicStateSource, ProtocolContractAddress.FeeJuice, this.enforceFees, globalVariables.gasFees));
20
+ return new AggregateTxValidator(...validators);
21
+ }
22
+ export function createValidatorsForBlockBuilding(db, contractDataSource, globalVariables, enforceFees, setupAllowList) {
23
+ const nullifierCache = new NullifierCache(db);
24
+ const publicStateSource = new DatabasePublicStateSource(db);
25
+ return {
26
+ preprocessValidator: preprocessValidator(nullifierCache, publicStateSource, contractDataSource, enforceFees, globalVariables, setupAllowList),
27
+ postprocessValidator: postprocessValidator(nullifierCache),
28
+ nullifierCache,
29
+ };
30
+ }
31
+ class DatabasePublicStateSource {
32
+ constructor(db) {
33
+ this.db = db;
25
34
  }
26
- validatorForProcessedTxs(fork) {
27
- return new DoubleSpendTxValidator({
28
- getNullifierIndices: nullifiers => fork.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers),
29
- });
35
+ storageRead(contractAddress, slot) {
36
+ return readPublicState(this.db, contractAddress, slot);
30
37
  }
31
38
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL3R4X3ZhbGlkYXRvcl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEdBS2IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsbUJBQW1CLEdBRXBCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUEwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sT0FBTyxrQkFBa0I7SUFHN0IsWUFDVSxXQUFxQyxFQUNyQyxrQkFBc0MsRUFDdEMsV0FBb0I7UUFGcEIsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBQ3JDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFFNUIsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixtQkFBbUIsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUNoQyxJQUFJLENBQUMsV0FBVztpQkFDYixlQUFlLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUM7aUJBQ3hELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFhLENBQUM7U0FDbkUsQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsR0FBRztZQUN2QixXQUFXLEVBQUUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3JDLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xFLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUFDLGVBQWdDLEVBQUUsY0FBZ0M7UUFDbkYsT0FBTyxJQUFJLG9CQUFvQixDQUM3QixJQUFJLGVBQWUsRUFBRSxFQUNyQixJQUFJLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUM3RSxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFDaEQsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLEVBQzlELElBQUksY0FBYyxDQUNoQixJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLHVCQUF1QixDQUFDLFFBQVEsRUFDaEMsSUFBSSxDQUFDLFdBQVcsRUFDaEIsZUFBZSxDQUFDLE9BQU8sQ0FDeEIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQThCO1FBQ3JELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQztZQUNoQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUM7U0FDakcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=
39
+ function preprocessValidator(nullifierCache, publicStateSource, contractDataSource, enforceFees, globalVariables, setupAllowList) {
40
+ // We don't include the TxProofValidator nor the DataTxValidator here because they are already checked by the time we get to block building.
41
+ return new AggregateTxValidator(new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, enforceFees, globalVariables.gasFees));
42
+ }
43
+ function postprocessValidator(nullifierCache) {
44
+ return new DoubleSpendTxValidator(nullifierCache);
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL3R4X3ZhbGlkYXRvcl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBOEMsRUFBRSxFQUFzQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUEwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLEVBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxRQUFtRCxFQUNuRCxJQU1DO0lBRUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDOUUsTUFBTSxVQUFVLEdBQXNCO1FBQ3BDLElBQUksZUFBZSxFQUFFO1FBQ3JCLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLGNBQWMsQ0FBQztRQUN6RCxJQUFJLGNBQWMsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO0tBQzlHLENBQUM7SUFFRixJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLEVBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxlQUFnQyxFQUNoQyxXQUFvQixFQUNwQixjQUFnQztJQU1oQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLGlCQUFpQixHQUFHLElBQUkseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFNUQsT0FBTztRQUNMLG1CQUFtQixFQUFFLG1CQUFtQixDQUN0QyxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGNBQWMsQ0FDZjtRQUNELG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUMxRCxjQUFjO0tBQ2YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLHlCQUF5QjtJQUM3QixZQUFvQixFQUE0QjtRQUE1QixPQUFFLEdBQUYsRUFBRSxDQUEwQjtJQUFHLENBQUM7SUFFcEQsV0FBVyxDQUFDLGVBQTZCLEVBQUUsSUFBUTtRQUNqRCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLG1CQUFtQixDQUMxQixjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsa0JBQXNDLEVBQ3RDLFdBQW9CLEVBQ3BCLGVBQWdDLEVBQ2hDLGNBQWdDO0lBRWhDLDRJQUE0STtJQUM1SSxPQUFPLElBQUksb0JBQW9CLENBQzdCLElBQUksbUJBQW1CLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQzdFLElBQUksc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQzFDLElBQUksaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLEVBQ3pELElBQUksY0FBYyxDQUFDLGlCQUFpQixFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUM5RyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsY0FBOEI7SUFDMUQsT0FBTyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3BELENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/sequencer-client",
3
- "version": "0.69.0",
3
+ "version": "0.69.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -27,24 +27,24 @@
27
27
  "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
28
28
  },
29
29
  "dependencies": {
30
- "@aztec/aztec.js": "0.69.0",
31
- "@aztec/bb-prover": "0.69.0",
32
- "@aztec/circuit-types": "0.69.0",
33
- "@aztec/circuits.js": "0.69.0",
34
- "@aztec/ethereum": "0.69.0",
35
- "@aztec/foundation": "0.69.0",
36
- "@aztec/l1-artifacts": "0.69.0",
37
- "@aztec/merkle-tree": "0.69.0",
38
- "@aztec/noir-contracts.js": "0.69.0",
39
- "@aztec/noir-protocol-circuits-types": "0.69.0",
40
- "@aztec/p2p": "0.69.0",
41
- "@aztec/protocol-contracts": "0.69.0",
42
- "@aztec/prover-client": "0.69.0",
43
- "@aztec/simulator": "0.69.0",
44
- "@aztec/telemetry-client": "0.69.0",
45
- "@aztec/types": "0.69.0",
46
- "@aztec/validator-client": "0.69.0",
47
- "@aztec/world-state": "0.69.0",
30
+ "@aztec/aztec.js": "0.69.1",
31
+ "@aztec/bb-prover": "0.69.1",
32
+ "@aztec/circuit-types": "0.69.1",
33
+ "@aztec/circuits.js": "0.69.1",
34
+ "@aztec/ethereum": "0.69.1",
35
+ "@aztec/foundation": "0.69.1",
36
+ "@aztec/l1-artifacts": "0.69.1",
37
+ "@aztec/merkle-tree": "0.69.1",
38
+ "@aztec/noir-contracts.js": "0.69.1",
39
+ "@aztec/noir-protocol-circuits-types": "0.69.1",
40
+ "@aztec/p2p": "0.69.1",
41
+ "@aztec/protocol-contracts": "0.69.1",
42
+ "@aztec/prover-client": "0.69.1",
43
+ "@aztec/simulator": "0.69.1",
44
+ "@aztec/telemetry-client": "0.69.1",
45
+ "@aztec/types": "0.69.1",
46
+ "@aztec/validator-client": "0.69.1",
47
+ "@aztec/world-state": "0.69.1",
48
48
  "@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
49
49
  "@noir-lang/types": "portal:../../noir/packages/types",
50
50
  "lodash.chunk": "^4.2.0",
@@ -53,6 +53,7 @@
53
53
  "viem": "^2.7.15"
54
54
  },
55
55
  "devDependencies": {
56
+ "@aztec/archiver": "workspace:^",
56
57
  "@aztec/kv-store": "workspace:^",
57
58
  "@jest/globals": "^29.5.0",
58
59
  "@types/jest": "^29.5.0",
@@ -63,6 +64,7 @@
63
64
  "@types/node": "^18.7.23",
64
65
  "concurrently": "^7.6.0",
65
66
  "eslint": "^8.37.0",
67
+ "express": "^4.21.1",
66
68
  "jest": "^29.5.0",
67
69
  "jest-mock-extended": "^3.0.3",
68
70
  "levelup": "^5.1.1",
@@ -13,7 +13,7 @@ import { type SequencerClientConfig } from '../config.js';
13
13
  import { GlobalVariableBuilder } from '../global_variable_builder/index.js';
14
14
  import { L1Publisher } from '../publisher/index.js';
15
15
  import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
16
- import { TxValidatorFactory } from '../tx_validator/tx_validator_factory.js';
16
+ import { type SlasherClient } from '../slasher/index.js';
17
17
 
18
18
  /**
19
19
  * Encapsulates the full sequencer and publisher.
@@ -40,6 +40,7 @@ export class SequencerClient {
40
40
  validatorClient: ValidatorClient | undefined; // allowed to be undefined while we migrate
41
41
  p2pClient: P2P;
42
42
  worldStateSynchronizer: WorldStateSynchronizer;
43
+ slasherClient: SlasherClient;
43
44
  contractDataSource: ContractDataSource;
44
45
  l2BlockSource: L2BlockSource;
45
46
  l1ToL2MessageSource: L1ToL2MessageSource;
@@ -52,6 +53,7 @@ export class SequencerClient {
52
53
  validatorClient,
53
54
  p2pClient,
54
55
  worldStateSynchronizer,
56
+ slasherClient,
55
57
  contractDataSource,
56
58
  l2BlockSource,
57
59
  l1ToL2MessageSource,
@@ -91,11 +93,12 @@ export class SequencerClient {
91
93
  globalsBuilder,
92
94
  p2pClient,
93
95
  worldStateSynchronizer,
96
+ slasherClient,
94
97
  new LightweightBlockBuilderFactory(telemetryClient),
95
98
  l2BlockSource,
96
99
  l1ToL2MessageSource,
97
100
  publicProcessorFactory,
98
- new TxValidatorFactory(worldStateSynchronizer.getCommitted(), contractDataSource, !!config.enforceFees),
101
+ contractDataSource,
99
102
  l1Constants,
100
103
  deps.dateProvider,
101
104
  telemetryClient,
package/src/config.ts CHANGED
@@ -59,6 +59,16 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
59
59
  description: 'The minimum number of txs to include in a block.',
60
60
  ...numberConfigHelper(1),
61
61
  },
62
+ maxL2BlockGas: {
63
+ env: 'SEQ_MAX_L2_BLOCK_GAS',
64
+ description: 'The maximum L2 block gas.',
65
+ ...numberConfigHelper(10e9),
66
+ },
67
+ maxDABlockGas: {
68
+ env: 'SEQ_MAX_DA_BLOCK_GAS',
69
+ description: 'The maximum DA block gas.',
70
+ ...numberConfigHelper(10e9),
71
+ },
62
72
  coinbase: {
63
73
  env: 'COINBASE',
64
74
  parseEnv: (val: string) => EthAddress.fromString(val),
package/src/index.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export * from './client/index.js';
2
2
  export * from './config.js';
3
3
  export * from './publisher/index.js';
4
- export { Sequencer, SequencerState } from './sequencer/index.js';
4
+ export * from './tx_validator/tx_validator_factory.js';
5
+ export * from './slasher/index.js';
6
+ export { Sequencer, SequencerState, getDefaultAllowedSetupFunctions } from './sequencer/index.js';
5
7
 
6
8
  // Used by the node to simulate public parts of transactions. Should these be moved to a shared library?
7
9
  // ISSUE(#9832)
@@ -24,6 +24,11 @@ export type PublisherConfig = L1TxUtilsConfig & {
24
24
  * The interval to wait between publish retries.
25
25
  */
26
26
  l1PublishRetryIntervalMS: number;
27
+
28
+ /**
29
+ * The URL of the blob sink.
30
+ */
31
+ blobSinkUrl?: string;
27
32
  };
28
33
 
29
34
  export const getTxSenderConfigMappings: (
@@ -72,6 +77,11 @@ export const getPublisherConfigMappings: (
72
77
  description: 'The interval to wait between publish retries.',
73
78
  },
74
79
  ...l1TxUtilsConfigMappings,
80
+ blobSinkUrl: {
81
+ env: `${scope}_BLOB_SINK_URL`,
82
+ description: 'The URL of the blob sink.',
83
+ parseEnv: (val?: string) => val,
84
+ },
75
85
  });
76
86
 
77
87
  export function getPublisherConfigFromEnv(scope: 'PROVER' | 'SEQ'): PublisherConfig {