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

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 (405) 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/buffer32_hash.d.ts +24 -0
  11. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  12. package/dest/branded-types/buffer32_hash.js +19 -0
  13. package/dest/branded-types/checkpoint_number.d.ts +57 -0
  14. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  15. package/dest/branded-types/checkpoint_number.js +80 -0
  16. package/dest/branded-types/index.d.ts +5 -1
  17. package/dest/branded-types/index.d.ts.map +1 -1
  18. package/dest/branded-types/index.js +4 -0
  19. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  20. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  21. package/dest/branded-types/index_within_checkpoint.js +59 -0
  22. package/dest/branded-types/slot.d.ts +4 -1
  23. package/dest/branded-types/slot.d.ts.map +1 -1
  24. package/dest/branded-types/slot.js +3 -0
  25. package/dest/buffer/buffer16.d.ts +7 -2
  26. package/dest/buffer/buffer16.d.ts.map +1 -1
  27. package/dest/buffer/buffer16.js +4 -2
  28. package/dest/buffer/buffer32.d.ts +29 -59
  29. package/dest/buffer/buffer32.d.ts.map +1 -1
  30. package/dest/buffer/buffer32.js +30 -62
  31. package/dest/buffer/index.d.ts +2 -1
  32. package/dest/buffer/index.d.ts.map +1 -1
  33. package/dest/buffer/index.js +1 -0
  34. package/dest/buffer/utils.d.ts +3 -0
  35. package/dest/buffer/utils.d.ts.map +1 -0
  36. package/dest/buffer/utils.js +7 -0
  37. package/dest/collection/array.d.ts +14 -1
  38. package/dest/collection/array.d.ts.map +1 -1
  39. package/dest/collection/array.js +66 -0
  40. package/dest/collection/index.d.ts +2 -1
  41. package/dest/collection/index.d.ts.map +1 -1
  42. package/dest/collection/index.js +1 -0
  43. package/dest/collection/lru_set.d.ts +35 -0
  44. package/dest/collection/lru_set.d.ts.map +1 -0
  45. package/dest/collection/lru_set.js +95 -0
  46. package/dest/config/env_var.d.ts +2 -2
  47. package/dest/config/env_var.d.ts.map +1 -1
  48. package/dest/config/index.d.ts +61 -32
  49. package/dest/config/index.d.ts.map +1 -1
  50. package/dest/config/index.js +66 -37
  51. package/dest/config/network_config.d.ts +31 -1
  52. package/dest/config/network_config.d.ts.map +1 -1
  53. package/dest/config/network_config.js +6 -1
  54. package/dest/config/network_name.d.ts +2 -2
  55. package/dest/config/network_name.d.ts.map +1 -1
  56. package/dest/config/network_name.js +2 -0
  57. package/dest/config/parse-env.d.ts +3 -0
  58. package/dest/config/parse-env.d.ts.map +1 -0
  59. package/dest/config/parse-env.js +7 -0
  60. package/dest/config/secret_value.js +3 -1
  61. package/dest/crypto/aes128/index.d.ts +2 -1
  62. package/dest/crypto/aes128/index.d.ts.map +1 -1
  63. package/dest/crypto/aes128/index.js +11 -2
  64. package/dest/crypto/bls/bn254_keystore.d.ts +1 -10
  65. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  66. package/dest/crypto/bls/bn254_keystore.js +1 -18
  67. package/dest/crypto/bls/index.js +1 -1
  68. package/dest/crypto/bn254/index.d.ts +35 -51
  69. package/dest/crypto/bn254/index.d.ts.map +1 -1
  70. package/dest/crypto/bn254/index.js +51 -140
  71. package/dest/crypto/ecdsa/signature.d.ts +11 -2
  72. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  73. package/dest/crypto/ecdsa/signature.js +2 -2
  74. package/dest/crypto/grumpkin/index.d.ts +4 -2
  75. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  76. package/dest/crypto/grumpkin/index.js +2 -1
  77. package/dest/crypto/keys/index.d.ts +2 -2
  78. package/dest/crypto/keys/index.d.ts.map +1 -1
  79. package/dest/crypto/keys/index.js +1 -1
  80. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
  81. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  82. package/dest/crypto/pedersen/pedersen.wasm.js +1 -1
  83. package/dest/crypto/poseidon/index.d.ts +2 -3
  84. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  85. package/dest/crypto/poseidon/index.js +41 -43
  86. package/dest/crypto/random/randomness_singleton.d.ts +4 -3
  87. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  88. package/dest/crypto/random/randomness_singleton.js +5 -5
  89. package/dest/crypto/schnorr/index.d.ts +3 -2
  90. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  91. package/dest/crypto/schnorr/index.js +1 -1
  92. package/dest/crypto/schnorr/signature.d.ts +2 -2
  93. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  94. package/dest/crypto/schnorr/signature.js +2 -2
  95. package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
  96. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  97. package/dest/crypto/secp256k1-signer/utils.js +26 -0
  98. package/dest/crypto/sha256/index.d.ts +2 -2
  99. package/dest/crypto/sha256/index.d.ts.map +1 -1
  100. package/dest/crypto/sha256/index.js +1 -1
  101. package/dest/crypto/sha512/index.d.ts +2 -2
  102. package/dest/crypto/sha512/index.d.ts.map +1 -1
  103. package/dest/crypto/sha512/index.js +1 -1
  104. package/dest/crypto/signature/index.d.ts +2 -2
  105. package/dest/crypto/signature/index.d.ts.map +1 -1
  106. package/dest/crypto/sync/pedersen/index.d.ts +2 -2
  107. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  108. package/dest/crypto/sync/pedersen/index.js +1 -1
  109. package/dest/crypto/sync/poseidon/index.d.ts +2 -3
  110. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  111. package/dest/crypto/sync/poseidon/index.js +1 -9
  112. package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
  113. package/dest/curves/bls12/field.d.ts.map +1 -0
  114. package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +11 -13
  115. package/dest/curves/bls12/index.d.ts +3 -0
  116. package/dest/curves/bls12/index.d.ts.map +1 -0
  117. package/dest/curves/bls12/index.js +2 -0
  118. package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +13 -4
  119. package/dest/curves/bls12/point.d.ts.map +1 -0
  120. package/dest/{fields/bls12_point.js → curves/bls12/point.js} +10 -8
  121. package/dest/{fields/fields.d.ts → curves/bn254/field.d.ts} +24 -30
  122. package/dest/curves/bn254/field.d.ts.map +1 -0
  123. package/dest/{fields/fields.js → curves/bn254/field.js} +55 -61
  124. package/dest/curves/bn254/index.d.ts +3 -0
  125. package/dest/curves/bn254/index.d.ts.map +1 -0
  126. package/dest/curves/bn254/index.js +2 -0
  127. package/dest/curves/bn254/point.d.ts +54 -0
  128. package/dest/curves/bn254/point.d.ts.map +1 -0
  129. package/dest/curves/bn254/point.js +143 -0
  130. package/dest/curves/grumpkin/index.d.ts +10 -0
  131. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  132. package/dest/curves/grumpkin/index.js +3 -0
  133. package/dest/{fields → curves/grumpkin}/point.d.ts +16 -7
  134. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  135. package/dest/{fields → curves/grumpkin}/point.js +14 -11
  136. package/dest/error/index.d.ts +4 -4
  137. package/dest/error/index.d.ts.map +1 -1
  138. package/dest/eth-address/index.d.ts +3 -2
  139. package/dest/eth-address/index.d.ts.map +1 -1
  140. package/dest/eth-address/index.js +10 -6
  141. package/dest/eth-signature/eth_signature.d.ts +5 -1
  142. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  143. package/dest/eth-signature/eth_signature.js +7 -2
  144. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  145. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  146. package/dest/fifo/fifo_frame_reader.js +74 -0
  147. package/dest/fifo/index.d.ts +2 -0
  148. package/dest/fifo/index.d.ts.map +1 -0
  149. package/dest/fifo/index.js +1 -0
  150. package/dest/iterator/filter.d.ts +3 -0
  151. package/dest/iterator/filter.d.ts.map +1 -0
  152. package/dest/iterator/filter.js +7 -0
  153. package/dest/iterator/index.d.ts +2 -0
  154. package/dest/iterator/index.d.ts.map +1 -0
  155. package/dest/iterator/index.js +1 -0
  156. package/dest/jest/setup.js +28 -1
  157. package/dest/json-rpc/client/fetch.d.ts +1 -1
  158. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  159. package/dest/json-rpc/client/fetch.js +4 -3
  160. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
  161. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  162. package/dest/json-rpc/client/safe_json_rpc_client.js +1 -1
  163. package/dest/json-rpc/client/undici.d.ts +1 -1
  164. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  165. package/dest/json-rpc/client/undici.js +23 -4
  166. package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
  167. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  168. package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
  169. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  170. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  171. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  172. package/dest/json-rpc/server/api_key_auth.js +57 -0
  173. package/dest/json-rpc/server/index.d.ts +2 -1
  174. package/dest/json-rpc/server/index.d.ts.map +1 -1
  175. package/dest/json-rpc/server/index.js +1 -0
  176. package/dest/json-rpc/server/safe_json_rpc_server.js +1 -1
  177. package/dest/log/bigint-utils.d.ts +5 -0
  178. package/dest/log/bigint-utils.d.ts.map +1 -0
  179. package/dest/log/bigint-utils.js +21 -0
  180. package/dest/log/gcloud-logger-config.d.ts +1 -1
  181. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  182. package/dest/log/gcloud-logger-config.js +3 -0
  183. package/dest/log/libp2p_logger.d.ts +5 -2
  184. package/dest/log/libp2p_logger.d.ts.map +1 -1
  185. package/dest/log/libp2p_logger.js +14 -4
  186. package/dest/log/log-filters.d.ts +17 -4
  187. package/dest/log/log-filters.d.ts.map +1 -1
  188. package/dest/log/log-filters.js +26 -12
  189. package/dest/log/pino-logger-server.d.ts +9 -0
  190. package/dest/log/pino-logger-server.d.ts.map +1 -0
  191. package/dest/log/pino-logger-server.js +18 -0
  192. package/dest/log/pino-logger.d.ts +37 -8
  193. package/dest/log/pino-logger.d.ts.map +1 -1
  194. package/dest/log/pino-logger.js +138 -30
  195. package/dest/queue/base_memory_queue.d.ts +2 -2
  196. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  197. package/dest/queue/batch_queue.d.ts +1 -1
  198. package/dest/queue/batch_queue.d.ts.map +1 -1
  199. package/dest/queue/batch_queue.js +1 -0
  200. package/dest/queue/semaphore.d.ts +5 -1
  201. package/dest/queue/semaphore.d.ts.map +1 -1
  202. package/dest/retry/index.d.ts +22 -1
  203. package/dest/retry/index.d.ts.map +1 -1
  204. package/dest/retry/index.js +32 -0
  205. package/dest/schemas/api.d.ts +2 -2
  206. package/dest/schemas/api.d.ts.map +1 -1
  207. package/dest/schemas/schemas.d.ts +7 -3
  208. package/dest/schemas/schemas.d.ts.map +1 -1
  209. package/dest/schemas/schemas.js +9 -3
  210. package/dest/schemas/types.d.ts +31 -1
  211. package/dest/schemas/types.d.ts.map +1 -1
  212. package/dest/schemas/types.js +25 -1
  213. package/dest/serialize/buffer_reader.d.ts +14 -4
  214. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  215. package/dest/serialize/buffer_reader.js +26 -4
  216. package/dest/serialize/field_reader.d.ts +2 -2
  217. package/dest/serialize/field_reader.d.ts.map +1 -1
  218. package/dest/serialize/field_reader.js +1 -1
  219. package/dest/serialize/free_funcs.d.ts +2 -2
  220. package/dest/serialize/free_funcs.d.ts.map +1 -1
  221. package/dest/serialize/free_funcs.js +1 -1
  222. package/dest/serialize/serialize.d.ts +20 -2
  223. package/dest/serialize/serialize.d.ts.map +1 -1
  224. package/dest/serialize/serialize.js +32 -1
  225. package/dest/sleep/index.d.ts +4 -1
  226. package/dest/sleep/index.d.ts.map +1 -1
  227. package/dest/sleep/index.js +14 -1
  228. package/dest/string/index.js +1 -1
  229. package/dest/timer/date.d.ts +26 -1
  230. package/dest/timer/date.d.ts.map +1 -1
  231. package/dest/timer/date.js +36 -0
  232. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  233. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  234. package/dest/transport/index.d.ts +1 -2
  235. package/dest/transport/index.d.ts.map +1 -1
  236. package/dest/transport/index.js +0 -1
  237. package/dest/transport/transport_client.js +2 -2
  238. package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
  239. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  240. package/dest/trees/{balanced_merkle_tree.js → balanced_merkle_tree_root.js} +3 -17
  241. package/dest/trees/hasher.d.ts +4 -1
  242. package/dest/trees/hasher.d.ts.map +1 -1
  243. package/dest/trees/hasher.js +10 -5
  244. package/dest/trees/index.d.ts +4 -4
  245. package/dest/trees/index.d.ts.map +1 -1
  246. package/dest/trees/index.js +3 -3
  247. package/dest/trees/indexed_merkle_tree.js +1 -1
  248. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  249. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  250. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  251. package/dest/trees/membership_witness.d.ts +12 -2
  252. package/dest/trees/membership_witness.d.ts.map +1 -1
  253. package/dest/trees/membership_witness.js +10 -1
  254. package/dest/trees/merkle_tree_calculator.d.ts +4 -2
  255. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  256. package/dest/trees/merkle_tree_calculator.js +1 -5
  257. package/dest/trees/sibling_path.d.ts +4 -3
  258. package/dest/trees/sibling_path.d.ts.map +1 -1
  259. package/dest/trees/sibling_path.js +2 -6
  260. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +2 -3
  261. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  262. package/dest/trees/unbalanced_merkle_tree_calculator.js +1 -5
  263. package/dest/trees/{unbalanced_merkle_tree.d.ts → unbalanced_merkle_tree_root.d.ts} +4 -7
  264. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  265. package/dest/trees/{unbalanced_merkle_tree.js → unbalanced_merkle_tree_root.js} +12 -51
  266. package/dest/trees/unbalanced_tree_store.d.ts +5 -1
  267. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  268. package/dest/trees/unbalanced_tree_store.js +49 -1
  269. package/dest/types/index.d.ts +6 -2
  270. package/dest/types/index.d.ts.map +1 -1
  271. package/dest/types/index.js +6 -0
  272. package/package.json +49 -9
  273. package/src/array/index.ts +1 -0
  274. package/src/array/sorted_array.ts +138 -0
  275. package/src/branded-types/block_number.ts +117 -0
  276. package/src/branded-types/buffer32_hash.ts +42 -0
  277. package/src/branded-types/checkpoint_number.ts +120 -0
  278. package/src/branded-types/index.ts +4 -0
  279. package/src/branded-types/index_within_checkpoint.ts +88 -0
  280. package/src/branded-types/slot.ts +5 -0
  281. package/src/buffer/buffer16.ts +5 -2
  282. package/src/buffer/buffer32.ts +38 -67
  283. package/src/buffer/index.ts +1 -0
  284. package/src/buffer/utils.ts +8 -0
  285. package/src/collection/array.ts +66 -0
  286. package/src/collection/index.ts +1 -0
  287. package/src/collection/lru_set.ts +115 -0
  288. package/src/config/env_var.ts +95 -24
  289. package/src/config/index.ts +148 -88
  290. package/src/config/network_config.ts +5 -0
  291. package/src/config/network_name.ts +4 -1
  292. package/src/config/parse-env.ts +4 -0
  293. package/src/crypto/aes128/index.ts +11 -2
  294. package/src/crypto/bls/bn254_keystore.ts +1 -24
  295. package/src/crypto/bls/index.ts +1 -1
  296. package/src/crypto/bn254/index.ts +50 -159
  297. package/src/crypto/ecdsa/signature.ts +2 -2
  298. package/src/crypto/grumpkin/index.ts +3 -1
  299. package/src/crypto/keys/index.ts +1 -1
  300. package/src/crypto/pedersen/pedersen.wasm.ts +1 -1
  301. package/src/crypto/poseidon/index.ts +43 -45
  302. package/src/crypto/random/randomness_singleton.ts +6 -4
  303. package/src/crypto/schnorr/index.ts +2 -1
  304. package/src/crypto/schnorr/signature.ts +2 -2
  305. package/src/crypto/secp256k1-signer/utils.ts +32 -0
  306. package/src/crypto/sha256/index.ts +1 -1
  307. package/src/crypto/sha512/index.ts +1 -1
  308. package/src/crypto/signature/index.ts +1 -1
  309. package/src/crypto/sync/pedersen/index.ts +1 -1
  310. package/src/crypto/sync/poseidon/index.ts +1 -10
  311. package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +5 -12
  312. package/src/curves/bls12/index.ts +2 -0
  313. package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +7 -7
  314. package/src/{fields/fields.ts → curves/bn254/field.ts} +61 -86
  315. package/src/curves/bn254/index.ts +2 -0
  316. package/src/curves/bn254/point.ts +170 -0
  317. package/src/curves/grumpkin/index.ts +11 -0
  318. package/src/{fields → curves/grumpkin}/point.ts +13 -10
  319. package/src/eth-address/index.ts +8 -6
  320. package/src/eth-signature/eth_signature.ts +7 -1
  321. package/src/fifo/fifo_frame_reader.ts +98 -0
  322. package/src/fifo/index.ts +1 -0
  323. package/src/iterator/filter.ts +11 -0
  324. package/src/iterator/index.ts +1 -0
  325. package/src/jest/setup.mjs +31 -1
  326. package/src/json-rpc/client/fetch.ts +4 -3
  327. package/src/json-rpc/client/safe_json_rpc_client.ts +2 -0
  328. package/src/json-rpc/client/undici.ts +23 -3
  329. package/src/json-rpc/server/api_key_auth.ts +63 -0
  330. package/src/json-rpc/server/index.ts +1 -0
  331. package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
  332. package/src/log/bigint-utils.ts +25 -0
  333. package/src/log/gcloud-logger-config.ts +5 -0
  334. package/src/log/libp2p_logger.ts +12 -5
  335. package/src/log/log-filters.ts +29 -11
  336. package/src/log/pino-logger-server.ts +25 -0
  337. package/src/log/pino-logger.ts +162 -40
  338. package/src/queue/base_memory_queue.ts +1 -1
  339. package/src/queue/batch_queue.ts +1 -0
  340. package/src/queue/semaphore.ts +5 -0
  341. package/src/retry/index.ts +48 -0
  342. package/src/schemas/api.ts +4 -1
  343. package/src/schemas/schemas.ts +14 -3
  344. package/src/schemas/types.ts +33 -0
  345. package/src/serialize/buffer_reader.ts +36 -9
  346. package/src/serialize/field_reader.ts +1 -1
  347. package/src/serialize/free_funcs.ts +1 -1
  348. package/src/serialize/serialize.ts +33 -1
  349. package/src/sleep/index.ts +16 -1
  350. package/src/string/index.ts +1 -1
  351. package/src/timer/date.ts +52 -0
  352. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  353. package/src/transport/index.ts +0 -1
  354. package/src/transport/transport_client.ts +2 -2
  355. package/src/trees/{balanced_merkle_tree.ts → balanced_merkle_tree_root.ts} +3 -20
  356. package/src/trees/hasher.ts +12 -0
  357. package/src/trees/index.ts +3 -3
  358. package/src/trees/indexed_merkle_tree.ts +1 -1
  359. package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
  360. package/src/trees/membership_witness.ts +9 -1
  361. package/src/trees/merkle_tree_calculator.ts +4 -10
  362. package/src/trees/sibling_path.ts +2 -3
  363. package/src/trees/unbalanced_merkle_tree_calculator.ts +1 -12
  364. package/src/trees/{unbalanced_merkle_tree.ts → unbalanced_merkle_tree_root.ts} +17 -64
  365. package/src/trees/unbalanced_tree_store.ts +57 -2
  366. package/src/types/index.ts +11 -1
  367. package/dest/crypto/bn254/bn254_utils.d.ts +0 -39
  368. package/dest/crypto/bn254/bn254_utils.d.ts.map +0 -1
  369. package/dest/crypto/bn254/bn254_utils.js +0 -56
  370. package/dest/crypto/index.d.ts +0 -17
  371. package/dest/crypto/index.d.ts.map +0 -1
  372. package/dest/crypto/index.js +0 -16
  373. package/dest/crypto/serialize.d.ts +0 -51
  374. package/dest/crypto/serialize.d.ts.map +0 -1
  375. package/dest/crypto/serialize.js +0 -68
  376. package/dest/fields/bls12_fields.d.ts.map +0 -1
  377. package/dest/fields/bls12_point.d.ts.map +0 -1
  378. package/dest/fields/coordinate.d.ts +0 -63
  379. package/dest/fields/coordinate.d.ts.map +0 -1
  380. package/dest/fields/coordinate.js +0 -96
  381. package/dest/fields/fields.d.ts.map +0 -1
  382. package/dest/fields/index.d.ts +0 -6
  383. package/dest/fields/index.d.ts.map +0 -1
  384. package/dest/fields/index.js +0 -5
  385. package/dest/fields/point.d.ts.map +0 -1
  386. package/dest/index.d.ts +0 -31
  387. package/dest/index.d.ts.map +0 -1
  388. package/dest/index.js +0 -31
  389. package/dest/json-rpc/server/telemetry.d.ts +0 -2
  390. package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
  391. package/dest/json-rpc/server/telemetry.js +0 -0
  392. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  393. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  394. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  395. package/dest/trees/balanced_merkle_tree.d.ts +0 -22
  396. package/dest/trees/balanced_merkle_tree.d.ts.map +0 -1
  397. package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
  398. package/src/crypto/bn254/bn254_utils.ts +0 -64
  399. package/src/crypto/index.ts +0 -16
  400. package/src/crypto/serialize.ts +0 -85
  401. package/src/fields/coordinate.ts +0 -104
  402. package/src/fields/index.ts +0 -5
  403. package/src/index.ts +0 -31
  404. package/src/json-rpc/server/telemetry.ts +0 -0
  405. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
