@aztec/p2p 0.0.1-commit.5de5ca79e → 0.0.1-commit.6201a7b05

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 (257) hide show
  1. package/dest/client/factory.d.ts +3 -2
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +22 -20
  4. package/dest/client/interface.d.ts +9 -2
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +3 -2
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +30 -10
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -7
  10. package/dest/config.d.ts +106 -99
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +16 -7
  13. package/dest/errors/p2p-service.error.d.ts +9 -0
  14. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  15. package/dest/errors/p2p-service.error.js +10 -0
  16. package/dest/index.d.ts +1 -2
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +0 -1
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -2
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +8 -5
  22. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  23. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/mocks.js +6 -4
  25. package/dest/mem_pools/index.d.ts +1 -2
  26. package/dest/mem_pools/index.d.ts.map +1 -1
  27. package/dest/mem_pools/instrumentation.d.ts +1 -1
  28. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  29. package/dest/mem_pools/instrumentation.js +17 -1
  30. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  31. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  32. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  33. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  34. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  35. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  36. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  37. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +4 -1
  38. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -2
  40. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
  42. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
  43. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +2 -1
  45. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  46. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  47. package/dest/msg_validators/attestation_validator/attestation_validator.js +34 -10
  48. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  49. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  50. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  51. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  52. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  53. package/dest/msg_validators/clock_tolerance.js +57 -0
  54. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +4 -2
  55. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  56. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +4 -2
  57. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +6 -2
  59. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  60. package/dest/msg_validators/proposal_validator/proposal_validator.js +32 -9
  61. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  62. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  63. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  64. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  65. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  66. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  67. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  68. package/dest/msg_validators/tx_validator/factory.d.ts +2 -2
  69. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  70. package/dest/msg_validators/tx_validator/factory.js +11 -5
  71. package/dest/msg_validators/tx_validator/gas_validator.d.ts +36 -4
  72. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  73. package/dest/msg_validators/tx_validator/gas_validator.js +50 -33
  74. package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
  75. package/dest/services/data_store.d.ts +1 -1
  76. package/dest/services/data_store.d.ts.map +1 -1
  77. package/dest/services/data_store.js +5 -5
  78. package/dest/services/dummy_service.d.ts +6 -3
  79. package/dest/services/dummy_service.d.ts.map +1 -1
  80. package/dest/services/dummy_service.js +6 -1
  81. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  82. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  83. package/dest/services/gossipsub/topic_score_params.js +21 -4
  84. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  85. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  86. package/dest/services/libp2p/instrumentation.js +14 -0
  87. package/dest/services/libp2p/libp2p_service.d.ts +20 -21
  88. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  89. package/dest/services/libp2p/libp2p_service.js +151 -110
  90. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  91. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  92. package/dest/services/peer-manager/peer_manager.js +33 -8
  93. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  94. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  95. package/dest/services/peer-manager/peer_scoring.js +32 -10
  96. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +1 -1
  97. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  98. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +3 -0
  99. package/dest/services/reqresp/config.d.ts +3 -3
  100. package/dest/services/reqresp/config.d.ts.map +1 -1
  101. package/dest/services/reqresp/interface.d.ts +14 -9
  102. package/dest/services/reqresp/interface.d.ts.map +1 -1
  103. package/dest/services/reqresp/interface.js +10 -11
  104. package/dest/services/reqresp/metrics.d.ts +1 -1
  105. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  106. package/dest/services/reqresp/metrics.js +0 -1
  107. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  108. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  109. package/dest/services/reqresp/protocols/index.js +0 -1
  110. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  111. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  112. package/dest/services/reqresp/protocols/tx.js +1 -3
  113. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  114. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  115. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  116. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  117. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  118. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  119. package/dest/services/reqresp/reqresp.d.ts +4 -2
  120. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  121. package/dest/services/reqresp/reqresp.js +11 -2
  122. package/dest/services/service.d.ts +5 -2
  123. package/dest/services/service.d.ts.map +1 -1
  124. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  125. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  126. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  127. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  128. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  129. package/dest/services/tx_collection/tx_source.js +9 -7
  130. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  131. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  132. package/dest/test-helpers/make-test-p2p-clients.js +4 -1
  133. package/dest/test-helpers/mock-pubsub.d.ts +11 -3
  134. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  135. package/dest/test-helpers/mock-pubsub.js +36 -11
  136. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  137. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  138. package/dest/test-helpers/reqresp-nodes.js +5 -3
  139. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  140. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  141. package/dest/test-helpers/testbench-utils.js +1 -0
  142. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  143. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  144. package/dest/testbench/p2p_client_testbench_worker.js +72 -17
  145. package/dest/testbench/worker_client_manager.d.ts +8 -1
  146. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  147. package/dest/testbench/worker_client_manager.js +49 -1
  148. package/package.json +14 -14
  149. package/src/client/factory.ts +31 -21
  150. package/src/client/interface.ts +9 -1
  151. package/src/client/p2p_client.ts +34 -11
  152. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -6
  153. package/src/config.ts +27 -7
  154. package/src/errors/p2p-service.error.ts +11 -0
  155. package/src/index.ts +0 -1
  156. package/src/mem_pools/attestation_pool/attestation_pool.ts +9 -5
  157. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  158. package/src/mem_pools/index.ts +0 -3
  159. package/src/mem_pools/instrumentation.ts +5 -1
  160. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  161. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  162. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  163. package/src/mem_pools/tx_pool_v2/interfaces.ts +3 -0
  164. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +20 -8
  165. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +2 -0
  166. package/src/msg_validators/attestation_validator/attestation_validator.ts +38 -7
  167. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +12 -2
  168. package/src/msg_validators/clock_tolerance.ts +75 -0
  169. package/src/msg_validators/proposal_validator/README.md +1 -1
  170. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -2
  171. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +15 -2
  172. package/src/msg_validators/proposal_validator/proposal_validator.ts +33 -7
  173. package/src/msg_validators/tx_validator/README.md +11 -3
  174. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  175. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  176. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  177. package/src/msg_validators/tx_validator/factory.ts +10 -1
  178. package/src/msg_validators/tx_validator/gas_validator.ts +82 -33
  179. package/src/msg_validators/tx_validator/phases_validator.ts +1 -1
  180. package/src/services/data_store.ts +5 -13
  181. package/src/services/dummy_service.ts +8 -2
  182. package/src/services/gossipsub/topic_score_params.ts +36 -4
  183. package/src/services/libp2p/instrumentation.ts +14 -0
  184. package/src/services/libp2p/libp2p_service.ts +155 -117
  185. package/src/services/peer-manager/peer_manager.ts +38 -8
  186. package/src/services/peer-manager/peer_scoring.ts +27 -5
  187. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +3 -0
  188. package/src/services/reqresp/config.ts +2 -2
  189. package/src/services/reqresp/interface.ts +21 -11
  190. package/src/services/reqresp/metrics.ts +0 -1
  191. package/src/services/reqresp/protocols/index.ts +0 -1
  192. package/src/services/reqresp/protocols/tx.ts +1 -3
  193. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  194. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  195. package/src/services/reqresp/reqresp.ts +18 -1
  196. package/src/services/service.ts +6 -1
  197. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  198. package/src/services/tx_collection/tx_source.ts +8 -7
  199. package/src/test-helpers/make-test-p2p-clients.ts +2 -0
  200. package/src/test-helpers/mock-pubsub.ts +34 -5
  201. package/src/test-helpers/reqresp-nodes.ts +4 -2
  202. package/src/test-helpers/testbench-utils.ts +1 -0
  203. package/src/testbench/p2p_client_testbench_worker.ts +73 -12
  204. package/src/testbench/worker_client_manager.ts +55 -1
  205. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  206. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  207. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  208. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  209. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  210. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  211. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  212. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  213. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  214. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  215. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  216. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
  217. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  218. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  219. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  220. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  221. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  222. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  223. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  224. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  225. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  226. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  227. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  228. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  229. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  230. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  231. package/dest/mem_pools/tx_pool/index.js +0 -2
  232. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  233. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  234. package/dest/mem_pools/tx_pool/priority.js +0 -15
  235. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  236. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  237. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  238. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  239. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  240. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  241. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  242. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  243. package/dest/services/reqresp/protocols/block.js +0 -32
  244. package/src/mem_pools/tx_pool/README.md +0 -270
  245. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  246. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  247. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  248. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
  249. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  250. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  251. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  252. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  253. package/src/mem_pools/tx_pool/index.ts +0 -2
  254. package/src/mem_pools/tx_pool/priority.ts +0 -20
  255. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  256. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  257. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -1,4 +1,5 @@
