@aztec/stdlib 0.0.1-commit.ec5f612 → 0.0.1-commit.ec7ac5448

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 (394) hide show
  1. package/dest/abi/abi.d.ts +138 -1
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +10 -2
  4. package/dest/abi/buffer.d.ts +14 -4
  5. package/dest/abi/buffer.d.ts.map +1 -1
  6. package/dest/abi/buffer.js +25 -4
  7. package/dest/abi/decoder.d.ts +6 -45
  8. package/dest/abi/decoder.d.ts.map +1 -1
  9. package/dest/abi/decoder.js +17 -67
  10. package/dest/abi/encoder.d.ts +1 -1
  11. package/dest/abi/encoder.d.ts.map +1 -1
  12. package/dest/abi/encoder.js +28 -1
  13. package/dest/abi/event_metadata_definition.d.ts +3 -1
  14. package/dest/abi/event_metadata_definition.d.ts.map +1 -1
  15. package/dest/abi/event_metadata_definition.js +1 -1
  16. package/dest/abi/function_selector.js +1 -1
  17. package/dest/abi/function_signature_decoder.d.ts +43 -0
  18. package/dest/abi/function_signature_decoder.d.ts.map +1 -0
  19. package/dest/abi/function_signature_decoder.js +66 -0
  20. package/dest/abi/index.d.ts +2 -1
  21. package/dest/abi/index.d.ts.map +1 -1
  22. package/dest/abi/index.js +1 -0
  23. package/dest/abi/selector.d.ts +2 -2
  24. package/dest/abi/selector.d.ts.map +1 -1
  25. package/dest/abi/selector.js +1 -1
  26. package/dest/abi/utils.d.ts +14 -1
  27. package/dest/abi/utils.d.ts.map +1 -1
  28. package/dest/abi/utils.js +15 -0
  29. package/dest/avm/avm.d.ts +300 -300
  30. package/dest/avm/revert_code.d.ts +8 -18
  31. package/dest/avm/revert_code.d.ts.map +1 -1
  32. package/dest/avm/revert_code.js +15 -30
  33. package/dest/block/l2_block.d.ts +9 -1
  34. package/dest/block/l2_block.d.ts.map +1 -1
  35. package/dest/block/l2_block.js +12 -2
  36. package/dest/block/l2_block_source.d.ts +95 -10
  37. package/dest/block/l2_block_source.d.ts.map +1 -1
  38. package/dest/block/l2_block_source.js +1 -0
  39. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +1 -1
  40. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  41. package/dest/block/l2_block_stream/l2_tips_store_base.js +17 -4
  42. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  43. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  44. package/dest/block/test/l2_tips_store_test_suite.js +3 -2
  45. package/dest/checkpoint/checkpoint.d.ts +8 -1
  46. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  47. package/dest/checkpoint/checkpoint.js +18 -5
  48. package/dest/checkpoint/checkpoint_data.d.ts +71 -5
  49. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
  50. package/dest/checkpoint/checkpoint_data.js +10 -0
  51. package/dest/checkpoint/index.d.ts +2 -1
  52. package/dest/checkpoint/index.d.ts.map +1 -1
  53. package/dest/checkpoint/index.js +1 -0
  54. package/dest/checkpoint/validate.d.ts +36 -0
  55. package/dest/checkpoint/validate.d.ts.map +1 -0
  56. package/dest/checkpoint/validate.js +120 -0
  57. package/dest/config/index.d.ts +2 -1
  58. package/dest/config/index.d.ts.map +1 -1
  59. package/dest/config/index.js +1 -0
  60. package/dest/config/pipelining-config.d.ts +19 -0
  61. package/dest/config/pipelining-config.d.ts.map +1 -0
  62. package/dest/config/pipelining-config.js +18 -0
  63. package/dest/config/sequencer-config.d.ts +4 -2
  64. package/dest/config/sequencer-config.d.ts.map +1 -1
  65. package/dest/config/sequencer-config.js +13 -0
  66. package/dest/contract/contract_address.d.ts +3 -3
  67. package/dest/contract/contract_address.js +3 -3
  68. package/dest/contract/contract_class_id.d.ts +2 -2
  69. package/dest/contract/contract_class_id.js +2 -2
  70. package/dest/contract/index.d.ts +1 -3
  71. package/dest/contract/index.d.ts.map +1 -1
  72. package/dest/contract/index.js +0 -2
  73. package/dest/contract/interfaces/contract_class.d.ts +3 -156
  74. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  75. package/dest/contract/interfaces/contract_class.js +1 -28
  76. package/dest/epoch-helpers/index.d.ts +11 -1
  77. package/dest/epoch-helpers/index.d.ts.map +1 -1
  78. package/dest/epoch-helpers/index.js +16 -2
  79. package/dest/file-store/factory.d.ts +4 -3
  80. package/dest/file-store/factory.d.ts.map +1 -1
  81. package/dest/file-store/factory.js +2 -2
  82. package/dest/file-store/http.d.ts +9 -2
  83. package/dest/file-store/http.d.ts.map +1 -1
  84. package/dest/file-store/http.js +20 -9
  85. package/dest/file-store/index.d.ts +2 -1
  86. package/dest/file-store/index.d.ts.map +1 -1
  87. package/dest/gas/gas_fees.d.ts +1 -1
  88. package/dest/gas/gas_fees.d.ts.map +1 -1
  89. package/dest/gas/gas_fees.js +13 -1
  90. package/dest/gas/gas_settings.d.ts +40 -3
  91. package/dest/gas/gas_settings.d.ts.map +1 -1
  92. package/dest/gas/gas_settings.js +50 -6
  93. package/dest/ha-signing/config.d.ts +49 -14
  94. package/dest/ha-signing/config.d.ts.map +1 -1
  95. package/dest/ha-signing/config.js +20 -15
  96. package/dest/ha-signing/index.d.ts +3 -2
  97. package/dest/ha-signing/index.d.ts.map +1 -1
  98. package/dest/ha-signing/index.js +2 -1
  99. package/dest/ha-signing/local_config.d.ts +63 -0
  100. package/dest/ha-signing/local_config.d.ts.map +1 -0
  101. package/dest/ha-signing/local_config.js +24 -0
  102. package/dest/hash/hash.d.ts +19 -1
  103. package/dest/hash/hash.d.ts.map +1 -1
  104. package/dest/hash/hash.js +29 -0
  105. package/dest/interfaces/allowed_element.d.ts +26 -20
  106. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  107. package/dest/interfaces/allowed_element.js +8 -8
  108. package/dest/interfaces/archiver.d.ts +1 -1
  109. package/dest/interfaces/archiver.d.ts.map +1 -1
  110. package/dest/interfaces/archiver.js +6 -3
  111. package/dest/interfaces/aztec-node-admin.d.ts +79 -43
  112. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  113. package/dest/interfaces/aztec-node-admin.js +3 -3
  114. package/dest/interfaces/aztec-node-debug.d.ts +21 -0
  115. package/dest/interfaces/aztec-node-debug.d.ts.map +1 -0
  116. package/dest/interfaces/aztec-node-debug.js +18 -0
  117. package/dest/interfaces/aztec-node.d.ts +12 -6
  118. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  119. package/dest/interfaces/aztec-node.js +5 -2
  120. package/dest/interfaces/block-builder.d.ts +38 -11
  121. package/dest/interfaces/block-builder.d.ts.map +1 -1
  122. package/dest/interfaces/block-builder.js +13 -6
  123. package/dest/interfaces/client.d.ts +2 -1
  124. package/dest/interfaces/client.d.ts.map +1 -1
  125. package/dest/interfaces/client.js +1 -0
  126. package/dest/interfaces/configs.d.ts +62 -32
  127. package/dest/interfaces/configs.d.ts.map +1 -1
  128. package/dest/interfaces/configs.js +6 -2
  129. package/dest/interfaces/l2_logs_source.d.ts +5 -3
  130. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  131. package/dest/interfaces/merkle_tree_operations.d.ts +9 -19
  132. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  133. package/dest/interfaces/prover-client.d.ts +6 -1
  134. package/dest/interfaces/prover-client.d.ts.map +1 -1
  135. package/dest/interfaces/prover-client.js +7 -1
  136. package/dest/interfaces/proving-job.d.ts +34 -34
  137. package/dest/interfaces/slasher.d.ts +1 -10
  138. package/dest/interfaces/slasher.d.ts.map +1 -1
  139. package/dest/interfaces/slasher.js +0 -2
  140. package/dest/interfaces/validator.d.ts +106 -55
  141. package/dest/interfaces/validator.d.ts.map +1 -1
  142. package/dest/interfaces/validator.js +8 -5
  143. package/dest/interfaces/world_state.d.ts +5 -4
  144. package/dest/interfaces/world_state.d.ts.map +1 -1
  145. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +2 -1
  146. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  147. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +4 -0
  148. package/dest/kv-store/config.d.ts +17 -0
  149. package/dest/kv-store/config.d.ts.map +1 -0
  150. package/dest/kv-store/config.js +26 -0
  151. package/dest/kv-store/index.d.ts +2 -0
  152. package/dest/kv-store/index.d.ts.map +1 -0
  153. package/dest/kv-store/index.js +1 -0
  154. package/dest/l1-contracts/index.d.ts +2 -2
  155. package/dest/l1-contracts/index.d.ts.map +1 -1
  156. package/dest/l1-contracts/index.js +1 -1
  157. package/dest/logs/extended_directional_app_tagging_secret.d.ts +4 -4
  158. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -1
  159. package/dest/logs/extended_directional_app_tagging_secret.js +12 -5
  160. package/dest/logs/index.d.ts +2 -1
  161. package/dest/logs/index.d.ts.map +1 -1
  162. package/dest/logs/index.js +1 -0
  163. package/dest/logs/log_filter.d.ts +4 -1
  164. package/dest/logs/log_filter.d.ts.map +1 -1
  165. package/dest/logs/log_filter.js +2 -1
  166. package/dest/logs/message_context.d.ts +4 -7
  167. package/dest/logs/message_context.d.ts.map +1 -1
  168. package/dest/logs/message_context.js +23 -9
  169. package/dest/logs/pending_tagged_log.d.ts +2 -3
  170. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  171. package/dest/logs/pending_tagged_log.js +2 -2
  172. package/dest/logs/public_log.d.ts +4 -3
  173. package/dest/logs/public_log.d.ts.map +1 -1
  174. package/dest/logs/public_log.js +2 -1
  175. package/dest/logs/shared_secret_derivation.d.ts +11 -10
  176. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  177. package/dest/logs/shared_secret_derivation.js +15 -9
  178. package/dest/logs/siloed_tag.d.ts +4 -1
  179. package/dest/logs/siloed_tag.d.ts.map +1 -1
  180. package/dest/logs/siloed_tag.js +7 -3
  181. package/dest/logs/tagging_index_range.d.ts +40 -0
  182. package/dest/logs/tagging_index_range.d.ts.map +1 -0
  183. package/dest/logs/tagging_index_range.js +8 -0
  184. package/dest/logs/tx_scoped_l2_log.d.ts +3 -1
  185. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  186. package/dest/logs/tx_scoped_l2_log.js +7 -0
  187. package/dest/messaging/l1_to_l2_message.d.ts +3 -2
  188. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  189. package/dest/messaging/l1_to_l2_message.js +11 -13
  190. package/dest/messaging/l1_to_l2_message_source.d.ts +4 -2
  191. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  192. package/dest/messaging/l2_to_l1_membership.d.ts +32 -6
  193. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  194. package/dest/messaging/l2_to_l1_membership.js +69 -26
  195. package/dest/noir/index.d.ts +3 -3
  196. package/dest/noir/index.d.ts.map +1 -1
  197. package/dest/note/note_dao.d.ts +1 -1
  198. package/dest/note/note_dao.d.ts.map +1 -1
  199. package/dest/note/note_dao.js +1 -4
  200. package/dest/p2p/checkpoint_proposal.d.ts +2 -7
  201. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  202. package/dest/p2p/checkpoint_proposal.js +3 -25
  203. package/dest/p2p/peer_error.d.ts +3 -1
  204. package/dest/p2p/peer_error.d.ts.map +1 -1
  205. package/dest/p2p/peer_error.js +5 -0
  206. package/dest/proofs/chonk_proof.d.ts +46 -2
  207. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  208. package/dest/proofs/chonk_proof.js +85 -10
  209. package/dest/slashing/index.d.ts +2 -3
  210. package/dest/slashing/index.d.ts.map +1 -1
  211. package/dest/slashing/index.js +1 -2
  212. package/dest/slashing/serialization.d.ts +2 -6
  213. package/dest/slashing/serialization.d.ts.map +1 -1
  214. package/dest/slashing/serialization.js +0 -60
  215. package/dest/slashing/types.d.ts +4 -90
  216. package/dest/slashing/types.d.ts.map +1 -1
  217. package/dest/slashing/types.js +0 -14
  218. package/dest/slashing/{tally.d.ts → votes.d.ts} +7 -2
  219. package/dest/slashing/votes.d.ts.map +1 -0
  220. package/dest/slashing/{tally.js → votes.js} +30 -2
  221. package/dest/tests/factories.d.ts +2 -4
  222. package/dest/tests/factories.d.ts.map +1 -1
  223. package/dest/tests/factories.js +11 -28
  224. package/dest/tests/mocks.d.ts +4 -2
  225. package/dest/tests/mocks.d.ts.map +1 -1
  226. package/dest/tests/mocks.js +26 -26
  227. package/dest/timetable/index.d.ts +51 -1
  228. package/dest/timetable/index.d.ts.map +1 -1
  229. package/dest/timetable/index.js +204 -14
  230. package/dest/tx/block_header.d.ts +3 -1
  231. package/dest/tx/block_header.d.ts.map +1 -1
  232. package/dest/tx/block_header.js +4 -0
  233. package/dest/tx/capsule.d.ts +6 -2
  234. package/dest/tx/capsule.d.ts.map +1 -1
  235. package/dest/tx/capsule.js +9 -3
  236. package/dest/tx/global_variable_builder.d.ts +3 -2
  237. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  238. package/dest/tx/private_execution_result.d.ts +6 -6
  239. package/dest/tx/private_execution_result.d.ts.map +1 -1
  240. package/dest/tx/private_execution_result.js +6 -6
  241. package/dest/tx/profiling.d.ts +14 -2
  242. package/dest/tx/profiling.d.ts.map +1 -1
  243. package/dest/tx/profiling.js +13 -3
  244. package/dest/tx/simulated_tx.d.ts +116 -5
  245. package/dest/tx/simulated_tx.d.ts.map +1 -1
  246. package/dest/tx/simulated_tx.js +7 -4
  247. package/dest/tx/tx.d.ts +6 -5
  248. package/dest/tx/tx.d.ts.map +1 -1
  249. package/dest/tx/tx.js +18 -6
  250. package/dest/tx/tx_receipt.d.ts +14 -5
  251. package/dest/tx/tx_receipt.d.ts.map +1 -1
  252. package/dest/tx/tx_receipt.js +14 -18
  253. package/dest/tx/validator/error_texts.d.ts +9 -1
  254. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  255. package/dest/tx/validator/error_texts.js +10 -0
  256. package/dest/update-checker/index.d.ts +3 -2
  257. package/dest/update-checker/index.d.ts.map +1 -1
  258. package/dest/update-checker/index.js +2 -1
  259. package/dest/update-checker/package_version.d.ts +3 -0
  260. package/dest/update-checker/package_version.d.ts.map +1 -0
  261. package/dest/update-checker/package_version.js +24 -0
  262. package/dest/update-checker/version_checker.d.ts +25 -0
  263. package/dest/update-checker/version_checker.d.ts.map +1 -0
  264. package/dest/update-checker/version_checker.js +50 -0
  265. package/dest/validators/errors.d.ts +6 -1
  266. package/dest/validators/errors.d.ts.map +1 -1
  267. package/dest/validators/errors.js +7 -0
  268. package/dest/versioning/versioning.d.ts +4 -2
  269. package/dest/versioning/versioning.d.ts.map +1 -1
  270. package/dest/versioning/versioning.js +4 -1
  271. package/dest/world-state/genesis_data.d.ts +11 -0
  272. package/dest/world-state/genesis_data.d.ts.map +1 -0
  273. package/dest/world-state/genesis_data.js +4 -0
  274. package/dest/world-state/index.d.ts +2 -1
  275. package/dest/world-state/index.d.ts.map +1 -1
  276. package/dest/world-state/index.js +1 -0
  277. package/package.json +10 -9
  278. package/src/abi/abi.ts +25 -2
  279. package/src/abi/buffer.ts +25 -4
  280. package/src/abi/decoder.ts +36 -79
  281. package/src/abi/encoder.ts +41 -1
  282. package/src/abi/event_metadata_definition.ts +2 -0
  283. package/src/abi/function_selector.ts +1 -1
  284. package/src/abi/function_signature_decoder.ts +77 -0
  285. package/src/abi/index.ts +1 -0
  286. package/src/abi/selector.ts +1 -1
  287. package/src/abi/utils.ts +25 -0
  288. package/src/avm/revert_code.ts +25 -39
  289. package/src/block/l2_block.ts +13 -1
  290. package/src/block/l2_block_source.ts +26 -9
  291. package/src/block/l2_block_stream/l2_tips_store_base.ts +24 -12
  292. package/src/block/test/l2_tips_store_test_suite.ts +8 -1
  293. package/src/checkpoint/checkpoint.ts +23 -4
  294. package/src/checkpoint/checkpoint_data.ts +40 -4
  295. package/src/checkpoint/index.ts +1 -0
  296. package/src/checkpoint/validate.ts +230 -0
  297. package/src/config/index.ts +1 -0
  298. package/src/config/pipelining-config.ts +31 -0
  299. package/src/config/sequencer-config.ts +19 -1
  300. package/src/contract/contract_address.ts +3 -3
  301. package/src/contract/contract_class_id.ts +2 -2
  302. package/src/contract/index.ts +0 -2
  303. package/src/contract/interfaces/contract_class.ts +2 -82
  304. package/src/epoch-helpers/index.ts +27 -0
  305. package/src/file-store/factory.ts +13 -4
  306. package/src/file-store/http.ts +29 -10
  307. package/src/file-store/index.ts +1 -0
  308. package/src/gas/README.md +123 -0
  309. package/src/gas/gas_fees.ts +15 -1
  310. package/src/gas/gas_settings.ts +65 -12
  311. package/src/ha-signing/config.ts +45 -38
  312. package/src/ha-signing/index.ts +9 -0
  313. package/src/ha-signing/local_config.ts +46 -0
  314. package/src/hash/hash.ts +34 -0
  315. package/src/interfaces/allowed_element.ts +29 -9
  316. package/src/interfaces/archiver.ts +6 -3
  317. package/src/interfaces/aztec-node-admin.ts +5 -7
  318. package/src/interfaces/aztec-node-debug.ts +40 -0
  319. package/src/interfaces/aztec-node.ts +24 -5
  320. package/src/interfaces/block-builder.ts +60 -14
  321. package/src/interfaces/client.ts +1 -0
  322. package/src/interfaces/configs.ts +25 -8
  323. package/src/interfaces/l2_logs_source.ts +4 -1
  324. package/src/interfaces/merkle_tree_operations.ts +8 -18
  325. package/src/interfaces/prover-client.ts +8 -0
  326. package/src/interfaces/slasher.ts +0 -6
  327. package/src/interfaces/validator.ts +48 -33
  328. package/src/interfaces/world_state.ts +4 -3
  329. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +9 -0
  330. package/src/kv-store/config.ts +36 -0
  331. package/src/kv-store/index.ts +1 -0
  332. package/src/l1-contracts/index.ts +1 -1
  333. package/src/logs/extended_directional_app_tagging_secret.ts +19 -8
  334. package/src/logs/index.ts +1 -0
  335. package/src/logs/log_filter.ts +5 -0
  336. package/src/logs/message_context.ts +17 -7
  337. package/src/logs/pending_tagged_log.ts +1 -3
  338. package/src/logs/public_log.ts +4 -2
  339. package/src/logs/shared_secret_derivation.ts +21 -10
  340. package/src/logs/siloed_tag.ts +7 -2
  341. package/src/logs/tagging_index_range.ts +24 -0
  342. package/src/logs/tx_scoped_l2_log.ts +16 -0
  343. package/src/messaging/l1_to_l2_message.ts +12 -9
  344. package/src/messaging/l1_to_l2_message_source.ts +3 -1
  345. package/src/messaging/l2_to_l1_membership.ts +98 -33
  346. package/src/noir/index.ts +2 -2
  347. package/src/note/note_dao.ts +1 -4
  348. package/src/p2p/checkpoint_proposal.ts +8 -38
  349. package/src/p2p/peer_error.ts +7 -0
  350. package/src/proofs/chonk_proof.ts +91 -5
  351. package/src/slashing/index.ts +1 -2
  352. package/src/slashing/serialization.ts +1 -81
  353. package/src/slashing/types.ts +3 -35
  354. package/src/slashing/{tally.ts → votes.ts} +34 -1
  355. package/src/tests/factories.ts +5 -34
  356. package/src/tests/mocks.ts +31 -18
  357. package/src/timetable/index.ts +293 -13
  358. package/src/tx/block_header.ts +6 -0
  359. package/src/tx/capsule.ts +10 -2
  360. package/src/tx/global_variable_builder.ts +2 -0
  361. package/src/tx/private_execution_result.ts +5 -5
  362. package/src/tx/profiling.ts +11 -2
  363. package/src/tx/simulated_tx.ts +14 -3
  364. package/src/tx/tx.ts +20 -11
  365. package/src/tx/tx_receipt.ts +18 -16
  366. package/src/tx/validator/error_texts.ts +12 -0
  367. package/src/update-checker/index.ts +2 -1
  368. package/src/update-checker/package_version.ts +30 -0
  369. package/src/update-checker/version_checker.ts +65 -0
  370. package/src/validators/errors.ts +9 -0
  371. package/src/versioning/versioning.ts +4 -1
  372. package/src/world-state/genesis_data.ts +15 -0
  373. package/src/world-state/index.ts +1 -0
  374. package/dest/contract/private_function_membership_proof.d.ts +0 -32
  375. package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
  376. package/dest/contract/private_function_membership_proof.js +0 -124
  377. package/dest/contract/utility_function_membership_proof.d.ts +0 -27
  378. package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
  379. package/dest/contract/utility_function_membership_proof.js +0 -87
  380. package/dest/l1-contracts/slash_factory.d.ts +0 -45
  381. package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
  382. package/dest/l1-contracts/slash_factory.js +0 -158
  383. package/dest/slashing/empire.d.ts +0 -31
  384. package/dest/slashing/empire.d.ts.map +0 -1
  385. package/dest/slashing/empire.js +0 -87
  386. package/dest/slashing/tally.d.ts.map +0 -1
  387. package/dest/update-checker/update-checker.d.ts +0 -49
  388. package/dest/update-checker/update-checker.d.ts.map +0 -1
  389. package/dest/update-checker/update-checker.js +0 -130
  390. package/src/contract/private_function_membership_proof.ts +0 -167
  391. package/src/contract/utility_function_membership_proof.ts +0 -118
  392. package/src/l1-contracts/slash_factory.ts +0 -180
  393. package/src/slashing/empire.ts +0 -104
  394. package/src/update-checker/update-checker.ts +0 -166