@@ -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
+ }
@@ -59,10 +59,19 @@ export class Aes128 {
59
59
  * @param iv - AES initialization vector.
60
60
  * @param key - Key to decrypt with.
61
61
  * @returns Decrypted data.
62
+ * @throws If the decrypted buffer has invalid PKCS#7 padding.
62
63
  */
63
64
  public async decryptBufferCBC(data: Uint8Array, iv: Uint8Array, key: Uint8Array) {
64
65
  const paddedBuffer = await this.decryptBufferCBCKeepPadding(data, iv, key);
65
- const paddingToRemove = paddedBuffer[paddedBuffer.length - 1];
66
- return paddedBuffer.subarray(0, paddedBuffer.length - paddingToRemove);
66
+ const paddingLen = paddedBuffer[paddedBuffer.length - 1];
67
+ if (paddingLen === 0 || paddingLen > 16) {
68
+ throw new Error(`Invalid PKCS#7 padding length: ${paddingLen}`);
69
+ }
70
+ for (let i = paddedBuffer.length - paddingLen; i < paddedBuffer.length; i++) {
71
+ if (paddedBuffer[i] !== paddingLen) {
72
+ throw new Error('Invalid PKCS#7 padding');
73
+ }
74
+ }
75
+ return paddedBuffer.subarray(0, paddedBuffer.length - paddingLen);
67
76
  }
68
77
  }
