@aztec/foundation 0.0.1-commit.b655e406 → 0.0.1-commit.c2595eba

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 (482) hide show
  1. package/dest/array/array.d.ts +1 -9
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +0 -11
  4. package/dest/array/index.d.ts +2 -1
  5. package/dest/array/index.d.ts.map +1 -1
  6. package/dest/array/index.js +1 -0
  7. package/dest/array/sorted_array.d.ts +10 -0
  8. package/dest/array/sorted_array.d.ts.map +1 -0
  9. package/dest/array/sorted_array.js +106 -0
  10. package/dest/async-map/index.d.ts +1 -1
  11. package/dest/async-pool/index.d.ts +1 -1
  12. package/dest/bigint/index.d.ts +1 -1
  13. package/dest/bigint-buffer/index.d.ts +1 -1
  14. package/dest/branded-types/block_number.d.ts +56 -0
  15. package/dest/branded-types/block_number.d.ts.map +1 -0
  16. package/dest/branded-types/block_number.js +78 -0
  17. package/dest/branded-types/checkpoint_number.d.ts +54 -0
  18. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  19. package/dest/branded-types/checkpoint_number.js +77 -0
  20. package/dest/branded-types/epoch.d.ts +42 -0
  21. package/dest/branded-types/epoch.d.ts.map +1 -0
  22. package/dest/branded-types/epoch.js +59 -0
  23. package/dest/branded-types/index.d.ts +7 -0
  24. package/dest/branded-types/index.d.ts.map +1 -0
  25. package/dest/branded-types/index.js +5 -0
  26. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  27. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  28. package/dest/branded-types/index_within_checkpoint.js +59 -0
  29. package/dest/branded-types/slot.d.ts +42 -0
  30. package/dest/branded-types/slot.d.ts.map +1 -0
  31. package/dest/branded-types/slot.js +59 -0
  32. package/dest/branded-types/types.d.ts +5 -0
  33. package/dest/branded-types/types.d.ts.map +1 -0
  34. package/dest/branded-types/types.js +1 -0
  35. package/dest/buffer/buffer16.d.ts +2 -2
  36. package/dest/buffer/buffer16.d.ts.map +1 -1
  37. package/dest/buffer/buffer16.js +4 -2
  38. package/dest/buffer/buffer32.d.ts +2 -2
  39. package/dest/buffer/buffer32.d.ts.map +1 -1
  40. package/dest/buffer/buffer32.js +4 -2
  41. package/dest/buffer/index.d.ts +1 -1
  42. package/dest/collection/array.d.ts +12 -1
  43. package/dest/collection/array.d.ts.map +1 -1
  44. package/dest/collection/array.js +51 -0
  45. package/dest/collection/index.d.ts +1 -1
  46. package/dest/collection/object.d.ts +1 -1
  47. package/dest/committable/committable.d.ts +1 -1
  48. package/dest/committable/committable.d.ts.map +1 -1
  49. package/dest/committable/index.d.ts +1 -1
  50. package/dest/config/env_var.d.ts +2 -2
  51. package/dest/config/env_var.d.ts.map +1 -1
  52. package/dest/config/index.d.ts +15 -4
  53. package/dest/config/index.d.ts.map +1 -1
  54. package/dest/config/index.js +32 -9
  55. package/dest/config/network_config.d.ts +13 -1
  56. package/dest/config/network_config.d.ts.map +1 -1
  57. package/dest/config/network_config.js +3 -1
  58. package/dest/config/network_name.d.ts +1 -1
  59. package/dest/config/parse-env.d.ts +3 -0
  60. package/dest/config/parse-env.d.ts.map +1 -0
  61. package/dest/config/parse-env.js +7 -0
  62. package/dest/config/secret_value.d.ts +1 -1
  63. package/dest/config/secret_value.d.ts.map +1 -1
  64. package/dest/config/secret_value.js +3 -1
  65. package/dest/crypto/aes128/index.d.ts +1 -1
  66. package/dest/crypto/aes128/index.d.ts.map +1 -1
  67. package/dest/crypto/aes128/index.js +2 -6
  68. package/dest/crypto/bls/bn254_keystore.d.ts +15 -15
  69. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  70. package/dest/crypto/bls/bn254_keystore.js +1 -1
  71. package/dest/crypto/bls/index.d.ts +1 -1
  72. package/dest/crypto/bls/index.js +1 -1
  73. package/dest/crypto/bn254/index.d.ts +35 -51
  74. package/dest/crypto/bn254/index.d.ts.map +1 -1
  75. package/dest/crypto/bn254/index.js +51 -137
  76. package/dest/crypto/ecdsa/index.d.ts +1 -1
  77. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  78. package/dest/crypto/ecdsa/index.js +4 -12
  79. package/dest/crypto/ecdsa/signature.d.ts +2 -2
  80. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  81. package/dest/crypto/ecdsa/signature.js +2 -2
  82. package/dest/crypto/grumpkin/index.d.ts +4 -2
  83. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  84. package/dest/crypto/grumpkin/index.js +7 -16
  85. package/dest/crypto/keccak/index.d.ts +1 -1
  86. package/dest/crypto/keys/index.d.ts +2 -2
  87. package/dest/crypto/keys/index.d.ts.map +1 -1
  88. package/dest/crypto/keys/index.js +2 -4
  89. package/dest/crypto/pedersen/index.d.ts +1 -1
  90. package/dest/crypto/pedersen/pedersen.noble.d.ts +1 -1
  91. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
  92. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  93. package/dest/crypto/pedersen/pedersen.wasm.js +4 -10
  94. package/dest/crypto/poseidon/index.d.ts +2 -3
  95. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  96. package/dest/crypto/poseidon/index.js +5 -24
  97. package/dest/crypto/random/index.d.ts +1 -1
  98. package/dest/crypto/random/index.d.ts.map +1 -1
  99. package/dest/crypto/random/randomness_singleton.d.ts +4 -3
  100. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  101. package/dest/crypto/random/randomness_singleton.js +5 -5
  102. package/dest/crypto/schnorr/index.d.ts +3 -2
  103. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  104. package/dest/crypto/schnorr/index.js +4 -10
  105. package/dest/crypto/schnorr/signature.d.ts +2 -2
  106. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  107. package/dest/crypto/schnorr/signature.js +2 -2
  108. package/dest/crypto/secp256k1/index.d.ts +1 -1
  109. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  110. package/dest/crypto/secp256k1/index.js +3 -9
  111. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  112. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  113. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  114. package/dest/crypto/secp256k1-signer/utils.d.ts +1 -1
  115. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  116. package/dest/crypto/serialize.d.ts +1 -1
  117. package/dest/crypto/sha256/index.d.ts +2 -2
  118. package/dest/crypto/sha256/index.d.ts.map +1 -1
  119. package/dest/crypto/sha256/index.js +1 -1
  120. package/dest/crypto/sha512/index.d.ts +3 -3
  121. package/dest/crypto/sha512/index.d.ts.map +1 -1
  122. package/dest/crypto/sha512/index.js +1 -1
  123. package/dest/crypto/signature/index.d.ts +2 -2
  124. package/dest/crypto/signature/index.d.ts.map +1 -1
  125. package/dest/crypto/sync/index.d.ts +1 -1
  126. package/dest/crypto/sync/index.js +1 -3
  127. package/dest/crypto/sync/pedersen/index.d.ts +2 -2
  128. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  129. package/dest/crypto/sync/pedersen/index.js +1 -1
  130. package/dest/crypto/sync/poseidon/index.d.ts +2 -3
  131. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  132. package/dest/crypto/sync/poseidon/index.js +1 -9
  133. package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
  134. package/dest/curves/bls12/field.d.ts.map +1 -0
  135. package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +12 -9
  136. package/dest/curves/bls12/index.d.ts +3 -0
  137. package/dest/curves/bls12/index.d.ts.map +1 -0
  138. package/dest/curves/bls12/index.js +2 -0
  139. package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +4 -4
  140. package/dest/curves/bls12/point.d.ts.map +1 -0
  141. package/dest/{fields/bls12_point.js → curves/bls12/point.js} +10 -8
  142. package/dest/{fields/fields.d.ts → curves/bn254/field.d.ts} +16 -15
  143. package/dest/curves/bn254/field.d.ts.map +1 -0
  144. package/dest/{fields/fields.js → curves/bn254/field.js} +49 -49
  145. package/dest/curves/bn254/index.d.ts +3 -0
  146. package/dest/curves/bn254/index.d.ts.map +1 -0
  147. package/dest/curves/bn254/index.js +2 -0
  148. package/dest/curves/bn254/point.d.ts +54 -0
  149. package/dest/curves/bn254/point.d.ts.map +1 -0
  150. package/dest/curves/bn254/point.js +143 -0
  151. package/dest/curves/grumpkin/index.d.ts +10 -0
  152. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  153. package/dest/curves/grumpkin/index.js +3 -0
  154. package/dest/{fields → curves/grumpkin}/point.d.ts +12 -3
  155. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  156. package/dest/{fields → curves/grumpkin}/point.js +24 -7
  157. package/dest/decorators/index.d.ts +1 -1
  158. package/dest/decorators/memoize.d.ts +1 -1
  159. package/dest/decorators/memoize.d.ts.map +1 -1
  160. package/dest/error/index.d.ts +1 -1
  161. package/dest/eth-address/index.d.ts +12 -2
  162. package/dest/eth-address/index.d.ts.map +1 -1
  163. package/dest/eth-address/index.js +27 -3
  164. package/dest/eth-signature/eth_signature.d.ts +1 -1
  165. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  166. package/dest/eth-signature/index.d.ts +1 -1
  167. package/dest/fs/index.d.ts +1 -1
  168. package/dest/fs/run_in_dir.d.ts +1 -1
  169. package/dest/fs/try_rm_dir.d.ts +1 -1
  170. package/dest/iterable/all.d.ts +1 -1
  171. package/dest/iterable/filter.d.ts +1 -1
  172. package/dest/iterable/index.d.ts +1 -1
  173. package/dest/iterable/isAsyncIt.d.ts +1 -1
  174. package/dest/iterable/map.d.ts +1 -1
  175. package/dest/iterable/peek.d.ts +1 -1
  176. package/dest/iterable/sort.d.ts +1 -1
  177. package/dest/iterable/take.d.ts +1 -1
  178. package/dest/iterable/toArray.d.ts +1 -1
  179. package/dest/iterator/filter.d.ts +3 -0
  180. package/dest/iterator/filter.d.ts.map +1 -0
  181. package/dest/iterator/filter.js +7 -0
  182. package/dest/iterator/index.d.ts +2 -0
  183. package/dest/iterator/index.d.ts.map +1 -0
  184. package/dest/iterator/index.js +1 -0
  185. package/dest/jest/setup.js +4 -1
  186. package/dest/json-rpc/client/fetch.d.ts +1 -1
  187. package/dest/json-rpc/client/index.d.ts +1 -1
  188. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
  189. package/dest/json-rpc/client/undici.d.ts +1 -1
  190. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  191. package/dest/json-rpc/client/undici.js +21 -4
  192. package/dest/json-rpc/convert.d.ts +1 -1
  193. package/dest/json-rpc/errors.d.ts +1 -1
  194. package/dest/json-rpc/errors.d.ts.map +1 -1
  195. package/dest/json-rpc/fixtures/class_a.d.ts +1 -1
  196. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  197. package/dest/json-rpc/fixtures/class_b.d.ts +1 -1
  198. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  199. package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
  200. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  201. package/dest/json-rpc/index.d.ts +1 -1
  202. package/dest/json-rpc/js_utils.d.ts +1 -1
  203. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  204. package/dest/json-rpc/server/index.d.ts +1 -1
  205. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +1 -1
  206. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  207. package/dest/json-rpc/server/safe_json_rpc_server.js +1 -1
  208. package/dest/json-rpc/test/index.d.ts +1 -1
  209. package/dest/json-rpc/test/integration.d.ts +1 -1
  210. package/dest/log/console.d.ts +1 -1
  211. package/dest/log/gcloud-logger-config.d.ts +1 -1
  212. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  213. package/dest/log/index.d.ts +1 -1
  214. package/dest/log/libp2p_logger.d.ts +5 -2
  215. package/dest/log/libp2p_logger.d.ts.map +1 -1
  216. package/dest/log/libp2p_logger.js +14 -4
  217. package/dest/log/log-filters.d.ts +1 -1
  218. package/dest/log/log-levels.d.ts +1 -1
  219. package/dest/log/log_fn.d.ts +1 -1
  220. package/dest/log/noir_debug_log_util.d.ts +1 -1
  221. package/dest/log/pino-logger-server.d.ts +9 -0
  222. package/dest/log/pino-logger-server.d.ts.map +1 -0
  223. package/dest/log/pino-logger-server.js +18 -0
  224. package/dest/log/pino-logger.d.ts +38 -9
  225. package/dest/log/pino-logger.d.ts.map +1 -1
  226. package/dest/log/pino-logger.js +116 -27
  227. package/dest/message/index.d.ts +1 -1
  228. package/dest/message/index.d.ts.map +1 -1
  229. package/dest/mutex/index.d.ts +1 -1
  230. package/dest/mutex/index.d.ts.map +1 -1
  231. package/dest/mutex/mutex_database.d.ts +1 -1
  232. package/dest/noir/index.d.ts +1 -1
  233. package/dest/noir/noir_package_config.d.ts +9 -9
  234. package/dest/number/index.d.ts +1 -1
  235. package/dest/profiler/index.d.ts +1 -1
  236. package/dest/profiler/profiler.d.ts +1 -1
  237. package/dest/promise/index.d.ts +1 -1
  238. package/dest/promise/running-promise.d.ts +1 -1
  239. package/dest/promise/running-promise.d.ts.map +1 -1
  240. package/dest/promise/utils.d.ts +1 -1
  241. package/dest/queue/base_memory_queue.d.ts +1 -1
  242. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  243. package/dest/queue/batch_queue.d.ts +1 -1
  244. package/dest/queue/batch_queue.d.ts.map +1 -1
  245. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  246. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  247. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  248. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  249. package/dest/queue/index.d.ts +1 -1
  250. package/dest/queue/priority_memory_queue.d.ts +1 -1
  251. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  252. package/dest/queue/priority_queue.d.ts +1 -1
  253. package/dest/queue/priority_queue.d.ts.map +1 -1
  254. package/dest/queue/semaphore.d.ts +5 -1
  255. package/dest/queue/semaphore.d.ts.map +1 -1
  256. package/dest/queue/serial_queue.d.ts +1 -1
  257. package/dest/queue/serial_queue.d.ts.map +1 -1
  258. package/dest/retry/index.d.ts +11 -1
  259. package/dest/retry/index.d.ts.map +1 -1
  260. package/dest/retry/index.js +11 -0
  261. package/dest/running-promise/index.d.ts +1 -1
  262. package/dest/schemas/api.d.ts +1 -1
  263. package/dest/schemas/index.d.ts +1 -1
  264. package/dest/schemas/parse.d.ts +1 -1
  265. package/dest/schemas/schemas.d.ts +15 -17
  266. package/dest/schemas/schemas.d.ts.map +1 -1
  267. package/dest/schemas/schemas.js +14 -10
  268. package/dest/schemas/types.d.ts +31 -1
  269. package/dest/schemas/types.d.ts.map +1 -1
  270. package/dest/schemas/types.js +25 -1
  271. package/dest/schemas/utils.d.ts +4 -4
  272. package/dest/schemas/utils.d.ts.map +1 -1
  273. package/dest/schemas/utils.js +15 -5
  274. package/dest/serialize/buffer_reader.d.ts +7 -4
  275. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  276. package/dest/serialize/buffer_reader.js +13 -4
  277. package/dest/serialize/field_reader.d.ts +2 -2
  278. package/dest/serialize/field_reader.d.ts.map +1 -1
  279. package/dest/serialize/field_reader.js +1 -1
  280. package/dest/serialize/free_funcs.d.ts +2 -2
  281. package/dest/serialize/free_funcs.d.ts.map +1 -1
  282. package/dest/serialize/free_funcs.js +1 -1
  283. package/dest/serialize/index.d.ts +1 -1
  284. package/dest/serialize/serialize.d.ts +2 -2
  285. package/dest/serialize/serialize.d.ts.map +1 -1
  286. package/dest/serialize/serialize.js +1 -1
  287. package/dest/serialize/type_registry.d.ts +1 -1
  288. package/dest/serialize/type_registry.d.ts.map +1 -1
  289. package/dest/serialize/types.d.ts +1 -1
  290. package/dest/sleep/index.d.ts +3 -1
  291. package/dest/sleep/index.d.ts.map +1 -1
  292. package/dest/sleep/index.js +4 -0
  293. package/dest/string/index.d.ts +1 -1
  294. package/dest/testing/files/index.d.ts +2 -1
  295. package/dest/testing/files/index.d.ts.map +1 -1
  296. package/dest/testing/files/index.js +1 -1
  297. package/dest/testing/formatting.d.ts +1 -1
  298. package/dest/testing/index.d.ts +1 -1
  299. package/dest/testing/port_allocator.d.ts +1 -1
  300. package/dest/testing/snapshot_serializer.d.ts +1 -1
  301. package/dest/testing/test_data.d.ts +1 -1
  302. package/dest/timer/date.d.ts +2 -1
  303. package/dest/timer/date.d.ts.map +1 -1
  304. package/dest/timer/date.js +3 -0
  305. package/dest/timer/elapsed.d.ts +1 -1
  306. package/dest/timer/index.d.ts +1 -1
  307. package/dest/timer/timeout.d.ts +1 -1
  308. package/dest/timer/timeout.d.ts.map +1 -1
  309. package/dest/timer/timer.d.ts +1 -1
  310. package/dest/timer/timer.d.ts.map +1 -1
  311. package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
  312. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  313. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
  314. package/dest/transport/dispatch/messages.d.ts +1 -1
  315. package/dest/transport/index.d.ts +1 -1
  316. package/dest/transport/interface/connector.d.ts +1 -1
  317. package/dest/transport/interface/listener.d.ts +1 -1
  318. package/dest/transport/interface/socket.d.ts +1 -1
  319. package/dest/transport/interface/transferable.d.ts +1 -1
  320. package/dest/transport/node/index.d.ts +1 -1
  321. package/dest/transport/node/node_connector.d.ts +1 -1
  322. package/dest/transport/node/node_connector.d.ts.map +1 -1
  323. package/dest/transport/node/node_connector_socket.d.ts +1 -1
  324. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  325. package/dest/transport/node/node_listener.d.ts +1 -1
  326. package/dest/transport/node/node_listener.d.ts.map +1 -1
  327. package/dest/transport/node/node_listener_socket.d.ts +1 -1
  328. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  329. package/dest/transport/transport_client.d.ts +1 -1
  330. package/dest/transport/transport_client.d.ts.map +1 -1
  331. package/dest/transport/transport_server.d.ts +1 -10
  332. package/dest/transport/transport_server.d.ts.map +1 -1
  333. package/dest/trees/balanced_merkle_tree_root.d.ts +17 -0
  334. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  335. package/dest/trees/balanced_merkle_tree_root.js +51 -0
  336. package/dest/trees/hasher.d.ts +3 -1
  337. package/dest/trees/hasher.d.ts.map +1 -1
  338. package/dest/trees/hasher.js +10 -5
  339. package/dest/trees/index.d.ts +4 -3
  340. package/dest/trees/index.d.ts.map +1 -1
  341. package/dest/trees/index.js +3 -2
  342. package/dest/trees/indexed_merkle_tree.d.ts +1 -1
  343. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  344. package/dest/trees/indexed_merkle_tree.js +1 -1
  345. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  346. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  347. package/dest/trees/indexed_tree_leaf.d.ts +1 -1
  348. package/dest/trees/membership_witness.d.ts +7 -18
  349. package/dest/trees/membership_witness.d.ts.map +1 -1
  350. package/dest/trees/membership_witness.js +10 -1
  351. package/dest/trees/merkle_tree.d.ts +1 -1
  352. package/dest/trees/merkle_tree.d.ts.map +1 -1
  353. package/dest/trees/merkle_tree_calculator.d.ts +2 -12
  354. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  355. package/dest/trees/merkle_tree_calculator.js +2 -32
  356. package/dest/trees/sibling_path.d.ts +5 -38
  357. package/dest/trees/sibling_path.d.ts.map +1 -1
  358. package/dest/trees/sibling_path.js +3 -3
  359. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +6 -6
  360. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  361. package/dest/trees/unbalanced_merkle_tree_calculator.js +34 -42
  362. package/dest/trees/unbalanced_merkle_tree_root.d.ts +28 -0
  363. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  364. package/dest/trees/unbalanced_merkle_tree_root.js +84 -0
  365. package/dest/trees/unbalanced_tree_store.d.ts +5 -1
  366. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  367. package/dest/trees/unbalanced_tree_store.js +49 -1
  368. package/dest/types/index.d.ts +4 -2
  369. package/dest/types/index.d.ts.map +1 -1
  370. package/dest/types/index.js +3 -0
  371. package/dest/url/index.d.ts +1 -1
  372. package/dest/validation/index.d.ts +1 -1
  373. package/package.json +30 -9
  374. package/src/array/array.ts +0 -16
  375. package/src/array/index.ts +1 -0
  376. package/src/array/sorted_array.ts +133 -0
  377. package/src/branded-types/block_number.ts +117 -0
  378. package/src/branded-types/checkpoint_number.ts +115 -0
  379. package/src/branded-types/epoch.ts +88 -0
  380. package/src/branded-types/index.ts +7 -0
  381. package/src/branded-types/index_within_checkpoint.ts +88 -0
  382. package/src/branded-types/slot.ts +88 -0
  383. package/src/branded-types/types.ts +2 -0
  384. package/src/buffer/buffer16.ts +2 -2
  385. package/src/buffer/buffer32.ts +2 -2
  386. package/src/collection/array.ts +52 -0
  387. package/src/config/env_var.ts +50 -13
  388. package/src/config/index.ts +39 -6
  389. package/src/config/network_config.ts +2 -0
  390. package/src/config/parse-env.ts +4 -0
  391. package/src/crypto/aes128/index.ts +2 -2
  392. package/src/crypto/bls/bn254_keystore.ts +1 -1
  393. package/src/crypto/bls/index.ts +1 -1
  394. package/src/crypto/bn254/index.ts +50 -156
  395. package/src/crypto/ecdsa/index.ts +4 -4
  396. package/src/crypto/ecdsa/signature.ts +2 -2
  397. package/src/crypto/grumpkin/index.ts +8 -6
  398. package/src/crypto/keys/index.ts +2 -2
  399. package/src/crypto/pedersen/pedersen.wasm.ts +4 -4
  400. package/src/crypto/poseidon/index.ts +5 -15
  401. package/src/crypto/random/randomness_singleton.ts +6 -4
  402. package/src/crypto/schnorr/index.ts +5 -4
  403. package/src/crypto/schnorr/signature.ts +2 -2
  404. package/src/crypto/secp256k1/index.ts +3 -3
  405. package/src/crypto/sha256/index.ts +1 -1
  406. package/src/crypto/sha512/index.ts +1 -1
  407. package/src/crypto/signature/index.ts +1 -1
  408. package/src/crypto/sync/index.ts +1 -1
  409. package/src/crypto/sync/pedersen/index.ts +1 -1
  410. package/src/crypto/sync/poseidon/index.ts +1 -10
  411. package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +6 -6
  412. package/src/curves/bls12/index.ts +2 -0
  413. package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +7 -7
  414. package/src/{fields/fields.ts → curves/bn254/field.ts} +49 -56
  415. package/src/curves/bn254/index.ts +2 -0
  416. package/src/curves/bn254/point.ts +170 -0
  417. package/src/curves/grumpkin/index.ts +11 -0
  418. package/src/{fields → curves/grumpkin}/point.ts +26 -7
  419. package/src/eth-address/index.ts +27 -2
  420. package/src/iterator/filter.ts +11 -0
  421. package/src/iterator/index.ts +1 -0
  422. package/src/jest/setup.mjs +4 -1
  423. package/src/json-rpc/client/undici.ts +21 -3
  424. package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
  425. package/src/log/libp2p_logger.ts +12 -5
  426. package/src/log/pino-logger-server.ts +25 -0
  427. package/src/log/pino-logger.ts +138 -37
  428. package/src/queue/semaphore.ts +5 -0
  429. package/src/retry/index.ts +18 -0
  430. package/src/schemas/schemas.ts +24 -13
  431. package/src/schemas/types.ts +33 -0
  432. package/src/schemas/utils.ts +21 -8
  433. package/src/serialize/buffer_reader.ts +21 -9
  434. package/src/serialize/field_reader.ts +1 -1
  435. package/src/serialize/free_funcs.ts +1 -1
  436. package/src/serialize/serialize.ts +1 -1
  437. package/src/sleep/index.ts +6 -0
  438. package/src/testing/files/index.ts +1 -1
  439. package/src/timer/date.ts +4 -0
  440. package/src/trees/balanced_merkle_tree_root.ts +68 -0
  441. package/src/trees/hasher.ts +9 -0
  442. package/src/trees/index.ts +3 -2
  443. package/src/trees/indexed_merkle_tree.ts +1 -1
  444. package/src/trees/membership_witness.ts +9 -1
  445. package/src/trees/merkle_tree_calculator.ts +2 -35
  446. package/src/trees/sibling_path.ts +3 -3
  447. package/src/trees/unbalanced_merkle_tree_calculator.ts +32 -50
  448. package/src/trees/unbalanced_merkle_tree_root.ts +115 -0
  449. package/src/trees/unbalanced_tree_store.ts +57 -2
  450. package/src/types/index.ts +6 -1
  451. package/dest/crypto/bn254/bn254_utils.d.ts +0 -39
  452. package/dest/crypto/bn254/bn254_utils.d.ts.map +0 -1
  453. package/dest/crypto/bn254/bn254_utils.js +0 -56
  454. package/dest/crypto/index.d.ts +0 -17
  455. package/dest/crypto/index.d.ts.map +0 -1
  456. package/dest/crypto/index.js +0 -16
  457. package/dest/fields/bls12_fields.d.ts.map +0 -1
  458. package/dest/fields/bls12_point.d.ts.map +0 -1
  459. package/dest/fields/coordinate.d.ts +0 -66
  460. package/dest/fields/coordinate.d.ts.map +0 -1
  461. package/dest/fields/coordinate.js +0 -96
  462. package/dest/fields/fields.d.ts.map +0 -1
  463. package/dest/fields/index.d.ts +0 -6
  464. package/dest/fields/index.d.ts.map +0 -1
  465. package/dest/fields/index.js +0 -5
  466. package/dest/fields/point.d.ts.map +0 -1
  467. package/dest/index.d.ts +0 -30
  468. package/dest/index.d.ts.map +0 -1
  469. package/dest/index.js +0 -30
  470. package/dest/json-rpc/server/telemetry.d.ts +0 -2
  471. package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
  472. package/dest/json-rpc/server/telemetry.js +0 -0
  473. package/dest/trees/unbalanced_merkle_tree.d.ts +0 -28
  474. package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
  475. package/dest/trees/unbalanced_merkle_tree.js +0 -99
  476. package/src/crypto/bn254/bn254_utils.ts +0 -64
  477. package/src/crypto/index.ts +0 -16
  478. package/src/fields/coordinate.ts +0 -104
  479. package/src/fields/index.ts +0 -5
  480. package/src/index.ts +0 -30
  481. package/src/json-rpc/server/telemetry.ts +0 -0
  482. package/src/trees/unbalanced_merkle_tree.ts +0 -111
