@aztec/p2p 0.0.1-commit.d6f2b3f94 → 0.0.1-commit.dbf9cec

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 (243) hide show
  1. package/dest/client/factory.d.ts +6 -6
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +23 -30
  4. package/dest/client/interface.d.ts +14 -19
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +9 -18
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +52 -72
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +6 -7
  10. package/dest/config.d.ts +13 -6
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +5 -5
  13. package/dest/errors/tx-pool.error.d.ts +8 -0
  14. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  15. package/dest/errors/tx-pool.error.js +9 -0
  16. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -2
  17. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  18. package/dest/mem_pools/attestation_pool/attestation_pool.js +5 -0
  19. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  20. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  22. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  23. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +30 -13
  24. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
  26. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  27. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  28. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  29. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  30. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  31. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +5 -2
  32. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  33. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  34. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  35. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  36. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  38. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +48 -5
  39. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  41. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  42. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  43. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  44. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  45. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  46. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  47. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +14 -4
  49. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  50. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  52. package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
  53. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  54. package/dest/mem_pools/tx_pool_v2/index.js +1 -1
  55. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  56. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  58. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +20 -6
  59. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool_v2/interfaces.js +4 -1
  61. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +34 -8
  62. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +76 -10
  64. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  65. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  66. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +36 -14
  67. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -4
  68. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  69. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +11 -6
  70. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +13 -5
  71. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  72. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +297 -143
  73. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
  74. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  75. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  76. package/dest/msg_validators/tx_validator/factory.d.ts +114 -6
  77. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  78. package/dest/msg_validators/tx_validator/factory.js +219 -58
  79. package/dest/msg_validators/tx_validator/gas_validator.d.ts +58 -3
  80. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  81. package/dest/msg_validators/tx_validator/gas_validator.js +73 -36
  82. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  83. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  84. package/dest/msg_validators/tx_validator/index.js +1 -0
  85. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  86. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  87. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  88. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
  89. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  90. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  91. package/dest/services/dummy_service.d.ts +4 -4
  92. package/dest/services/dummy_service.d.ts.map +1 -1
  93. package/dest/services/dummy_service.js +4 -4
  94. package/dest/services/encoding.d.ts +2 -2
  95. package/dest/services/encoding.d.ts.map +1 -1
  96. package/dest/services/encoding.js +9 -8
  97. package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
  98. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  99. package/dest/services/gossipsub/topic_score_params.js +32 -10
  100. package/dest/services/libp2p/libp2p_service.d.ts +16 -13
  101. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  102. package/dest/services/libp2p/libp2p_service.js +69 -81
  103. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -3
  104. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  105. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +19 -46
  106. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  107. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  108. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  109. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  110. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  111. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
  112. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  113. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
  114. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  115. package/dest/services/reqresp/reqresp.d.ts +1 -1
  116. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  117. package/dest/services/reqresp/reqresp.js +2 -1
  118. package/dest/services/service.d.ts +5 -3
  119. package/dest/services/service.d.ts.map +1 -1
  120. package/dest/services/tx_collection/config.d.ts +13 -1
  121. package/dest/services/tx_collection/config.d.ts.map +1 -1
  122. package/dest/services/tx_collection/config.js +30 -0
  123. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -1
  124. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  125. package/dest/services/tx_collection/fast_tx_collection.js +39 -33
  126. package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
  127. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  128. package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
  129. package/dest/services/tx_collection/file_store_tx_source.d.ts +16 -6
  130. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  131. package/dest/services/tx_collection/file_store_tx_source.js +49 -16
  132. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  133. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  134. package/dest/services/tx_collection/instrumentation.js +2 -1
  135. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  136. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  137. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  138. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -6
  139. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  140. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  141. package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
  142. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  143. package/dest/services/tx_collection/slow_tx_collection.js +17 -12
  144. package/dest/services/tx_collection/tx_collection.d.ts +9 -6
  145. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  146. package/dest/services/tx_collection/tx_collection.js +26 -10
  147. package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
  148. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  149. package/dest/services/tx_collection/tx_collection_sink.js +13 -22
  150. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  151. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  152. package/dest/services/tx_collection/tx_source.js +19 -2
  153. package/dest/services/tx_file_store/tx_file_store.d.ts +3 -2
  154. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  155. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  156. package/dest/services/tx_provider.d.ts +3 -3
  157. package/dest/services/tx_provider.d.ts.map +1 -1
  158. package/dest/services/tx_provider.js +4 -4
  159. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  160. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  161. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  162. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  163. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  164. package/dest/test-helpers/mock-pubsub.js +8 -2
  165. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  166. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  167. package/dest/test-helpers/reqresp-nodes.js +2 -2
  168. package/dest/test-helpers/testbench-utils.d.ts +8 -3
  169. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  170. package/dest/test-helpers/testbench-utils.js +7 -1
  171. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  172. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  173. package/dest/testbench/p2p_client_testbench_worker.js +13 -13
  174. package/dest/util.d.ts +2 -2
  175. package/dest/util.d.ts.map +1 -1
  176. package/package.json +14 -14
  177. package/src/client/factory.ts +39 -48
  178. package/src/client/interface.ts +17 -20
  179. package/src/client/p2p_client.ts +60 -104
  180. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -10
  181. package/src/config.ts +10 -10
  182. package/src/errors/tx-pool.error.ts +12 -0
  183. package/src/mem_pools/attestation_pool/attestation_pool.ts +8 -0
  184. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  185. package/src/mem_pools/tx_pool/README.md +1 -1
  186. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  187. package/src/mem_pools/tx_pool_v2/README.md +43 -27
  188. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
  189. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  190. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +5 -2
  191. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  192. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  193. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +49 -4
  194. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  195. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  196. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  197. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +24 -6
  198. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +3 -3
  199. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  200. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  201. package/src/mem_pools/tx_pool_v2/interfaces.ts +21 -6
  202. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +107 -17
  203. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +43 -16
  204. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +18 -7
  205. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +326 -138
  206. package/src/msg_validators/tx_validator/README.md +115 -0
  207. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
  208. package/src/msg_validators/tx_validator/factory.ts +353 -77
  209. package/src/msg_validators/tx_validator/gas_validator.ts +90 -27
  210. package/src/msg_validators/tx_validator/index.ts +1 -0
  211. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  212. package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
  213. package/src/services/dummy_service.ts +6 -6
  214. package/src/services/encoding.ts +7 -7
  215. package/src/services/gossipsub/README.md +29 -14
  216. package/src/services/gossipsub/topic_score_params.ts +49 -13
  217. package/src/services/libp2p/libp2p_service.ts +80 -90
  218. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +20 -48
  219. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  220. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  221. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
  222. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  223. package/src/services/reqresp/reqresp.ts +3 -1
  224. package/src/services/service.ts +11 -2
  225. package/src/services/tx_collection/config.ts +42 -0
  226. package/src/services/tx_collection/fast_tx_collection.ts +51 -30
  227. package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
  228. package/src/services/tx_collection/file_store_tx_source.ts +64 -17
  229. package/src/services/tx_collection/instrumentation.ts +7 -1
  230. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  231. package/src/services/tx_collection/proposal_tx_collector.ts +8 -7
  232. package/src/services/tx_collection/slow_tx_collection.ts +17 -13
  233. package/src/services/tx_collection/tx_collection.ts +45 -14
  234. package/src/services/tx_collection/tx_collection_sink.ts +15 -29
  235. package/src/services/tx_collection/tx_source.ts +22 -3
  236. package/src/services/tx_file_store/tx_file_store.ts +6 -4
  237. package/src/services/tx_provider.ts +2 -2
  238. package/src/test-helpers/make-test-p2p-clients.ts +0 -2
  239. package/src/test-helpers/mock-pubsub.ts +13 -6
  240. package/src/test-helpers/reqresp-nodes.ts +2 -5
  241. package/src/test-helpers/testbench-utils.ts +11 -3
  242. package/src/testbench/p2p_client_testbench_worker.ts +22 -19
  243. package/src/util.ts +7 -1