1
1
  import { SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { DEFAULT_P2P_PROPAGATION_TIME, createPipelinedCheckpointTimingModel } from '@aztec/stdlib/timetable';
2
3
  /**
3
4
  * Maximum clock disparity tolerance for P2P message validation (in milliseconds).
4
5
  * Messages for the previous slot are accepted if we're within this many milliseconds
@@ -36,3 +37,59 @@ import { SlotNumber } from '@aztec/foundation/branded-types';
36
37
  const elapsedMs = Number(nowMs - slotStartMs);
37
38
  return elapsedMs < MAXIMUM_GOSSIP_CLOCK_DISPARITY_MS;
38
39
  }
40
+ /**
41
+ * Checks if a straggler message for the previous target slot should be accepted.
42
+ *
43
+ * Under pipelining, proposals and attestations carry the target slot N. Most of the
44
+ * time the receiver is either still in the build slot N-1 (accepted via the main
45
+ * `slotNumber === targetSlot` match) or in the target slot N (accepted via
46
+ * `slotNumber === nextSlot` when pipelining is disabled, or again via `targetSlot`
47
+ * when the receiver itself is pipelining). Stragglers that arrive after the receiver
48
+ * has rolled past the target slot fall to this check: accept `messageSlot === slotNow`
49
+ * while we're still within the first `windowSeconds + clock-disparity` of the slot.
50
+ *
51
+ * Under the early-pipelining schedule `windowSeconds` is small (0 for proposals,
52
+ * `2*p2pPropagationTime` for attestations) since the proposer collects everything
53
+ * before the slot boundary.
54
+ *
55
+ * @param messageSlot - The slot number from the received message
56
+ * @param epochCache - EpochCache to get timing and pipelining state
57
+ * @param windowSeconds - How far into the current slot we still accept previous-target messages
58
+ * @returns true if pipelining is enabled, the message is for the current wallclock slot, and we're within the grace period
59
+ */ function isWithinPipeliningWindow(messageSlot, epochCache, windowSeconds) {
60
+ if (!epochCache.isProposerPipeliningEnabled()) {
61
+ return false;
62
+ }
63
+ const currentSlot = epochCache.getSlotNow();
64
+ if (messageSlot !== currentSlot) {
65
+ return false;
66
+ }
67
+ const { ts: slotStartTs, nowMs } = epochCache.getEpochAndSlotNow();
68
+ const slotStartMs = slotStartTs * 1000n;
69
+ const elapsedMs = Number(nowMs - slotStartMs);
70
+ const windowMs = windowSeconds * 1000 + MAXIMUM_GOSSIP_CLOCK_DISPARITY_MS;
71
+ return elapsedMs < windowMs;
72
+ }
73
+ export class PipeliningWindow {
74
+ epochCache;
75
+ proposalWindowIntoTargetSlot;
76
+ attestationWindowIntoTargetSlot;
77
+ constructor(epochCache, opts = {}){
78
+ this.epochCache = epochCache;
79
+ const l1Constants = epochCache.getL1Constants();
80
+ const checkpointTiming = createPipelinedCheckpointTimingModel({
81
+ aztecSlotDuration: l1Constants.slotDuration,
82
+ ethereumSlotDuration: l1Constants.ethereumSlotDuration,
83
+ l1PublishingTime: opts.l1PublishingTime ?? l1Constants.ethereumSlotDuration,
84
+ p2pPropagationTime: opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME
85
+ });
86
+ this.proposalWindowIntoTargetSlot = checkpointTiming.proposalWindowIntoTargetSlot;
87
+ this.attestationWindowIntoTargetSlot = checkpointTiming.attestationWindowIntoTargetSlot;
88
+ }
89
+ acceptsProposal(messageSlot) {
90
+ return isWithinPipeliningWindow(messageSlot, this.epochCache, this.proposalWindowIntoTargetSlot);
91
+ }
92
+ acceptsAttestation(messageSlot) {
93
+ return isWithinPipeliningWindow(messageSlot, this.epochCache, this.attestationWindowIntoTargetSlot);
94
+ }
95
+ }
@@ -1,11 +1,13 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import type { BlockProposal, P2PValidator, ValidationResult } from '@aztec/stdlib/p2p';
2
+ import type { BlockProposal, CoordinationSignatureContext, P2PValidator, ValidationResult } from '@aztec/stdlib/p2p';
3
3
  export declare class BlockProposalValidator implements P2PValidator<BlockProposal> {
4
4
  private proposalValidator;
5
5
  constructor(epochCache: EpochCacheInterface, opts: {
6
6
  txsPermitted: boolean;
7
7
  maxTxsPerBlock?: number;
8
+ p2pPropagationTime?: number;
9
+ signatureContext: CoordinationSignatureContext;
8
10
  });
9
11
  validate(proposal: BlockProposal): Promise<ValidationResult>;
10
12
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL2Jsb2NrX3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUl2RixxQkFBYSxzQkFBdUIsWUFBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQ3hFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBb0I7SUFFN0MsWUFBWSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFO1FBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztRQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBRXBHO0lBRUssUUFBUSxDQUFDLFFBQVEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBTWpFO0NBQ0YifQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL2Jsb2NrX3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSw0QkFBNEIsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUlySCxxQkFBYSxzQkFBdUIsWUFBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQ3hFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBb0I7SUFFN0MsWUFDRSxVQUFVLEVBQUUsbUJBQW1CLEVBQy9CLElBQUksRUFBRTtRQUNKLFlBQVksRUFBRSxPQUFPLENBQUM7UUFDdEIsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3hCLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQzVCLGdCQUFnQixFQUFFLDRCQUE0QixDQUFDO0tBQ2hELEVBR0Y7SUFFSyxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FNakU7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"block_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/block_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIvF,qBAAa,sBAAuB,YAAW,YAAY,CAAC,aAAa,CAAC;IACxE,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAEpG;IAEK,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAMjE;CACF"}
1
+ {"version":3,"file":"block_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/block_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrH,qBAAa,sBAAuB,YAAW,YAAY,CAAC,aAAa,CAAC;IACxE,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,YACE,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QACJ,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,4BAA4B,CAAC;KAChD,EAGF;IAEK,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAMjE;CACF"}
@@ -1,11 +1,13 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import type { CheckpointProposal, P2PValidator, ValidationResult } from '@aztec/stdlib/p2p';
2
+ import type { CheckpointProposal, CoordinationSignatureContext, P2PValidator, ValidationResult } from '@aztec/stdlib/p2p';
3
3
  export declare class CheckpointProposalValidator implements P2PValidator<CheckpointProposal> {
4
4
  private proposalValidator;
5
5
  constructor(epochCache: EpochCacheInterface, opts: {
6
6
  txsPermitted: boolean;
7
7
  maxTxsPerBlock?: number;
8
+ p2pPropagationTime?: number;
9
+ signatureContext: CoordinationSignatureContext;
8
10
  });
9
11
  validate(proposal: CheckpointProposal): Promise<ValidationResult>;
10
12
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy9wcm9wb3NhbF92YWxpZGF0b3IvY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk1RixxQkFBYSwyQkFBNEIsWUFBVyxZQUFZLENBQUMsa0JBQWtCLENBQUM7SUFDbEYsT0FBTyxDQUFDLGlCQUFpQixDQUFvQjtJQUU3QyxZQUFZLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUU7UUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFFcEc7SUFFSyxRQUFRLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQVl0RTtDQUNGIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy9wcm9wb3NhbF92YWxpZGF0b3IvY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFDVixrQkFBa0IsRUFDbEIsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixxQkFBYSwyQkFBNEIsWUFBVyxZQUFZLENBQUMsa0JBQWtCLENBQUM7SUFDbEYsT0FBTyxDQUFDLGlCQUFpQixDQUFvQjtJQUU3QyxZQUNFLFVBQVUsRUFBRSxtQkFBbUIsRUFDL0IsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLE9BQU8sQ0FBQztRQUN0QixjQUFjLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDeEIsa0JBQWtCLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDNUIsZ0JBQWdCLEVBQUUsNEJBQTRCLENBQUM7S0FDaEQsRUFHRjtJQUVLLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBWXRFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5F,qBAAa,2BAA4B,YAAW,YAAY,CAAC,kBAAkB,CAAC;IAClF,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAEpG;IAEK,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYtE;CACF"}
1
+ {"version":3,"file":"checkpoint_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EACV,kBAAkB,EAClB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,2BAA4B,YAAW,YAAY,CAAC,kBAAkB,CAAC;IAClF,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,YACE,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QACJ,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,4BAA4B,CAAC;KAChD,EAGF;IAEK,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYtE;CACF"}
@@ -1,18 +1,22 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { type BlockProposal, type CheckpointProposalCore, type ValidationResult } from '@aztec/stdlib/p2p';
2
+ import { type BlockProposal, type CheckpointProposalCore, type CoordinationSignatureContext, type ValidationResult } from '@aztec/stdlib/p2p';
3
3
  /** Validates header-level and tx-level fields of block and checkpoint proposals. */
4
4
  export declare class ProposalValidator {
5
5
  private epochCache;
6
6
  private logger;
7
7
  private txsPermitted;
8
8
  private maxTxsPerBlock?;
9
+ private pipeliningWindow;
10
+ private signatureContext;
9
11
  constructor(epochCache: EpochCacheInterface, opts: {
10
12
  txsPermitted: boolean;
11
13
  maxTxsPerBlock?: number;
14
+ p2pPropagationTime?: number;
15
+ signatureContext: CoordinationSignatureContext;
12
16
  }, loggerName: string);
13
17
  /** Validates header-level fields: slot, signature, and proposer. */
14
18
  validate(proposal: BlockProposal | CheckpointProposalCore): Promise<ValidationResult>;
15
19
  /** Validates transaction-related fields of a block proposal. */
16
20
  validateTxs(proposal: BlockProposal): Promise<ValidationResult>;
17
21
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxzQkFBc0IsRUFFM0IsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixvRkFBb0Y7QUFDcEYscUJBQWEsaUJBQWlCO0lBQzVCLE9BQU8sQ0FBQyxVQUFVLENBQXNCO0lBQ3hDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLFlBQVksQ0FBVTtJQUM5QixPQUFPLENBQUMsY0FBYyxDQUFDLENBQVM7SUFFaEMsWUFDRSxVQUFVLEVBQUUsbUJBQW1CLEVBQy9CLElBQUksRUFBRTtRQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7UUFBQyxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQUN4RCxVQUFVLEVBQUUsTUFBTSxFQU1uQjtJQUVELG9FQUFvRTtJQUN2RCxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQWEsR0FBRyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0F3Q2pHO0lBRUQsZ0VBQWdFO0lBQ25ELFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQXdDM0U7Q0FDRiJ9
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxzQkFBc0IsRUFDM0IsS0FBSyw0QkFBNEIsRUFFakMsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixvRkFBb0Y7QUFDcEYscUJBQWEsaUJBQWlCO0lBQzVCLE9BQU8sQ0FBQyxVQUFVLENBQXNCO0lBQ3hDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLFlBQVksQ0FBVTtJQUM5QixPQUFPLENBQUMsY0FBYyxDQUFDLENBQVM7SUFDaEMsT0FBTyxDQUFDLGdCQUFnQixDQUFtQjtJQUMzQyxPQUFPLENBQUMsZ0JBQWdCLENBQStCO0lBRXZELFlBQ0UsVUFBVSxFQUFFLG1CQUFtQixFQUMvQixJQUFJLEVBQUU7UUFDSixZQUFZLEVBQUUsT0FBTyxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN4QixrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUM1QixnQkFBZ0IsRUFBRSw0QkFBNEIsQ0FBQztLQUNoRCxFQUNELFVBQVUsRUFBRSxNQUFNLEVBUW5CO0lBRUQsb0VBQW9FO0lBQ3ZELFFBQVEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxHQUFHLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQXVEakc7SUFFRCxnRUFBZ0U7SUFDbkQsV0FBVyxDQUFDLFFBQVEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBd0MzRTtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAE3B,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,oFAAoF;AACpF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,YACE,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EACxD,UAAU,EAAE,MAAM,EAMnB;IAED,oEAAoE;IACvD,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwCjG;IAED,gEAAgE;IACnD,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC3E;CACF"}
1
+ {"version":3,"file":"proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EAEjC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAI3B,oFAAoF;AACpF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAA+B;IAEvD,YACE,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QACJ,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,4BAA4B,CAAC;KAChD,EACD,UAAU,EAAE,MAAM,EAQnB;IAED,oEAAoE;IACvD,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuDjG;IAED,gEAAgE;IACnD,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC3E;CACF"}
@@ -1,26 +1,48 @@
1
1
  import { NoCommitteeError } from '@aztec/ethereum/contracts';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
- import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
4
- import { isWithinClockTolerance } from '../clock_tolerance.js';
3
+ import { PeerErrorSeverity, hasValidSignatureContext } from '@aztec/stdlib/p2p';
4
+ import { PipeliningWindow, isWithinClockTolerance } from '../clock_tolerance.js';
5
5
  /** Validates header-level and tx-level fields of block and checkpoint proposals. */ export class ProposalValidator {
6
6
  epochCache;
7
7
  logger;
8
8
  txsPermitted;
9
9
  maxTxsPerBlock;
10
+ pipeliningWindow;
11
+ signatureContext;
10
12
  constructor(epochCache, opts, loggerName){
11
13
  this.epochCache = epochCache;
12
14
  this.txsPermitted = opts.txsPermitted;
13
15
  this.maxTxsPerBlock = opts.maxTxsPerBlock;
16
+ this.pipeliningWindow = new PipeliningWindow(epochCache, {
17
+ p2pPropagationTime: opts.p2pPropagationTime
18
+ });
19
+ this.signatureContext = opts.signatureContext;
14
20
  this.logger = createLogger(loggerName);
15
21
  }
16
22
  /** Validates header-level fields: slot, signature, and proposer. */ async validate(proposal) {
17
23
  try {
18
- // Slot check: use target slots since proposals target pipeline slots (slot + 1 when pipelining)
24
+ // Cross-chain replay check: reject proposals that carry a foreign signing domain.
25
+ if (!hasValidSignatureContext(proposal, this.signatureContext)) {
26
+ this.logger.warn(`Penalizing peer for proposal with foreign signature context`, {
27
+ chainId: proposal.signatureContext.chainId,
28
+ rollupAddress: proposal.signatureContext.rollupAddress.toString(),
29
+ expectedChainId: this.signatureContext.chainId,
30
+ expectedRollupAddress: this.signatureContext.rollupAddress.toString()
31
+ });
32
+ return {
33
+ result: 'reject',
34
+ severity: PeerErrorSeverity.LowToleranceError
35
+ };
36
+ }
37
+ // Slot check: use target slots since proposals target pipeline slots (slot + 1 when pipelining).
19
38
  const { targetSlot, nextSlot } = this.epochCache.getTargetAndNextSlot();
20
39
  const slotNumber = proposal.slotNumber;
21
40
  if (slotNumber !== targetSlot && slotNumber !== nextSlot) {
22
- // Check if message is for previous slot and within clock tolerance
23
- if (!isWithinClockTolerance(slotNumber, targetSlot, this.epochCache)) {
41
+ // When pipelining, accept proposals for the current slot (built in the previous slot)
42
+ // if they're still within the shared proposal acceptance window.
43
+ if (this.pipeliningWindow.acceptsProposal(slotNumber)) {
44
+ // Fall through to remaining validation (signature, proposer, etc.)
45
+ } else if (!isWithinClockTolerance(slotNumber, targetSlot, this.epochCache)) {
24
46
  this.logger.warn(`Penalizing peer for invalid slot number ${slotNumber}`, {
25
47
  targetSlot,
26
48
  nextSlot
@@ -29,11 +51,12 @@ import { isWithinClockTolerance } from '../clock_tolerance.js';
29
51
  result: 'reject',
30
52
  severity: PeerErrorSeverity.HighToleranceError
31
53
  };
54
+ } else {
55
+ this.logger.verbose(`Ignoring proposal for previous slot ${slotNumber} within clock tolerance`);
56
+ return {
57
+ result: 'ignore'
58
+ };
32
59
  }
33
- this.logger.verbose(`Ignoring proposal for previous slot ${slotNumber} within clock tolerance`);
34
- return {
35
- result: 'ignore'
36
- };
37
60
  }
38
61
  // Signature validity
39
62
  const proposer = proposal.getSender();
@@ -10,7 +10,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
10
10
  this.archives = new Map();
11
11
  }
12
12
  async getArchiveIndices(archives) {
13
- const toCheckDb = archives.filter((n)=>!this.archives.has(n.toString())).map((n)=>n.toFr());
13
+ const toCheckDb = archives.filter((n)=>!this.archives.has(n.toString()));
14
14
  const dbHits = await this.db.findLeafIndices(MerkleTreeId.ARCHIVE, toCheckDb);
15
15
  dbHits.forEach((x, index)=>{
16
16
  if (x !== undefined) {
@@ -0,0 +1,9 @@
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
2
+ import { type Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
+ /** Validates that contract instance deployment logs contain correct addresses. */
4
+ export declare class ContractInstanceTxValidator implements TxValidator<Tx> {
5
+ #private;
6
+ constructor(bindings?: LoggerBindings);
7
+ validateTx(tx: Tx): Promise<TxValidationResult>;
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2VfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL2NvbnRyYWN0X2luc3RhbmNlX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHdkYsT0FBTyxFQUdMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLGtGQUFrRjtBQUNsRixxQkFBYSwyQkFBNEIsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdqRSxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FHcEQ7Q0FpQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_instance_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/contract_instance_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,EAGL,KAAK,EAAE,EACP,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,kFAAkF;AAClF,qBAAa,2BAA4B,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGjE,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGpD;CAiCF"}
@@ -0,0 +1,48 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { ContractInstancePublishedEvent } from '@aztec/protocol-contracts/instance-registry';
3
+ import { computeContractAddressFromInstance } from '@aztec/stdlib/contract';
4
+ import { TX_ERROR_INCORRECT_CONTRACT_ADDRESS, TX_ERROR_MALFORMED_CONTRACT_INSTANCE_LOG } from '@aztec/stdlib/tx';
5
+ /** Validates that contract instance deployment logs contain correct addresses. */ export class ContractInstanceTxValidator {
6
+ #log;
7
+ constructor(bindings){
8
+ this.#log = createLogger('p2p:tx_validator:contract_instance', bindings);
9
+ }
10
+ async validateTx(tx) {
11
+ const reason = await this.#hasCorrectContractInstanceAddresses(tx);
12
+ return reason ? {
13
+ result: 'invalid',
14
+ reason: [
15
+ reason
16
+ ]
17
+ } : {
18
+ result: 'valid'
19
+ };
20
+ }
21
+ async #hasCorrectContractInstanceAddresses(tx) {
22
+ const privateLogs = tx.data.getNonEmptyPrivateLogs();
23
+ for (const log of privateLogs){
24
+ if (!ContractInstancePublishedEvent.isContractInstancePublishedEvent(log)) {
25
+ continue;
26
+ }
27
+ let event;
28
+ try {
29
+ event = ContractInstancePublishedEvent.fromLog(log);
30
+ } catch (e) {
31
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to parse contract instance event: ${e}`);
32
+ return TX_ERROR_MALFORMED_CONTRACT_INSTANCE_LOG;
33
+ }
34
+ try {
35
+ const instance = event.toContractInstance();
36
+ const computedAddress = await computeContractAddressFromInstance(instance);
37
+ if (!computedAddress.equals(instance.address)) {
38
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: contract instance address mismatch. Claimed ${instance.address}, computed ${computedAddress}`);
39
+ return TX_ERROR_INCORRECT_CONTRACT_ADDRESS;
40
+ }
41
+ } catch (e) {
42
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to compute contract instance address: ${e}`);
43
+ return TX_ERROR_MALFORMED_CONTRACT_INSTANCE_LOG;
44
+ }
45
+ }
46
+ return undefined;
47
+ }
48
+ }
@@ -5,4 +5,4 @@ export declare class DataTxValidator implements TxValidator<Tx> {
5
5
  constructor(bindings?: LoggerBindings);
6
6
  validateTx(tx: Tx): Promise<TxValidationResult>;
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZGF0YV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFTTCxFQUFFLEVBQ0YsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIscUJBQWEsZUFBZ0IsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdyRCxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FNcEQ7Q0FtR0YifQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZGF0YV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBSXZGLE9BQU8sRUFXTCxFQUFFLEVBQ0YsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIscUJBQWEsZUFBZ0IsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdyRCxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPcEQ7Q0F1SUYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EASL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGrD,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAMpD;CAmGF"}
1
+ {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAIvF,OAAO,EAWL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGrD,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOpD;CAuIF"}
@@ -1,14 +1,16 @@
1
1
  import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS } from '@aztec/constants';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
+ import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
4
+ import { computeContractClassId } from '@aztec/stdlib/contract';
3
5
  import { computeCalldataHash } from '@aztec/stdlib/hash';
4
- import { TX_ERROR_CALLDATA_COUNT_MISMATCH, TX_ERROR_CALLDATA_COUNT_TOO_LARGE, TX_ERROR_CONTRACT_CLASS_LOGS, TX_ERROR_CONTRACT_CLASS_LOG_COUNT, TX_ERROR_CONTRACT_CLASS_LOG_LENGTH, TX_ERROR_CONTRACT_CLASS_LOG_SORTING, TX_ERROR_INCORRECT_CALLDATA, TX_ERROR_INCORRECT_HASH, Tx } from '@aztec/stdlib/tx';
6
+ import { TX_ERROR_CALLDATA_COUNT_MISMATCH, TX_ERROR_CALLDATA_COUNT_TOO_LARGE, TX_ERROR_CONTRACT_CLASS_LOGS, TX_ERROR_CONTRACT_CLASS_LOG_COUNT, TX_ERROR_CONTRACT_CLASS_LOG_LENGTH, TX_ERROR_CONTRACT_CLASS_LOG_SORTING, TX_ERROR_INCORRECT_CALLDATA, TX_ERROR_INCORRECT_CONTRACT_CLASS_ID, TX_ERROR_INCORRECT_HASH, TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG, Tx } from '@aztec/stdlib/tx';
5
7
  export class DataTxValidator {
6
8
  #log;
7
9
  constructor(bindings){
8
10
  this.#log = createLogger('p2p:tx_validator:tx_data', bindings);
9
11
  }
10
12
  async validateTx(tx) {
11
- const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx);
13
+ const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx) ?? await this.#hasCorrectContractClassIds(tx);
12
14
  return reason ? {
13
15
  result: 'invalid',
14
16
  reason: [
@@ -77,4 +79,35 @@ export class DataTxValidator {
77
79
  }
78
80
  return undefined;
79
81
  }
82
+ async #hasCorrectContractClassIds(tx) {
83
+ const contractClassLogs = tx.getContractClassLogs();
84
+ for (const log of contractClassLogs){
85
+ if (!ContractClassPublishedEvent.isContractClassPublishedEvent(log)) {
86
+ continue;
87
+ }
88
+ let event;
89
+ try {
90
+ event = ContractClassPublishedEvent.fromLog(log);
91
+ } catch (e) {
92
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to parse contract class event: ${e}`);
93
+ return TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG;
94
+ }
95
+ try {
96
+ const { publicBytecodeCommitment } = await event.toContractClassPublicWithBytecodeCommitment();
97
+ const computedClassId = await computeContractClassId({
98
+ artifactHash: event.artifactHash,
99
+ privateFunctionsRoot: event.privateFunctionsRoot,
100
+ publicBytecodeCommitment
101
+ });
102
+ if (!computedClassId.equals(event.contractClassId)) {
103
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: contract class id mismatch. Claimed ${event.contractClassId}, computed ${computedClassId}`);
104
+ return TX_ERROR_INCORRECT_CONTRACT_CLASS_ID;
105
+ }
106
+ } catch (e) {
107
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to compute contract class id: ${e}`);
108
+ return TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG;
109
+ }
110
+ }
111
+ return undefined;
112
+ }
80
113
  }
@@ -136,7 +136,7 @@ export declare function createTxValidatorForTransactionsEnteringPendingTxPool(wo
136
136
  rollupManaLimit?: number;
137
137
  maxBlockL2Gas?: number;
138
138
  maxBlockDAGas?: number;
139
- }, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
139
+ }, gasFees: GasFees, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
140
140
  /**
141
141
  * Creates a function that checks whether a tx's setup-phase calls are on the allow list.
142
142
  *
@@ -145,4 +145,4 @@ export declare function createTxValidatorForTransactionsEnteringPendingTxPool(wo
145
145
  * migration validator can check it without needing the full Tx or its dependencies.
146
146
  */
147
147
  export declare function createCheckAllowedSetupCalls(contractDataSource: ContractDataSource, setupAllowList: AllowedElement[], getTimestamp: () => UInt64): (tx: Tx) => Promise<boolean>;
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTVELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFlNUU7Ozs7R0FJRztBQUNILE1BQU0sV0FBVyxvQkFBb0I7SUFDbkMsU0FBUyxFQUFFO1FBQ1QsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDakQsQ0FBQztJQUNGLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQztDQUM3QjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLG9EQUFvRCxDQUNsRSxTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsV0FBVyxFQUN4QixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFDaEIsU0FBUyxFQUFFLE1BQU0sRUFDakIsYUFBYSxFQUFFLE1BQU0sRUFDckIscUJBQXFCLEVBQUUsRUFBRSxFQUN6QixrQkFBa0IsRUFBRSxrQkFBa0IsRUFDdEMsWUFBWSxFQUFFLE9BQU8sRUFDckIsY0FBYyxHQUFFLGNBQWMsRUFBTyxFQUNyQyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBQ3pCLFlBQVksQ0FBQyxFQUFFO0lBQUUsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsR0FDMUYsTUFBTSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQXNFdEM7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBZ0IscURBQXFELENBQ25FLGFBQWEsRUFBRSw2QkFBNkIsRUFDNUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixNQUFNLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBT3RDO0FBbUNEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDBDQUEwQyxDQUN4RCxRQUFRLEVBQUUsNkJBQTZCLEVBQ3ZDLEVBQ0UsU0FBUyxFQUNULGFBQWEsRUFDZCxFQUFFO0lBQ0QsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixhQUFhLEVBQUUsTUFBTSxDQUFDO0NBQ3ZCLEVBQ0QsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixXQUFXLENBRWI7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLDRDQUE0QyxDQUMxRCxRQUFRLEVBQUUsNkJBQTZCLEVBQ3ZDLEVBQ0UsU0FBUyxFQUNULGFBQWEsRUFDZCxFQUFFO0lBQ0QsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixhQUFhLEVBQUUsTUFBTSxDQUFDO0NBQ3ZCLEVBQ0QsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixXQUFXLENBRWI7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQix1Q0FBdUMsQ0FDckQsRUFBRSxFQUFFLHdCQUF3QixFQUM1QixrQkFBa0IsRUFBRSxrQkFBa0IsRUFDdEMsUUFBUSxFQUFFLDZCQUE2QixHQUFHLFNBQVMsRUFDbkQsRUFDRSxTQUFTLEVBQ1QsYUFBYSxFQUNiLGNBQWMsRUFDZCxPQUFPLEVBQ1Asa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGVBQWUsRUFDZixhQUFhLEVBQ2IsYUFBYSxFQUNkLEVBQUU7SUFDRCxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsY0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDakIsa0JBQWtCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLFlBQVksRUFBRSxPQUFPLENBQUM7SUFDdEIsZUFBZSxFQUFFLE1BQU0sQ0FBQztJQUN4QixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdkIsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3hCLEVBQ0QsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixXQUFXLENBQUMsRUFBRSxDQUFDLENBeUNqQjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0IsaUNBQWlDLENBQy9DLEVBQUUsRUFBRSx3QkFBd0IsRUFDNUIsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFDaEMsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4Qix3QkFBd0IsQ0FpQjFCO0FBMkJEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHdCQUFzQixxREFBcUQsQ0FDekUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLFlBQVksRUFBRTtJQUFFLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQzFGLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQXFCbEM7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBZ0IsNEJBQTRCLENBQzFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUN0QyxjQUFjLEVBQUUsY0FBYyxFQUFFLEVBQ2hDLFlBQVksRUFBRSxNQUFNLE1BQU0sR0FDekIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FNOUIifQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTVELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFnQjVFOzs7O0dBSUc7QUFDSCxNQUFNLFdBQVcsb0JBQW9CO0lBQ25DLFNBQVMsRUFBRTtRQUNULFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQ2pELENBQUM7SUFDRixRQUFRLEVBQUUsaUJBQWlCLENBQUM7Q0FDN0I7QUFFRDs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/factory.ts"],"names":[],"mappings":"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"}
@@ -36,9 +36,10 @@ import { DatabasePublicStateSource, MerkleTreeId } from '@aztec/stdlib/trees';
36
36
  import { AggregateTxValidator } from './aggregate_tx_validator.js';
37
37
  import { ArchiveCache } from './archive_cache.js';
38
38
  import { BlockHeaderTxValidator } from './block_header_validator.js';
39
+ import { ContractInstanceTxValidator } from './contract_instance_validator.js';
39
40
  import { DataTxValidator } from './data_validator.js';
40
41
  import { DoubleSpendTxValidator } from './double_spend_validator.js';
41
- import { GasLimitsValidator, GasTxValidator } from './gas_validator.js';
42
+ import { GasLimitsValidator, GasTxValidator, MaxFeePerGasValidator } from './gas_validator.js';
42
43
  import { MetadataTxValidator } from './metadata_validator.js';
43
44
  import { NullifierCache } from './nullifier_cache.js';
44
45
  import { AllowedSetupCallsMetaValidator, PhasesTxValidator } from './phases_validator.js';
@@ -106,6 +107,10 @@ import { TxProofValidator } from './tx_proof_validator.js';
106
107
  dataValidator: {
107
108
  validator: new DataTxValidator(bindings),
108
109
  severity: PeerErrorSeverity.MidToleranceError
110
+ },
111
+ contractInstanceValidator: {
112
+ validator: new ContractInstanceTxValidator(bindings),
113
+ severity: PeerErrorSeverity.MidToleranceError
109
114
  }
110
115
  };
111
116
  }
@@ -134,7 +139,7 @@ import { TxProofValidator } from './tx_proof_validator.js';
134
139
  rollupVersion: new Fr(rollupVersion),
135
140
  protocolContractsHash,
136
141
  vkTreeRoot: getVKTreeRoot()
137
- }, bindings), new SizeTxValidator(bindings), new DataTxValidator(bindings), new TxProofValidator(verifier, bindings));
142
+ }, bindings), new SizeTxValidator(bindings), new DataTxValidator(bindings), new ContractInstanceTxValidator(bindings), new TxProofValidator(verifier, bindings));
138
143
  }