@@ -18,4 +18,4 @@ export declare class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreima
18
18
  computeTreeRoot(leaves?: Buffer[]): Promise<Buffer>;
19
19
  }
20
20
  export {};
21
- //# sourceMappingURL=indexed_merkle_tree_calculator.d.ts.map
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvaW5kZXhlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdELFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLHVCQUF1QjtJQUM3RCxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDL0I7QUFFRDs7R0FFRztBQUNILHFCQUFhLDJCQUEyQixDQUFDLENBQUMsU0FBUyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsTUFBTTtJQUV4RixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLE9BQU87SUFKakIsT0FBTyxlQUtIO0lBRUosT0FBYSxNQUFNLENBQUMsQ0FBQyxTQUFTLHVCQUF1QixFQUFFLENBQUMsU0FBUyxNQUFNLEVBQ3JFLE1BQU0sRUFBRSxDQUFDLEVBQ1QsTUFBTSxFQUFFLFdBQVcsRUFDbkIsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUMvQixRQUFRLHNCQUFtQiw4Q0FPNUI7SUFFSyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FxQ3BFO0lBRUssZUFBZSxDQUFDLE1BQU0sR0FBRSxNQUFNLEVBQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBa0I1RDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"indexed_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/indexed_merkle_tree_calculator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,UAAU,mBAAmB,CAAC,CAAC,SAAS,uBAAuB;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,2BAA2B,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM;IAExF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAJjB,OAAO;WAOM,MAAM,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM,EACrE,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC/B,QAAQ,sBAAmB;IASvB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAuC/D,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB9D"}
1
+ {"version":3,"file":"indexed_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/indexed_merkle_tree_calculator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,UAAU,mBAAmB,CAAC,CAAC,SAAS,uBAAuB;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,2BAA2B,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM;IAExF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAJjB,OAAO,eAKH;IAEJ,OAAa,MAAM,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM,EACrE,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC/B,QAAQ,sBAAmB,8CAO5B;IAEK,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAqCpE;IAEK,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB5D;CACF"}
@@ -52,4 +52,4 @@ export interface IndexedTreeLeafPreimage extends TreeLeafPreimage {
52
52
  */
53
53
  getNextIndex(): bigint;
54
54
  }
