@aztec/p2p 0.0.1-commit.a072138 → 0.0.1-commit.a89ec08

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 (406) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +10 -10
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +54 -15
  5. package/dest/client/interface.d.ts +46 -33
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +41 -51
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +159 -224
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +7 -8
  11. package/dest/config.d.ts +55 -12
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +99 -33
  14. package/dest/errors/tx-pool.error.d.ts +8 -0
  15. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  16. package/dest/errors/tx-pool.error.js +9 -0
  17. package/dest/index.d.ts +2 -1
  18. package/dest/index.d.ts.map +1 -1
  19. package/dest/index.js +1 -0
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  21. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  22. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  26. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  27. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/index.js +1 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  30. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  32. package/dest/mem_pools/index.d.ts +3 -2
  33. package/dest/mem_pools/index.d.ts.map +1 -1
  34. package/dest/mem_pools/index.js +1 -1
  35. package/dest/mem_pools/interface.d.ts +5 -5
  36. package/dest/mem_pools/interface.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  38. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +2 -1
  40. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  41. package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
  42. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool/priority.js +4 -4
  44. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  45. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  47. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  53. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  86. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  87. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  89. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  90. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  92. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +213 -0
  93. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +135 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +216 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +354 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +164 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +906 -0
  110. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  111. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  113. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  114. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  115. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  116. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  117. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  118. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  119. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  120. package/dest/msg_validators/proposal_validator/proposal_validator.js +48 -36
  121. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  122. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  124. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  125. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  127. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  128. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  129. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  130. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  131. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  133. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  134. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  135. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  136. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  137. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  138. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  139. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  140. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  141. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  142. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  143. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/factory.js +247 -60
  145. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  146. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  147. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  148. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  149. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  150. package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
  151. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  152. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/index.js +2 -0
  154. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  155. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  156. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  157. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  158. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  160. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  161. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  163. package/dest/services/dummy_service.d.ts +13 -5
  164. package/dest/services/dummy_service.d.ts.map +1 -1
  165. package/dest/services/dummy_service.js +10 -4
  166. package/dest/services/encoding.d.ts +7 -3
  167. package/dest/services/encoding.d.ts.map +1 -1
  168. package/dest/services/encoding.js +18 -11
  169. package/dest/services/gossipsub/index.d.ts +3 -0
  170. package/dest/services/gossipsub/index.d.ts.map +1 -0
  171. package/dest/services/gossipsub/index.js +2 -0
  172. package/dest/services/gossipsub/scoring.d.ts +21 -3
  173. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  174. package/dest/services/gossipsub/scoring.js +24 -7
  175. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  176. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  177. package/dest/services/gossipsub/topic_score_params.js +346 -0
  178. package/dest/services/index.d.ts +2 -1
  179. package/dest/services/index.d.ts.map +1 -1
  180. package/dest/services/index.js +1 -0
  181. package/dest/services/libp2p/libp2p_service.d.ts +94 -42
  182. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  183. package/dest/services/libp2p/libp2p_service.js +448 -349
  184. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  185. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  186. package/dest/services/peer-manager/peer_scoring.js +25 -2
  187. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +6 -5
  188. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  189. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +12 -16
  190. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  191. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  192. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  193. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  194. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  195. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  196. package/dest/services/reqresp/interface.d.ts +10 -1
  197. package/dest/services/reqresp/interface.d.ts.map +1 -1
  198. package/dest/services/reqresp/interface.js +15 -1
  199. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  200. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  201. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  202. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  203. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  204. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  205. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  206. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  207. package/dest/services/reqresp/protocols/tx.js +20 -0
  208. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  209. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  210. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  211. package/dest/services/reqresp/reqresp.d.ts +1 -1
  212. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  213. package/dest/services/reqresp/reqresp.js +28 -13
  214. package/dest/services/service.d.ts +39 -3
  215. package/dest/services/service.d.ts.map +1 -1
  216. package/dest/services/tx_collection/config.d.ts +22 -4
  217. package/dest/services/tx_collection/config.d.ts.map +1 -1
  218. package/dest/services/tx_collection/config.js +49 -3
  219. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  220. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  221. package/dest/services/tx_collection/fast_tx_collection.js +64 -48
  222. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  223. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  224. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  225. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  226. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  227. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  228. package/dest/services/tx_collection/index.d.ts +3 -2
  229. package/dest/services/tx_collection/index.d.ts.map +1 -1
  230. package/dest/services/tx_collection/index.js +1 -0
  231. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  232. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  233. package/dest/services/tx_collection/instrumentation.js +2 -1
  234. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  235. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  236. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  237. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -14
  238. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  239. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  240. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  241. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  242. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  243. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  244. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  245. package/dest/services/tx_collection/tx_collection.js +75 -3
  246. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  247. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  248. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  249. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  250. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  251. package/dest/services/tx_collection/tx_source.js +26 -7
  252. package/dest/services/tx_file_store/config.d.ts +16 -0
  253. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  254. package/dest/services/tx_file_store/config.js +22 -0
  255. package/dest/services/tx_file_store/index.d.ts +4 -0
  256. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  257. package/dest/services/tx_file_store/index.js +3 -0
  258. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  259. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  260. package/dest/services/tx_file_store/instrumentation.js +29 -0
  261. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  262. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  263. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  264. package/dest/services/tx_provider.d.ts +4 -4
  265. package/dest/services/tx_provider.d.ts.map +1 -1
  266. package/dest/services/tx_provider.js +9 -8
  267. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  268. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  269. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  270. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  271. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  272. package/dest/test-helpers/mock-pubsub.js +105 -4
  273. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  274. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  275. package/dest/test-helpers/reqresp-nodes.js +4 -3
  276. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  277. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  278. package/dest/test-helpers/testbench-utils.js +129 -59
  279. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  280. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  281. package/dest/testbench/p2p_client_testbench_worker.js +17 -16
  282. package/dest/testbench/worker_client_manager.d.ts +3 -1
  283. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  284. package/dest/testbench/worker_client_manager.js +4 -1
  285. package/dest/util.d.ts +2 -2
  286. package/dest/util.d.ts.map +1 -1
  287. package/package.json +14 -14
  288. package/src/client/factory.ts +106 -27
  289. package/src/client/interface.ts +56 -34
  290. package/src/client/p2p_client.ts +193 -269
  291. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -11
  292. package/src/config.ts +155 -34
  293. package/src/errors/tx-pool.error.ts +12 -0
  294. package/src/index.ts +1 -0
  295. package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
  296. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  297. package/src/mem_pools/attestation_pool/index.ts +9 -2
  298. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  299. package/src/mem_pools/index.ts +4 -1
  300. package/src/mem_pools/interface.ts +4 -4
  301. package/src/mem_pools/tx_pool/README.md +1 -1
  302. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  303. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  304. package/src/mem_pools/tx_pool/priority.ts +4 -4
  305. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  306. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  307. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  308. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  309. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  310. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  311. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  312. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  313. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  314. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  315. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  316. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  317. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  318. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  319. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  320. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  321. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  322. package/src/mem_pools/tx_pool_v2/interfaces.ts +244 -0
  323. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +337 -0
  324. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  325. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  326. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +235 -0
  327. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1087 -0
  328. package/src/msg_validators/attestation_validator/README.md +49 -0
  329. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  330. package/src/msg_validators/proposal_validator/README.md +123 -0
  331. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  332. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  333. package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -40
  334. package/src/msg_validators/tx_validator/README.md +119 -0
  335. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  336. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  337. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  338. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  339. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  340. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  341. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  342. package/src/msg_validators/tx_validator/factory.ts +394 -78
  343. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  344. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  345. package/src/msg_validators/tx_validator/index.ts +2 -0
  346. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  347. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  348. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  349. package/src/services/dummy_service.ts +18 -6
  350. package/src/services/encoding.ts +18 -10
  351. package/src/services/gossipsub/README.md +641 -0
  352. package/src/services/gossipsub/index.ts +2 -0
  353. package/src/services/gossipsub/scoring.ts +29 -5
  354. package/src/services/gossipsub/topic_score_params.ts +487 -0
  355. package/src/services/index.ts +1 -0
  356. package/src/services/libp2p/libp2p_service.ts +476 -371
  357. package/src/services/peer-manager/peer_scoring.ts +25 -0
  358. package/src/services/reqresp/README.md +229 -0
  359. package/src/services/reqresp/batch-tx-requester/README.md +7 -7
  360. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +17 -17
  361. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  362. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  363. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  364. package/src/services/reqresp/interface.ts +26 -1
  365. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  366. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  367. package/src/services/reqresp/protocols/tx.ts +22 -0
  368. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  369. package/src/services/reqresp/reqresp.ts +32 -14
  370. package/src/services/service.ts +51 -2
  371. package/src/services/tx_collection/config.ts +74 -6
  372. package/src/services/tx_collection/fast_tx_collection.ts +74 -51
  373. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  374. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  375. package/src/services/tx_collection/index.ts +2 -1
  376. package/src/services/tx_collection/instrumentation.ts +7 -1
  377. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  378. package/src/services/tx_collection/proposal_tx_collector.ts +20 -21
  379. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  380. package/src/services/tx_collection/tx_collection.ts +113 -16
  381. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  382. package/src/services/tx_collection/tx_source.ts +28 -8
  383. package/src/services/tx_file_store/config.ts +37 -0
  384. package/src/services/tx_file_store/index.ts +3 -0
  385. package/src/services/tx_file_store/instrumentation.ts +36 -0
  386. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  387. package/src/services/tx_provider.ts +10 -9
  388. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  389. package/src/test-helpers/mock-pubsub.ts +146 -9
  390. package/src/test-helpers/reqresp-nodes.ts +4 -6
  391. package/src/test-helpers/testbench-utils.ts +128 -71
  392. package/src/testbench/p2p_client_testbench_worker.ts +25 -21
  393. package/src/testbench/worker_client_manager.ts +11 -4
  394. package/src/util.ts +7 -1
  395. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  396. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  397. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  398. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  399. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  400. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  401. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  402. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  403. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  404. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  405. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  406. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -1,180 +0,0 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- import { getTelemetryClient } from '@aztec/telemetry-client';