139
144
  /**
140
145
  * Validators for txs received via req/resp or filestores.
@@ -179,7 +184,8 @@ import { TxProofValidator } from './tx_proof_validator.js';
179
184
  new PhasesTxValidator(contractDataSource, setupAllowList, timestamp, bindings),
180
185
  new BlockHeaderTxValidator(new ArchiveCache(db), bindings),
181
186
  new DoubleSpendTxValidator(new NullifierCache(db), bindings),
182
- new DataTxValidator(bindings)
187
+ new DataTxValidator(bindings),
188
+ new ContractInstanceTxValidator(bindings)
183
189
  ];
184
190
  if (!skipFeeEnforcement) {
185
191
  validators.push(new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, gasFees, bindings, {
@@ -228,7 +234,7 @@ function createTxValidatorForValidatingAgainstCurrentState(nullifierSource, arch
228
234
  *
229
235
  * Operates on `TxMetaData` rather than full `Tx` since metadata is pre-built by the pool.
230
236
  * Injected into `TxPoolV2` as the `createTxValidator` factory in `TxPoolV2Dependencies`.
231
- */ export async function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, timestamp, blockNumber, gasLimitOpts, bindings) {
237
+ */ export async function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, timestamp, blockNumber, gasLimitOpts, gasFees, bindings) {
232
238
  await worldStateSynchronizer.syncImmediate();
233
239
  const merkleTree = worldStateSynchronizer.getCommitted();
234
240
  const nullifierSource = {
@@ -245,7 +251,7 @@ function createTxValidatorForValidatingAgainstCurrentState(nullifierSource, arch
245
251
  return new AggregateTxValidator(new GasLimitsValidator({
246
252
  ...gasLimitOpts,
247
253
  bindings
248
- }), new TimestampTxValidator({
254
+ }), new MaxFeePerGasValidator(gasFees, bindings), new TimestampTxValidator({
249
255
  timestamp,
250
256
  blockNumber
251
257
  }, bindings), new DoubleSpendTxValidator(nullifierSource, bindings), new BlockHeaderTxValidator(archiveSource, bindings), new AllowedSetupCallsMetaValidator(bindings));
@@ -19,6 +19,21 @@ export interface HasGasLimitData {
19
19
  };
20
20
  };
21
21
  }
22
+ /** Structural interface for types that carry max fee per gas data, used by {@link MaxFeePerGasValidator}. */
23
+ export interface HasMaxFeePerGasData {
24
+ txHash: {
25
+ toString(): string;
26
+ };
27
+ data: {
28
+ constants: {
29
+ txContext: {
30
+ gasSettings: {
31
+ maxFeesPerGas: GasFees;
32
+ };
33
+ };
34
+ };
35
+ };
36
+ }
22
37
  /**
23
38
  * Validates that a transaction's gas limits are within acceptable bounds.
24
39
  *
@@ -43,15 +58,32 @@ export declare class GasLimitsValidator<T extends HasGasLimitData> implements Tx
43
58
  /** Checks gas limits are >= fixed minimums and <= effective max gas (L2 and DA). */
44
59
  validateGasLimit(tx: T): TxValidationResult;
45
60
  }
