@aztec/foundation 0.0.0-test.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/README.md +1 -0
  2. package/dest/array/array.d.ts +71 -0
  3. package/dest/array/array.d.ts.map +1 -0
  4. package/dest/array/array.js +100 -0
  5. package/dest/array/index.d.ts +2 -0
  6. package/dest/array/index.d.ts.map +1 -0
  7. package/dest/array/index.js +1 -0
  8. package/dest/async-map/index.d.ts +13 -0
  9. package/dest/async-map/index.d.ts.map +1 -0
  10. package/dest/async-map/index.js +17 -0
  11. package/dest/async-pool/index.d.ts +3 -0
  12. package/dest/async-pool/index.d.ts.map +1 -0
  13. package/dest/async-pool/index.js +47 -0
  14. package/dest/bigint-buffer/index.d.ts +42 -0
  15. package/dest/bigint-buffer/index.d.ts.map +1 -0
  16. package/dest/bigint-buffer/index.js +76 -0
  17. package/dest/buffer/buffer32.d.ts +91 -0
  18. package/dest/buffer/buffer32.d.ts.map +1 -0
  19. package/dest/buffer/buffer32.js +115 -0
  20. package/dest/buffer/index.d.ts +2 -0
  21. package/dest/buffer/index.d.ts.map +1 -0
  22. package/dest/buffer/index.js +1 -0
  23. package/dest/collection/array.d.ts +101 -0
  24. package/dest/collection/array.d.ts.map +1 -0
  25. package/dest/collection/array.js +164 -0
  26. package/dest/collection/index.d.ts +3 -0
  27. package/dest/collection/index.d.ts.map +1 -0
  28. package/dest/collection/index.js +2 -0
  29. package/dest/collection/object.d.ts +14 -0
  30. package/dest/collection/object.d.ts.map +1 -0
  31. package/dest/collection/object.js +32 -0
  32. package/dest/committable/committable.d.ts +28 -0
  33. package/dest/committable/committable.d.ts.map +1 -0
  34. package/dest/committable/committable.js +36 -0
  35. package/dest/committable/index.d.ts +2 -0
  36. package/dest/committable/index.d.ts.map +1 -0
  37. package/dest/committable/index.js +1 -0
  38. package/dest/config/env_var.d.ts +2 -0
  39. package/dest/config/env_var.d.ts.map +1 -0
  40. package/dest/config/env_var.js +1 -0
  41. package/dest/config/index.d.ts +66 -0
  42. package/dest/config/index.d.ts.map +1 -0
  43. package/dest/config/index.js +125 -0
  44. package/dest/crypto/aes128/index.d.ts +34 -0
  45. package/dest/crypto/aes128/index.d.ts.map +1 -0
  46. package/dest/crypto/aes128/index.js +49 -0
  47. package/dest/crypto/ecdsa/index.d.ts +39 -0
  48. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  49. package/dest/crypto/ecdsa/index.js +88 -0
  50. package/dest/crypto/ecdsa/signature.d.ts +71 -0
  51. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  52. package/dest/crypto/ecdsa/signature.js +92 -0
  53. package/dest/crypto/grumpkin/index.d.ts +47 -0
  54. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  55. package/dest/crypto/grumpkin/index.js +154 -0
  56. package/dest/crypto/index.d.ts +15 -0
  57. package/dest/crypto/index.d.ts.map +1 -0
  58. package/dest/crypto/index.js +14 -0
  59. package/dest/crypto/keccak/index.d.ts +28 -0
  60. package/dest/crypto/keccak/index.d.ts.map +1 -0
  61. package/dest/crypto/keccak/index.js +248 -0
  62. package/dest/crypto/keys/index.d.ts +5 -0
  63. package/dest/crypto/keys/index.d.ts.map +1 -0
  64. package/dest/crypto/keys/index.js +7 -0
  65. package/dest/crypto/pedersen/index.d.ts +2 -0
  66. package/dest/crypto/pedersen/index.d.ts.map +1 -0
  67. package/dest/crypto/pedersen/index.js +1 -0
  68. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +13 -0
  69. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
  70. package/dest/crypto/pedersen/pedersen.elliptic.js +582 -0
  71. package/dest/crypto/pedersen/pedersen.noble.d.ts +11 -0
  72. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
  73. package/dest/crypto/pedersen/pedersen.noble.js +558 -0
  74. package/dest/crypto/pedersen/pedersen.wasm.d.ts +21 -0
  75. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
  76. package/dest/crypto/pedersen/pedersen.wasm.js +41 -0
  77. package/dest/crypto/poseidon/index.d.ts +26 -0
  78. package/dest/crypto/poseidon/index.d.ts.map +1 -0
  79. package/dest/crypto/poseidon/index.js +58 -0
  80. package/dest/crypto/random/index.d.ts +25 -0
  81. package/dest/crypto/random/index.d.ts.map +1 -0
  82. package/dest/crypto/random/index.js +70 -0
  83. package/dest/crypto/random/randomness_singleton.d.ts +25 -0
  84. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
  85. package/dest/crypto/random/randomness_singleton.js +55 -0
  86. package/dest/crypto/schnorr/index.d.ts +30 -0
  87. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  88. package/dest/crypto/schnorr/index.js +68 -0
  89. package/dest/crypto/schnorr/signature.d.ts +70 -0
  90. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  91. package/dest/crypto/schnorr/signature.js +93 -0
  92. package/dest/crypto/secp256k1/index.d.ts +32 -0
  93. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  94. package/dest/crypto/secp256k1/index.js +116 -0
  95. package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
  96. package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
  97. package/dest/crypto/secp256k1-signer/index.js +2 -0
  98. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
  99. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
  100. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
  101. package/dest/crypto/secp256k1-signer/utils.d.ts +40 -0
  102. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
  103. package/dest/crypto/secp256k1-signer/utils.js +84 -0
  104. package/dest/crypto/serialize.d.ts +53 -0
  105. package/dest/crypto/serialize.d.ts.map +1 -0
  106. package/dest/crypto/serialize.js +68 -0
  107. package/dest/crypto/sha256/index.d.ts +20 -0
  108. package/dest/crypto/sha256/index.d.ts.map +1 -0
  109. package/dest/crypto/sha256/index.js +166 -0
  110. package/dest/crypto/sha512/index.d.ts +11 -0
  111. package/dest/crypto/sha512/index.d.ts.map +1 -0
  112. package/dest/crypto/sha512/index.js +12 -0
  113. package/dest/crypto/signature/index.d.ts +19 -0
  114. package/dest/crypto/signature/index.d.ts.map +1 -0
  115. package/dest/crypto/signature/index.js +3 -0
  116. package/dest/crypto/sync/index.d.ts +3 -0
  117. package/dest/crypto/sync/index.d.ts.map +1 -0
  118. package/dest/crypto/sync/index.js +4 -0
  119. package/dest/crypto/sync/pedersen/index.d.ts +21 -0
  120. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  121. package/dest/crypto/sync/pedersen/index.js +38 -0
  122. package/dest/crypto/sync/poseidon/index.d.ts +26 -0
  123. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  124. package/dest/crypto/sync/poseidon/index.js +53 -0
  125. package/dest/decorators/index.d.ts +2 -0
  126. package/dest/decorators/index.d.ts.map +1 -0
  127. package/dest/decorators/index.js +1 -0
  128. package/dest/decorators/memoize.d.ts +2 -0
  129. package/dest/decorators/memoize.d.ts.map +1 -0
  130. package/dest/decorators/memoize.js +11 -0
  131. package/dest/error/index.d.ts +21 -0
  132. package/dest/error/index.d.ts.map +1 -0
  133. package/dest/error/index.js +17 -0
  134. package/dest/eth-address/index.d.ts +134 -0
  135. package/dest/eth-address/index.d.ts.map +1 -0
  136. package/dest/eth-address/index.js +198 -0
  137. package/dest/eth-signature/eth_signature.d.ts +62 -0
  138. package/dest/eth-signature/eth_signature.d.ts.map +1 -0
  139. package/dest/eth-signature/eth_signature.js +91 -0
  140. package/dest/eth-signature/index.d.ts +2 -0
  141. package/dest/eth-signature/index.d.ts.map +1 -0
  142. package/dest/eth-signature/index.js +1 -0
  143. package/dest/fields/coordinate.d.ts +68 -0
  144. package/dest/fields/coordinate.d.ts.map +1 -0
  145. package/dest/fields/coordinate.js +96 -0
  146. package/dest/fields/fields.d.ts +176 -0
  147. package/dest/fields/fields.d.ts.map +1 -0
  148. package/dest/fields/fields.js +383 -0
  149. package/dest/fields/index.d.ts +4 -0
  150. package/dest/fields/index.d.ts.map +1 -0
  151. package/dest/fields/index.js +3 -0
  152. package/dest/fields/point.d.ts +175 -0
  153. package/dest/fields/point.d.ts.map +1 -0
  154. package/dest/fields/point.js +260 -0
  155. package/dest/fs/index.d.ts +2 -0
  156. package/dest/fs/index.d.ts.map +1 -0
  157. package/dest/fs/index.js +1 -0
  158. package/dest/fs/run_in_dir.d.ts +2 -0
  159. package/dest/fs/run_in_dir.d.ts.map +1 -0
  160. package/dest/fs/run_in_dir.js +31 -0
  161. package/dest/index.d.ts +31 -0
  162. package/dest/index.d.ts.map +1 -0
  163. package/dest/index.js +31 -0
  164. package/dest/iterable/all.d.ts +9 -0
  165. package/dest/iterable/all.d.ts.map +1 -0
  166. package/dest/iterable/all.js +18 -0
  167. package/dest/iterable/filter.d.ts +10 -0
  168. package/dest/iterable/filter.d.ts.map +1 -0
  169. package/dest/iterable/filter.js +48 -0
  170. package/dest/iterable/index.d.ts +8 -0
  171. package/dest/iterable/index.d.ts.map +1 -0
  172. package/dest/iterable/index.js +7 -0
  173. package/dest/iterable/isAsyncIt.d.ts +7 -0
  174. package/dest/iterable/isAsyncIt.d.ts.map +1 -0
  175. package/dest/iterable/isAsyncIt.js +7 -0
  176. package/dest/iterable/map.d.ts +12 -0
  177. package/dest/iterable/map.d.ts.map +1 -0
  178. package/dest/iterable/map.js +36 -0
  179. package/dest/iterable/peek.d.ts +19 -0
  180. package/dest/iterable/peek.d.ts.map +1 -0
  181. package/dest/iterable/peek.js +33 -0
  182. package/dest/iterable/sort.d.ts +14 -0
  183. package/dest/iterable/sort.d.ts.map +1 -0
  184. package/dest/iterable/sort.js +15 -0
  185. package/dest/iterable/take.d.ts +10 -0
  186. package/dest/iterable/take.d.ts.map +1 -0
  187. package/dest/iterable/take.js +32 -0
  188. package/dest/iterable/toArray.d.ts +2 -0
  189. package/dest/iterable/toArray.d.ts.map +1 -0
  190. package/dest/iterable/toArray.js +7 -0
  191. package/dest/jest/setup.js +7 -0
  192. package/dest/json-rpc/client/fetch.d.ts +32 -0
  193. package/dest/json-rpc/client/fetch.d.ts.map +1 -0
  194. package/dest/json-rpc/client/fetch.js +77 -0
  195. package/dest/json-rpc/client/index.d.ts +3 -0
  196. package/dest/json-rpc/client/index.d.ts.map +1 -0
  197. package/dest/json-rpc/client/index.js +2 -0
  198. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +26 -0
  199. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
  200. package/dest/json-rpc/client/safe_json_rpc_client.js +57 -0
  201. package/dest/json-rpc/client/undici.d.ts +5 -0
  202. package/dest/json-rpc/client/undici.d.ts.map +1 -0
  203. package/dest/json-rpc/client/undici.js +63 -0
  204. package/dest/json-rpc/convert.d.ts +27 -0
  205. package/dest/json-rpc/convert.d.ts.map +1 -0
  206. package/dest/json-rpc/convert.js +48 -0
  207. package/dest/json-rpc/fixtures/class_a.d.ts +11 -0
  208. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
  209. package/dest/json-rpc/fixtures/class_a.js +20 -0
  210. package/dest/json-rpc/fixtures/class_b.d.ts +11 -0
  211. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
  212. package/dest/json-rpc/fixtures/class_b.js +20 -0
  213. package/dest/json-rpc/fixtures/test_state.d.ts +89 -0
  214. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
  215. package/dest/json-rpc/fixtures/test_state.js +131 -0
  216. package/dest/json-rpc/index.d.ts +2 -0
  217. package/dest/json-rpc/index.d.ts.map +1 -0
  218. package/dest/json-rpc/index.js +1 -0
  219. package/dest/json-rpc/js_utils.d.ts +13 -0
  220. package/dest/json-rpc/js_utils.d.ts.map +1 -0
  221. package/dest/json-rpc/js_utils.js +16 -0
  222. package/dest/json-rpc/server/index.d.ts +2 -0
  223. package/dest/json-rpc/server/index.d.ts.map +1 -0
  224. package/dest/json-rpc/server/index.js +1 -0
  225. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +140 -0
  226. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
  227. package/dest/json-rpc/server/safe_json_rpc_server.js +346 -0
  228. package/dest/json-rpc/server/telemetry.d.ts +2 -0
  229. package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
  230. package/dest/json-rpc/server/telemetry.js +0 -0
  231. package/dest/json-rpc/test/index.d.ts +2 -0
  232. package/dest/json-rpc/test/index.d.ts.map +1 -0
  233. package/dest/json-rpc/test/index.js +1 -0
  234. package/dest/json-rpc/test/integration.d.ts +15 -0
  235. package/dest/json-rpc/test/integration.d.ts.map +1 -0
  236. package/dest/json-rpc/test/integration.js +21 -0
  237. package/dest/log/console.d.ts +11 -0
  238. package/dest/log/console.d.ts.map +1 -0
  239. package/dest/log/console.js +36 -0
  240. package/dest/log/debug.d.ts +56 -0
  241. package/dest/log/debug.d.ts.map +1 -0
  242. package/dest/log/debug.js +75 -0
  243. package/dest/log/gcloud-logger-config.d.ts +14 -0
  244. package/dest/log/gcloud-logger-config.d.ts.map +1 -0
  245. package/dest/log/gcloud-logger-config.js +66 -0
  246. package/dest/log/index.d.ts +7 -0
  247. package/dest/log/index.d.ts.map +1 -0
  248. package/dest/log/index.js +6 -0
  249. package/dest/log/libp2p_logger.d.ts +7 -0
  250. package/dest/log/libp2p_logger.d.ts.map +1 -0
  251. package/dest/log/libp2p_logger.js +55 -0
  252. package/dest/log/log-filters.d.ts +7 -0
  253. package/dest/log/log-filters.d.ts.map +1 -0
  254. package/dest/log/log-filters.js +59 -0
  255. package/dest/log/log-levels.d.ts +3 -0
  256. package/dest/log/log-levels.d.ts.map +1 -0
  257. package/dest/log/log-levels.js +10 -0
  258. package/dest/log/log_fn.d.ts +7 -0
  259. package/dest/log/log_fn.d.ts.map +1 -0
  260. package/dest/log/log_fn.js +1 -0
  261. package/dest/log/log_history.d.ts +31 -0
  262. package/dest/log/log_history.d.ts.map +1 -0
  263. package/dest/log/log_history.js +38 -0
  264. package/dest/log/pino-logger.d.ts +57 -0
  265. package/dest/log/pino-logger.d.ts.map +1 -0
  266. package/dest/log/pino-logger.js +207 -0
  267. package/dest/message/index.d.ts +32 -0
  268. package/dest/message/index.d.ts.map +1 -0
  269. package/dest/message/index.js +27 -0
  270. package/dest/mutex/index.d.ts +53 -0
  271. package/dest/mutex/index.d.ts.map +1 -0
  272. package/dest/mutex/index.js +78 -0
  273. package/dest/mutex/mutex_database.d.ts +10 -0
  274. package/dest/mutex/mutex_database.d.ts.map +1 -0
  275. package/dest/mutex/mutex_database.js +4 -0
  276. package/dest/noir/index.d.ts +2 -0
  277. package/dest/noir/index.d.ts.map +1 -0
  278. package/dest/noir/index.js +1 -0
  279. package/dest/noir/noir_package_config.d.ts +129 -0
  280. package/dest/noir/noir_package_config.d.ts.map +1 -0
  281. package/dest/noir/noir_package_config.js +36 -0
  282. package/dest/promise/index.d.ts +3 -0
  283. package/dest/promise/index.d.ts.map +1 -0
  284. package/dest/promise/index.js +2 -0
  285. package/dest/promise/running-promise.d.ts +47 -0
  286. package/dest/promise/running-promise.d.ts.map +1 -0
  287. package/dest/promise/running-promise.js +110 -0
  288. package/dest/promise/utils.d.ts +12 -0
  289. package/dest/promise/utils.d.ts.map +1 -0
  290. package/dest/promise/utils.js +20 -0
  291. package/dest/queue/base_memory_queue.d.ts +65 -0
  292. package/dest/queue/base_memory_queue.d.ts.map +1 -0
  293. package/dest/queue/base_memory_queue.js +116 -0
  294. package/dest/queue/batch_queue.d.ts +47 -0
  295. package/dest/queue/batch_queue.d.ts.map +1 -0
  296. package/dest/queue/batch_queue.js +105 -0
  297. package/dest/queue/bounded_serial_queue.d.ts +56 -0
  298. package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
  299. package/dest/queue/bounded_serial_queue.js +84 -0
  300. package/dest/queue/fifo_memory_queue.d.ts +21 -0
  301. package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
  302. package/dest/queue/fifo_memory_queue.js +29 -0
  303. package/dest/queue/index.d.ts +7 -0
  304. package/dest/queue/index.d.ts.map +1 -0
  305. package/dest/queue/index.js +6 -0
  306. package/dest/queue/priority_memory_queue.d.ts +13 -0
  307. package/dest/queue/priority_memory_queue.d.ts.map +1 -0
  308. package/dest/queue/priority_memory_queue.js +16 -0
  309. package/dest/queue/priority_queue.d.ts +14 -0
  310. package/dest/queue/priority_queue.d.ts.map +1 -0
  311. package/dest/queue/priority_queue.js +29 -0
  312. package/dest/queue/semaphore.d.ts +23 -0
  313. package/dest/queue/semaphore.d.ts.map +1 -0
  314. package/dest/queue/semaphore.js +26 -0
  315. package/dest/queue/serial_queue.d.ts +49 -0
  316. package/dest/queue/serial_queue.d.ts.map +1 -0
  317. package/dest/queue/serial_queue.js +72 -0
  318. package/dest/retry/index.d.ts +44 -0
  319. package/dest/retry/index.d.ts.map +1 -0
  320. package/dest/retry/index.js +93 -0
  321. package/dest/running-promise/index.d.ts +2 -0
  322. package/dest/running-promise/index.d.ts.map +1 -0
  323. package/dest/running-promise/index.js +1 -0
  324. package/dest/schemas/api.d.ts +21 -0
  325. package/dest/schemas/api.d.ts.map +1 -0
  326. package/dest/schemas/api.js +3 -0
  327. package/dest/schemas/index.d.ts +6 -0
  328. package/dest/schemas/index.d.ts.map +1 -0
  329. package/dest/schemas/index.js +5 -0
  330. package/dest/schemas/parse.d.ts +9 -0
  331. package/dest/schemas/parse.d.ts.map +1 -0
  332. package/dest/schemas/parse.js +22 -0
  333. package/dest/schemas/schemas.d.ts +45 -0
  334. package/dest/schemas/schemas.d.ts.map +1 -0
  335. package/dest/schemas/schemas.js +38 -0
  336. package/dest/schemas/types.d.ts +3 -0
  337. package/dest/schemas/types.d.ts.map +1 -0
  338. package/dest/schemas/types.js +1 -0
  339. package/dest/schemas/utils.d.ts +53 -0
  340. package/dest/schemas/utils.d.ts.map +1 -0
  341. package/dest/schemas/utils.js +60 -0
  342. package/dest/serialize/buffer_reader.d.ts +239 -0
  343. package/dest/serialize/buffer_reader.d.ts.map +1 -0
  344. package/dest/serialize/buffer_reader.js +290 -0
  345. package/dest/serialize/field_reader.d.ts +112 -0
  346. package/dest/serialize/field_reader.d.ts.map +1 -0
  347. package/dest/serialize/field_reader.js +147 -0
  348. package/dest/serialize/free_funcs.d.ts +105 -0
  349. package/dest/serialize/free_funcs.d.ts.map +1 -0
  350. package/dest/serialize/free_funcs.js +189 -0
  351. package/dest/serialize/index.d.ts +7 -0
  352. package/dest/serialize/index.d.ts.map +1 -0
  353. package/dest/serialize/index.js +6 -0
  354. package/dest/serialize/serialize.d.ts +182 -0
  355. package/dest/serialize/serialize.d.ts.map +1 -0
  356. package/dest/serialize/serialize.js +248 -0
  357. package/dest/serialize/type_registry.d.ts +23 -0
  358. package/dest/serialize/type_registry.d.ts.map +1 -0
  359. package/dest/serialize/type_registry.js +61 -0
  360. package/dest/serialize/types.d.ts +33 -0
  361. package/dest/serialize/types.d.ts.map +1 -0
  362. package/dest/serialize/types.js +21 -0
  363. package/dest/sleep/index.d.ts +51 -0
  364. package/dest/sleep/index.d.ts.map +1 -0
  365. package/dest/sleep/index.js +67 -0
  366. package/dest/string/index.d.ts +11 -0
  367. package/dest/string/index.d.ts.map +1 -0
  368. package/dest/string/index.js +24 -0
  369. package/dest/testing/files/index.d.ts +20 -0
  370. package/dest/testing/files/index.d.ts.map +1 -0
  371. package/dest/testing/files/index.js +58 -0
  372. package/dest/testing/index.d.ts +4 -0
  373. package/dest/testing/index.d.ts.map +1 -0
  374. package/dest/testing/index.js +3 -0
  375. package/dest/testing/port_allocator.d.ts +10 -0
  376. package/dest/testing/port_allocator.d.ts.map +1 -0
  377. package/dest/testing/port_allocator.js +29 -0
  378. package/dest/testing/snapshot_serializer.d.ts +5 -0
  379. package/dest/testing/snapshot_serializer.d.ts.map +1 -0
  380. package/dest/testing/snapshot_serializer.js +32 -0
  381. package/dest/testing/test_data.d.ts +7 -0
  382. package/dest/testing/test_data.d.ts.map +1 -0
  383. package/dest/testing/test_data.js +29 -0
  384. package/dest/timer/date.d.ts +13 -0
  385. package/dest/timer/date.d.ts.map +1 -0
  386. package/dest/timer/date.js +24 -0
  387. package/dest/timer/elapsed.d.ts +13 -0
  388. package/dest/timer/elapsed.d.ts.map +1 -0
  389. package/dest/timer/elapsed.js +25 -0
  390. package/dest/timer/index.d.ts +5 -0
  391. package/dest/timer/index.d.ts.map +1 -0
  392. package/dest/timer/index.js +4 -0
  393. package/dest/timer/timeout.d.ts +41 -0
  394. package/dest/timer/timeout.d.ts.map +1 -0
  395. package/dest/timer/timeout.js +66 -0
  396. package/dest/timer/timer.d.ts +37 -0
  397. package/dest/timer/timer.d.ts.map +1 -0
  398. package/dest/timer/timer.js +40 -0
  399. package/dest/transport/browser/index.d.ts +5 -0
  400. package/dest/transport/browser/index.d.ts.map +1 -0
  401. package/dest/transport/browser/index.js +4 -0
  402. package/dest/transport/browser/message_port_socket.d.ts +37 -0
  403. package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
  404. package/dest/transport/browser/message_port_socket.js +42 -0
  405. package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
  406. package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
  407. package/dest/transport/browser/shared_worker_connector.js +19 -0
  408. package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
  409. package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
  410. package/dest/transport/browser/shared_worker_listener.js +33 -0
  411. package/dest/transport/browser/worker_connector.d.ts +26 -0
  412. package/dest/transport/browser/worker_connector.d.ts.map +1 -0
  413. package/dest/transport/browser/worker_connector.js +30 -0
  414. package/dest/transport/browser/worker_listener.d.ts +39 -0
  415. package/dest/transport/browser/worker_listener.d.ts.map +1 -0
  416. package/dest/transport/browser/worker_listener.js +35 -0
  417. package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
  418. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
  419. package/dest/transport/dispatch/create_dispatch_fn.js +17 -0
  420. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
  421. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
  422. package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
  423. package/dest/transport/dispatch/messages.d.ts +52 -0
  424. package/dest/transport/dispatch/messages.d.ts.map +1 -0
  425. package/dest/transport/dispatch/messages.js +13 -0
  426. package/dest/transport/index.d.ts +12 -0
  427. package/dest/transport/index.d.ts.map +1 -0
  428. package/dest/transport/index.js +11 -0
  429. package/dest/transport/interface/connector.d.ts +8 -0
  430. package/dest/transport/interface/connector.d.ts.map +1 -0
  431. package/dest/transport/interface/connector.js +3 -0
  432. package/dest/transport/interface/listener.d.ts +13 -0
  433. package/dest/transport/interface/listener.d.ts.map +1 -0
  434. package/dest/transport/interface/listener.js +4 -0
  435. package/dest/transport/interface/socket.d.ts +13 -0
  436. package/dest/transport/interface/socket.d.ts.map +1 -0
  437. package/dest/transport/interface/socket.js +7 -0
  438. package/dest/transport/interface/transferable.d.ts +68 -0
  439. package/dest/transport/interface/transferable.d.ts.map +1 -0
  440. package/dest/transport/interface/transferable.js +63 -0
  441. package/dest/transport/node/index.d.ts +3 -0
  442. package/dest/transport/node/index.d.ts.map +1 -0
  443. package/dest/transport/node/index.js +2 -0
  444. package/dest/transport/node/node_connector.d.ts +28 -0
  445. package/dest/transport/node/node_connector.d.ts.map +1 -0
  446. package/dest/transport/node/node_connector.js +26 -0
  447. package/dest/transport/node/node_connector_socket.d.ts +42 -0
  448. package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
  449. package/dest/transport/node/node_connector_socket.js +44 -0
  450. package/dest/transport/node/node_listener.d.ts +26 -0
  451. package/dest/transport/node/node_listener.d.ts.map +1 -0
  452. package/dest/transport/node/node_listener.js +26 -0
  453. package/dest/transport/node/node_listener_socket.d.ts +37 -0
  454. package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
  455. package/dest/transport/node/node_listener_socket.js +40 -0
  456. package/dest/transport/transport_client.d.ts +61 -0
  457. package/dest/transport/transport_client.d.ts.map +1 -0
  458. package/dest/transport/transport_client.js +96 -0
  459. package/dest/transport/transport_server.d.ts +56 -0
  460. package/dest/transport/transport_server.d.ts.map +1 -0
  461. package/dest/transport/transport_server.js +114 -0
  462. package/dest/trees/hasher.d.ts +39 -0
  463. package/dest/trees/hasher.d.ts.map +1 -0
  464. package/dest/trees/hasher.js +5 -0
  465. package/dest/trees/index.d.ts +11 -0
  466. package/dest/trees/index.d.ts.map +1 -0
  467. package/dest/trees/index.js +10 -0
  468. package/dest/trees/indexed_merkle_tree.d.ts +13 -0
  469. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  470. package/dest/trees/indexed_merkle_tree.js +27 -0
  471. package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
  472. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  473. package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
  474. package/dest/trees/indexed_tree_leaf.d.ts +57 -0
  475. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  476. package/dest/trees/indexed_tree_leaf.js +5 -0
  477. package/dest/trees/membership_witness.d.ts +62 -0
  478. package/dest/trees/membership_witness.d.ts.map +1 -0
  479. package/dest/trees/membership_witness.js +70 -0
  480. package/dest/trees/merkle_tree.d.ts +18 -0
  481. package/dest/trees/merkle_tree.d.ts.map +1 -0
  482. package/dest/trees/merkle_tree.js +58 -0
  483. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  484. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  485. package/dest/trees/merkle_tree_calculator.js +61 -0
  486. package/dest/trees/sibling_path.d.ts +132 -0
  487. package/dest/trees/sibling_path.d.ts.map +1 -0
  488. package/dest/trees/sibling_path.js +144 -0
  489. package/dest/trees/unbalanced_merkle_tree.d.ts +17 -0
  490. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -0
  491. package/dest/trees/unbalanced_merkle_tree.js +100 -0
  492. package/dest/trees/unbalanced_tree_store.d.ts +19 -0
  493. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
  494. package/dest/trees/unbalanced_tree_store.js +94 -0
  495. package/dest/types/index.d.ts +19 -0
  496. package/dest/types/index.d.ts.map +1 -0
  497. package/dest/types/index.js +3 -0
  498. package/dest/url/index.d.ts +9 -0
  499. package/dest/url/index.d.ts.map +1 -0
  500. package/dest/url/index.js +62 -0
  501. package/dest/validation/index.d.ts +9 -0
  502. package/dest/validation/index.d.ts.map +1 -0
  503. package/dest/validation/index.js +15 -0
  504. package/dest/wasm/empty_wasi_sdk.d.ts +130 -0
  505. package/dest/wasm/empty_wasi_sdk.d.ts.map +1 -0
  506. package/dest/wasm/empty_wasi_sdk.js +148 -0
  507. package/dest/wasm/index.d.ts +2 -0
  508. package/dest/wasm/index.d.ts.map +1 -0
  509. package/dest/wasm/index.js +1 -0
  510. package/dest/wasm/wasm_module.d.ts +136 -0
  511. package/dest/wasm/wasm_module.d.ts.map +1 -0
  512. package/dest/wasm/wasm_module.js +196 -0
  513. package/dest/worker/browser/index.d.ts +3 -0
  514. package/dest/worker/browser/index.d.ts.map +1 -0
  515. package/dest/worker/browser/index.js +2 -0
  516. package/dest/worker/browser/start_web_module.d.ts +7 -0
  517. package/dest/worker/browser/start_web_module.d.ts.map +1 -0
  518. package/dest/worker/browser/start_web_module.js +27 -0
  519. package/dest/worker/browser/web_data_store.d.ts +24 -0
  520. package/dest/worker/browser/web_data_store.d.ts.map +1 -0
  521. package/dest/worker/browser/web_data_store.js +29 -0
  522. package/dest/worker/browser/web_worker.d.ts +10 -0
  523. package/dest/worker/browser/web_worker.d.ts.map +1 -0
  524. package/dest/worker/browser/web_worker.js +25 -0
  525. package/dest/worker/data_store.d.ts +21 -0
  526. package/dest/worker/data_store.d.ts.map +1 -0
  527. package/dest/worker/data_store.js +3 -0
  528. package/dest/worker/index.d.ts +3 -0
  529. package/dest/worker/index.d.ts.map +1 -0
  530. package/dest/worker/index.js +1 -0
  531. package/dest/worker/node/index.d.ts +3 -0
  532. package/dest/worker/node/index.d.ts.map +1 -0
  533. package/dest/worker/node/index.js +2 -0
  534. package/dest/worker/node/node_data_store.d.ts +13 -0
  535. package/dest/worker/node/node_data_store.d.ts.map +1 -0
  536. package/dest/worker/node/node_data_store.js +20 -0
  537. package/dest/worker/node/node_worker.d.ts +6 -0
  538. package/dest/worker/node/node_worker.d.ts.map +1 -0
  539. package/dest/worker/node/node_worker.js +22 -0
  540. package/dest/worker/node/start_node_module.d.ts +7 -0
  541. package/dest/worker/node/start_node_module.d.ts.map +1 -0
  542. package/dest/worker/node/start_node_module.js +31 -0
  543. package/dest/worker/wasm_worker.d.ts +9 -0
  544. package/dest/worker/wasm_worker.d.ts.map +1 -0
  545. package/dest/worker/wasm_worker.js +3 -0
  546. package/dest/worker/worker_pool.d.ts +40 -0
  547. package/dest/worker/worker_pool.d.ts.map +1 -0
  548. package/dest/worker/worker_pool.js +51 -0
  549. package/package.json +176 -0
  550. package/src/array/array.ts +150 -0
  551. package/src/array/index.ts +1 -0
  552. package/src/async-map/index.ts +18 -0
  553. package/src/async-pool/index.ts +50 -0
  554. package/src/bigint-buffer/index.ts +87 -0
  555. package/src/buffer/buffer32.ts +144 -0
  556. package/src/buffer/index.ts +1 -0
  557. package/src/collection/array.ts +203 -0
  558. package/src/collection/index.ts +2 -0
  559. package/src/collection/object.ts +52 -0
  560. package/src/committable/committable.ts +46 -0
  561. package/src/committable/index.ts +1 -0
  562. package/src/config/env_var.ts +207 -0
  563. package/src/config/index.ts +167 -0
  564. package/src/crypto/aes128/index.ts +59 -0
  565. package/src/crypto/ecdsa/index.ts +70 -0
  566. package/src/crypto/ecdsa/signature.ts +100 -0
  567. package/src/crypto/grumpkin/index.ts +97 -0
  568. package/src/crypto/index.ts +14 -0
  569. package/src/crypto/keccak/index.ts +283 -0
  570. package/src/crypto/keys/index.ts +10 -0
  571. package/src/crypto/pedersen/index.ts +1 -0
  572. package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
  573. package/src/crypto/pedersen/pedersen.noble.ts +573 -0
  574. package/src/crypto/pedersen/pedersen.wasm.ts +48 -0
  575. package/src/crypto/poseidon/index.ts +77 -0
  576. package/src/crypto/random/index.ts +85 -0
  577. package/src/crypto/random/randomness_singleton.ts +62 -0
  578. package/src/crypto/schnorr/index.ts +55 -0
  579. package/src/crypto/schnorr/signature.ts +116 -0
  580. package/src/crypto/secp256k1/index.ts +57 -0
  581. package/src/crypto/secp256k1-signer/index.ts +2 -0
  582. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
  583. package/src/crypto/secp256k1-signer/utils.ts +99 -0
  584. package/src/crypto/serialize.ts +85 -0
  585. package/src/crypto/sha256/index.ts +147 -0
  586. package/src/crypto/sha512/index.ts +16 -0
  587. package/src/crypto/signature/index.ts +17 -0
  588. package/src/crypto/sync/index.ts +6 -0
  589. package/src/crypto/sync/pedersen/index.ts +45 -0
  590. package/src/crypto/sync/poseidon/index.ts +76 -0
  591. package/src/decorators/index.ts +1 -0
  592. package/src/decorators/memoize.ts +11 -0
  593. package/src/error/index.ts +22 -0
  594. package/src/eth-address/index.ts +241 -0
  595. package/src/eth-signature/eth_signature.ts +128 -0
  596. package/src/eth-signature/index.ts +1 -0
  597. package/src/fields/coordinate.ts +104 -0
  598. package/src/fields/fields.ts +505 -0
  599. package/src/fields/index.ts +3 -0
  600. package/src/fields/point.ts +300 -0
  601. package/src/fs/index.ts +1 -0
  602. package/src/fs/run_in_dir.ts +33 -0
  603. package/src/index.ts +31 -0
  604. package/src/iterable/all.ts +32 -0
  605. package/src/iterable/filter.ts +77 -0
  606. package/src/iterable/index.ts +7 -0
  607. package/src/iterable/isAsyncIt.ts +8 -0
  608. package/src/iterable/map.ts +66 -0
  609. package/src/iterable/peek.ts +58 -0
  610. package/src/iterable/sort.ts +39 -0
  611. package/src/iterable/take.ts +54 -0
  612. package/src/iterable/toArray.ts +9 -0
  613. package/src/jest/setup.mjs +9 -0
  614. package/src/json-rpc/README.md +55 -0
  615. package/src/json-rpc/client/fetch.ts +103 -0
  616. package/src/json-rpc/client/index.ts +2 -0
  617. package/src/json-rpc/client/safe_json_rpc_client.ts +67 -0
  618. package/src/json-rpc/client/undici.ts +75 -0
  619. package/src/json-rpc/convert.ts +61 -0
  620. package/src/json-rpc/fixtures/class_a.ts +15 -0
  621. package/src/json-rpc/fixtures/class_b.ts +15 -0
  622. package/src/json-rpc/fixtures/test_state.ts +143 -0
  623. package/src/json-rpc/index.ts +1 -0
  624. package/src/json-rpc/js_utils.ts +21 -0
  625. package/src/json-rpc/server/index.ts +1 -0
  626. package/src/json-rpc/server/safe_json_rpc_server.ts +376 -0
  627. package/src/json-rpc/server/telemetry.ts +0 -0
  628. package/src/json-rpc/test/index.ts +1 -0
  629. package/src/json-rpc/test/integration.ts +35 -0
  630. package/src/log/console.ts +39 -0
  631. package/src/log/debug.ts +104 -0
  632. package/src/log/gcloud-logger-config.ts +71 -0
  633. package/src/log/index.ts +6 -0
  634. package/src/log/libp2p_logger.ts +67 -0
  635. package/src/log/log-filters.ts +63 -0
  636. package/src/log/log-levels.ts +3 -0
  637. package/src/log/log_fn.ts +5 -0
  638. package/src/log/log_history.ts +44 -0
  639. package/src/log/pino-logger.ts +243 -0
  640. package/src/message/index.ts +43 -0
  641. package/src/mutex/index.ts +84 -0
  642. package/src/mutex/mutex_database.ts +12 -0
  643. package/src/noir/index.ts +1 -0
  644. package/src/noir/noir_package_config.ts +54 -0
  645. package/src/promise/index.ts +2 -0
  646. package/src/promise/running-promise.ts +125 -0
  647. package/src/promise/utils.ts +29 -0
  648. package/src/queue/base_memory_queue.ts +138 -0
  649. package/src/queue/batch_queue.ts +120 -0
  650. package/src/queue/bounded_serial_queue.ts +100 -0
  651. package/src/queue/fifo_memory_queue.ts +39 -0
  652. package/src/queue/index.ts +6 -0
  653. package/src/queue/priority_memory_queue.ts +20 -0
  654. package/src/queue/priority_queue.ts +34 -0
  655. package/src/queue/semaphore.ts +33 -0
  656. package/src/queue/serial_queue.ts +86 -0
  657. package/src/retry/index.ts +100 -0
  658. package/src/running-promise/index.ts +1 -0
  659. package/src/schemas/api.ts +47 -0
  660. package/src/schemas/index.ts +5 -0
  661. package/src/schemas/parse.ts +29 -0
  662. package/src/schemas/schemas.ts +64 -0
  663. package/src/schemas/types.ts +3 -0
  664. package/src/schemas/utils.ts +112 -0
  665. package/src/serialize/buffer_reader.ts +383 -0
  666. package/src/serialize/field_reader.ts +184 -0
  667. package/src/serialize/free_funcs.ts +204 -0
  668. package/src/serialize/index.ts +6 -0
  669. package/src/serialize/serialize.ts +336 -0
  670. package/src/serialize/type_registry.ts +75 -0
  671. package/src/serialize/types.ts +40 -0
  672. package/src/sleep/index.ts +75 -0
  673. package/src/string/index.ts +31 -0
  674. package/src/testing/files/index.ts +69 -0
  675. package/src/testing/index.ts +3 -0
  676. package/src/testing/port_allocator.ts +31 -0
  677. package/src/testing/snapshot_serializer.ts +33 -0
  678. package/src/testing/test_data.ts +36 -0
  679. package/src/timer/date.ts +24 -0
  680. package/src/timer/elapsed.ts +23 -0
  681. package/src/timer/index.ts +4 -0
  682. package/src/timer/timeout.ts +70 -0
  683. package/src/timer/timer.ts +48 -0
  684. package/src/transport/browser/index.ts +4 -0
  685. package/src/transport/browser/message_port_socket.ts +48 -0
  686. package/src/transport/browser/shared_worker_connector.ts +21 -0
  687. package/src/transport/browser/shared_worker_listener.ts +53 -0
  688. package/src/transport/browser/worker_connector.ts +30 -0
  689. package/src/transport/browser/worker_listener.ts +54 -0
  690. package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
  691. package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
  692. package/src/transport/dispatch/messages.ts +58 -0
  693. package/src/transport/index.ts +11 -0
  694. package/src/transport/interface/connector.ts +9 -0
  695. package/src/transport/interface/listener.ts +16 -0
  696. package/src/transport/interface/socket.ts +15 -0
  697. package/src/transport/interface/transferable.ts +125 -0
  698. package/src/transport/node/index.ts +2 -0
  699. package/src/transport/node/node_connector.ts +30 -0
  700. package/src/transport/node/node_connector_socket.ts +52 -0
  701. package/src/transport/node/node_listener.ts +34 -0
  702. package/src/transport/node/node_listener_socket.ts +48 -0
  703. package/src/transport/transport_client.ts +131 -0
  704. package/src/transport/transport_server.ts +108 -0
  705. package/src/trees/hasher.ts +39 -0
  706. package/src/trees/index.ts +10 -0
  707. package/src/trees/indexed_merkle_tree.ts +36 -0
  708. package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
  709. package/src/trees/indexed_tree_leaf.ts +56 -0
  710. package/src/trees/membership_witness.ts +99 -0
  711. package/src/trees/merkle_tree.ts +72 -0
  712. package/src/trees/merkle_tree_calculator.ts +67 -0
  713. package/src/trees/sibling_path.ts +183 -0
  714. package/src/trees/unbalanced_merkle_tree.ts +103 -0
  715. package/src/trees/unbalanced_tree_store.ts +102 -0
  716. package/src/types/index.ts +25 -0
  717. package/src/url/index.ts +73 -0
  718. package/src/validation/index.ts +18 -0
  719. package/src/wasm/README.md +6 -0
  720. package/src/wasm/empty_wasi_sdk.ts +166 -0
  721. package/src/wasm/fixtures/gcd.wasm +0 -0
  722. package/src/wasm/fixtures/gcd.wat +27 -0
  723. package/src/wasm/index.ts +1 -0
  724. package/src/wasm/wasm_module.ts +260 -0
  725. package/src/worker/browser/index.ts +2 -0
  726. package/src/worker/browser/start_web_module.ts +24 -0
  727. package/src/worker/browser/web_data_store.ts +38 -0
  728. package/src/worker/browser/web_worker.ts +25 -0
  729. package/src/worker/data_store.ts +19 -0
  730. package/src/worker/index.ts +2 -0
  731. package/src/worker/node/index.ts +2 -0
  732. package/src/worker/node/node_data_store.ts +27 -0
  733. package/src/worker/node/node_worker.ts +23 -0
  734. package/src/worker/node/start_node_module.ts +30 -0
  735. package/src/worker/wasm_worker.ts +7 -0
  736. package/src/worker/worker_pool.ts +73 -0
