@aztec/sequencer-client 0.62.0 → 0.63.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 (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 +22 -18
  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 +104 -94
  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 +29 -21
  35. package/src/sequencer/metrics.ts +18 -2
  36. package/src/sequencer/sequencer.ts +130 -100
  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.62.0",
3
+ "version": "0.63.1",
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.62.0",
28
- "@aztec/bb-prover": "0.62.0",
29
- "@aztec/circuit-types": "0.62.0",
30
- "@aztec/circuits.js": "0.62.0",
31
- "@aztec/ethereum": "0.62.0",
32
- "@aztec/foundation": "0.62.0",
33
- "@aztec/l1-artifacts": "0.62.0",
34
- "@aztec/merkle-tree": "0.62.0",
35
- "@aztec/noir-contracts.js": "0.62.0",
36
- "@aztec/noir-protocol-circuits-types": "0.62.0",
37
- "@aztec/p2p": "0.62.0",
38
- "@aztec/protocol-contracts": "0.62.0",
39
- "@aztec/prover-client": "0.62.0",
40
- "@aztec/simulator": "0.62.0",
41
- "@aztec/telemetry-client": "0.62.0",
42
- "@aztec/types": "0.62.0",
43
- "@aztec/validator-client": "0.62.0",
44
- "@aztec/world-state": "0.62.0",
27
+ "@aztec/aztec.js": "0.63.1",
28
+ "@aztec/bb-prover": "0.63.1",
29
+ "@aztec/circuit-types": "0.63.1",
30
+ "@aztec/circuits.js": "0.63.1",
31
+ "@aztec/ethereum": "0.63.1",
32
+ "@aztec/foundation": "0.63.1",
33
+ "@aztec/l1-artifacts": "0.63.1",
34
+ "@aztec/merkle-tree": "0.63.1",
35
+ "@aztec/noir-contracts.js": "0.63.1",
36
+ "@aztec/noir-protocol-circuits-types": "0.63.1",
37
+ "@aztec/p2p": "0.63.1",
38
+ "@aztec/protocol-contracts": "0.63.1",
39
+ "@aztec/prover-client": "0.63.1",
40
+ "@aztec/simulator": "0.63.1",
41
+ "@aztec/telemetry-client": "0.63.1",
42
+ "@aztec/types": "0.63.1",
43
+ "@aztec/validator-client": "0.63.1",
44
+ "@aztec/world-state": "0.63.1",
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,7 +244,7 @@ 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 timeOfNextL1Slot = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(ETHEREUM_SLOT_DURATION));
247
+ const timeOfNextL1Slot = BigInt((await this.publicClient.getBlock()).timestamp + this.ethereumSlotDuration);
243
248
  const [slot, blockNumber] = await this.rollupContract.read.canProposeAtTime([
244
249
  timeOfNextL1Slot,
245
250
  `0x${archive.toString('hex')}`,
@@ -305,7 +310,7 @@ export class L1Publisher {
305
310
  }
306
311
 
307
312
  public async validateProofQuote(quote: EpochProofQuote): Promise<EpochProofQuote | undefined> {
308
- const timeOfNextL1Slot = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(ETHEREUM_SLOT_DURATION));
313
+ const timeOfNextL1Slot = BigInt((await this.publicClient.getBlock()).timestamp + this.ethereumSlotDuration);
309
314
  const args = [timeOfNextL1Slot, quote.toViemArgs()] as const;
310
315
  try {
311
316
  await this.rollupContract.read.validateEpochProofRightClaimAtTime(args, { account: this.account });
@@ -333,7 +338,7 @@ export class L1Publisher {
333
338
  signatures: [],
334
339
  },
335
340
  ): Promise<void> {
336
- const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(ETHEREUM_SLOT_DURATION));
341
+ const ts = BigInt((await this.publicClient.getBlock()).timestamp + this.ethereumSlotDuration);
337
342
 
338
343
  const formattedSignatures = attestationData.signatures.map(attest => attest.toViemSignature());
339
344
  const flags = { ignoreDA: true, ignoreSignatures: formattedSignatures.length == 0 };
@@ -385,7 +390,7 @@ export class L1Publisher {
385
390
  return false;
386
391
  }
387
392
 
388
- if (!this.gerousiaContract) {
393
+ if (!this.governanceProposerContract) {
389
394
  return false;
390
395
  }
391
396
 
@@ -398,14 +403,17 @@ export class L1Publisher {
398
403
 
399
404
  const [proposer, roundNumber] = await Promise.all([
400
405
  this.rollupContract.read.getProposerAt([timestamp]),
401
- this.gerousiaContract.read.computeRound([slotNumber]),
406
+ this.governanceProposerContract.read.computeRound([slotNumber]),
402
407
  ]);
403
408
 
404
409
  if (proposer != this.account.address) {
405
410
  return false;
406
411
  }
407
412
 
408
- 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
+ ]);
409
417
 
410
418
  if (slotForLastVote >= slotNumber) {
411
419
  return false;
@@ -418,7 +426,7 @@ export class L1Publisher {
418
426
 
419
427
  let txHash;
420
428
  try {
421
- txHash = await this.gerousiaContract.write.vote([this.payload.toString()], {
429
+ txHash = await this.governanceProposerContract.write.vote([this.payload.toString()], {
422
430
  account: this.account,
423
431
  });
424
432
  } catch (err) {
@@ -461,7 +469,7 @@ export class L1Publisher {
461
469
 
462
470
  const consensusPayload = new ConsensusPayload(block.header, block.archive.root, txHashes ?? []);
463
471
 
464
- const digest = getHashedSignaturePayload(consensusPayload);
472
+ const digest = getHashedSignaturePayload(consensusPayload, SignatureDomainSeperator.blockAttestation);
465
473
  const proposeTxArgs = {
466
474
  header: block.header.toBuffer(),
467
475
  archive: block.archive.root.toBuffer(),
@@ -752,7 +760,7 @@ export class L1Publisher {
752
760
  args.publicInputs.outHash.toString(),
753
761
  args.publicInputs.proverId.toString(),
754
762
  ],
755
- makeTuple(AZTEC_EPOCH_DURATION * 2, i =>
763
+ makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i =>
756
764
  i % 2 === 0
757
765
  ? args.publicInputs.fees[i / 2].recipient.toField().toString()
758
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);