@aztec/stdlib 0.0.1-commit.3d8f95d → 0.0.1-commit.3f296a7d2

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 (451) 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 +2 -2
  8. package/dest/abi/decoder.d.ts.map +1 -1
  9. package/dest/abi/decoder.js +7 -5
  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 +37 -6
  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/utils.d.ts +14 -1
  17. package/dest/abi/utils.d.ts.map +1 -1
  18. package/dest/abi/utils.js +15 -0
  19. package/dest/auth_witness/auth_witness.js +3 -3
  20. package/dest/avm/avm_proving_request.d.ts +166 -166
  21. package/dest/avm/revert_code.d.ts +16 -1
  22. package/dest/avm/revert_code.d.ts.map +1 -1
  23. package/dest/avm/revert_code.js +15 -5
  24. package/dest/block/block_data.d.ts +52 -0
  25. package/dest/block/block_data.d.ts.map +1 -0
  26. package/dest/block/block_data.js +12 -0
  27. package/dest/block/index.d.ts +2 -1
  28. package/dest/block/index.d.ts.map +1 -1
  29. package/dest/block/index.js +1 -0
  30. package/dest/block/l2_block.d.ts +9 -1
  31. package/dest/block/l2_block.d.ts.map +1 -1
  32. package/dest/block/l2_block.js +12 -2
  33. package/dest/block/l2_block_source.d.ts +35 -8
  34. package/dest/block/l2_block_source.d.ts.map +1 -1
  35. package/dest/block/l2_block_stream/l2_block_stream.d.ts +1 -1
  36. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  37. package/dest/block/l2_block_stream/l2_block_stream.js +10 -0
  38. package/dest/checkpoint/checkpoint.d.ts +22 -7
  39. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  40. package/dest/checkpoint/checkpoint.js +32 -16
  41. package/dest/checkpoint/checkpoint_data.d.ts +120 -0
  42. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -0
  43. package/dest/checkpoint/checkpoint_data.js +26 -0
  44. package/dest/checkpoint/index.d.ts +3 -1
  45. package/dest/checkpoint/index.d.ts.map +1 -1
  46. package/dest/checkpoint/index.js +2 -0
  47. package/dest/checkpoint/published_checkpoint.d.ts +17 -2
  48. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  49. package/dest/checkpoint/published_checkpoint.js +1 -2
  50. package/dest/checkpoint/validate.d.ts +36 -0
  51. package/dest/checkpoint/validate.d.ts.map +1 -0
  52. package/dest/checkpoint/validate.js +120 -0
  53. package/dest/config/index.d.ts +2 -1
  54. package/dest/config/index.d.ts.map +1 -1
  55. package/dest/config/index.js +1 -0
  56. package/dest/config/pipelining-config.d.ts +19 -0
  57. package/dest/config/pipelining-config.d.ts.map +1 -0
  58. package/dest/config/pipelining-config.js +18 -0
  59. package/dest/config/sequencer-config.d.ts +4 -2
  60. package/dest/config/sequencer-config.d.ts.map +1 -1
  61. package/dest/config/sequencer-config.js +12 -0
  62. package/dest/contract/contract_address.d.ts +3 -3
  63. package/dest/contract/contract_address.js +7 -7
  64. package/dest/contract/contract_class.d.ts +2 -3
  65. package/dest/contract/contract_class.d.ts.map +1 -1
  66. package/dest/contract/contract_class_id.d.ts +3 -3
  67. package/dest/contract/contract_class_id.d.ts.map +1 -1
  68. package/dest/contract/contract_class_id.js +7 -6
  69. package/dest/contract/index.d.ts +1 -3
  70. package/dest/contract/index.d.ts.map +1 -1
  71. package/dest/contract/index.js +0 -2
  72. package/dest/contract/interfaces/contract_class.d.ts +3 -156
  73. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  74. package/dest/contract/interfaces/contract_class.js +1 -28
  75. package/dest/contract/interfaces/node-info.d.ts +3 -1
  76. package/dest/contract/interfaces/node-info.d.ts.map +1 -1
  77. package/dest/contract/interfaces/node-info.js +2 -1
  78. package/dest/contract/private_function.js +2 -2
  79. package/dest/epoch-helpers/index.d.ts +7 -1
  80. package/dest/epoch-helpers/index.d.ts.map +1 -1
  81. package/dest/epoch-helpers/index.js +10 -2
  82. package/dest/file-store/local.d.ts +3 -3
  83. package/dest/file-store/local.d.ts.map +1 -1
  84. package/dest/file-store/local.js +13 -4
  85. package/dest/file-store/s3.d.ts +1 -1
  86. package/dest/file-store/s3.d.ts.map +1 -1
  87. package/dest/file-store/s3.js +11 -3
  88. package/dest/gas/gas_fees.d.ts +1 -1
  89. package/dest/gas/gas_fees.d.ts.map +1 -1
  90. package/dest/gas/gas_fees.js +4 -1
  91. package/dest/ha-signing/config.d.ts +136 -0
  92. package/dest/ha-signing/config.d.ts.map +1 -0
  93. package/dest/ha-signing/config.js +97 -0
  94. package/dest/ha-signing/index.d.ts +4 -0
  95. package/dest/ha-signing/index.d.ts.map +1 -0
  96. package/dest/ha-signing/index.js +3 -0
  97. package/dest/ha-signing/local_config.d.ts +63 -0
  98. package/dest/ha-signing/local_config.d.ts.map +1 -0
  99. package/dest/ha-signing/local_config.js +24 -0
  100. package/dest/ha-signing/types.d.ts +85 -0
  101. package/dest/ha-signing/types.d.ts.map +1 -0
  102. package/dest/ha-signing/types.js +32 -0
  103. package/dest/hash/hash.d.ts +17 -1
  104. package/dest/hash/hash.d.ts.map +1 -1
  105. package/dest/hash/hash.js +40 -10
  106. package/dest/hash/map_slot.js +2 -2
  107. package/dest/interfaces/allowed_element.d.ts +26 -20
  108. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  109. package/dest/interfaces/allowed_element.js +8 -8
  110. package/dest/interfaces/archiver.d.ts +1 -1
  111. package/dest/interfaces/archiver.d.ts.map +1 -1
  112. package/dest/interfaces/archiver.js +8 -2
  113. package/dest/interfaces/aztec-node-admin.d.ts +105 -31
  114. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  115. package/dest/interfaces/aztec-node-admin.js +9 -3
  116. package/dest/interfaces/aztec-node.d.ts +13 -7
  117. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  118. package/dest/interfaces/aztec-node.js +5 -2
  119. package/dest/interfaces/block-builder.d.ts +39 -12
  120. package/dest/interfaces/block-builder.d.ts.map +1 -1
  121. package/dest/interfaces/block-builder.js +13 -6
  122. package/dest/interfaces/configs.d.ts +77 -32
  123. package/dest/interfaces/configs.d.ts.map +1 -1
  124. package/dest/interfaces/configs.js +10 -3
  125. package/dest/interfaces/l2_logs_source.d.ts +5 -3
  126. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  127. package/dest/interfaces/merkle_tree_operations.d.ts +10 -20
  128. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  129. package/dest/interfaces/p2p.d.ts +3 -8
  130. package/dest/interfaces/p2p.d.ts.map +1 -1
  131. package/dest/interfaces/prover-client.d.ts +6 -1
  132. package/dest/interfaces/prover-client.d.ts.map +1 -1
  133. package/dest/interfaces/prover-client.js +7 -1
  134. package/dest/interfaces/proving-job.d.ts +202 -202
  135. package/dest/interfaces/validator.d.ts +104 -42
  136. package/dest/interfaces/validator.d.ts.map +1 -1
  137. package/dest/interfaces/validator.js +8 -4
  138. package/dest/interfaces/world_state.d.ts +5 -4
  139. package/dest/interfaces/world_state.d.ts.map +1 -1
  140. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +3 -3
  141. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  142. package/dest/kernel/hints/build_note_hash_read_request_hints.js +13 -10
  143. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  144. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  145. package/dest/kernel/hints/build_nullifier_read_request_hints.js +13 -10
  146. package/dest/kernel/hints/build_transient_data_hints.d.ts +5 -2
  147. package/dest/kernel/hints/build_transient_data_hints.d.ts.map +1 -1
  148. package/dest/kernel/hints/build_transient_data_hints.js +9 -3
  149. package/dest/kernel/hints/index.d.ts +2 -2
  150. package/dest/kernel/hints/index.js +2 -2
  151. package/dest/kernel/hints/key_validation_request_and_separator.d.ts +24 -0
  152. package/dest/kernel/hints/key_validation_request_and_separator.d.ts.map +1 -0
  153. package/dest/kernel/hints/{key_validation_request_and_generator.js → key_validation_request_and_separator.js} +12 -15
  154. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts → scoped_key_validation_request_and_separator.d.ts} +8 -8
  155. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts.map → scoped_key_validation_request_and_separator.d.ts.map} +1 -1
  156. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.js → scoped_key_validation_request_and_separator.js} +6 -6
  157. package/dest/kernel/private_circuit_public_inputs.d.ts +9 -9
  158. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  159. package/dest/kernel/private_circuit_public_inputs.js +16 -16
  160. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +3 -3
  161. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  162. package/dest/kernel/private_kernel_circuit_public_inputs.js +4 -4
  163. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +3 -3
  164. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  165. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +4 -4
  166. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +4 -3
  167. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  168. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +11 -7
  169. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +3 -3
  170. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  171. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -7
  172. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +3 -3
  173. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  174. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +7 -7
  175. package/dest/kernel/private_validation_requests.d.ts +3 -3
  176. package/dest/kernel/private_validation_requests.js +9 -9
  177. package/dest/keys/derivation.js +8 -8
  178. package/dest/keys/key_types.d.ts +3 -3
  179. package/dest/keys/key_types.d.ts.map +1 -1
  180. package/dest/keys/public_keys.js +2 -2
  181. package/dest/keys/utils.js +5 -5
  182. package/dest/kv-store/config.d.ts +17 -0
  183. package/dest/kv-store/config.d.ts.map +1 -0
  184. package/dest/kv-store/config.js +26 -0
  185. package/dest/kv-store/index.d.ts +2 -0
  186. package/dest/kv-store/index.d.ts.map +1 -0
  187. package/dest/kv-store/index.js +1 -0
  188. package/dest/logs/debug_log_store.d.ts +30 -0
  189. package/dest/logs/debug_log_store.d.ts.map +1 -0
  190. package/dest/logs/debug_log_store.js +30 -0
  191. package/dest/logs/extended_directional_app_tagging_secret.d.ts +47 -0
  192. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -0
  193. package/dest/logs/{directional_app_tagging_secret.js → extended_directional_app_tagging_secret.js} +23 -15
  194. package/dest/logs/index.d.ts +4 -2
  195. package/dest/logs/index.d.ts.map +1 -1
  196. package/dest/logs/index.js +3 -1
  197. package/dest/logs/log_filter.d.ts +4 -1
  198. package/dest/logs/log_filter.d.ts.map +1 -1
  199. package/dest/logs/log_filter.js +2 -1
  200. package/dest/logs/pre_tag.d.ts +16 -11
  201. package/dest/logs/pre_tag.d.ts.map +1 -1
  202. package/dest/logs/pre_tag.js +2 -2
  203. package/dest/logs/private_log.d.ts +2 -2
  204. package/dest/logs/private_log.d.ts.map +1 -1
  205. package/dest/logs/public_log.d.ts +4 -3
  206. package/dest/logs/public_log.d.ts.map +1 -1
  207. package/dest/logs/public_log.js +2 -1
  208. package/dest/logs/siloed_tag.d.ts +5 -3
  209. package/dest/logs/siloed_tag.d.ts.map +1 -1
  210. package/dest/logs/siloed_tag.js +8 -7
  211. package/dest/logs/tag.js +1 -1
  212. package/dest/logs/tagging_index_range.d.ts +40 -0
  213. package/dest/logs/tagging_index_range.d.ts.map +1 -0
  214. package/dest/logs/tagging_index_range.js +8 -0
  215. package/dest/logs/tx_scoped_l2_log.d.ts +3 -1
  216. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  217. package/dest/logs/tx_scoped_l2_log.js +7 -0
  218. package/dest/messaging/l1_to_l2_message_source.d.ts +4 -2
  219. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  220. package/dest/messaging/l2_to_l1_membership.d.ts +32 -6
  221. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  222. package/dest/messaging/l2_to_l1_membership.js +69 -26
  223. package/dest/noir/index.d.ts +3 -3
  224. package/dest/noir/index.d.ts.map +1 -1
  225. package/dest/note/index.d.ts +1 -2
  226. package/dest/note/index.d.ts.map +1 -1
  227. package/dest/note/index.js +0 -1
  228. package/dest/p2p/attestation_utils.d.ts +11 -1
  229. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  230. package/dest/p2p/attestation_utils.js +45 -0
  231. package/dest/p2p/block_proposal.d.ts +2 -2
  232. package/dest/p2p/block_proposal.d.ts.map +1 -1
  233. package/dest/p2p/block_proposal.js +2 -4
  234. package/dest/p2p/checkpoint_attestation.d.ts +2 -1
  235. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  236. package/dest/p2p/checkpoint_attestation.js +1 -1
  237. package/dest/p2p/checkpoint_proposal.d.ts +11 -11
  238. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  239. package/dest/p2p/checkpoint_proposal.js +32 -37
  240. package/dest/p2p/client_type.d.ts +2 -5
  241. package/dest/p2p/client_type.d.ts.map +1 -1
  242. package/dest/p2p/client_type.js +0 -7
  243. package/dest/p2p/consensus_payload.d.ts +12 -3
  244. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  245. package/dest/p2p/consensus_payload.js +22 -15
  246. package/dest/p2p/index.d.ts +1 -2
  247. package/dest/p2p/index.d.ts.map +1 -1
  248. package/dest/p2p/index.js +0 -1
  249. package/dest/p2p/peer_error.d.ts +3 -1
  250. package/dest/p2p/peer_error.d.ts.map +1 -1
  251. package/dest/p2p/peer_error.js +5 -0
  252. package/dest/p2p/topic_type.d.ts +3 -4
  253. package/dest/p2p/topic_type.d.ts.map +1 -1
  254. package/dest/p2p/topic_type.js +7 -24
  255. package/dest/rollup/checkpoint_header.d.ts +2 -2
  256. package/dest/rollup/checkpoint_header.js +2 -2
  257. package/dest/slashing/tally.d.ts +7 -2
  258. package/dest/slashing/tally.d.ts.map +1 -1
  259. package/dest/slashing/tally.js +30 -2
  260. package/dest/tests/factories.d.ts +4 -4
  261. package/dest/tests/factories.d.ts.map +1 -1
  262. package/dest/tests/factories.js +19 -38
  263. package/dest/tests/mocks.d.ts +8 -3
  264. package/dest/tests/mocks.d.ts.map +1 -1
  265. package/dest/tests/mocks.js +31 -21
  266. package/dest/tx/block_header.d.ts +3 -1
  267. package/dest/tx/block_header.d.ts.map +1 -1
  268. package/dest/tx/block_header.js +6 -2
  269. package/dest/tx/global_variables.d.ts +4 -4
  270. package/dest/tx/global_variables.d.ts.map +1 -1
  271. package/dest/tx/private_execution_result.d.ts +6 -6
  272. package/dest/tx/private_execution_result.d.ts.map +1 -1
  273. package/dest/tx/private_execution_result.js +6 -6
  274. package/dest/tx/profiling.d.ts +17 -5
  275. package/dest/tx/profiling.d.ts.map +1 -1
  276. package/dest/tx/profiling.js +15 -5
  277. package/dest/tx/protocol_contracts.d.ts +1 -1
  278. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  279. package/dest/tx/protocol_contracts.js +2 -2
  280. package/dest/tx/public_simulation_output.d.ts +4 -2
  281. package/dest/tx/public_simulation_output.d.ts.map +1 -1
  282. package/dest/tx/public_simulation_output.js +7 -3
  283. package/dest/tx/simulated_tx.d.ts +113 -2
  284. package/dest/tx/simulated_tx.d.ts.map +1 -1
  285. package/dest/tx/simulated_tx.js +4 -1
  286. package/dest/tx/tx.d.ts +6 -5
  287. package/dest/tx/tx.d.ts.map +1 -1
  288. package/dest/tx/tx.js +18 -6
  289. package/dest/tx/tx_receipt.d.ts +22 -3
  290. package/dest/tx/tx_receipt.d.ts.map +1 -1
  291. package/dest/tx/tx_receipt.js +15 -4
  292. package/dest/tx/tx_request.js +2 -2
  293. package/dest/tx/validator/error_texts.d.ts +10 -2
  294. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  295. package/dest/tx/validator/error_texts.js +11 -1
  296. package/dest/update-checker/index.d.ts +3 -2
  297. package/dest/update-checker/index.d.ts.map +1 -1
  298. package/dest/update-checker/index.js +2 -1
  299. package/dest/update-checker/package_version.d.ts +3 -0
  300. package/dest/update-checker/package_version.d.ts.map +1 -0
  301. package/dest/update-checker/package_version.js +24 -0
  302. package/dest/update-checker/version_checker.d.ts +25 -0
  303. package/dest/update-checker/version_checker.d.ts.map +1 -0
  304. package/dest/update-checker/version_checker.js +50 -0
  305. package/dest/validators/errors.d.ts +6 -1
  306. package/dest/validators/errors.d.ts.map +1 -1
  307. package/dest/validators/errors.js +7 -0
  308. package/dest/validators/schemas.d.ts +30 -30
  309. package/dest/validators/schemas.d.ts.map +1 -1
  310. package/dest/validators/schemas.js +4 -3
  311. package/dest/validators/types.d.ts +3 -3
  312. package/dest/validators/types.d.ts.map +1 -1
  313. package/dest/versioning/versioning.d.ts +4 -2
  314. package/dest/versioning/versioning.d.ts.map +1 -1
  315. package/dest/versioning/versioning.js +4 -1
  316. package/package.json +12 -11
  317. package/src/abi/abi.ts +25 -2
  318. package/src/abi/buffer.ts +25 -4
  319. package/src/abi/decoder.ts +15 -6
  320. package/src/abi/encoder.ts +49 -6
  321. package/src/abi/event_metadata_definition.ts +2 -0
  322. package/src/abi/utils.ts +25 -0
  323. package/src/auth_witness/auth_witness.ts +3 -3
  324. package/src/avm/revert_code.ts +15 -0
  325. package/src/block/block_data.ts +26 -0
  326. package/src/block/index.ts +1 -0
  327. package/src/block/l2_block.ts +13 -1
  328. package/src/block/l2_block_source.ts +38 -7
  329. package/src/block/l2_block_stream/l2_block_stream.ts +21 -0
  330. package/src/checkpoint/checkpoint.ts +43 -16
  331. package/src/checkpoint/checkpoint_data.ts +51 -0
  332. package/src/checkpoint/index.ts +2 -0
  333. package/src/checkpoint/published_checkpoint.ts +3 -1
  334. package/src/checkpoint/validate.ts +230 -0
  335. package/src/config/index.ts +1 -0
  336. package/src/config/pipelining-config.ts +31 -0
  337. package/src/config/sequencer-config.ts +19 -1
  338. package/src/contract/contract_address.ts +7 -7
  339. package/src/contract/contract_class.ts +3 -3
  340. package/src/contract/contract_class_id.ts +7 -6
  341. package/src/contract/index.ts +0 -2
  342. package/src/contract/interfaces/contract_class.ts +2 -82
  343. package/src/contract/interfaces/node-info.ts +3 -0
  344. package/src/contract/private_function.ts +2 -2
  345. package/src/epoch-helpers/index.ts +14 -0
  346. package/src/file-store/local.ts +15 -5
  347. package/src/file-store/s3.ts +12 -3
  348. package/src/gas/README.md +123 -0
  349. package/src/gas/gas_fees.ts +7 -1
  350. package/src/ha-signing/config.ts +156 -0
  351. package/src/ha-signing/index.ts +27 -0
  352. package/src/ha-signing/local_config.ts +46 -0
  353. package/src/ha-signing/types.ts +112 -0
  354. package/src/hash/hash.ts +43 -10
  355. package/src/hash/map_slot.ts +2 -2
  356. package/src/interfaces/allowed_element.ts +29 -9
  357. package/src/interfaces/archiver.ts +8 -2
  358. package/src/interfaces/aztec-node-admin.ts +23 -0
  359. package/src/interfaces/aztec-node.ts +25 -6
  360. package/src/interfaces/block-builder.ts +61 -14
  361. package/src/interfaces/configs.ts +36 -8
  362. package/src/interfaces/l2_logs_source.ts +4 -1
  363. package/src/interfaces/merkle_tree_operations.ts +9 -19
  364. package/src/interfaces/p2p.ts +2 -13
  365. package/src/interfaces/prover-client.ts +8 -0
  366. package/src/interfaces/validator.ts +51 -28
  367. package/src/interfaces/world_state.ts +4 -3
  368. package/src/kernel/hints/build_note_hash_read_request_hints.ts +14 -18
  369. package/src/kernel/hints/build_nullifier_read_request_hints.ts +15 -18
  370. package/src/kernel/hints/build_transient_data_hints.ts +17 -2
  371. package/src/kernel/hints/index.ts +2 -2
  372. package/src/kernel/hints/{key_validation_request_and_generator.ts → key_validation_request_and_separator.ts} +12 -15
  373. package/src/kernel/hints/{scoped_key_validation_request_and_generator.ts → scoped_key_validation_request_and_separator.ts} +10 -10
  374. package/src/kernel/private_circuit_public_inputs.ts +14 -14
  375. package/src/kernel/private_kernel_circuit_public_inputs.ts +2 -2
  376. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +2 -2
  377. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +14 -5
  378. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +5 -5
  379. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +5 -5
  380. package/src/kernel/private_validation_requests.ts +8 -8
  381. package/src/keys/derivation.ts +8 -8
  382. package/src/keys/key_types.ts +6 -2
  383. package/src/keys/public_keys.ts +2 -2
  384. package/src/keys/utils.ts +5 -5
  385. package/src/kv-store/config.ts +36 -0
  386. package/src/kv-store/index.ts +1 -0
  387. package/src/logs/debug_log_store.ts +54 -0
  388. package/src/logs/{directional_app_tagging_secret.ts → extended_directional_app_tagging_secret.ts} +24 -16
  389. package/src/logs/index.ts +3 -1
  390. package/src/logs/log_filter.ts +5 -0
  391. package/src/logs/pre_tag.ts +5 -5
  392. package/src/logs/public_log.ts +4 -2
  393. package/src/logs/siloed_tag.ts +10 -5
  394. package/src/logs/tag.ts +1 -1
  395. package/src/logs/tagging_index_range.ts +24 -0
  396. package/src/logs/tx_scoped_l2_log.ts +16 -0
  397. package/src/messaging/l1_to_l2_message_source.ts +3 -1
  398. package/src/messaging/l2_to_l1_membership.ts +98 -33
  399. package/src/noir/index.ts +2 -2
  400. package/src/note/index.ts +0 -1
  401. package/src/p2p/attestation_utils.ts +56 -0
  402. package/src/p2p/block_proposal.ts +1 -3
  403. package/src/p2p/checkpoint_attestation.ts +6 -1
  404. package/src/p2p/checkpoint_proposal.ts +57 -49
  405. package/src/p2p/client_type.ts +0 -6
  406. package/src/p2p/consensus_payload.ts +25 -12
  407. package/src/p2p/index.ts +0 -1
  408. package/src/p2p/peer_error.ts +7 -0
  409. package/src/p2p/topic_type.ts +8 -15
  410. package/src/rollup/checkpoint_header.ts +2 -2
  411. package/src/slashing/tally.ts +34 -1
  412. package/src/tests/factories.ts +21 -45
  413. package/src/tests/mocks.ts +46 -20
  414. package/src/tx/block_header.ts +8 -2
  415. package/src/tx/global_variables.ts +3 -3
  416. package/src/tx/private_execution_result.ts +5 -5
  417. package/src/tx/profiling.ts +14 -5
  418. package/src/tx/protocol_contracts.ts +2 -2
  419. package/src/tx/public_simulation_output.ts +4 -0
  420. package/src/tx/simulated_tx.ts +8 -1
  421. package/src/tx/tx.ts +20 -11
  422. package/src/tx/tx_receipt.ts +17 -2
  423. package/src/tx/tx_request.ts +2 -2
  424. package/src/tx/validator/error_texts.ts +13 -1
  425. package/src/update-checker/index.ts +2 -1
  426. package/src/update-checker/package_version.ts +30 -0
  427. package/src/update-checker/version_checker.ts +65 -0
  428. package/src/validators/errors.ts +9 -0
  429. package/src/validators/schemas.ts +8 -1
  430. package/src/validators/types.ts +5 -4
  431. package/src/versioning/versioning.ts +4 -1
  432. package/dest/contract/private_function_membership_proof.d.ts +0 -32
  433. package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
  434. package/dest/contract/private_function_membership_proof.js +0 -124
  435. package/dest/contract/utility_function_membership_proof.d.ts +0 -27
  436. package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
  437. package/dest/contract/utility_function_membership_proof.js +0 -87
  438. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +0 -30
  439. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +0 -1
  440. package/dest/logs/directional_app_tagging_secret.d.ts +0 -40
  441. package/dest/logs/directional_app_tagging_secret.d.ts.map +0 -1
  442. package/dest/note/notes_filter.d.ts +0 -27
  443. package/dest/note/notes_filter.d.ts.map +0 -1
  444. package/dest/note/notes_filter.js +0 -11
  445. package/dest/update-checker/update-checker.d.ts +0 -49
  446. package/dest/update-checker/update-checker.d.ts.map +0 -1
  447. package/dest/update-checker/update-checker.js +0 -130
  448. package/src/contract/private_function_membership_proof.ts +0 -167
  449. package/src/contract/utility_function_membership_proof.ts +0 -118
  450. package/src/note/notes_filter.ts +0 -38
  451. package/src/update-checker/update-checker.ts +0 -166