@@ -1 +1,2 @@
1
- export { UpdateChecker, getPackageVersion } from './update-checker.js';
1
+ export * from './package_version.js';
2
+ export * from './version_checker.js';
@@ -0,0 +1,30 @@
1
+ import { fileURLToPath } from '@aztec/foundation/url';
2
+
3
+ import { readFileSync } from 'fs';
4
+ import { dirname, resolve } from 'path';
5
+
6
+ /** Returns the package version from the release-please manifest or the package.json, or undefined if not found. */
7
+ export function getPackageVersion(): string | undefined {
8
+ const dir = dirname(fileURLToPath(import.meta.url));
9
+
10
+ // Try the release-please manifest first (works in dev/repo checkout).
11
+ try {
12
+ const releasePleaseManifestPath = resolve(dir, '../../../../.release-please-manifest.json');
13
+ return JSON.parse(readFileSync(releasePleaseManifestPath).toString())['.'];
14
+ } catch {
15
+ // Not in a repo checkout, fall through.
16
+ }
17
+
18
+ // Fall back to the stdlib package.json version (works in npm-installed packages).
19
+ try {
20
+ const packageJsonPath = resolve(dir, '../../package.json');
21
+ const version = JSON.parse(readFileSync(packageJsonPath).toString()).version;
22
+ if (version && version !== '0.1.0') {
23
+ return version;
24
+ }
25
+ } catch {
26
+ // No package.json found either.
27
+ }
28
+
29
+ return undefined;
30
+ }
@@ -0,0 +1,65 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { RunningPromise } from '@aztec/foundation/promise';
3
+
4
+ import { EventEmitter } from 'node:events';
5
+
6
+ export type EventMap = {
7
+ newVersion: [{ name: string; currentVersion: string; latestVersion: string }];
8
+ };
9
+
10
+ export type VersionCheck = {
11
+ name: string;
12
+ currentVersion: string;
13
+ getLatestVersion: () => Promise<string | undefined>;
14
+ };
15
+
16
+ export class VersionChecker extends EventEmitter<EventMap> {
17
+ private runningPromise: RunningPromise;
18
+ constructor(
19
+ private checks: Array<VersionCheck>,
20
+ intervalCheckMs = 60_000,
21
+ private logger = createLogger('version_checker'),
22
+ ) {
23
+ super();
24
+ this.runningPromise = new RunningPromise(this.run, logger, intervalCheckMs);
25
+ }
26
+
27
+ public start(): void {
28
+ if (this.runningPromise.isRunning()) {
29
+ this.logger.warn('VersionChecker is already running');
30
+ return;
31
+ }
32
+
33
+ this.runningPromise.start();
34
+ this.logger.info('Version check started');
35
+ }
36
+
37
+ public trigger(): Promise<void> {
38
+ return this.runningPromise.trigger();
39
+ }
40
+
41
+ public async stop(): Promise<void> {
42
+ if (!this.runningPromise.isRunning()) {
43
+ this.logger.warn('VersionChecker is not running');
44
+ return;
45
+ }
46
+
47
+ await this.runningPromise.stop();
48
+ this.logger.info('Version checker stopped');
49
+ }
50
+
51
+ private run = async () => {
52
+ await Promise.allSettled(this.checks.map(check => this.checkVersion(check)));
53
+ };
54
+
55
+ private async checkVersion({ name, currentVersion, getLatestVersion }: VersionCheck): Promise<void> {
56
+ try {
57
+ const latestVersion = await getLatestVersion();
58
+ if (latestVersion && latestVersion !== currentVersion) {
59
+ this.emit('newVersion', { name, latestVersion, currentVersion });
60
+ }
61
+ } catch (err) {
62
+ this.logger.warn(`Error checking for new ${name} versions: ${err}`, { err });
63
+ }
64
+ }
65
+ }
@@ -36,6 +36,15 @@ export class FailedToReExecuteTransactionsError extends ValidatorError {
36
36
  }
