@aztec/sequencer-client 0.56.0 → 0.58.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.
Files changed (54) hide show
  1. package/dest/block_builder/index.d.ts +2 -2
  2. package/dest/block_builder/index.d.ts.map +1 -1
  3. package/dest/block_builder/light.d.ts +8 -12
  4. package/dest/block_builder/light.d.ts.map +1 -1
  5. package/dest/block_builder/light.js +11 -15
  6. package/dest/block_builder/orchestrator.d.ts +8 -11
  7. package/dest/block_builder/orchestrator.d.ts.map +1 -1
  8. package/dest/block_builder/orchestrator.js +3 -10
  9. package/dest/client/sequencer-client.d.ts +2 -2
  10. package/dest/client/sequencer-client.d.ts.map +1 -1
  11. package/dest/client/sequencer-client.js +3 -4
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +11 -9
  14. package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
  15. package/dest/global_variable_builder/global_builder.js +2 -1
  16. package/dest/publisher/config.d.ts.map +1 -1
  17. package/dest/publisher/config.js +7 -2
  18. package/dest/publisher/index.d.ts +1 -1
  19. package/dest/publisher/index.d.ts.map +1 -1
  20. package/dest/publisher/index.js +1 -1
  21. package/dest/publisher/l1-publisher-metrics.d.ts.map +1 -1
  22. package/dest/publisher/l1-publisher-metrics.js +2 -1
  23. package/dest/publisher/l1-publisher.d.ts +52 -36
  24. package/dest/publisher/l1-publisher.d.ts.map +1 -1
  25. package/dest/publisher/l1-publisher.js +305 -117
  26. package/dest/publisher/utils.d.ts +1 -1
  27. package/dest/publisher/utils.js +1 -1
  28. package/dest/sequencer/sequencer.d.ts +6 -6
  29. package/dest/sequencer/sequencer.d.ts.map +1 -1
  30. package/dest/sequencer/sequencer.js +142 -88
  31. package/dest/tx_validator/gas_validator.d.ts.map +1 -1
  32. package/dest/tx_validator/gas_validator.js +7 -5
  33. package/dest/tx_validator/phases_validator.d.ts +1 -1
  34. package/dest/tx_validator/phases_validator.d.ts.map +1 -1
  35. package/dest/tx_validator/phases_validator.js +1 -1
  36. package/dest/tx_validator/tx_validator_factory.d.ts +9 -7
  37. package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
  38. package/dest/tx_validator/tx_validator_factory.js +20 -10
  39. package/package.json +22 -19
  40. package/src/block_builder/index.ts +2 -2
  41. package/src/block_builder/light.ts +16 -24
  42. package/src/block_builder/orchestrator.ts +10 -18
  43. package/src/client/sequencer-client.ts +3 -9
  44. package/src/config.ts +10 -8
  45. package/src/global_variable_builder/global_builder.ts +1 -0
  46. package/src/publisher/config.ts +6 -1
  47. package/src/publisher/index.ts +1 -1
  48. package/src/publisher/l1-publisher-metrics.ts +1 -0
  49. package/src/publisher/l1-publisher.ts +435 -144
  50. package/src/publisher/utils.ts +1 -1
  51. package/src/sequencer/sequencer.ts +173 -108
  52. package/src/tx_validator/gas_validator.ts +6 -7
  53. package/src/tx_validator/phases_validator.ts +1 -1
  54. package/src/tx_validator/tx_validator_factory.ts +39 -15
@@ -78,4 +78,4 @@ export class PhasesTxValidator {
78
78
  }
79
79
  }