@@ -4,9 +4,9 @@ import { keccak256 } from '@aztec/foundation/crypto/keccak';
4
4
  import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
5
5
  import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import { Signature } from '@aztec/foundation/eth-signature';
7
- import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
8
- import { DutyType } from '@aztec/validator-ha-signer/types';
7
+ import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
9
8
  import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
9
+ import { DutyType } from '../ha-signing/index.js';
10
10
  import { CheckpointHeader } from '../rollup/checkpoint_header.js';
11
11
  import { BlockHeader } from '../tx/block_header.js';
12
12
  import { TxHash } from '../tx/index.js';
@@ -28,12 +28,13 @@ export class CheckpointProposalHash extends Buffer32 {
28
28
  */ export class CheckpointProposal extends Gossipable {
29
29
  checkpointHeader;
30
30
  archive;
31
+ feeAssetPriceModifier;
31
32
  signature;
32
33
  lastBlock;
33
34
  static p2pTopic = TopicType.checkpoint_proposal;
34
35
  sender;
35
- constructor(/** The aggregated checkpoint header for consensus */ checkpointHeader, /** Archive root after this checkpoint is applied */ archive, /** The proposer's signature over the checkpoint payload (checkpointHeader + archive) */ signature, /** Optional last block info, including its own signature for BlockProposal extraction */ lastBlock){
36
- super(), this.checkpointHeader = checkpointHeader, this.archive = archive, this.signature = signature, this.lastBlock = lastBlock;
36
+ constructor(/** The aggregated checkpoint header for consensus */ checkpointHeader, /** Archive root after this checkpoint is applied */ archive, /** The fee asset price modifier in basis points (from oracle) */ feeAssetPriceModifier, /** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */ signature, /** Optional last block info, including its own signature for BlockProposal extraction */ lastBlock){
37
+ super(), this.checkpointHeader = checkpointHeader, this.archive = archive, this.feeAssetPriceModifier = feeAssetPriceModifier, this.signature = signature, this.lastBlock = lastBlock;
37
38
  }
38
39
  generateP2PMessageIdentifier() {
39
40
  return Promise.resolve(new CheckpointProposalHash(keccak256(this.signature.toBuffer())));
@@ -41,18 +42,6 @@ export class CheckpointProposalHash extends Buffer32 {
41
42
  get slotNumber() {
42
43
  return this.checkpointHeader.slotNumber;
43
44
  }
44
- get blockNumber() {
45
- if (!this.lastBlock) {
46
- throw new Error('Cannot get blockNumber without lastBlock');
47
- }
48
- return this.lastBlock.blockHeader.getBlockNumber();
49
- }
50
- /** Convenience getter for txHashes from lastBlock */ get txHashes() {
51
- return this.lastBlock?.txHashes ?? [];
52
- }
53
- /** Convenience getter for txs from lastBlock */ get txs() {
54
- return this.lastBlock?.signedTxs?.txs;
55
- }
56
45
  /**
57
46
  * Extract a BlockProposal from the last block info.
58
47
  * Uses inHash from checkpointHeader.contentCommitment.inHash
@@ -85,35 +74,38 @@ export class CheckpointProposalHash extends Buffer32 {
85
74
  }
86
75
  /**
87
76
  * Get the payload to sign for this checkpoint proposal.
88
- * The signature is over the checkpoint header + archive root (for consensus).
77
+ * The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
89
78
  */ getPayloadToSign(domainSeparator) {
90
79
  return serializeToBuffer([
91
80
  domainSeparator,
92
81
  this.checkpointHeader,
93
- this.archive
82
+ this.archive,
83
+ serializeSignedBigInt(this.feeAssetPriceModifier)
94
84
  ]);
95
85
  }
96
- static async createProposalFromSigner(checkpointHeader, archiveRoot, lastBlockInfo, payloadSigner) {
86
+ static async createProposalFromSigner(checkpointHeader, archiveRoot, feeAssetPriceModifier, lastBlockInfo, payloadSigner) {
97
87
  // Sign the checkpoint payload with CHECKPOINT_PROPOSAL duty type
98
- const tempProposal = new CheckpointProposal(checkpointHeader, archiveRoot, Signature.empty(), undefined);
88
+ const tempProposal = new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, Signature.empty());
99
89
  const checkpointHash = getHashedSignaturePayload(tempProposal, SignatureDomainSeparator.checkpointProposal);
100
90
  const checkpointContext = {
101
91
  slot: checkpointHeader.slotNumber,
102
92
  blockNumber: lastBlockInfo?.blockHeader?.globalVariables.blockNumber ?? BlockNumber(0),
103
93
  dutyType: DutyType.CHECKPOINT_PROPOSAL
104
94
  };
105
- const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
106
- if (!lastBlockInfo) {
107
- return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature);
95
+ if (lastBlockInfo) {
96
+ // Sign block proposal before signing checkpoint proposal to ensure HA protection
97
+ const lastBlockProposal = await BlockProposal.createProposalFromSigner(lastBlockInfo.blockHeader, lastBlockInfo.indexWithinCheckpoint, checkpointHeader.inHash, archiveRoot, lastBlockInfo.txHashes, lastBlockInfo.txs, payloadSigner);
98
+ const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
99
+ return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature, {
100
+ blockHeader: lastBlockInfo.blockHeader,
101
+ indexWithinCheckpoint: lastBlockInfo.indexWithinCheckpoint,
102
+ txHashes: lastBlockInfo.txHashes,
103
+ signature: lastBlockProposal.signature,
104
+ signedTxs: lastBlockProposal.signedTxs
105
+ });
108
106
  }
109
- const lastBlockProposal = await BlockProposal.createProposalFromSigner(lastBlockInfo.blockHeader, lastBlockInfo.indexWithinCheckpoint, checkpointHeader.inHash, archiveRoot, lastBlockInfo.txHashes, lastBlockInfo.txs, payloadSigner);
110
- return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature, {
111
- blockHeader: lastBlockInfo.blockHeader,
112
- indexWithinCheckpoint: lastBlockInfo.indexWithinCheckpoint,
113
- txHashes: lastBlockInfo.txHashes,
114
- signature: lastBlockProposal.signature,
115
- signedTxs: lastBlockProposal.signedTxs
116
- });
107
+ const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
108
+ return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature);
117
109
  }
118
110
  /**
119
111
  * Lazily evaluate the sender of the proposal; result is cached.
@@ -143,6 +135,7 @@ export class CheckpointProposalHash extends Buffer32 {
143
135
  const buffer = [
144
136
  this.checkpointHeader,
145
137
  this.archive,
138
+ serializeSignedBigInt(this.feeAssetPriceModifier),
146
139
  this.signature
147
140
  ];
148
141
  if (this.lastBlock) {
@@ -167,6 +160,7 @@ export class CheckpointProposalHash extends Buffer32 {
167
160
  const reader = BufferReader.asReader(buf);
168
161
  const checkpointHeader = reader.readObject(CheckpointHeader);
169
162
  const archive = reader.readObject(Fr);
163
+ const feeAssetPriceModifier = reader.readInt256();
170
164
  const signature = reader.readObject(Signature);
171
165
  const hasLastBlock = reader.readNumber();
172
166
  if (hasLastBlock) {
@@ -185,7 +179,7 @@ export class CheckpointProposalHash extends Buffer32 {
185
179
  signedTxs = SignedTxs.fromBuffer(reader);
186
180
  }
187
181
  }
188
- return new CheckpointProposal(checkpointHeader, archive, signature, {
182
+ return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, {
189
183
  blockHeader,
190
184
  indexWithinCheckpoint,
191
185
  txHashes,
@@ -193,20 +187,20 @@ export class CheckpointProposalHash extends Buffer32 {
193
187
  signedTxs
194
188
  });
195
189
  }
196
- return new CheckpointProposal(checkpointHeader, archive, signature);
190
+ return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature);
197
191
  }
198
192
  getSize() {
199
- let size = this.checkpointHeader.toBuffer().length + this.archive.size + this.signature.getSize() + 4; /* hasLastBlock flag */
193
+ let size = this.checkpointHeader.toBuffer().length + this.archive.size + this.signature.getSize() + 8 /* feeAssetPriceModifier */ + 4; /* hasLastBlock flag */
200
194
  if (this.lastBlock) {
201
195
  size += this.lastBlock.blockHeader.getSize() + 4 /* indexWithinCheckpoint */ + this.lastBlock.signature.getSize() + 4 /* txHashes.length */ + this.lastBlock.txHashes.length * TxHash.SIZE + 4 /* hasSignedTxs flag */ + (this.lastBlock.signedTxs ? this.lastBlock.signedTxs.getSize() : 0);
202
196
  }
203
197
  return size;
204
198
  }
205
199
  static empty() {
206
- return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, Signature.empty());
200
+ return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, 0n, Signature.empty());
207
201
  }