@@ -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';
@@ -262,26 +262,3 @@ export function decryptBn254KeystoreFromObject(keystore: Bn254Keystore, password
262
262
  throw new Bn254KeystoreError(`Failed to decrypt keystore: ${String(error)}`, error as Error);
263
263
  }
264
264
  }
265
-
266
- /**
267
- * Validates that a decrypted private key matches the public key in the keystore.
268
- *
269
- * @param privateKeyHex - Decrypted private key (0x-prefixed)
270
- * @param expectedPubkey - Expected public key from keystore
271
- * @param computePublicKey - Function to compute public key from private key
272
- * @returns true if keys match, false otherwise
273
- */
274
- export function verifyBn254Keypair(
275
- privateKeyHex: string,
276
- expectedPubkey: string,
277
- computePublicKey: (privateKey: string) => string,
278
- ): boolean {
279
- try {
280
- const computedPubkey = computePublicKey(privateKeyHex);
281
- const normalizedExpected = expectedPubkey.toLowerCase().replace(/^0x/i, '');
282
- const normalizedComputed = computedPubkey.toLowerCase().replace(/^0x/i, '');
283
- return normalizedExpected === normalizedComputed;
284
- } catch {
285
- return false;
286
- }
287
- }
@@ -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';
@@ -1,173 +1,64 @@
1
- import {
2
- BN254_G1_GENERATOR,
3
- BN254_G2_GENERATOR,
4
- BarretenbergSync,
5
- type Bn254G1Point as BbApiBn254G1Point,
6
- type Bn254G2Point as BbApiBn254G2Point,
7
- } from '@aztec/bb.js';
8
-
9
- import { Fq, Fr } from '../../fields/fields.js';
1
+ import { Fr } from '../../curves/bn254/field.js';
2
+ import { Bn254G1Point, Bn254G2Point } from '../../curves/bn254/point.js';
10
3
 
