@aztec/foundation 0.0.1-commit.9b94fc1 → 0.0.1-commit.9ee6fcc6

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 (355) hide show
  1. package/dest/array/index.d.ts +2 -1
  2. package/dest/array/index.d.ts.map +1 -1
  3. package/dest/array/index.js +1 -0
  4. package/dest/array/sorted_array.d.ts +15 -0
  5. package/dest/array/sorted_array.d.ts.map +1 -0
  6. package/dest/array/sorted_array.js +109 -0
  7. package/dest/branded-types/block_number.d.ts +56 -0
  8. package/dest/branded-types/block_number.d.ts.map +1 -0
  9. package/dest/branded-types/block_number.js +78 -0
  10. package/dest/branded-types/checkpoint_number.d.ts +54 -0
  11. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  12. package/dest/branded-types/checkpoint_number.js +77 -0
  13. package/dest/branded-types/index.d.ts +4 -1
  14. package/dest/branded-types/index.d.ts.map +1 -1
  15. package/dest/branded-types/index.js +3 -0
  16. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  17. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  18. package/dest/branded-types/index_within_checkpoint.js +59 -0
  19. package/dest/branded-types/slot.d.ts +4 -1
  20. package/dest/branded-types/slot.d.ts.map +1 -1
  21. package/dest/branded-types/slot.js +3 -0
  22. package/dest/buffer/buffer16.d.ts +5 -2
  23. package/dest/buffer/buffer16.d.ts.map +1 -1
  24. package/dest/buffer/buffer16.js +4 -2
  25. package/dest/buffer/buffer32.d.ts +5 -2
  26. package/dest/buffer/buffer32.d.ts.map +1 -1
  27. package/dest/buffer/buffer32.js +4 -2
  28. package/dest/buffer/index.d.ts +2 -1
  29. package/dest/buffer/index.d.ts.map +1 -1
  30. package/dest/buffer/index.js +1 -0
  31. package/dest/buffer/utils.d.ts +3 -0
  32. package/dest/buffer/utils.d.ts.map +1 -0
  33. package/dest/buffer/utils.js +7 -0
  34. package/dest/collection/array.d.ts +12 -1
  35. package/dest/collection/array.d.ts.map +1 -1
  36. package/dest/collection/array.js +51 -0
  37. package/dest/config/env_var.d.ts +2 -2
  38. package/dest/config/env_var.d.ts.map +1 -1
  39. package/dest/config/index.d.ts +15 -4
  40. package/dest/config/index.d.ts.map +1 -1
  41. package/dest/config/index.js +47 -9
  42. package/dest/config/network_config.d.ts +31 -1
  43. package/dest/config/network_config.d.ts.map +1 -1
  44. package/dest/config/network_config.js +6 -1
  45. package/dest/config/network_name.d.ts +2 -2
  46. package/dest/config/network_name.d.ts.map +1 -1
  47. package/dest/config/network_name.js +2 -0
  48. package/dest/config/parse-env.d.ts +3 -0
  49. package/dest/config/parse-env.d.ts.map +1 -0
  50. package/dest/config/parse-env.js +7 -0
  51. package/dest/config/secret_value.js +3 -1
  52. package/dest/crypto/bls/bn254_keystore.js +1 -1
  53. package/dest/crypto/bls/index.js +1 -1
  54. package/dest/crypto/bn254/index.d.ts +35 -51
  55. package/dest/crypto/bn254/index.d.ts.map +1 -1
  56. package/dest/crypto/bn254/index.js +51 -140
  57. package/dest/crypto/ecdsa/signature.d.ts +11 -2
  58. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  59. package/dest/crypto/ecdsa/signature.js +2 -2
  60. package/dest/crypto/grumpkin/index.d.ts +4 -2
  61. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  62. package/dest/crypto/grumpkin/index.js +2 -1
  63. package/dest/crypto/keys/index.d.ts +2 -2
  64. package/dest/crypto/keys/index.d.ts.map +1 -1
  65. package/dest/crypto/keys/index.js +1 -1
  66. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
  67. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  68. package/dest/crypto/pedersen/pedersen.wasm.js +1 -1
  69. package/dest/crypto/poseidon/index.d.ts +2 -3
  70. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  71. package/dest/crypto/poseidon/index.js +14 -23
  72. package/dest/crypto/random/randomness_singleton.d.ts +4 -3
  73. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  74. package/dest/crypto/random/randomness_singleton.js +5 -5
  75. package/dest/crypto/schnorr/index.d.ts +3 -2
  76. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  77. package/dest/crypto/schnorr/index.js +1 -1
  78. package/dest/crypto/schnorr/signature.d.ts +2 -2
  79. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  80. package/dest/crypto/schnorr/signature.js +2 -2
  81. package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
  82. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  83. package/dest/crypto/secp256k1-signer/utils.js +26 -0
  84. package/dest/crypto/sha256/index.d.ts +2 -2
  85. package/dest/crypto/sha256/index.d.ts.map +1 -1
  86. package/dest/crypto/sha256/index.js +1 -1
  87. package/dest/crypto/sha512/index.d.ts +2 -2
  88. package/dest/crypto/sha512/index.d.ts.map +1 -1
  89. package/dest/crypto/sha512/index.js +1 -1
  90. package/dest/crypto/signature/index.d.ts +2 -2
  91. package/dest/crypto/signature/index.d.ts.map +1 -1
  92. package/dest/crypto/sync/pedersen/index.d.ts +2 -2
  93. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  94. package/dest/crypto/sync/pedersen/index.js +1 -1
  95. package/dest/crypto/sync/poseidon/index.d.ts +2 -3
  96. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  97. package/dest/crypto/sync/poseidon/index.js +1 -9
  98. package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
  99. package/dest/curves/bls12/field.d.ts.map +1 -0
  100. package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +12 -9
  101. package/dest/curves/bls12/index.d.ts +3 -0
  102. package/dest/curves/bls12/index.d.ts.map +1 -0
  103. package/dest/curves/bls12/index.js +2 -0
  104. package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +13 -4
  105. package/dest/curves/bls12/point.d.ts.map +1 -0
  106. package/dest/{fields/bls12_point.js → curves/bls12/point.js} +10 -8
  107. package/dest/{fields/fields.d.ts → curves/bn254/field.d.ts} +8 -15
  108. package/dest/curves/bn254/field.d.ts.map +1 -0
  109. package/dest/{fields/fields.js → curves/bn254/field.js} +38 -49
  110. package/dest/curves/bn254/index.d.ts +3 -0
  111. package/dest/curves/bn254/index.d.ts.map +1 -0
  112. package/dest/curves/bn254/index.js +2 -0
  113. package/dest/curves/bn254/point.d.ts +54 -0
  114. package/dest/curves/bn254/point.d.ts.map +1 -0
  115. package/dest/curves/bn254/point.js +143 -0
  116. package/dest/curves/grumpkin/index.d.ts +10 -0
  117. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  118. package/dest/curves/grumpkin/index.js +3 -0
  119. package/dest/{fields → curves/grumpkin}/point.d.ts +13 -4
  120. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  121. package/dest/{fields → curves/grumpkin}/point.js +7 -7
  122. package/dest/error/index.d.ts +4 -4
  123. package/dest/error/index.d.ts.map +1 -1
  124. package/dest/eth-address/index.d.ts +3 -2
  125. package/dest/eth-address/index.d.ts.map +1 -1
  126. package/dest/eth-address/index.js +10 -3
  127. package/dest/eth-signature/eth_signature.d.ts +5 -1
  128. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  129. package/dest/eth-signature/eth_signature.js +7 -2
  130. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  131. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  132. package/dest/fifo/fifo_frame_reader.js +74 -0
  133. package/dest/fifo/index.d.ts +2 -0
  134. package/dest/fifo/index.d.ts.map +1 -0
  135. package/dest/fifo/index.js +1 -0
  136. package/dest/iterator/filter.d.ts +3 -0
  137. package/dest/iterator/filter.d.ts.map +1 -0
  138. package/dest/iterator/filter.js +7 -0
  139. package/dest/iterator/index.d.ts +2 -0
  140. package/dest/iterator/index.d.ts.map +1 -0
  141. package/dest/iterator/index.js +1 -0
  142. package/dest/jest/setup.js +28 -1
  143. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
  144. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  145. package/dest/json-rpc/client/safe_json_rpc_client.js +1 -1
  146. package/dest/json-rpc/client/undici.d.ts +1 -1
  147. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  148. package/dest/json-rpc/client/undici.js +21 -4
  149. package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
  150. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  151. package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
  152. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  153. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  154. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  155. package/dest/json-rpc/server/api_key_auth.js +57 -0
  156. package/dest/json-rpc/server/index.d.ts +2 -1
  157. package/dest/json-rpc/server/index.d.ts.map +1 -1
  158. package/dest/json-rpc/server/index.js +1 -0
  159. package/dest/json-rpc/server/safe_json_rpc_server.js +1 -1
  160. package/dest/log/bigint-utils.d.ts +5 -0
  161. package/dest/log/bigint-utils.d.ts.map +1 -0
  162. package/dest/log/bigint-utils.js +21 -0
  163. package/dest/log/gcloud-logger-config.d.ts +1 -1
  164. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  165. package/dest/log/gcloud-logger-config.js +3 -0
  166. package/dest/log/libp2p_logger.d.ts +5 -2
  167. package/dest/log/libp2p_logger.d.ts.map +1 -1
  168. package/dest/log/libp2p_logger.js +14 -4
  169. package/dest/log/log-filters.d.ts +17 -4
  170. package/dest/log/log-filters.d.ts.map +1 -1
  171. package/dest/log/log-filters.js +26 -12
  172. package/dest/log/pino-logger-server.d.ts +9 -0
  173. package/dest/log/pino-logger-server.d.ts.map +1 -0
  174. package/dest/log/pino-logger-server.js +18 -0
  175. package/dest/log/pino-logger.d.ts +37 -8
  176. package/dest/log/pino-logger.d.ts.map +1 -1
  177. package/dest/log/pino-logger.js +122 -29
  178. package/dest/queue/base_memory_queue.d.ts +2 -2
  179. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  180. package/dest/queue/semaphore.d.ts +5 -1
  181. package/dest/queue/semaphore.d.ts.map +1 -1
  182. package/dest/retry/index.d.ts +11 -1
  183. package/dest/retry/index.d.ts.map +1 -1
  184. package/dest/retry/index.js +11 -0
  185. package/dest/schemas/schemas.d.ts +7 -3
  186. package/dest/schemas/schemas.d.ts.map +1 -1
  187. package/dest/schemas/schemas.js +9 -3
  188. package/dest/schemas/types.d.ts +31 -1
  189. package/dest/schemas/types.d.ts.map +1 -1
  190. package/dest/schemas/types.js +25 -1
  191. package/dest/serialize/buffer_reader.d.ts +14 -4
  192. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  193. package/dest/serialize/buffer_reader.js +26 -4
  194. package/dest/serialize/field_reader.d.ts +2 -2
  195. package/dest/serialize/field_reader.d.ts.map +1 -1
  196. package/dest/serialize/field_reader.js +1 -1
  197. package/dest/serialize/free_funcs.d.ts +2 -2
  198. package/dest/serialize/free_funcs.d.ts.map +1 -1
  199. package/dest/serialize/free_funcs.js +1 -1
  200. package/dest/serialize/serialize.d.ts +20 -2
  201. package/dest/serialize/serialize.d.ts.map +1 -1
  202. package/dest/serialize/serialize.js +32 -1
  203. package/dest/sleep/index.d.ts +4 -1
  204. package/dest/sleep/index.d.ts.map +1 -1
  205. package/dest/sleep/index.js +14 -1
  206. package/dest/timer/date.d.ts +26 -1
  207. package/dest/timer/date.d.ts.map +1 -1
  208. package/dest/timer/date.js +36 -0
  209. package/dest/transport/transport_client.js +2 -2
  210. package/dest/trees/balanced_merkle_tree_root.d.ts +17 -0
  211. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  212. package/dest/trees/{balanced_merkle_tree.js → balanced_merkle_tree_root.js} +2 -15
  213. package/dest/trees/hasher.d.ts +3 -1
  214. package/dest/trees/hasher.d.ts.map +1 -1
  215. package/dest/trees/hasher.js +10 -5
  216. package/dest/trees/index.d.ts +4 -4
  217. package/dest/trees/index.d.ts.map +1 -1
  218. package/dest/trees/index.js +3 -3
  219. package/dest/trees/indexed_merkle_tree.js +1 -1
  220. package/dest/trees/membership_witness.d.ts +12 -2
  221. package/dest/trees/membership_witness.d.ts.map +1 -1
  222. package/dest/trees/membership_witness.js +10 -1
  223. package/dest/trees/merkle_tree_calculator.d.ts +1 -1
  224. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  225. package/dest/trees/merkle_tree_calculator.js +2 -2
  226. package/dest/trees/sibling_path.d.ts +3 -2
  227. package/dest/trees/sibling_path.d.ts.map +1 -1
  228. package/dest/trees/sibling_path.js +3 -3
  229. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +2 -3
  230. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  231. package/dest/trees/unbalanced_merkle_tree_calculator.js +1 -5
  232. package/dest/trees/{unbalanced_merkle_tree.d.ts → unbalanced_merkle_tree_root.d.ts} +3 -5
  233. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  234. package/dest/trees/{unbalanced_merkle_tree.js → unbalanced_merkle_tree_root.js} +11 -49
  235. package/dest/trees/unbalanced_tree_store.d.ts +5 -1
  236. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  237. package/dest/trees/unbalanced_tree_store.js +49 -1
  238. package/dest/types/index.d.ts +6 -2
  239. package/dest/types/index.d.ts.map +1 -1
  240. package/dest/types/index.js +6 -0
  241. package/package.json +49 -9
  242. package/src/array/index.ts +1 -0
  243. package/src/array/sorted_array.ts +138 -0
  244. package/src/branded-types/block_number.ts +117 -0
  245. package/src/branded-types/checkpoint_number.ts +115 -0
  246. package/src/branded-types/index.ts +3 -0
  247. package/src/branded-types/index_within_checkpoint.ts +88 -0
  248. package/src/branded-types/slot.ts +5 -0
  249. package/src/buffer/buffer16.ts +2 -2
  250. package/src/buffer/buffer32.ts +2 -2
  251. package/src/buffer/index.ts +1 -0
  252. package/src/buffer/utils.ts +8 -0
  253. package/src/collection/array.ts +52 -0
  254. package/src/config/env_var.ts +90 -17
  255. package/src/config/index.ts +54 -6
  256. package/src/config/network_config.ts +5 -0
  257. package/src/config/network_name.ts +4 -1
  258. package/src/config/parse-env.ts +4 -0
  259. package/src/crypto/bls/bn254_keystore.ts +1 -1
  260. package/src/crypto/bls/index.ts +1 -1
  261. package/src/crypto/bn254/index.ts +50 -159
  262. package/src/crypto/ecdsa/signature.ts +2 -2
  263. package/src/crypto/grumpkin/index.ts +3 -1
  264. package/src/crypto/keys/index.ts +1 -1
  265. package/src/crypto/pedersen/pedersen.wasm.ts +1 -1
  266. package/src/crypto/poseidon/index.ts +14 -24
  267. package/src/crypto/random/randomness_singleton.ts +6 -4
  268. package/src/crypto/schnorr/index.ts +2 -1
  269. package/src/crypto/schnorr/signature.ts +2 -2
  270. package/src/crypto/secp256k1-signer/utils.ts +32 -0
  271. package/src/crypto/sha256/index.ts +1 -1
  272. package/src/crypto/sha512/index.ts +1 -1
  273. package/src/crypto/signature/index.ts +1 -1
  274. package/src/crypto/sync/pedersen/index.ts +1 -1
  275. package/src/crypto/sync/poseidon/index.ts +1 -10
  276. package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +6 -6
  277. package/src/curves/bls12/index.ts +2 -0
  278. package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +7 -7
  279. package/src/{fields/fields.ts → curves/bn254/field.ts} +37 -56
  280. package/src/curves/bn254/index.ts +2 -0
  281. package/src/curves/bn254/point.ts +170 -0
  282. package/src/curves/grumpkin/index.ts +11 -0
  283. package/src/{fields → curves/grumpkin}/point.ts +7 -7
  284. package/src/eth-address/index.ts +8 -2
  285. package/src/eth-signature/eth_signature.ts +7 -1
  286. package/src/fifo/fifo_frame_reader.ts +98 -0
  287. package/src/fifo/index.ts +1 -0
  288. package/src/iterator/filter.ts +11 -0
  289. package/src/iterator/index.ts +1 -0
  290. package/src/jest/setup.mjs +31 -1
  291. package/src/json-rpc/client/safe_json_rpc_client.ts +2 -0
  292. package/src/json-rpc/client/undici.ts +21 -3
  293. package/src/json-rpc/server/api_key_auth.ts +63 -0
  294. package/src/json-rpc/server/index.ts +1 -0
  295. package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
  296. package/src/log/bigint-utils.ts +25 -0
  297. package/src/log/gcloud-logger-config.ts +5 -0
  298. package/src/log/libp2p_logger.ts +12 -5
  299. package/src/log/log-filters.ts +29 -11
  300. package/src/log/pino-logger-server.ts +25 -0
  301. package/src/log/pino-logger.ts +144 -39
  302. package/src/queue/base_memory_queue.ts +1 -1
  303. package/src/queue/semaphore.ts +5 -0
  304. package/src/retry/index.ts +18 -0
  305. package/src/schemas/schemas.ts +14 -3
  306. package/src/schemas/types.ts +33 -0
  307. package/src/serialize/buffer_reader.ts +36 -9
  308. package/src/serialize/field_reader.ts +1 -1
  309. package/src/serialize/free_funcs.ts +1 -1
  310. package/src/serialize/serialize.ts +33 -1
  311. package/src/sleep/index.ts +16 -1
  312. package/src/timer/date.ts +52 -0
  313. package/src/transport/transport_client.ts +2 -2
  314. package/src/trees/{balanced_merkle_tree.ts → balanced_merkle_tree_root.ts} +2 -16
  315. package/src/trees/hasher.ts +9 -0
  316. package/src/trees/index.ts +3 -3
  317. package/src/trees/indexed_merkle_tree.ts +1 -1
  318. package/src/trees/membership_witness.ts +9 -1
  319. package/src/trees/merkle_tree_calculator.ts +2 -2
  320. package/src/trees/sibling_path.ts +3 -3
  321. package/src/trees/unbalanced_merkle_tree_calculator.ts +1 -12
  322. package/src/trees/{unbalanced_merkle_tree.ts → unbalanced_merkle_tree_root.ts} +17 -61
  323. package/src/trees/unbalanced_tree_store.ts +57 -2
  324. package/src/types/index.ts +11 -1
  325. package/dest/crypto/bn254/bn254_utils.d.ts +0 -39
  326. package/dest/crypto/bn254/bn254_utils.d.ts.map +0 -1
  327. package/dest/crypto/bn254/bn254_utils.js +0 -56
  328. package/dest/crypto/index.d.ts +0 -17
  329. package/dest/crypto/index.d.ts.map +0 -1
  330. package/dest/crypto/index.js +0 -16
  331. package/dest/fields/bls12_fields.d.ts.map +0 -1
  332. package/dest/fields/bls12_point.d.ts.map +0 -1
  333. package/dest/fields/coordinate.d.ts +0 -63
  334. package/dest/fields/coordinate.d.ts.map +0 -1
  335. package/dest/fields/coordinate.js +0 -96
  336. package/dest/fields/fields.d.ts.map +0 -1
  337. package/dest/fields/index.d.ts +0 -6
  338. package/dest/fields/index.d.ts.map +0 -1
  339. package/dest/fields/index.js +0 -5
  340. package/dest/fields/point.d.ts.map +0 -1
  341. package/dest/index.d.ts +0 -31
  342. package/dest/index.d.ts.map +0 -1
  343. package/dest/index.js +0 -31
  344. package/dest/json-rpc/server/telemetry.d.ts +0 -2
  345. package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
  346. package/dest/json-rpc/server/telemetry.js +0 -0
  347. package/dest/trees/balanced_merkle_tree.d.ts +0 -22
  348. package/dest/trees/balanced_merkle_tree.d.ts.map +0 -1
  349. package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
  350. package/src/crypto/bn254/bn254_utils.ts +0 -64
  351. package/src/crypto/index.ts +0 -16
  352. package/src/fields/coordinate.ts +0 -104
  353. package/src/fields/index.ts +0 -5
  354. package/src/index.ts +0 -31
  355. package/src/json-rpc/server/telemetry.ts +0 -0