208
202
  static random() {
209
- return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), Signature.random(), {
203
+ return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), 0n, Signature.random(), {
210
204
  blockHeader: BlockHeader.random(),
211
205
  indexWithinCheckpoint: IndexWithinCheckpoint(Math.floor(Math.random() * 5)),
212
206
  txHashes: [
@@ -221,6 +215,7 @@ export class CheckpointProposalHash extends Buffer32 {
221
215
  checkpointHeader: this.checkpointHeader.toInspect(),
222
216
  archive: this.archive.toString(),
223
217
  signature: this.signature.toString(),
218
+ feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
224
219
  lastBlock: this.lastBlock ? {
225
220
  blockHeader: this.lastBlock.blockHeader.toInspect(),
226
221
  indexWithinCheckpoint: this.lastBlock.indexWithinCheckpoint,
@@ -233,6 +228,6 @@ export class CheckpointProposalHash extends Buffer32 {
233
228
  * Returns a copy of this proposal without lastBlock info, as a CheckpointProposalCore.
234
229
  * Used when the lastBlock has been extracted and stored separately.
235
230
  */ toCore() {
236
- return new CheckpointProposal(this.checkpointHeader, this.archive, this.signature);
231
+ return new CheckpointProposal(this.checkpointHeader, this.archive, this.feeAssetPriceModifier, this.signature);
237
232
  }
238
233
  }
@@ -1,5 +1,2 @@
1
- export declare enum P2PClientType {
2
- Full = 0,
3
- Prover = 1
4
- }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X3R5cGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvY2xpZW50X3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQVksYUFBYTtJQUV2QixJQUFJLElBQUE7SUFFSixNQUFNLElBQUE7Q0FDUCJ9
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X3R5cGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvY2xpZW50X3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"client_type.d.ts","sourceRoot":"","sources":["../../src/p2p/client_type.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IAEvB,IAAI,IAAA;IAEJ,MAAM,IAAA;CACP"}
1
+ {"version":3,"file":"client_type.d.ts","sourceRoot":"","sources":["../../src/p2p/client_type.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- export var P2PClientType = /*#__PURE__*/ function(P2PClientType) {
2
- // Full p2p clients will subscribe to all gossip topics
3
- P2PClientType[P2PClientType["Full"] = 0] = "Full";
4
- // Prove p2p clients will only subscribe to transaction and proving topics
5
- P2PClientType[P2PClientType["Prover"] = 1] = "Prover";
6
- return P2PClientType;
7
- }({});
@@ -12,26 +12,34 @@ export declare class ConsensusPayload implements Signable {
12
12
  readonly header: CheckpointHeader;
13
13
  /** The archive root after the block is added */
14
14
  readonly archive: Fr;
15
+ /** The fee asset price modifier in basis points (from oracle) */
16
+ readonly feeAssetPriceModifier: bigint;
15
17
  private size;
16
18
  constructor(
17
19
  /** The proposed block header the attestation is made over */
18
20
  header: CheckpointHeader,
19
21
  /** The archive root after the block is added */
20
- archive: Fr);
22
+ archive: Fr,
23
+ /** The fee asset price modifier in basis points (from oracle) */
24
+ feeAssetPriceModifier?: bigint);
21
25
  static get schema(): z.ZodEffects<z.ZodObject<{
22
26
  header: import("@aztec/foundation/schemas").ZodFor<CheckpointHeader>;
23
27
  archive: z.ZodType<Fr, any, string>;
28
+ feeAssetPriceModifier: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
24
29
  }, "strip", z.ZodTypeAny, {
25
30
  header: CheckpointHeader;
26
31
  archive: Fr;
32
+ feeAssetPriceModifier: bigint;
27
33
  }, {
28
34
  header?: any;
29
35
  archive: string;
36
+ feeAssetPriceModifier: string | number | bigint;
30
37
  }>, ConsensusPayload, {
31
38
  header?: any;
32
39
  archive: string;
40
+ feeAssetPriceModifier: string | number | bigint;
33
41
  }>;
34
- static getFields(fields: FieldsOf<ConsensusPayload>): readonly [CheckpointHeader, Fr];
42
+ static getFields(fields: FieldsOf<ConsensusPayload>): readonly [CheckpointHeader, Fr, bigint];
35
43
  getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer;
36
44
  toBuffer(): Buffer;
37
45
  equals(other: ConsensusPayload | CheckpointProposal | CheckpointProposalCore): boolean;
@@ -63,7 +71,8 @@ export declare class ConsensusPayload implements Signable {
63
71
  totalManaUsed: bigint;
64
72
  };
65
73
  archive: `0x${string}`;
74
+ feeAssetPriceModifier: string;
66
75
  };
67
76
  toString(): string;
68
77
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc2Vuc3VzX3BheWxvYWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvY29uc2Vuc3VzX3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFOUUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9FLCtFQUErRTtBQUMvRSxxQkFBYSxnQkFBaUIsWUFBVyxRQUFRO0lBSTdDLDZEQUE2RDthQUM3QyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hDLGdEQUFnRDthQUNoQyxPQUFPLEVBQUUsRUFBRTtJQU43QixPQUFPLENBQUMsSUFBSSxDQUFxQjtJQUVqQztJQUNFLDZEQUE2RDtJQUM3QyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hDLGdEQUFnRDtJQUNoQyxPQUFPLEVBQUUsRUFBRSxFQUN6QjtJQUVKLE1BQU0sS0FBSyxNQUFNOzs7Ozs7Ozs7Ozs7T0FPaEI7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsbUNBRWxEO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLHdCQUF3QixHQUFHLE1BQU0sQ0FrQmxFO0lBRUQsUUFBUSxJQUFJLE1BQU0sQ0FFakI7SUFFTSxNQUFNLENBQUMsS0FBSyxFQUFFLGdCQUFnQixHQUFHLGtCQUFrQixHQUFHLHNCQUFzQixHQUFHLE9BQU8sQ0FHNUY7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGdCQUFnQixDQUk5RDtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGdCQUFnQixDQUV0RTtJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxnQkFBZ0IsQ0FFOUQ7SUFFRCxNQUFNLENBQUMsS0FBSyxJQUFJLGdCQUFnQixDQUUvQjtJQUVELE1BQU0sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBRWhDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxJQUFJLE1BQU0sQ0FPaEI7SUFFRCxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFLUjtJQUVELFFBQVEsV0FFUDtDQUNGIn0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc2Vuc3VzX3BheWxvYWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvY29uc2Vuc3VzX3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQTRDLE1BQU0sNkJBQTZCLENBQUM7QUFFckcsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9FLCtFQUErRTtBQUMvRSxxQkFBYSxnQkFBaUIsWUFBVyxRQUFRO0lBSTdDLDZEQUE2RDthQUM3QyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hDLGdEQUFnRDthQUNoQyxPQUFPLEVBQUUsRUFBRTtJQUMzQixpRUFBaUU7YUFDakQscUJBQXFCLEVBQUUsTUFBTTtJQVIvQyxPQUFPLENBQUMsSUFBSSxDQUFxQjtJQUVqQztJQUNFLDZEQUE2RDtJQUM3QyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hDLGdEQUFnRDtJQUNoQyxPQUFPLEVBQUUsRUFBRTtJQUMzQixpRUFBaUU7SUFDakQscUJBQXFCLEdBQUUsTUFBVyxFQUNoRDtJQUVKLE1BQU0sS0FBSyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7O09BUWhCO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLDJDQUVsRDtJQUVELGdCQUFnQixDQUFDLGVBQWUsRUFBRSx3QkFBd0IsR0FBRyxNQUFNLENBa0JsRTtJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRU0sTUFBTSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxrQkFBa0IsR0FBRyxzQkFBc0IsR0FBRyxPQUFPLENBUTVGO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxnQkFBZ0IsQ0FROUQ7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxnQkFBZ0IsQ0FFdEU7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsZ0JBQWdCLENBRTlEO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FFL0I7SUFFRCxNQUFNLENBQUMsTUFBTSxJQUFJLGdCQUFnQixDQUVoQztJQUVEOzs7T0FHRztJQUNILE9BQU8sSUFBSSxNQUFNLENBT2hCO0lBRUQsU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQU1SO0lBRUQsUUFBUSxXQUVQO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"consensus_payload.d.ts","sourceRoot":"","sources":["../../src/p2p/consensus_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,+EAA+E;AAC/E,qBAAa,gBAAiB,YAAW,QAAQ;IAI7C,6DAA6D;aAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;aAChC,OAAO,EAAE,EAAE;IAN7B,OAAO,CAAC,IAAI,CAAqB;IAEjC;IACE,6DAA6D;IAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;IAChC,OAAO,EAAE,EAAE,EACzB;IAEJ,MAAM,KAAK,MAAM;;;;;;;;;;;;OAOhB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,mCAElD;IAED,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM,CAkBlE;IAED,QAAQ,IAAI,MAAM,CAEjB;IAEM,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,OAAO,CAG5F;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAI9D;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAEtE;IAED,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAE9D;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;IAED,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAEhC;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,CAOhB;IAED,SAAS;;;;;;;;;;;;;;;;;;MAKR;IAED,QAAQ,WAEP;CACF"}
1
+ {"version":3,"file":"consensus_payload.d.ts","sourceRoot":"","sources":["../../src/p2p/consensus_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAA4C,MAAM,6BAA6B,CAAC;AAErG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,+EAA+E;AAC/E,qBAAa,gBAAiB,YAAW,QAAQ;IAI7C,6DAA6D;aAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;aAChC,OAAO,EAAE,EAAE;IAC3B,iEAAiE;aACjD,qBAAqB,EAAE,MAAM;IAR/C,OAAO,CAAC,IAAI,CAAqB;IAEjC;IACE,6DAA6D;IAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;IAChC,OAAO,EAAE,EAAE;IAC3B,iEAAiE;IACjD,qBAAqB,GAAE,MAAW,EAChD;IAEJ,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;OAQhB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,2CAElD;IAED,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM,CAkBlE;IAED,QAAQ,IAAI,MAAM,CAEjB;IAEM,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,OAAO,CAQ5F;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAQ9D;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAEtE;IAED,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAE9D;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;IAED,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAEhC;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,CAOhB;IAED,SAAS;;;;;;;;;;;;;;;;;;;MAMR;IAED,QAAQ,WAEP;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { schemas } from '@aztec/foundation/schemas';
3
- import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
4
4
  import { hexToBuffer } from '@aztec/foundation/string';
5
5
  import { encodeAbiParameters, parseAbiParameters } from 'viem';
6
6
  import { z } from 'zod';
@@ -8,21 +8,25 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
8
8
  /** Checkpoint consensus payload as signed by validators and verified on L1. */ export class ConsensusPayload {
9
9
  header;
10
10
  archive;
11
+ feeAssetPriceModifier;
11
12
  size;
12
- constructor(/** The proposed block header the attestation is made over */ header, /** The archive root after the block is added */ archive){
13
+ constructor(/** The proposed block header the attestation is made over */ header, /** The archive root after the block is added */ archive, /** The fee asset price modifier in basis points (from oracle) */ feeAssetPriceModifier = 0n){
13
14
  this.header = header;
14
15
  this.archive = archive;
16
+ this.feeAssetPriceModifier = feeAssetPriceModifier;
15
17
  }
16
18
  static get schema() {
17
19
  return z.object({
18
20
  header: CheckpointHeader.schema,
19
- archive: schemas.Fr
20
- }).transform((obj)=>new ConsensusPayload(obj.header, obj.archive));
21
+ archive: schemas.Fr,
22
+ feeAssetPriceModifier: schemas.BigInt
23
+ }).transform((obj)=>new ConsensusPayload(obj.header, obj.archive, obj.feeAssetPriceModifier));
21
24
  }
22
25
  static getFields(fields) {
23
26
  return [
24
27
  fields.header,
25
- fields.archive
28
+ fields.archive,
29
+ fields.feeAssetPriceModifier
26
30
  ];
27
31
  }
28
32
  getPayloadToSign(domainSeparator) {
@@ -38,7 +42,7 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
38
42
  [
39
43
  archiveRoot,
40
44
  [
41
- 0n
45
+ this.feeAssetPriceModifier
42
46
  ],
43
47
  headerHash
44
48
  ]
@@ -48,29 +52,31 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
48
52
  toBuffer() {
49
53
  return serializeToBuffer([
50
54
  this.header,
51
- this.archive
55
+ this.archive,
56
+ serializeSignedBigInt(this.feeAssetPriceModifier)
52
57
  ]);
53
58
  }
54
59
  equals(other) {
55
60
  const otherHeader = 'checkpointHeader' in other ? other.checkpointHeader : other.header;
56
- return this.header.equals(otherHeader) && this.archive.equals(other.archive);
61
+ const otherModifier = 'feeAssetPriceModifier' in other ? other.feeAssetPriceModifier : 0n;
62
+ return this.header.equals(otherHeader) && this.archive.equals(other.archive) && this.feeAssetPriceModifier === otherModifier;
57
63
  }
58
64
  static fromBuffer(buf) {
59
65
  const reader = BufferReader.asReader(buf);
60
- const payload = new ConsensusPayload(reader.readObject(CheckpointHeader), reader.readObject(Fr));
66
+ const payload = new ConsensusPayload(reader.readObject(CheckpointHeader), reader.readObject(Fr), reader.readInt256());
61
67
  return payload;
62
68
  }
63
69
  static fromFields(fields) {
64
- return new ConsensusPayload(fields.header, fields.archive);
70
+ return new ConsensusPayload(fields.header, fields.archive, fields.feeAssetPriceModifier);
65
71
  }
66
72
  static fromCheckpoint(checkpoint) {
67
- return new ConsensusPayload(checkpoint.header, checkpoint.archive.root);
73
+ return new ConsensusPayload(checkpoint.header, checkpoint.archive.root, checkpoint.feeAssetPriceModifier);
68
74
  }
69
75
  static empty() {
70
- return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO);
76
+ return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO, 0n);
71
77
  }
72
78
  static random() {
73
- return new ConsensusPayload(CheckpointHeader.random(), Fr.random());
79
+ return new ConsensusPayload(CheckpointHeader.random(), Fr.random(), 0n);
74
80
  }
75
81
  /**
76
82
  * Get the size of the consensus payload in bytes.
@@ -86,10 +92,11 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
86
92
  toInspect() {
87
93
  return {
88
94
  header: this.header.toInspect(),
89
- archive: this.archive.toString()
95
+ archive: this.archive.toString(),
96
+ feeAssetPriceModifier: this.feeAssetPriceModifier.toString()
90
97
  };
91
98
  }
92
99
  toString() {
93
- return `header: ${this.header.toString()}, archive: ${this.archive.toString()}}`;
100
+ return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, feeAssetPriceModifier: ${this.feeAssetPriceModifier}}`;
94
101
  }
95
102
  }
@@ -8,8 +8,7 @@ export * from './interface.js';
8
8
  export * from './signature_utils.js';
9
9
  export * from './signed_txs.js';
10
10
  export * from './topic_type.js';
11
- export * from './client_type.js';
12
11
  export * from './message_validator.js';
13
12
  export * from './peer_error.js';
14
13
  export * from './constants.js';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDIn0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/p2p/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/p2p/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
package/dest/p2p/index.js CHANGED
@@ -8,7 +8,6 @@ export * from './interface.js';
8
8
  export * from './signature_utils.js';
9
9
  export * from './signed_txs.js';
10
10
  export * from './topic_type.js';
11
- export * from './client_type.js';
12
11
  export * from './message_validator.js';
13
12
  export * from './peer_error.js';
14
13
  export * from './constants.js';
@@ -15,4 +15,6 @@ export declare enum PeerErrorSeverity {
15
15
  */
16
16
  HighToleranceError = "HighToleranceError"
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9lcnJvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC9wZWVyX2Vycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFZLGlCQUFpQjtJQUMzQjs7O09BR0c7SUFDSCxpQkFBaUIsc0JBQXNCO0lBQ3ZDOzs7T0FHRztJQUNILGlCQUFpQixzQkFBc0I7SUFDdkM7OztPQUdHO0lBQ0gsa0JBQWtCLHVCQUF1QjtDQUMxQyJ9
18
+ /** Severities ordered from mildest to harshest. */
19
+ export declare const PeerErrorSeverityByHarshness: readonly [PeerErrorSeverity.HighToleranceError, PeerErrorSeverity.MidToleranceError, PeerErrorSeverity.LowToleranceError];
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9lcnJvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC9wZWVyX2Vycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFZLGlCQUFpQjtJQUMzQjs7O09BR0c7SUFDSCxpQkFBaUIsc0JBQXNCO0lBQ3ZDOzs7T0FHRztJQUNILGlCQUFpQixzQkFBc0I7SUFDdkM7OztPQUdHO0lBQ0gsa0JBQWtCLHVCQUF1QjtDQUMxQztBQUVELG1EQUFtRDtBQUNuRCxlQUFPLE1BQU0sNEJBQTRCLDJIQUkvQixDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"peer_error.d.ts","sourceRoot":"","sources":["../../src/p2p/peer_error.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B;;;OAGG;IACH,iBAAiB,sBAAsB;IACvC;;;OAGG;IACH,iBAAiB,sBAAsB;IACvC;;;OAGG;IACH,kBAAkB,uBAAuB;CAC1C"}
1
+ {"version":3,"file":"peer_error.d.ts","sourceRoot":"","sources":["../../src/p2p/peer_error.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B;;;OAGG;IACH,iBAAiB,sBAAsB;IACvC;;;OAGG;IACH,iBAAiB,sBAAsB;IACvC;;;OAGG;IACH,kBAAkB,uBAAuB;CAC1C;AAED,mDAAmD;AACnD,eAAO,MAAM,4BAA4B,2HAI/B,CAAC"}
@@ -13,3 +13,8 @@ export var PeerErrorSeverity = /*#__PURE__*/ function(PeerErrorSeverity) {
13
13
  */ PeerErrorSeverity["HighToleranceError"] = "HighToleranceError";
14
14
  return PeerErrorSeverity;
15
15
  }({});
16
+ /** Severities ordered from mildest to harshest. */ export const PeerErrorSeverityByHarshness = [
17
+ "HighToleranceError",
18
+ "MidToleranceError",
19
+ "LowToleranceError"
20
+ ];
@@ -1,4 +1,3 @@
1
- import { P2PClientType } from './client_type.js';
2
1
  /**
3
2
  * Creates the topic channel identifier string from a given topic type
4
3
  */
@@ -11,8 +10,8 @@ export declare enum TopicType {
11
10
  checkpoint_proposal = "checkpoint_proposal",
12
11
  checkpoint_attestation = "checkpoint_attestation"
13
12
  }
14
- export declare function getTopicTypeForClientType(clientType: P2PClientType): TopicType[];
15
- export declare function getTopicsForClientAndConfig(clientType: P2PClientType, disableTransactions: boolean): TopicType[];
13
+ /** Returns all gossip topics, optionally filtering out transactions. */
14
+ export declare function getTopicsForConfig(disableTransactions: boolean): TopicType[];
16
15
  /**
17
16
  * Convert the topic string into a set of labels
18
17
  *
@@ -23,4 +22,4 @@ export declare function getTopicsForClientAndConfig(clientType: P2PClientType, d
23
22
  * }
24
23
  */
25
24
  export declare function metricsTopicStrToLabels(protocolVersion: string): Map<string, string>;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWNfdHlwZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC90b3BpY190eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRDs7R0FFRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBRTlFO0FBRUQsa0RBQWtEO0FBQ2xELHdCQUFnQixrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxTQUFTLENBVTFFO0FBRUQsb0JBQVksU0FBUztJQUNuQixFQUFFLE9BQU87SUFDVCxjQUFjLG1CQUFtQjtJQUNqQyxtQkFBbUIsd0JBQXdCO0lBQzNDLHNCQUFzQiwyQkFBMkI7Q0FDbEQ7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsVUFBVSxFQUFFLGFBQWEsZUFTbEU7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLGVBTWxHO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBZ0IsdUJBQXVCLENBQUMsZUFBZSxFQUFFLE1BQU0sdUJBTzlEIn0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWNfdHlwZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC90b3BpY190eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsd0JBQWdCLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFFOUU7QUFFRCxrREFBa0Q7QUFDbEQsd0JBQWdCLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FVMUU7QUFFRCxvQkFBWSxTQUFTO0lBQ25CLEVBQUUsT0FBTztJQUNULGNBQWMsbUJBQW1CO0lBQ2pDLG1CQUFtQix3QkFBd0I7SUFDM0Msc0JBQXNCLDJCQUEyQjtDQUNsRDtBQUVELHdFQUF3RTtBQUN4RSx3QkFBZ0Isa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxlQVc5RDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxNQUFNLHVCQU85RCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"topic_type.d.ts","sourceRoot":"","sources":["../../src/p2p/topic_type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAE9E;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAU1E;AAED,oBAAY,SAAS;IACnB,EAAE,OAAO;IACT,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;CAClD;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,aAAa,eASlE;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,eAMlG;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,uBAO9D"}
1
+ {"version":3,"file":"topic_type.d.ts","sourceRoot":"","sources":["../../src/p2p/topic_type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAE9E;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAU1E;AAED,oBAAY,SAAS;IACnB,EAAE,OAAO;IACT,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;CAClD;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,mBAAmB,EAAE,OAAO,eAW9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,uBAO9D"}
@@ -1,4 +1,3 @@
1
- import { P2PClientType } from './client_type.js';
2
1
  /**
3
2
  * Creates the topic channel identifier string from a given topic type
4
3
  */ export function createTopicString(topicType, protocolVersion) {
@@ -22,29 +21,13 @@ export var TopicType = /*#__PURE__*/ function(TopicType) {
22
21
  TopicType["checkpoint_attestation"] = "checkpoint_attestation";
23
22
  return TopicType;
24
23
  }({});
25
- export function getTopicTypeForClientType(clientType) {
26
- if (clientType === P2PClientType.Full) {
27
- return [
28
- "tx",
29
- "block_proposal",
30
- "checkpoint_proposal",
31
- "checkpoint_attestation"
32
- ];
33
- } else if (clientType === P2PClientType.Prover) {
34
- return [
35
- "tx",
36
- "block_proposal",
37
- "checkpoint_proposal"
38
- ];
39
- } else {
40
- const _ = clientType;
41
- return [
42
- "tx"
43
- ];
44
- }
45
- }
46
- export function getTopicsForClientAndConfig(clientType, disableTransactions) {
47
- const topics = getTopicTypeForClientType(clientType);
24
+ /** Returns all gossip topics, optionally filtering out transactions. */ export function getTopicsForConfig(disableTransactions) {
25
+ const topics = [
26
+ "tx",
27
+ "block_proposal",
28
+ "checkpoint_proposal",
29
+ "checkpoint_attestation"
30
+ ];
48
31
  if (disableTransactions) {
49
32
  return topics.filter((topic)=>topic !== "tx");
50
33
  }
@@ -12,8 +12,8 @@ import type { GlobalVariables } from '../tx/global_variables.js';
12
12
  import type { UInt64 } from '../types/shared.js';
13
13
  /**
14
14
  * Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
15
- * TODO(palla/mbps): Should this include chainId and version as well? Is this used just in circuits?
16
- * TODO(palla/mbps): What about CheckpointNumber?
15
+ * This header is verified as-is in the rollup circuits, posted to the L1 rollup contract, stored in the archiver,
16
+ * and exposed via the Aztec Node API. See `CheckpointData` for a struct that includes the header plus extra metadata.
17
17
  */
18
18
  export declare class CheckpointHeader {
19
19
  /** Root of the archive tree before this block is added. */
@@ -13,8 +13,8 @@ import { schemas } from '../schemas/index.js';
13
13
  _computedKey = inspect.custom;
14
14
  /**
15
15
  * Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
16
- * TODO(palla/mbps): Should this include chainId and version as well? Is this used just in circuits?
17
- * TODO(palla/mbps): What about CheckpointNumber?
16
+ * This header is verified as-is in the rollup circuits, posted to the L1 rollup contract, stored in the archiver,
17
+ * and exposed via the Aztec Node API. See `CheckpointData` for a struct that includes the header plus extra metadata.
18
18
  */ export class CheckpointHeader {
19
19
  lastArchiveRoot;
20
20
  blockHeadersHash;
@@ -1,4 +1,5 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { type Logger } from '@aztec/foundation/log';
2
3
  import type { PartialBy } from '@aztec/foundation/types';
3
4
  import type { Offense, ValidatorSlashVote } from './types.js';
4
5
  /**
@@ -7,13 +8,17 @@ import type { Offense, ValidatorSlashVote } from './types.js';
7
8
  * @param committees - Array of committees (each containing array of validator addresses)
8
9
  * @param epochsForCommittees - Array of epochs corresponding to each committee
9
10
  * @param settings - Settings including slashingAmounts and optional validator override lists
11
+ * @param settings.maxSlashedValidators - If set, limits the total number of [validator, epoch] pairs
12
+ * with non-zero votes. The lowest-vote pairs are zeroed out to stay within the limit.
13
+ * @param logger - Logger, logs which validators were dropped.
10
14
  * @returns Array of ValidatorSlashVote, where each vote is how many slash units the validator in that position should be slashed
11
15
  */
12
16
  export declare function getSlashConsensusVotesFromOffenses(offenses: PartialBy<Offense, 'epochOrSlot'>[], committees: EthAddress[][], epochsForCommittees: bigint[], settings: {
13
17
  slashingAmounts: [bigint, bigint, bigint];
14
18
  epochDuration: number;
15
19
  targetCommitteeSize: number;
16
- }): ValidatorSlashVote[];
20
+ maxSlashedValidators?: number;
21
+ }, logger?: Logger): ValidatorSlashVote[];
17
22
  /**
18
23
  * Encodes a set of slash votes into a Buffer for use in a consensus slashing vote transaction.
19
24
  * Each vote is represented as a 2-bit value, which represents how many slashing units the validator should be slashed.
@@ -21,4 +26,4 @@ export declare function getSlashConsensusVotesFromOffenses(offenses: PartialBy<O
21
26
  * @returns A Buffer containing the encoded slash votes
22
27
  */
23
28
  export declare function encodeSlashConsensusVotes(votes: ValidatorSlashVote[]): Buffer;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFsbHkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zbGFzaGluZy90YWxseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTlEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0Isa0NBQWtDLENBQ2hELFFBQVEsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQzdDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUMxQixtQkFBbUIsRUFBRSxNQUFNLEVBQUUsRUFDN0IsUUFBUSxFQUFFO0lBQ1IsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztDQUM3QixHQUNBLGtCQUFrQixFQUFFLENBK0J0QjtBQWVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLHlCQUF5QixDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxHQUFHLE1BQU0sQ0FlN0UifQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFsbHkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zbGFzaGluZy90YWxseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3pELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU5RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsd0JBQWdCLGtDQUFrQyxDQUNoRCxRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsRUFBRSxFQUM3QyxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFDMUIsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLEVBQzdCLFFBQVEsRUFBRTtJQUNSLGVBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QixtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsb0JBQW9CLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDL0IsRUFDRCxNQUFNLEdBQUUsTUFBc0MsR0FDN0Msa0JBQWtCLEVBQUUsQ0EwRHRCO0FBZUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IseUJBQXlCLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxDQWU3RSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"tally.d.ts","sourceRoot":"","sources":["../../src/slashing/tally.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAC7C,UAAU,EAAE,UAAU,EAAE,EAAE,EAC1B,mBAAmB,EAAE,MAAM,EAAE,EAC7B,QAAQ,EAAE;IACR,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GACA,kBAAkB,EAAE,CA+BtB;AAeD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAe7E"}
1
+ {"version":3,"file":"tally.d.ts","sourceRoot":"","sources":["../../src/slashing/tally.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAC7C,UAAU,EAAE,UAAU,EAAE,EAAE,EAC1B,mBAAmB,EAAE,MAAM,EAAE,EAC7B,QAAQ,EAAE;IACR,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,EACD,MAAM,GAAE,MAAsC,GAC7C,kBAAkB,EAAE,CA0DtB;AAeD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAe7E"}
@@ -1,5 +1,6 @@
1
1
  import { sumBigint } from '@aztec/foundation/bigint';
2
2
  import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { createLogger } from '@aztec/foundation/log';
3
4
  import { getEpochForOffense } from './helpers.js';
4
5
  /**
5
6
  * Creates a consensus-slash vote for a given set of committees based on a set of Offenses
@@ -7,9 +8,12 @@ import { getEpochForOffense } from './helpers.js';
7
8
  * @param committees - Array of committees (each containing array of validator addresses)
8
9
  * @param epochsForCommittees - Array of epochs corresponding to each committee
9
10
  * @param settings - Settings including slashingAmounts and optional validator override lists
11
+ * @param settings.maxSlashedValidators - If set, limits the total number of [validator, epoch] pairs
12
+ * with non-zero votes. The lowest-vote pairs are zeroed out to stay within the limit.
13
+ * @param logger - Logger, logs which validators were dropped.
10
14
  * @returns Array of ValidatorSlashVote, where each vote is how many slash units the validator in that position should be slashed
11
- */ export function getSlashConsensusVotesFromOffenses(offenses, committees, epochsForCommittees, settings) {
12
- const { slashingAmounts, targetCommitteeSize } = settings;
15
+ */ export function getSlashConsensusVotesFromOffenses(offenses, committees, epochsForCommittees, settings, logger = createLogger('slasher:tally')) {
16
+ const { slashingAmounts, targetCommitteeSize, maxSlashedValidators } = settings;
13
17
  if (committees.length !== epochsForCommittees.length) {
14
18
  throw new Error('committees and epochsForCommittees must have the same length');
15
19
  }
@@ -28,6 +32,30 @@ import { getEpochForOffense } from './helpers.js';
28
32
  });
29
33
  return padArrayEnd(votes, 0, targetCommitteeSize);
30
34
  });
35
+ // if a cap is set, zero out the lowest-vote [validator, epoch] pairs so that the most severe slashes stay.
36
+ if (maxSlashedValidators === undefined) {
37
+ return votes;
38
+ }
39
+ const nonZeroByDescendingVote = [
40
+ ...votes.entries()
41
+ ].filter(([, vote])=>vote > 0).sort(([, a], [, b])=>b - a);
42
+ const toTruncate = nonZeroByDescendingVote.slice(maxSlashedValidators);
43
+ for (const [idx] of toTruncate){
44
+ votes[idx] = 0;
45
+ }
46
+ if (toTruncate.length > 0) {
47
+ const truncated = toTruncate.map(([idx])=>{
48
+ const committeeIndex = Math.floor(idx / targetCommitteeSize);
49
+ const positionInCommittee = idx % targetCommitteeSize;
50
+ return {
51
+ validator: committees[committeeIndex][positionInCommittee].toString(),
52
+ epoch: epochsForCommittees[committeeIndex]
53
+ };
54
+ });
55
+ logger.warn(`Truncated ${toTruncate.length} validator-epoch pairs to stay within limit of ${maxSlashedValidators}`, {
56
+ truncated
57
+ });
58
+ }
31
59
  return votes;
32
60
  }
33
61
  /** Returns the slash vote for the given amount to slash. */ function getSlashUnitsForAmount(amountToSlash, slashingAmounts) {