55
- //# sourceMappingURL=indexed_tree_leaf.d.ts.map
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF90cmVlX2xlYWYuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmVlcy9pbmRleGVkX3RyZWVfbGVhZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sV0FBVyxlQUFlO0lBQzlCOztPQUVHO0lBQ0gsTUFBTSxJQUFJLE1BQU0sQ0FBQztJQUNqQjs7T0FFRztJQUNILFFBQVEsSUFBSSxNQUFNLENBQUM7SUFDbkI7O09BRUc7SUFDSCxPQUFPLElBQUksT0FBTyxDQUFDO0lBQ25COzs7O09BSUc7SUFDSCxRQUFRLENBQUMsT0FBTyxFQUFFLGVBQWUsR0FBRyxlQUFlLENBQUM7Q0FDckQ7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0I7O09BRUc7SUFDSCxNQUFNLElBQUksTUFBTSxDQUFDO0lBQ2pCOztPQUVHO0lBQ0gsTUFBTSxJQUFJLGVBQWUsQ0FBQztJQUMxQjs7T0FFRztJQUNILFFBQVEsSUFBSSxNQUFNLENBQUM7SUFDbkI7O09BRUc7SUFDSCxZQUFZLElBQUksTUFBTSxFQUFFLENBQUM7Q0FDMUI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFDL0QsVUFBVSxJQUFJLE1BQU0sQ0FBQztJQUNyQjs7T0FFRztJQUNILFlBQVksSUFBSSxNQUFNLENBQUM7Q0FDeEIifQ==
@@ -1,4 +1,4 @@
1
- import { Fr } from '../fields/fields.js';
1
+ import { Fr } from '../curves/bn254/field.js';
2
2
  import { BufferReader, type Tuple } from '../serialize/index.js';