61
+ /**
62
+ * Validates that a transaction's max fee per gas meets the current block's gas fees.
63
+ *
64
+ * Rejects transactions whose maxFeesPerGas is below the current block's gas fees
65
+ * on either dimension (DA or L2). This is a cheap, stateless check.
66
+ *
67
+ * Generic over T so it can validate both full {@link Tx} objects and {@link TxMetaData}
68
+ * (used during pending pool migration).
69
+ *
70
+ * Used by: pending pool migration (via factory), and indirectly by {@link GasTxValidator}.
71
+ */
72
+ export declare class MaxFeePerGasValidator<T extends HasMaxFeePerGasData> implements TxValidator<T> {
73
+ #private;
74
+ constructor(gasFees: GasFees, bindings?: LoggerBindings);
75
+ validateTx(tx: T): Promise<TxValidationResult>;
76
+ /** Checks maxFeesPerGas >= current block gas fees on both dimensions. */
77
+ validateMaxFeePerGas(tx: T): TxValidationResult;
78
+ }
46
79
  /**
47
80
  * Validates that a transaction can pay its gas fees.
48
81
  *
49
82
  * Runs three checks in order:
50
83
  * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
51
84
  * out of bounds.
52
- * 2. **Max fee per gas** — skips (not rejects) the tx if its maxFeesPerGas is below
53
- * the current block's gas fees. We skip rather than reject because the tx may
54
- * become eligible in a later block with lower fees.
85
+ * 2. **Max fee per gas** — rejects the tx if its maxFeesPerGas is below
86
+ * the current block's gas fees.
55
87
  * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
56
88
  * adds any pending claim from a setup-phase `_increase_public_balance` call, and
57
89
  * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
@@ -73,4 +105,4 @@ export declare class GasTxValidator implements TxValidator<Tx> {
73
105
  */