11
4
  /**
12
- * BN254 G1 point using foundation field classes.
13
- * Represents a point on the BN254 elliptic curve in affine coordinates.
5
+ * BN254 utility functions for point operations.
6
+ * Provides compression, decompression, and public key generation for the BN254 curve.
7
+ * Uses the bb.js Barretenberg backend for point operations.
14
8
  */
15
- export class Bn254G1Point {
16
- constructor(
17
- public readonly x: Fq,
18
- public readonly y: Fq,
19
- ) {}
20
-
21
- private toBbApiPoint(): BbApiBn254G1Point {
22
- return {
23
- x: this.x.toBuffer(),
24
- y: this.y.toBuffer(),
25
- };
26
- }
27
-
28
- private static fromBbApiPoint(point: BbApiBn254G1Point): Bn254G1Point {
29
- return new Bn254G1Point(Fq.fromBuffer(Buffer.from(point.x)), Fq.fromBuffer(Buffer.from(point.y)));
30
- }
31
-
32
- async isOnCurve(): Promise<boolean> {
33
- await BarretenbergSync.initSingleton();
34
- const api = BarretenbergSync.getSingleton();
35
-
36
- const apiPoint = this.toBbApiPoint();
37
- const response = api.bn254G1IsOnCurve({ point: apiPoint });
38
- return response.isOnCurve;
39
- }
40
-
41
- /**
42
- * Get the generator point for BN254 G1, or perform scalar multiplication.
43
- * When called without arguments, returns the base generator point.
44
- * When called with a scalar, returns scalar * generator (useful for public key derivation).
45
- */
46
- static async generator(scalar?: Fr): Promise<Bn254G1Point> {
47
- if (!scalar) {
48
- return new Bn254G1Point(
49
- Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.x)),
50
- Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.y)),
51
- );
52
- }
53
-
54
- await BarretenbergSync.initSingleton();
55
- const api = BarretenbergSync.getSingleton();
56
-
57
- const response = api.bn254G1Mul({
58
- point: BN254_G1_GENERATOR,
59
- scalar: scalar.toBuffer(),
60
- });
61
-
62
- return Bn254G1Point.fromBbApiPoint(response.point);
63
- }
64
-
65
- /**
66
- * Decompress a BN254 G1 point from compressed form (32 bytes).
67
- * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
68
- * in the most significant bit.
69
- */
70
- static async fromCompressed(compressed: Buffer): Promise<Bn254G1Point> {
71
- if (compressed.length !== 32) {
72
- throw new Error('Invalid compressed point length');
73
- }
74
- await BarretenbergSync.initSingleton();
75
- const api = BarretenbergSync.getSingleton();
76
-
77
- const response = api.bn254G1FromCompressed({
78
- compressed: new Uint8Array(compressed),
79
- });
80
-
81
- return Bn254G1Point.fromBbApiPoint(response.point);
82
- }
83
9
 