@@ -1,2 +1,3 @@
1
1
  export * from './buffer32.js';
2
2
  export * from './buffer16.js';
3
+ export * from './utils.js';
@@ -0,0 +1,8 @@
1
+ /** Returns the number of bytes in the buffer, excluding any trailing zero bytes. */
2
+ export function trimmedBytesLength(buf: Uint8Array): number {
3
+ let end = buf.length;
4
+ while (end > 0 && buf[end - 1] === 0) {
5
+ end--;
6
+ }
7
+ return end;
8
+ }
@@ -250,6 +250,58 @@ export function chunk<T>(items: T[], chunkSize: number): T[][] {
250
250
  return chunks;
251
251
  }
252
252
 
253
+ /**
254
+ * Splits the given array into chunks of the given size, wrapping around to the beginning
255
+ * if the last chunk would be smaller than the requested size.
256
+ * Returns empty array for empty input. Returns single chunk with all items if chunkSize <= 0.
257
+ */
258
+ export function chunkWrapAround<T>(items: T[], chunkSize: number): T[][] {
259
+ if (items.length === 0) {
260
+ return [];
261
+ }
262
+ if (chunkSize <= 0 || items.length <= chunkSize) {
263
+ return [items];
264
+ }
265
+ const remainder = items.length % chunkSize;
266
+ if (remainder === 0) {
267
+ return chunk(items, chunkSize);
268
+ }
269
+ const wrapAroundCount = chunkSize - remainder;
270
+ const wrappedItems = [...items, ...items.slice(0, wrapAroundCount)];
271
+ return chunk(wrappedItems, chunkSize);
272
+ }
273
+
274
+ const UNINITIALIZED = Symbol('uninitialized');
275
+
276
+ /**
277
+ * Splits the given iterable into chunks based on the key returned by the given function.
278
+ * Items must be contiguous to be included in the same chunk.
279
+ */
280
+ export function chunkBy<T, U>(items: T[], fn: (item: T) => U): T[][] {
281
+ const chunks: T[][] = [];
282
+ let currentChunk: T[] = [];
283
+ let currentKey: U | typeof UNINITIALIZED = UNINITIALIZED;
284
+
285
+ for (const item of items) {
286
+ const key = fn(item);
287
+ if (currentKey === UNINITIALIZED || key !== currentKey) {
288
+ if (currentChunk.length > 0) {
289
+ chunks.push(currentChunk);
290
+ }
291
+ currentChunk = [item];
292
+ currentKey = key;
293
+ } else {
294
+ currentChunk.push(item);
295
+ }
296
+ }
297
+
298
+ if (currentChunk.length > 0) {
299
+ chunks.push(currentChunk);
300
+ }
301
+
302
+ return chunks;
303
+ }
304
+
253
305
  /** Partitions the given iterable into two arrays based on the predicate. */