80
80
  _PhasesTxValidator_log = new WeakMap();
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxpQkFBaUIsRUFDakIsRUFBRSxHQUVILE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHdkYsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFZLFNBQTZCLEVBQVUsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSG5GLGlDQUFPLGlCQUFpQixDQUFDLHdDQUF3QyxDQUFDLEVBQUM7UUFJakUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBUztRQUN6QixNQUFNLFFBQVEsR0FBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxVQUFVLEdBQVMsRUFBRSxDQUFDO1FBRTVCLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDckIsd0ZBQXdGO1lBQ3hGLG1HQUFtRztZQUNuRywrREFBK0Q7WUFDL0QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWxELElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0s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
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxpQkFBaUIsRUFDakIsRUFBRSxHQUVILE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkYsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFZLFNBQTZCLEVBQVUsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSG5GLGlDQUFPLGlCQUFpQixDQUFDLHdDQUF3QyxDQUFDLEVBQUM7UUFJakUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBUztRQUN6QixNQUFNLFFBQVEsR0FBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxVQUFVLEdBQVMsRUFBRSxDQUFDO1FBRTVCLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDckIsd0ZBQXdGO1lBQ3hGLG1HQUFtRztZQUNuRywrREFBK0Q7WUFDL0QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWxELElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFNO1FBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLHVCQUFBLElBQUksOEJBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO1lBQ2hILE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUFDLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsdUJBQUEsSUFBSSw4QkFBSyxDQUFDLElBQUksQ0FDWixnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsdURBQzVCLE9BQU8sQ0FBQyxlQUNWLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUMzQyxDQUFDO2dCQUVGLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQWtDLEVBQUUsU0FBMkI7UUFDakYsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEVBQ0osZUFBZSxFQUNmLFdBQVcsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEdBQ2xDLEdBQUcsVUFBVSxDQUFDO1FBRWYsb0VBQW9FO1FBQ3BFLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUMxQyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzlDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO29CQUNyRixPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRXpGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEYsQ0FBQztZQUVELElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELElBQUksYUFBYSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ3hELE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLFVBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDOUMsSUFDRSxhQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO29CQUNuRCxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDekUsQ0FBQztvQkFDRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiJ9
@@ -1,13 +1,15 @@
1
- import { type AllowedElement, type ProcessedTx, type Tx, type TxValidator } from '@aztec/circuit-types';
2
- import { type GlobalVariables } from '@aztec/circuits.js';
3
- import { type ContractDataSource } from '@aztec/types/contracts';
4
- import { type MerkleTreeOperations } from '@aztec/world-state';
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
5
  export declare class TxValidatorFactory {
6
- private merkleTreeDb;
6
+ private committedDb;
7
7
  private contractDataSource;
8
8
  private enforceFees;
9
- constructor(merkleTreeDb: MerkleTreeOperations, contractDataSource: ContractDataSource, enforceFees: boolean);
9
+ nullifierSource: NullifierSource;
10
+ publicStateSource: PublicStateSource;
11
+ constructor(committedDb: MerkleTreeReadOperations, contractDataSource: ContractDataSource, enforceFees: boolean);
10
12
  validatorForNewTxs(globalVariables: GlobalVariables, setupAllowList: AllowedElement[]): TxValidator<Tx>;
11
- validatorForProcessedTxs(): TxValidator<ProcessedTx>;
13
+ validatorForProcessedTxs(fork: MerkleTreeReadOperations): TxValidator<ProcessedTx>;
12
14
  }
13
15
  //# 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,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW;gBAFX,YAAY,EAAE,oBAAoB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO;IAG9B,kBAAkB,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;IAWvG,wBAAwB,IAAI,WAAW,CAAC,WAAW,CAAC;CAGrD"}
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;IAa9B,kBAAkB,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;IAUvG,wBAAwB,CAAC,IAAI,EAAE,wBAAwB,GAAG,WAAW,CAAC,WAAW,CAAC;CAKnF"}
@@ -1,20 +1,30 @@
1
- import { AggregateTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator } from '@aztec/p2p';
2
- import { FeeJuiceAddress } from '@aztec/protocol-contracts/fee-juice';
3
- import { WorldStateDB } from '@aztec/simulator';
1
+ import { MerkleTreeId, } from '@aztec/circuit-types';
2
+ import { AggregateTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, } from '@aztec/p2p';
3
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
+ import { readPublicState } from '@aztec/simulator';
4
5
  import { GasTxValidator } from './gas_validator.js';
5
6
  import { PhasesTxValidator } from './phases_validator.js';