37
37
  }
38
38
 
39
+ export class ReExInitialStateMismatchError extends ValidatorError {
40
+ constructor(
41
+ public readonly expectedArchiveRoot: Fr,
42
+ public readonly actualArchiveRoot: Fr,
43
+ ) {
44
+ super('Re-execution initial state mismatch');
45
+ }
46
+ }
47
+
39
48
  export class ReExStateMismatchError extends ValidatorError {
40
49
  constructor(
41
50
  public readonly expectedArchiveRoot: Fr,
@@ -115,7 +115,7 @@ export function validatePartialComponentVersionsMatch(
115
115
  }
116
116
 
117
117
  /** Returns a Koa middleware that injects the versioning info as headers. */
118
- export function getVersioningMiddleware(versions: Partial<ComponentsVersions>) {
118
+ export function getVersioningMiddleware(versions: Partial<ComponentsVersions>, opts?: { packageVersion?: string }) {
119
119
  return async (ctx: Koa.Context, next: () => Promise<void>) => {
120
120
  try {
121
121
  await next();
@@ -128,6 +128,9 @@ export function getVersioningMiddleware(versions: Partial<ComponentsVersions>) {
128
128
  ctx.set(`x-aztec-${key}`, value.toString());
129
129
  }
130
130
  }
131
+ if (opts?.packageVersion) {
132
+ ctx.set('x-aztec-packageVersion', opts.packageVersion);
133
+ }
131
134
  }
132
135
  };
133
136
  }
@@ -0,0 +1,15 @@
1
+ import type { PublicDataTreeLeaf } from '../trees/index.js';
2
+
3
+ /** Data used to initialize the genesis block, including prefilled public state and an optional timestamp. */
4
+ export type GenesisData = {
5
+ /** Public data tree leaves to pre-populate in the genesis state (e.g. fee juice balances). */
6
+ prefilledPublicData: PublicDataTreeLeaf[];
7
+ /** Timestamp for the genesis block header. Defaults to 0 (canonical empty genesis) in production. */
8
+ genesisTimestamp: bigint;
9
+ };
10
+
11
+ /** An empty genesis data with no prefilled state and a zero timestamp. */
12
+ export const EMPTY_GENESIS_DATA: GenesisData = {
13
+ prefilledPublicData: [],
14
+ genesisTimestamp: 0n,
15
+ };
@@ -1 +1,2 @@
1
+ export * from './genesis_data.js';
1
2
  export * from './world_state_revision.js';
@@ -1,32 +0,0 @@
1
- import { type ContractArtifact, FunctionSelector } from '../abi/index.js';
2
- import type { ContractClassPublic, ExecutablePrivateFunctionWithMembershipProof, PrivateFunctionMembershipProof } from './interfaces/index.js';
3
- /**
4
- * Creates a membership proof for a private function in a contract class, to be verified via `isValidPrivateFunctionMembershipProof`.
5
- * @param selector - Selector of the function to create the proof for.
6
- * @param artifact - Artifact of the contract class where the function is defined.
7
- */
8
- export declare function createPrivateFunctionMembershipProof(selector: FunctionSelector, artifact: ContractArtifact): Promise<PrivateFunctionMembershipProof>;
9
- /**
10
- * Verifies that a private function with a membership proof as emitted by the ClassRegistry contract is valid,
11
- * as defined in the protocol specs at contract-deployment/classes:
12
- *
13
- * ```
14
- * // Load contract class from local db
15
- * contract_class = db.get_contract_class(contract_class_id)
16
- *
17
- * // Compute function leaf and assert it belongs to the private functions tree
18
- * function_leaf = pedersen([selector as Field, vk_hash], GENERATOR__PRIVATE_FUNCTION_LEAF)
19
- * computed_private_function_tree_root = compute_root(function_leaf, private_function_tree_sibling_path)
20
- * assert computed_private_function_tree_root == contract_class.private_functions_root
21
- *
22
- * // Compute artifact leaf and assert it belongs to the artifact
23
- * artifact_function_leaf = sha256(selector, metadata_hash, sha256(bytecode))
24
- * computed_artifact_private_function_tree_root = compute_root(artifact_function_leaf, artifact_function_tree_sibling_path)
25
- * computed_artifact_hash = sha256(computed_artifact_private_function_tree_root, utility_functions_artifact_tree_root, artifact_metadata_hash)
26
- * assert computed_artifact_hash == contract_class.artifact_hash
27
- * ```
28
- * @param fn - Function to check membership proof for.
29
- * @param contractClass - In which contract class the function is expected to be.
30
- */
31
- export declare function isValidPrivateFunctionMembershipProof(fn: ExecutablePrivateFunctionWithMembershipProof, contractClass: Pick<ContractClassPublic, 'privateFunctionsRoot' | 'artifactHash'>): Promise<boolean>;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9mdW5jdGlvbl9tZW1iZXJzaGlwX3Byb29mLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvcHJpdmF0ZV9mdW5jdGlvbl9tZW1iZXJzaGlwX3Byb29mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGlCQUFpQixDQUFDO0FBVXhGLE9BQU8sS0FBSyxFQUNWLG1CQUFtQixFQUNuQiw0Q0FBNEMsRUFDNUMsOEJBQThCLEVBQy9CLE1BQU0sdUJBQXVCLENBQUM7QUFHL0I7Ozs7R0FJRztBQUNILHdCQUFzQixvQ0FBb0MsQ0FDeEQsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixRQUFRLEVBQUUsZ0JBQWdCLEdBQ3pCLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQTREekM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsd0JBQXNCLHFDQUFxQyxDQUN6RCxFQUFFLEVBQUUsNENBQTRDLEVBQ2hELGFBQWEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsc0JBQXNCLEdBQUcsY0FBYyxDQUFDLG9CQWtEbEYifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"private_function_membership_proof.d.ts","sourceRoot":"","sources":["../../src/contract/private_function_membership_proof.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAgB,MAAM,iBAAiB,CAAC;AAUxF,OAAO,KAAK,EACV,mBAAmB,EACnB,4CAA4C,EAC5C,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAG/B;;;;GAIG;AACH,wBAAsB,oCAAoC,CACxD,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,8BAA8B,CAAC,CA4DzC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,qCAAqC,CACzD,EAAE,EAAE,4CAA4C,EAChD,aAAa,EAAE,IAAI,CAAC,mBAAmB,EAAE,sBAAsB,GAAG,cAAc,CAAC,oBAkDlF"}
@@ -1,124 +0,0 @@
1
- import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { createLogger } from '@aztec/foundation/log';
4
- import { computeRootFromSiblingPath } from '@aztec/foundation/trees';
5
- import { FunctionSelector, FunctionType } from '../abi/index.js';
6
- import { computeArtifactFunctionTree, computeArtifactHash, computeArtifactHashPreimage, computeFunctionArtifactHash, computeFunctionMetadataHash, getArtifactMerkleTreeHasher } from './artifact_hash.js';
7
- import { getContractClassPrivateFunctionFromArtifact } from './contract_class.js';
8
- import { computePrivateFunctionLeaf, computePrivateFunctionsTree } from './private_function.js';
9
- /**
10
- * Creates a membership proof for a private function in a contract class, to be verified via `isValidPrivateFunctionMembershipProof`.
11
- * @param selector - Selector of the function to create the proof for.
12
- * @param artifact - Artifact of the contract class where the function is defined.
13
- */ export async function createPrivateFunctionMembershipProof(selector, artifact) {
14
- const log = createLogger('circuits:function_membership_proof');
15
- // Locate private function definition and artifact
16
- const privateFunctions = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PRIVATE);
17
- const privateFunctionsFromArtifact = await Promise.all(privateFunctions.map(getContractClassPrivateFunctionFromArtifact));
18
- const privateFunction = privateFunctionsFromArtifact.find((fn)=>fn.selector.equals(selector));
19
- const privateFunctionsAndSelectors = await Promise.all(privateFunctions.map(async (fn)=>({
20
- fn,
21
- selector: await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters)
22
- })));
23
- const privateFunctionArtifact = privateFunctionsAndSelectors.find((fnAndSelector)=>selector.equals(fnAndSelector.selector))?.fn;
24
- if (!privateFunction || !privateFunctionArtifact) {
25
- throw new Error(`Private function with selector ${selector.toString()} not found`);
26
- }
27
- // Compute preimage for the artifact hash
28
- const { utilityFunctionRoot: utilityFunctionsTreeRoot, metadataHash: artifactMetadataHash } = await computeArtifactHashPreimage(artifact);
29
- // We need two sibling paths because private function information is split across two trees:
30
- // The "private function tree" captures the selectors and verification keys, and is used in the kernel circuit for verifying the proof generated by the app circuit.
31
- const functionLeaf = await computePrivateFunctionLeaf(privateFunction);
32
- const functionsTree = await computePrivateFunctionsTree(privateFunctionsFromArtifact);
33
- const functionsTreeLeafIndex = functionsTree.getIndex(functionLeaf);
34
- const functionsTreeSiblingPath = functionsTree.getSiblingPath(functionsTreeLeafIndex).map(Fr.fromBuffer);
35
- // And the "artifact tree" captures function bytecode and metadata, and is used by the pxe to check that its executing the code it's supposed to be executing, but it never goes into circuits.
36
- const functionMetadataHash = computeFunctionMetadataHash(privateFunctionArtifact);
37
- const functionArtifactHash = await computeFunctionArtifactHash({
38
- ...privateFunctionArtifact,
39
- functionMetadataHash
40
- });
41
- const artifactTree = await computeArtifactFunctionTree(artifact, FunctionType.PRIVATE);
42
- const artifactTreeLeafIndex = artifactTree.getIndex(functionArtifactHash.toBuffer());
43
- const artifactTreeSiblingPath = artifactTree.getSiblingPath(artifactTreeLeafIndex).map(Fr.fromBuffer);
44
- log.debug(`Computed proof for private function with selector ${selector.toString()}`, {
45
- functionArtifactHash,
46
- functionMetadataHash,
47
- functionLeaf: '0x' + functionLeaf.toString('hex'),
48
- artifactMetadataHash,
49
- privateFunctionsTreeRoot: '0x' + functionsTree.root.toString('hex'),
50
- utilityFunctionsTreeRoot,
51
- artifactFunctionTreeSiblingPath: artifactTreeSiblingPath.map((fr)=>fr.toString()).join(','),
52
- privateFunctionTreeSiblingPath: functionsTreeSiblingPath.map((fr)=>fr.toString()).join(',')
53
- });
54
- return {
55
- artifactTreeSiblingPath,
56
- artifactTreeLeafIndex,
57
- artifactMetadataHash,
58
- functionMetadataHash,
59
- utilityFunctionsTreeRoot,
60
- privateFunctionTreeSiblingPath: functionsTreeSiblingPath,
61
- privateFunctionTreeLeafIndex: functionsTreeLeafIndex
62
- };
63
- }
64
- /**
65
- * Verifies that a private function with a membership proof as emitted by the ClassRegistry contract is valid,
66
- * as defined in the protocol specs at contract-deployment/classes:
67
- *
68
- * ```
69
- * // Load contract class from local db
70
- * contract_class = db.get_contract_class(contract_class_id)
71
- *
72
- * // Compute function leaf and assert it belongs to the private functions tree
73
- * function_leaf = pedersen([selector as Field, vk_hash], GENERATOR__PRIVATE_FUNCTION_LEAF)
74
- * computed_private_function_tree_root = compute_root(function_leaf, private_function_tree_sibling_path)
75
- * assert computed_private_function_tree_root == contract_class.private_functions_root
76
- *
77
- * // Compute artifact leaf and assert it belongs to the artifact
78
- * artifact_function_leaf = sha256(selector, metadata_hash, sha256(bytecode))
79
- * computed_artifact_private_function_tree_root = compute_root(artifact_function_leaf, artifact_function_tree_sibling_path)
80
- * computed_artifact_hash = sha256(computed_artifact_private_function_tree_root, utility_functions_artifact_tree_root, artifact_metadata_hash)
81
- * assert computed_artifact_hash == contract_class.artifact_hash
82
- * ```
83
- * @param fn - Function to check membership proof for.
84
- * @param contractClass - In which contract class the function is expected to be.
85
- */ export async function isValidPrivateFunctionMembershipProof(fn, contractClass) {
86
- const log = createLogger('circuits:function_membership_proof');
87
- // Check private function tree membership
88
- const functionLeaf = await computePrivateFunctionLeaf(fn);
89
- const rootBuffer = await computeRootFromSiblingPath(functionLeaf, fn.privateFunctionTreeSiblingPath.map((fr)=>fr.toBuffer()), fn.privateFunctionTreeLeafIndex, async (left, right)=>(await poseidon2Hash([
90
- left,
91
- right
92
- ])).toBuffer());
93
- const computedPrivateFunctionTreeRoot = Fr.fromBuffer(rootBuffer);
94
- if (!contractClass.privateFunctionsRoot.equals(computedPrivateFunctionTreeRoot)) {
95
- log.debug(`Private function tree root mismatch`, {
96
- expectedPrivateFunctionTreeRoot: contractClass.privateFunctionsRoot,
97
- computedPrivateFunctionTreeRoot: computedPrivateFunctionTreeRoot,
98
- computedFunctionLeaf: '0x' + functionLeaf.toString('hex')
99
- });
100
- return false;
101
- }
102
- // Check artifact hash
103
- const functionArtifactHash = await computeFunctionArtifactHash(fn);
104
- const computedArtifactPrivateFunctionTreeRootBuffer = await computeRootFromSiblingPath(functionArtifactHash.toBuffer(), fn.artifactTreeSiblingPath.map((fr)=>fr.toBuffer()), fn.artifactTreeLeafIndex, getArtifactMerkleTreeHasher());
105
- const computedArtifactPrivateFunctionTreeRoot = Fr.fromBuffer(computedArtifactPrivateFunctionTreeRootBuffer);
106
- const computedArtifactHash = await computeArtifactHash({
107
- privateFunctionRoot: computedArtifactPrivateFunctionTreeRoot,
108
- utilityFunctionRoot: fn.utilityFunctionsTreeRoot,
109
- metadataHash: fn.artifactMetadataHash
110
- });
111
- if (!contractClass.artifactHash.equals(computedArtifactHash)) {
112
- log.debug(`Artifact hash mismatch`, {
113
- expected: contractClass.artifactHash,
114
- computedArtifactHash,
115
- computedFunctionArtifactHash: functionArtifactHash,
116
- computedArtifactPrivateFunctionTreeRoot,
117
- utilityFunctionRoot: fn.utilityFunctionsTreeRoot,
118
- metadataHash: fn.artifactMetadataHash,
119
- artifactFunctionTreeSiblingPath: fn.artifactTreeSiblingPath.map((fr)=>fr.toString()).join(',')
120
- });
121
- return false;
122
- }
123
- return true;
124
- }
@@ -1,27 +0,0 @@
1
- import { type ContractArtifact, FunctionSelector } from '../abi/index.js';
2
- import type { ContractClassPublic, UtilityFunctionMembershipProof, UtilityFunctionWithMembershipProof } from './interfaces/index.js';
3
- /**
4
- * Creates a membership proof for a utility function in a contract class, to be verified via `isValidUtilityFunctionMembershipProof`.
5
- * @param selector - Selector of the function to create the proof for.
6
- * @param artifact - Artifact of the contract class where the function is defined.
7
- */
8
- export declare function createUtilityFunctionMembershipProof(selector: FunctionSelector, artifact: ContractArtifact): Promise<UtilityFunctionMembershipProof>;
9
- /**
10
- * Verifies that a utility function with a membership proof as emitted by the ClassRegistry contract is valid,
11
- * as defined in the protocol specs at contract-deployment/classes:
12
- *
13
- * ```
14
- * // Load contract class from local db
15
- * contract_class = db.get_contract_class(contract_class_id)
16
- *
17
- * // Compute artifact leaf and assert it belongs to the artifact
18
- * artifact_function_leaf = sha256(selector, metadata_hash, sha256(bytecode))
19
- * computed_artifact_utility_function_tree_root = compute_root(artifact_function_leaf, artifact_function_tree_sibling_path, artifact_function_tree_leaf_index)
20
- * computed_artifact_hash = sha256(private_functions_artifact_tree_root, computed_artifact_utility_function_tree_root, artifact_metadata_hash)
21
- * assert computed_artifact_hash == contract_class.artifact_hash
22
- * ```
23
- * @param fn - Function to check membership proof for.
24
- * @param contractClass - In which contract class the function is expected to be.
25
- */
26
- export declare function isValidUtilityFunctionMembershipProof(fn: UtilityFunctionWithMembershipProof, contractClass: Pick<ContractClassPublic, 'artifactHash'>): Promise<boolean>;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eV9mdW5jdGlvbl9tZW1iZXJzaGlwX3Byb29mLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvdXRpbGl0eV9mdW5jdGlvbl9tZW1iZXJzaGlwX3Byb29mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGlCQUFpQixDQUFDO0FBU3hGLE9BQU8sS0FBSyxFQUNWLG1CQUFtQixFQUNuQiw4QkFBOEIsRUFDOUIsa0NBQWtDLEVBQ25DLE1BQU0sdUJBQXVCLENBQUM7QUFFL0I7Ozs7R0FJRztBQUNILHdCQUFzQixvQ0FBb0MsQ0FDeEQsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixRQUFRLEVBQUUsZ0JBQWdCLEdBQ3pCLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQXNDekM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILHdCQUFzQixxQ0FBcUMsQ0FDekQsRUFBRSxFQUFFLGtDQUFrQyxFQUN0QyxhQUFhLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLGNBQWMsQ0FBQyxvQkErQnpEIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"utility_function_membership_proof.d.ts","sourceRoot":"","sources":["../../src/contract/utility_function_membership_proof.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAgB,MAAM,iBAAiB,CAAC;AASxF,OAAO,KAAK,EACV,mBAAmB,EACnB,8BAA8B,EAC9B,kCAAkC,EACnC,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,wBAAsB,oCAAoC,CACxD,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,8BAA8B,CAAC,CAsCzC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qCAAqC,CACzD,EAAE,EAAE,kCAAkC,EACtC,aAAa,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,oBA+BzD"}
@@ -1,87 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import { computeRootFromSiblingPath } from '@aztec/foundation/trees';
4
- import { FunctionSelector, FunctionType } from '../abi/index.js';
5
- import { computeArtifactFunctionTree, computeArtifactHash, computeArtifactHashPreimage, computeFunctionArtifactHash, computeFunctionMetadataHash, getArtifactMerkleTreeHasher } from './artifact_hash.js';
6
- /**
7
- * Creates a membership proof for a utility function in a contract class, to be verified via `isValidUtilityFunctionMembershipProof`.
8
- * @param selector - Selector of the function to create the proof for.
9
- * @param artifact - Artifact of the contract class where the function is defined.
10
- */ export async function createUtilityFunctionMembershipProof(selector, artifact) {
11
- const log = createLogger('circuits:function_membership_proof');
12
- // Locate function artifact
13
- const utilityFunctions = artifact.functions.filter((fn)=>fn.functionType === FunctionType.UTILITY);
14
- const utilityFunctionsAndSelectors = await Promise.all(utilityFunctions.map(async (fn)=>({
15
- fn,
16
- selector: await FunctionSelector.fromNameAndParameters(fn)
17
- })));
18
- const fn = utilityFunctionsAndSelectors.find((fnAndSelector)=>selector.equals(fnAndSelector.selector))?.fn;
19
- if (!fn) {
20
- throw new Error(`Utility function with selector ${selector.toString()} not found`);
21
- }
22
- // Compute preimage for the artifact hash
23
- const { privateFunctionRoot: privateFunctionsArtifactTreeRoot, metadataHash: artifactMetadataHash } = await computeArtifactHashPreimage(artifact);
24
- // Compute the sibling path for the "artifact tree"
25
- const functionMetadataHash = computeFunctionMetadataHash(fn);
26
- const functionArtifactHash = await computeFunctionArtifactHash({
27
- ...fn,
28
- functionMetadataHash
29
- });
30
- const artifactTree = await computeArtifactFunctionTree(artifact, FunctionType.UTILITY);
31
- const artifactTreeLeafIndex = artifactTree.getIndex(functionArtifactHash.toBuffer());
32
- const artifactTreeSiblingPath = artifactTree.getSiblingPath(artifactTreeLeafIndex).map(Fr.fromBuffer);
33
- log.debug(`Computed proof for utility function with selector ${selector.toString()}`, {
34
- functionArtifactHash,
35
- functionMetadataHash,
36
- artifactMetadataHash,
37
- artifactFunctionTreeSiblingPath: artifactTreeSiblingPath.map((fr)=>fr.toString()).join(','),
38
- privateFunctionsArtifactTreeRoot
39
- });
40
- return {
41
- artifactTreeSiblingPath,
42
- artifactTreeLeafIndex,
43
- artifactMetadataHash,
44
- functionMetadataHash,
45
- privateFunctionsArtifactTreeRoot
46
- };
47
- }
48
- /**
49
- * Verifies that a utility function with a membership proof as emitted by the ClassRegistry contract is valid,
50
- * as defined in the protocol specs at contract-deployment/classes:
51
- *
52
- * ```
53
- * // Load contract class from local db
54
- * contract_class = db.get_contract_class(contract_class_id)
55
- *
56
- * // Compute artifact leaf and assert it belongs to the artifact
57
- * artifact_function_leaf = sha256(selector, metadata_hash, sha256(bytecode))
58
- * computed_artifact_utility_function_tree_root = compute_root(artifact_function_leaf, artifact_function_tree_sibling_path, artifact_function_tree_leaf_index)
59
- * computed_artifact_hash = sha256(private_functions_artifact_tree_root, computed_artifact_utility_function_tree_root, artifact_metadata_hash)
60
- * assert computed_artifact_hash == contract_class.artifact_hash
61
- * ```
62
- * @param fn - Function to check membership proof for.
63
- * @param contractClass - In which contract class the function is expected to be.
64
- */ export async function isValidUtilityFunctionMembershipProof(fn, contractClass) {
65
- const log = createLogger('circuits:function_membership_proof');
66
- const functionArtifactHash = await computeFunctionArtifactHash(fn);
67
- const computedArtifactFunctionTreeRootBuffer = await computeRootFromSiblingPath(functionArtifactHash.toBuffer(), fn.artifactTreeSiblingPath.map((fr)=>fr.toBuffer()), fn.artifactTreeLeafIndex, getArtifactMerkleTreeHasher());
68
- const computedArtifactFunctionTreeRoot = Fr.fromBuffer(computedArtifactFunctionTreeRootBuffer);
69
- const computedArtifactHash = await computeArtifactHash({
70
- privateFunctionRoot: fn.privateFunctionsArtifactTreeRoot,
71
- utilityFunctionRoot: computedArtifactFunctionTreeRoot,
72
- metadataHash: fn.artifactMetadataHash
73
- });
74
- if (!contractClass.artifactHash.equals(computedArtifactHash)) {
75
- log.debug(`Artifact hash mismatch`, {
76
- expected: contractClass.artifactHash,
77
- computedArtifactHash,
78
- computedFunctionArtifactHash: functionArtifactHash,
79
- computedArtifactFunctionTreeRoot,
80
- privateFunctionsArtifactTreeRoot: fn.privateFunctionsArtifactTreeRoot,
81
- metadataHash: fn.artifactMetadataHash,
82
- artifactFunctionTreeSiblingPath: fn.artifactTreeSiblingPath.map((fr)=>fr.toString()).join(',')
83
- });
84
- return false;
85
- }
86
- return true;
87
- }
@@ -1,45 +0,0 @@
1
- import type { L1TxRequest } from '@aztec/ethereum/l1-tx-utils';
2
- import type { ViemClient } from '@aztec/ethereum/types';
3
- import { EthAddress } from '@aztec/foundation/eth-address';
4
- import { type Hex, type Log } from 'viem';
5
- import type { L1RollupConstants } from '../epoch-helpers/index.js';
6
- import { type SlashPayload, type ValidatorSlash, type ValidatorSlashOffense } from '../slashing/index.js';
7
- export declare class SlashFactoryContract {
8
- readonly client: ViemClient;
9
- private readonly logger;
10
- private readonly contract;
11
- constructor(client: ViemClient, address: Hex | EthAddress);
12
- get address(): EthAddress;
13
- buildCreatePayloadRequest(slashes: ValidatorSlash[]): L1TxRequest;
14
- /** Tries to extract a SlashPayloadCreated event from the given logs. */
15
- tryExtractSlashPayloadCreatedEvent(logs: Log[]): {
16
- eventName: "SlashPayloadCreated";
17
- args: {
18
- amounts: readonly bigint[];
19
- offenses: readonly (readonly bigint[])[];
20
- payloadAddress: `0x${string}`;
21
- validators: readonly `0x${string}`[];
22
- };
23
- } | undefined;
24
- getSlashPayloadCreatedEvents(): Promise<SlashPayload[]>;
25
- /**
26
- * Searches for a slash payload in the events emitted by the contract.
27
- * This method cannot query for historical payload events, it queries for payloads that have not yet expired.
28
- * @param payloadAddress The address of the payload to search for.
29
- * @param constants The L1 rollup constants needed for time calculations.
30
- */
31
- getSlashPayloadFromEvents(payloadAddress: EthAddress, settings: {
32
- logsBatchSize?: number;
33
- slashingRoundSize: number;
34
- slashingPayloadLifetimeInRounds: number;
35
- } & Pick<L1RollupConstants, 'slotDuration' | 'ethereumSlotDuration'>): Promise<Omit<SlashPayload, 'votes'> | undefined>;
36
- getAddressAndIsDeployed(slashes: ValidatorSlash[]): Promise<{
37
- address: EthAddress;
38
- salt: Hex;
39
- isDeployed: boolean;
40
- }>;
41
- private sortSlashes;
42
- }
43
- export declare function packValidatorSlashOffense(offense: ValidatorSlashOffense): bigint;
44
- export declare function unpackValidatorSlashOffense(packed: bigint): ValidatorSlashOffense;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhc2hfZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2wxLWNvbnRyYWN0cy9zbGFzaF9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUkzRCxPQUFPLEVBQThCLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFtQyxNQUFNLE1BQU0sQ0FBQztBQUV2RyxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFFTCxLQUFLLFlBQVksRUFDakIsS0FBSyxjQUFjLEVBQ25CLEtBQUsscUJBQXFCLEVBRTNCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIscUJBQWEsb0JBQW9CO2FBS2IsTUFBTSxFQUFFLFVBQVU7SUFKcEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQTJDO0lBQ2xFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUE0RDtJQUVyRixZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFPMUI7SUFFRCxJQUFXLE9BQU8sZUFFakI7SUFFTSx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsV0FBVyxDQWdCdkU7SUFFRCx3RUFBd0U7SUFDakUsa0NBQWtDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTs7Ozs7Ozs7a0JBRXBEO0lBRVksNEJBQTRCLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBZW5FO0lBRUQ7Ozs7O09BS0c7SUFDVSx5QkFBeUIsQ0FDcEMsY0FBYyxFQUFFLFVBQVUsRUFDMUIsUUFBUSxFQUFFO1FBQ1IsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3ZCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUMxQiwrQkFBK0IsRUFBRSxNQUFNLENBQUM7S0FDekMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxHQUFHLHNCQUFzQixDQUFDLEdBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQW1EbEQ7SUFFWSx1QkFBdUIsQ0FDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUN4QixPQUFPLENBQUM7UUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDO1FBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUFDLFVBQVUsRUFBRSxPQUFPLENBQUE7S0FBRSxDQUFDLENBUWxFO0lBRUQsT0FBTyxDQUFDLFdBQVc7Q0FRcEI7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsT0FBTyxFQUFFLHFCQUFxQixHQUFHLE1BQU0sQ0FNaEY7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxxQkFBcUIsQ0FLakYifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"slash_factory.d.ts","sourceRoot":"","sources":["../../src/l1-contracts/slash_factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,EAA8B,KAAK,GAAG,EAAE,KAAK,GAAG,EAAmC,MAAM,MAAM,CAAC;AAEvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAE3B,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,oBAAoB;aAKb,MAAM,EAAE,UAAU;IAJpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4D;IAErF,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAO1B;IAED,IAAW,OAAO,eAEjB;IAEM,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,CAgBvE;IAED,wEAAwE;IACjE,kCAAkC,CAAC,IAAI,EAAE,GAAG,EAAE;;;;;;;;kBAEpD;IAEY,4BAA4B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAenE;IAED;;;;;OAKG;IACU,yBAAyB,CACpC,cAAc,EAAE,UAAU,EAC1B,QAAQ,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,+BAA+B,EAAE,MAAM,CAAC;KACzC,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,GAAG,sBAAsB,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAmDlD;IAEY,uBAAuB,CAClC,OAAO,EAAE,cAAc,EAAE,GACxB,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAQlE;IAED,OAAO,CAAC,WAAW;CAQpB;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAMhF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAKjF"}