@aztec/sequencer-client 0.7.10 → 0.8.7

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 (73) hide show
  1. package/README.md +1 -1
  2. package/dest/client/sequencer-client.d.ts +3 -3
  3. package/dest/client/sequencer-client.d.ts.map +1 -1
  4. package/dest/client/sequencer-client.js +6 -6
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +14 -7
  7. package/dest/global_variable_builder/config.d.ts +5 -5
  8. package/dest/global_variable_builder/config.d.ts.map +1 -1
  9. package/dest/global_variable_builder/viem-reader.js +3 -3
  10. package/dest/publisher/config.d.ts +6 -2
  11. package/dest/publisher/config.d.ts.map +1 -1
  12. package/dest/publisher/index.d.ts +27 -0
  13. package/dest/publisher/index.d.ts.map +1 -1
  14. package/dest/publisher/index.js +1 -1
  15. package/dest/publisher/l1-publisher.d.ts +26 -11
  16. package/dest/publisher/l1-publisher.d.ts.map +1 -1
  17. package/dest/publisher/l1-publisher.js +18 -4
  18. package/dest/publisher/viem-tx-sender.d.ts +2 -1
  19. package/dest/publisher/viem-tx-sender.d.ts.map +1 -1
  20. package/dest/publisher/viem-tx-sender.js +27 -7
  21. package/dest/sequencer/public_processor.d.ts +4 -2
  22. package/dest/sequencer/public_processor.d.ts.map +1 -1
  23. package/dest/sequencer/public_processor.js +11 -5
  24. package/dest/sequencer/sequencer.d.ts +13 -9
  25. package/dest/sequencer/sequencer.d.ts.map +1 -1
  26. package/dest/sequencer/sequencer.js +53 -34
  27. package/dest/simulator/index.d.ts +0 -1
  28. package/dest/simulator/index.d.ts.map +1 -1
  29. package/dest/simulator/index.js +2 -2
  30. package/dest/simulator/public_executor.d.ts +28 -4
  31. package/dest/simulator/public_executor.d.ts.map +1 -1
  32. package/dest/simulator/public_executor.js +46 -7
  33. package/dest/simulator/public_kernel.d.ts +1 -0
  34. package/dest/simulator/public_kernel.d.ts.map +1 -1
  35. package/dest/simulator/public_kernel.js +26 -5
  36. package/dest/simulator/rollup.d.ts +2 -8
  37. package/dest/simulator/rollup.d.ts.map +1 -1
  38. package/dest/simulator/rollup.js +37 -18
  39. package/package.json +70 -11
  40. package/src/client/sequencer-client.ts +7 -6
  41. package/src/config.ts +14 -5
  42. package/src/global_variable_builder/config.ts +6 -5
  43. package/src/global_variable_builder/viem-reader.ts +2 -2
  44. package/src/publisher/config.ts +7 -2
  45. package/src/publisher/index.ts +28 -0
  46. package/src/publisher/l1-publisher.ts +46 -13
  47. package/src/publisher/viem-tx-sender.ts +33 -13
  48. package/src/sequencer/public_processor.ts +13 -4
  49. package/src/sequencer/sequencer.ts +59 -45
  50. package/src/simulator/index.ts +0 -2
  51. package/src/simulator/public_executor.ts +53 -7
  52. package/src/simulator/public_kernel.ts +24 -4
  53. package/src/simulator/rollup.ts +38 -21
  54. package/.eslintrc.cjs +0 -1
  55. package/.tsbuildinfo +0 -1
  56. package/dest/block_builder/solo_block_builder.test.d.ts +0 -3
  57. package/dest/block_builder/solo_block_builder.test.d.ts.map +0 -1
  58. package/dest/block_builder/solo_block_builder.test.js +0 -277
  59. package/dest/publisher/l1-publisher.test.d.ts +0 -2
  60. package/dest/publisher/l1-publisher.test.d.ts.map +0 -1
  61. package/dest/publisher/l1-publisher.test.js +0 -58
  62. package/dest/sequencer/public_processor.test.d.ts +0 -2
  63. package/dest/sequencer/public_processor.test.d.ts.map +0 -1
  64. package/dest/sequencer/public_processor.test.js +0 -164
  65. package/dest/sequencer/sequencer.test.d.ts +0 -2
  66. package/dest/sequencer/sequencer.test.d.ts.map +0 -1
  67. package/dest/sequencer/sequencer.test.js +0 -99
  68. package/jest.integration.config.json +0 -13
  69. package/src/block_builder/solo_block_builder.test.ts +0 -425
  70. package/src/publisher/l1-publisher.test.ts +0 -79
  71. package/src/sequencer/public_processor.test.ts +0 -265
  72. package/src/sequencer/sequencer.test.ts +0 -160
  73. package/tsconfig.json +0 -38