3
3
  import type { SiblingPath } from './sibling_path.js';
4
4
  /**
@@ -29,22 +29,11 @@ export declare class MembershipWitness<N extends number> {
29
29
  toBuffer(): Buffer<ArrayBufferLike>;
30
30
  toJSON(): Buffer<ArrayBufferLike>;
31
31
  toFields(): Fr[];
32
- static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Buffer<ArrayBuffer>, string>, import("zod").ZodEffects<import("zod").ZodObject<{
33
- type: import("zod").ZodLiteral<"Buffer">;
34
- data: import("zod").ZodArray<import("zod").ZodNumber, "many">;
35
- }, "strip", import("zod").ZodTypeAny, {
36
- type: "Buffer";
37
- data: number[];
38
- }, {
39
- type: "Buffer";
40
- data: number[];
41
- }>, Buffer<ArrayBuffer>, {
42
- type: "Buffer";
43
- data: number[];
44
- }>]>, MembershipWitness<N>, string | {
45
- type: "Buffer";
46
- data: number[];
47
- }>;
32
+ /**
33
+ * Returns a representation of the membership witness as expected by intrinsic Noir deserialization.
34
+ */
35
+ toNoirRepresentation(): (string | string[])[];
36
+ static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("../schemas/types.js").ZodFor<Buffer<ArrayBufferLike>>, MembershipWitness<N>, any>;
48
37
  /**
49
38
  * Creates a random membership witness. Used for testing purposes.
50
39
  * @param pathSize - Number of fields in the sibling path.
@@ -75,4 +64,4 @@ export declare class MembershipWitness<N extends number> {
75
64
  };
76
65
  static fromSiblingPath<N extends number>(leafIndex: bigint, siblingPath: SiblingPath<N>): MembershipWitness<N>;
77
66
  }
78
- //# sourceMappingURL=membership_witness.d.ts.map
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyc2hpcF93aXRuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvbWVtYmVyc2hpcF93aXRuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssS0FBSyxFQUFxQixNQUFNLHVCQUF1QixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJEOztHQUVHO0FBQ0gscUJBQWEsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLE1BQU07SUFNM0M7O09BRUc7SUFDSSxTQUFTLEVBQUUsTUFBTTtJQUN4Qjs7T0FFRztJQUNJLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQVpsQztJQUNFOztPQUVHO0lBQ0gsUUFBUSxFQUFFLENBQUM7SUFDWDs7T0FFRztJQUNJLFNBQVMsRUFBRSxNQUFNO0lBQ3hCOztPQUVHO0lBQ0ksV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBR2pDO0lBRUQsUUFBUSw0QkFFUDtJQUVELE1BQU0sNEJBRUw7SUFFRCxRQUFRLElBQUksRUFBRSxFQUFFLENBRWY7SUFFRDs7T0FFRztJQUNJLG9CQUFvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FHbkQ7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsc0hBRXpDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQWMsTUFBTSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsd0JBUWpEO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFjLEtBQUssQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxTQUFLLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBS3ZGO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBTS9HO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUtoRztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRztRQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFFLENBU2xIO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FFN0c7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"membership_witness.d.ts","sourceRoot":"","sources":["../../src/trees/membership_witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAqB,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAM3C;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;;IAXhC;;OAEG;IACH,QAAQ,EAAE,CAAC;IACX;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAKlC,QAAQ;IAIR,MAAM;IAIN,QAAQ,IAAI,EAAE,EAAE;IAIhB,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;IAI1C;;;;OAIG;WACW,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC;IAUlD;;;;;OAKG;WACW,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,SAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAOxF,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAQhH;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAOjG;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG;QAAE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;KAAE;IAWnH,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;CAG/G"}
1
+ {"version":3,"file":"membership_witness.d.ts","sourceRoot":"","sources":["../../src/trees/membership_witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAqB,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAM3C;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAZlC;IACE;;OAEG;IACH,QAAQ,EAAE,CAAC;IACX;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAGjC;IAED,QAAQ,4BAEP;IAED,MAAM,4BAEL;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED;;OAEG;IACI,oBAAoB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAGnD;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,sHAEzC;IAED;;;;OAIG;IACH,OAAc,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,wBAQjD;IAED;;;;;OAKG;IACH,OAAc,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,SAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKvF;IAED,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAM/G;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKhG;IAED;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG;QAAE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;KAAE,CASlH;IAED,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAE7G;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { assertMemberLength } from '../array/array.js';
2
2
  import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
3
- import { Fr } from '../fields/fields.js';
3
+ import { Fr } from '../curves/bn254/field.js';
4
4
  import { schemas } from '../schemas/schemas.js';
5
5
  import { BufferReader, serializeToBuffer } from '../serialize/index.js';
6
6
  /**
@@ -31,6 +31,15 @@ import { BufferReader, serializeToBuffer } from '../serialize/index.js';
31
31
  ...this.siblingPath
32
32
  ];
33
33
  }
34
+ /**
35
+ * Returns a representation of the membership witness as expected by intrinsic Noir deserialization.
36
+ */ toNoirRepresentation() {
37
+ // TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
38
+ return [
39
+ new Fr(this.leafIndex).toString(),
40
+ this.siblingPath.map((fr)=>fr.toString())
41
+ ];
42
+ }
34
43
  static schemaFor(size) {
35
44
  return schemas.Buffer.transform((b)=>MembershipWitness.fromBuffer(b, size));
36
45
  }
@@ -13,4 +13,4 @@ export declare class MerkleTree {
13
13
  /** Returns a nice string representation of the tree, useful for debugging purposes. */
14
14
  drawTree(elemSize?: number): string;
15
15
  }