74
106
  validateTxFee(tx: Tx): Promise<TxValidationResult>;
75
107
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUtMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBSTFCLG9HQUFvRztBQUNwRyxNQUFNLFdBQVcsZUFBZTtJQUM5QixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFFSixTQUFTLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDcEIsU0FBUyxFQUFFO1lBQ1QsU0FBUyxFQUFFO2dCQUNULFdBQVcsRUFBRTtvQkFBRSxTQUFTLEVBQUUsR0FBRyxDQUFBO2lCQUFFLENBQUM7YUFDakMsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHFCQUFhLGtCQUFrQixDQUFDLENBQUMsU0FBUyxlQUFlLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQVFsRixZQUFZLElBQUksQ0FBQyxFQUFFO1FBQ2pCLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN6QixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDdkIsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQztLQUMzQixFQU9BO0lBRUQsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBRTdDO0lBRUQsb0ZBQW9GO0lBQ3BGLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBbUMxQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxxQkFBYSxjQUFlLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFXbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUpuQixZQUNFLGdCQUFnQixFQUFFLGlCQUFpQixFQUNuQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixPQUFPLEVBQUUsT0FBTyxFQUNSLFFBQVEsQ0FBQyw0QkFBZ0IsRUFDakMsSUFBSSxDQUFDLEVBQUU7UUFBRSxlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxhQUFhLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQU9wRjtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQVlwRDtJQXlCRDs7O09BR0c7SUFDVSxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0F5QjlEO0NBQ0YifQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUtMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBSTFCLG9HQUFvRztBQUNwRyxNQUFNLFdBQVcsZUFBZTtJQUM5QixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFFSixTQUFTLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDcEIsU0FBUyxFQUFFO1lBQ1QsU0FBUyxFQUFFO2dCQUNULFdBQVcsRUFBRTtvQkFBRSxTQUFTLEVBQUUsR0FBRyxDQUFBO2lCQUFFLENBQUM7YUFDakMsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCw2R0FBNkc7QUFDN0csTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyxNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFDSixTQUFTLEVBQUU7WUFDVCxTQUFTLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFO29CQUFFLGFBQWEsRUFBRSxPQUFPLENBQUE7aUJBQUUsQ0FBQzthQUN6QyxDQUFDO1NBQ0gsQ0FBQztLQUNILENBQUM7Q0FDSDtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gscUJBQWEsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLGVBQWUsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7O0lBUWxGLFlBQVksSUFBSSxDQUFDLEVBQUU7UUFDakIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3pCLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN2QixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDdkIsUUFBUSxDQUFDLEVBQUUsY0FBYyxDQUFDO0tBQzNCLEVBT0E7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FFN0M7SUFFRCxvRkFBb0Y7SUFDcEYsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0E4QzFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gscUJBQWEscUJBQXFCLENBQUMsQ0FBQyxTQUFTLG1CQUFtQixDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQzs7SUFJekYsWUFBWSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHdEQ7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FFN0M7SUFFRCx5RUFBeUU7SUFDekUsb0JBQW9CLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FrQjlDO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLFdBQVcsQ0FBQyxFQUFFLENBQUM7O0lBV2xELE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFKbkIsWUFDRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFDbkMsZUFBZSxFQUFFLFlBQVksRUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFDUixRQUFRLENBQUMsNEJBQWdCLEVBQ2pDLElBQUksQ0FBQyxFQUFFO1FBQUUsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFPcEY7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FhcEQ7SUFFRDs7O09BR0c7SUFDVSxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0E0QjlEO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"gas_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/gas_validator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAKL,KAAK,EAAE,EACP,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAI1B,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QAEJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE;YACT,SAAS,EAAE;gBACT,WAAW,EAAE;oBAAE,SAAS,EAAE,GAAG,CAAA;iBAAE,CAAC;aACjC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,eAAe,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAQlF,YAAY,IAAI,CAAC,EAAE;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;KAC3B,EAOA;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7C;IAED,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAmC1C;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,YAAW,WAAW,CAAC,EAAE,CAAC;;IAWlD,OAAO,CAAC,QAAQ,CAAC;IAJnB,YACE,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,OAAO,EACR,QAAQ,CAAC,4BAAgB,EACjC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAOpF;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYpD;IAyBD;;;OAGG;IACU,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyB9D;CACF"}
1
+ {"version":3,"file":"gas_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/gas_validator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAKL,KAAK,EAAE,EACP,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAI1B,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QAEJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE;YACT,SAAS,EAAE;gBACT,WAAW,EAAE;oBAAE,SAAS,EAAE,GAAG,CAAA;iBAAE,CAAC;aACjC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,6GAA6G;AAC7G,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,SAAS,EAAE;gBACT,WAAW,EAAE;oBAAE,aAAa,EAAE,OAAO,CAAA;iBAAE,CAAC;aACzC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,eAAe,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAQlF,YAAY,IAAI,CAAC,EAAE;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;KAC3B,EAOA;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7C;IAED,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CA8C1C;CACF;AAED;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB,CAAC,CAAC,SAAS,mBAAmB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIzF,YAAY,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGtD;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7C;IAED,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAkB9C;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,YAAW,WAAW,CAAC,EAAE,CAAC;;IAWlD,OAAO,CAAC,QAAQ,CAAC;IAJnB,YACE,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,OAAO,EACR,QAAQ,CAAC,4BAAgB,EACjC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAOpF;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAapD;IAED;;;OAGG;IACU,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4B9D;CACF"}