@@ -1,3 +1,5 @@
1
+ var _ContractsDataSourcePublicDB_instances, _ContractsDataSourcePublicDB_getContract;
2
+ import { __classPrivateFieldGet } from "tslib";
1
3
  import { PublicExecutor, } from '@aztec/acir-simulator';
2
4
  import { CircuitsWasm, Fr } from '@aztec/circuits.js';
3
5
  import { MerkleTreeId } from '@aztec/types';
@@ -8,26 +10,63 @@ import { computePublicDataTreeLeafIndex } from '@aztec/world-state';
8
10
  * @param contractDataSource - A contract data source.
9
11
  * @returns A new instance of a PublicExecutor.
10
12
  */
11
- export function getPublicExecutor(merkleTree, contractDataSource, l1toL2MessageSource, blockData) {
12
- return new PublicExecutor(new WorldStatePublicDB(merkleTree), new ContractsDataSourcePublicDB(contractDataSource), new WorldStateDB(merkleTree, l1toL2MessageSource), blockData);
13
+ export function getPublicExecutor(merkleTree, publicContractsDB, l1toL2MessageSource, blockData) {
14
+ return new PublicExecutor(new WorldStatePublicDB(merkleTree), publicContractsDB, new WorldStateDB(merkleTree, l1toL2MessageSource), blockData);
13
15
  }
14
16
  /**
15
17
  * Implements the PublicContractsDB using a ContractDataSource.
18
+ * Progresively records contracts in transaction as they are processed in a block.
16
19
  */
17
- class ContractsDataSourcePublicDB {
20
+ export class ContractsDataSourcePublicDB {
18
21
  constructor(db) {
22
+ _ContractsDataSourcePublicDB_instances.add(this);
19
23
  this.db = db;
24
+ this.cache = new Map();
25
+ }
26
+ /**
27
+ * Add new contracts from a transaction
28
+ * @param tx - The transaction to add contracts from.
29
+ */
30
+ addNewContracts(tx) {
31
+ for (const contract of tx.newContracts) {
32
+ const contractAddress = contract.contractData.contractAddress;
33
+ if (contractAddress.isZero()) {
34
+ continue;
35
+ }
36
+ this.cache.set(contractAddress.toString(), contract);
37
+ }
38
+ return Promise.resolve();
39
+ }
40
+ /**
41
+ * Removes new contracts added from transactions
42
+ * @param tx - The tx's contracts to be removed
43
+ */
44
+ removeNewContracts(tx) {
45
+ for (const contract of tx.newContracts) {
46
+ const contractAddress = contract.contractData.contractAddress;
47
+ if (contractAddress.isZero()) {
48
+ continue;
49
+ }
50
+ this.cache.delete(contractAddress.toString());
51
+ }
52
+ return Promise.resolve();
20
53
  }
21
54
  async getBytecode(address, selector) {
22
- return (await this.db.getPublicFunction(address, selector))?.bytecode;
55
+ const contract = await __classPrivateFieldGet(this, _ContractsDataSourcePublicDB_instances, "m", _ContractsDataSourcePublicDB_getContract).call(this, address);
56
+ return contract?.getPublicFunction(selector)?.bytecode;
23
57
  }
24
58
  async getIsInternal(address, selector) {
25
- return (await this.db.getPublicFunction(address, selector))?.isInternal;
59
+ const contract = await __classPrivateFieldGet(this, _ContractsDataSourcePublicDB_instances, "m", _ContractsDataSourcePublicDB_getContract).call(this, address);
60
+ return contract?.getPublicFunction(selector)?.isInternal;
26
61
  }
27
62
  async getPortalContractAddress(address) {
28
- return (await this.db.getContractData(address))?.portalContractAddress;
63
+ const contract = await __classPrivateFieldGet(this, _ContractsDataSourcePublicDB_instances, "m", _ContractsDataSourcePublicDB_getContract).call(this, address);
64
+ return contract?.contractData.portalContractAddress;
29
65
  }
30
66
  }
67
+ _ContractsDataSourcePublicDB_instances = new WeakSet(), _ContractsDataSourcePublicDB_getContract = async function _ContractsDataSourcePublicDB_getContract(address) {
68
+ return this.cache.get(address.toString()) ?? (await this.db.getExtendedContractData(address));
69
+ };
31
70
  /**
32
71
  * Implements the PublicStateDB using a world-state database.
33
72
  */
@@ -84,4 +123,4 @@ export class WorldStateDB {
84
123
  return await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, commitment.toBuffer());
85
124
  }
86
125
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGNBQWMsR0FFZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBZ0IsWUFBWSxFQUFjLEVBQUUsRUFBdUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNySCxPQUFPLEVBQTJDLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRixPQUFPLEVBQXdCLDhCQUE4QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFVBQWdDLEVBQ2hDLGtCQUFzQyxFQUN0QyxtQkFBd0MsRUFDeEMsU0FBNEI7SUFFNUIsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFDbEMsSUFBSSwyQkFBMkIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNuRCxJQUFJLFlBQVksQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsRUFDakQsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLDJCQUEyQjtJQUMvQixZQUFvQixFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtJQUFHLENBQUM7SUFDOUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFxQixFQUFFLFFBQTBCO1FBQ2pFLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLENBQUM7SUFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQXFCLEVBQUUsUUFBMEI7UUFDbkUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDMUUsQ0FBQztJQUNELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUFxQjtRQUNsRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixDQUFDO0lBQ3pFLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0I7SUFHdEIsWUFBb0IsRUFBd0I7UUFBeEIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFGcEMsZUFBVSxHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRUQsQ0FBQztJQUVoRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBc0IsRUFBRSxJQUFRO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN2RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU0sS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0UsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFzQixFQUFFLElBQVEsRUFBRSxRQUFZO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUFvQixFQUF3QixFQUFVLG1CQUF3QztRQUExRSxPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7SUFBRyxDQUFDO0lBRTNGLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFjO1FBQzFDLHFDQUFxQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRixNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFFLENBQUM7UUFDekcsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFN0YsT0FBTztZQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQy9CLFdBQVcsRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFO1lBQ3ZDLEtBQUs7U0FDTixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFjO1FBQzVDLE9BQU8sTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztDQUNGIn0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBSUwsY0FBYyxHQUVmLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFnQixZQUFZLEVBQWMsRUFBRSxFQUF1QyxNQUFNLG9CQUFvQixDQUFDO0FBQ3JILE9BQU8sRUFBaUUsWUFBWSxFQUFNLE1BQU0sY0FBYyxDQUFDO0FBQy9HLE9BQU8sRUFBd0IsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsVUFBZ0MsRUFDaEMsaUJBQW9DLEVBQ3BDLG1CQUF3QyxFQUN4QyxTQUE0QjtJQUU1QixPQUFPLElBQUksY0FBYyxDQUN2QixJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUNsQyxpQkFBaUIsRUFDakIsSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLEVBQ2pELFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTywyQkFBMkI7SUFHdEMsWUFBb0IsRUFBc0I7O1FBQXRCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBRjFDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztJQUVILENBQUM7SUFFOUM7OztPQUdHO0lBQ0ksZUFBZSxDQUFDLEVBQU07UUFDM0IsS0FBSyxNQUFNLFFBQVEsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFO1lBQ3RDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO1lBRTlELElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM1QixTQUFTO2FBQ1Y7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENB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
@@ -4,6 +4,7 @@ import { PublicKernelCircuitSimulator } from './index.js';
4
4
  * Implements the PublicKernelCircuitSimulator by calling the wasm implementations of the circuits.
5
5
  */
6
6
  export declare class WasmPublicKernelCircuitSimulator implements PublicKernelCircuitSimulator {
7
+ private log;
7
8
  /**
8
9
  * Simulates the public kernel circuit (with a previous private kernel circuit run) from its inputs.
9
10
  * @param input - Inputs to the circuit.
@@ -1 +1 @@
1
- {"version":3,"file":"public_kernel.d.ts","sourceRoot":"","sources":["../../src/simulator/public_kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAA+B,MAAM,oBAAoB,CAAC;AAE/G,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,gCAAiC,YAAW,4BAA4B;IACnF;;;;OAIG;IACI,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAKpG;;;;OAIG;IACH,oCAAoC,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAInG"}
1
+ {"version":3,"file":"public_kernel.d.ts","sourceRoot":"","sources":["../../src/simulator/public_kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAA+B,MAAM,oBAAoB,CAAC;AAI/G,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,gCAAiC,YAAW,4BAA4B;IACnF,OAAO,CAAC,GAAG,CAAsD;IAEjE;;;;OAIG;IACU,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAa1G;;;;OAIG;IACU,oCAAoC,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAYhH"}
@@ -1,27 +1,48 @@
1
1
  import { simulatePublicKernelCircuit } from '@aztec/circuits.js';
2
+ import { createDebugLogger } from '@aztec/foundation/log';
3
+ import { elapsed } from '@aztec/foundation/timer';
2
4
  /**
3
5
  * Implements the PublicKernelCircuitSimulator by calling the wasm implementations of the circuits.
4
6
  */
5
7
  export class WasmPublicKernelCircuitSimulator {
8
+ constructor() {
9
+ this.log = createDebugLogger('aztec:public-kernel-simulator');
10
+ }
6
11
  /**
7
12
  * Simulates the public kernel circuit (with a previous private kernel circuit run) from its inputs.
8
13
  * @param input - Inputs to the circuit.
9
14
  * @returns The public inputs as outputs of the simulation.
10
15
  */
11
- publicKernelCircuitPrivateInput(input) {
16
+ async publicKernelCircuitPrivateInput(input) {
12
17
  if (!input.previousKernel.publicInputs.isPrivate)
13
18
  throw new Error(`Expected private kernel previous inputs`);
14
- return simulatePublicKernelCircuit(input);
19
+ const [time, result] = await elapsed(() => simulatePublicKernelCircuit(input));
20
+ this.log(`Simulated public kernel circuit with private input`, {
21
+ eventName: 'circuit-simulation',
22
+ circuitName: 'public-kernel-private-input',
23
+ duration: time.ms(),
24
+ inputSize: input.toBuffer().length,
25
+ outputSize: result.toBuffer().length,
26
+ });
27
+ return result;
15
28
  }
16
29
  /**
17
30
  * Simulates the public kernel circuit (with no previous public kernel circuit run) from its inputs.
18
31
  * @param input - Inputs to the circuit.
19
32
  * @returns The public inputs as outputs of the simulation.
20
33
  */
21
- publicKernelCircuitNonFirstIteration(input) {
34
+ async publicKernelCircuitNonFirstIteration(input) {
22
35
  if (input.previousKernel.publicInputs.isPrivate)
23
36
  throw new Error(`Expected public kernel previous inputs`);
24
- return simulatePublicKernelCircuit(input);
37
+ const [time, result] = await elapsed(() => simulatePublicKernelCircuit(input));
38
+ this.log(`Simulated public kernel circuit non-first iteration`, {
39
+ eventName: 'circuit-simulation',
40
+ circuitName: 'public-kernel-non-first-iteration',
41
+ duration: time.ms(),
42
+ inputSize: input.toBuffer().length,
43
+ outputSize: result.toBuffer().length,
44
+ });
45
+ return result;
25
46
  }
26
47
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3IvcHVibGljX2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdELDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJL0c7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDOzs7O09BSUc7SUFDSSwrQkFBK0IsQ0FBQyxLQUF5QjtRQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RyxPQUFPLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0NBQW9DLENBQUMsS0FBeUI7UUFDNUQsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzNHLE9BQU8sMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGIn0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3IvcHVibGljX2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdELDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdDQUFnQztJQUE3QztRQUNVLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBcUNuRSxDQUFDO0lBbkNDOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsK0JBQStCLENBQUMsS0FBeUI7UUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0csTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxHQUFHLENBQUMsb0RBQW9ELEVBQUU7WUFDN0QsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtZQUNsQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07U0FDckMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsS0FBeUI7UUFDekUsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzNHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsR0FBRyxDQUFDLHFEQUFxRCxFQUFFO1lBQzlELFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsV0FBVyxFQUFFLG1DQUFtQztZQUNoRCxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ3JDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiJ9
@@ -1,16 +1,10 @@
1
- import { BaseOrMergeRollupPublicInputs, BaseRollupInputs, CircuitsWasm, MergeRollupInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
1
+ import { BaseOrMergeRollupPublicInputs, BaseRollupInputs, MergeRollupInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
2
2
  import { RollupSimulator } from './index.js';
3
3
  /**
4
4
  * Implements the rollup circuit simulator using the wasm circuits implementation.
5
5
  */
6
6
  export declare class WasmRollupCircuitSimulator implements RollupSimulator {
7
- private wasm;
8
- constructor(wasm: CircuitsWasm);
9
- /**
10
- * Creates a new instance using the default CircuitsWasm module.
11
- * @returns A new instance.
12
- */
13
- static new(): Promise<WasmRollupCircuitSimulator>;
7
+ private log;
14
8
  /**
15
9
  * Simulates the base rollup circuit from its inputs.
16
10
  * @param input - Inputs to the circuit.
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/simulator/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAEhB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EAIvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAChE,OAAO,CAAC,IAAI,CAAe;gBAEf,IAAI,EAAE,YAAY;IAI9B;;;OAGG;WACiB,GAAG;IAIvB;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAQlF;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IASpF;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAQ5E"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/simulator/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAGhB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EAIvB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAChE,OAAO,CAAC,GAAG,CAA+C;IAE1D;;;;OAIG;IACU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAiB/F;;;;OAIG;IACU,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAkBjG;;;;OAIG;IACU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAiBzF"}
@@ -1,28 +1,31 @@
1
1
  import { CircuitError, CircuitsWasm, baseRollupSim, mergeRollupSim, rootRollupSim, } from '@aztec/circuits.js';
2
+ import { createDebugLogger } from '@aztec/foundation/log';
3
+ import { elapsed } from '@aztec/foundation/timer';
2
4
  /**
3
5
  * Implements the rollup circuit simulator using the wasm circuits implementation.
4
6
  */
5
7
  export class WasmRollupCircuitSimulator {
6
- constructor(wasm) {
7
- this.wasm = wasm;
8
- }
9
- /**
10
- * Creates a new instance using the default CircuitsWasm module.
11
- * @returns A new instance.
12
- */
13
- static async new() {
14
- return new this(await CircuitsWasm.get());
8
+ constructor() {
9
+ this.log = createDebugLogger('aztec:rollup-simulator');
15
10
  }
16
11
  /**
17
12
  * Simulates the base rollup circuit from its inputs.
18
13
  * @param input - Inputs to the circuit.
19
14
  * @returns The public inputs as outputs of the simulation.
20
15
  */
21
- baseRollupCircuit(input) {
22
- const result = baseRollupSim(this.wasm, input);
16
+ async baseRollupCircuit(input) {
17
+ const wasm = await CircuitsWasm.get();
18
+ const [time, result] = await elapsed(() => baseRollupSim(wasm, input));
23
19
  if (result instanceof CircuitError) {
24
20
  throw new CircuitError(result.code, result.message);
25
21
  }
22
+ this.log(`Simulated base rollup circuit`, {
23
+ eventName: 'circuit-simulation',
24
+ circuitName: 'base-rollup',
25
+ duration: time.ms(),
26
+ inputSize: input.toBuffer().length,
27
+ outputSize: result.toBuffer().length,
28
+ });
26
29
  return Promise.resolve(result);
27
30
  }
28
31
  /**
@@ -30,24 +33,40 @@ export class WasmRollupCircuitSimulator {
30
33
  * @param input - Inputs to the circuit.
31
34
  * @returns The public inputs as outputs of the simulation.
32
35
  */
33
- mergeRollupCircuit(input) {
34
- const result = mergeRollupSim(this.wasm, input);
36
+ async mergeRollupCircuit(input) {
37
+ const wasm = await CircuitsWasm.get();
38
+ const [time, result] = await elapsed(() => mergeRollupSim(wasm, input));
35
39
  if (result instanceof CircuitError) {
36
40
  throw new CircuitError(result.code, result.message);
37
41
  }
38
- return Promise.resolve(result);
42
+ this.log(`Simulated merge rollup circuit`, {
43
+ eventName: 'circuit-simulation',
44
+ circuitName: 'merge-rollup',
45
+ duration: time.ms(),
46
+ inputSize: input.toBuffer().length,
47
+ outputSize: result.toBuffer().length,
48
+ });
49
+ return result;
39
50
  }
40
51
  /**
41
52
  * Simulates the root rollup circuit from its inputs.
42
53
  * @param input - Inputs to the circuit.
43
54
  * @returns The public inputs as outputs of the simulation.
44
55
  */
45
- rootRollupCircuit(input) {
46
- const result = rootRollupSim(this.wasm, input);
56
+ async rootRollupCircuit(input) {
57
+ const wasm = await CircuitsWasm.get();
58
+ const [time, result] = await elapsed(() => rootRollupSim(wasm, input));
47
59
  if (result instanceof CircuitError) {
48
60
  throw new CircuitError(result.code, result.message);
49
61
  }
50
- return Promise.resolve(result);
62
+ this.log(`Simulated root rollup circuit`, {
63
+ eventName: 'circuit-simulation',
64
+ circuitName: 'root-rollup',
65
+ duration: time.ms(),
66
+ inputSize: input.toBuffer().length,
67
+ outputSize: result.toBuffer().length,
68
+ });
69
+ return result;
51
70
  }
52
71
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9yb2xsdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFlBQVksRUFDWixZQUFZLEVBSVosYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxvQkFBb0IsQ0FBQztBQUk1Qjs7R0FFRztBQUNILE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFBWSxJQUFrQjtRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHO1FBQ3JCLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEtBQXVCO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksTUFBTSxZQUFZLFlBQVksRUFBRTtZQUNsQyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsS0FBd0I7UUFDekMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxNQUFNLFlBQVksWUFBWSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxLQUF1QjtRQUN2QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLE1BQU0sWUFBWSxZQUFZLEVBQUU7WUFDbEMsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyRDtRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YifQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9yb2xsdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFlBQVksRUFDWixZQUFZLEVBSVosYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQXZDO1FBQ1UsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFxRTVELENBQUM7SUFuRUM7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUF1QjtRQUNwRCxNQUFNLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLE1BQU0sWUFBWSxZQUFZLEVBQUU7WUFDbEMsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUU7WUFDeEMsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUF3QjtRQUN0RCxNQUFNLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RSxJQUFJLE1BQU0sWUFBWSxZQUFZLEVBQUU7WUFDbEMsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUU7WUFDekMsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsY0FBYztZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQXVCO1FBQ3BELE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksTUFBTSxZQUFZLFlBQVksRUFBRTtZQUNsQyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRTtZQUN4QyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtZQUNsQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07U0FDckMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIn0=
package/package.json CHANGED
@@ -1,23 +1,82 @@
1
1
  {
2
2
  "name": "@aztec/sequencer-client",
3
- "version": "0.7.10",
4
- "exports": "./dest/index.js",
3
+ "version": "0.8.7",
5
4
  "type": "module",
5
+ "exports": "./dest/index.js",
6
+ "typedocOptions": {
7
+ "entryPoints": [
8
+ "./src/index.ts"
9
+ ],
10
+ "name": "Sequencer Client",
11
+ "tsconfig": "./tsconfig.json"
12
+ },
13
+ "scripts": {
14
+ "build": "yarn clean && tsc -b",
15
+ "build:dev": "tsc -b --watch",
16
+ "clean": "rm -rf ./dest .tsbuildinfo",
17
+ "formatting": "run -T prettier --check ./src && run -T eslint ./src",
18
+ "formatting:fix": "run -T prettier -w ./src",
19
+ "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --passWithNoTests",
20
+ "test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
21
+ "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
22
+ },
23
+ "inherits": [
24
+ "../package.common.json"
25
+ ],
26
+ "jest": {
27
+ "preset": "ts-jest/presets/default-esm",
28
+ "moduleNameMapper": {
29
+ "^(\\.{1,2}/.*)\\.m?js$": "$1"
30
+ },
31
+ "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$",
32
+ "rootDir": "./src"
33
+ },
6
34
  "dependencies": {
7
- "@aztec/acir-simulator": "0.7.10",
8
- "@aztec/circuits.js": "0.7.10",
9
- "@aztec/ethereum": "0.7.10",
10
- "@aztec/foundation": "0.7.10",
11
- "@aztec/l1-artifacts": "0.7.10",
12
- "@aztec/merkle-tree": "0.7.10",
13
- "@aztec/p2p": "0.7.10",
14
- "@aztec/types": "0.7.10",
15
- "@aztec/world-state": "0.7.10",
35
+ "@aztec/acir-simulator": "0.8.7",
36
+ "@aztec/circuits.js": "0.8.7",
37
+ "@aztec/ethereum": "0.8.7",
38
+ "@aztec/foundation": "0.8.7",
39
+ "@aztec/l1-artifacts": "0.8.7",
40
+ "@aztec/merkle-tree": "0.8.7",
41
+ "@aztec/p2p": "0.8.7",
42
+ "@aztec/types": "0.8.7",
43
+ "@aztec/world-state": "0.8.7",
16
44
  "lodash.chunk": "^4.2.0",
17
45
  "lodash.flatmap": "^4.5.0",
18
46
  "lodash.pick": "^4.4.0",
19
47
  "lodash.times": "^4.3.2",
20
48
  "tslib": "^2.4.0",
21
49
  "viem": "^1.2.5"
50
+ },
51
+ "devDependencies": {
52
+ "@jest/globals": "^29.5.0",
53
+ "@rushstack/eslint-patch": "^1.1.4",
54
+ "@types/jest": "^29.5.0",
55
+ "@types/levelup": "^5.1.2",
56
+ "@types/lodash.chunk": "^4.2.7",
57
+ "@types/lodash.flatmap": "^4.5.7",
58
+ "@types/lodash.pick": "^4.4.7",
59
+ "@types/lodash.times": "^4.3.7",
60
+ "@types/memdown": "^3.0.0",
61
+ "@types/node": "^18.7.23",
62
+ "concurrently": "^7.6.0",
63
+ "eslint": "^8.37.0",
64
+ "jest": "^29.5.0",
65
+ "jest-mock-extended": "^3.0.3",
66
+ "levelup": "^5.1.1",
67
+ "memdown": "^6.1.1",
68
+ "prettier": "^2.8.7",
69
+ "ts-jest": "^29.1.0",
70
+ "ts-node": "^10.9.1",
71
+ "typescript": "^5.0.4"
72
+ },
73
+ "files": [
74
+ "dest",
75
+ "src",
76
+ "!*.test.*"
77
+ ],
78
+ "types": "./dest/index.d.ts",
79
+ "engines": {
80
+ "node": ">=18"
22
81
  }
23
82
  }
@@ -1,6 +1,6 @@
1
1
  import { P2P } from '@aztec/p2p';
2
2
  import { ContractDataSource, L1ToL2MessageSource, L2BlockSource } from '@aztec/types';
3
- import { WorldStateSynchroniser } from '@aztec/world-state';
3
+ import { WorldStateSynchronizer } from '@aztec/world-state';
4
4
 
5
5
  import { SoloBlockBuilder } from '../block_builder/solo_block_builder.js';
6
6
  import { SequencerClientConfig } from '../config.js';
@@ -20,7 +20,7 @@ export class SequencerClient {
20
20
  * Initializes and starts a new instance.
21
21
  * @param config - Configuration for the sequencer, publisher, and L1 tx sender.
22
22
  * @param p2pClient - P2P client that provides the txs to be sequenced.
23
- * @param worldStateSynchroniser - Provides access to world state.
23
+ * @param worldStateSynchronizer - Provides access to world state.
24
24
  * @param contractDataSource - Provides access to contract bytecode for public executions.
25
25
  * @param l2BlockSource - Provides information about the previously published blocks.
26
26
  * @param l1ToL2MessageSource - Provides access to L1 to L2 messages.
@@ -29,19 +29,19 @@ export class SequencerClient {
29
29
  public static async new(
30
30
  config: SequencerClientConfig,
31
31
  p2pClient: P2P,
32
- worldStateSynchroniser: WorldStateSynchroniser,
32
+ worldStateSynchronizer: WorldStateSynchronizer,
33
33
  contractDataSource: ContractDataSource,
34
34
  l2BlockSource: L2BlockSource,
35
35
  l1ToL2MessageSource: L1ToL2MessageSource,
36
36
  ) {
37
37
  const publisher = getL1Publisher(config);
38
38
  const globalsBuilder = getGlobalVariableBuilder(config);
39
- const merkleTreeDb = worldStateSynchroniser.getLatest();
39
+ const merkleTreeDb = worldStateSynchronizer.getLatest();
40
40
 
41
41
  const blockBuilder = new SoloBlockBuilder(
42
42
  merkleTreeDb,
43
43
  getVerificationKeys(),
44
- await WasmRollupCircuitSimulator.new(),
44
+ new WasmRollupCircuitSimulator(),
45
45
  new EmptyRollupProver(),
46
46
  );
47
47
 
@@ -51,10 +51,11 @@ export class SequencerClient {
51
51
  publisher,
52
52
  globalsBuilder,
53
53
  p2pClient,
54
- worldStateSynchroniser,
54
+ worldStateSynchronizer,
55
55
  blockBuilder,
56
56
  l2BlockSource,
57
57
  l1ToL2MessageSource,
58
+ contractDataSource,
58
59
  publicProcessorFactory,
59
60
  config,
60
61
  );
package/src/config.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { L1ContractAddresses } from '@aztec/ethereum';
1
2
  import { EthAddress } from '@aztec/foundation/eth-address';
2
3
 
3
4
  import { GlobalReaderConfig } from './global_variable_builder/index.js';
@@ -25,6 +26,7 @@ export function getConfigEnvVars(): SequencerClientConfig {
25
26
  SEQ_MAX_TX_PER_BLOCK,
26
27
  SEQ_MIN_TX_PER_BLOCK,
27
28
  ROLLUP_CONTRACT_ADDRESS,
29
+ REGISTRY_CONTRACT_ADDRESS,
28
30
  INBOX_CONTRACT_ADDRESS,
29
31
  CONTRACT_DEPLOYMENT_EMITTER_ADDRESS,
30
32
  } = process.env;
@@ -34,6 +36,17 @@ export function getConfigEnvVars(): SequencerClientConfig {
34
36
  ? SEQ_PUBLISHER_PRIVATE_KEY.replace('0x', '')
35
37
  : '0000000000000000000000000000000000000000000000000000000000000000'
36
38
  }`;
39
+ // Populate the relevant addresses for use by the sequencer
40
+ const addresses: L1ContractAddresses = {
41
+ rollupAddress: ROLLUP_CONTRACT_ADDRESS ? EthAddress.fromString(ROLLUP_CONTRACT_ADDRESS) : EthAddress.ZERO,
42
+ registryAddress: REGISTRY_CONTRACT_ADDRESS ? EthAddress.fromString(REGISTRY_CONTRACT_ADDRESS) : EthAddress.ZERO,
43
+ inboxAddress: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
44
+ outboxAddress: EthAddress.ZERO,
45
+ contractDeploymentEmitterAddress: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
46
+ ? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
47
+ : EthAddress.ZERO,
48
+ decoderHelperAddress: EthAddress.ZERO,
49
+ };
37
50
 
38
51
  return {
39
52
  rpcUrl: ETHEREUM_HOST ? ETHEREUM_HOST : '',
@@ -43,11 +56,7 @@ export function getConfigEnvVars(): SequencerClientConfig {
43
56
  requiredConfirmations: SEQ_REQUIRED_CONFS ? +SEQ_REQUIRED_CONFS : 1,
44
57
  l1BlockPublishRetryIntervalMS: SEQ_PUBLISH_RETRY_INTERVAL_MS ? +SEQ_PUBLISH_RETRY_INTERVAL_MS : 1_000,
45
58
  transactionPollingIntervalMS: SEQ_TX_POLLING_INTERVAL_MS ? +SEQ_TX_POLLING_INTERVAL_MS : 1_000,
46
- rollupContract: ROLLUP_CONTRACT_ADDRESS ? EthAddress.fromString(ROLLUP_CONTRACT_ADDRESS) : EthAddress.ZERO,
47
- inboxContract: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
48
- contractDeploymentEmitterContract: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
49
- ? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
50
- : EthAddress.ZERO,
59
+ l1Contracts: addresses,
51
60
  publisherPrivateKey,
52
61
  maxTxsPerBlock: SEQ_MAX_TX_PER_BLOCK ? +SEQ_MAX_TX_PER_BLOCK : 32,
53
62
  minTxsPerBlock: SEQ_MIN_TX_PER_BLOCK ? +SEQ_MIN_TX_PER_BLOCK : 1,
@@ -1,13 +1,9 @@
1
- import { EthAddress } from '@aztec/circuits.js';
1
+ import { L1ContractAddresses } from '@aztec/ethereum';
2
2
 
3
3
  /**
4
4
  * Configuration of the L1GlobalReader.
5
5
  */
6
6
  export interface GlobalReaderConfig {
7
- /**
8
- * Rollup contract address.
9
- */
10
- rollupContract: EthAddress;
11
7
  /**
12
8
  * The RPC Url of the ethereum host.
13
9
  */
@@ -16,4 +12,9 @@ export interface GlobalReaderConfig {
16
12
  * The API key of the ethereum host.
17
13
  */
18
14
  apiKey?: string;
15
+
16
+ /**
17
+ * The deployed l1 contract addresses
18
+ */
19
+ l1Contracts: L1ContractAddresses;
19
20
  }
@@ -23,7 +23,7 @@ export class ViemReader implements L1GlobalReader {
23
23
  private publicClient: PublicClient<HttpTransport, chains.Chain>;
24
24
 
25
25
  constructor(config: GlobalReaderConfig) {
26
- const { rpcUrl, apiKey, rollupContract: rollupContractAddress } = config;
26
+ const { rpcUrl, apiKey, l1Contracts } = config;
27
27
 
28
28
  const chain = createEthereumChain(rpcUrl, apiKey);
29
29
 
@@ -33,7 +33,7 @@ export class ViemReader implements L1GlobalReader {
33
33
  });
34
34
 
35
35
  this.rollupContract = getContract({
36
- address: getAddress(rollupContractAddress.toString()),
36
+ address: getAddress(l1Contracts.rollupAddress.toString()),
37
37
  abi: RollupAbi,
38
38
  publicClient: this.publicClient,
39
39
  });
@@ -1,9 +1,9 @@
1
- import { L1Addresses } from '@aztec/types';
1
+ import { L1ContractAddresses } from '@aztec/ethereum';
2
2
 
3
3
  /**
4
4
  * The configuration of the rollup transaction publisher.
5
5
  */
6
- export interface TxSenderConfig extends L1Addresses {
6
+ export interface TxSenderConfig {
7
7
  /**
8
8
  * The private key to be used by the publisher.
9
9
  */
@@ -23,6 +23,11 @@ export interface TxSenderConfig extends L1Addresses {
23
23
  * The number of confirmations required.
24
24
  */
25
25
  requiredConfirmations: number;
26
+
27
+ /**
28
+ * The deployed l1 contract addresses
29
+ */
30
+ l1Contracts: L1ContractAddresses;
26
31
  }
27
32
 
28
33
  /**
@@ -5,6 +5,34 @@ import { ViemTxSender } from './viem-tx-sender.js';
5
5
  export { L1Publisher } from './l1-publisher.js';
6
6
  export { PublisherConfig } from './config.js';
7
7
 
8
+ /** Stats logged for each L1 rollup publish tx.*/
9
+ export type L1PublishStats = {
10
+ /** Name of the event for metrics purposes */
11
+ eventName: 'rollup-published-to-l1';
12
+ /** Effective gas price of the tx. */
13
+ gasPrice: bigint;
14
+ /** Effective gas used in the tx. */
15
+ gasUsed: bigint;
16
+ /** Hash of the L1 tx. */
17
+ transactionHash: string;
18
+ /** Gas cost of the calldata. */
19
+ calldataGas: number;
20
+ /** Size in bytes of the calldata. */
21
+ calldataSize: number;
22
+ /** Number of txs in the L2 block. */
23
+ txCount: number;
24
+ /** Number of the L2 block. */
25
+ blockNumber: number;
26
+ /** Number of encrypted logs. */
27
+ encryptedLogCount: number;
28
+ /** Number of unencrypted logs. */
29
+ unencryptedLogCount: number;
30
+ /** Serialised size of encrypted logs. */
31
+ encryptedLogSize: number;
32
+ /** Serialised size of unencrypted logs. */
33
+ unencryptedLogSize: number;
34
+ };
35
+
8
36
  /**
9
37
  * Returns a new instance of the L1Publisher.
10
38
  * @param config - Configuration to initialize the new instance.