@aztec/sequencer-client 0.69.1 → 0.70.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 (46) hide show
  1. package/dest/client/sequencer-client.d.ts +2 -0
  2. package/dest/client/sequencer-client.d.ts.map +1 -1
  3. package/dest/client/sequencer-client.js +3 -3
  4. package/dest/publisher/index.d.ts +0 -1
  5. package/dest/publisher/index.d.ts.map +1 -1
  6. package/dest/publisher/index.js +1 -2
  7. package/dest/publisher/l1-publisher.d.ts +9 -3
  8. package/dest/publisher/l1-publisher.d.ts.map +1 -1
  9. package/dest/publisher/l1-publisher.js +63 -77
  10. package/dest/sequencer/metrics.d.ts +2 -1
  11. package/dest/sequencer/metrics.d.ts.map +1 -1
  12. package/dest/sequencer/metrics.js +8 -2
  13. package/dest/sequencer/sequencer.d.ts +17 -16
  14. package/dest/sequencer/sequencer.d.ts.map +1 -1
  15. package/dest/sequencer/sequencer.js +57 -19
  16. package/dest/test/index.d.ts +18 -0
  17. package/dest/test/index.d.ts.map +1 -0
  18. package/dest/test/index.js +8 -0
  19. package/dest/{publisher → test}/test-l1-publisher.d.ts +1 -1
  20. package/dest/test/test-l1-publisher.d.ts.map +1 -0
  21. package/dest/test/test-l1-publisher.js +11 -0
  22. package/dest/tx_validator/archive_cache.d.ts +14 -0
  23. package/dest/tx_validator/archive_cache.d.ts.map +1 -0
  24. package/dest/tx_validator/archive_cache.js +22 -0
  25. package/dest/tx_validator/gas_validator.js +2 -2
  26. package/dest/tx_validator/phases_validator.js +2 -2
  27. package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
  28. package/dest/tx_validator/tx_validator_factory.js +9 -6
  29. package/package.json +22 -20
  30. package/src/client/sequencer-client.ts +5 -2
  31. package/src/publisher/index.ts +0 -1
  32. package/src/publisher/l1-publisher.ts +84 -82
  33. package/src/sequencer/metrics.ts +11 -1
  34. package/src/sequencer/sequencer.ts +83 -34
  35. package/src/test/index.ts +23 -0
  36. package/src/{publisher → test}/test-l1-publisher.ts +1 -1
  37. package/src/tx_validator/archive_cache.ts +27 -0
  38. package/src/tx_validator/gas_validator.ts +1 -1
  39. package/src/tx_validator/phases_validator.ts +1 -1
  40. package/src/tx_validator/tx_validator_factory.ts +8 -1
  41. package/dest/publisher/test-l1-publisher.d.ts.map +0 -1
  42. package/dest/publisher/test-l1-publisher.js +0 -11
  43. package/dest/publisher/utils.d.ts +0 -2
  44. package/dest/publisher/utils.d.ts.map +0 -1
  45. package/dest/publisher/utils.js +0 -13
  46. package/src/publisher/utils.ts +0 -14
@@ -3,7 +3,7 @@ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { TxExecutionPhase } from '@aztec/circuit-types';
4
4
  import { FunctionSelector } from '@aztec/circuits.js';
5
5
  import { createLogger } from '@aztec/foundation/log';