84
- /**
85
- * Compress this BN254 G1 point to 32 bytes.
86
- * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
87
- * in the most significant bit (bit 255).
88
- */
89
- compress(): Buffer {
90
- const xBytes = this.x.toBuffer();
91
- // Get the least significant bit of y to determine the sign
92
- const yLsb = this.y.toBigInt() & 1n;
93
- // If y is odd, set the most significant bit (bit 255) of the output
94
- if (yLsb === 1n) {
95
- xBytes[0] |= 0x80;
96
- }
97
- return xBytes;
98
- }
10
+ /**
11
+ * Generate a compressed BN254 G1 public key from a private key.
12
+ *
13
+ * @param privateKeyHex - Private key as 0x-prefixed hex string
14
+ * @returns Compressed G1 point (32 bytes with sign bit in MSB)
15
+ */
16
+ export async function computeBn254G1PublicKeyCompressed(privateKeyHex: string): Promise<string> {
17
+ const sk = BigInt(privateKeyHex);
18
+ const skReduced = sk % Fr.MODULUS;
99
19
 
100
- equals(other: Bn254G1Point): boolean {
101
- return this.x.equals(other.x) && this.y.equals(other.y);
102
- }
20
+ // Generate G1 point on BN254 curve using bb.js
21
+ const scalar = Fr.fromString(skReduced.toString());
22
+ const pk1 = await Bn254G1Point.generator(scalar);
103
23
 
104
- toString(): string {
105
- return `Bn254G1Point(x: ${this.x.toString()}, y: ${this.y.toString()})`;
106
- }
24
+ // Compress the point using the primitive method
25
+ return '0x' + pk1.compress().toString('hex');
107
26
  }
108
27
 
109
28
  /**
110
- * BN254 G2 point using foundation field classes.
111
- * Represents a point on the BN254 G2 curve (twist curve) in affine coordinates.
112
- * G2 points use extension field coordinates (Fq2).
29
+ * Generate uncompressed BN254 G1 public key from a private key.
30
+ *
31
+ * @param privateKeyHex - Private key as 0x-prefixed hex string
32
+ * @returns G1 point in affine coordinates
113
33
  */