@@ -0,0 +1,85 @@
1
+ import nodeCrypto from 'crypto';
2
+ import isNode from 'detect-node';
3
+
4
+ import { RandomnessSingleton } from './randomness_singleton.js';
5
+
6
+ // limit of Crypto.getRandomValues()
7
+ // https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
8
+ const MAX_BYTES = 65536;
9
+
10
+ const getWebCrypto = () => {
11
+ if (typeof window !== 'undefined' && window.crypto) {
12
+ return window.crypto;
13
+ }
14
+ if (typeof self !== 'undefined' && self.crypto) {
15
+ return self.crypto;
16
+ }
17
+ return undefined;
18
+ };
19
+
20
+ export const randomBytes = (len: number) => {
21
+ const singleton = RandomnessSingleton.getInstance();
22
+
23
+ if (singleton.isDeterministic()) {
24
+ return singleton.getBytes(len);
25
+ }
26
+
27
+ if (isNode) {
28
+ return nodeCrypto.randomBytes(len) as Buffer;
29
+ }
30
+
31
+ const crypto = getWebCrypto();
32
+ if (!crypto) {
33
+ throw new Error('randomBytes UnsupportedEnvironment');
34
+ }
35
+
36
+ const buf = Buffer.allocUnsafe(len);
37
+ if (len > MAX_BYTES) {
38
+ // this is the max bytes crypto.getRandomValues
39
+ // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
40
+ for (let generated = 0; generated < len; generated += MAX_BYTES) {
41
+ // buffer.slice automatically checks if the end is past the end of
42
+ // the buffer so we don't have to here
43
+ crypto.getRandomValues(buf.slice(generated, generated + MAX_BYTES));
44
+ }
45
+ } else {
46
+ crypto.getRandomValues(buf);
47
+ }
48
+
49
+ return buf;
50
+ };
51
+
52
+ /**
53
+ * Generate a random integer less than max.
54
+ * @param max - The maximum value.
55
+ * @returns A random integer.
56
+ *
57
+ * TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
58
+ */
59
+ export const randomInt = (max: number) => {
60
+ const randomBuffer = randomBytes(6); // Generate a buffer of 6 random bytes.
61
+ const randomInt = parseInt(randomBuffer.toString('hex'), 16); // Convert buffer to a large integer.
62
+ return randomInt % max; // Use modulo to ensure the result is less than max.
63
+ };
64
+
65
+ /**
66
+ * Generate a random bigint less than max.
67
+ * @param max - The maximum value.
68
+ * @returns A random bigint.
69
+ *
70
+ * TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
71
+ */
72
+ export const randomBigInt = (max: bigint) => {
73
+ const randomBuffer = randomBytes(8); // Generate a buffer of 8 random bytes.
74
+ const randomBigInt = BigInt(`0x${randomBuffer.toString('hex')}`); // Convert buffer to a large integer.
75
+ return randomBigInt % max; // Use modulo to ensure the result is less than max.
76
+ };
77
+
78
+ /**
79
+ * Generate a random boolean value.
80
+ * @returns A random boolean value.
81
+ */
82
+ export const randomBoolean = () => {
83
+ const randomByte = randomBytes(1)[0]; // Generate a single random byte.
84
+ return randomByte % 2 === 0; // Use modulo to determine if the byte is even or odd.
85
+ };
@@ -0,0 +1,62 @@
1
+ import { createLogger } from '../../log/pino-logger.js';
2
+
3
+ /**
4
+ * A number generator which is used as a source of randomness in the system. If the SEED env variable is set, the
5
+ * generator will be deterministic and will always produce the same sequence of numbers. Otherwise a true randomness
6
+ * sourced by crypto library will be used.
7
+ * @remarks This class was implemented so that tests can be run deterministically.
8
+ *
9
+ * TODO(#3949): This is not safe enough for production and should be made safer or removed before mainnet.
10
+ */
11
+ export class RandomnessSingleton {
12
+ private static instance: RandomnessSingleton;
13
+
14
+ private counter = 0;
15
+
16
+ private constructor(
17
+ private readonly seed?: number,
18
+ private readonly log = createLogger('foundation:randomness_singleton'),
19
+ ) {
20
+ if (seed !== undefined) {
21
+ this.log.debug(`Using pseudo-randomness with seed: ${seed}`);
22
+ this.counter = seed;
23
+ } else {
24
+ this.log.debug('Using true randomness');
25
+ }
26
+ }
27
+
28
+ public static getInstance(): RandomnessSingleton {
29
+ if (!RandomnessSingleton.instance) {
30
+ const seed = process.env.SEED ? Number(process.env.SEED) : undefined;
31
+ RandomnessSingleton.instance = new RandomnessSingleton(seed);
32
+ }
33
+
34
+ return RandomnessSingleton.instance;
35
+ }
36
+
37
+ /**
38
+ * Indicates whether the generator is deterministic (was seeded) or not.
39
+ * @returns Whether the generator is deterministic.
40
+ */
41
+ public isDeterministic(): boolean {
42
+ return this.seed !== undefined;
43
+ }
44
+
45
+ public getBytes(length: number): Buffer {
46
+ if (this.seed === undefined) {
47
+ // Note: It would be more natural to just have the contents of randomBytes(...) function from
48
+ // yarn-project/foundation/src/crypto/random/index.ts here but that would result in a larger
49
+ // refactor so I think prohibiting use of this func when the seed is undefined is and handling
50
+ // the singleton within randomBytes func is fine.
51
+ throw new Error('RandomnessSingleton is not implemented for non-deterministic mode');
52
+ }
53
+ const result = Buffer.alloc(length);
54
+ for (let i = 0; i < length; i++) {
55
+ // Each byte of the buffer is set to a 1 byte of this.counter's value. 0xff is 255 in decimal and it's used as
56
+ // a mask to get the last 8 bits of the shifted counter.
57
+ result[i] = (this.counter >> (i * 8)) & 0xff;
58
+ }
59
+ this.counter++;
60
+ return result;
61
+ }
62
+ }
@@ -0,0 +1,55 @@
1
+ import { BarretenbergSync } from '@aztec/bb.js';
2
+ import { type GrumpkinScalar, Point } from '@aztec/foundation/fields';
3
+ import { numToInt32BE } from '@aztec/foundation/serialize';
4
+
5
+ import { concatenateUint8Arrays } from '../serialize.js';
6
+ import { SchnorrSignature } from './signature.js';
7
+
8
+ export * from './signature.js';
9
+
10
+ /**
11
+ * Schnorr signature construction and helper operations.
12
+ */
13
+ export class Schnorr {
14
+ /**
15
+ * Computes a grumpkin public key from a private key.
16
+ * @param privateKey - The private key.
17
+ * @returns A grumpkin public key.
18
+ */
19
+ public async computePublicKey(privateKey: GrumpkinScalar): Promise<Point> {
20
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
21
+ const [result] = api.getWasm().callWasmExport('schnorr_compute_public_key', [privateKey.toBuffer()], [64]);
22
+ return Point.fromBuffer(Buffer.from(result));
23
+ }
24
+
25
+ /**
26
+ * Constructs a Schnorr signature given a msg and a private key.
27
+ * @param msg - Message over which the signature is constructed.
28
+ * @param privateKey - The private key of the signer.
29
+ * @returns A Schnorr signature of the form (s, e).
30
+ */
31
+ public async constructSignature(msg: Uint8Array, privateKey: GrumpkinScalar) {
32
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
33
+ const messageArray = concatenateUint8Arrays([numToInt32BE(msg.length), msg]);
34
+ const [s, e] = api
35
+ .getWasm()
36
+ .callWasmExport('schnorr_construct_signature', [messageArray, privateKey.toBuffer()], [32, 32]);
37
+ return new SchnorrSignature(Buffer.from([...s, ...e]));
38
+ }
39
+
40
+ /**
41
+ * Verifies a Schnorr signature given a Grumpkin public key.
42
+ * @param msg - Message over which the signature was constructed.
43
+ * @param pubKey - The Grumpkin public key of the signer.
44
+ * @param sig - The Schnorr signature.
45
+ * @returns True or false.
46
+ */
47
+ public async verifySignature(msg: Uint8Array, pubKey: Point, sig: SchnorrSignature) {
48
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
49
+ const messageArray = concatenateUint8Arrays([numToInt32BE(msg.length), msg]);
50
+ const [result] = api
51
+ .getWasm()
52
+ .callWasmExport('schnorr_verify_signature', [messageArray, pubKey.toBuffer(), sig.s, sig.e], [1]);
53
+ return result[0] === 1;
54
+ }
55
+ }
@@ -0,0 +1,116 @@
1
+ import { randomBytes } from '@aztec/foundation/crypto';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
4
+
5
+ import type { Signature } from '../signature/index.js';
6
+
7
+ /**
8
+ * Schnorr signature used for transactions.
9
+ * @see cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp
10
+ */
11
+ export class SchnorrSignature implements Signature {
12
+ /**
13
+ * The size of the signature in bytes.
14
+ */
15
+ public static SIZE = 64;
16
+
17
+ /**
18
+ * An empty signature.
19
+ */
20
+ public static EMPTY = new SchnorrSignature(Buffer.alloc(64));
21
+
22
+ constructor(private buffer: Buffer) {
23
+ if (buffer.length !== SchnorrSignature.SIZE) {
24
+ throw new Error(`Invalid signature buffer of length ${buffer.length}.`);
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Determines if the provided signature is valid or not.
30
+ * @param signature - The data to be checked.
31
+ * @returns Boolean indicating if the provided data is a valid schnorr signature.
32
+ */
33
+ public static isSignature(signature: string) {
34
+ return /^(0x)?[0-9a-f]{128}$/i.test(signature);
35
+ }
36
+
37
+ /**
38
+ * Constructs a SchnorrSignature from the provided string.
39
+ * @param signature - The string to be converted to a schnorr signature.
40
+ * @returns The constructed schnorr signature.
41
+ */
42
+ public static fromString(signature: string) {
43
+ if (!SchnorrSignature.isSignature(signature)) {
44
+ throw new Error(`Invalid signature string: ${signature}`);
45
+ }
46
+ return new SchnorrSignature(Buffer.from(signature.replace(/^0x/i, ''), 'hex'));
47
+ }
48
+
49
+ /**
50
+ * Generates a random schnorr signature.
51
+ * @returns The randomly constructed signature.
52
+ */
53
+ public static random() {
54
+ return new SchnorrSignature(randomBytes(64));
55
+ }
56
+
57
+ /**
58
+ * Returns the 's' component of the signature.
59
+ * @returns A buffer containing the signature's 's' component.
60
+ */
61
+ get s() {
62
+ return this.buffer.subarray(0, 32);
63
+ }
64
+
65
+ /**
66
+ * Returns the 'e' component of the signature.
67
+ * @returns A buffer containing the signature's 'e' component.
68
+ */
69
+ get e() {
70
+ return this.buffer.subarray(32);
71
+ }
72
+
73
+ /**
74
+ * Returns the full signature as a buffer.
75
+ * @returns A buffer containing the signature.
76
+ */
77
+ toBuffer() {
78
+ return this.buffer;
79
+ }
80
+
81
+ /**
82
+ * Deserializes from a buffer.
83
+ * @param buffer - The buffer representation of the object.
84
+ * @returns The new object.
85
+ */
86
+ static fromBuffer(buffer: Buffer | BufferReader): SchnorrSignature {
87
+ const reader = BufferReader.asReader(buffer);
88
+ return new SchnorrSignature(reader.readBytes(SchnorrSignature.SIZE));
89
+ }
90
+
91
+ /**
92
+ * Returns the full signature as a hex string.
93
+ * @returns A string containing the signature in hex format.
94
+ */
95
+ toString() {
96
+ return `0x${this.buffer.toString('hex')}`;
97
+ }
98
+
99
+ /**
100
+ * Converts the signature to an array of three fields.
101
+ * @returns The signature components as an array of three fields
102
+ */
103
+ toFields(): Fr[] {
104
+ const sig = this.toBuffer();
105
+
106
+ const buf1 = Buffer.alloc(32);
107
+ const buf2 = Buffer.alloc(32);
108
+ const buf3 = Buffer.alloc(32);
109
+
110
+ sig.copy(buf1, 1, 0, 31);
111
+ sig.copy(buf2, 1, 31, 62);
112
+ sig.copy(buf3, 1, 62, 64);
113
+
114
+ return mapTuple([buf1, buf2, buf3], Fr.fromBuffer);
115
+ }
116
+ }
@@ -0,0 +1,57 @@
1
+ import { BarretenbergSync } from '@aztec/bb.js';
2
+
3
+ /**
4
+ * Secp256k1 elliptic curve operations.
5
+ */
6
+ export class Secp256k1 {
7
+ // prettier-ignore
8
+ static generator = Buffer.from([
9
+ 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07,
10
+ 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98,
11
+ 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8,
12
+ 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8,
13
+ ]);
14
+
15
+ /**
16
+ * Point generator
17
+ * @returns The generator for the curve.
18
+ */
19
+ public generator(): Buffer {
20
+ return Secp256k1.generator;
21
+ }
22
+
23
+ /**
24
+ * Multiplies a point by a scalar (adds the point `scalar` amount of time).
25
+ * @param point - Point to multiply.
26
+ * @param scalar - Scalar to multiply by.
27
+ * @returns Result of the multiplication.
28
+ */
29
+ public async mul(point: Uint8Array, scalar: Uint8Array) {
30
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
31
+ const [result] = api.getWasm().callWasmExport('ecc_secp256k1__mul', [point, scalar], [64]);
32
+ return Buffer.from(result);
33
+ }
34
+
35
+ /**
36
+ * Gets a random field element.
37
+ * @returns Random field element.
38
+ */
39
+ public async getRandomFr() {
40
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
41
+ const [result] = api.getWasm().callWasmExport('ecc_secp256k1__get_random_scalar_mod_circuit_modulus', [], [32]);
42
+ return Buffer.from(result);
43
+ }
44
+
45
+ /**
46
+ * Converts a 512 bits long buffer to a field.
47
+ * @param uint512Buf - The buffer to convert.
48
+ * @returns Buffer representation of the field element.
49
+ */
50
+ public async reduce512BufferToFr(uint512Buf: Buffer) {
51
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
52
+ const [result] = api
53
+ .getWasm()
54
+ .callWasmExport('ecc_secp256k1__reduce512_buffer_mod_circuit_modulus', [uint512Buf], [32]);
55
+ return Buffer.from(result);
56
+ }
57
+ }
@@ -0,0 +1,2 @@
1
+ export * from './secp256k1_signer.js';
2
+ export * from './utils.js';
@@ -0,0 +1,38 @@
1
+ import { Buffer32 } from '@aztec/foundation/buffer';
2
+ import type { EthAddress } from '@aztec/foundation/eth-address';
3
+ import type { Signature } from '@aztec/foundation/eth-signature';
4
+
5
+ import { addressFromPrivateKey, makeEthSignDigest, signMessage } from './utils.js';
6
+
7
+ /**
8
+ * Secp256k1Signer
9
+ *
10
+ * A class for signing messages using a secp256k1 private key.
11
+ * - This is a slim drop in replacement for an Ethereum signer, so it can be used in the same way.
12
+ * - See `utils.ts` for functions that enable recovering addresses and public keys from signatures.
13
+ */
14
+ export class Secp256k1Signer {
15
+ public readonly address: EthAddress;
16
+
17
+ constructor(private privateKey: Buffer32) {
18
+ this.address = addressFromPrivateKey(privateKey.buffer);
19
+ }
20
+
21
+ sign(message: Buffer32): Signature {
22
+ return signMessage(message, this.privateKey.buffer);
23
+ }
24
+
25
+ /**
26
+ * Sign a message using the same method as eth_sign
27
+ * @param message - The message to sign.
28
+ * @returns The signature.
29
+ */
30
+ signMessage(message: Buffer32): Signature {
31
+ const digest = makeEthSignDigest(message);
32
+ return this.sign(digest);
33
+ }
34
+
35
+ static random(): Secp256k1Signer {
36
+ return new Secp256k1Signer(Buffer32.random());
37
+ }
38
+ }
@@ -0,0 +1,99 @@
1
+ import { secp256k1 } from '@noble/curves/secp256k1';
2
+
3
+ import { Buffer32 } from '../../buffer/buffer32.js';
4
+ import { EthAddress } from '../../eth-address/index.js';
5
+ import { Signature } from '../../eth-signature/eth_signature.js';
6
+ import { keccak256 } from '../keccak/index.js';
7
+
8
+ const ETH_SIGN_PREFIX = '\x19Ethereum Signed Message:\n32';
9
+
10
+ // We just hash the message to make it easier to work with in the smart contract.
11
+ export function makeEthSignDigest(message: Buffer32): Buffer32 {
12
+ const prefix = Buffer.from(ETH_SIGN_PREFIX);
13
+ return Buffer32.fromBuffer(keccak256(Buffer.concat([prefix, message.buffer])));
14
+ }
15
+
16
+ /**
17
+ * Converts a public key to an address.
18
+ * @param publicKey - The public key to convert.
19
+ * @returns The address.
20
+ */
21
+ function publicKeyToAddress(publicKey: Buffer): EthAddress {
22
+ const hash = keccak256(publicKey.subarray(1));
23
+ return new EthAddress(hash.subarray(12));
24
+ }
25
+
26
+ /**
27
+ * Converts a private key to a public key.
28
+ * @param privateKey - The private key to convert.
29
+ * @returns The public key.
30
+ */
31
+ export function publicKeyFromPrivateKey(privateKey: Buffer): Buffer {
32
+ return Buffer.from(secp256k1.getPublicKey(privateKey, false));
33
+ }
34
+
35
+ /**
36
+ * Converts a private key to an address.
37
+ * @param privateKey - The private key to convert.
38
+ * @returns The address.
39
+ */
40
+ export function addressFromPrivateKey(privateKey: Buffer): EthAddress {
41
+ const publicKey = publicKeyFromPrivateKey(privateKey);
42
+ return publicKeyToAddress(publicKey);
43
+ }
44
+
45
+ /**
46
+ * Recovers an address from a hash and a signature.
47
+ * @param hash - The hash to recover the address from.
48
+ * @param signature - The signature to recover the address from.
49
+ * @returns The address.
50
+ */
51
+ export function recoverAddress(hash: Buffer32, signature: Signature): EthAddress {
52
+ const publicKey = recoverPublicKey(hash, signature);
53
+ return publicKeyToAddress(publicKey);
54
+ }
55
+
56
+ /**
57
+ * @attribution - viem
58
+ * Converts a yParityOrV value to a recovery bit.
59
+ * @param yParityOrV - The yParityOrV value to convert.
60
+ * @returns The recovery bit.
61
+ */
62
+ function toRecoveryBit(yParityOrV: number) {
63
+ if (yParityOrV === 0 || yParityOrV === 1) {
64
+ return yParityOrV;
65
+ }
66
+ if (yParityOrV === 27) {
67
+ return 0;
68
+ }
69
+ if (yParityOrV === 28) {
70
+ return 1;
71
+ }
72
+ throw new Error('Invalid yParityOrV value');
73
+ }
74
+
75
+ /**
76
+ * Signs a message using ecdsa over the secp256k1 curve.
77
+ * @param message - The message to sign.
78
+ * @param privateKey - The private key to sign the message with.
79
+ * @returns The signature.
80
+ */
81
+ export function signMessage(message: Buffer32, privateKey: Buffer) {
82
+ const { r, s, recovery } = secp256k1.sign(message.buffer, privateKey);
83
+ return new Signature(Buffer32.fromBigInt(r), Buffer32.fromBigInt(s), recovery ? 28 : 27);
84
+ }
85
+
86
+ /**
87
+ * Recovers a public key from a hash and a signature.
88
+ * @param hash - The hash to recover the public key from.
89
+ * @param signature - The signature to recover the public key from.
90
+ * @returns The public key.
91
+ */
92
+ export function recoverPublicKey(hash: Buffer32, signature: Signature): Buffer {
93
+ const { r, s, v } = signature;
94
+ const recoveryBit = toRecoveryBit(v);
95
+ const sig = new secp256k1.Signature(r.toBigInt(), s.toBigInt()).addRecoveryBit(recoveryBit);
96
+
97
+ const publicKey = sig.recoverPublicKey(hash.buffer).toHex(false);
98
+ return Buffer.from(publicKey, 'hex');
99
+ }
@@ -0,0 +1,85 @@
1
+ // TODO find a new home for this as we move to external bb.js
2
+ // See https://github.com/AztecProtocol/aztec-packages/issues/782
3
+ import { Buffer } from 'buffer';
4
+
5
+ /**
6
+ * For serializing an array of fixed length buffers.
7
+ * TODO move to foundation pkg.
8
+ * @param arr - Array of bufffers.
9
+ * @returns The serialized buffers.
10
+ */
11
+ export function serializeBufferArrayToVector(arr: Buffer[]) {
12
+ const lengthBuf = Buffer.alloc(4);
13
+ lengthBuf.writeUInt32BE(arr.length, 0);
14
+ return Buffer.concat([lengthBuf, ...arr]);
15
+ }
16
+
17
+ /**
18
+ * Helper function for deserializeArrayFromVector.
19
+ */
20
+ type DeserializeFn<T> = (
21
+ buf: Buffer,
22
+ offset: number,
23
+ ) => {
24
+ /**
25
+ * The deserialized type.
26
+ */
27
+ elem: T;
28
+ /**
29
+ * How many bytes to advance by.
30
+ */
31
+ adv: number;
32
+ };
33
+
34
+ /**
35
+ * For deserializing numbers to 32-bit little-endian form.
36
+ * TODO move to foundation pkg.
37
+ * @param n - The number.
38
+ * @returns The endian-corrected number.
39
+ */
40
+ export function deserializeArrayFromVector<T>(deserialize: DeserializeFn<T>, vector: Buffer, offset = 0) {
41
+ let pos = offset;
42
+ const size = vector.readUInt32BE(pos);
43
+ pos += 4;
44
+ const arr = new Array<T>(size);
45
+ for (let i = 0; i < size; ++i) {
46
+ const { elem, adv } = deserialize(vector, pos);
47
+ pos += adv;
48
+ arr[i] = elem;
49
+ }
50
+ return { elem: arr, adv: pos - offset };
51
+ }
52
+
53
+ /**
54
+ * For serializing numbers to 32 bit little-endian form.
55
+ * TODO move to foundation pkg.
56
+ * @param n - The number.
57
+ * @returns The endian-corrected number.
58
+ */
59
+ export function numToUInt32LE(n: number, bufferSize = 4) {
60
+ const buf = Buffer.alloc(bufferSize);
61
+ buf.writeUInt32LE(n, bufferSize - 4);
62
+ return buf;
63
+ }
64
+
65
+ /**
66
+ * Deserialize the 256-bit number at address `offset`.
67
+ * @param buf - The buffer.
68
+ * @param offset - The address.
69
+ * @returns The derserialized 256-bit field.
70
+ */
71
+ export function deserializeField(buf: Buffer, offset = 0) {
72
+ const adv = 32;
73
+ return { elem: buf.slice(offset, offset + adv), adv };
74
+ }
75
+
76
+ export function concatenateUint8Arrays(arrayOfUint8Arrays: Uint8Array[]) {
77
+ const totalLength = arrayOfUint8Arrays.reduce((prev, curr) => prev + curr.length, 0);
78
+ const result = new Uint8Array(totalLength);
79
+ let length = 0;
80
+ for (const array of arrayOfUint8Arrays) {
81
+ result.set(array, length);
82
+ length += array.length;
83
+ }
84
+ return result;
85
+ }