@aztec/sequencer-client 0.61.0 → 0.63.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 (40) hide show
  1. package/dest/block_builder/light.d.ts.map +1 -1
  2. package/dest/block_builder/light.js +3 -5
  3. package/dest/client/sequencer-client.d.ts +1 -1
  4. package/dest/client/sequencer-client.d.ts.map +1 -1
  5. package/dest/client/sequencer-client.js +9 -4
  6. package/dest/config.d.ts +2 -2
  7. package/dest/config.d.ts.map +1 -1
  8. package/dest/config.js +14 -10
  9. package/dest/global_variable_builder/global_builder.d.ts +3 -2
  10. package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
  11. package/dest/global_variable_builder/global_builder.js +4 -3
  12. package/dest/publisher/l1-publisher.d.ts +6 -4
  13. package/dest/publisher/l1-publisher.d.ts.map +1 -1
  14. package/dest/publisher/l1-publisher.js +28 -20
  15. package/dest/sequencer/metrics.d.ts +3 -2
  16. package/dest/sequencer/metrics.d.ts.map +1 -1
  17. package/dest/sequencer/metrics.js +16 -2
  18. package/dest/sequencer/sequencer.d.ts +23 -38
  19. package/dest/sequencer/sequencer.d.ts.map +1 -1
  20. package/dest/sequencer/sequencer.js +105 -95
  21. package/dest/sequencer/utils.d.ts +52 -0
  22. package/dest/sequencer/utils.d.ts.map +1 -0
  23. package/dest/sequencer/utils.js +70 -0
  24. package/dest/tx_validator/gas_validator.d.ts.map +1 -1
  25. package/dest/tx_validator/gas_validator.js +5 -5
  26. package/dest/tx_validator/phases_validator.d.ts.map +1 -1
  27. package/dest/tx_validator/phases_validator.js +4 -4
  28. package/dest/tx_validator/test_utils.js +9 -7
  29. package/package.json +19 -19
  30. package/src/block_builder/light.ts +1 -4
  31. package/src/client/sequencer-client.ts +10 -2
  32. package/src/config.ts +24 -10
  33. package/src/global_variable_builder/global_builder.ts +7 -10
  34. package/src/publisher/l1-publisher.ts +35 -23
  35. package/src/sequencer/metrics.ts +18 -2
  36. package/src/sequencer/sequencer.ts +135 -101
  37. package/src/sequencer/utils.ts +78 -0
  38. package/src/tx_validator/gas_validator.ts +4 -4
  39. package/src/tx_validator/phases_validator.ts +3 -3
  40. package/src/tx_validator/test_utils.ts +9 -7
@@ -1,9 +1,9 @@
1
1
  var _GasTxValidator_instances, _GasTxValidator_log, _GasTxValidator_publicDataSource, _GasTxValidator_feeJuiceAddress, _GasTxValidator_validateTxFee;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { PublicKernelPhase } from '@aztec/circuit-types';
3
+ import { TxExecutionPhase } from '@aztec/circuit-types';
4
4
  import { FunctionSelector } from '@aztec/circuits.js';
5
5
  import { createDebugLogger } from '@aztec/foundation/log';