114
- export class Bn254G2Point {
115
- constructor(
116
- public readonly x: [Fq, Fq],
117
- public readonly y: [Fq, Fq],
118
- ) {}
119
-
120
- private toBbApiPoint(): BbApiBn254G2Point {
121
- return {
122
- x: [this.x[0].toBuffer(), this.x[1].toBuffer()],
123
- y: [this.y[0].toBuffer(), this.y[1].toBuffer()],
124
- };
125
- }
126
-
127
- private static fromBbApiPoint(point: BbApiBn254G2Point): Bn254G2Point {
128
- return new Bn254G2Point(
129
- [Fq.fromBuffer(Buffer.from(point.x[0])), Fq.fromBuffer(Buffer.from(point.x[1]))],
130
- [Fq.fromBuffer(Buffer.from(point.y[0])), Fq.fromBuffer(Buffer.from(point.y[1]))],
131
- );
132
- }
133
-
134
- /**
135
- * Get the generator point for BN254 G2, or perform scalar multiplication.
136
- * When called without arguments, returns the base generator point.
137
- * When called with a scalar, returns scalar * generator.
138
- */
139
- static async generator(scalar?: Fr): Promise<Bn254G2Point> {
140
- if (!scalar) {
141
- return new Bn254G2Point(
142
- [Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[0])), Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[1]))],
143
- [Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[0])), Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[1]))],
144
- );
145
- }
146
-
147
- await BarretenbergSync.initSingleton();
148
- const api = BarretenbergSync.getSingleton();
34
+ export async function computeBn254G1PublicKey(privateKeyHex: string): Promise<{ x: bigint; y: bigint }> {
35
+ const sk = BigInt(privateKeyHex);
36
+ const skReduced = sk % Fr.MODULUS;
149
37
 
150
- const response = api.bn254G2Mul({
151
- point: BN254_G2_GENERATOR as BbApiBn254G2Point,
152
- scalar: scalar.toBuffer(),
153
- });
38
+ const scalar = Fr.fromString(skReduced.toString());
39
+ const pk1 = await Bn254G1Point.generator(scalar);
154
40
 
155
- return Bn254G2Point.fromBbApiPoint(response.point);
156
- }
157
-
158
- equals(other: Bn254G2Point): boolean {
159
- return (
160
- this.x[0].equals(other.x[0]) &&
161
- this.x[1].equals(other.x[1]) &&
162
- this.y[0].equals(other.y[0]) &&
163
- this.y[1].equals(other.y[1])
164
- );
165
- }
166
-
167
- toString(): string {
168
- return `Bn254G2Point(x: (${this.x[0].toString()}, ${this.x[1].toString()}), y: (${this.y[0].toString()}, ${this.y[1].toString()}))`;
169
- }
41
+ return { x: pk1.x.toBigInt(), y: pk1.y.toBigInt() };
170
42
  }
171
43
 
172
- // Re-export BN254 point utility functions
173
- export { computeBn254G1PublicKeyCompressed, computeBn254G1PublicKey, computeBn254G2PublicKey } from './bn254_utils.js';
44
+ /**
45
+ * Generate BN254 G2 public key from a private key.
46
+ *
47
+ * @param privateKeyHex - Private key as 0x-prefixed hex string
48
+ * @returns G2 point in affine coordinates
49
+ */
50
+ export async function computeBn254G2PublicKey(privateKeyHex: string): Promise<{
51
+ x: { c0: bigint; c1: bigint };
52
+ y: { c0: bigint; c1: bigint };
53
+ }> {
54
+ const sk = BigInt(privateKeyHex);
55
+ const skReduced = sk % Fr.MODULUS;
56
+
57
+ const scalar = Fr.fromString(skReduced.toString());
58
+ const pk2 = await Bn254G2Point.generator(scalar);
59
+
60
+ return {
61
+ x: { c0: pk2.x[0].toBigInt(), c1: pk2.x[1].toBigInt() },
62
+ y: { c0: pk2.y[0].toBigInt(), c1: pk2.y[1].toBigInt() },
63
+ };
64
+ }
@@ -1,6 +1,6 @@
1
1
  import { toBufferBE } from '@aztec/foundation/bigint-buffer';
2
- import { randomBytes } from '@aztec/foundation/crypto';
3
- import { Fr } from '@aztec/foundation/fields';
2
+ import { randomBytes } from '@aztec/foundation/crypto/random';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { mapTuple } from '@aztec/foundation/serialize';
5
5
 
6
6
  import type { Signature } from '../signature/index.js';
@@ -1,5 +1,7 @@
1
1
  import { BarretenbergSync } from '@aztec/bb.js';
2
- import { Fr, type GrumpkinScalar, Point } from '@aztec/foundation/fields';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
4
+ import { Point } from '@aztec/foundation/curves/grumpkin';
3
5
 
4
6
  /**
5
7
  * Grumpkin elliptic curve operations.
@@ -1,6 +1,6 @@
1
1
  import { BarretenbergSync } from '@aztec/bb.js';
2
2
 
3
- import { Fr } from '../../fields/fields.js';
3
+ import { Fr } from '../../curves/bn254/field.js';
4
4
 
5
5
  export async function vkAsFieldsMegaHonk(input: Buffer): Promise<Fr[]> {
6
6
  await BarretenbergSync.initSingleton();
@@ -1,6 +1,6 @@
1
1
  import { BarretenbergSync } from '@aztec/bb.js';
2
2
 
3
- import { Fr } from '../../fields/fields.js';
3
+ import { Fr } from '../../curves/bn254/field.js';
4
4
  import { type Fieldable, serializeToFields } from '../../serialize/serialize.js';
5
5
 
6
6
  /**
@@ -1,21 +1,35 @@
1
- import { BarretenbergSync } from '@aztec/bb.js';
1
+ import { Barretenberg, BarretenbergSync } from '@aztec/bb.js';
2
2
 
3
- import { Fr } from '../../fields/fields.js';
3
+ import { Fr } from '../../curves/bn254/field.js';
4
4
  import { type Fieldable, serializeToFields } from '../../serialize/serialize.js';
5
5
 
6
+ const IS_BROWSER = typeof self !== 'undefined';
7
+
8
+ async function poseidon2HashFields(inputFields: Fr[]): Promise<Fr> {
9
+ if (IS_BROWSER) {
10
+ await BarretenbergSync.initSingleton();
11
+ const api = BarretenbergSync.getSingleton();
12
+ const response = api.poseidon2Hash({
13
+ inputs: inputFields.map(i => i.toBuffer()),
14
+ });
15
+ return Fr.fromBuffer(Buffer.from(response.hash));
16
+ } else {
17
+ await Barretenberg.initSingleton();
18
+ const api = Barretenberg.getSingleton();
19
+ const response = await api.poseidon2Hash({
20
+ inputs: inputFields.map(i => i.toBuffer()),
21
+ });
22
+ return Fr.fromBuffer(Buffer.from(response.hash));
23
+ }
24
+ }
25
+
6
26
  /**
7
27
  * Create a poseidon hash (field) from an array of input fields.
8
28
  * @param input - The input fields to hash.
9
29
  * @returns The poseidon hash.
10
30
  */