@@ -1,22 +1,89 @@
1
- import { AVM_MAX_PROCESSABLE_L2_GAS, FIXED_DA_GAS, FIXED_L2_GAS } from '@aztec/constants';
1
+ import { MAX_PROCESSABLE_L2_GAS, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
3
  import { computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
4
4
  import { Gas } from '@aztec/stdlib/gas';
5
5
  import { TX_ERROR_GAS_LIMIT_TOO_HIGH, TX_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE, TX_ERROR_INSUFFICIENT_FEE_PER_GAS, TX_ERROR_INSUFFICIENT_GAS_LIMIT } from '@aztec/stdlib/tx';
6
6
  import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
7
- export class GasTxValidator {
7
+ /**
8
+ * Validates that a transaction's gas limits are within acceptable bounds.
9
+ *
10
+ * Rejects transactions whose gas limits fall below the fixed minimums (FIXED_DA_GAS,
11
+ * FIXED_L2_GAS) or exceed the AVM's maximum processable L2 gas. This is a cheap,
12
+ * stateless check that operates on gas settings alone.
13
+ *
14
+ * Generic over T so it can validate both full {@link Tx} objects and {@link TxMetaData}
15
+ * (used during pending pool migration).
16
+ *
17
+ * Used by: pending pool migration (via factory), and indirectly by {@link GasTxValidator}.
18
+ */ export class GasLimitsValidator {
19
+ #log;
20
+ constructor(bindings){
21
+ this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
22
+ }
23
+ validateTx(tx) {
24
+ return Promise.resolve(this.validateGasLimit(tx));
25
+ }
26
+ /** Checks gas limits are >= fixed minimums and <= AVM max processable L2 gas. */ validateGasLimit(tx) {
27
+ const gasLimits = tx.data.constants.txContext.gasSettings.gasLimits;
28
+ const minGasLimits = new Gas(TX_DA_GAS_OVERHEAD, tx.data.forPublic ? PUBLIC_TX_L2_GAS_OVERHEAD : PRIVATE_TX_L2_GAS_OVERHEAD);
29
+ if (minGasLimits.gtAny(gasLimits)) {
30
+ this.#log.verbose(`Rejecting transaction due to the gas limit(s) not being above the minimum gas limit`, {
31
+ gasLimits,
32
+ minGasLimits
33
+ });
34
+ return {
35
+ result: 'invalid',
36
+ reason: [
37
+ TX_ERROR_INSUFFICIENT_GAS_LIMIT
38
+ ]
39
+ };
40
+ }
41
+ if (gasLimits.l2Gas > MAX_PROCESSABLE_L2_GAS) {
42
+ this.#log.verbose(`Rejecting transaction due to the gas limit(s) being higher than the maximum processable gas`, {
43
+ gasLimits,
44
+ minGasLimits
45
+ });
46
+ return {
47
+ result: 'invalid',
48
+ reason: [
49
+ TX_ERROR_GAS_LIMIT_TOO_HIGH
50
+ ]
51
+ };
52
+ }
53
+ return {
54
+ result: 'valid'
55
+ };
56
+ }
57
+ }
58
+ /**
59
+ * Validates that a transaction can pay its gas fees.
60
+ *
61
+ * Runs three checks in order:
62
+ * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
63
+ * out of bounds.
64
+ * 2. **Max fee per gas** — skips (not rejects) the tx if its maxFeesPerGas is below
65
+ * the current block's gas fees. We skip rather than reject because the tx may
66
+ * become eligible in a later block with lower fees.
67
+ * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
68
+ * adds any pending claim from a setup-phase `_increase_public_balance` call, and
69
+ * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
70
+ *
71
+ * Used by: gossip (stage 1), RPC, and block building validators.
72
+ */ export class GasTxValidator {
73
+ bindings;
8
74
  #log;
9
75
  #publicDataSource;
10
76
  #feeJuiceAddress;
11
77
  #gasFees;
12
78
  constructor(publicDataSource, feeJuiceAddress, gasFees, bindings){
79
+ this.bindings = bindings;
13
80
  this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
14
81
  this.#publicDataSource = publicDataSource;
15
82
  this.#feeJuiceAddress = feeJuiceAddress;
16
83
  this.#gasFees = gasFees;
17
84
  }
18
85
  async validateTx(tx) {
19
- const gasLimitValidation = this.#validateGasLimit(tx);
86
+ const gasLimitValidation = new GasLimitsValidator(this.bindings).validateGasLimit(tx);
20
87
  if (gasLimitValidation.result === 'invalid') {
21
88
  return Promise.resolve(gasLimitValidation);
22
89
  }
@@ -49,39 +116,9 @@ export class GasTxValidator {
49
116
  return notEnoughMaxFees;
50
117
  }
51
118
  /**
52
- * Check whether the tx's gas limit is above the minimum amount.
53
- */ #validateGasLimit(tx) {
54
- const gasLimits = tx.data.constants.txContext.gasSettings.gasLimits;
55
- const minGasLimits = new Gas(FIXED_DA_GAS, FIXED_L2_GAS);
56
- if (minGasLimits.gtAny(gasLimits)) {
57
- this.#log.verbose(`Rejecting transaction due to the gas limit(s) not being above the minimum gas limit`, {
58
- gasLimits,
59
- minGasLimits
60
- });
61
- return {
62
- result: 'invalid',
63
- reason: [
64
- TX_ERROR_INSUFFICIENT_GAS_LIMIT
65
- ]
66
- };
67
- }
68
- if (gasLimits.l2Gas > AVM_MAX_PROCESSABLE_L2_GAS) {
69
- this.#log.verbose(`Rejecting transaction due to the gas limit(s) being higher than the maximum processable gas`, {
70
- gasLimits,
71
- minGasLimits
72
- });
73
- return {
74
- result: 'invalid',
75
- reason: [
76
- TX_ERROR_GAS_LIMIT_TOO_HIGH
77
- ]
78
- };
79
- }
80
- return {
81
- result: 'valid'
82
- };
83
- }
84
- async validateTxFee(tx) {
119
+ * Checks the fee payer has enough FeeJuice balance to cover the tx's fee limit.
120
+ * Accounts for any pending claim from a setup-phase `_increase_public_balance` call.
121
+ */ async validateTxFee(tx) {
85
122
  const feePayer = tx.data.feePayer;
86
123
  // Compute the maximum fee that this tx may pay, based on its gasLimits and maxFeePerGas
87
124
  const feeLimit = getTxFeeLimit(tx);
@@ -12,4 +12,5 @@ export * from './archive_cache.js';
12
12
  export * from './tx_permitted_validator.js';
13
13
  export * from './timestamp_validator.js';
14
14
  export * from './size_validator.js';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDIn0=
15
+ export * from './factory.js';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsY0FBYyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
@@ -12,3 +12,4 @@ export * from './archive_cache.js';
12
12
  export * from './tx_permitted_validator.js';
13
13
  export * from './timestamp_validator.js';
14
14
  export * from './size_validator.js';
15
+ export * from './factory.js';
@@ -0,0 +1,14 @@
1
+ import type { NullifierSource } from '@aztec/p2p';
2
+ import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
3
+ /**
4
+ * Implements a nullifier source by checking a DB and an in-memory collection.
5
+ * Intended for validating transactions as they are added to a block.
6
+ */
7
+ export declare class NullifierCache implements NullifierSource {
8
+ private db;
9
+ nullifiers: Set<string>;
10
+ constructor(db: MerkleTreeReadOperations);
11
+ nullifiersExist(nullifiers: Buffer[]): Promise<boolean[]>;
12
+ addNullifiers(nullifiers: Buffer[]): void;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlmaWVyX2NhY2hlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL251bGxpZmllcl9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdoRjs7O0dBR0c7QUFDSCxxQkFBYSxjQUFlLFlBQVcsZUFBZTtJQUd4QyxPQUFPLENBQUMsRUFBRTtJQUZ0QixVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLFlBQW9CLEVBQUUsRUFBRSx3QkFBd0IsRUFFL0M7SUFFWSxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQU9yRTtJQUVNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBSXhDO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullifier_cache.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/nullifier_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IAGxC,OAAO,CAAC,EAAE;IAFtB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB,YAAoB,EAAE,EAAE,wBAAwB,EAE/C;IAEY,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAOrE;IAEM,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAIxC;CACF"}
@@ -0,0 +1,24 @@
1
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
2
+ /**
3
+ * Implements a nullifier source by checking a DB and an in-memory collection.
4
+ * Intended for validating transactions as they are added to a block.
5
+ */ export class NullifierCache {
6
+ db;
7
+ nullifiers;
8
+ constructor(db){
9
+ this.db = db;
10
+ this.nullifiers = new Set();
11
+ }
12
+ async nullifiersExist(nullifiers) {
13
+ const cacheResults = nullifiers.map((n)=>this.nullifiers.has(n.toString()));
14
+ const toCheckDb = nullifiers.filter((_n, index)=>!cacheResults[index]);
15
+ const dbHits = await this.db.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, toCheckDb);
16
+ let dbIndex = 0;
17
+ return nullifiers.map((_n, index)=>cacheResults[index] || dbHits[dbIndex++] !== undefined);
18
+ }
19
+ addNullifiers(nullifiers) {
20
+ for (const nullifier of nullifiers){
21
+ this.nullifiers.add(nullifier.toString());
22
+ }
23
+ }
24
+ }
@@ -8,7 +8,7 @@ export interface HasTimestampData {
8
8
  toString(): string;
9
9
  };
10
10
  data: {
11
- includeByTimestamp: bigint;
11
+ expirationTimestamp: bigint;
12
12
  constants: {
13
13
  anchorBlockHeader: {
14
14
  globalVariables: {
@@ -27,4 +27,4 @@ export declare class TimestampTxValidator<T extends HasTimestampData> implements
27
27
  }, bindings?: LoggerBindings);
28
28
  validateTx(tx: T): Promise<TxValidationResult>;
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXN0YW1wX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci90aW1lc3RhbXBfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBQXlDLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwSCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxxREFBcUQ7QUFDckQsTUFBTSxXQUFXLGdCQUFnQjtJQUMvQixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFDSixrQkFBa0IsRUFBRSxNQUFNLENBQUM7UUFDM0IsU0FBUyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUU7Z0JBQ2pCLGVBQWUsRUFBRTtvQkFDZixXQUFXLEVBQUUsV0FBVyxDQUFDO2lCQUMxQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCxxQkFBYSxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUluRixPQUFPLENBQUMsTUFBTTtJQURoQixZQUNVLE1BQU0sRUFBRTtRQUdkLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFFbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQztLQUMxQixFQUNELFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FtQjdDO0NBQ0YifQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXN0YW1wX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci90aW1lc3RhbXBfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBQXlDLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwSCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxxREFBcUQ7QUFDckQsTUFBTSxXQUFXLGdCQUFnQjtJQUMvQixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFDSixtQkFBbUIsRUFBRSxNQUFNLENBQUM7UUFDNUIsU0FBUyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUU7Z0JBQ2pCLGVBQWUsRUFBRTtvQkFDZixXQUFXLEVBQUUsV0FBVyxDQUFDO2lCQUMxQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCxxQkFBYSxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUluRixPQUFPLENBQUMsTUFBTTtJQURoQixZQUNVLE1BQU0sRUFBRTtRQUdkLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFFbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQztLQUMxQixFQUNELFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FtQjdDO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/timestamp_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE;YACT,iBAAiB,EAAE;gBACjB,eAAe,EAAE;oBACf,WAAW,EAAE,WAAW,CAAC;iBAC1B,CAAC;aACH,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAInF,OAAO,CAAC,MAAM;IADhB,YACU,MAAM,EAAE;QAGd,SAAS,EAAE,MAAM,CAAC;QAElB,WAAW,EAAE,WAAW,CAAC;KAC1B,EACD,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB7C;CACF"}
1
+ {"version":3,"file":"timestamp_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/timestamp_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE;YACT,iBAAiB,EAAE;gBACjB,eAAe,EAAE;oBACf,WAAW,EAAE,WAAW,CAAC;iBAC1B,CAAC;aACH,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAInF,OAAO,CAAC,MAAM;IADhB,YACU,MAAM,EAAE;QAGd,SAAS,EAAE,MAAM,CAAC;QAElB,WAAW,EAAE,WAAW,CAAC;KAC1B,EACD,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB7C;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
- import { TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP } from '@aztec/stdlib/tx';
2
+ import { TX_ERROR_INVALID_EXPIRATION_TIMESTAMP } from '@aztec/stdlib/tx';
3
3
  export class TimestampTxValidator {
4
4
  values;
5
5
  #log;
@@ -8,19 +8,19 @@ export class TimestampTxValidator {
8
8
  this.#log = createLogger('p2p:tx_validator:timestamp', bindings);
9
9
  }
10
10
  validateTx(tx) {
11
- const includeByTimestamp = tx.data.includeByTimestamp;
12
- // If building block 1, we skip the expiration check. For details on why see the `validate_include_by_timestamp`
11
+ const expirationTimestamp = tx.data.expirationTimestamp;
12
+ // If building block 1, we skip the expiration check. For details on why see the `validate_expiration_timestamp`
13
13
  // function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
14
14
  const buildingBlock1 = this.values.blockNumber === 1;
15
- if (!buildingBlock1 && includeByTimestamp < this.values.timestamp) {
15
+ if (!buildingBlock1 && expirationTimestamp < this.values.timestamp) {
16
16
  if (tx.data.constants.anchorBlockHeader.globalVariables.blockNumber === 0) {
17
17
  this.#log.warn(`A tx built against a genesis block failed to be included in block 1 which is the only block in which txs built against a genesis block are allowed to be included.`);
18
18
  }
19
- this.#log.verbose(`Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${this.values.timestamp}.`);
19
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${expirationTimestamp}, timestamp: ${this.values.timestamp}.`);
20
20
  return Promise.resolve({
21
21
  result: 'invalid',
22
22
  reason: [
23
- TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP
23
+ TX_ERROR_INVALID_EXPIRATION_TIMESTAMP
24
24
  ]
25
25
  });
26
26
  } else {
@@ -1,6 +1,6 @@
1
1
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
3
- import type { Gossipable, PeerErrorSeverity } from '@aztec/stdlib/p2p';
3
+ import type { Gossipable, PeerErrorSeverity, TopicType } from '@aztec/stdlib/p2p';
4
4
  import { Tx, TxHash } from '@aztec/stdlib/tx';
5
5
  import type { PeerId } from '@libp2p/interface';
6
6
  import type { ENR } from '@nethermindeth/enr';
@@ -20,6 +20,7 @@ export declare class DummyP2PService implements P2PService {
20
20
  updateConfig(_config: Partial<P2PReqRespConfig>): void;
21
21
  /** Returns an empty array for peers. */
22
22
  getPeers(): PeerInfo[];
23
+ getGossipMeshPeerCount(_topicType: TopicType): number;
23
24
  /**
24
25
  * Starts the dummy implementation.
25
26
  * @returns A resolved promise.
@@ -76,8 +77,7 @@ export declare class DummyP2PService implements P2PService {
76
77
  * @returns The ENR of the peer, otherwise undefined.
77
78
  */
78
79
  getEnr(): undefined;
79
- validate(_txs: Tx[]): Promise<void>;
80
- validatePropagatedTx(_tx: Tx, _peerId: PeerId): Promise<boolean>;
80
+ validateTxsReceivedInBlockProposal(_txs: Tx[]): Promise<void>;
81
81
  addReqRespSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
82
82
  handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
83
83
  registerThisValidatorAddresses(_address: EthAddress[]): void;
@@ -145,4 +145,4 @@ export declare class DummyReqResp implements ReqRespInterface {
145
145
  getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'>;
146
146
  addSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
147
147
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2R1bW15X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLFlBQVksTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9GLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQ1YsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQiw0QkFBNEIsRUFDNUIsY0FBYyxFQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEUs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
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2R1bW15X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxZQUFZLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUNWLGdCQUFnQixFQUNoQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxD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
@@ -1 +1 @@
1
- {"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,9 @@ import { PeerDiscoveryState } from './service.js';
9
9
  /** Returns an empty array for peers. */ getPeers() {
10
10
  return [];
11
11
  }
12
+ getGossipMeshPeerCount(_topicType) {
13
+ return 0;
14
+ }
12
15
  /**
13
16
  * Starts the dummy implementation.
14
17
  * @returns A resolved promise.
@@ -71,12 +74,9 @@ import { PeerDiscoveryState } from './service.js';
71
74
  */ getEnr() {
72
75
  return undefined;
73
76
  }
74
- validate(_txs) {
77
+ validateTxsReceivedInBlockProposal(_txs) {
75
78
  return Promise.resolve();
76
79
  }
77
- validatePropagatedTx(_tx, _peerId) {
78
- return Promise.resolve(true);
79
- }
80
80
  addReqRespSubProtocol(_subProtocol, _handler, _validator) {
81
81
  return Promise.resolve();
82
82
  }
@@ -17,7 +17,7 @@ export declare function msgIdToStrFn(msgId: Uint8Array): string;
17
17
  * @param message - The libp2p message
18
18
  * @returns The message identifier
19
19
  */
20
- export declare function getMsgIdFn(message: Message): Buffer<ArrayBuffer>;
20
+ export declare function getMsgIdFn({ topic, data }: Message): Promise<Uint8Array>;
21
21
  /**
22
22
  * Snappy transform for libp2p gossipsub
23
23
  */
@@ -47,4 +47,4 @@ export declare function readSnappyPreamble(data: Uint8Array): {
47
47
  decompressedSize: number;
48
48
  bytesRead: number;
49
49
  };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWtCLFNBQVMsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRixPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWFqRDs7O0dBR0c7QUFDSCx3QkFBZ0IsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FLdkQ7QUFFRCx3QkFBZ0IsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUl0RDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyx1QkFLMUM7QUFhRDs7R0FFRztBQUNILHFCQUFhLGVBQWdCLFlBQVcsYUFBYTtJQUVqRCxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxNQUFNO0lBSGhCLFlBQ1UsVUFBVSxHQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFxQixFQUN6RCxnQkFBZ0IsR0FBRSxNQUFrQixFQUNwQyxNQUFNLHlDQUF1QyxFQUNuRDtJQUdKLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRy9EO0lBRU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQVkvRjtJQUdELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRWpFO0lBRU0scUJBQXFCLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBS2pEO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHO0lBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBbUNwRyJ9
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWtCLFNBQVMsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRixPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWNqRDs7O0dBR0c7QUFDSCx3QkFBZ0IsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FLdkQ7QUFFRCx3QkFBZ0IsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUl0RDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUk5RTtBQWNEOztHQUVHO0FBQ0gscUJBQWEsZUFBZ0IsWUFBVyxhQUFhO0lBRWpELE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFDeEIsT0FBTyxDQUFDLE1BQU07SUFIaEIsWUFDVSxVQUFVLEdBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQXFCLEVBQ3pELGdCQUFnQixHQUFFLE1BQWtCLEVBQ3BDLE1BQU0seUNBQXVDLEVBQ25EO0lBR0osZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLFVBQVUsQ0FHL0Q7SUFFTSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBWS9GO0lBR0QsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLFVBQVUsQ0FFakU7SUFFTSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FLakQ7Q0FDRjtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUc7SUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFBO0NBQUUsQ0FtQ3BHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,uBAK1C;AAaD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEjD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAHhB,YACU,UAAU,GAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAqB,EACzD,gBAAgB,GAAE,MAAkB,EACpC,MAAM,yCAAuC,EACnD;IAGJ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAG/D;IAEM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAY/F;IAGD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAEjE;IAEM,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;CACF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAmCpG"}
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAcjD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAI9E;AAcD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEjD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAHhB,YACU,UAAU,GAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAqB,EACzD,gBAAgB,GAAE,MAAkB,EACpC,MAAM,yCAAuC,EACnD;IAGJ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAG/D;IAEM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAY/F;IAGD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAEjE;IAEM,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;CACF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAmCpG"}
@@ -1,7 +1,7 @@
1
1
  // Taken from lodestar: https://github.com/ChainSafe/lodestar
2
- import { sha256 } from '@aztec/foundation/crypto/sha256';
3
2
  import { createLogger } from '@aztec/foundation/log';
4
3
  import { MAX_TX_SIZE_KB, TopicType, getTopicFromString } from '@aztec/stdlib/p2p';
4
+ import { webcrypto } from 'node:crypto';
5
5
  import { compressSync, uncompressSync } from 'snappy';
6
6
  import xxhashFactory from 'xxhash-wasm';
7
7
  // Load WASM
@@ -32,13 +32,13 @@ export function msgIdToStrFn(msgId) {
32
32
  *
33
33
  * @param message - The libp2p message
34
34
  * @returns The message identifier
35
- */ export function getMsgIdFn(message) {
36
- const { topic } = message;
37
- const vec = [
35
+ */ export async function getMsgIdFn({ topic, data }) {
36
+ const buffer = Buffer.concat([
38
37
  Buffer.from(topic),
39
- message.data
40
- ];
41
- return sha256(Buffer.concat(vec)).subarray(0, 20);
38
+ data
39
+ ]);
40
+ const hash = await webcrypto.subtle.digest('SHA-256', buffer);
41
+ return Buffer.from(hash.slice(0, 20));
42
42
  }
43
43
  const DefaultMaxSizesKb = {
44
44
  [TopicType.tx]: MAX_TX_SIZE_KB,
@@ -47,7 +47,8 @@ const DefaultMaxSizesKb = {
47
47
  // Proposals may carry some tx objects, so we allow a larger size capped at 10mb
48
48
  // Note this may not be enough for carrying all tx objects in a block
49
49
  [TopicType.block_proposal]: 1024 * 10,
50
- // TODO(palla/mbps): Check size for checkpoint proposal
50
+ // Checkpoint proposals carry almost the same data as a block proposal (see the lastBlockProposal)
51
+ // Only diff is an additional header, which is pretty small compared to the 10mb limit
51
52
  [TopicType.checkpoint_proposal]: 1024 * 10
52
53
  };
53
54
  /**
@@ -12,6 +12,8 @@ export type TopicScoringNetworkParams = {
12
12
  targetCommitteeSize: number;
13
13
  /** Duration per block in milliseconds when building multiple blocks per slot. If undefined, single block mode. */
14
14
  blockDurationMs?: number;
15
+ /** Expected number of block proposals per slot for scoring override. 0 disables scoring, undefined falls back to blocksPerSlot - 1. */
16
+ expectedBlockProposalsPerSlot?: number;
15
17
  };
16
18
  /**
17
19
  * Calculates the number of blocks per slot based on timing parameters.
@@ -59,25 +61,31 @@ export declare function computeConvergence(messagesPerHeartbeat: number, decay:
59
61
  * @returns Threshold value
60
62
  */
61
63
  export declare function computeThreshold(convergence: number, conservativeFactor: number): number;
64
+ /**
65
+ * Determines the effective expected block proposals per slot for scoring.
66
+ * Returns undefined if scoring should be disabled, or a positive number if enabled.
67
+ *
68
+ * @param blocksPerSlot - Number of blocks per slot from timetable
69
+ * @param expectedBlockProposalsPerSlot - Config override. 0 disables scoring, undefined falls back to blocksPerSlot - 1.
70
+ * @returns Positive number of expected block proposals, or undefined if scoring is disabled
71
+ */
72
+ export declare function getEffectiveBlockProposalsPerSlot(blocksPerSlot: number, expectedBlockProposalsPerSlot?: number): number | undefined;
62
73
  /**
63
74
  * Gets the expected messages per slot for a given topic type.
64
75
  *
65
76
  * @param topicType - The topic type
66
77
  * @param targetCommitteeSize - Target committee size
67
78
  * @param blocksPerSlot - Number of blocks per slot
79
+ * @param expectedBlockProposalsPerSlot - Override for block proposals. 0 disables scoring, undefined falls back to blocksPerSlot - 1.
68
80
  * @returns Expected messages per slot, or undefined if unpredictable
69
81
  */
70
- export declare function getExpectedMessagesPerSlot(topicType: TopicType, targetCommitteeSize: number, blocksPerSlot: number): number | undefined;
82
+ export declare function getExpectedMessagesPerSlot(topicType: TopicType, targetCommitteeSize: number, blocksPerSlot: number, expectedBlockProposalsPerSlot?: number): number | undefined;
71
83
  /** Maximum P1 score contribution per topic */
72
84
  export declare const MAX_P1_SCORE = 8;
73
85
  /** Maximum P2 score contribution per topic */
74
86
  export declare const MAX_P2_SCORE = 25;
75
87
  /** Maximum P3 penalty per topic (must exceed P1 + P2 to cause pruning) */
76
88
  export declare const MAX_P3_PENALTY_PER_TOPIC: number;
77
- /** Number of topics with P3 enabled in MBPS mode (block_proposal + checkpoint_proposal + checkpoint_attestation) */
78
- export declare const NUM_P3_ENABLED_TOPICS = 3;
79
- /** Total maximum P3b penalty across all topics after pruning in MBPS mode */
80
- export declare const TOTAL_MAX_P3B_PENALTY: number;
81
89
  /**
82
90
  * Factory class for creating gossipsub topic scoring parameters.
83
91
  * Computes shared values once and reuses them across all topics.
@@ -126,6 +134,10 @@ export declare class TopicScoreParamsFactory {
126
134
  * @param expectedPerSlot - Expected messages per slot
127
135
  */
128
136
  private createEnabledP3Params;
137
+ /** Number of topics with P3 enabled, computed from config. Always 2 (checkpoint_proposal + checkpoint_attestation) plus optionally block_proposal. */
138
+ get numP3EnabledTopics(): number;
139
+ /** Total maximum P3b penalty across all topics after pruning, computed from config */
140
+ get totalMaxP3bPenalty(): number;
129
141
  /**
130
142
  * Creates topic score parameters for a specific topic type.
131
143
  *
@@ -158,4 +170,4 @@ export declare function createTopicScoreParamsForTopic(topicType: TopicType, par
158
170
  * @returns Record mapping topic strings to their score parameters
159
171
  */
160
172
  export declare function createAllTopicScoreParams(protocolVersion: string, params: TopicScoringNetworkParams): Record<string, ReturnType<typeof createTopicScoreParams>>;
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWNfc2NvcmVfcGFyYW1zLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZ29zc2lwc3ViL3RvcGljX3Njb3JlX3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTNFOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHlCQUF5QixHQUFHO0lBQ3RDLHVDQUF1QztJQUN2QyxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLG1EQUFtRDtJQUNuRCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsK0VBQStFO0lBQy9FLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztJQUM1QixrSEFBa0g7SUFDbEgsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQzFCLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUUxRztBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixtQkFBbUIsQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQVEzRTtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQU9sSDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFdEY7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFeEY7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLDBCQUEwQixDQUN4QyxTQUFTLEVBQUUsU0FBUyxFQUNwQixtQkFBbUIsRUFBRSxNQUFNLEVBQzNCLGFBQWEsRUFBRSxNQUFNLEdBQ3BCLE1BQU0sR0FBRyxTQUFTLENBc0JwQjtBQWtDRCw4Q0FBOEM7QUFDOUMsZUFBTyxNQUFNLFlBQVksSUFBSSxDQUFDO0FBZTlCLDhDQUE4QztBQUM5QyxlQUFPLE1BQU0sWUFBWSxLQUFLLENBQUM7QUEwQi9CLDBFQUEwRTtBQUMxRSxlQUFPLE1BQU0sd0JBQXdCLFFBQXFDLENBQUM7QUFFM0Usb0hBQW9IO0FBQ3BILGVBQU8sTUFBTSxxQkFBcUIsSUFBSSxDQUFDO0FBRXZDLDZFQUE2RTtBQUM3RSxlQUFPLE1BQU0scUJBQXFCLFFBQW1ELENBQUM7QUFFdEY7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXVCO0lBMkN0QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUExQ25DLGlFQUFpRTtJQUNqRSxTQUFnQixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBRXRDLHNEQUFzRDtJQUN0RCxTQUFnQixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBRXJDLG9DQUFvQztJQUNwQyxTQUFnQixpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFFMUMsc0ZBQXNGO0lBQ3RGLFNBQWdCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUUxQyxnRUFBZ0U7SUFDaEUsU0FBZ0IsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUV0QyxvRUFBb0U7SUFDcEUsU0FBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBRXpDLGdEQUFnRDtJQUNoRCxTQUFnQiwyQkFBMkIsRUFBRSxNQUFNLENBQUM7SUFFcEQsMkRBQTJEO0lBQzNELFNBQWdCLHlCQUF5QixFQUFFLE1BQU0sQ0FBQztJQUVsRCxnRkFBZ0Y7SUFDaEYsU0FBZ0IsNEJBQTRCLEVBQUUsTUFBTSxDQUFDO0lBRXJELDJDQUEyQztJQUMzQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FZekI7SUFFRixZQUE2QixNQUFNLEVBQUUseUJBQXlCLEVBd0M3RDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsc0JBQXNCO0lBMkI5Qjs7Ozs7Ozs7OztPQVVHO0lBQ0gsT0FBTyxDQUFDLHFCQUFxQjtJQXdDN0I7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxzQkFBc0IsQ0FBQyxDQVM5RTtJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLGVBQWUsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBUzVGO0NBQ0Y7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLDhCQUE4QixDQUM1QyxTQUFTLEVBQUUsU0FBUyxFQUNwQixNQUFNLEVBQUUseUJBQXlCLEdBQ2hDLFVBQVUsQ0FBQyxPQUFPLHNCQUFzQixDQUFDLENBRzNDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLHlCQUF5QixDQUN2QyxlQUFlLEVBQUUsTUFBTSxFQUN2QixNQUFNLEVBQUUseUJBQXlCLEdBQ2hDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxDQUczRCJ9
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWNfc2NvcmVfcGFyYW1zLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZ29zc2lwc3ViL3RvcGljX3Njb3JlX3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTNFOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHlCQUF5QixHQUFHO0lBQ3RDLHVDQUF1QztJQUN2QyxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLG1EQUFtRDtJQUNuRCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsK0VBQStFO0lBQy9FLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztJQUM1QixrSEFBa0g7SUFDbEgsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLHVJQUF1STtJQUN2SSw2QkFBNkIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN4QyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FFMUc7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBZ0IsbUJBQW1CLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FRM0U7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixZQUFZLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FPbEg7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBRXRGO0FBRUQ7Ozs7Ozs7R0FPRztB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
@@ -1 +1 @@
1
- {"version":3,"file":"topic_score_params.d.ts","sourceRoot":"","sources":["../../../src/services/gossipsub/topic_score_params.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"topic_score_params.d.ts","sourceRoot":"","sources":["../../../src/services/gossipsub/topic_score_params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kHAAkH;IAClH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uIAAuI;IACvI,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE1G;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAOlH;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,MAAM,EACrB,6BAA6B,CAAC,EAAE,MAAM,GACrC,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,mBAAmB,EAAE,MAAM,EAC3B,aAAa,EAAE,MAAM,EACrB,6BAA6B,CAAC,EAAE,MAAM,GACrC,MAAM,GAAG,SAAS,CAoBpB;AAkCD,8CAA8C;AAC9C,eAAO,MAAM,YAAY,IAAI,CAAC;AAe9B,8CAA8C;AAC9C,eAAO,MAAM,YAAY,KAAK,CAAC;AA4B/B,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,QAAqC,CAAC;AAE3E;;;GAGG;AACH,qBAAa,uBAAuB;IA2CtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IA1CnC,iEAAiE;IACjE,SAAgB,aAAa,EAAE,MAAM,CAAC;IAEtC,sDAAsD;IACtD,SAAgB,YAAY,EAAE,MAAM,CAAC;IAErC,oCAAoC;IACpC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAE1C,sFAAsF;IACtF,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAE1C,gEAAgE;IAChE,SAAgB,aAAa,EAAE,MAAM,CAAC;IAEtC,oEAAoE;IACpE,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IAEzC,gDAAgD;IAChD,SAAgB,2BAA2B,EAAE,MAAM,CAAC;IAEpD,2DAA2D;IAC3D,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAElD,gFAAgF;IAChF,SAAgB,4BAA4B,EAAE,MAAM,CAAC;IAErD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAYzB;IAEF,YAA6B,MAAM,EAAE,yBAAyB,EAwC7D;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB;IAwC7B,sJAAsJ;IACtJ,IAAI,kBAAkB,IAAI,MAAM,CAI/B;IAED,sFAAsF;IACtF,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;;;;OAKG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAc9E;IAED;;;;;OAKG;IACH,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAS5F;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,yBAAyB,GAChC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAG3C;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,yBAAyB,GAChC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAG3D"}
@@ -62,22 +62,37 @@ import { createTopicScoreParams } from '@chainsafe/libp2p-gossipsub/score';
62
62
  */ export function computeThreshold(convergence, conservativeFactor) {
63
63
  return convergence * conservativeFactor;
64
64
  }
65
+ /**
66
+ * Determines the effective expected block proposals per slot for scoring.
67
+ * Returns undefined if scoring should be disabled, or a positive number if enabled.
68
+ *
69
+ * @param blocksPerSlot - Number of blocks per slot from timetable
70
+ * @param expectedBlockProposalsPerSlot - Config override. 0 disables scoring, undefined falls back to blocksPerSlot - 1.
71
+ * @returns Positive number of expected block proposals, or undefined if scoring is disabled
72
+ */ export function getEffectiveBlockProposalsPerSlot(blocksPerSlot, expectedBlockProposalsPerSlot) {
73
+ if (expectedBlockProposalsPerSlot !== undefined) {
74
+ return expectedBlockProposalsPerSlot > 0 ? expectedBlockProposalsPerSlot : undefined;
75
+ }
76
+ // Fallback: In MBPS mode, N-1 block proposals per slot (last one bundled with checkpoint)
77
+ // In single block mode (blocksPerSlot=1), this is 0 → disabled
78
+ const fallback = Math.max(0, blocksPerSlot - 1);
79
+ return fallback > 0 ? fallback : undefined;
80
+ }
65
81
  /**
66
82
  * Gets the expected messages per slot for a given topic type.
67
83
  *
68
84
  * @param topicType - The topic type
69
85
  * @param targetCommitteeSize - Target committee size
70
86
  * @param blocksPerSlot - Number of blocks per slot
87
+ * @param expectedBlockProposalsPerSlot - Override for block proposals. 0 disables scoring, undefined falls back to blocksPerSlot - 1.
71
88
  * @returns Expected messages per slot, or undefined if unpredictable
72
- */ export function getExpectedMessagesPerSlot(topicType, targetCommitteeSize, blocksPerSlot) {
89
+ */ export function getExpectedMessagesPerSlot(topicType, targetCommitteeSize, blocksPerSlot, expectedBlockProposalsPerSlot) {
73
90
  switch(topicType){
74
91
  case TopicType.tx:
75
92
  // Transactions are unpredictable - disable mesh message delivery scoring
76
93
  return undefined;
77
94
  case TopicType.block_proposal:
78
- // In MBPS mode, N-1 block proposals per slot (last one bundled with checkpoint)
79
- // In single block mode (blocksPerSlot=1), this is 0
80
- return Math.max(0, blocksPerSlot - 1);
95
+ return getEffectiveBlockProposalsPerSlot(blocksPerSlot, expectedBlockProposalsPerSlot);
81
96
  case TopicType.checkpoint_proposal:
82
97
  // Exactly 1 checkpoint proposal per slot
83
98
  return 1;
@@ -133,18 +148,18 @@ import { createTopicScoreParams } from '@chainsafe/libp2p-gossipsub/score';
133
148
  // |P3| > 8 + 25 = 33
134
149
  //
135
150
  // We set P3 max = -34 per topic (slightly more than P1+P2) to ensure pruning.
136
- // With 3 topics having P3 enabled, total P3b after pruning = -102.
151
+ // The number of P3-enabled topics depends on config: by default 2 (checkpoint_proposal +
152
+ // checkpoint_attestation), or 3 if block proposal scoring is enabled via
153
+ // expectedBlockProposalsPerSlot. Total P3b after pruning = -68 (2 topics) or -102 (3 topics).
137
154
  //
138
- // With appSpecificWeight=10, ~20 HighTolerance errors (-40 app score) plus max P3b (-102)
139
- // would cross gossipThreshold (-500). This keeps non-contributors from being disconnected
155
+ // With appSpecificWeight=10, ~20 HighTolerance errors (-40 app score) plus max P3b (-68 or -102)
156
+ // would not cross gossipThreshold (-500). This keeps non-contributors from being disconnected
140
157
  // unless they also accrue app-level penalties.
141
158
  //
142
159
  // The weight formula ensures max penalty equals MAX_P3_PENALTY_PER_TOPIC:
143
160
  // weight = MAX_P3_PENALTY_PER_TOPIC / threshold²
144
161
  // When deficit = threshold: penalty = threshold² * weight = MAX_P3_PENALTY_PER_TOPIC
145
162
  /** Maximum P3 penalty per topic (must exceed P1 + P2 to cause pruning) */ export const MAX_P3_PENALTY_PER_TOPIC = -(MAX_P1_SCORE + MAX_P2_SCORE + 1); // -34
146
- /** Number of topics with P3 enabled in MBPS mode (block_proposal + checkpoint_proposal + checkpoint_attestation) */ export const NUM_P3_ENABLED_TOPICS = 3;
147
- /** Total maximum P3b penalty across all topics after pruning in MBPS mode */ export const TOTAL_MAX_P3B_PENALTY = MAX_P3_PENALTY_PER_TOPIC * NUM_P3_ENABLED_TOPICS; // -102
148
163
  /**
149
164
  * Factory class for creating gossipsub topic scoring parameters.
150
165
  * Computes shared values once and reuses them across all topics.
@@ -274,13 +289,20 @@ import { createTopicScoreParams } from '@chainsafe/libp2p-gossipsub/score';
274
289
  meshFailurePenaltyDecay: decay
275
290
  });
276
291
  }
292
+ /** Number of topics with P3 enabled, computed from config. Always 2 (checkpoint_proposal + checkpoint_attestation) plus optionally block_proposal. */ get numP3EnabledTopics() {
293
+ const blockProposalP3Enabled = getEffectiveBlockProposalsPerSlot(this.blocksPerSlot, this.params.expectedBlockProposalsPerSlot) !== undefined;
294
+ return blockProposalP3Enabled ? 3 : 2;
295
+ }
296
+ /** Total maximum P3b penalty across all topics after pruning, computed from config */ get totalMaxP3bPenalty() {
297
+ return MAX_P3_PENALTY_PER_TOPIC * this.numP3EnabledTopics;
298
+ }
277
299
  /**
278
300
  * Creates topic score parameters for a specific topic type.
279
301
  *
280
302
  * @param topicType - The topic type
281
303
  * @returns TopicScoreParams for the topic
282
304
  */ createForTopic(topicType) {
283
- const expectedPerSlot = getExpectedMessagesPerSlot(topicType, this.params.targetCommitteeSize, this.blocksPerSlot);
305
+ const expectedPerSlot = getExpectedMessagesPerSlot(topicType, this.params.targetCommitteeSize, this.blocksPerSlot, this.params.expectedBlockProposalsPerSlot);
284
306
  // For unpredictable topics (tx) or topics with 0 expected messages, disable P3/P3b
285
307
  if (expectedPerSlot === undefined || expectedPerSlot === 0) {
286
308
  return this.createDisabledP3Params();