6
- import { EnqueuedCallsProcessor, computeFeePayerBalanceStorageSlot } from '@aztec/simulator';
6
+ import { computeFeePayerBalanceStorageSlot, getExecutionRequestsByPhase } from '@aztec/simulator';
7
7
  export class GasTxValidator {
8
8
  constructor(publicDataSource, feeJuiceAddress, enforceFees) {
9
9
  _GasTxValidator_instances.add(this);
@@ -47,13 +47,13 @@ _GasTxValidator_log = new WeakMap(), _GasTxValidator_publicDataSource = new Weak
47
47
  // Read current balance of the feePayer
48
48
  const initialBalance = await __classPrivateFieldGet(this, _GasTxValidator_publicDataSource, "f").storageRead(__classPrivateFieldGet(this, _GasTxValidator_feeJuiceAddress, "f"), computeFeePayerBalanceStorageSlot(feePayer));
49
49
  // If there is a claim in this tx that increases the fee payer balance in Fee Juice, add it to balance
50
- const setupFns = EnqueuedCallsProcessor.getExecutionRequestsByPhase(tx, PublicKernelPhase.SETUP);
50
+ const setupFns = getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP);
51
51
  const claimFunctionCall = setupFns.find(fn => fn.callContext.contractAddress.equals(__classPrivateFieldGet(this, _GasTxValidator_feeJuiceAddress, "f")) &&
52
52
  fn.callContext.msgSender.equals(__classPrivateFieldGet(this, _GasTxValidator_feeJuiceAddress, "f")) &&
53
53
  fn.args.length > 2 &&
54
54
  // Public functions get routed through the dispatch function, whose first argument is the target function selector.
55
55
  fn.args[0].equals(FunctionSelector.fromSignature('_increase_public_balance((Field),Field)').toField()) &&
56
- fn.args[1].equals(feePayer) &&
56
+ fn.args[1].equals(feePayer.toField()) &&
57
57
  !fn.callContext.isStaticCall);
58
58
  const balance = claimFunctionCall ? initialBalance.add(claimFunctionCall.args[2]) : initialBalance;
59
59
  if (balance.lt(feeLimit)) {
@@ -62,4 +62,4 @@ _GasTxValidator_log = new WeakMap(), _GasTxValidator_publicDataSource = new Weak
62
62
  }
63
63
  return true;
64
64
  };
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvZ2FzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQThCLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPN0YsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBWSxnQkFBbUMsRUFBRSxlQUE2QixFQUFTLFdBQW9COztRQUFwQixnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUozRyw4QkFBTyxpQkFBaUIsQ0FBQyxxQ0FBcUMsQ0FBQyxFQUFDO1FBQ2hFLG1EQUFxQztRQUNyQyxrREFBK0I7UUFHN0IsdUJBQUEsSUFBSSxvQ0FBcUIsZ0JBQWdCLE1BQUEsQ0FBQztRQUMxQyx1QkFBQSxJQUFJLG1DQUFvQixlQUFlLE1BQUEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFTO1FBQ3pCLE1BQU0sUUFBUSxHQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBUyxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sdUJBQUEsSUFBSSxnRUFBZSxNQUFuQixJQUFJLEVBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQztRQUNILENB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
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvZ2FzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBVyxnQkFBZ0IsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRixPQUFPLEVBQThCLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPbEcsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBWSxnQkFBbUMsRUFBRSxlQUE2QixFQUFTLFdBQW9COztRQUFwQixnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUozRyw4QkFBTyxpQkFBaUIsQ0FBQyxxQ0FBcUMsQ0FBQyxFQUFDO1FBQ2hFLG1EQUFxQztRQUNyQyxrREFBK0I7UUFHN0IsdUJBQUEsSUFBSSxvQ0FBcUIsZ0JBQWdCLE1BQUEsQ0FBQztRQUMxQyx1QkFBQSxJQUFJLG1DQUFvQixlQUFlLE1BQUEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFTO1FBQ3pCLE1BQU0sUUFBUSxHQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBUyxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sdUJBQUEsSUFBSSxnRUFBZSxNQUFuQixJQUFJLEVBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQztRQUNILENB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
@@ -1 +1 @@
1
- {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../src/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE3B,EAAE,EACF,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAIZ,OAAO,CAAC,cAAc;IAFjE,OAAO,CAAC,kBAAkB,CAA8B;gBAE5C,SAAS,EAAE,kBAAkB,EAAU,cAAc,EAAE,cAAc,EAAE;IAI7E,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAsBnE,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBpC,aAAa,CAAC,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA6CvG"}
1
+ {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../src/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,EAAE,EAEF,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAIZ,OAAO,CAAC,cAAc;IAFjE,OAAO,CAAC,kBAAkB,CAA8B;gBAE5C,SAAS,EAAE,kBAAkB,EAAU,cAAc,EAAE,cAAc,EAAE;IAI7E,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAsBnE,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBpC,aAAa,CAAC,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA6CvG"}
@@ -1,8 +1,8 @@
1
1
  var _PhasesTxValidator_log;
2
2
  import { __classPrivateFieldGet } from "tslib";
3
- import { PublicKernelPhase, Tx, } from '@aztec/circuit-types';
3
+ import { Tx, TxExecutionPhase, } from '@aztec/circuit-types';
4
4
  import { createDebugLogger } from '@aztec/foundation/log';
5
- import { ContractsDataSourcePublicDB, EnqueuedCallsProcessor } from '@aztec/simulator';
5
+ import { ContractsDataSourcePublicDB, getExecutionRequestsByPhase } from '@aztec/simulator';
6
6
  export class PhasesTxValidator {
7
7
  constructor(contracts, setupAllowList) {
8
8
  this.setupAllowList = setupAllowList;
@@ -32,7 +32,7 @@ export class PhasesTxValidator {
32
32
  __classPrivateFieldGet(this, _PhasesTxValidator_log, "f").debug(`Tx ${Tx.getHash(tx)} does not contain enqueued public functions. Skipping phases validation.`);
33
33
  return true;
34
34
  }
35
- const setupFns = EnqueuedCallsProcessor.getExecutionRequestsByPhase(tx, PublicKernelPhase.SETUP);
35
+ const setupFns = getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP);
36
36
  for (const setupFn of setupFns) {
37
37
  if (!(await this.isOnAllowList(setupFn, this.setupAllowList))) {
38
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}`);
@@ -78,4 +78,4 @@ export class PhasesTxValidator {
78
78
  }
79
79
  }
80
80
  _PhasesTxValidator_log = new WeakMap();
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxpQkFBaUIsRUFDakIsRUFBRSxHQUVILE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkYsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFZLFNBQTZCLEVBQVUsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSG5GLGlDQUFPLGlCQUFpQixDQUFDLHdDQUF3QyxDQUFDLEVBQUM7UUFJakUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBUztRQUN6QixNQUFNLFFBQVEsR0FBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxVQUFVLEdBQVMsRUFBRSxDQUFDO1FBRTVCLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDckIsd0ZBQXdGO1lBQ3hGLG1HQUFtRztZQUNuRywrREFBK0Q7WUFDL0QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWxELElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0s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
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxFQUFFLEVBQ0YsZ0JBQWdCLEdBRWpCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUYsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFZLFNBQTZCLEVBQVUsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSG5GLGlDQUFPLGlCQUFpQixDQUFDLHdDQUF3QyxDQUFDLEVBQUM7UUFJakUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBUztRQUN6QixNQUFNLFFBQVEsR0FBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxVQUFVLEdBQVMsRUFBRSxDQUFDO1FBRTVCLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDckIsd0ZBQXdGO1lBQ3hGLG1HQUFtRztZQUNuRywrREFBK0Q7WUFDL0QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWxELElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0s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
@@ -1,9 +1,9 @@
1
1
  import { computeVarArgsHash } from '@aztec/circuits.js/hash';
2
2
  export function patchNonRevertibleFn(tx, index, overrides) {
3
- return patchFn('endNonRevertibleData', tx, index, overrides);
3
+ return patchFn('nonRevertibleAccumulatedData', tx, index, overrides);
4
4
  }
5
5
  export function patchRevertibleFn(tx, index, overrides) {
6
- return patchFn('end', tx, index, overrides);
6
+ return patchFn('revertibleAccumulatedData', tx, index, overrides);
7
7
  }
8
8
  function patchFn(where, tx, index, overrides) {
9
9
  const fn = tx.enqueuedPublicFunctionCalls.at(-1 * index - 1);
@@ -12,14 +12,16 @@ function patchFn(where, tx, index, overrides) {
12
12
  fn.args = overrides.args ?? fn.args;
13
13
  fn.callContext.msgSender = overrides.msgSender ?? fn.callContext.msgSender;
14
14
  tx.enqueuedPublicFunctionCalls[index] = fn;
15
- const request = tx.data.forPublic[where].publicCallStack[index];
16
- request.callContext.contractAddress = fn.callContext.contractAddress;
17
- request.callContext = fn.callContext;
15
+ const request = tx.data.forPublic[where].publicCallRequests[index];
16
+ request.contractAddress = fn.callContext.contractAddress;
17
+ request.msgSender = fn.callContext.msgSender;
18
+ request.functionSelector = fn.callContext.functionSelector;
19
+ request.isStaticCall = fn.callContext.isStaticCall;
18
20
  request.argsHash = computeVarArgsHash(fn.args);
19
- tx.data.forPublic[where].publicCallStack[index] = request;
21
+ tx.data.forPublic[where].publicCallRequests[index] = request;
20
22
  return {
21
23
  address: fn.callContext.contractAddress,
22
24
  selector: fn.callContext.functionSelector,
23
25
  };
24
26
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvdGVzdF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLEVBQU0sRUFDTixLQUFhLEVBQ2IsU0FBd0c7SUFFeEcsT0FBTyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixFQUFNLEVBQ04sS0FBYSxFQUNiLFNBQXdHO0lBRXhHLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FDZCxLQUFxQyxFQUNyQyxFQUFNLEVBQ04sS0FBYSxFQUNiLFNBQXdHO0lBRXhHLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBRSxDQUFDO0lBQzlELEVBQUUsQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFDckYsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ3JELEVBQUUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3BDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDM0UsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUUzQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFDckUsT0FBTyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7SUFFM0QsT0FBTztRQUNMLE9BQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWU7UUFDdkMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCO0tBQzFDLENBQUM7QUFDSixDQUFDIn0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvdGVzdF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLEVBQU0sRUFDTixLQUFhLEVBQ2IsU0FBd0c7SUFFeEcsT0FBTyxPQUFPLENBQUMsOEJBQThCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixFQUFNLEVBQ04sS0FBYSxFQUNiLFNBQXdHO0lBRXhHLE9BQU8sT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUNkLEtBQW1FLEVBQ25FLEVBQU0sRUFDTixLQUFhLEVBQ2IsU0FBd0c7SUFFeEcsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFFLENBQUM7SUFDOUQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUNyRixFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDckQsRUFBRSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDcEMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUMzRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFDekQsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzRCxPQUFPLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO0lBQ25ELE9BQU8sQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUU5RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsZUFBZTtRQUN2QyxRQUFRLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7S0FDMUMsQ0FBQztBQUNKLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/sequencer-client",
3
- "version": "0.61.0",
3
+ "version": "0.63.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.61.0",
28
- "@aztec/bb-prover": "0.61.0",
29
- "@aztec/circuit-types": "0.61.0",
30
- "@aztec/circuits.js": "0.61.0",
31
- "@aztec/ethereum": "0.61.0",
32
- "@aztec/foundation": "0.61.0",
33
- "@aztec/l1-artifacts": "0.61.0",
34
- "@aztec/merkle-tree": "0.61.0",
35
- "@aztec/noir-contracts.js": "0.61.0",
36
- "@aztec/noir-protocol-circuits-types": "0.61.0",
37
- "@aztec/p2p": "0.61.0",
38
- "@aztec/protocol-contracts": "0.61.0",
39
- "@aztec/prover-client": "0.61.0",
40
- "@aztec/simulator": "0.61.0",
41
- "@aztec/telemetry-client": "0.61.0",
42
- "@aztec/types": "0.61.0",
43
- "@aztec/validator-client": "0.61.0",
44
- "@aztec/world-state": "0.61.0",
27
+ "@aztec/aztec.js": "0.63.0",
28
+ "@aztec/bb-prover": "0.63.0",
29
+ "@aztec/circuit-types": "0.63.0",
30
+ "@aztec/circuits.js": "0.63.0",
31
+ "@aztec/ethereum": "0.63.0",
32
+ "@aztec/foundation": "0.63.0",
33
+ "@aztec/l1-artifacts": "0.63.0",
34
+ "@aztec/merkle-tree": "0.63.0",
35
+ "@aztec/noir-contracts.js": "0.63.0",
36
+ "@aztec/noir-protocol-circuits-types": "0.63.0",
37
+ "@aztec/p2p": "0.63.0",
38
+ "@aztec/protocol-contracts": "0.63.0",
39
+ "@aztec/prover-client": "0.63.0",
40
+ "@aztec/simulator": "0.63.0",
41
+ "@aztec/telemetry-client": "0.63.0",
42
+ "@aztec/types": "0.63.0",
43
+ "@aztec/validator-client": "0.63.0",
44
+ "@aztec/world-state": "0.63.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",
@@ -8,7 +8,6 @@ import {
8
8
  type ProcessedTx,
9
9
  type TxEffect,
10
10
  makeEmptyProcessedTx,
11
- toTxEffect,
12
11
  } from '@aztec/circuit-types';
13
12
  import { Fr, type GlobalVariables, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js';
14
13
  import { padArrayEnd } from '@aztec/foundation/collection';
@@ -68,9 +67,7 @@ export class LightweightBlockBuilder implements BlockBuilder {
68
67
 
69
68
  private async buildBlock(): Promise<L2Block> {
70
69
  this.logger.verbose(`Finalising block`);
71
- const nonEmptyTxEffects: TxEffect[] = this.txs
72
- .map(tx => toTxEffect(tx, this.globalVariables!.gasFees))
73
- .filter(txEffect => !txEffect.isEmpty());
70
+ const nonEmptyTxEffects: TxEffect[] = this.txs.map(tx => tx.txEffect).filter(txEffect => !txEffect.isEmpty());
74
71
  const body = new Body(nonEmptyTxEffects);
75
72
  const header = await buildHeaderFromTxEffects(body, this.globalVariables!, this.l1ToL2Messages!, this.db);
76
73
 
@@ -40,13 +40,19 @@ export class SequencerClient {
40
40
  contractDataSource: ContractDataSource,
41
41
  l2BlockSource: L2BlockSource,
42
42
  l1ToL2MessageSource: L1ToL2MessageSource,
43
- simulationProvider: SimulationProvider,
43
+ _simulationProvider: SimulationProvider,
44
44
  telemetryClient: TelemetryClient,
45
45
  ) {
46
46
  const publisher = new L1Publisher(config, telemetryClient);
47
47
  const globalsBuilder = new GlobalVariableBuilder(config);
48
48
 
49
- const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, simulationProvider, telemetryClient);
49
+ const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, telemetryClient);
50
+
51
+ const rollup = publisher.getRollupContract();
52
+ const [l1GenesisTime, slotDuration] = await Promise.all([
53
+ rollup.read.GENESIS_TIME(),
54
+ rollup.read.SLOT_DURATION(),
55
+ ] as const);
50
56
 
51
57
  const sequencer = new Sequencer(
52
58
  publisher,
@@ -59,6 +65,8 @@ export class SequencerClient {
59
65
  l1ToL2MessageSource,
60
66
  publicProcessorFactory,
61
67
  new TxValidatorFactory(worldStateSynchronizer.getCommitted(), contractDataSource, !!config.enforceFees),
68
+ Number(l1GenesisTime),
69
+ Number(slotDuration),
62
70
  telemetryClient,
63
71
  config,
64
72
  );
package/src/config.ts CHANGED
@@ -1,12 +1,18 @@
1
1
  import { type AllowedElement } from '@aztec/circuit-types';
2
2
  import { AztecAddress, Fr, FunctionSelector, getContractClassFromArtifact } from '@aztec/circuits.js';
3
- import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum';
3
+ import {
4
+ type L1ContractsConfig,
5
+ type L1ReaderConfig,
6
+ l1ContractsConfigMappings,
7
+ l1ReaderConfigMappings,
8
+ } from '@aztec/ethereum';
4
9
  import {
5
10
  type ConfigMappingsType,
6
11
  booleanConfigHelper,
7
12
  getConfigFromMappings,
8
13
  numberConfigHelper,
9
14
  } from '@aztec/foundation/config';
15
+ import { pickConfigMappings } from '@aztec/foundation/config';
10
16
  import { EthAddress } from '@aztec/foundation/eth-address';
11
17
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
12
18
  import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
@@ -31,7 +37,12 @@ type ChainConfig = {
31
37
  /**
32
38
  * Configuration settings for the SequencerClient.
33
39
  */
34
- export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig;
40
+ export type SequencerClientConfig = PublisherConfig &
41
+ TxSenderConfig &
42
+ SequencerConfig &
43
+ L1ReaderConfig &
44
+ ChainConfig &
45
+ Pick<L1ContractsConfig, 'ethereumSlotDuration'>;
35
46
 
36
47
  export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
37
48
  transactionPollingIntervalMS: {
@@ -91,7 +102,7 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
91
102
  parseEnv: (val: string) => parseSequencerAllowList(val),
92
103
  defaultValue: getDefaultAllowedTeardownFunctions(),
93
104
  description: 'The list of functions calls allowed to run teardown',
94
- printDefault: () => 'FPC.pay_refund, FPC.pay_refund_with_shielded_rebate',
105
+ printDefault: () => 'FPC.pay_refund',
95
106
  },
96
107
  maxBlockSizeInBytes: {
97
108
  env: 'SEQ_MAX_BLOCK_SIZE_IN_BYTES',
@@ -103,9 +114,15 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
103
114
  description: 'Whether to require every tx to have a fee payer',
104
115
  ...booleanConfigHelper(),
105
116
  },
106
- gerousiaPayload: {
107
- env: 'GEROUSIA_PAYLOAD_ADDRESS',
108
- description: 'The address of the payload for the gerousia',
117
+ enforceTimeTable: {
118
+ env: 'SEQ_ENFORCE_TIME_TABLE',
119
+ description: 'Whether to enforce the time table when building blocks',
120
+ ...booleanConfigHelper(),
121
+ defaultValue: false,
122
+ },
123
+ governanceProposerPayload: {
124
+ env: 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS',
125
+ description: 'The address of the payload for the governanceProposer',
109
126
  parseEnv: (val: string) => EthAddress.fromString(val),
110
127
  defaultValue: EthAddress.ZERO,
111
128
  },
@@ -126,6 +143,7 @@ export const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientCo
126
143
  ...getTxSenderConfigMappings('SEQ'),
127
144
  ...getPublisherConfigMappings('SEQ'),
128
145
  ...chainConfigMappings,
146
+ ...pickConfigMappings(l1ContractsConfigMappings, ['ethereumSlotDuration']),
129
147
  };
130
148
 
131
149
  /**
@@ -217,9 +235,5 @@ function getDefaultAllowedTeardownFunctions(): AllowedElement[] {
217
235
  classId: getContractClassFromArtifact(FPCContract.artifact).id,
218
236
  selector: FunctionSelector.fromSignature('pay_refund((Field),Field,(Field))'),
219
237
  },
220
- {
221
- classId: getContractClassFromArtifact(FPCContract.artifact).id,
222
- selector: FunctionSelector.fromSignature('pay_refund_with_shielded_rebate(Field,(Field),Field)'),
223
- },
224
238
  ];
225
239
  }
@@ -1,12 +1,6 @@
1
1
  import { type GlobalVariableBuilder as GlobalVariableBuilderInterface } from '@aztec/circuit-types';
2
- import {
3
- type AztecAddress,
4
- ETHEREUM_SLOT_DURATION,
5
- type EthAddress,
6
- GasFees,
7
- GlobalVariables,
8
- } from '@aztec/circuits.js';
9
- import { type L1ReaderConfig, createEthereumChain } from '@aztec/ethereum';
2
+ import { type AztecAddress, type EthAddress, GasFees, GlobalVariables } from '@aztec/circuits.js';
3
+ import { type L1ContractsConfig, type L1ReaderConfig, createEthereumChain } from '@aztec/ethereum';
10
4
  import { Fr } from '@aztec/foundation/fields';
11
5
  import { createDebugLogger } from '@aztec/foundation/log';
12
6
  import { RollupAbi } from '@aztec/l1-artifacts';
@@ -30,12 +24,15 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
30
24
 
31
25
  private rollupContract: GetContractReturnType<typeof RollupAbi, PublicClient<HttpTransport, chains.Chain>>;
32
26
  private publicClient: PublicClient<HttpTransport, chains.Chain>;
27
+ private ethereumSlotDuration: number;
33
28
 
34
- constructor(config: L1ReaderConfig) {
29
+ constructor(config: L1ReaderConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>) {
35
30
  const { l1RpcUrl, l1ChainId: chainId, l1Contracts } = config;
36
31
 
37
32
  const chain = createEthereumChain(l1RpcUrl, chainId);
38
33
 
34
+ this.ethereumSlotDuration = config.ethereumSlotDuration;
35
+
39
36
  this.publicClient = createPublicClient({
40
37
  chain: chain.chainInfo,
41
38
  transport: http(chain.rpcUrl),
@@ -67,7 +64,7 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
67
64
  const chainId = new Fr(this.publicClient.chain.id);
68
65
 
69
66
  if (slotNumber === undefined) {
70
- const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(ETHEREUM_SLOT_DURATION));
67
+ const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
71
68
  slotNumber = await this.rollupContract.read.getSlotAt([ts]);
72
69
  }
73
70
 
@@ -3,21 +3,21 @@ import {
3
3
  type EpochProofClaim,
4
4
  type EpochProofQuote,
5
5
  type L2Block,
6
+ SignatureDomainSeperator,
6
7
  type TxHash,
7
8
  getHashedSignaturePayload,
8
9
  } from '@aztec/circuit-types';
9
10
  import { type L1PublishBlockStats, type L1PublishProofStats } from '@aztec/circuit-types/stats';
10
11
  import {
11
12
  AGGREGATION_OBJECT_LENGTH,
12
- AZTEC_EPOCH_DURATION,
13
- ETHEREUM_SLOT_DURATION,
13
+ AZTEC_MAX_EPOCH_DURATION,
14
14
  EthAddress,
15
15
  type FeeRecipient,
16
16
  type Header,
17
17
  type Proof,
18
18
  type RootRollupPublicInputs,
19
19
  } from '@aztec/circuits.js';
20
- import { createEthereumChain } from '@aztec/ethereum';
20
+ import { type L1ContractsConfig, createEthereumChain } from '@aztec/ethereum';
21
21
  import { makeTuple } from '@aztec/foundation/array';
22
22
  import { areArraysEqual, compactArray, times } from '@aztec/foundation/collection';
23
23
  import { type Signature } from '@aztec/foundation/eth-signature';
@@ -26,7 +26,7 @@ import { createDebugLogger } from '@aztec/foundation/log';
26
26
  import { type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
27
27
  import { InterruptibleSleep } from '@aztec/foundation/sleep';
28
28
  import { Timer } from '@aztec/foundation/timer';
29
- import { GerousiaAbi, RollupAbi } from '@aztec/l1-artifacts';
29
+ import { GovernanceProposerAbi, RollupAbi } from '@aztec/l1-artifacts';
30
30
  import { type TelemetryClient } from '@aztec/telemetry-client';
31
31
 
32
32
  import pick from 'lodash.pick';
@@ -122,7 +122,7 @@ export type L1SubmitEpochProofArgs = {
122
122
  endTimestamp: Fr;
123
123
  outHash: Fr;
124
124
  proverId: Fr;
125
- fees: Tuple<FeeRecipient, typeof AZTEC_EPOCH_DURATION>;
125
+ fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>;
126
126
  proof: Proof;
127
127
  };
128
128
 
@@ -149,20 +149,25 @@ export class L1Publisher {
149
149
  typeof RollupAbi,
150
150
  WalletClient<HttpTransport, chains.Chain, PrivateKeyAccount>
151
151
  >;
152
- private gerousiaContract?: GetContractReturnType<
153
- typeof GerousiaAbi,
152
+ private governanceProposerContract?: GetContractReturnType<
153
+ typeof GovernanceProposerAbi,
154
154
  WalletClient<HttpTransport, chains.Chain, PrivateKeyAccount>
155
155
  > = undefined;
156
156
 
157
157
  private publicClient: PublicClient<HttpTransport, chains.Chain>;
158
158
  private walletClient: WalletClient<HttpTransport, chains.Chain, PrivateKeyAccount>;
159
159
  private account: PrivateKeyAccount;
160
+ private ethereumSlotDuration: bigint;
160
161
 
161
162
  public static PROPOSE_GAS_GUESS: bigint = 12_000_000n;
162
163
  public static PROPOSE_AND_CLAIM_GAS_GUESS: bigint = this.PROPOSE_GAS_GUESS + 100_000n;
163
164
 
164
- constructor(config: TxSenderConfig & PublisherConfig, client: TelemetryClient) {
165
+ constructor(
166
+ config: TxSenderConfig & PublisherConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>,
167
+ client: TelemetryClient,
168
+ ) {
165
169
  this.sleepTimeMs = config?.l1PublishRetryIntervalMS ?? 60_000;
170
+ this.ethereumSlotDuration = BigInt(config.ethereumSlotDuration);
166
171
  this.metrics = new L1PublisherMetrics(client, 'L1Publisher');
167
172
 
168
173
  const { l1RpcUrl: rpcUrl, l1ChainId: chainId, publisherPrivateKey, l1Contracts } = config;
@@ -188,10 +193,10 @@ export class L1Publisher {
188
193
  client: this.walletClient,
189
194
  });
190
195
 
191
- if (l1Contracts.gerousiaAddress) {
192
- this.gerousiaContract = getContract({
193
- address: getAddress(l1Contracts.gerousiaAddress.toString()),
194
- abi: GerousiaAbi,
196
+ if (l1Contracts.governanceProposerAddress) {
197
+ this.governanceProposerContract = getContract({
198
+ address: getAddress(l1Contracts.governanceProposerAddress.toString()),
199
+ abi: GovernanceProposerAbi,
195
200
  client: this.walletClient,
196
201
  });
197
202
  }
@@ -239,8 +244,11 @@ export class L1Publisher {
239
244
  // FIXME: This should not throw if unable to propose but return a falsey value, so
240
245
  // we can differentiate between errors when hitting the L1 rollup contract (eg RPC error)
241
246
  // which may require a retry, vs actually not being the turn for proposing.
242
- const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(ETHEREUM_SLOT_DURATION));
243
- const [slot, blockNumber] = await this.rollupContract.read.canProposeAtTime([ts, `0x${archive.toString('hex')}`]);
247
+ const timeOfNextL1Slot = BigInt((await this.publicClient.getBlock()).timestamp + this.ethereumSlotDuration);
248
+ const [slot, blockNumber] = await this.rollupContract.read.canProposeAtTime([
249
+ timeOfNextL1Slot,
250
+ `0x${archive.toString('hex')}`,
251
+ ]);
244
252
  return [slot, blockNumber];
245
253
  }
246
254
 
@@ -302,9 +310,10 @@ export class L1Publisher {
302
310
  }
303
311
 
304
312
  public async validateProofQuote(quote: EpochProofQuote): Promise<EpochProofQuote | undefined> {
305
- const args = [quote.toViemArgs()] as const;
313
+ const timeOfNextL1Slot = BigInt((await this.publicClient.getBlock()).timestamp + this.ethereumSlotDuration);
314
+ const args = [timeOfNextL1Slot, quote.toViemArgs()] as const;
306
315
  try {
307
- await this.rollupContract.read.validateEpochProofRightClaim(args, { account: this.account });
316
+ await this.rollupContract.read.validateEpochProofRightClaimAtTime(args, { account: this.account });
308
317
  } catch (err) {
309
318
  const errorName = tryGetCustomErrorName(err);
310
319
  this.log.warn(`Proof quote validation failed: ${errorName}`);
@@ -329,7 +338,7 @@ export class L1Publisher {
329
338
  signatures: [],
330
339
  },
331
340
  ): Promise<void> {
332
- const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(ETHEREUM_SLOT_DURATION));
341
+ const ts = BigInt((await this.publicClient.getBlock()).timestamp + this.ethereumSlotDuration);
333
342
 
334
343
  const formattedSignatures = attestationData.signatures.map(attest => attest.toViemSignature());
335
344
  const flags = { ignoreDA: true, ignoreSignatures: formattedSignatures.length == 0 };
@@ -381,7 +390,7 @@ export class L1Publisher {
381
390
  return false;
382
391
  }
383
392
 
384
- if (!this.gerousiaContract) {
393
+ if (!this.governanceProposerContract) {
385
394
  return false;
386
395
  }
387
396
 
@@ -394,14 +403,17 @@ export class L1Publisher {
394
403
 
395
404
  const [proposer, roundNumber] = await Promise.all([
396
405
  this.rollupContract.read.getProposerAt([timestamp]),
397
- this.gerousiaContract.read.computeRound([slotNumber]),
406
+ this.governanceProposerContract.read.computeRound([slotNumber]),
398
407
  ]);
399
408
 
400
409
  if (proposer != this.account.address) {
401
410
  return false;
402
411
  }
403
412
 
404
- const [slotForLastVote] = await this.gerousiaContract.read.rounds([this.rollupContract.address, roundNumber]);
413
+ const [slotForLastVote] = await this.governanceProposerContract.read.rounds([
414
+ this.rollupContract.address,
415
+ roundNumber,
416
+ ]);
405
417
 
406
418
  if (slotForLastVote >= slotNumber) {
407
419
  return false;
@@ -414,7 +426,7 @@ export class L1Publisher {
414
426
 
415
427
  let txHash;
416
428
  try {
417
- txHash = await this.gerousiaContract.write.vote([this.payload.toString()], {
429
+ txHash = await this.governanceProposerContract.write.vote([this.payload.toString()], {
418
430
  account: this.account,
419
431
  });
420
432
  } catch (err) {
@@ -457,7 +469,7 @@ export class L1Publisher {
457
469
 
458
470
  const consensusPayload = new ConsensusPayload(block.header, block.archive.root, txHashes ?? []);
459
471
 
460
- const digest = getHashedSignaturePayload(consensusPayload);
472
+ const digest = getHashedSignaturePayload(consensusPayload, SignatureDomainSeperator.blockAttestation);
461
473
  const proposeTxArgs = {
462
474
  header: block.header.toBuffer(),
463
475
  archive: block.archive.root.toBuffer(),
@@ -748,7 +760,7 @@ export class L1Publisher {
748
760
  args.publicInputs.outHash.toString(),
749
761
  args.publicInputs.proverId.toString(),
750
762
  ],
751
- makeTuple(AZTEC_EPOCH_DURATION * 2, i =>
763
+ makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i =>
752
764
  i % 2 === 0
753
765
  ? args.publicInputs.fees[i / 2].recipient.toField().toString()
754
766
  : args.publicInputs.fees[(i - 1) / 2].value.toString(),
@@ -10,13 +10,14 @@ import {
10
10
  millisecondBuckets,
11
11
  } from '@aztec/telemetry-client';
12
12
 
13
- type SequencerStateCallback = () => number;
13
+ import { type SequencerState, type SequencerStateCallback, sequencerStateToNumber } from './utils.js';
14
14
 
15
15
  export class SequencerMetrics {
16
16
  public readonly tracer: Tracer;
17
17
 
18
18
  private blockCounter: UpDownCounter;
19
19
  private blockBuildDuration: Histogram;
20
+ private stateTransitionBufferDuration: Histogram;
20
21
  private currentBlockNumber: Gauge;
21
22
  private currentBlockSize: Gauge;
22
23
 
@@ -33,13 +34,22 @@ export class SequencerMetrics {
33
34
  explicitBucketBoundaries: millisecondBuckets(2),
34
35
  },
35
36
  });
37
+ this.stateTransitionBufferDuration = meter.createHistogram(Metrics.SEQUENCER_STATE_TRANSITION_BUFFER_DURATION, {
38
+ unit: 'ms',
39
+ description:
40
+ 'The time difference between when the sequencer needed to transition to a new state and when it actually did.',
41
+ valueType: ValueType.INT,
42
+ advice: {
43
+ explicitBucketBoundaries: millisecondBuckets(2),
44
+ },
45
+ });
36
46
 
37
47
  const currentState = meter.createObservableGauge(Metrics.SEQUENCER_CURRENT_STATE, {
38
48
  description: 'Current state of the sequencer',
39
49
  });
40
50
 
41
51
  currentState.addCallback(observer => {
42
- observer.observe(getState());
52
+ observer.observe(sequencerStateToNumber(getState()));
43
53
  });
44
54
 
45
55
  this.currentBlockNumber = meter.createGauge(Metrics.SEQUENCER_CURRENT_BLOCK_NUMBER, {
@@ -79,6 +89,12 @@ export class SequencerMetrics {
79
89
  this.setCurrentBlock(blockNumber, txCount);
80
90
  }
81
91
 
92
+ recordStateTransitionBufferMs(durationMs: number, state: SequencerState) {
93
+ this.stateTransitionBufferDuration.record(durationMs, {
94
+ [Attributes.SEQUENCER_STATE]: state,
95
+ });
96
+ }
97
+
82
98
  private setCurrentBlock(blockNumber: number, txCount: number) {
83
99
  this.currentBlockNumber.record(blockNumber);
84
100
  this.currentBlockSize.record(txCount);