16
- //# sourceMappingURL=merkle_tree.d.ts.map
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmVlcy9tZXJrbGVfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwSEFBMEg7QUFDMUgscUJBQWEsVUFBVTthQUVILE1BQU0sRUFBRSxNQUFNO2FBQ2QsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUZqQyxZQUNrQixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFNaEM7SUFFRCxJQUFJLElBQUksSUFBSSxNQUFNLENBRWpCO0lBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFLENBRXJCO0lBRUQsd0ZBQXdGO0lBQ2pGLGNBQWMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzVDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBd0I5QyxrREFBa0Q7SUFDM0MsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLFVBRTlCO0lBRUQsdUZBQXVGO0lBQ2hGLFFBQVEsQ0FBQyxRQUFRLFNBQUksVUFxQjNCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,qBAAa,UAAU;aAEH,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,MAAM,EAAE;gBADf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE;IAQjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAED,wFAAwF;IACjF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAC3C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAwB7C,kDAAkD;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM;IAI/B,uFAAuF;IAChF,QAAQ,CAAC,QAAQ,SAAI;CAsB7B"}
1
+ {"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,qBAAa,UAAU;aAEH,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,MAAM,EAAE;IAFjC,YACkB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EAMhC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAED,wFAAwF;IACjF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAwB9C,kDAAkD;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,UAE9B;IAED,uFAAuF;IAChF,QAAQ,CAAC,QAAQ,SAAI,UAqB3B;CACF"}
@@ -1,4 +1,3 @@
1
- import { sha256Trunc } from '@aztec/foundation/crypto';
2
1
  import { MerkleTree } from './merkle_tree.js';
3
2
  /**
4
3
  * Merkle tree calculator.
@@ -8,17 +7,8 @@ export declare class MerkleTreeCalculator {
8
7
  private zeroHashes;
9
8
  private hasher;
10
9
  private constructor();
11
- static create(height: number, zeroLeaf?: Buffer, hasher?: (left: Buffer, right: Buffer) => Promise<Buffer<ArrayBuffer>>): Promise<MerkleTreeCalculator>;
10
+ static create(height: number, zeroLeaf?: Buffer, hasher?: (left: Buffer<ArrayBufferLike>, right: Buffer<ArrayBufferLike>) => Promise<Buffer<ArrayBuffer>>): Promise<MerkleTreeCalculator>;
12
11
  computeTree(leaves?: Buffer[]): Promise<MerkleTree>;
13
12
  computeTreeRoot(leaves?: Buffer[]): Promise<Buffer>;
14
- /**
15
- * Computes the Merkle root with the provided leaves **synchronously**.
16
- *
17
- * This method uses a synchronous hash function (defaults to `sha256Trunc`) and **does not** allow for padding.
18
- * If the number of leaves is not a power of two, it throws an error.
19
- * This contrasts with the above non-static async method `computeTreeRoot`, which can handle any number of leaves by
20
- * padding with zero hashes.
21
- */
22
- static computeTreeRootSync(leaves: Buffer[], hasher?: typeof sha256Trunc): Buffer;
23
13
  }
24
- //# sourceMappingURL=merkle_tree_calculator.d.ts.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfY2FsY3VsYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyZWVzL21lcmtsZV90cmVlX2NhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOztHQUVHO0FBQ0gscUJBQWEsb0JBQW9CO0lBRTdCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLE1BQU07SUFIaEIsT0FBTyxlQU1OO0lBRUQsT0FBYSxNQUFNLENBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsUUFBUSxHQUFFLE1BQXlCLEVBQ25DLE1BQU0sa0dBQ2tFLGlDQU96RTtJQUVLLFdBQVcsQ0FBQyxNQUFNLEdBQUUsTUFBTSxFQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQW9CNUQ7SUFFSyxlQUFlLENBQUMsTUFBTSxHQUFFLE1BQU0sRUFBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FrQjVEO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree_calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IAHhB,OAAO;WAQM,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAyB,EACnC,MAAM,IAAU,MAAM,MAAM,EAAE,OAAO,MAAM,iCAC4B;IASnE,WAAW,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAsBvD,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB7D;;;;;;;OAOG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,qBAAc,GAAG,MAAM;CAwB3E"}
1
+ {"version":3,"file":"merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree_calculator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IAHhB,OAAO,eAMN;IAED,OAAa,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAyB,EACnC,MAAM,kGACkE,iCAOzE;IAEK,WAAW,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB5D;IAEK,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB5D;CACF"}
@@ -1,4 +1,4 @@
1
- import { pedersenHash, sha256Trunc } from '@aztec/foundation/crypto';
1
+ import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
2
2
  import { MerkleTree } from './merkle_tree.js';
3
3
  /**
4
4
  * Merkle tree calculator.
@@ -12,7 +12,7 @@ import { MerkleTree } from './merkle_tree.js';
12
12
  this.hasher = hasher;
13
13
  this.hasher = hasher;
14
14
  }
15
- static async create(height, zeroLeaf = Buffer.alloc(32), hasher = async (left, right)=>(await pedersenHash([
15
+ static async create(height, zeroLeaf = Buffer.alloc(32), hasher = async (left, right)=>(await poseidon2Hash([
16
16
  left,
17
17
  right
18
18
  ])).toBuffer()) {
@@ -58,34 +58,4 @@ import { MerkleTree } from './merkle_tree.js';
58
58
  }
59
59
  return leaves[0];
60
60
  }
61
- /**
62
- * Computes the Merkle root with the provided leaves **synchronously**.
63
- *
64
- * This method uses a synchronous hash function (defaults to `sha256Trunc`) and **does not** allow for padding.
65
- * If the number of leaves is not a power of two, it throws an error.
66
- * This contrasts with the above non-static async method `computeTreeRoot`, which can handle any number of leaves by
67
- * padding with zero hashes.
68
- */ static computeTreeRootSync(leaves, hasher = sha256Trunc) {
69
- if (leaves.length === 0) {
70
- throw new Error('Cannot compute a Merkle root with no leaves');
71
- }
72
- const height = Math.log2(leaves.length);
73
- if (!Number.isInteger(height)) {
74
- throw new Error('Cannot compute a Merkle root with a non-power-of-two number of leaves');
75
- }
76
- let nodes = leaves.slice();
77
- for(let i = 0; i < height; ++i){
78
- let j = 0;
79
- for(; j < nodes.length / 2; ++j){
80
- const l = nodes[j * 2];
81
- const r = nodes[j * 2 + 1];
82
- nodes[j] = hasher(Buffer.concat([
83
- l,
84
- r
85
- ]));
86
- }
87
- nodes = nodes.slice(0, j);
88
- }
89
- return nodes[0];
90
- }
91
61
  }
@@ -1,4 +1,4 @@
1
- import { Fr } from '../fields/index.js';
1
+ import { Fr } from '../curves/bn254/index.js';
2
2
  import { type Tuple } from '../serialize/index.js';
3
3
  import type { Hasher } from './hasher.js';
4
4
  /**
@@ -25,41 +25,8 @@ export declare class SiblingPath<N extends number> {
25
25
  pathSize: N,
26
26
  /** The sibling path data. */
27
27
  path: Buffer[]);
28
- static get schema(): import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Buffer<ArrayBuffer>, string>, import("zod").ZodEffects<import("zod").ZodObject<{
29
- type: import("zod").ZodLiteral<"Buffer">;
30
- data: import("zod").ZodArray<import("zod").ZodNumber, "many">;
31
- }, "strip", import("zod").ZodTypeAny, {
32
- type: "Buffer";
33
- data: number[];
34
- }, {
35
- type: "Buffer";
36
- data: number[];
37
- }>, Buffer<ArrayBuffer>, {
38
- type: "Buffer";
39
- data: number[];
40
- }>]>, SiblingPath<number>, string | {
41
- type: "Buffer";
42
- data: number[];
43
- }>;
44
- static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Buffer<ArrayBuffer>, string>, import("zod").ZodEffects<import("zod").ZodObject<{
45
- type: import("zod").ZodLiteral<"Buffer">;
46
- data: import("zod").ZodArray<import("zod").ZodNumber, "many">;
47
- }, "strip", import("zod").ZodTypeAny, {
48
- type: "Buffer";
49
- data: number[];
50
- }, {
51
- type: "Buffer";
52
- data: number[];
53
- }>, Buffer<ArrayBuffer>, {
54
- type: "Buffer";
55
- data: number[];
56
- }>]>, SiblingPath<N>, string | {
57
- type: "Buffer";
58
- data: number[];
59
- }>, SiblingPath<N>, string | {
60
- type: "Buffer";
61
- data: number[];
62
- }>;
28
+ static get schema(): import("zod").ZodEffects<import("../schemas/types.js").ZodFor<Buffer<ArrayBufferLike>>, SiblingPath<number>, any>;
29
+ static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("zod").ZodEffects<import("../schemas/types.js").ZodFor<Buffer<ArrayBufferLike>>, SiblingPath<N>, any>, SiblingPath<N>, any>;
63
30
  toJSON(): Buffer<ArrayBufferLike>;
64
31
  /**
65
32
  * Returns sibling path hashed up from the a element.
@@ -126,5 +93,5 @@ export declare class SiblingPath<N extends number> {
126
93
  getSubtreeSiblingPath<SubtreeHeight extends number, SubtreeSiblingPathHeight extends number>(subtreeHeight: SubtreeHeight): SiblingPath<SubtreeSiblingPathHeight>;
127
94
  }
128
95
  /** Computes the expected root of a merkle tree given a leaf and its sibling path. */