6
- import { computeFeePayerBalanceStorageSlot, getExecutionRequestsByPhase } from '@aztec/simulator';
6
+ import { computeFeePayerBalanceStorageSlot, getExecutionRequestsByPhase } from '@aztec/simulator/server';
7
7
  export class GasTxValidator {
8
8
  constructor(publicDataSource, feeJuiceAddress, enforceFees, gasFees) {
9
9
  _GasTxValidator_instances.add(this);
@@ -70,4 +70,4 @@ _GasTxValidator_log = new WeakMap(), _GasTxValidator_publicDataSource = new Weak
70
70
  }
71
71
  return { result: 'valid' };
72
72
  };
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvZ2FzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBVyxnQkFBZ0IsRUFBNkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RyxPQUFPLEVBQThCLGdCQUFnQixFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU9sRyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUNFLGdCQUFtQyxFQUNuQyxlQUE2QixFQUM3QixXQUFvQixFQUNwQixPQUFnQjs7UUFWbEIsOEJBQU8sWUFBWSxDQUFDLCtCQUErQixDQUFDLEVBQUM7UUFDckQsbURBQXFDO1FBQ3JDLGtEQUErQjtRQUMvQiw4Q0FBc0I7UUFDdEIsMENBQWtCO1FBUWhCLHVCQUFBLElBQUksb0NBQXFCLGdCQUFnQixNQUFBLENBQUM7UUFDMUMsdUJBQUEsSUFBSSxtQ0FBb0IsZUFBZSxNQUFBLENBQUM7UUFDeEMsdUJBQUEsSUFBSSwrQkFBZ0IsV0FBVyxNQUFBLENBQUM7UUFDaEMsdUJBQUEsSUFBSSwyQkFBWSxPQUFPLE1BQUEsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQU07UUFDZixJQUFJLHVCQUFBLElBQUksNkRBQVksTUFBaEIsSUFBSSxFQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0QsT0FBTyx1QkFBQSxJQUFJLGdFQUFlLE1BQW5CLElBQUksRUFBZ0IsRUFB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
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvZ2FzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBVyxnQkFBZ0IsRUFBNkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RyxPQUFPLEVBQThCLGdCQUFnQixFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU96RyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUNFLGdCQUFtQyxFQUNuQyxlQUE2QixFQUM3QixXQUFvQixFQUNwQixPQUFnQjs7UUFWbEIsOEJBQU8sWUFBWSxDQUFDLCtCQUErQixDQUFDLEVBQUM7UUFDckQsbURBQXFDO1FBQ3JDLGtEQUErQjtRQUMvQiw4Q0FBc0I7UUFDdEIsMENBQWtCO1FBUWhCLHVCQUFBLElBQUksb0NBQXFCLGdCQUFnQixNQUFBLENBQUM7UUFDMUMsdUJBQUEsSUFBSSxtQ0FBb0IsZUFBZSxNQUFBLENBQUM7UUFDeEMsdUJBQUEsSUFBSSwrQkFBZ0IsV0FBVyxNQUFBLENBQUM7UUFDaEMsdUJBQUEsSUFBSSwyQkFBWSxPQUFPLE1BQUEsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQU07UUFDZixJQUFJLHVCQUFBLElBQUksNkRBQVksTUFBaEIsSUFBSSxFQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0QsT0FBTyx1QkFBQSxJQUFJLGdFQUFlLE1BQW5CLElBQUksRUFBZ0IsRUFB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
@@ -2,7 +2,7 @@ var _PhasesTxValidator_log;
2
2
  import { __classPrivateFieldGet } from "tslib";
3
3
  import { Tx, TxExecutionPhase, } from '@aztec/circuit-types';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
- import { ContractsDataSourcePublicDB, getExecutionRequestsByPhase } from '@aztec/simulator';
5
+ import { ContractsDataSourcePublicDB, getExecutionRequestsByPhase } from '@aztec/simulator/server';
6
6
  export class PhasesTxValidator {
7
7
  constructor(contracts, setupAllowList) {
8
8
  this.setupAllowList = setupAllowList;
@@ -69,4 +69,4 @@ export class PhasesTxValidator {
69
69
  }
70
70
  }
71
71
  _PhasesTxValidator_log = new WeakMap();
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxFQUFFLEVBQ0YsZ0JBQWdCLEdBR2pCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVGLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBWSxTQUE2QixFQUFVLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUhuRixpQ0FBTyxZQUFZLENBQUMsa0NBQWtDLENBQUMsRUFBQztRQUl0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFNO1FBQ3JCLElBQUksQ0FBQztZQUNILHdGQUF3RjtZQUN4RixtR0FBbUc7WUFDbkcsK0RBQStEO1lBQy9ELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkIsdUJBQUEsSUFBSSw4QkFBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLDBFQUEwRSxDQUFDLENBQUM7Z0JBQ2hILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDN0IsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RSxLQUFL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
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxFQUFFLEVBQ0YsZ0JBQWdCLEdBR2pCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5HLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBWSxTQUE2QixFQUFVLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUhuRixpQ0FBTyxZQUFZLENBQUMsa0NBQWtDLENBQUMsRUFBQztRQUl0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFNO1FBQ3JCLElBQUksQ0FBQztZQUNILHdGQUF3RjtZQUN4RixtR0FBbUc7WUFDbkcsK0RBQStEO1lBQy9ELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkIsdUJBQUEsSUFBSSw4QkFBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLDBFQUEwRSxDQUFDLENBQUM7Z0JBQ2hILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDN0IsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RSxLQUFL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
@@ -1 +1 @@
1
- {"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,EAAE,EACP,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAqB,KAAK,kBAAkB,EAAM,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAYxH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,6BAA6B,GAAG,SAAS,EACnD,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB,GACA,WAAW,CAAC,EAAE,CAAC,CAejB;AAED,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,cAAc,EAAE,GAC/B;IACD,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,oBAAoB,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,cAAc,EAAE,cAAc,CAAC;CAChC,CAgBA"}
1
+ {"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,EAAE,EACP,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAqB,KAAK,kBAAkB,EAAM,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAcxH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,6BAA6B,GAAG,SAAS,EACnD,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB,GACA,WAAW,CAAC,EAAE,CAAC,CAgBjB;AAED,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,cAAc,EAAE,GAC/B;IACD,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,oBAAoB,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,cAAc,EAAE,cAAc,CAAC;CAChC,CAkBA"}
@@ -1,7 +1,8 @@
1
1
  import { Fr } from '@aztec/circuits.js';
2
- import { AggregateTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, TxProofValidator, } from '@aztec/p2p';
2
+ import { AggregateTxValidator, BlockHeaderTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, TxProofValidator, } from '@aztec/p2p';
3
3
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
- import { readPublicState } from '@aztec/simulator';
4
+ import { readPublicState } from '@aztec/simulator/server';
5
+ import { ArchiveCache } from './archive_cache.js';
5
6
  import { GasTxValidator } from './gas_validator.js';
6
7
  import { NullifierCache } from './nullifier_cache.js';
7
8
  import { PhasesTxValidator } from './phases_validator.js';
@@ -13,6 +14,7 @@ export function createValidatorForAcceptingTxs(db, contractDataSource, verifier,
13
14
  new DoubleSpendTxValidator(new NullifierCache(db)),
14
15
  new PhasesTxValidator(contractDataSource, setupAllowList),
15
16
  new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, enforceFees, gasFees),
17
+ new BlockHeaderTxValidator(new ArchiveCache(db)),
16
18
  ];