254
306
  export function partition<T>(items: T[], predicate: (item: T) => boolean): [T[], T[]] {
255
307
  const pass: T[] = [];
@@ -12,6 +12,9 @@ export type EnvVar =
12
12
  | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS'
13
13
  | 'ARCHIVER_BATCH_SIZE'
14
14
  | 'AZTEC_ADMIN_PORT'
15
+ | 'AZTEC_ADMIN_API_KEY_HASH'
16
+ | 'AZTEC_DISABLE_ADMIN_API_KEY'
17
+ | 'AZTEC_RESET_ADMIN_API_KEY'
15
18
  | 'AZTEC_NODE_ADMIN_URL'
16
19
  | 'AZTEC_NODE_URL'
17
20
  | 'AZTEC_PORT'
@@ -20,13 +23,16 @@ export type EnvVar =
20
23
  | 'BB_WORKING_DIRECTORY'
21
24
  | 'BB_NUM_IVC_VERIFIERS'
22
25
  | 'BB_IVC_CONCURRENCY'
26
+ | 'BB_CHONK_VERIFY_MAX_BATCH'
27
+ | 'BB_CHONK_VERIFY_BATCH_CONCURRENCY'
23
28
  | 'BOOTSTRAP_NODES'
24
- | 'BLOB_SINK_ARCHIVE_API_URL'
25
- | 'BLOB_SINK_PORT'
26
- | 'BLOB_SINK_URL'
29
+ | 'BLOB_ARCHIVE_API_URL'
30
+ | 'BLOB_FILE_STORE_URLS'
31
+ | 'BLOB_FILE_STORE_UPLOAD_URL'
32
+ | 'BLOB_HEALTHCHECK_UPLOAD_INTERVAL_MINUTES'
27
33
  | 'BOT_DA_GAS_LIMIT'
28
34
  | 'BOT_FEE_PAYMENT_METHOD'
29
- | 'BOT_BASE_FEE_PADDING'
35
+ | 'BOT_MIN_FEE_PADDING'
30
36
  | 'BOT_FLUSH_SETUP_TRANSACTIONS'
31
37
  | 'BOT_FOLLOW_CHAIN'
32
38
  | 'BOT_L2_GAS_LIMIT'
@@ -46,7 +52,10 @@ export type EnvVar =
46
52
  | 'BOT_TX_MINED_WAIT_SECONDS'
47
53
  | 'BOT_MAX_CONSECUTIVE_ERRORS'
48
54
  | 'BOT_STOP_WHEN_UNHEALTHY'
49
- | 'BOT_AMM_TXS'
55
+ | 'BOT_MODE'
56
+ | 'BOT_L2_TO_L1_MESSAGES_PER_TX'
57
+ | 'BOT_L1_TO_L2_SEED_COUNT'
58
+ | 'BOT_L1_TO_L2_SEED_INTERVAL'
50
59
  | 'COINBASE'
51
60
  | 'CRS_PATH'
52
61
  | 'DATA_DIRECTORY'
@@ -55,6 +64,7 @@ export type EnvVar =
55
64
  | 'BLOB_SINK_MAP_SIZE_KB'
56
65
  | 'P2P_STORE_MAP_SIZE_KB'
57
66
  | 'PROVER_BROKER_STORE_MAP_SIZE_KB'
67
+ | 'SIGNING_PROTECTION_MAP_SIZE_KB'
58
68
  | 'WS_DB_MAP_SIZE_KB'
59
69
  | 'ARCHIVE_TREE_MAP_SIZE_KB'
60
70
  | 'NULLIFIER_TREE_MAP_SIZE_KB'
@@ -63,18 +73,23 @@ export type EnvVar =
63
73
  | 'PUBLIC_DATA_TREE_MAP_SIZE_KB'
64
74
  | 'DEBUG'
65
75
  | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY'
66
- | 'DEPLOY_AZTEC_CONTRACTS_SALT'
76
+ | 'ENABLE_PROVER_NODE'
67
77
  | 'ETHEREUM_HOSTS'
78
+ | 'ETHEREUM_DEBUG_HOSTS'
79
+ | 'ETHEREUM_ALLOW_NO_DEBUG_HOSTS'
68
80
  | 'FEE_RECIPIENT'
69
81
  | 'FORCE_COLOR'
70
82
  | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS'
71
83
  | 'KEY_STORE_DIRECTORY'
72
84
  | 'L1_CHAIN_ID'
73
85
  | 'L1_CONSENSUS_HOST_URLS'
86
+ | 'ETHEREUM_HTTP_TIMEOUT_MS'
74
87
  | 'L1_CONSENSUS_HOST_API_KEYS'
75
88
  | 'L1_CONSENSUS_HOST_API_KEY_HEADERS'
89
+ | 'L1_TX_FAILED_STORE'
76
90
  | 'LOG_JSON'
77
91
  | 'LOG_MULTILINE'
92
+ | 'LOG_NO_COLOR_PER_ACTOR'
78
93
  | 'LOG_LEVEL'
79
94
  | 'MNEMONIC'
80
95
  | 'NETWORK'
@@ -92,7 +107,12 @@ export type EnvVar =
92
107
  | 'PUBLIC_OTEL_INCLUDE_METRICS'
93
108
  | 'PUBLIC_OTEL_COLLECT_FROM'
94
109
  | 'PUBLIC_OTEL_OPT_OUT'
110
+ | 'P2P_BATCH_TX_REQUESTER_SMART_PARALLEL_WORKER_COUNT'
111
+ | 'P2P_BATCH_TX_REQUESTER_DUMB_PARALLEL_WORKER_COUNT'
112
+ | 'P2P_BATCH_TX_REQUESTER_TX_BATCH_SIZE'
113
+ | 'P2P_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD'
95
114
  | 'P2P_BLOCK_CHECK_INTERVAL_MS'
115
+ | 'P2P_SLOT_CHECK_INTERVAL_MS'
96
116
  | 'P2P_BLOCK_REQUEST_BATCH_SIZE'
97
117
  | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK'
98
118
  | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS'
@@ -113,6 +133,7 @@ export type EnvVar =
113
133
  | 'P2P_L2_QUEUE_SIZE'
114
134
  | 'P2P_MAX_PEERS'
115
135
  | 'P2P_PEER_CHECK_INTERVAL_MS'
136
+ | 'P2P_PEER_FAILED_BAN_TIME_MS'
116
137
  | 'P2P_PEER_PENALTY_VALUES'
117
138
  | 'P2P_QUERY_FOR_IP'
118
139
  | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS'
@@ -131,12 +152,12 @@ export type EnvVar =
131
152
  | 'P2P_TRUSTED_PEERS'
132
153
  | 'P2P_PRIVATE_PEERS'
133
154
  | 'P2P_PREFERRED_PEERS'
134
- | 'P2P_MAX_TX_POOL_SIZE'
135
- | 'P2P_TX_POOL_OVERFLOW_FACTOR'
155
+ | 'P2P_MAX_PENDING_TX_COUNT'
136
156
  | 'P2P_SEEN_MSG_CACHE_SIZE'
137
- | 'P2P_DROP_TX'
138
157
  | 'P2P_DROP_TX_CHANCE'
139
158
  | 'P2P_TX_POOL_DELETE_TXS_AFTER_REORG'
159
+ | 'P2P_MIN_TX_POOL_AGE_MS'
160
+ | 'P2P_RPC_PRICE_BUMP_PERCENTAGE'
140
161
  | 'DEBUG_P2P_INSTRUMENT_MESSAGES'
141
162
  | 'PEER_ID_PRIVATE_KEY'
142
163
  | 'PEER_ID_PRIVATE_KEY_PATH'
@@ -150,7 +171,11 @@ export type EnvVar =
150
171
  | 'PROVER_BROKER_BATCH_INTERVAL_MS'
151
172
  | 'PROVER_BROKER_BATCH_SIZE'
152
173
  | 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR'
174
+ | 'PROVER_BROKER_DEBUG_REPLAY_ENABLED'
175
+ | 'PROVER_CANCEL_JOBS_ON_STOP'
176
+ | 'PROVER_ENQUEUE_CONCURRENCY'
153
177
  | 'PROVER_COORDINATION_NODE_URLS'
178
+ | 'PROVER_PROOF_STORE'
154
179
  | 'PROVER_FAILED_PROOF_STORE'
155
180
  | 'PROVER_NODE_FAILED_EPOCH_STORE'
156
181
  | 'PROVER_NODE_DISABLE_PROOF_PUBLISH'
@@ -166,6 +191,7 @@ export type EnvVar =
166
191
  | 'PROVER_PUBLISHER_PRIVATE_KEYS'
167
192
  | 'PROVER_PUBLISHER_ADDRESSES'
168
193
  | 'PROVER_PUBLISHER_ALLOW_INVALID_STATES'
194
+ | 'PROVER_PUBLISHER_FORWARDER_ADDRESS'
169
195
  | 'PROVER_REAL_PROOFS'
170
196
  | 'PROVER_TEST_DELAY_FACTOR'
171
197
  | 'PROVER_TEST_DELAY_MS'
@@ -173,6 +199,7 @@ export type EnvVar =
173
199
  | 'PROVER_TEST_VERIFICATION_DELAY_MS'
174
200
  | 'PXE_L2_BLOCK_BATCH_SIZE'
175
201
  | 'PXE_PROVER_ENABLED'
202
+ | 'PXE_SYNC_CHAIN_TIP'
176
203
  | 'RPC_MAX_BATCH_SIZE'
177
204
  | 'RPC_MAX_BODY_SIZE'
178
205
  | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT'
@@ -180,22 +207,32 @@ export type EnvVar =
180
207
  | 'SENTINEL_ENABLED'
181
208
  | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS'
182
209
  | 'SENTINEL_HISTORIC_PROVEN_PERFORMANCE_LENGTH_IN_EPOCHS'
183
- | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES'
210
+ | 'SEQ_ENABLE_PROPOSER_PIPELINING'
184
211
  | 'SEQ_MAX_TX_PER_BLOCK'
212
+ | 'SEQ_MAX_TX_PER_CHECKPOINT'
185
213
  | 'SEQ_MIN_TX_PER_BLOCK'
186
214
  | 'SEQ_PUBLISH_TXS_WITH_PROPOSALS'
187
215
  | 'SEQ_MAX_DA_BLOCK_GAS'
188
216
  | 'SEQ_MAX_L2_BLOCK_GAS'
217
+ | 'SEQ_PER_BLOCK_ALLOCATION_MULTIPLIER'
218
+ | 'SEQ_REDISTRIBUTE_CHECKPOINT_BUDGET'
189
219
  | 'SEQ_PUBLISHER_PRIVATE_KEY'
190
220
  | 'SEQ_PUBLISHER_PRIVATE_KEYS'
191
221
  | 'SEQ_PUBLISHER_ADDRESSES'
192
222
  | 'SEQ_PUBLISHER_ALLOW_INVALID_STATES'
193
- | 'SEQ_TX_POLLING_INTERVAL_MS'
223
+ | 'SEQ_PUBLISHER_FORWARDER_ADDRESS'
224
+ | 'PUBLISHER_FUNDING_THRESHOLD'
225
+ | 'PUBLISHER_FUNDING_AMOUNT'
226
+ | 'SEQ_POLLING_INTERVAL_MS'
194
227
  | 'SEQ_ENFORCE_TIME_TABLE'
195
- | 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT'
228
+ | 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT'
196
229
  | 'SEQ_ATTESTATION_PROPAGATION_TIME'
230
+ | 'SEQ_BLOCK_DURATION_MS'
231
+ | 'SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT'
232
+ | 'SEQ_BUILD_CHECKPOINT_IF_EMPTY'
197
233
  | 'SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_COMMITTEE_MEMBER'
198
234
  | 'SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_NON_COMMITTEE_MEMBER'
235
+ | 'SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT'
199
236
  | 'SLASH_MIN_PENALTY_PERCENTAGE'
200
237
  | 'SLASH_MAX_PENALTY_PERCENTAGE'
201
238
  | 'SLASH_VALIDATORS_ALWAYS'
@@ -206,6 +243,8 @@ export type EnvVar =
206
243
  | 'SLASH_INACTIVITY_TARGET_PERCENTAGE'
207
244
  | 'SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD'
208
245
  | 'SLASH_INVALID_BLOCK_PENALTY'
246
+ | 'SLASH_DUPLICATE_PROPOSAL_PENALTY'
247
+ | 'SLASH_DUPLICATE_ATTESTATION_PENALTY'
209
248
  | 'SLASH_OVERRIDE_PAYLOAD'
210
249
  | 'SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY'
211
250
  | 'SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY'
@@ -220,6 +259,7 @@ export type EnvVar =
220
259
  | 'TELEMETRY'
221
260
  | 'TEST_ACCOUNTS'
222
261
  | 'SPONSORED_FPC'
262
+ | 'PREFUND_ADDRESSES'
223
263
  | 'TX_COLLECTION_FAST_NODES_TIMEOUT_BEFORE_REQ_RESP_MS'
224
264
  | 'TX_COLLECTION_SLOW_NODES_INTERVAL_MS'
225
265
  | 'TX_COLLECTION_SLOW_REQ_RESP_INTERVAL_MS'
@@ -230,21 +270,39 @@ export type EnvVar =
230
270
  | 'TX_COLLECTION_FAST_MAX_PARALLEL_REQUESTS_PER_NODE'
231
271
  | 'TX_COLLECTION_NODE_RPC_MAX_BATCH_SIZE'
232
272
  | 'TX_COLLECTION_NODE_RPC_URLS'
273
+ | 'TX_COLLECTION_MISSING_TXS_COLLECTOR_TYPE'
274
+ | 'TX_COLLECTION_FILE_STORE_URLS'
275
+ | 'TX_COLLECTION_FILE_STORE_SLOW_DELAY_MS'
276
+ | 'TX_COLLECTION_FILE_STORE_FAST_DELAY_MS'
277
+ | 'TX_COLLECTION_FILE_STORE_FAST_WORKER_COUNT'
278
+ | 'TX_COLLECTION_FILE_STORE_SLOW_WORKER_COUNT'
279
+ | 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_BASE_MS'
280
+ | 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_BASE_MS'
281
+ | 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_MAX_MS'
282
+ | 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_MAX_MS'
283
+ | 'TX_FILE_STORE_URL'
284
+ | 'TX_FILE_STORE_UPLOAD_CONCURRENCY'
285
+ | 'TX_FILE_STORE_MAX_QUEUE_SIZE'
286
+ | 'TX_FILE_STORE_ENABLED'
233
287
  | 'TX_PUBLIC_SETUP_ALLOWLIST'
234
288
  | 'TXE_PORT'
235
289
  | 'TRANSACTIONS_DISABLED'
236
290
  | 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS'
237
291
  | 'VALIDATOR_DISABLED'
292
+ | 'VALIDATOR_MAX_DA_BLOCK_GAS'
293
+ | 'VALIDATOR_MAX_L2_BLOCK_GAS'
294
+ | 'VALIDATOR_MAX_TX_PER_BLOCK'
295
+ | 'VALIDATOR_MAX_TX_PER_CHECKPOINT'
238
296
  | 'VALIDATOR_PRIVATE_KEYS'
239
297
  | 'VALIDATOR_PRIVATE_KEY'
240
298
  | 'VALIDATOR_REEXECUTE'
241
299
  | 'VALIDATOR_ADDRESSES'
242
300
  | 'ROLLUP_VERSION'
243
301
  | 'WS_BLOCK_CHECK_INTERVAL_MS'
244
- | 'WS_PROVEN_BLOCKS_ONLY'
245
302
  | 'WS_BLOCK_REQUEST_BATCH_SIZE'
246
303
  | 'L1_READER_VIEM_POLLING_INTERVAL_MS'
247
304
  | 'WS_DATA_DIRECTORY'
305
+ | 'WS_NUM_HISTORIC_CHECKPOINTS'
248
306
  | 'WS_NUM_HISTORIC_BLOCKS'
249
307
  | 'ETHEREUM_SLOT_DURATION'
250
308
  | 'AZTEC_SLOT_DURATION'
@@ -252,12 +310,14 @@ export type EnvVar =
252
310
  | 'AZTEC_TARGET_COMMITTEE_SIZE'
253
311
  | 'AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET'
254
312
  | 'AZTEC_LAG_IN_EPOCHS_FOR_RANDAO'
313
+ | 'AZTEC_INBOX_LAG'
255
314
  | 'AZTEC_PROOF_SUBMISSION_EPOCHS'
256
315
  | 'AZTEC_ACTIVATION_THRESHOLD'
257
316
  | 'AZTEC_EJECTION_THRESHOLD'
258
317
  | 'AZTEC_LOCAL_EJECTION_THRESHOLD'
259
318
  | 'AZTEC_MANA_TARGET'
260
319
  | 'AZTEC_PROVING_COST_PER_MANA'
320
+ | 'AZTEC_INITIAL_ETH_PER_FEE_ASSET'
261
321
  | 'AZTEC_SLASHING_QUORUM'
262
322
  | 'AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS'
263
323
  | 'AZTEC_SLASHING_LIFETIME_IN_ROUNDS'
@@ -271,6 +331,7 @@ export type EnvVar =
271
331
  | 'AZTEC_SLASHER_FLAVOR'
272
332
  | 'AZTEC_GOVERNANCE_PROPOSER_QUORUM'
273
333
  | 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE'
334
+ | 'AZTEC_GOVERNANCE_VOTING_DURATION'
274
335
  | 'AZTEC_EXIT_DELAY_SECONDS'
275
336
  | 'L1_GAS_LIMIT_BUFFER_PERCENTAGE'
276
337
  | 'L1_GAS_PRICE_MAX'
@@ -279,6 +340,7 @@ export type EnvVar =
279
340
  | 'L1_BLOB_FEE_PER_GAS_GWEI_MAX'
280
341
  | 'L1_PRIORITY_FEE_BUMP_PERCENTAGE'
281
342
  | 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE'
343
+ | 'L1_MINIMUM_PRIORITY_FEE_PER_GAS_GWEI'
282
344
  | 'L1_FIXED_PRIORITY_FEE_PER_GAS'
283
345
  | 'L1_FIXED_PRIORITY_FEE_PER_GAS_GWEI'
284
346
  | 'L1_TX_MONITOR_MAX_ATTEMPTS'
@@ -295,13 +357,24 @@ export type EnvVar =
295
357
  | 'K8S_POD_NAME'
296
358
  | 'K8S_POD_UID'
297
359
  | 'K8S_NAMESPACE_NAME'
360
+ | 'ENABLE_VERSION_CHECK'
298
361
  | 'VALIDATOR_REEXECUTE_DEADLINE_MS'
299
- | 'ALWAYS_REEXECUTE_BLOCK_PROPOSALS'
300
- | 'AUTO_UPDATE'
301
- | 'AUTO_UPDATE_URL'
302
362
  | 'WEB3_SIGNER_URL'
303
363
  | 'SKIP_ARCHIVER_INITIAL_SYNC'
304
364
  | 'BLOB_ALLOW_EMPTY_SOURCES'
305
365
  | 'FISHERMAN_MODE'
306
366
  | 'MAX_ALLOWED_ETH_CLIENT_DRIFT_SECONDS'
307
- | 'LEGACY_BLS_CLI';
367
+ | 'LEGACY_BLS_CLI'
368
+ | 'DEBUG_FORCE_TX_PROOF_VERIFICATION'
369
+ | 'VALIDATOR_HA_SIGNING_ENABLED'
370
+ | 'VALIDATOR_HA_NODE_ID'
371
+ | 'VALIDATOR_HA_POLLING_INTERVAL_MS'
372
+ | 'VALIDATOR_HA_SIGNING_TIMEOUT_MS'
373
+ | 'VALIDATOR_HA_MAX_STUCK_DUTIES_AGE_MS'
374
+ | 'VALIDATOR_HA_OLD_DUTIES_MAX_AGE_H'
375
+ | 'VALIDATOR_HA_DATABASE_URL'
376
+ | 'VALIDATOR_HA_RUN_MIGRATIONS'
377
+ | 'VALIDATOR_HA_POOL_MAX'
378
+ | 'VALIDATOR_HA_POOL_MIN'
379
+ | 'VALIDATOR_HA_POOL_IDLE_TIMEOUT_MS'
380
+ | 'VALIDATOR_HA_POOL_CONNECTION_TIMEOUT_MS';
@@ -1,6 +1,8 @@
1
- import { Fq, Fr } from '../fields/fields.js';
1
+ import { Fq, Fr } from '../curves/bn254/field.js';
2
+ import { createConsoleLogger } from '../log/console.js';
2
3
  import type { EnvVar } from './env_var.js';
3
4
  import { type NetworkNames, getActiveNetworkName } from './network_name.js';
5
+ import { parseBooleanEnv } from './parse-env.js';
4
6
  import { SecretValue } from './secret_value.js';
5
7
 
6
8
  export { SecretValue, getActiveNetworkName };
@@ -17,6 +19,11 @@ export interface ConfigMapping {
17
19
  isBoolean?: boolean;
18
20
  nested?: Record<string, ConfigMapping>;
19
21
  fallback?: EnvVar[];
22
+ /**
23
+ * List of deprecated env vars that are still supported but will log a warning.
24
+ * These should also be included in the fallback array for parsing.
25
+ */
26
+ deprecatedFallback?: { env: EnvVar; message?: string }[];
20
27
  }
21
28
 
22
29
  export function isBooleanConfigValue<T>(obj: T, key: keyof T): boolean {
@@ -72,12 +79,24 @@ export function getConfigFromMappings<T>(configMappings: ConfigMappingsType<T>):
72
79
  const config = {} as T;
73
80
 
74
81
  for (const key in configMappings) {
75
- const { env, parseEnv, defaultValue, nested, fallback } = configMappings[key];
82
+ const { env, parseEnv, defaultValue, nested, fallback, deprecatedFallback } = configMappings[key];
76
83
  if (nested) {
77
84
  (config as any)[key] = getConfigFromMappings(nested);
78
85
  } else {
79
86
  // Use the shared utility function
80
87
  (config as any)[key] = getValueFromEnvWithFallback(env, parseEnv, defaultValue, fallback);
88
+
89
+ // Check for deprecated env vars and warn if logger is set
90
+ if (deprecatedFallback?.length) {
91
+ const userLog = createConsoleLogger('[DEPRECATED]');
92
+ for (const { env: deprecatedEnv, message } of deprecatedFallback) {
93
+ if (process.env[deprecatedEnv]) {
94
+ const warningMessage =
95
+ message ?? `Environment variable ${deprecatedEnv} is deprecated. Please use ${env} instead.`;
96
+ userLog(warningMessage, { deprecatedEnvVar: deprecatedEnv, newEnvVar: env });
97
+ }
98
+ }
99
+ }
81
100
  }
82
101
  }
83
102
 
@@ -130,6 +149,23 @@ export function floatConfigHelper(
130
149
  };
131
150
  }
132
151
 
152
+ /**
153
+ * Parses an environment variable to a 0-1 percentage value
154
+ */
155
+ export function percentageConfigHelper(defaultVal: number): Pick<ConfigMapping, 'parseEnv' | 'defaultValue'> {
156
+ return {
157
+ parseEnv: (val: string): number => {
158
+ const parsed = safeParseFloat(val, defaultVal);
159
+ if (parsed < 0 || parsed > 1) {
160
+ throw new TypeError(`Invalid percentage value: ${parsed} should be between 0 and 1`);
161
+ }
162
+
163
+ return parsed;
164
+ },
165
+ defaultValue: defaultVal,
166
+ };
167
+ }
168
+
133
169
  /**
134
170
  * Generates parseEnv and default values for a numerical config value.
135
171
  * @param defaultVal - The default numerical value to use if the environment variable is not set or is invalid
@@ -141,6 +177,21 @@ export function bigintConfigHelper(defaultVal?: bigint): Pick<ConfigMapping, 'pa
141
177
  if (val === '') {
142
178
  return defaultVal;
143
179
  }
180
+ // Handle scientific notation (e.g. "1e+23", "2E23") which BigInt() doesn't accept directly.
181
+ // We parse it losslessly using bigint arithmetic instead of going through float64.
182
+ if (/[eE]/.test(val)) {
183
+ const match = val.match(/^(-?\d+(?:\.(\d+))?)[eE]([+-]?\d+)$/);
184
+ if (!match) {
185
+ throw new Error(`Cannot convert '${val}' to a BigInt`);
186
+ }
187
+ const digits = match[1].replace('.', '');
188
+ const decimalPlaces = match[2]?.length ?? 0;
189
+ const exponent = parseInt(match[3], 10) - decimalPlaces;
190
+ if (exponent < 0) {
191
+ throw new Error(`Cannot convert '${val}' to a BigInt: result is not an integer`);
192
+ }
193
+ return BigInt(digits) * 10n ** BigInt(exponent);
194
+ }
144
195
  return BigInt(val);
145
196
  },
146
197
  defaultValue: defaultVal,
@@ -213,10 +264,7 @@ export function secretValueConfigHelper<T>(parse: (val: string | undefined) => T
213
264
  };
214
265
  }
215
266
 
216
- /** Parses an env var as boolean. Returns true only if value is 1, true, or TRUE. */
217
- export function parseBooleanEnv(val: string | undefined): boolean {
218
- return val !== undefined && ['1', 'true', 'TRUE'].includes(val);
219
- }
267
+ export { parseBooleanEnv } from './parse-env.js';
220
268
 
221
269
  export function secretStringConfigHelper(): Required<
222
270
  Pick<ConfigMapping, 'parseEnv' | 'defaultValue' | 'isBoolean'> & {
@@ -4,9 +4,14 @@ export const NetworkConfigSchema = z
4
4
  .object({
5
5
  bootnodes: z.array(z.string()),
6
6
  snapshots: z.array(z.string()),
7
+ blobFileStoreUrls: z.array(z.string()).optional(),
8
+ txCollectionFileStoreUrls: z.array(z.string()).optional(),
7
9
  registryAddress: z.string(),
8
10
  feeAssetHandlerAddress: z.string().optional(),
9
11
  l1ChainId: z.number(),
12
+ blockDurationMs: z.number().positive().optional(),
13
+ txPublicSetupAllowListExtend: z.string().optional(),
14
+ nodeVersion: z.string().optional(),
10
15
  })
11
16
  .passthrough(); // Allow additional unknown fields to pass through
12
17
 
@@ -5,7 +5,8 @@ export type NetworkNames =
5
5
  | 'testnet'
6
6
  | 'mainnet'
7
7
  | 'next-net'
8
- | 'devnet';
8
+ | 'devnet'
9
+ | `v${number}-devnet-${number}`;
9
10
 
10
11
  export function getActiveNetworkName(name?: string): NetworkNames {
11
12
  const network = name || process.env.NETWORK;
@@ -23,6 +24,8 @@ export function getActiveNetworkName(name?: string): NetworkNames {
23
24
  return 'next-net';
24
25
  } else if (network === 'devnet') {
25
26
  return 'devnet';
27
+ } else if (/^v\d+-devnet-\d+$/.test(network)) {
28
+ return network as `v${number}-devnet-${number}`;
26
29
  }
27
30
  throw new Error(`Unknown network: ${network}`);
28
31
  }
@@ -0,0 +1,4 @@
1
+ /** Parses an env var as boolean. Returns true only if value is 1, true, or TRUE. */
2
+ export function parseBooleanEnv(val: string | undefined): boolean {
3
+ return val !== undefined && ['1', 'true', 'TRUE'].includes(val);
4
+ }
@@ -1,4 +1,4 @@
1
- import { randomBytes } from '@aztec/foundation/crypto';
1
+ import { randomBytes } from '@aztec/foundation/crypto/random';
2
2
 
3
3
  import { createCipheriv, createDecipheriv, createHash, pbkdf2Sync, randomUUID } from 'crypto';
4
4
  import { readFileSync } from 'fs';
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { Hex } from '@aztec/foundation/string';
3
3
 
4
4
  import { mod } from '@noble/curves/abstract/modular';