129
- export declare function computeRootFromSiblingPath(leaf: Buffer, siblingPath: Buffer[], index: number, hasher?: (left: Buffer, right: Buffer) => Promise<Buffer<ArrayBufferLike>>): Promise<Buffer<ArrayBufferLike>>;
130
- //# sourceMappingURL=sibling_path.d.ts.map
96
+ export declare function computeRootFromSiblingPath(leaf: Buffer, siblingPath: Buffer[], index: number, hasher?: (left: Buffer<ArrayBufferLike>, right: Buffer<ArrayBufferLike>) => Promise<Buffer<ArrayBufferLike>>): Promise<Buffer<ArrayBufferLike>>;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2libGluZ19wYXRoLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvc2libGluZ19wYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQ0wsS0FBSyxLQUFLLEVBSVgsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUM7Ozs7Ozs7OztHQVNHO0FBQ0gscUJBQWEsV0FBVyxDQUFDLENBQUMsU0FBUyxNQUFNO0lBU3JDLCtEQUErRDtJQUN4RCxRQUFRLEVBQUUsQ0FBQztJQVRwQixPQUFPLENBQUMsSUFBSSxDQUFtQjtJQUUvQjs7OztPQUlHO0lBQ0g7SUFDRSwrREFBK0Q7SUFDeEQsUUFBUSxFQUFFLENBQUM7SUFDbEIsNkJBQTZCO0lBQzdCLElBQUksRUFBRSxNQUFNLEVBQUUsRUFHZjtJQUVELE1BQU0sS0FBSyxNQUFNLHNIQUVoQjtJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQywrSkFLekM7SUFFRCxNQUFNLDRCQUVMO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBYyxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBUWpHO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLGtCQUd4QztJQUVEOzs7T0FHRztJQUNJLFFBQVEsSUFBSSxNQUFNLENBRXhCO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxJQUFJLE1BQU0sRUFBRSxDQUUvQjtJQUVEOzs7T0FHRztJQUNJLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FFdEI7SUFFRDs7O09BR0c7SUFDSSxPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FHN0I7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FHM0U7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSTs7O01BUTNEO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxJQUFJLE1BQU0sQ0FFeEI7SUFFRDs7OztPQUlHO0lBQ0gsT0FBYyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FFdkU7SUFFRDs7OztPQUlHO0lBQ0kscUJBQXFCLENBQUMsYUFBYSxTQUFTLE1BQU0sRUFBRSx3QkFBd0IsU0FBUyxNQUFNLEVBQ2hHLGFBQWEsRUFBRSxhQUFhLEdBQzNCLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUt2QztDQUNGO0FBRUQscUZBQXFGO0FBQ3JGLHdCQUFzQiwwQkFBMEIsQ0FDOUMsSUFBSSxFQUFFLE1BQU0sRUFDWixXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQ3JCLEtBQUssRUFBRSxNQUFNLEVBQ2IsTUFBTSxzR0FBeUYsb0NBUWhHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"sibling_path.d.ts","sourceRoot":"","sources":["../../src/trees/sibling_path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,OAAO,EACL,KAAK,KAAK,EAIX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;GASG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM;IASrC,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IATpB,OAAO,CAAC,IAAI,CAAmB;IAE/B;;;;OAIG;;IAED,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IAClB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,EAAE;IAKhB,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;OAEhB;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;;;;IAO1C,MAAM;IAIN;;;;;;OAMG;WACW,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAUlG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC;IAKzC;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;OAGG;IACI,aAAa,IAAI,MAAM,EAAE;IAIhC;;;OAGG;IACI,QAAQ,IAAI,EAAE,EAAE;IAIvB;;;OAGG;IACI,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAK9B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAK5E;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;;IAU5D;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;;OAIG;WACW,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAIxE;;;;OAIG;IACI,qBAAqB,CAAC,aAAa,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAChG,aAAa,EAAE,aAAa,GAC3B,WAAW,CAAC,wBAAwB,CAAC;CAMzC;AAED,qFAAqF;AACrF,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,IAAU,MAAM,MAAM,EAAE,OAAO,MAAM,qCAAmD,oCAQ/F"}
1
+ {"version":3,"file":"sibling_path.d.ts","sourceRoot":"","sources":["../../src/trees/sibling_path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EACL,KAAK,KAAK,EAIX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;GASG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM;IASrC,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IATpB,OAAO,CAAC,IAAI,CAAmB;IAE/B;;;;OAIG;IACH;IACE,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IAClB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,EAAE,EAGf;IAED,MAAM,KAAK,MAAM,sHAEhB;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,+JAKzC;IAED,MAAM,4BAEL;IAED;;;;;;OAMG;IACH,OAAc,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAQjG;IAED,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,kBAGxC;IAED;;;OAGG;IACI,QAAQ,IAAI,MAAM,CAExB;IAED;;;OAGG;IACI,aAAa,IAAI,MAAM,EAAE,CAE/B;IAED;;;OAGG;IACI,QAAQ,IAAI,EAAE,EAAE,CAEtB;IAED;;;OAGG;IACI,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAG7B;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAG3E;IAED;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;MAQ3D;IAED;;;OAGG;IACI,QAAQ,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,OAAc,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAEvE;IAED;;;;OAIG;IACI,qBAAqB,CAAC,aAAa,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAChG,aAAa,EAAE,aAAa,GAC3B,WAAW,CAAC,wBAAwB,CAAC,CAKvC;CACF;AAED,qFAAqF;AACrF,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,sGAAyF,oCAQhG"}
@@ -1,6 +1,6 @@
1
1
  import { makeTuple } from '../array/array.js';
2
- import { pedersenHash } from '../crypto/index.js';
3
- import { Fr } from '../fields/index.js';
2
+ import { poseidon2Hash } from '../crypto/poseidon/index.js';
3
+ import { Fr } from '../curves/bn254/index.js';
4
4
  import { schemas } from '../schemas/index.js';
5
5
  import { assertLength, deserializeArrayFromVector, serializeArrayOfBufferableToVector } from '../serialize/index.js';
6
6
  import { bufferToHex, hexToBuffer } from '../string/index.js';
@@ -131,7 +131,7 @@ import { bufferToHex, hexToBuffer } from '../string/index.js';
131
131
  return new SiblingPath(subtreePathSize, subtreeData);
132
132
  }
133
133
  }