6
7
  export class TxValidatorFactory {
7
- constructor(merkleTreeDb, contractDataSource, enforceFees) {
8
- this.merkleTreeDb = merkleTreeDb;
8
+ constructor(committedDb, contractDataSource, enforceFees) {
9
+ this.committedDb = committedDb;
9
10
  this.contractDataSource = contractDataSource;
10
11
  this.enforceFees = enforceFees;
12
+ this.nullifierSource = {
13
+ getNullifierIndex: nullifier => this.committedDb.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer()),
14
+ };
15
+ this.publicStateSource = {
16
+ storageRead: (contractAddress, slot) => {
17
+ return readPublicState(this.committedDb, contractAddress, slot);
18
+ },
19
+ };
11
20
  }
12
21
  validatorForNewTxs(globalVariables, setupAllowList) {
13
- const worldStateDB = new WorldStateDB(this.merkleTreeDb, this.contractDataSource);
14
- return new AggregateTxValidator(new DataTxValidator(), new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(worldStateDB), new PhasesTxValidator(this.contractDataSource, setupAllowList), new GasTxValidator(worldStateDB, FeeJuiceAddress, this.enforceFees));
22
+ 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));
15
23
  }
16
- validatorForProcessedTxs() {
17
- return new DoubleSpendTxValidator(new WorldStateDB(this.merkleTreeDb, this.contractDataSource));
24
+ validatorForProcessedTxs(fork) {
25
+ return new DoubleSpendTxValidator({
26
+ getNullifierIndex: nullifier => fork.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer()),
27
+ });
18
28
  }
19
29
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL3R4X3ZhbGlkYXRvcl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUNVLFlBQWtDLEVBQ2xDLGtCQUFzQyxFQUN0QyxXQUFvQjtRQUZwQixpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBUztJQUMzQixDQUFDO0lBRUosa0JBQWtCLENBQUMsZUFBZ0MsRUFBRSxjQUFnQztRQUNuRixNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsSUFBSSxlQUFlLEVBQUUsRUFDckIsSUFBSSxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFDN0UsSUFBSSxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsRUFDeEMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLEVBQzlELElBQUksY0FBYyxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksc0JBQXNCLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7Q0FDRiJ9
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL3R4X3ZhbGlkYXRvcl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEdBS2IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsbUJBQW1CLEdBRXBCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUEwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sT0FBTyxrQkFBa0I7SUFHN0IsWUFDVSxXQUFxQyxFQUNyQyxrQkFBc0MsRUFDdEMsV0FBb0I7UUFGcEIsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBQ3JDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFFNUIsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixpQkFBaUIsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2xILENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUc7WUFDdkIsV0FBVyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNyQyxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRSxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxlQUFnQyxFQUFFLGNBQWdDO1FBQ25GLE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsSUFBSSxlQUFlLEVBQUUsRUFDckIsSUFBSSxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFDN0UsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQ2hELElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxFQUM5RCxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDL0YsQ0FBQztJQUNKLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUE4QjtRQUNyRCxPQUFPLElBQUksc0JBQXNCLENBQUM7WUFDaEMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RHLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/sequencer-client",
3
- "version": "0.56.0",
3
+ "version": "0.58.0",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "typedocOptions": {
@@ -24,24 +24,24 @@
24
24
  "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
25
25
  },
26
26
  "dependencies": {
27
- "@aztec/aztec.js": "0.56.0",
28
- "@aztec/bb-prover": "0.56.0",
29
- "@aztec/circuit-types": "0.56.0",
30
- "@aztec/circuits.js": "0.56.0",
31
- "@aztec/ethereum": "0.56.0",
32
- "@aztec/foundation": "0.56.0",
33
- "@aztec/l1-artifacts": "0.56.0",
34
- "@aztec/merkle-tree": "0.56.0",
35
- "@aztec/noir-contracts.js": "0.56.0",
36
- "@aztec/noir-protocol-circuits-types": "0.56.0",
37
- "@aztec/p2p": "0.56.0",
38
- "@aztec/protocol-contracts": "0.56.0",
39
- "@aztec/prover-client": "0.56.0",
40
- "@aztec/simulator": "0.56.0",
41
- "@aztec/telemetry-client": "0.56.0",
42
- "@aztec/types": "0.56.0",
43
- "@aztec/validator-client": "0.56.0",
44
- "@aztec/world-state": "0.56.0",
27
+ "@aztec/aztec.js": "0.58.0",
28
+ "@aztec/bb-prover": "0.58.0",
29
+ "@aztec/circuit-types": "0.58.0",
30
+ "@aztec/circuits.js": "0.58.0",
31
+ "@aztec/ethereum": "0.58.0",
32
+ "@aztec/foundation": "0.58.0",
33
+ "@aztec/l1-artifacts": "0.58.0",
34
+ "@aztec/merkle-tree": "0.58.0",
35
+ "@aztec/noir-contracts.js": "0.58.0",
36
+ "@aztec/noir-protocol-circuits-types": "0.58.0",
37
+ "@aztec/p2p": "0.58.0",
38
+ "@aztec/protocol-contracts": "0.58.0",
39
+ "@aztec/prover-client": "0.58.0",
40
+ "@aztec/simulator": "0.58.0",
41
+ "@aztec/telemetry-client": "0.58.0",
42
+ "@aztec/types": "0.58.0",
43
+ "@aztec/validator-client": "0.58.0",
44
+ "@aztec/world-state": "0.58.0",
45
45
  "@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
46
46
  "@noir-lang/types": "portal:../../noir/packages/types",
47
47
  "lodash.chunk": "^4.2.0",
@@ -89,6 +89,9 @@
89
89
  "parser": {
90
90
  "syntax": "typescript",
91
91
  "decorators": true
92
+ },
93
+ "transform": {
94
+ "decoratorVersion": "2022-03"
92
95
  }
93
96
  }