11
- export async function poseidon2Hash(input: Fieldable[]): Promise<Fr> {
12
- const inputFields = serializeToFields(input);
13
- await BarretenbergSync.initSingleton();
14
- const api = BarretenbergSync.getSingleton();
15
- const response = api.poseidon2Hash({
16
- inputs: inputFields.map(i => i.toBuffer()),
17
- });
18
- return Fr.fromBuffer(Buffer.from(response.hash));
31
+ export function poseidon2Hash(input: Fieldable[]): Promise<Fr> {
32
+ return poseidon2HashFields(serializeToFields(input));
19
33
  }
20
34
 
21
35
  /**
@@ -24,25 +38,10 @@ export async function poseidon2Hash(input: Fieldable[]): Promise<Fr> {
24
38
  * @param separator - The domain separator.
25
39
  * @returns The poseidon hash.
26
40
  */
27
- export async function poseidon2HashWithSeparator(input: Fieldable[], separator: number): Promise<Fr> {
41
+ export function poseidon2HashWithSeparator(input: Fieldable[], separator: number): Promise<Fr> {
28
42
  const inputFields = serializeToFields(input);
29
43
  inputFields.unshift(new Fr(separator));
30
- await BarretenbergSync.initSingleton();
31
- const api = BarretenbergSync.getSingleton();
32
- const response = api.poseidon2Hash({
33
- inputs: inputFields.map(i => i.toBuffer()),
34
- });
35
- return Fr.fromBuffer(Buffer.from(response.hash));
36
- }
37
-
38
- export async function poseidon2HashAccumulate(input: Fieldable[]): Promise<Fr> {
39
- const inputFields = serializeToFields(input);
40
- await BarretenbergSync.initSingleton();
41
- const api = BarretenbergSync.getSingleton();
42
- const response = api.poseidon2HashAccumulate({
43
- inputs: inputFields.map(i => i.toBuffer()),
44
- });
45
- return Fr.fromBuffer(Buffer.from(response.hash));
44
+ return poseidon2HashFields(inputFields);
46
45
  }
47
46
 
48
47
  /**
@@ -52,19 +51,24 @@ export async function poseidon2HashAccumulate(input: Fieldable[]): Promise<Fr> {
52
51
  */
53
52
  export async function poseidon2Permutation(input: Fieldable[]): Promise<Fr[]> {
54
53
  const inputFields = serializeToFields(input);
55
- // We'd like this assertion but it's not possible to use it in the browser.
56
- // assert(input.length === 4, 'Input state must be of size 4');
57
- await BarretenbergSync.initSingleton();
58
- const api = BarretenbergSync.getSingleton();
59
- const response = api.poseidon2Permutation({
60
- inputs: inputFields.map(i => i.toBuffer()),
61
- });
62
- // We'd like this assertion but it's not possible to use it in the browser.
63
- // assert(response.outputs.length === 4, 'Output state must be of size 4');
64
- return response.outputs.map(o => Fr.fromBuffer(Buffer.from(o)));
54
+ if (IS_BROWSER) {
55
+ await BarretenbergSync.initSingleton();
56
+ const api = BarretenbergSync.getSingleton();
57
+ const response = api.poseidon2Permutation({
58
+ inputs: inputFields.map(i => i.toBuffer()),
59
+ });
60
+ return response.outputs.map(o => Fr.fromBuffer(Buffer.from(o)));
61
+ } else {
62
+ await Barretenberg.initSingleton();
63
+ const api = Barretenberg.getSingleton();
64
+ const response = await api.poseidon2Permutation({
65
+ inputs: inputFields.map(i => i.toBuffer()),
66
+ });
67
+ return response.outputs.map(o => Fr.fromBuffer(Buffer.from(o)));
68
+ }
65
69
  }
66
70
 
67
- export async function poseidon2HashBytes(input: Buffer): Promise<Fr> {
71
+ export function poseidon2HashBytes(input: Buffer): Promise<Fr> {
68
72
  const inputFields = [];
69
73
  for (let i = 0; i < input.length; i += 31) {
70
74
  const fieldBytes = Buffer.alloc(32, 0);
@@ -75,11 +79,5 @@ export async function poseidon2HashBytes(input: Buffer): Promise<Fr> {
75
79
  inputFields.push(Fr.fromBuffer(fieldBytes));
76
80
  }
77
81
 
78
- await BarretenbergSync.initSingleton();
79
- const api = BarretenbergSync.getSingleton();
80
- const response = api.poseidon2Hash({
81
- inputs: inputFields.map(i => i.toBuffer()),
82
- });
83
-
84
- return Fr.fromBuffer(Buffer.from(response.hash));
82
+ return poseidon2HashFields(inputFields);
85
83
  }
@@ -1,4 +1,4 @@
1
- import { createLogger } from '../../log/pino-logger.js';
1
+ import { type Logger, type LoggerBindings, createLogger } from '../../log/pino-logger.js';
2
2
 
3
3
  /**
4
4
  * A number generator which is used as a source of randomness in the system. If the SEED env variable is set, the
@@ -12,11 +12,13 @@ export class RandomnessSingleton {
12
12
  private static instance: RandomnessSingleton;
13
13
 
14
14
  private counter = 0;
15
+ private log: Logger;
15
16
 
16
17
  private constructor(
17
18
  private readonly seed?: number,
18
- private readonly log = createLogger('foundation:randomness_singleton'),
19
+ bindings?: LoggerBindings,
19
20
  ) {
21
+ this.log = createLogger('foundation:randomness_singleton', bindings);
20
22
  if (seed !== undefined) {
21
23
  this.log.debug(`Using pseudo-randomness with seed: ${seed}`);
22
24
  this.counter = seed;
@@ -25,10 +27,10 @@ export class RandomnessSingleton {
25
27
  }
26
28
  }
27
29
 
28
- public static getInstance(): RandomnessSingleton {
30
+ public static getInstance(bindings?: LoggerBindings): RandomnessSingleton {
29
31
  if (!RandomnessSingleton.instance) {
30
32
  const seed = process.env.SEED ? Number(process.env.SEED) : undefined;
31
- RandomnessSingleton.instance = new RandomnessSingleton(seed);
33
+ RandomnessSingleton.instance = new RandomnessSingleton(seed, bindings);
32
34
  }
33
35
 
34
36
  return RandomnessSingleton.instance;
@@ -1,5 +1,6 @@
1
1
  import { BarretenbergSync } from '@aztec/bb.js';
2
- import { type GrumpkinScalar, Point } from '@aztec/foundation/fields';
2
+ import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
3
+ import { Point } from '@aztec/foundation/curves/grumpkin';
3
4
 
4
5
  import { SchnorrSignature } from './signature.js';
5
6
 
@@ -1,5 +1,5 @@
1
- import { randomBytes } from '@aztec/foundation/crypto';
2
- import { Fr } from '@aztec/foundation/fields';
1
+ import { randomBytes } from '@aztec/foundation/crypto/random';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
4
4
 
5
5
  import type { Signature } from '../signature/index.js';
@@ -210,3 +210,35 @@ export function recoverPublicKey(hash: Buffer32, signature: Signature, opts: Rec
210
210
  const publicKey = sig.recoverPublicKey(hash.buffer).toHex(false);
211
211
  return Buffer.from(publicKey, 'hex');
212
212
  }
213
+
214
+ /** Arbitrary hash used for testing signature recoverability. */
215
+ const PROBE_HASH = Buffer32.fromBuffer(keccak256(Buffer.from('signature-recoverability-probe')));
216
+
217
+ /**
218
+ * Generates a random valid ECDSA signature that is recoverable to some address.
219
+ * Since Signature.random() produces real signatures via secp256k1 signing, the result is always
220
+ * recoverable, but we verify defensively by checking tryRecoverAddress.
221
+ */
222
+ export function generateRecoverableSignature(): Signature {
223
+ for (let i = 0; i < 100; i++) {
224
+ const sig = Signature.random();
225
+ if (tryRecoverAddress(PROBE_HASH, sig) !== undefined) {
226
+ return sig;
227
+ }
228
+ }
229
+ throw new Secp256k1Error('Failed to generate a recoverable signature after 100 attempts');
230
+ }
231
+
232
+ /**
233
+ * Generates a random signature where ECDSA address recovery fails.
234
+ * Uses random r/s values (not from real signing) so that r is unlikely to be a valid secp256k1 x-coordinate.
235
+ */
236
+ export function generateUnrecoverableSignature(): Signature {
237
+ for (let i = 0; i < 100; i++) {
238
+ const sig = new Signature(Buffer32.random(), Buffer32.random(), 27);
239
+ if (tryRecoverAddress(PROBE_HASH, sig) === undefined) {
240
+ return sig;
241
+ }
242
+ }
243
+ throw new Secp256k1Error('Failed to generate an unrecoverable signature after 100 attempts');
244
+ }
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable camelcase */
2
2
  import { default as hash } from 'hash.js';
3
3
 
4
- import { Fr } from '../../fields/fields.js';
4
+ import { Fr } from '../../curves/bn254/field.js';
5
5
  import { truncateAndPad } from '../../serialize/free_funcs.js';
6
6
  import { type Bufferable, serializeToBuffer } from '../../serialize/serialize.js';
7
7
  import type { Hasher } from '../../trees/hasher.js';
@@ -1,6 +1,6 @@
1
1
  import { default as hash } from 'hash.js';
2
2
 
3
- import { GrumpkinScalar } from '../../fields/fields.js';
3
+ import { GrumpkinScalar } from '../../curves/grumpkin/index.js';
4
4
  import { type Bufferable, serializeToBuffer } from '../../serialize/serialize.js';
5
5
 
6
6
  export const sha512 = (data: Buffer) => Buffer.from(hash.sha512().update(data).digest());
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
 
3
3
  /**
4
4
  * Interface to represent a signature.
@@ -1,6 +1,6 @@
1
1
  import { BarretenbergSync } from '@aztec/bb.js';
2
2
 
3
- import { Fr } from '../../../fields/fields.js';
3
+ import { Fr } from '../../../curves/bn254/field.js';
4
4
  import { type Fieldable, serializeToFields } from '../../../serialize/serialize.js';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import { BarretenbergSync } from '@aztec/bb.js';
2
2
 
3
- import { Fr } from '../../../fields/fields.js';
3
+ import { Fr } from '../../../curves/bn254/field.js';
4
4
  import { type Fieldable, serializeToFields } from '../../../serialize/serialize.js';
5
5
 
6
6
  /**
@@ -34,15 +34,6 @@ export function poseidon2HashWithSeparator(input: Fieldable[], separator: number
34
34
  return Fr.fromBuffer(Buffer.from(response.hash));
35
35
  }
36
36
 
37
- export function poseidon2HashAccumulate(input: Fieldable[]): Fr {
38
- const inputFields = serializeToFields(input);
39
- const api = BarretenbergSync.getSingleton();
40
- const response = api.poseidon2HashAccumulate({
41
- inputs: inputFields.map(i => i.toBuffer()),
42
- });
43
- return Fr.fromBuffer(Buffer.from(response.hash));
44
- }
45
-
46
37
  /**
47
38
  * Runs a Poseidon2 permutation.
48
39
  * @param input the input state. Expected to be of size 4.