17
19
  if (verifier) {
18
20
  validators.push(new TxProofValidator(verifier));
@@ -21,9 +23,10 @@ export function createValidatorForAcceptingTxs(db, contractDataSource, verifier,
21
23
  }
22
24
  export function createValidatorsForBlockBuilding(db, contractDataSource, globalVariables, enforceFees, setupAllowList) {
23
25
  const nullifierCache = new NullifierCache(db);
26
+ const archiveCache = new ArchiveCache(db);
24
27
  const publicStateSource = new DatabasePublicStateSource(db);
25
28
  return {
26
- preprocessValidator: preprocessValidator(nullifierCache, publicStateSource, contractDataSource, enforceFees, globalVariables, setupAllowList),
29
+ preprocessValidator: preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource, enforceFees, globalVariables, setupAllowList),
27
30
  postprocessValidator: postprocessValidator(nullifierCache),
28
31
  nullifierCache,
29
32
  };
@@ -36,11 +39,11 @@ class DatabasePublicStateSource {
36
39
  return readPublicState(this.db, contractAddress, slot);
37
40
  }
38
41
  }
39
- function preprocessValidator(nullifierCache, publicStateSource, contractDataSource, enforceFees, globalVariables, setupAllowList) {
42
+ function preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource, enforceFees, globalVariables, setupAllowList) {
40
43
  // We don't include the TxProofValidator nor the DataTxValidator here because they are already checked by the time we get to block building.
41
- return new AggregateTxValidator(new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, enforceFees, globalVariables.gasFees));
44
+ return new AggregateTxValidator(new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, enforceFees, globalVariables.gasFees), new BlockHeaderTxValidator(archiveCache));
42
45
  }
43
46
  function postprocessValidator(nullifierCache) {
44
47
  return new DoubleSpendTxValidator(nullifierCache);
45
48
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL3R4X3ZhbGlkYXRvcl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBOEMsRUFBRSxFQUFzQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUEwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLEVBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxRQUFtRCxFQUNuRCxJQU1DO0lBRUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDOUUsTUFBTSxVQUFVLEdBQXNCO1FBQ3BDLElBQUksZUFBZSxFQUFFO1FBQ3JCLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLGNBQWMsQ0FBQztRQUN6RCxJQUFJLGNBQWMsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO0tBQzlHLENBQUM7SUFFRixJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLEVBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxlQUFnQyxFQUNoQyxXQUFvQixFQUNwQixjQUFnQztJQU1oQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLGlCQUFpQixHQUFHLElBQUkseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFNUQsT0FBTztRQUNMLG1CQUFtQixFQUFFLG1CQUFtQixDQUN0QyxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGNBQWMsQ0FDZjtRQUNELG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUMxRCxjQUFjO0tBQ2YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLHlCQUF5QjtJQUM3QixZQUFvQixFQUE0QjtRQUE1QixPQUFFLEdBQUYsRUFBRSxDQUEwQjtJQUFHLENBQUM7SUFFcEQsV0FBVyxDQUFDLGVBQTZCLEVBQUUsSUFBUTtRQUNqRCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLG1CQUFtQixDQUMxQixjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsa0JBQXNDLEVBQ3RDLFdBQW9CLEVBQ3BCLGVBQWdDLEVBQ2hDLGNBQWdDO0lBRWhDLDRJQUE0STtJQUM1SSxPQUFPLElBQUksb0JBQW9CLENBQzdCLElBQUksbUJBQW1CLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQzdFLElBQUksc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQzFDLElBQUksaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLEVBQ3pELElBQUksY0FBYyxDQUFDLGlCQUFpQixFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUM5RyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsY0FBOEI7SUFDMUQsT0FBTyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3BELENBQUMifQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL3R4X3ZhbGlkYXRvcl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBOEMsRUFBRSxFQUFzQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsRUFBNEIsRUFDNUIsa0JBQXNDLEVBQ3RDLFFBQW1ELEVBQ25ELElBTUM7SUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUM5RSxNQUFNLFVBQVUsR0FBc0I7UUFDcEMsSUFBSSxlQUFlLEVBQUU7UUFDckIsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxJQUFJLHNCQUFzQixDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDO1FBQ3pELElBQUksY0FBYyxDQUFDLElBQUkseUJBQXlCLENBQUMsRUFBRSxDQUFDLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7UUFDN0csSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNqRCxDQUFDO0lBRUYsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxPQUFPLElBQUksb0JBQW9CLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxFQUE0QixFQUM1QixrQkFBc0MsRUFDdEMsZUFBZ0MsRUFDaEMsV0FBb0IsRUFDcEIsY0FBZ0M7SUFNaEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTVELE9BQU87UUFDTCxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FDdEMsY0FBYyxFQUNkLFlBQVksRUFDWixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxlQUFlLEVBQ2YsY0FBYyxDQUNmO1FBQ0Qsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUMsY0FBYyxDQUFDO1FBQzFELGNBQWM7S0FDZixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0seUJBQXlCO0lBQzdCLFlBQW9CLEVBQTRCO1FBQTVCLE9BQUUsR0FBRixFQUFFLENBQTBCO0lBQUcsQ0FBQztJQUVwRCxXQUFXLENBQUMsZUFBNkIsRUFBRSxJQUFRO1FBQ2pELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQUVELFNBQVMsbUJBQW1CLENBQzFCLGNBQThCLEVBQzlCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxrQkFBc0MsRUFDdEMsV0FBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsY0FBZ0M7SUFFaEMsNElBQTRJO0lBQzVJLE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsSUFBSSxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFDN0UsSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFDMUMsSUFBSSxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLENBQUMsRUFDekQsSUFBSSxjQUFjLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQzdHLElBQUksc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxjQUE4QjtJQUMxRCxPQUFPLElBQUksc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDcEQsQ0FBQyJ9
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@aztec/sequencer-client",
3
- "version": "0.69.1",
3
+ "version": "0.70.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
7
- "./config": "./dest/config.js"
7
+ "./config": "./dest/config.js",
8
+ "./test": "./dest/test/index.js"
8
9
  },