94
97
  }
@@ -1,7 +1,7 @@
1
- import { type BlockSimulator, type MerkleTreeOperations } from '@aztec/circuit-types';
1
+ import { type BlockBuilder, type MerkleTreeReadOperations } from '@aztec/circuit-types';
2
2
 
3
3
  export * from './orchestrator.js';
4
4
  export * from './light.js';
5
5
  export interface BlockBuilderFactory {
6
- create(db: MerkleTreeOperations): BlockSimulator;
6
+ create(db: MerkleTreeReadOperations): BlockBuilder;
7
7
  }
@@ -1,14 +1,11 @@
1
1
  import { createDebugLogger } from '@aztec/aztec.js';
2
2
  import {
3
- type BlockSimulator,
3
+ type BlockBuilder,
4
4
  Body,
5
5
  L2Block,
6
6
  MerkleTreeId,
7
- type MerkleTreeOperations,
8
- PROVING_STATUS,
7
+ type MerkleTreeWriteOperations,
9
8
  type ProcessedTx,
10
- type ProvingTicket,
11
- type SimulationBlockResult,
12
9
  type TxEffect,
13
10
  makeEmptyProcessedTx,
14
11
  toTxEffect,
@@ -18,22 +15,19 @@ import {
18
15
  type GlobalVariables,
19
16
  NESTED_RECURSIVE_PROOF_LENGTH,
20
17
  NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
21
- VerificationKeyData,
22
18
  makeEmptyRecursiveProof,
23
19
  } from '@aztec/circuits.js';
24
20
  import { padArrayEnd } from '@aztec/foundation/collection';
25
- import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
21
+ import { TubeVk, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
22
+ import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
26
23
  import { buildBaseRollupInput, buildHeaderFromTxEffects, getTreeSnapshot } from '@aztec/prover-client/helpers';
27
24
  import { type TelemetryClient } from '@aztec/telemetry-client';
28
25
  import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
29
26
 
30
27
  /**
31
- * Implements a block simulator using a test circuit prover under the hood, which just simulates circuits and outputs empty proofs.
32
- * This class is temporary and should die once we switch from tx effects to tx objects submissions, since sequencers won't have
33
- * the need to create L2 block headers to submit to L1. When we do that, we should also remove the references to the
34
- * prover-client and bb-prover packages from this package.
28
+ * Builds a block and its header from a set of processed tx without running any circuits.
35
29
  */
36
- export class LightweightBlockBuilder implements BlockSimulator {
30
+ export class LightweightBlockBuilder implements BlockBuilder {
37
31
  private numTxs?: number;
38
32
  private globalVariables?: GlobalVariables;
39
33
  private l1ToL2Messages?: Fr[];
@@ -42,9 +36,9 @@ export class LightweightBlockBuilder implements BlockSimulator {
42
36
 
43
37
  private readonly logger = createDebugLogger('aztec:sequencer-client:block_builder_light');
44
38
 
45
- constructor(private db: MerkleTreeOperations, private telemetry: TelemetryClient) {}
39
+ constructor(private db: MerkleTreeWriteOperations, private telemetry: TelemetryClient) {}
46
40
 
47
- async startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<ProvingTicket> {
41
+ async startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void> {
48
42
  this.logger.verbose('Starting new block', { numTxs, globalVariables, l1ToL2Messages });
49
43
  this.numTxs = numTxs;
50
44
  this.globalVariables = globalVariables;
@@ -52,9 +46,6 @@ export class LightweightBlockBuilder implements BlockSimulator {
52
46
 
53
47
  // Update L1 to L2 tree
54
48
  await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages!);
55
-
56
- // Nothing to prove, so we return an already resolved promise
57
- return { provingPromise: Promise.resolve({ status: PROVING_STATUS.SUCCESS }) };
58
49
  }
59
50
 
60
51
  async addNewTx(tx: ProcessedTx): Promise<void> {
@@ -65,13 +56,11 @@ export class LightweightBlockBuilder implements BlockSimulator {
65
56
  makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH),
66
57
  this.globalVariables!,
67
58
  this.db,
68
- VerificationKeyData.makeFake(),
59
+ TubeVk,
69
60
  );
70
61
  }
71
62
 
72
- cancel(): void {}
73
-
74
- async setBlockCompleted(): Promise<void> {
63
+ async setBlockCompleted(): Promise<L2Block> {
75
64
  const paddingTxCount = this.numTxs! - this.txs.length;
76
65
  this.logger.verbose(`Setting block as completed and adding ${paddingTxCount} padding txs`);
77
66
  for (let i = 0; i < paddingTxCount; i++) {
@@ -81,12 +70,15 @@ export class LightweightBlockBuilder implements BlockSimulator {
81
70
  this.globalVariables!.chainId,
82
71
  this.globalVariables!.version,
83
72
  getVKTreeRoot(),
73
+ protocolContractTreeRoot,
84
74
  ),
85
75
  );
86
76
  }
77
+
78
+ return this.buildBlock();
87
79
  }
88
80
 
89
- async finaliseBlock(): Promise<SimulationBlockResult> {
81
+ private async buildBlock(): Promise<L2Block> {
90
82
  this.logger.verbose(`Finalising block`);
91
83
  const nonEmptyTxEffects: TxEffect[] = this.txs
92
84
  .map(tx => toTxEffect(tx, this.globalVariables!.gasFees))
@@ -98,14 +90,14 @@ export class LightweightBlockBuilder implements BlockSimulator {
98
90
  const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
99
91
 
100
92
  const block = new L2Block(newArchive, header, body);
101
- return { block };
93
+ return block;
102
94
  }
103
95
  }
104
96
 
105
97
  export class LightweightBlockBuilderFactory {
106
98
  constructor(private telemetry?: TelemetryClient) {}
107
99
 
108
- create(db: MerkleTreeOperations): BlockSimulator {
100
+ create(db: MerkleTreeWriteOperations): BlockBuilder {
109
101
  return new LightweightBlockBuilder(db, this.telemetry ?? new NoopTelemetryClient());
110
102
  }
111
103
  }
@@ -1,10 +1,9 @@
1
1
  import { TestCircuitProver } from '@aztec/bb-prover';
2
2
  import {
3
- type BlockSimulator,
4
- type MerkleTreeOperations,
3
+ type BlockBuilder,
4
+ type L2Block,
5
+ type MerkleTreeWriteOperations,
5
6
  type ProcessedTx,
6
- type ProvingTicket,
7
- type SimulationBlockResult,
8
7
  } from '@aztec/circuit-types';
9
8
  import { type Fr, type GlobalVariables } from '@aztec/circuits.js';
10
9
  import { ProvingOrchestrator } from '@aztec/prover-client/orchestrator';
@@ -14,27 +13,20 @@ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
14
13
 
15
14
  /**
16
15
  * Implements a block simulator using a test circuit prover under the hood, which just simulates circuits and outputs empty proofs.
17
- * This class is temporary and should die once we switch from tx effects to tx objects submissions, since sequencers won't have
18
- * the need to create L2 block headers to submit to L1. When we do that, we should also remove the references to the
19
- * prover-client and bb-prover packages from this package.
16
+ * This class is unused at the moment, but could be leveraged by a prover-node to ascertain that it can prove a block before
17
+ * committing to proving it by sending a quote.
20
18
  */
21
- export class OrchestratorBlockBuilder implements BlockSimulator {
19
+ export class OrchestratorBlockBuilder implements BlockBuilder {
22
20
  private orchestrator: ProvingOrchestrator;
23
- constructor(db: MerkleTreeOperations, simulationProvider: SimulationProvider, telemetry: TelemetryClient) {
21
+ constructor(db: MerkleTreeWriteOperations, simulationProvider: SimulationProvider, telemetry: TelemetryClient) {
24
22
  const testProver = new TestCircuitProver(telemetry, simulationProvider);
25
23
  this.orchestrator = new ProvingOrchestrator(db, testProver, telemetry);
26
24
  }
27
25
 
28
- startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<ProvingTicket> {
26
+ startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void> {
29
27
  return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages);
30
28
  }
31
- cancel(): void {
32
- this.orchestrator.cancel();
33
- }
34
- finaliseBlock(): Promise<SimulationBlockResult> {
35
- return this.orchestrator.finaliseBlock();
36
- }
37
- setBlockCompleted(): Promise<void> {
29
+ setBlockCompleted(): Promise<L2Block> {
38
30
  return this.orchestrator.setBlockCompleted();
39
31
  }
40
32
  addNewTx(tx: ProcessedTx): Promise<void> {
@@ -45,7 +37,7 @@ export class OrchestratorBlockBuilder implements BlockSimulator {
45
37
  export class OrchestratorBlockBuilderFactory {
46
38
  constructor(private simulationProvider: SimulationProvider, private telemetry?: TelemetryClient) {}
47
39
 
48
- create(db: MerkleTreeOperations): BlockSimulator {
40
+ create(db: MerkleTreeWriteOperations): BlockBuilder {
49
41
  return new OrchestratorBlockBuilder(db, this.simulationProvider, this.telemetry ?? new NoopTelemetryClient());
50
42
  }
51
43
  }
@@ -1,9 +1,9 @@
1
1
  import { type L1ToL2MessageSource, type L2BlockSource, type WorldStateSynchronizer } from '@aztec/circuit-types';
2
+ import { type ContractDataSource } from '@aztec/circuits.js';
2
3
  import { type EthAddress } from '@aztec/foundation/eth-address';
3
4
  import { type P2P } from '@aztec/p2p';
4
5
  import { PublicProcessorFactory, type SimulationProvider } from '@aztec/simulator';
5
6
  import { type TelemetryClient } from '@aztec/telemetry-client';
6
- import { type ContractDataSource } from '@aztec/types/contracts';
7
7
  import { type ValidatorClient } from '@aztec/validator-client';
8
8
 
9
9
  import { LightweightBlockBuilderFactory } from '../block_builder/index.js';
@@ -45,14 +45,8 @@ export class SequencerClient {
45
45
  ) {
46
46
  const publisher = new L1Publisher(config, telemetryClient);
47
47
  const globalsBuilder = new GlobalVariableBuilder(config);
48
- const merkleTreeDb = worldStateSynchronizer.getLatest();
49
48
 
50
- const publicProcessorFactory = new PublicProcessorFactory(
51
- merkleTreeDb,
52
- contractDataSource,
53
- simulationProvider,
54
- telemetryClient,
55
- );
49
+ const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, simulationProvider, telemetryClient);
56
50
 
57
51
  const sequencer = new Sequencer(
58
52
  publisher,
@@ -64,7 +58,7 @@ export class SequencerClient {
64
58
  l2BlockSource,
65
59
  l1ToL2MessageSource,
66
60
  publicProcessorFactory,
67
- new TxValidatorFactory(merkleTreeDb, contractDataSource, !!config.enforceFees),
61
+ new TxValidatorFactory(worldStateSynchronizer.getCommitted(), contractDataSource, !!config.enforceFees),
68
62
  telemetryClient,
69
63
  config,
70
64
  );
package/src/config.ts CHANGED
@@ -10,8 +10,7 @@ import {
10
10
  import { EthAddress } from '@aztec/foundation/eth-address';
11
11
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
12
12
  import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
13
- import { AuthRegistryAddress } from '@aztec/protocol-contracts/auth-registry';
14
- import { FeeJuiceAddress } from '@aztec/protocol-contracts/fee-juice';
13
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
15
14
 
16
15
  import {
17
16
  type PublisherConfig,
@@ -117,9 +116,9 @@ export const chainConfigMappings: ConfigMappingsType<ChainConfig> = {
117
116
 
118
117
  export const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig> = {
119
118
  ...sequencerConfigMappings,
119
+ ...l1ReaderConfigMappings,
120
120
  ...getTxSenderConfigMappings('SEQ'),
121
121
  ...getPublisherConfigMappings('SEQ'),
122
- ...l1ReaderConfigMappings,
123
122
  ...chainConfigMappings,
124
123
  };
125
124
 
@@ -184,21 +183,24 @@ function getDefaultAllowedSetupFunctions(): AllowedElement[] {
184
183
  return [
185
184
  // needed for authwit support
186
185
  {
187
- address: AuthRegistryAddress,
186
+ address: ProtocolContractAddress.AuthRegistry,
188
187
  },
189
188
  // needed for claiming on the same tx as a spend
190
189
  {
191
- address: FeeJuiceAddress,
192
- selector: FunctionSelector.fromSignature('_increase_public_balance((Field),Field)'),
190
+ address: ProtocolContractAddress.FeeJuice,
191
+ // We can't restrict the selector because public functions get routed via dispatch.
192
+ // selector: FunctionSelector.fromSignature('_increase_public_balance((Field),Field)'),
193
193
  },
194
194
  // needed for private transfers via FPC
195
195
  {
196
196
  classId: getContractClassFromArtifact(TokenContractArtifact).id,
197
- selector: FunctionSelector.fromSignature('_increase_public_balance((Field),Field)'),
197
+ // We can't restrict the selector because public functions get routed via dispatch.
198
+ // selector: FunctionSelector.fromSignature('_increase_public_balance((Field),Field)'),
198
199
  },
199
200
  {
200
201
  classId: getContractClassFromArtifact(FPCContract.artifact).id,
201
- selector: FunctionSelector.fromSignature('prepare_fee((Field),Field,(Field),Field)'),
202
+ // We can't restrict the selector because public functions get routed via dispatch.
203
+ // selector: FunctionSelector.fromSignature('prepare_fee((Field),Field,(Field),Field)'),
202
204
  },
203
205
  ];
204
206
  }
@@ -39,6 +39,7 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
39
39
  this.publicClient = createPublicClient({
40
40
  chain: chain.chainInfo,
41
41
  transport: http(chain.rpcUrl),
42
+ pollingInterval: config.viemPollingIntervalMS,
42
43
  });
43
44
 
44
45
  this.rollupContract = getContract({
@@ -1,5 +1,5 @@
1
1
  import { type L1ReaderConfig, NULL_KEY } from '@aztec/ethereum';
2
- import { type ConfigMappingsType, getConfigFromMappings } from '@aztec/foundation/config';
2
+ import { type ConfigMappingsType, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
3
3
 
4
4
  /**
5
5
  * The configuration of the rollup transaction publisher.
@@ -51,6 +51,11 @@ export const getTxSenderConfigMappings: (
51
51
  defaultValue: 1,
52
52
  description: 'The number of confirmations required.',
53
53
  },
54
+ viemPollingIntervalMS: {
55
+ env: `${scope}_VIEM_POLLING_INTERVAL_MS`,
56
+ description: 'The polling interval viem uses in ms',
57
+ ...numberConfigHelper(1_000),
58
+ },
54
59
  });
55
60
 
56
61
  export function getTxSenderConfigFromEnv(scope: 'PROVER' | 'SEQ'): Omit<TxSenderConfig, 'l1Contracts'> {
@@ -1,2 +1,2 @@
1
- export { L1Publisher } from './l1-publisher.js';
1
+ export { L1Publisher, L1SubmitEpochProofArgs } from './l1-publisher.js';
2
2
  export * from './config.js';
@@ -83,6 +83,7 @@ export class L1PublisherMetrics {
83
83
  private recordTx(txType: L1TxType, durationMs: number, stats: Omit<L1PublishProofStats, 'eventName'>) {
84
84
  const attributes = {
85
85
  [Attributes.L1_TX_TYPE]: txType,
86
+ [Attributes.L1_SENDER]: stats.sender,
86
87
  } as const;
87
88
 
88
89
  this.txCount.add(1, {