@aztec/stdlib 0.0.1-commit.f295ac2 → 0.0.1-commit.f8ca9b2f3

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 (276) hide show
  1. package/dest/abi/function_call.d.ts +39 -9
  2. package/dest/abi/function_call.d.ts.map +1 -1
  3. package/dest/abi/function_call.js +20 -3
  4. package/dest/block/block_hash.d.ts +16 -18
  5. package/dest/block/block_hash.d.ts.map +1 -1
  6. package/dest/block/block_hash.js +21 -31
  7. package/dest/block/block_parameter.d.ts +4 -4
  8. package/dest/block/block_parameter.d.ts.map +1 -1
  9. package/dest/block/block_parameter.js +2 -2
  10. package/dest/block/checkpointed_l2_block.d.ts +6 -6
  11. package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
  12. package/dest/block/checkpointed_l2_block.js +3 -3
  13. package/dest/block/in_block.d.ts +11 -11
  14. package/dest/block/in_block.d.ts.map +1 -1
  15. package/dest/block/in_block.js +5 -5
  16. package/dest/block/index.d.ts +2 -2
  17. package/dest/block/index.d.ts.map +1 -1
  18. package/dest/block/index.js +1 -1
  19. package/dest/block/{l2_block_new.d.ts → l2_block.d.ts} +8 -7
  20. package/dest/block/l2_block.d.ts.map +1 -0
  21. package/dest/block/{l2_block_new.js → l2_block.js} +5 -9
  22. package/dest/block/l2_block_source.d.ts +39 -30
  23. package/dest/block/l2_block_source.d.ts.map +1 -1
  24. package/dest/block/l2_block_stream/interfaces.d.ts +3 -3
  25. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  26. package/dest/block/l2_block_stream/l2_block_stream.d.ts +6 -3
  27. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  28. package/dest/block/l2_block_stream/l2_block_stream.js +37 -25
  29. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +3 -3
  30. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  31. package/dest/block/test/l2_tips_store_test_suite.js +2 -2
  32. package/dest/checkpoint/checkpoint.d.ts +8 -8
  33. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  34. package/dest/checkpoint/checkpoint.js +4 -4
  35. package/dest/checkpoint/published_checkpoint.d.ts +2 -2
  36. package/dest/config/index.d.ts +2 -1
  37. package/dest/config/index.d.ts.map +1 -1
  38. package/dest/config/index.js +1 -0
  39. package/dest/config/node-rpc-config.js +1 -1
  40. package/dest/config/sequencer-config.d.ts +10 -0
  41. package/dest/config/sequencer-config.d.ts.map +1 -0
  42. package/dest/config/sequencer-config.js +12 -0
  43. package/dest/contract/contract_address.js +1 -1
  44. package/dest/contract/contract_class_id.d.ts +1 -1
  45. package/dest/contract/contract_class_id.js +1 -1
  46. package/dest/contract/interfaces/node-info.d.ts +3 -1
  47. package/dest/contract/interfaces/node-info.d.ts.map +1 -1
  48. package/dest/contract/interfaces/node-info.js +2 -1
  49. package/dest/contract/private_function.d.ts +1 -1
  50. package/dest/contract/private_function.d.ts.map +1 -1
  51. package/dest/contract/private_function.js +2 -3
  52. package/dest/contract/private_function_membership_proof.d.ts +1 -1
  53. package/dest/contract/private_function_membership_proof.js +1 -1
  54. package/dest/database-version/database_version.d.ts +58 -0
  55. package/dest/database-version/database_version.d.ts.map +1 -0
  56. package/dest/database-version/database_version.js +69 -0
  57. package/dest/database-version/version_manager.d.ts +2 -50
  58. package/dest/database-version/version_manager.d.ts.map +1 -1
  59. package/dest/database-version/version_manager.js +1 -66
  60. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
  61. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  62. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
  63. package/dest/epoch-helpers/index.d.ts +7 -1
  64. package/dest/epoch-helpers/index.d.ts.map +1 -1
  65. package/dest/epoch-helpers/index.js +9 -3
  66. package/dest/hash/hash.js +2 -2
  67. package/dest/hash/map_slot.d.ts +1 -1
  68. package/dest/hash/map_slot.d.ts.map +1 -1
  69. package/dest/hash/map_slot.js +4 -3
  70. package/dest/interfaces/api_limit.d.ts +2 -1
  71. package/dest/interfaces/api_limit.d.ts.map +1 -1
  72. package/dest/interfaces/api_limit.js +1 -0
  73. package/dest/interfaces/archiver.d.ts +1 -1
  74. package/dest/interfaces/archiver.d.ts.map +1 -1
  75. package/dest/interfaces/archiver.js +19 -18
  76. package/dest/interfaces/aztec-node-admin.d.ts +20 -2
  77. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  78. package/dest/interfaces/aztec-node-admin.js +3 -1
  79. package/dest/interfaces/aztec-node.d.ts +64 -62
  80. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  81. package/dest/interfaces/aztec-node.js +13 -17
  82. package/dest/interfaces/block-builder.d.ts +13 -7
  83. package/dest/interfaces/block-builder.d.ts.map +1 -1
  84. package/dest/interfaces/block-builder.js +7 -0
  85. package/dest/interfaces/configs.d.ts +2 -2
  86. package/dest/interfaces/configs.d.ts.map +1 -1
  87. package/dest/interfaces/get_logs_response.d.ts +15 -8
  88. package/dest/interfaces/get_logs_response.d.ts.map +1 -1
  89. package/dest/interfaces/l2_logs_source.d.ts +14 -5
  90. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  91. package/dest/interfaces/p2p.d.ts +2 -2
  92. package/dest/interfaces/p2p.d.ts.map +1 -1
  93. package/dest/interfaces/prover-broker.d.ts +16 -1
  94. package/dest/interfaces/prover-broker.d.ts.map +1 -1
  95. package/dest/interfaces/prover-broker.js +4 -1
  96. package/dest/interfaces/prover-client.d.ts +15 -1
  97. package/dest/interfaces/prover-client.d.ts.map +1 -1
  98. package/dest/interfaces/prover-client.js +12 -1
  99. package/dest/interfaces/proving-job.d.ts +200 -200
  100. package/dest/interfaces/slasher.d.ts +9 -1
  101. package/dest/interfaces/slasher.d.ts.map +1 -1
  102. package/dest/interfaces/slasher.js +2 -0
  103. package/dest/interfaces/tx_provider.d.ts +3 -3
  104. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  105. package/dest/interfaces/validator.d.ts +50 -4
  106. package/dest/interfaces/validator.d.ts.map +1 -1
  107. package/dest/interfaces/validator.js +4 -1
  108. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  109. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  110. package/dest/kernel/hints/build_nullifier_read_request_hints.js +4 -6
  111. package/dest/keys/derivation.d.ts +3 -3
  112. package/dest/keys/derivation.js +8 -8
  113. package/dest/keys/key_types.d.ts +1 -1
  114. package/dest/keys/utils.d.ts +1 -1
  115. package/dest/keys/utils.d.ts.map +1 -1
  116. package/dest/keys/utils.js +7 -3
  117. package/dest/l1-contracts/slash_factory.d.ts +1 -1
  118. package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
  119. package/dest/l1-contracts/slash_factory.js +1 -0
  120. package/dest/logs/extended_public_log.d.ts +13 -7
  121. package/dest/logs/extended_public_log.d.ts.map +1 -1
  122. package/dest/logs/log_id.d.ts +17 -14
  123. package/dest/logs/log_id.d.ts.map +1 -1
  124. package/dest/logs/log_id.js +20 -17
  125. package/dest/logs/siloed_tag.d.ts +1 -1
  126. package/dest/logs/siloed_tag.d.ts.map +1 -1
  127. package/dest/logs/siloed_tag.js +4 -3
  128. package/dest/messaging/l2_to_l1_membership.d.ts +2 -2
  129. package/dest/messaging/l2_to_l1_membership.js +3 -3
  130. package/dest/p2p/block_proposal.d.ts +13 -6
  131. package/dest/p2p/block_proposal.d.ts.map +1 -1
  132. package/dest/p2p/block_proposal.js +1 -1
  133. package/dest/p2p/checkpoint_proposal.d.ts +17 -3
  134. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  135. package/dest/p2p/checkpoint_proposal.js +9 -0
  136. package/dest/p2p/constants.d.ts +5 -0
  137. package/dest/p2p/constants.d.ts.map +1 -0
  138. package/dest/p2p/constants.js +3 -0
  139. package/dest/p2p/index.d.ts +2 -1
  140. package/dest/p2p/index.d.ts.map +1 -1
  141. package/dest/p2p/index.js +1 -0
  142. package/dest/p2p/message_validator.d.ts +18 -3
  143. package/dest/p2p/message_validator.d.ts.map +1 -1
  144. package/dest/p2p/message_validator.js +2 -1
  145. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +6 -6
  146. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  147. package/dest/rollup/checkpoint_rollup_public_inputs.js +2 -2
  148. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +2 -2
  149. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  150. package/dest/rollup/root_rollup_public_inputs.d.ts +6 -6
  151. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  152. package/dest/rollup/root_rollup_public_inputs.js +3 -3
  153. package/dest/slashing/empire.d.ts +1 -1
  154. package/dest/slashing/empire.d.ts.map +1 -1
  155. package/dest/slashing/empire.js +2 -0
  156. package/dest/slashing/helpers.d.ts +2 -2
  157. package/dest/slashing/helpers.d.ts.map +1 -1
  158. package/dest/slashing/helpers.js +6 -0
  159. package/dest/slashing/tally.d.ts +2 -1
  160. package/dest/slashing/tally.d.ts.map +1 -1
  161. package/dest/slashing/tally.js +6 -2
  162. package/dest/slashing/types.d.ts +7 -3
  163. package/dest/slashing/types.d.ts.map +1 -1
  164. package/dest/slashing/types.js +13 -1
  165. package/dest/stats/stats.d.ts +1 -3
  166. package/dest/stats/stats.d.ts.map +1 -1
  167. package/dest/tests/factories.js +4 -4
  168. package/dest/tests/jest.d.ts +4 -4
  169. package/dest/tests/jest.js +9 -9
  170. package/dest/tests/mocks.d.ts +15 -10
  171. package/dest/tests/mocks.d.ts.map +1 -1
  172. package/dest/tests/mocks.js +19 -13
  173. package/dest/timetable/index.d.ts +37 -0
  174. package/dest/timetable/index.d.ts.map +1 -0
  175. package/dest/timetable/index.js +39 -0
  176. package/dest/trees/public_data_leaf.d.ts +2 -1
  177. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  178. package/dest/trees/public_data_leaf.js +7 -6
  179. package/dest/tx/block_header.d.ts +3 -2
  180. package/dest/tx/block_header.d.ts.map +1 -1
  181. package/dest/tx/block_header.js +3 -2
  182. package/dest/tx/in_tx.d.ts +3 -3
  183. package/dest/tx/indexed_tx_effect.d.ts +5 -5
  184. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  185. package/dest/tx/indexed_tx_effect.js +3 -2
  186. package/dest/tx/tx.d.ts +2 -1
  187. package/dest/tx/tx.d.ts.map +1 -1
  188. package/dest/tx/tx.js +6 -3
  189. package/dest/tx/tx_receipt.d.ts +42 -14
  190. package/dest/tx/tx_receipt.d.ts.map +1 -1
  191. package/dest/tx/tx_receipt.js +46 -15
  192. package/dest/tx/validator/empty_validator.d.ts +2 -2
  193. package/dest/tx/validator/empty_validator.d.ts.map +1 -1
  194. package/dest/tx/validator/error_texts.d.ts +2 -1
  195. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  196. package/dest/tx/validator/error_texts.js +2 -0
  197. package/dest/tx/validator/tx_validator.d.ts +2 -2
  198. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  199. package/package.json +24 -12
  200. package/src/abi/function_call.ts +25 -3
  201. package/src/block/block_hash.ts +26 -47
  202. package/src/block/block_parameter.ts +3 -3
  203. package/src/block/checkpointed_l2_block.ts +4 -4
  204. package/src/block/in_block.ts +8 -8
  205. package/src/block/index.ts +1 -1
  206. package/src/block/{l2_block_new.ts → l2_block.ts} +8 -12
  207. package/src/block/l2_block_source.ts +40 -31
  208. package/src/block/l2_block_stream/interfaces.ts +2 -2
  209. package/src/block/l2_block_stream/l2_block_stream.ts +44 -27
  210. package/src/block/l2_block_stream/l2_tips_store_base.ts +2 -2
  211. package/src/block/test/l2_tips_store_test_suite.ts +4 -4
  212. package/src/checkpoint/checkpoint.ts +7 -7
  213. package/src/config/index.ts +1 -0
  214. package/src/config/node-rpc-config.ts +1 -1
  215. package/src/config/sequencer-config.ts +19 -0
  216. package/src/contract/contract_address.ts +1 -1
  217. package/src/contract/contract_class_id.ts +1 -1
  218. package/src/contract/interfaces/node-info.ts +3 -0
  219. package/src/contract/private_function.ts +2 -3
  220. package/src/contract/private_function_membership_proof.ts +1 -1
  221. package/src/database-version/database_version.ts +87 -0
  222. package/src/database-version/version_manager.ts +1 -77
  223. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
  224. package/src/epoch-helpers/index.ts +13 -1
  225. package/src/hash/hash.ts +2 -2
  226. package/src/hash/map_slot.ts +3 -2
  227. package/src/interfaces/api_limit.ts +1 -0
  228. package/src/interfaces/archiver.ts +19 -27
  229. package/src/interfaces/aztec-node-admin.ts +3 -2
  230. package/src/interfaces/aztec-node.ts +89 -120
  231. package/src/interfaces/block-builder.ts +15 -5
  232. package/src/interfaces/configs.ts +1 -3
  233. package/src/interfaces/l2_logs_source.ts +17 -4
  234. package/src/interfaces/p2p.ts +1 -1
  235. package/src/interfaces/prover-broker.ts +22 -0
  236. package/src/interfaces/prover-client.ts +22 -0
  237. package/src/interfaces/slasher.ts +4 -0
  238. package/src/interfaces/tx_provider.ts +2 -2
  239. package/src/interfaces/validator.ts +12 -5
  240. package/src/kernel/hints/build_nullifier_read_request_hints.ts +1 -10
  241. package/src/keys/derivation.ts +8 -8
  242. package/src/keys/key_types.ts +1 -1
  243. package/src/keys/utils.ts +7 -3
  244. package/src/l1-contracts/slash_factory.ts +1 -0
  245. package/src/logs/log_id.ts +22 -18
  246. package/src/logs/siloed_tag.ts +3 -2
  247. package/src/messaging/l2_to_l1_membership.ts +3 -3
  248. package/src/p2p/block_proposal.ts +12 -5
  249. package/src/p2p/checkpoint_proposal.ts +19 -2
  250. package/src/p2p/constants.ts +6 -0
  251. package/src/p2p/index.ts +1 -0
  252. package/src/p2p/message_validator.ts +14 -2
  253. package/src/rollup/checkpoint_rollup_public_inputs.ts +5 -5
  254. package/src/rollup/root_rollup_public_inputs.ts +7 -7
  255. package/src/slashing/empire.ts +3 -1
  256. package/src/slashing/helpers.ts +8 -0
  257. package/src/slashing/tally.ts +8 -2
  258. package/src/slashing/types.ts +14 -0
  259. package/src/stats/stats.ts +0 -2
  260. package/src/tests/factories.ts +6 -6
  261. package/src/tests/jest.ts +9 -9
  262. package/src/tests/mocks.ts +26 -17
  263. package/src/timetable/index.ts +66 -0
  264. package/src/trees/public_data_leaf.ts +11 -5
  265. package/src/tx/block_header.ts +7 -4
  266. package/src/tx/indexed_tx_effect.ts +3 -2
  267. package/src/tx/tx.ts +8 -9
  268. package/src/tx/tx_receipt.ts +75 -18
  269. package/src/tx/validator/empty_validator.ts +1 -1
  270. package/src/tx/validator/error_texts.ts +3 -0
  271. package/src/tx/validator/tx_validator.ts +1 -1
  272. package/dest/block/l2_block_new.d.ts.map +0 -1
  273. package/dest/database-version/index.d.ts +0 -2
  274. package/dest/database-version/index.d.ts.map +0 -1
  275. package/dest/database-version/index.js +0 -1
  276. package/src/database-version/index.ts +0 -1