9
10
  "typedocOptions": {
10
11
  "entryPoints": [
@@ -27,24 +28,25 @@
27
28
  "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
28
29
  },
29
30
  "dependencies": {
30
- "@aztec/aztec.js": "0.69.1",
31
- "@aztec/bb-prover": "0.69.1",
32
- "@aztec/circuit-types": "0.69.1",
33
- "@aztec/circuits.js": "0.69.1",
34
- "@aztec/ethereum": "0.69.1",
35
- "@aztec/foundation": "0.69.1",
36
- "@aztec/l1-artifacts": "0.69.1",
37
- "@aztec/merkle-tree": "0.69.1",
38
- "@aztec/noir-contracts.js": "0.69.1",
39
- "@aztec/noir-protocol-circuits-types": "0.69.1",
40
- "@aztec/p2p": "0.69.1",
41
- "@aztec/protocol-contracts": "0.69.1",
42
- "@aztec/prover-client": "0.69.1",
43
- "@aztec/simulator": "0.69.1",
44
- "@aztec/telemetry-client": "0.69.1",
45
- "@aztec/types": "0.69.1",
46
- "@aztec/validator-client": "0.69.1",
47
- "@aztec/world-state": "0.69.1",
31
+ "@aztec/aztec.js": "0.70.0",
32
+ "@aztec/bb-prover": "0.70.0",
33
+ "@aztec/blob-sink": "0.70.0",
34
+ "@aztec/circuit-types": "0.70.0",
35
+ "@aztec/circuits.js": "0.70.0",
36
+ "@aztec/ethereum": "0.70.0",
37
+ "@aztec/foundation": "0.70.0",
38
+ "@aztec/l1-artifacts": "0.70.0",
39
+ "@aztec/merkle-tree": "0.70.0",
40
+ "@aztec/noir-contracts.js": "0.70.0",
41
+ "@aztec/noir-protocol-circuits-types": "0.70.0",
42
+ "@aztec/p2p": "0.70.0",
43
+ "@aztec/protocol-contracts": "0.70.0",
44
+ "@aztec/prover-client": "0.70.0",
45
+ "@aztec/simulator": "0.70.0",
46
+ "@aztec/telemetry-client": "0.70.0",
47
+ "@aztec/types": "0.70.0",
48
+ "@aztec/validator-client": "0.70.0",
49
+ "@aztec/world-state": "0.70.0",
48
50
  "@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
49
51
  "@noir-lang/types": "portal:../../noir/packages/types",
50
52
  "lodash.chunk": "^4.2.0",
@@ -1,3 +1,4 @@
1
+ import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
1
2
  import { type L1ToL2MessageSource, type L2BlockSource, type WorldStateSynchronizer } from '@aztec/circuit-types';
2
3
  import { type ContractDataSource } from '@aztec/circuits.js';
3
4
  import { isAnvilTestChain } from '@aztec/ethereum';
@@ -5,7 +6,7 @@ import { type EthAddress } from '@aztec/foundation/eth-address';
5
6
  import { type DateProvider } from '@aztec/foundation/timer';
6
7
  import { type P2P } from '@aztec/p2p';
7
8
  import { LightweightBlockBuilderFactory } from '@aztec/prover-client/block-builder';
8
- import { PublicProcessorFactory } from '@aztec/simulator';
9
+ import { PublicProcessorFactory } from '@aztec/simulator/server';
9
10
  import { type TelemetryClient } from '@aztec/telemetry-client';
10
11
  import { type ValidatorClient } from '@aztec/validator-client';
11
12
 
@@ -46,6 +47,7 @@ export class SequencerClient {
46
47
  l1ToL2MessageSource: L1ToL2MessageSource;
47
48
  telemetry: TelemetryClient;
48
49
  publisher?: L1Publisher;
50
+ blobSinkClient?: BlobSinkClientInterface;
49
51
  dateProvider: DateProvider;
50
52
  },
51
53
  ) {
@@ -59,7 +61,8 @@ export class SequencerClient {
59
61
  l1ToL2MessageSource,
60
62
  telemetry: telemetryClient,
61
63
  } = deps;
62
- const publisher = deps.publisher ?? new L1Publisher(config, telemetryClient);
64
+ const publisher =
65
+ deps.publisher ?? new L1Publisher(config, { telemetry: telemetryClient, blobSinkClient: deps.blobSinkClient });
63
66
  const globalsBuilder = new GlobalVariableBuilder(config);
64
67
 
65
68
  const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, deps.dateProvider, telemetryClient);
@@ -1,2 +1 @@
1
1
  export { L1Publisher, L1SubmitEpochProofArgs } from './l1-publisher.js';
2
- export * from './test-l1-publisher.js';
@@ -1,3 +1,4 @@
1
+ import { type BlobSinkClientInterface, createBlobSinkClient } from '@aztec/blob-sink/client';
1
2
  import {
2
3
  ConsensusPayload,
3
4
  type EpochProofClaim,
@@ -16,7 +17,14 @@ import {
16
17
  type Proof,
17
18
  } from '@aztec/circuits.js';
18
19
  import { type FeeRecipient, type RootRollupPublicInputs } from '@aztec/circuits.js/rollup';
19
- import { type EthereumChain, type L1ContractsConfig, L1TxUtils, createEthereumChain } from '@aztec/ethereum';
20
+ import {
21
+ type EthereumChain,
22
+ type GasPrice,
23
+ type L1ContractsConfig,
24
+ L1TxUtils,
25
+ createEthereumChain,
26
+ formatViemError,
27
+ } from '@aztec/ethereum';
20
28
  import { makeTuple } from '@aztec/foundation/array';
21
29
  import { toHex } from '@aztec/foundation/bigint-buffer';
22
30
  import { Blob } from '@aztec/foundation/blob';
@@ -29,6 +37,7 @@ import { InterruptibleSleep } from '@aztec/foundation/sleep';
29
37
  import { Timer } from '@aztec/foundation/timer';
30
38
  import { EmpireBaseAbi, RollupAbi, SlasherAbi } from '@aztec/l1-artifacts';
31
39
  import { type TelemetryClient } from '@aztec/telemetry-client';
40
+ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
32
41
 
33
42
  import pick from 'lodash.pick';
34
43
  import {
@@ -63,7 +72,6 @@ import { privateKeyToAccount } from 'viem/accounts';
63
72
 
64
73
  import { type PublisherConfig, type TxSenderConfig } from './config.js';
65
74
  import { L1PublisherMetrics } from './l1-publisher-metrics.js';
66
- import { prettyLogViemErrorMsg } from './utils.js';
67
75
 
68
76
  /**
69
77
  * Stats for a sent transaction.
@@ -117,6 +125,14 @@ type L1ProcessArgs = {
117
125
  attestations?: Signature[];
118
126
  };
119
127
 
128
+ type L1ProcessReturnType = {
129
+ receipt: TransactionReceipt | undefined;
130
+ args: any;
131
+ functionName: string;
132
+ data: Hex;
133
+ gasPrice: GasPrice;
134
+ };
135
+
120
136
  /** Arguments to the submitEpochProof method of the rollup contract */
121
137
  export type L1SubmitEpochProofArgs = {
122
138
  epochSize: number;
@@ -177,8 +193,7 @@ export class L1Publisher {
177
193
  protected account: PrivateKeyAccount;
178
194
  protected ethereumSlotDuration: bigint;
179
195
 
180
- private blobSinkUrl: string | undefined;
181
-
196
+ private blobSinkClient: BlobSinkClientInterface;
182
197
  // @note - with blobs, the below estimate seems too large.
183
198
  // Total used for full block from int_l1_pub e2e test: 1m (of which 86k is 1x blob)
184
199
  // Total used for emptier block from above test: 429k (of which 84k is 1x blob)
@@ -189,12 +204,15 @@ export class L1Publisher {
189
204
 
190
205
  constructor(
191
206
  config: TxSenderConfig & PublisherConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>,
192
- client: TelemetryClient,
207
+ deps: { telemetry?: TelemetryClient; blobSinkClient?: BlobSinkClientInterface } = {},
193
208
  ) {
194
209
  this.sleepTimeMs = config?.l1PublishRetryIntervalMS ?? 60_000;
195
210
  this.ethereumSlotDuration = BigInt(config.ethereumSlotDuration);
196
- this.blobSinkUrl = config.blobSinkUrl;
197
- this.metrics = new L1PublisherMetrics(client, 'L1Publisher');
211
+
212
+ const telemetry = deps.telemetry ?? new NoopTelemetryClient();
213
+ this.blobSinkClient = deps.blobSinkClient ?? createBlobSinkClient(config.blobSinkUrl);
214
+
215
+ this.metrics = new L1PublisherMetrics(telemetry, 'L1Publisher');
198
216
 
199
217
  const { l1RpcUrl: rpcUrl, l1ChainId: chainId, publisherPrivateKey, l1Contracts } = config;
200
218
  const chain = createEthereumChain(rpcUrl, chainId);
@@ -528,7 +546,7 @@ export class L1Publisher {
528
546
  account: this.account,
529
547
  });
530
548
  } catch (err) {
531
- const msg = prettyLogViemErrorMsg(err);
549
+ const msg = formatViemError(err);
532
550
  logger.error(`Failed to vote`, msg);
533
551
  this.myLastVotes[voteType] = cachedMyLastVote;
534
552
  return false;
@@ -557,6 +575,7 @@ export class L1Publisher {
557
575
  attestations?: Signature[],
558
576
  txHashes?: TxHash[],
559
577
  proofQuote?: EpochProofQuote,
578
+ opts: { txTimeoutAt?: Date } = {},
560
579
  ): Promise<boolean> {
561
580
  const ctx = {
562
581
  blockNumber: block.number,
@@ -598,15 +617,15 @@ export class L1Publisher {
598
617
 
599
618
  this.log.debug(`Submitting propose transaction`);
600
619
  const result = proofQuote
601
- ? await this.sendProposeAndClaimTx(proposeTxArgs, proofQuote)
602
- : await this.sendProposeTx(proposeTxArgs);
620
+ ? await this.sendProposeAndClaimTx(proposeTxArgs, proofQuote, opts)
621
+ : await this.sendProposeTx(proposeTxArgs, opts);
603
622
 
604
623
  if (!result?.receipt) {
605
624
  this.log.info(`Failed to publish block ${block.number} to L1`, ctx);
606
625
  return false;
607
626
  }
608
627
 
609
- const { receipt, args, functionName, data } = result;
628
+ const { receipt, args, functionName, data, gasPrice } = result;
610
629
 
611
630
  // Tx was mined successfully
612
631
  if (receipt.status === 'success') {
@@ -645,7 +664,7 @@ export class L1Publisher {
645
664
  {
646
665
  blobs: proposeTxArgs.blobs.map(b => b.dataWithZeros),
647
666
  kzg,
648
- maxFeePerBlobGas: 10000000000n,
667
+ maxFeePerBlobGas: gasPrice.maxFeePerBlobGas ?? 10000000000n,
649
668
  },
650
669
  );
651
670
  this.log.error(`Rollup process tx reverted. ${errorMsg}`, undefined, {
@@ -659,11 +678,10 @@ export class L1Publisher {
659
678
  /** Calls claimEpochProofRight in the Rollup contract to submit a chosen prover quote for the previous epoch. */
660
679
  public async claimEpochProofRight(proofQuote: EpochProofQuote) {
661
680
  const timer = new Timer();
662
-
663
- let receipt;
681
+ let result;
664
682
  try {
665
683
  this.log.debug(`Submitting claimEpochProofRight transaction`);
666
- receipt = await this.l1TxUtils.sendAndMonitorTransaction({
684
+ result = await this.l1TxUtils.sendAndMonitorTransaction({
667
685
  to: this.rollupContract.address,
668
686
  data: encodeFunctionData({
669
687
  abi: RollupAbi,
@@ -672,12 +690,14 @@ export class L1Publisher {
672
690
  }),
673
691
  });
674
692
  } catch (err) {
675
- this.log.error(`Failed to claim epoch proof right: ${prettyLogViemErrorMsg(err)}`, err, {
693
+ this.log.error(`Failed to claim epoch proof right`, err, {
676
694
  proofQuote: proofQuote.toInspect(),
677
695
  });
678
696
  return false;
679
697
  }
680
698
 
699
+ const { receipt } = result;
700
+
681
701
  if (receipt.status === 'success') {
682
702
  const tx = await this.getTransactionStats(receipt.transactionHash);
683
703
  const stats: L1PublishStats = {
@@ -900,35 +920,42 @@ export class L1Publisher {
900
920
  publicInputs: RootRollupPublicInputs;
901
921
  proof: Proof;
902
922
  }): Promise<string | undefined> {
903
- try {
904
- const proofHex: Hex = `0x${args.proof.withoutPublicInputs().toString('hex')}`;
905
- const argsArray = this.getSubmitEpochProofArgs(args);
923
+ const proofHex: Hex = `0x${args.proof.withoutPublicInputs().toString('hex')}`;
924
+ const argsArray = this.getSubmitEpochProofArgs(args);
906
925
 
907
- const txArgs = [
908
- {
909
- epochSize: argsArray[0],
910
- args: argsArray[1],
911
- fees: argsArray[2],
912
- blobPublicInputs: argsArray[3],
913
- aggregationObject: argsArray[4],
914
- proof: proofHex,
915
- },
916
- ] as const;
917
-
918
- this.log.info(`SubmitEpochProof proofSize=${args.proof.withoutPublicInputs().length} bytes`);
926
+ const txArgs = [
927
+ {
928
+ epochSize: argsArray[0],
929
+ args: argsArray[1],
930
+ fees: argsArray[2],
931
+ blobPublicInputs: argsArray[3],
932
+ aggregationObject: argsArray[4],
933
+ proof: proofHex,
934
+ },
935
+ ] as const;
919
936
 
920
- const txReceipt = await this.l1TxUtils.sendAndMonitorTransaction({
937
+ this.log.info(`SubmitEpochProof proofSize=${args.proof.withoutPublicInputs().length} bytes`);
938
+ const data = encodeFunctionData({
939
+ abi: this.rollupContract.abi,
940
+ functionName: 'submitEpochRootProof',
941
+ args: txArgs,
942
+ });
943
+ try {
944
+ const { receipt } = await this.l1TxUtils.sendAndMonitorTransaction({
921
945
  to: this.rollupContract.address,
922
- data: encodeFunctionData({
923
- abi: this.rollupContract.abi,
924
- functionName: 'submitEpochRootProof',
925
- args: txArgs,
926
- }),
946
+ data,
927
947
  });
928
948
 
929
- return txReceipt.transactionHash;
949
+ return receipt.transactionHash;
930
950
  } catch (err) {
931
951
  this.log.error(`Rollup submit epoch proof failed`, err);
952
+ const errorMsg = await this.tryGetErrorFromRevertedTx(data, {
953
+ args: [...txArgs],
954
+ functionName: 'submitEpochRootProof',
955
+ abi: this.rollupContract.abi,
956
+ address: this.rollupContract.address,
957
+ });
958
+ this.log.error(`Rollup submit epoch proof tx reverted. ${errorMsg}`);
932
959
  return undefined;
933
960
  }
934
961
  }
@@ -949,7 +976,6 @@ export class L1Publisher {
949
976
  {
950
977
  blobs: encodedData.blobs.map(b => b.dataWithZeros),
951
978
  kzg,
952
- maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS
953
979
  },
954
980
  );
955
981
 
@@ -1016,7 +1042,8 @@ export class L1Publisher {
1016
1042
 
1017
1043
  private async sendProposeTx(
1018
1044
  encodedData: L1ProcessArgs,
1019
- ): Promise<{ receipt: TransactionReceipt | undefined; args: any; functionName: string; data: Hex } | undefined> {
1045
+ opts: { txTimeoutAt?: Date } = {},
1046
+ ): Promise<L1ProcessReturnType | undefined> {
1020
1047
  if (this.interrupted) {
1021
1048
  return undefined;
1022
1049
  }
@@ -1028,28 +1055,29 @@ export class L1Publisher {
1028
1055
  functionName: 'propose',
1029
1056
  args,
1030
1057
  });
1031
- const receipt = await this.l1TxUtils.sendAndMonitorTransaction(
1058
+ const result = await this.l1TxUtils.sendAndMonitorTransaction(
1032
1059
  {
1033
1060
  to: this.rollupContract.address,
1034
1061
  data,
1035
1062
  },
1036
1063
  {
1037
1064
  fixedGas: gas,
1065
+ ...opts,
1038
1066
  },
1039
1067
  {
1040
1068
  blobs: encodedData.blobs.map(b => b.dataWithZeros),
1041
1069
  kzg,
1042
- maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS
1043
1070
  },
1044
1071
  );
1045
1072
  return {
1046
- receipt,
1073
+ receipt: result.receipt,
1074
+ gasPrice: result.gasPrice,
1047
1075
  args,
1048
1076
  functionName: 'propose',
1049
1077
  data,
1050
1078
  };
1051
1079
  } catch (err) {
1052
- this.log.error(`Rollup publish failed: ${prettyLogViemErrorMsg(err)}`, err);
1080
+ this.log.error(`Rollup publish failed.`, err);
1053
1081
  return undefined;
1054
1082
  }
1055
1083
  }
@@ -1057,7 +1085,8 @@ export class L1Publisher {
1057
1085
  private async sendProposeAndClaimTx(
1058
1086
  encodedData: L1ProcessArgs,
1059
1087
  quote: EpochProofQuote,
1060
- ): Promise<{ receipt: TransactionReceipt | undefined; args: any; functionName: string; data: Hex } | undefined> {
1088
+ opts: { txTimeoutAt?: Date } = {},
1089
+ ): Promise<L1ProcessReturnType | undefined> {
1061
1090
  if (this.interrupted) {
1062
1091
  return undefined;
1063
1092
  }
@@ -1069,27 +1098,30 @@ export class L1Publisher {
1069
1098
  functionName: 'proposeAndClaim',
1070
1099
  args: [...args, quote.toViemArgs()],
1071
1100
  });
1072
- const receipt = await this.l1TxUtils.sendAndMonitorTransaction(
1101
+ const result = await this.l1TxUtils.sendAndMonitorTransaction(
1073
1102
  {
1074
1103
  to: this.rollupContract.address,
1075
1104
  data,
1076
1105
  },
1077
- { fixedGas: gas },
1106
+ {
1107
+ fixedGas: gas,
1108
+ ...opts,
1109
+ },
1078
1110
  {
1079
1111
  blobs: encodedData.blobs.map(b => b.dataWithZeros),
1080
1112
  kzg,
1081
- maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS
1082
1113
  },
1083
1114
  );
1084
1115
 
1085
1116
  return {
1086
- receipt,
1117
+ receipt: result.receipt,
1118
+ gasPrice: result.gasPrice,
1087
1119
  args: [...args, quote.toViemArgs()],
1088
1120
  functionName: 'proposeAndClaim',
1089
1121
  data,
1090
1122
  };
1091
1123
  } catch (err) {
1092
- this.log.error(`Rollup publish failed: ${prettyLogViemErrorMsg(err)}`, err);
1124
+ this.log.error(`Rollup publish failed.`, err);
1093
1125
  return undefined;
1094
1126
  }
1095
1127
  }
@@ -1143,38 +1175,8 @@ export class L1Publisher {
1143
1175
  * In the future this will move to be the beacon block id - which takes a bit more work
1144
1176
  * to calculate and will need to be mocked in e2e tests
1145
1177
  */
1146
- protected async sendBlobsToBlobSink(blockHash: string, blobs: Blob[]): Promise<boolean> {
1147
- // TODO(md): for now we are assuming the indexes of the blobs will be 0, 1, 2
1148
- // When in reality they will not, but for testing purposes this is fine
1149
- if (!this.blobSinkUrl) {
1150
- this.log.verbose('No blob sink url configured');
1151
- return false;
1152
- }
1153
-
1154
- this.log.verbose(`Sending ${blobs.length} blobs to blob sink`);
1155
- try {
1156
- const res = await fetch(`${this.blobSinkUrl}/blob_sidecar`, {
1157
- method: 'POST',
1158
- headers: {
1159
- 'Content-Type': 'application/json',
1160
- },
1161
- body: JSON.stringify({
1162
- // eslint-disable-next-line camelcase
1163
- block_id: blockHash,
1164
- blobs: blobs.map((b, i) => ({ blob: b.toBuffer(), index: i })),
1165
- }),
1166
- });
1167
-
1168
- if (res.ok) {
1169
- return true;
1170
- }
1171
-
1172
- this.log.error('Failed to send blobs to blob sink', res.status);
1173
- return false;
1174
- } catch (err) {
1175
- this.log.error(`Error sending blobs to blob sink`, err);
1176
- return false;
1177
- }
1178
+ protected sendBlobsToBlobSink(blockHash: string, blobs: Blob[]): Promise<boolean> {
1179
+ return this.blobSinkClient.sendBlobsToBlobSink(blockHash, blobs);
1178
1180
  }
1179
1181
  }
1180
1182
 
@@ -16,6 +16,7 @@ export class SequencerMetrics {
16
16
 
17
17
  private blockCounter: UpDownCounter;
18
18
  private blockBuildDuration: Histogram;
19
+ private blockBuildManaPerSecond: Gauge;
19
20
  private stateTransitionBufferDuration: Histogram;
20
21
  private currentBlockNumber: Gauge;
21
22
  private currentBlockSize: Gauge;
@@ -28,11 +29,19 @@ export class SequencerMetrics {
28
29
  this.tracer = client.getTracer(name);
29
30
 
30
31
  this.blockCounter = meter.createUpDownCounter(Metrics.SEQUENCER_BLOCK_COUNT);
32
+
31
33
  this.blockBuildDuration = meter.createHistogram(Metrics.SEQUENCER_BLOCK_BUILD_DURATION, {
32
34
  unit: 'ms',
33
35
  description: 'Duration to build a block',
34
36
  valueType: ValueType.INT,
35
37
  });
38
+
39
+ this.blockBuildManaPerSecond = meter.createGauge(Metrics.SEQUENCER_BLOCK_BUILD_MANA_PER_SECOND, {
40
+ unit: 'mana/s',
41
+ description: 'Mana per second when building a block',
42
+ valueType: ValueType.INT,
43
+ });
44
+
36
45
  this.stateTransitionBufferDuration = meter.createHistogram(Metrics.SEQUENCER_STATE_TRANSITION_BUFFER_DURATION, {
37
46
  unit: 'ms',
38
47
  description:
@@ -96,11 +105,12 @@ export class SequencerMetrics {
96
105
  this.setCurrentBlock(0, 0);
97
106
  }
98
107
 
99
- recordPublishedBlock(buildDurationMs: number) {
108
+ recordPublishedBlock(buildDurationMs: number, totalMana: number) {
100
109
  this.blockCounter.add(1, {
101
110
  [Attributes.STATUS]: 'published',
102
111
  });
103
112
  this.blockBuildDuration.record(Math.ceil(buildDurationMs));
113
+ this.blockBuildManaPerSecond.record(Math.ceil((totalMana * 1000) / buildDurationMs));
104
114
  this.setCurrentBlock(0, 0);
105
115
  }
106
116