3
- import { ProposalSlotCapExceededError } from '../../errors/attestation-pool.error.js';
4
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
5
- import { ATTESTATION_CAP_BUFFER, MAX_PROPOSALS_PER_SLOT } from './kv_attestation_pool.js';
6
- export class InMemoryAttestationPool {
7
- log;
8
- metrics;
9
- proposals;
10
- // Checkpoint attestations
11
- // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
12
- checkpointAttestations;
13
- checkpointProposals;
14
- constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:attestation_pool')){
15
- this.log = log;
16
- this.poolStats = ()=>{
17
- return Promise.resolve({
18
- itemCount: this.checkpointAttestations.size
19
- });
20
- };
21
- this.proposals = new Map();
22
- this.checkpointAttestations = new Map();
23
- this.checkpointProposals = new Map();
24
- this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
25
- }
26
- poolStats;
27
- isEmpty() {
28
- return Promise.resolve(this.checkpointAttestations.size === 0 && this.proposals.size === 0);
29
- }
30
- addBlockProposal(blockProposal) {
31
- // Strip signedTxs before storing to avoid holding full tx data in memory
32
- this.proposals.set(blockProposal.archive.toString(), blockProposal.withoutSignedTxs());
33
- return Promise.resolve();
34
- }
35
- getBlockProposal(id) {
36
- return Promise.resolve(this.proposals.get(id));
37
- }
38
- hasBlockProposal(idOrProposal) {
39
- const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
40
- return Promise.resolve(this.proposals.has(id));
41
- }
42
- canAddProposal(_block) {
43
- // TODO(palla/mbps): See when to allow
44
- return Promise.resolve(true);
45
- }
46
- // Checkpoint attestation methods
47
- async addCheckpointProposal(proposal) {
48
- if (!await this.canAddCheckpointProposal(proposal)) {
49
- throw new ProposalSlotCapExceededError(`Maximum checkpoint proposals per slot reached: slot=${proposal.slotNumber} cap=${MAX_PROPOSALS_PER_SLOT} proposal=${proposal.archive.toString()}`);
50
- }
51
- // Extract and validate the block proposal if present
52
- const blockProposal = proposal.getBlockProposal();
53
- if (blockProposal && !await this.canAddProposal(blockProposal)) {
54
- throw new ProposalSlotCapExceededError(`Maximum block proposals per slot reached when extracting from checkpoint: slot=${proposal.slotNumber} proposal=${blockProposal.archive.toString()}`);
55
- }
56
- const slotProposalMapping = getCheckpointSlotOrDefault(this.checkpointAttestations, proposal.slotNumber);
57
- slotProposalMapping.set(proposal.archive.toString(), new Map());
58
- // Store the checkpoint proposal as core (without lastBlock) to avoid duplication
59
- this.checkpointProposals.set(proposal.archive.toString(), proposal.toCore());
60
- // Store the extracted block proposal separately
61
- if (blockProposal) {
62
- this.proposals.set(blockProposal.archive.toString(), blockProposal.withoutSignedTxs());
63
- }
64
- return Promise.resolve();
65
- }
66
- getCheckpointProposal(id) {
67
- return Promise.resolve(this.checkpointProposals.get(id));
68
- }
69
- hasCheckpointProposal(idOrProposal) {
70
- const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
71
- return Promise.resolve(this.checkpointProposals.has(id));
72
- }
73
- addCheckpointAttestations(attestations) {
74
- for (const attestation of attestations){
75
- const slotNumber = attestation.payload.header.slotNumber;
76
- const proposalId = attestation.archive.toString();
77
- const sender = attestation.getSender();
78
- // Skip attestations with invalid signatures
79
- if (!sender) {
80
- this.log.warn(`Skipping checkpoint attestation with invalid signature for slot ${slotNumber}`, {
81
- signature: attestation.signature.toString(),
82
- slotNumber,
83
- proposalId
84
- });
85
- continue;
86
- }
87
- const slotAttestationMap = getCheckpointSlotOrDefault(this.checkpointAttestations, slotNumber);
88
- const proposalAttestationMap = getCheckpointProposalOrDefault(slotAttestationMap, proposalId);
89
- proposalAttestationMap.set(sender.toString(), attestation);
90
- this.log.verbose(`Added checkpoint attestation for slot ${slotNumber} from ${sender}`, {
91
- signature: attestation.signature.toString(),
92
- slotNumber,
93
- address: sender,
94
- proposalId
95
- });
96
- }
97
- return Promise.resolve();
98
- }
99
- getCheckpointAttestationsForSlot(slot) {
100
- return Promise.resolve(Array.from(this.checkpointAttestations.get(slot)?.values() ?? []).flatMap((proposalAttestationMap)=>Array.from(proposalAttestationMap.values())));
101
- }
102
- getCheckpointAttestationsForSlotAndProposal(slot, proposalId) {
103
- const slotAttestationMap = this.checkpointAttestations.get(slot);
104
- if (slotAttestationMap) {
105
- const proposalAttestationMap = slotAttestationMap.get(proposalId);
106
- if (proposalAttestationMap) {
107
- return Promise.resolve(Array.from(proposalAttestationMap.values()));
108
- }
109
- }
110
- return Promise.resolve([]);
111
- }
112
- deleteCheckpointAttestationsOlderThan(oldestSlot) {
113
- const olderThan = [];
114
- const slots = this.checkpointAttestations.keys();
115
- for (const slot of slots){
116
- if (slot < oldestSlot) {
117
- olderThan.push(slot);
118
- } else {
119
- break;
120
- }
121
- }
122
- for (const oldSlot of olderThan){
123
- const proposalIds = this.checkpointAttestations.get(oldSlot)?.keys();
124
- proposalIds?.forEach((proposalId)=>this.checkpointProposals.delete(proposalId));
125
- this.checkpointAttestations.delete(oldSlot);
126
- }
127
- return Promise.resolve();
128
- }
129
- hasReachedCheckpointProposalCap(slot) {
130
- const slotAttestationMap = this.checkpointAttestations.get(slot);
131
- const proposalCount = slotAttestationMap?.size ?? 0;
132
- return Promise.resolve(proposalCount >= MAX_PROPOSALS_PER_SLOT);
133
- }
134
- hasReachedCheckpointAttestationCap(slot, proposalId, committeeSize) {
135
- const limit = committeeSize + ATTESTATION_CAP_BUFFER;
136
- const count = this.checkpointAttestations.get(slot)?.get(proposalId)?.size ?? 0;
137
- return Promise.resolve(limit <= 0 || count >= limit);
138
- }
139
- async canAddCheckpointProposal(proposal) {
140
- return this.checkpointProposals.has(proposal.archive.toString()) || !await this.hasReachedCheckpointProposalCap(proposal.slotNumber);
141
- }
142
- async canAddCheckpointAttestation(attestation, committeeSize) {
143
- const sender = attestation.getSender();
144
- const slot = attestation.payload.header.slotNumber;
145
- const pid = attestation.archive.toString();
146
- return !!sender && ((this.checkpointAttestations.get(slot)?.get(pid)?.has(sender.toString()) ?? false) || !await this.hasReachedCheckpointAttestationCap(slot, pid, committeeSize));
147
- }
148
- hasCheckpointAttestation(attestation) {
149
- const slotNumber = attestation.payload.header.slotNumber;
150
- const proposalId = attestation.archive.toString();
151
- const sender = attestation.getSender();
152
- // Attestations with invalid signatures are never in the pool
153
- if (!sender) {
154
- return Promise.resolve(false);
155
- }
156
- const slotAttestationMap = this.checkpointAttestations.get(slotNumber);
157
- if (!slotAttestationMap) {
158
- return Promise.resolve(false);
159
- }
160
- const proposalAttestationMap = slotAttestationMap.get(proposalId);
161
- if (!proposalAttestationMap) {
162
- return Promise.resolve(false);
163
- }
164
- return Promise.resolve(proposalAttestationMap.has(sender.toString()));
165
- }
166
- }
167
- // Checkpoint attestation helper functions
168
- function getCheckpointSlotOrDefault(// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
169
- map, slot) {
170
- if (!map.has(slot)) {
171
- map.set(slot, new Map());
172
- }
173
- return map.get(slot);
174
- }
175
- function getCheckpointProposalOrDefault(map, proposalId) {
176
- if (!map.has(proposalId)) {
177
- map.set(proposalId, new Map());
178
- }
179
- return map.get(proposalId);
180
- }
@@ -1,23 +0,0 @@
1
- import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import type { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
3
- import type { EthAddress } from '@aztec/foundation/eth-address';
4
- import { type BlockProposal, type CheckpointProposal, type ValidationResult } from '@aztec/stdlib/p2p';
5
- import type { TxHash } from '@aztec/stdlib/tx';
6
- import type { MockProxy } from 'jest-mock-extended';
7
- export interface ProposalValidatorTestParams<TProposal extends BlockProposal | CheckpointProposal> {
8
- validatorFactory: (epochCache: EpochCacheInterface, opts: {
9
- txsPermitted: boolean;
10
- }) => {
11
- validate: (proposal: TProposal) => Promise<ValidationResult>;
12
- };
13
- makeProposal: (options?: any) => Promise<TProposal>;
14
- makeHeader: (epochNumber: number | bigint, slotNumber: number | bigint, blockNumber: number | bigint) => any;
15
- getSigner: () => Secp256k1Signer;
16
- getAddress: (signer?: Secp256k1Signer) => EthAddress;
17
- getSlot: (slot: number | bigint) => any;
18
- getTxHashes: (n: number) => TxHash[];
19
- getTxs: () => any[];
20
- epochCacheMock: () => MockProxy<EpochCacheInterface>;
21
- }
22
- export declare function sharedProposalValidatorTests<TProposal extends BlockProposal | CheckpointProposal>(params: ProposalValidatorTestParams<TProposal>): void;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yX3Rlc3Rfc3VpdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy9wcm9wb3NhbF92YWxpZGF0b3IvcHJvcG9zYWxfdmFsaWRhdG9yX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsS0FBSyxhQUFhLEVBQ2xCLEtBQUssa0JBQWtCLEVBRXZCLEtBQUssZ0JBQWdCLEVBQ3RCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsTUFBTSxXQUFXLDJCQUEyQixDQUFDLFNBQVMsU0FBUyxhQUFhLEdBQUcsa0JBQWtCO0lBQy9GLGdCQUFnQixFQUFFLENBQ2hCLFVBQVUsRUFBRSxtQkFBbUIsRUFDL0IsSUFBSSxFQUFFO1FBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQTtLQUFFLEtBQzVCO1FBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsS0FBSyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtLQUFFLENBQUM7SUFDdEUsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxVQUFVLEVBQUUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLE1BQU0sS0FBSyxHQUFHLENBQUM7SUFDN0csU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0lBQ2pDLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGVBQWUsS0FBSyxVQUFVLENBQUM7SUFDckQsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxNQUFNLEtBQUssR0FBRyxDQUFDO0lBQ3hDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDckMsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDcEIsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7Q0FDdEQ7QUFFRCx3QkFBZ0IsNEJBQTRCLENBQUMsU0FBUyxTQUFTLGFBQWEsR0FBRyxrQkFBa0IsRUFDL0YsTUFBTSxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxRQXdNL0MifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal_validator_test_suite.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/proposal_validator_test_suite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,2BAA2B,CAAC,SAAS,SAAS,aAAa,GAAG,kBAAkB;IAC/F,gBAAgB,EAAE,CAChB,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,KAC5B;QAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;KAAE,CAAC;IACtE,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACpD,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,KAAK,GAAG,CAAC;IAC7G,SAAS,EAAE,MAAM,eAAe,CAAC;IACjC,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,KAAK,UAAU,CAAC;IACrD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,GAAG,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACrC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,SAAS,CAAC,mBAAmB,CAAC,CAAC;CACtD;AAED,wBAAgB,4BAA4B,CAAC,SAAS,SAAS,aAAa,GAAG,kBAAkB,EAC/F,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,QAwM/C"}
@@ -1,212 +0,0 @@
1
- import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
2
- export function sharedProposalValidatorTests(params) {
3
- const { validatorFactory, makeProposal, makeHeader, getSigner, getAddress, getSlot, getTxHashes, epochCacheMock } = params;
4
- describe('shared proposal validation logic', ()=>{
5
- let epochCache;
6
- let validator;
7
- const previousSlot = getSlot(99);
8
- const currentSlot = getSlot(100);
9
- const nextSlot = getSlot(101);
10
- function mockGetProposer(currentProposer, nextProposer, previousProposer) {
11
- epochCache.getProposerAttesterAddressInSlot.mockImplementation((slot)=>{
12
- if (slot === currentSlot) {
13
- return Promise.resolve(currentProposer);
14
- }
15
- if (slot === nextSlot) {
16
- return Promise.resolve(nextProposer);
17
- }
18
- if (slot === previousSlot && previousProposer) {
19
- return Promise.resolve(previousProposer);
20
- }
21
- throw new Error('Unexpected argument');
22
- });
23
- }
24
- beforeEach(()=>{
25
- epochCache = epochCacheMock();
26
- validator = validatorFactory(epochCache, {
27
- txsPermitted: true
28
- });
29
- epochCache.getCurrentAndNextSlot.mockReturnValue({
30
- currentSlot: currentSlot,
31
- nextSlot: nextSlot
32
- });
33
- });
34
- it('returns high tolerance error if slot number is not current or next slot (outside clock tolerance)', async ()=>{
35
- const header = makeHeader(1, 99, 99);
36
- const mockProposal = await makeProposal({
37
- blockHeader: header,
38
- lastBlockHeader: header
39
- });
40
- // Mock getEpochAndSlotNow to return time OUTSIDE clock tolerance (1000ms elapsed)
41
- epochCache.getEpochAndSlotNow.mockReturnValue({
42
- epoch: 1,
43
- slot: currentSlot,
44
- ts: 1000n,
45
- nowMs: 1001000n
46
- });
47
- epochCache.getProposerAttesterAddressInSlot.mockResolvedValue(getAddress());
48
- const result = await validator.validate(mockProposal);
49
- expect(result).toEqual({
50
- result: 'reject',
51
- severity: PeerErrorSeverity.HighToleranceError
52
- });
53
- // Should not try to resolve proposers if base validation fails
54
- expect(epochCache.getProposerAttesterAddressInSlot).not.toHaveBeenCalled();
55
- });
56
- it('returns ignore if previous slot proposal is within clock tolerance', async ()=>{
57
- const previousProposer = getSigner();
58
- const header = makeHeader(1, 99, 99);
59
- const mockProposal = await makeProposal({
60
- blockHeader: header,
61
- lastBlockHeader: header,
62
- signer: previousProposer
63
- });
64
- // Mock getEpochAndSlotNow to return time WITHIN clock tolerance (100ms elapsed)
65
- epochCache.getEpochAndSlotNow.mockReturnValue({
66
- epoch: 1,
67
- slot: currentSlot,
68
- ts: 1000n,
69
- nowMs: 1000100n
70
- });
71
- mockGetProposer(getAddress(), getAddress(), getAddress(previousProposer));
72
- const result = await validator.validate(mockProposal);
73
- expect(result).toEqual({
74
- result: 'ignore'
75
- });
76
- });
77
- it('returns mid tolerance error if proposer is not current proposer for current slot', async ()=>{
78
- const currentProposer = getSigner();
79
- const nextProposer = getSigner();
80
- const invalidProposer = getSigner();
81
- const header = makeHeader(1, 100, 100);
82
- const mockProposal = await makeProposal({
83
- blockHeader: header,
84
- lastBlockHeader: header,
85
- signer: invalidProposer
86
- });
87
- mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
88
- const result = await validator.validate(mockProposal);
89
- expect(result).toEqual({
90
- result: 'reject',
91
- severity: PeerErrorSeverity.MidToleranceError
92
- });
93
- });
94
- it('returns mid tolerance error if proposer is not next proposer for next slot', async ()=>{
95
- const currentProposer = getSigner();
96
- const nextProposer = getSigner();
97
- const invalidProposer = getSigner();
98
- const header = makeHeader(1, 101, 101);
99
- const mockProposal = await makeProposal({
100
- blockHeader: header,
101
- lastBlockHeader: header,
102
- signer: invalidProposer
103
- });
104
- mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
105
- const result = await validator.validate(mockProposal);
106
- expect(result).toEqual({
107
- result: 'reject',
108
- severity: PeerErrorSeverity.MidToleranceError
109
- });
110
- });
111
- it('returns mid tolerance error if proposer is current proposer but proposal is for next slot', async ()=>{
112
- const currentProposer = getSigner();
113
- const nextProposer = getSigner();
114
- const header = makeHeader(1, 101, 101);
115
- const mockProposal = await makeProposal({
116
- blockHeader: header,
117
- lastBlockHeader: header,
118
- signer: currentProposer
119
- });
120
- mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
121
- const result = await validator.validate(mockProposal);
122
- expect(result).toEqual({
123
- result: 'reject',
124
- severity: PeerErrorSeverity.MidToleranceError
125
- });
126
- });
127
- it('returns undefined if proposal is valid for current slot and proposer', async ()=>{
128
- const currentProposer = getSigner();
129
- const nextProposer = getSigner();
130
- const header = makeHeader(1, 100, 100);
131
- const mockProposal = await makeProposal({
132
- blockHeader: header,
133
- lastBlockHeader: header,
134
- signer: currentProposer
135
- });
136
- mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
137
- const result = await validator.validate(mockProposal);
138
- expect(result).toEqual({
139
- result: 'accept'
140
- });
141
- });
142
- it('returns undefined if proposal is valid for next slot and proposer', async ()=>{
143
- const currentProposer = getSigner();
144
- const nextProposer = getSigner();
145
- const header = makeHeader(1, 101, 101);
146
- const mockProposal = await makeProposal({
147
- blockHeader: header,
148
- lastBlockHeader: header,
149
- signer: nextProposer
150
- });
151
- mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
152
- const result = await validator.validate(mockProposal);
153
- expect(result).toEqual({
154
- result: 'accept'
155
- });
156
- });
157
- describe('transaction permission validation', ()=>{
158
- it('returns mid tolerance error if txs not permitted and proposal contains txHashes', async ()=>{
159
- const currentProposer = getSigner();
160
- const validatorWithTxsDisabled = validatorFactory(epochCache, {
161
- txsPermitted: false
162
- });
163
- const header = makeHeader(1, 100, 100);
164
- const mockProposal = await makeProposal({
165
- blockHeader: header,
166
- lastBlockHeader: header,
167
- signer: currentProposer,
168
- txHashes: getTxHashes(2)
169
- });
170
- mockGetProposer(getAddress(currentProposer), getAddress());
171
- const result = await validatorWithTxsDisabled.validate(mockProposal);
172
- expect(result).toEqual({
173
- result: 'reject',
174
- severity: PeerErrorSeverity.MidToleranceError
175
- });
176
- });
177
- it('returns undefined if txs not permitted but proposal has no txHashes', async ()=>{
178
- const currentProposer = getSigner();
179
- const validatorWithTxsDisabled = validatorFactory(epochCache, {
180
- txsPermitted: false
181
- });
182
- const header = makeHeader(1, 100, 100);
183
- const mockProposal = await makeProposal({
184
- blockHeader: header,
185
- lastBlockHeader: header,
186
- signer: currentProposer,
187
- txHashes: getTxHashes(0)
188
- });
189
- mockGetProposer(getAddress(currentProposer), getAddress());
190
- const result = await validatorWithTxsDisabled.validate(mockProposal);
191
- expect(result).toEqual({
192
- result: 'accept'
193
- });
194
- });
195
- it('returns undefined if txs permitted and proposal contains txHashes', async ()=>{
196
- const currentProposer = getSigner();
197
- const header = makeHeader(1, 100, 100);
198
- const mockProposal = await makeProposal({
199
- blockHeader: header,
200
- lastBlockHeader: header,
201
- signer: currentProposer,
202
- txHashes: getTxHashes(2)
203
- });
204
- mockGetProposer(getAddress(currentProposer), getAddress());
205
- const result = await validator.validate(mockProposal);
206
- expect(result).toEqual({
207
- result: 'accept'
208
- });
209
- });
210
- });
211
- });
212
- }