134
- /** Computes the expected root of a merkle tree given a leaf and its sibling path. */ export async function computeRootFromSiblingPath(leaf, siblingPath, index, hasher = async (left, right)=>(await pedersenHash([
134
+ /** Computes the expected root of a merkle tree given a leaf and its sibling path. */ export async function computeRootFromSiblingPath(leaf, siblingPath, index, hasher = async (left, right)=>(await poseidon2Hash([
135
135
  left,
136
136
  right
137
137
  ])).toBuffer()) {
@@ -1,7 +1,6 @@
1
- import type { Hasher } from './hasher.js';
1
+ import { type Hasher } from './hasher.js';
2
2
  import { SiblingPath } from './sibling_path.js';
3
3
  import { type TreeNodeLocation } from './unbalanced_tree_store.js';
4
- export declare function computeCompressedUnbalancedMerkleTreeRoot(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, hasher?: Hasher['hash']): Buffer;
5
4
  /**
6
5
  * An ephemeral unbalanced Merkle tree implementation.
7
6
  * Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
@@ -13,11 +12,12 @@ export declare function computeCompressedUnbalancedMerkleTreeRoot(leaves: Buffer
13
12
  export declare class UnbalancedMerkleTreeCalculator {
14
13
  private readonly leaves;
15
14
  private readonly valueToCompress;
15
+ private readonly emptyRoot;
16
16
  private readonly hasher;
17
17
  private store;
18
18
  private leafLocations;
19
- constructor(leaves: Buffer[], valueToCompress: Buffer, hasher: Hasher['hash']);
20
- static create(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, hasher?: (left: Buffer, right: Buffer) => Buffer<ArrayBuffer>): UnbalancedMerkleTreeCalculator;
19
+ constructor(leaves: Buffer[], valueToCompress: Buffer, emptyRoot: Buffer, hasher: Hasher['hash']);
20
+ static create(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>, hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Buffer<ArrayBuffer>): UnbalancedMerkleTreeCalculator;
21
21
  /**
22
22
  * Returns the root of the tree.
23
23
  * @returns The root of the tree.
@@ -43,6 +43,6 @@ export declare class UnbalancedMerkleTreeCalculator {
43
43
  */
44
44
  private buildTree;
45
45
  private shiftNodeUp;
46
- private shiftChildrenUp;
46
+ private collectNodesToShift;
47
47
  }
48
- //# sourceMappingURL=unbalanced_merkle_tree_calculator.d.ts.map
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLDRCQUE0QixDQUFDO0FBT3hGOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSw4QkFBOEI7SUFLdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZTtJQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7SUFDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBUHpCLE9BQU8sQ0FBQyxLQUFLLENBQWdDO0lBQzdDLE9BQU8sQ0FBQyxhQUFhLENBQTBCO0lBRS9DLFlBQ21CLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFDaEIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsU0FBUyxFQUFFLE1BQU0sRUFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFJeEM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFDaEIsZUFBZSxzQkFBa0IsRUFDakMsU0FBUyxzQkFBbUIsRUFDNUIsTUFBTSw4RkFBZ0Isa0NBR3ZCO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxJQUFJLE1BQU0sQ0FFdkI7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQU9yRTtJQUVEOzs7O09BSUc7SUFDSSx5QkFBeUIsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQW1CcEY7SUFFTSxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sb0JBRXZDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLFNBQVM7SUErQ2pCLE9BQU8sQ0FBQyxXQUFXO0lBWW5CLE9BQU8sQ0FBQyxtQkFBbUI7Q0FtQjVCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"unbalanced_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_calculator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AAExF,wBAAgB,yCAAyC,CACvD,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAmB,EAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GACtB,MAAM,CAGR;AAOD;;;;;;;GAOG;AACH,qBAAa,8BAA8B;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAA0B;gBAG5B,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAUzC,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAkB,EACjC,MAAM,IAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAkD,MAAM,CAAC,WAAW,CAAC;IAK5G;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAStE;;;;OAIG;IACI,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAqB9E,eAAe,CAAC,SAAS,EAAE,MAAM;IAIxC;;;OAGG;IACH,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;CAoBxB"}
1
+ {"version":3,"file":"unbalanced_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AAOxF;;;;;;;GAOG;AACH,qBAAa,8BAA8B;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAA0B;IAE/C,YACmB,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAIxC;IAED,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAkB,EACjC,SAAS,sBAAmB,EAC5B,MAAM,8FAAgB,kCAGvB;IAED;;;OAGG;IACI,OAAO,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAOrE;IAED;;;;OAIG;IACI,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAmBpF;IAEM,eAAe,CAAC,SAAS,EAAE,MAAM,oBAEvC;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS;IA+CjB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;CAmB5B"}
@@ -1,10 +1,6 @@
1
- import { sha256Trunc } from '../crypto/index.js';
1
+ import { shaMerkleHash } from './hasher.js';
2
2
  import { SiblingPath } from './sibling_path.js';
3
3
  import { UnbalancedTreeStore } from './unbalanced_tree_store.js';
4
- export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompress = Buffer.alloc(32), hasher) {
5
- const calculator = UnbalancedMerkleTreeCalculator.create(leaves, valueToCompress, hasher);
6
- return calculator.getRoot();
7
- }
8
4
  /**
9
5
  * An ephemeral unbalanced Merkle tree implementation.
10
6
  * Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
@@ -15,25 +11,21 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
15
11
  */ export class UnbalancedMerkleTreeCalculator {
16
12
  leaves;
17
13
  valueToCompress;
14
+ emptyRoot;
18
15
  hasher;
19
16
  store;
20
17
  leafLocations;
21
- constructor(leaves, valueToCompress, hasher){
18
+ constructor(leaves, valueToCompress, emptyRoot, hasher){
22
19
  this.leaves = leaves;
23
20
  this.valueToCompress = valueToCompress;
21
+ this.emptyRoot = emptyRoot;
24
22
  this.hasher = hasher;
25
23
  this.leafLocations = [];
26
- if (leaves.length === 0) {
27
- throw Error('Cannot create a compressed unbalanced tree with 0 leaves.');
28
- }
29
24
  this.store = new UnbalancedTreeStore(leaves.length);
30
25
  this.buildTree();
31
26
  }
32
- static create(leaves, valueToCompress = Buffer.alloc(0), hasher = (left, right)=>sha256Trunc(Buffer.concat([
33
- left,
34
- right
35
- ]))) {
36
- return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, hasher);
27
+ static create(leaves, valueToCompress = Buffer.alloc(0), emptyRoot = Buffer.alloc(32), hasher = shaMerkleHash) {
28
+ return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, emptyRoot, hasher);
37
29
  }
38
30
  /**
39
31
  * Returns the root of the tree.
@@ -88,12 +80,12 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
88
80
  // Start with the leaves that are not compressed.
89
81
  let toProcess = this.leafLocations.filter((_, i)=>!this.leaves[i].equals(this.valueToCompress));
90
82
  if (!toProcess.length) {
91
- // All leaves are compressed. Set 0 to the root.
83
+ // All leaves are compressed. Set empty root to the root.
92
84
  this.store.setNode({
93
85
  level: 0,
94
86
  index: 0
95
87
  }, {
96
- value: Buffer.alloc(32)
88
+ value: this.emptyRoot
97
89
  });
98
90
  return;
99
91
  }
@@ -114,10 +106,7 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
114
106
  const shouldShiftUp = !sibling || sibling.value.equals(this.valueToCompress);
115
107
  if (shouldShiftUp) {
116
108
  // The node becomes the parent if the sibling is a compressed leaf.
117
- const isLeaf = this.shiftNodeUp(location, parentLocation);
118
- if (!isLeaf) {
119
- this.shiftChildrenUp(location);
120
- }
109
+ this.shiftNodeUp(location, parentLocation);
121
110
  } else {
122
111
  // Hash the value with the (right) sibling and update the parent node.
123
112
  const node = this.store.getNode(location);
@@ -132,31 +121,34 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
132
121
  toProcess = toProcessNext;
133
122
  }
134
123
  }
135
- shiftNodeUp(fromLocation, toLocation) {
136
- const node = this.store.getNode(fromLocation);
137
- this.store.setNode(toLocation, node);
138
- const isLeaf = node.leafIndex !== undefined;
139
- if (isLeaf) {
140
- // Update the location if the node is a leaf.
141
- this.leafLocations[node.leafIndex] = toLocation;
124
+ shiftNodeUp(from, to) {
125
+ // Collect all nodes that need to shift.
126
+ const nodesToShift = this.collectNodesToShift(from, to);
127
+ // Move all nodes to their new locations.
128
+ for (const { node, newLocation } of nodesToShift){
129
+ this.store.setNode(newLocation, node);
130
+ if (node.leafIndex !== undefined) {
131
+ this.leafLocations[node.leafIndex] = newLocation;
132
+ }
142
133
  }
143
- return isLeaf;
144
134
  }
145
- shiftChildrenUp(parent) {
146
- const [left, right] = this.store.getChildLocations(parent);
147
- const level = parent.level;
148
- const groupSize = 2 ** level;
149
- const computeNewLocation = (index)=>({
150
- level,
151
- index: Math.floor(index / (groupSize * 2)) * groupSize + index % groupSize
152
- });
153
- const isLeftLeaf = this.shiftNodeUp(left, computeNewLocation(left.index));
154
- const isRightLeaf = this.shiftNodeUp(right, computeNewLocation(right.index));
155
- if (!isLeftLeaf) {
156
- this.shiftChildrenUp(left);
135
+ collectNodesToShift(from, to) {
136
+ const node = this.store.getNode(from);
137
+ if (!node) {
138
+ return [];
157
139
  }
158
- if (!isRightLeaf) {
159
- this.shiftChildrenUp(right);
140
+ let result = [
141
+ {
142
+ node,
143
+ newLocation: to
144
+ }
145
+ ];
146
+ // If not a leaf, collect its children.
147
+ if (node.leafIndex === undefined) {
148
+ const [leftChild, rightChild] = this.store.getChildLocations(from);
149
+ const [leftChildNew, rightChildNew] = this.store.getChildLocations(to);
150
+ result = result.concat(this.collectNodesToShift(leftChild, leftChildNew)).concat(this.collectNodesToShift(rightChild, rightChildNew));
160
151
  }
152
+ return result;
161
153
  }
162
154
  }
@@ -0,0 +1,28 @@
1
+ export declare const computeUnbalancedShaRoot: (leaves: Buffer<ArrayBufferLike>[]) => Buffer<ArrayBufferLike>;
2
+ export declare const computeUnbalancedPoseidonRoot: (leaves: Buffer<ArrayBufferLike>[]) => Promise<Buffer<ArrayBufferLike>>;
3
+ export declare const computeWonkyShaRoot: (leaves: Buffer<ArrayBufferLike>[]) => Buffer<ArrayBufferLike>;
4
+ /**
5
+ * Computes the Merkle root of an unbalanced tree.
6
+ *
7
+ * Unlike a balanced Merkle tree, which requires the number of leaves to be a power of two, an unbalanced tree can have
8
+ * any number of leaves.
9
+ *
10
+ * The tree is constructed by iteratively extracting the smallest power-of-two-sized subtrees from **right to left**.
11
+ * For each such subtree, it computes the subtree root and then combines all subtree roots (again from right to left)
12
+ * into a single root using the provided hash function.
13
+ *
14
+ * Note: We need the final tree to be as shallow as possible, to minimize the size of the sibling path required to prove
15
+ * membership of a leaf. Therefor, the computation proceeds from right to left - smaller subtrees must always be
16
+ * combined before being merged with a larger sibling on their left.
17
+ *
18
+ * For example, consider an unbalanced tree made of three subtrees of sizes 2, 4, and 8. If we combine the size-2 and
19
+ * size-4 subtrees first (producing a subtree of depth 3), and then merge it with the size-8 subtree (also depth 3), the
20
+ * resulting tree has a maximum depth of 4.
21
+ *
22
+ * But if we instead combine the size-4 and size-8 subtrees first (depth 4), and then merge with the size-2 subtree
23
+ * (depth 1), the final tree has a depth of 5.
24
+ */
25
+ export declare function computeUnbalancedMerkleTreeRoot(leaves: Buffer[], hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>): Buffer;
26
+ export declare function computeUnbalancedMerkleTreeRootAsync(leaves: Buffer[], hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Promise<Buffer<ArrayBuffer>>, emptyRoot?: Buffer<ArrayBuffer>): Promise<Buffer>;
27
+ export declare function computeWonkyMerkleTreeRoot(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>, hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Buffer<ArrayBuffer>): Buffer;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9yb290LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9yb290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGVBQU8sTUFBTSx3QkFBd0IsZ0VBQStFLENBQUM7QUFFckgsZUFBTyxNQUFNLDZCQUE2Qix5RUFDOEIsQ0FBQztBQUV6RSxlQUFPLE1BQU0sbUJBQW1CLGdFQUEyRCxDQUFDO0FBRTVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILHdCQUFnQiwrQkFBK0IsQ0FDN0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUNoQixNQUFNLDhGQUFnQixFQUN0QixTQUFTLHNCQUFtQixHQUMzQixNQUFNLENBNkJSO0FBRUQsd0JBQXNCLG9DQUFvQyxDQUN4RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQ2hCLE1BQU0sdUdBQXFCLEVBQzNCLFNBQVMsc0JBQW1CLEdBQzNCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0E2QmpCO0FBTUQsd0JBQWdCLDBCQUEwQixDQUN4QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQ2hCLGVBQWUsc0JBQW1CLEVBQ2xDLFNBQVMsc0JBQW1CLEVBQzVCLE1BQU0sOEZBQWdCLEdBQ3JCLE1BQU0sQ0FHUiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unbalanced_merkle_tree_root.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_root.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,gEAA+E,CAAC;AAErH,eAAO,MAAM,6BAA6B,yEAC8B,CAAC;AAEzE,eAAO,MAAM,mBAAmB,gEAA2D,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,8FAAgB,EACtB,SAAS,sBAAmB,GAC3B,MAAM,CA6BR;AAED,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,uGAAqB,EAC3B,SAAS,sBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAMD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAmB,EAClC,SAAS,sBAAmB,EAC5B,MAAM,8FAAgB,GACrB,MAAM,CAGR"}
@@ -0,0 +1,84 @@
1
+ import { computeBalancedMerkleTreeRoot, computeBalancedMerkleTreeRootAsync } from './balanced_merkle_tree_root.js';
2
+ import { poseidonMerkleHash, shaMerkleHash } from './hasher.js';
3
+ import { UnbalancedMerkleTreeCalculator } from './unbalanced_merkle_tree_calculator.js';
4
+ export const computeUnbalancedShaRoot = (leaves)=>computeUnbalancedMerkleTreeRoot(leaves, shaMerkleHash);
5
+ export const computeUnbalancedPoseidonRoot = async (leaves)=>await computeUnbalancedMerkleTreeRootAsync(leaves, poseidonMerkleHash);
6
+ export const computeWonkyShaRoot = (leaves)=>computeWonkyMerkleTreeRoot(leaves);
7
+ /**
8
+ * Computes the Merkle root of an unbalanced tree.
9
+ *
10
+ * Unlike a balanced Merkle tree, which requires the number of leaves to be a power of two, an unbalanced tree can have
11
+ * any number of leaves.
12
+ *
13
+ * The tree is constructed by iteratively extracting the smallest power-of-two-sized subtrees from **right to left**.
14
+ * For each such subtree, it computes the subtree root and then combines all subtree roots (again from right to left)
15
+ * into a single root using the provided hash function.
16
+ *
17
+ * Note: We need the final tree to be as shallow as possible, to minimize the size of the sibling path required to prove
18
+ * membership of a leaf. Therefor, the computation proceeds from right to left - smaller subtrees must always be
19
+ * combined before being merged with a larger sibling on their left.
20
+ *
21
+ * For example, consider an unbalanced tree made of three subtrees of sizes 2, 4, and 8. If we combine the size-2 and
22
+ * size-4 subtrees first (producing a subtree of depth 3), and then merge it with the size-8 subtree (also depth 3), the
23
+ * resulting tree has a maximum depth of 4.
24
+ *
25
+ * But if we instead combine the size-4 and size-8 subtrees first (depth 4), and then merge with the size-2 subtree
26
+ * (depth 1), the final tree has a depth of 5.
27
+ */ export function computeUnbalancedMerkleTreeRoot(leaves, hasher = shaMerkleHash, emptyRoot = Buffer.alloc(32)) {
28
+ if (!leaves.length) {
29
+ return emptyRoot;
30
+ }
31
+ if (leaves.length === 1) {
32
+ return leaves[0];
33
+ }
34
+ let numRemainingLeaves = leaves.length;
35
+ let subtreeSize = 1;
36
+ let root;
37
+ while(numRemainingLeaves > 1){
38
+ if ((numRemainingLeaves & subtreeSize) !== 0) {
39
+ const subtreeLeaves = leaves.slice(numRemainingLeaves - subtreeSize, numRemainingLeaves);
40
+ const subtreeRoot = computeBalancedMerkleTreeRoot(subtreeLeaves, hasher);
41
+ if (!root) {
42
+ root = subtreeRoot;
43
+ } else {
44
+ root = hasher(subtreeRoot, root);
45
+ }
46
+ numRemainingLeaves -= subtreeSize;
47
+ }
48
+ subtreeSize *= 2;
49
+ }
50
+ return root;
51
+ }
52
+ export async function computeUnbalancedMerkleTreeRootAsync(leaves, hasher = poseidonMerkleHash, emptyRoot = Buffer.alloc(32)) {
53
+ if (!leaves.length) {
54
+ return emptyRoot;
55
+ }
56
+ if (leaves.length === 1) {
57
+ return leaves[0];
58
+ }
59
+ let numRemainingLeaves = leaves.length;
60
+ let subtreeSize = 1;
61
+ let root;
62
+ while(numRemainingLeaves > 1){
63
+ if ((numRemainingLeaves & subtreeSize) !== 0) {
64
+ const subtreeLeaves = leaves.slice(numRemainingLeaves - subtreeSize, numRemainingLeaves);
65
+ const subtreeRoot = await computeBalancedMerkleTreeRootAsync(subtreeLeaves, hasher);
66
+ if (!root) {
67
+ root = subtreeRoot;
68
+ } else {
69
+ root = await hasher(subtreeRoot, root);
70
+ }
71
+ numRemainingLeaves -= subtreeSize;
72
+ }
73
+ subtreeSize *= 2;
74
+ }
75
+ return root;
76
+ }
77
+ // A **wonky** tree is a "compressed" unbalanced Merkle tree.
78
+ // It is constructed in the same way as an unbalanced tree: by first creating the largest possible left subtree, with
79
+ // the remaining leaves forming a right subtree that follows the same process recursively.
80
+ // During construction, leaves equal to `valueToCompress` are skipped (compressed) and do not contribute to the tree.
81
+ export function computeWonkyMerkleTreeRoot(leaves, valueToCompress = Buffer.alloc(32), emptyRoot = Buffer.alloc(32), hasher = shaMerkleHash) {
82
+ const calculator = UnbalancedMerkleTreeCalculator.create(leaves, valueToCompress, emptyRoot, hasher);
83
+ return calculator.getRoot();
84
+ }
@@ -17,4 +17,8 @@ export declare class UnbalancedTreeStore<T> {
17
17
  getSibling(location: TreeNodeLocation): T | undefined;
18
18
  getChildren(location: TreeNodeLocation): [T | undefined, T | undefined];
19
19
  }
20
- //# sourceMappingURL=unbalanced_tree_store.d.ts.map
20
+ export declare function findLeafLevelAndIndex(numLeaves: number, leafIndex: number): {
21
+ level: number;
22
+ indexAtLevel: number;
23
+ };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF90cmVlX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF90cmVlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZjtBQU9ELHFCQUFhLG1CQUFtQixDQUFDLENBQUM7O0lBSWhDLFlBQVksU0FBUyxFQUFFLE1BQU0sRUFFNUI7SUFFRCxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQWVyRDtJQUVELE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQVNuRDtJQUVELGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQU10RTtJQUVELGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQU12RTtJQUVELGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FJMUY7SUFFRCxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQU94QztJQUVELE9BQU8sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FFakQ7SUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FFdkI7SUFFRCxTQUFTLENBQUMsUUFBUSxFQUFFLGdCQUFnQixHQUFHLENBQUMsR0FBRyxTQUFTLENBR25EO0lBRUQsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUdwRDtJQUVELFdBQVcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FHdEU7Q0FLRjtBQXNERCx3QkFBZ0IscUJBQXFCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTTs7O0VBR3pFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"unbalanced_tree_store.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_tree_store.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,mBAAmB,CAAC,CAAC;;gBAIpB,SAAS,EAAE,MAAM;IAI7B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB;IAiBtD,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAWpD,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQvE,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQxE,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAM3F,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IASzC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAIlD,OAAO,IAAI,CAAC,GAAG,SAAS;IAIxB,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAKpD,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAKrD,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;CAQxE"}
1
+ {"version":3,"file":"unbalanced_tree_store.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_tree_store.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,mBAAmB,CAAC,CAAC;;IAIhC,YAAY,SAAS,EAAE,MAAM,EAE5B;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAerD;IAED,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,QASnD;IAED,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAMtE;IAED,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAMvE;IAED,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAI1F;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAOxC;IAED,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAEjD;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAGnD;IAED,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAGpD;IAED,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAGtE;CAKF;AAsDD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;EAGzE"}