@@ -0,0 +1,87 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
3
+
4
+ import { z } from 'zod';
5
+
6
+ /**
7
+ * Symbol for Node.js custom inspect. Using Symbol.for() is the documented way to
8
+ * reference this without importing node:util. In browsers, objects with this symbol
9
+ * simply won't have custom inspect behavior (which is fine).
10
+ * @see https://nodejs.org/api/util.html#utilinspectcustom
11
+ */
12
+ const inspectCustomSymbol = Symbol.for('nodejs.util.inspect.custom');
13
+
14
+ /**
15
+ * Represents a version record for storing in a version file.
16
+ */
17
+ export class DatabaseVersion {
18
+ constructor(
19
+ /** The version of the data on disk. Used to perform upgrades */
20
+ public readonly schemaVersion: number,
21
+ /** The rollup the data pertains to */
22
+ public readonly rollupAddress: EthAddress,
23
+ ) {}
24
+
25
+ public toBuffer(): Buffer {
26
+ return Buffer.from(jsonStringify(this));
27
+ }
28
+
29
+ public static fromBuffer(buf: Buffer): DatabaseVersion {
30
+ try {
31
+ return jsonParseWithSchema(buf.toString('utf-8'), DatabaseVersion.schema);
32
+ } catch (err) {
33
+ throw new Error(`Failed to deserialize version information: ${err}`, { cause: err });
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Compares two versions. If the rollups addresses are different then it returns undefined
39
+ */
40
+ public cmp(other: DatabaseVersion): undefined | -1 | 0 | 1 {
41
+ if (this.rollupAddress.equals(other.rollupAddress)) {
42
+ if (this.schemaVersion < other.schemaVersion) {
43
+ return -1;
44
+ } else if (this.schemaVersion > other.schemaVersion) {
45
+ return 1;
46
+ } else {
47
+ return 0;
48
+ }
49
+ }
50
+ return undefined;
51
+ }
52
+
53
+ /**
54
+ * Checks if two versions exactly match
55
+ */
56
+ public equals(other: DatabaseVersion): boolean {
57
+ return this.cmp(other) === 0;
58
+ }
59
+
60
+ /**
61
+ * Returns the schema for this class
62
+ */
63
+ static get schema() {
64
+ return z
65
+ .object({
66
+ schemaVersion: z.number(),
67
+ rollupAddress: EthAddress.schema,
68
+ })
69
+ .transform(({ schemaVersion, rollupAddress }) => new DatabaseVersion(schemaVersion, rollupAddress));
70
+ }
71
+
72
+ /** Allows for better introspection in Node.js console. Ignored in browser envs. */
73
+ public [inspectCustomSymbol](): string {
74
+ return this.toString();
75
+ }
76
+
77
+ public toString(): string {
78
+ return `DatabaseVersion{schemaVersion=${this.schemaVersion},rollupAddress=${this.rollupAddress}"}`;
79
+ }
80
+
81
+ /**
82
+ * Returns an empty instance
83
+ */
84
+ static empty() {
85
+ return new DatabaseVersion(0, EthAddress.ZERO);
86
+ }
87
+ }
@@ -1,86 +1,10 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
- import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
3
2
  import { type Logger, createLogger } from '@aztec/foundation/log';
4
3
 
5
4
  import fs from 'fs/promises';
6
- import { inspect } from 'node:util';
7
5
  import { join } from 'path';
8
- import { z } from 'zod';
9
6
 
10
- /**
11
- * Represents a version record for storing in a version file.
12
- */
13
- export class DatabaseVersion {
14
- constructor(
15
- /** The version of the data on disk. Used to perform upgrades */
16
- public readonly schemaVersion: number,
17
- /** The rollup the data pertains to */
18
- public readonly rollupAddress: EthAddress,
19
- ) {}
20
-
21
- public toBuffer(): Buffer {
22
- return Buffer.from(jsonStringify(this));
23
- }
24
-
25
- public static fromBuffer(buf: Buffer): DatabaseVersion {
26
- try {
27
- return jsonParseWithSchema(buf.toString('utf-8'), DatabaseVersion.schema);
28
- } catch (err) {
29
- throw new Error(`Failed to deserialize version information: ${err}`, { cause: err });
30
- }
31
- }
32
-
33
- /**
34
- * Compares two versions. If the rollups addresses are different then it returns undefined
35
- */
36
- public cmp(other: DatabaseVersion): undefined | -1 | 0 | 1 {
37
- if (this.rollupAddress.equals(other.rollupAddress)) {
38
- if (this.schemaVersion < other.schemaVersion) {
39
- return -1;
40
- } else if (this.schemaVersion > other.schemaVersion) {
41
- return 1;
42
- } else {
43
- return 0;
44
- }
45
- }
46
- return undefined;
47
- }
48
-
49
- /**
50
- * Checks if two versions exactly match
51
- */
52
- public equals(other: DatabaseVersion): boolean {
53
- return this.cmp(other) === 0;
54
- }
55
-
56
- /**
57
- * Returns the schema for this class
58
- */
59
- static get schema() {
60
- return z
61
- .object({
62
- schemaVersion: z.number(),
63
- rollupAddress: EthAddress.schema,
64
- })
65
- .transform(({ schemaVersion, rollupAddress }) => new DatabaseVersion(schemaVersion, rollupAddress));
66
- }
67
-
68
- /** Allows for better introspection. */
69
- public [inspect.custom](): string {
70
- return this.toString();
71
- }
72
-
73
- public toString(): string {
74
- return `DatabaseVersion{schemaVersion=${this.schemaVersion},rollupAddress=${this.rollupAddress}"}`;
75
- }
76
-
77
- /**
78
- * Returns an empty instance
79
- */
80
- static empty() {
81
- return new DatabaseVersion(0, EthAddress.ZERO);
82
- }
83
- }
7
+ import { DatabaseVersion } from './database_version.js';
84
8
 
85
9
  export type DatabaseVersionManagerFs = Pick<typeof fs, 'readFile' | 'writeFile' | 'rm' | 'mkdir'>;
86
10
 
@@ -68,23 +68,22 @@ export class DelayedPublicMutableValues {
68
68
  }
69
69
 
70
70
  static async readFromTree(delayedPublicMutableSlot: Fr, readStorage: (storageSlot: Fr) => Promise<Fr>) {
71
- const fields = [];
72
- for (let i = 0; i < DELAYED_PUBLIC_MUTABLE_VALUES_LEN; i++) {
73
- fields.push(await readStorage(delayedPublicMutableSlot.add(new Fr(i))));
74
- }
75
- return DelayedPublicMutableValues.fromFields(fields);
71
+ const fieldPromises = Array.from({ length: DELAYED_PUBLIC_MUTABLE_VALUES_LEN }).map((_, i) =>
72
+ readStorage(delayedPublicMutableSlot.add(new Fr(i))),
73
+ );
74
+ return DelayedPublicMutableValues.fromFields(await Promise.all(fieldPromises));
76
75
  }
77
76
 
78
77
  isEmpty(): boolean {
79
78
  return this.svc.isEmpty() && this.sdc.isEmpty();
80
79
  }
81
80
 
82
- async writeToTree(delayedPublicMutableSlot: Fr, storageWrite: (storageSlot: Fr, value: Fr) => Promise<void>) {
83
- const fields = this.toFields();
81
+ writeToTree(delayedPublicMutableSlot: Fr, storageWrite: (storageSlot: Fr, value: Fr) => Promise<void>) {
82
+ const fieldPromises = this.toFields().map((field, i) =>
83
+ storageWrite(delayedPublicMutableSlot.add(new Fr(i)), field),
84
+ );
84
85
 
85
- for (let i = 0; i < fields.length; i++) {
86
- await storageWrite(delayedPublicMutableSlot.add(new Fr(i)), fields[i]);
87
- }
86
+ return Promise.all(fieldPromises);
88
87
  }
89
88
 
90
89
  async hash(): Promise<Fr> {
@@ -11,6 +11,7 @@ export type L1RollupConstants = {
11
11
  epochDuration: number;
12
12
  ethereumSlotDuration: number;
13
13
  proofSubmissionEpochs: number;
14
+ targetCommitteeSize: number;
14
15
  };
15
16
 
16
17
  export const EmptyL1RollupConstants: L1RollupConstants = {
@@ -20,6 +21,7 @@ export const EmptyL1RollupConstants: L1RollupConstants = {
20
21
  slotDuration: 1,
21
22
  ethereumSlotDuration: 1,
22
23
  proofSubmissionEpochs: 1,
24
+ targetCommitteeSize: 48,
23
25
  };
24
26
 
25
27
  export const L1RollupConstantsSchema = zodFor<L1RollupConstants>()(
@@ -30,6 +32,7 @@ export const L1RollupConstantsSchema = zodFor<L1RollupConstants>()(
30
32
  epochDuration: z.number(),
31
33
  ethereumSlotDuration: z.number(),
32
34
  proofSubmissionEpochs: z.number(),
35
+ targetCommitteeSize: z.number(),
33
36
  }),
34
37
  );
35
38
 
@@ -51,6 +54,15 @@ export function getSlotAtTimestamp(
51
54
  : SlotNumber.fromBigInt((ts - constants.l1GenesisTime) / BigInt(constants.slotDuration));
52
55
  }
53
56
 
57
+ /** Returns the L2 slot number at the next L1 block based on the current timestamp. */
58
+ export function getSlotAtNextL1Block(
59
+ currentL1Timestamp: bigint,
60
+ constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'ethereumSlotDuration'>,
61
+ ): SlotNumber {
62
+ const nextL1BlockTimestamp = currentL1Timestamp + BigInt(constants.ethereumSlotDuration);
63
+ return getSlotAtTimestamp(nextL1BlockTimestamp, constants);
64
+ }
65
+
54
66
  /** Returns the epoch number for a given timestamp. */
55
67
  export function getEpochNumberAtTimestamp(
56
68
  ts: bigint,
@@ -69,7 +81,7 @@ export function getSlotRangeForEpoch(
69
81
  epochNumber: EpochNumber,
70
82
  constants: Pick<L1RollupConstants, 'epochDuration'>,
71
83
  ): [SlotNumber, SlotNumber] {
72
- const startSlot = SlotNumber(epochNumber * constants.epochDuration);
84
+ const startSlot = SlotNumber(Number(epochNumber) * constants.epochDuration);
73
85
  return [startSlot, SlotNumber(startSlot + constants.epochDuration - 1)];
74
86
  }
75
87
 
package/src/hash/hash.ts CHANGED
@@ -55,7 +55,7 @@ export function computeUniqueNoteHash(noteNonce: Fr, siloedNoteHash: Fr): Promis
55
55
  * @returns A siloed nullifier.
56
56
  */
57
57
  export function siloNullifier(contract: AztecAddress, innerNullifier: Fr): Promise<Fr> {
58
- return poseidon2HashWithSeparator([contract, innerNullifier], GeneratorIndex.OUTER_NULLIFIER);
58
+ return poseidon2HashWithSeparator([contract, innerNullifier], GeneratorIndex.SILOED_NULLIFIER);
59
59
  }
60
60
 
61
61
  /**
@@ -87,7 +87,7 @@ export function computePublicDataTreeValue(value: Fr): Fr {
87
87
 
88
88
  */
89
89
  export function computePublicDataTreeLeafSlot(contractAddress: AztecAddress, storageSlot: Fr): Promise<Fr> {
90
- return poseidon2HashWithSeparator([contractAddress, storageSlot], GeneratorIndex.PUBLIC_LEAF_INDEX);
90
+ return poseidon2HashWithSeparator([contractAddress, storageSlot], GeneratorIndex.PUBLIC_LEAF_SLOT);
91
91
  }
92
92
 
93
93
  /**
@@ -1,4 +1,5 @@
1
- import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
1
+ import { GeneratorIndex } from '@aztec/constants';
2
+ import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
2
3
  import type { Fr } from '@aztec/foundation/curves/bn254';
3
4
 
4
5
  /**
@@ -14,5 +15,5 @@ export function deriveStorageSlotInMap(
14
15
  toField: () => Fr;
15
16
  },
16
17
  ): Promise<Fr> {
17
- return poseidon2Hash([mapSlot, key.toField()]);
18
+ return poseidon2HashWithSeparator([mapSlot, key.toField()], GeneratorIndex.PUBLIC_STORAGE_MAP_SLOT);
18
19
  }
@@ -2,3 +2,4 @@ export const MAX_RPC_LEN = 100;
2
2
  export const MAX_RPC_TXS_LEN = 50;
3
3
  export const MAX_RPC_BLOCKS_LEN = 50;
4
4
  export const MAX_RPC_CHECKPOINTS_LEN = 50;
5
+ export const MAX_LOGS_PER_TAG = 10;
@@ -4,8 +4,9 @@ import type { ApiSchemaFor } from '@aztec/foundation/schemas';
4
4
 
5
5
  import { z } from 'zod';
6
6
 
7
+ import { BlockHash } from '../block/block_hash.js';
7
8
  import { CheckpointedL2Block } from '../block/checkpointed_l2_block.js';
8
- import { L2BlockNew } from '../block/l2_block_new.js';
9
+ import { L2Block } from '../block/l2_block.js';
9
10
  import { type L2BlockSource, L2TipsSchema } from '../block/l2_block_source.js';
10
11
  import { ValidateCheckpointResultSchema } from '../block/validate_block_result.js';
11
12
  import { Checkpoint } from '../checkpoint/checkpoint.js';
@@ -82,7 +83,9 @@ export const ArchiverApiSchema: ApiSchemaFor<ArchiverApi> = {
82
83
  getRegistryAddress: z.function().args().returns(schemas.EthAddress),
83
84
  getBlockNumber: z.function().args().returns(BlockNumberSchema),
84
85
  getProvenBlockNumber: z.function().args().returns(BlockNumberSchema),
85
- getBlock: z.function().args(BlockNumberSchema).returns(L2BlockNew.schema.optional()),
86
+ getCheckpointedL2BlockNumber: z.function().args().returns(BlockNumberSchema),
87
+ getFinalizedL2BlockNumber: z.function().args().returns(BlockNumberSchema),
88
+ getBlock: z.function().args(BlockNumberSchema).returns(L2Block.schema.optional()),
86
89
  getBlockHeader: z
87
90
  .function()
88
91
  .args(z.union([BlockNumberSchema, z.literal('latest')]))
@@ -90,48 +93,37 @@ export const ArchiverApiSchema: ApiSchemaFor<ArchiverApi> = {
90
93
  getCheckpointedBlock: z.function().args(BlockNumberSchema).returns(CheckpointedL2Block.schema.optional()),
91
94
  getCheckpointedBlocks: z
92
95
  .function()
93
- .args(BlockNumberSchema, schemas.Integer, optional(z.boolean()))
96
+ .args(BlockNumberSchema, schemas.Integer)
94
97
  .returns(z.array(CheckpointedL2Block.schema)),
95
- getBlocks: z
96
- .function()
97
- .args(BlockNumberSchema, schemas.Integer, optional(z.boolean()))
98
- .returns(z.array(L2BlockNew.schema)),
99
- getPublishedCheckpoints: z
98
+ getBlocks: z.function().args(BlockNumberSchema, schemas.Integer).returns(z.array(L2Block.schema)),
99
+ getCheckpoints: z
100
100
  .function()
101
101
  .args(CheckpointNumberSchema, schemas.Integer)
102
102
  .returns(z.array(PublishedCheckpoint.schema)),
103
- getPublishedBlocks: z
104
- .function()
105
- .args(BlockNumberSchema, schemas.Integer, optional(z.boolean()))
106
- .returns(z.array(CheckpointedL2Block.schema)),
107
- getL2BlocksNew: z
108
- .function()
109
- .args(BlockNumberSchema, schemas.Integer, optional(z.boolean()))
110
- .returns(z.array(L2BlockNew.schema)),
111
- getPublishedBlockByHash: z.function().args(schemas.Fr).returns(CheckpointedL2Block.schema.optional()),
112
- getPublishedBlockByArchive: z.function().args(schemas.Fr).returns(CheckpointedL2Block.schema.optional()),
113
- getBlockHeaderByHash: z.function().args(schemas.Fr).returns(BlockHeader.schema.optional()),
103
+ getCheckpointedBlockByHash: z.function().args(BlockHash.schema).returns(CheckpointedL2Block.schema.optional()),
104
+ getCheckpointedBlockByArchive: z.function().args(schemas.Fr).returns(CheckpointedL2Block.schema.optional()),
105
+ getBlockHeaderByHash: z.function().args(BlockHash.schema).returns(BlockHeader.schema.optional()),
114
106
  getBlockHeaderByArchive: z.function().args(schemas.Fr).returns(BlockHeader.schema.optional()),
115
- getL2BlockNew: z.function().args(BlockNumberSchema).returns(L2BlockNew.schema.optional()),
116
- getL2BlockNewByHash: z.function().args(schemas.Fr).returns(L2BlockNew.schema.optional()),
117
- getL2BlockNewByArchive: z.function().args(schemas.Fr).returns(L2BlockNew.schema.optional()),
107
+ getL2Block: z.function().args(BlockNumberSchema).returns(L2Block.schema.optional()),
108
+ getL2BlockByHash: z.function().args(BlockHash.schema).returns(L2Block.schema.optional()),
109
+ getL2BlockByArchive: z.function().args(schemas.Fr).returns(L2Block.schema.optional()),
118
110
  getTxEffect: z.function().args(TxHash.schema).returns(indexedTxSchema().optional()),
119
111
  getSettledTxReceipt: z.function().args(TxHash.schema).returns(TxReceipt.schema.optional()),
120
112
  getL2SlotNumber: z.function().args().returns(schemas.SlotNumber.optional()),
121
113
  getL2EpochNumber: z.function().args().returns(EpochNumberSchema.optional()),
122
114
  getCheckpointsForEpoch: z.function().args(EpochNumberSchema).returns(z.array(Checkpoint.schema)),
123
- getBlocksForEpoch: z.function().args(EpochNumberSchema).returns(z.array(L2BlockNew.schema)),
124
- getBlocksForSlot: z.function().args(schemas.SlotNumber).returns(z.array(L2BlockNew.schema)),
125
- getBlockHeadersForEpoch: z.function().args(EpochNumberSchema).returns(z.array(BlockHeader.schema)),
115
+ getCheckpointedBlocksForEpoch: z.function().args(EpochNumberSchema).returns(z.array(CheckpointedL2Block.schema)),
116
+ getBlocksForSlot: z.function().args(schemas.SlotNumber).returns(z.array(L2Block.schema)),
117
+ getCheckpointedBlockHeadersForEpoch: z.function().args(EpochNumberSchema).returns(z.array(BlockHeader.schema)),
126
118
  isEpochComplete: z.function().args(EpochNumberSchema).returns(z.boolean()),
127
119
  getL2Tips: z.function().args().returns(L2TipsSchema),
128
120
  getPrivateLogsByTags: z
129
121
  .function()
130
- .args(z.array(SiloedTag.schema))
122
+ .args(z.array(SiloedTag.schema), optional(z.number().gte(0)))
131
123
  .returns(z.array(z.array(TxScopedL2Log.schema))),
132
124
  getPublicLogsByTagsFromContract: z
133
125
  .function()
134
- .args(schemas.AztecAddress, z.array(Tag.schema))
126
+ .args(schemas.AztecAddress, z.array(Tag.schema), optional(z.number().gte(0)))
135
127
  .returns(z.array(z.array(TxScopedL2Log.schema))),
136
128
  getPublicLogs: z.function().args(LogFilterSchema).returns(GetPublicLogsResponseSchema),
137
129
  getContractClassLogs: z.function().args(LogFilterSchema).returns(GetContractClassLogsResponseSchema),
@@ -52,7 +52,8 @@ export interface AztecNodeAdmin {
52
52
  getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
53
53
  }
54
54
 
55
- export type AztecNodeAdminConfig = ValidatorClientFullConfig &
55
+ // L1 contracts are not mutable via admin updates.
56
+ export type AztecNodeAdminConfig = Omit<ValidatorClientFullConfig, 'l1Contracts'> &
56
57
  SequencerConfig &
57
58
  ProverConfig &
58
59
  SlasherConfig &
@@ -65,7 +66,7 @@ export type AztecNodeAdminConfig = ValidatorClientFullConfig &
65
66
 
66
67
  export const AztecNodeAdminConfigSchema = SequencerConfigSchema.merge(ProverConfigSchema)
67
68
  .merge(SlasherConfigSchema)
68
- .merge(ValidatorClientFullConfigSchema)
69
+ .merge(ValidatorClientFullConfigSchema.omit({ l1Contracts: true }))
69
70
  .merge(
70
71
  ArchiverSpecificConfigSchema.pick({
71
72
  archiverPollingIntervalMS: true,