@aztec/p2p 0.0.1-commit.ff7989d6c → 0.0.1-commit.fff30aa

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 (200) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +4 -5
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +29 -28
  5. package/dest/client/interface.d.ts +6 -13
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +5 -13
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +19 -88
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +1 -2
  11. package/dest/config.d.ts +32 -11
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +85 -31
  14. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  15. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  16. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +2 -1
  17. package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
  18. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  19. package/dest/mem_pools/tx_pool/priority.js +4 -4
  20. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  21. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  22. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  23. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  24. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  25. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +3 -2
  26. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
  27. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  28. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +2 -0
  29. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +7 -1
  30. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  31. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  32. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +1 -1
  33. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  34. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +8 -6
  35. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +2 -2
  36. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  38. package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
  39. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/index.js +1 -1
  41. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +9 -7
  42. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/interfaces.js +1 -1
  44. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +46 -8
  45. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +81 -17
  47. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
  48. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +9 -10
  50. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +5 -3
  51. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +3 -0
  53. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +2 -2
  54. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +50 -40
  56. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  57. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  59. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  60. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  61. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  62. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  63. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  64. package/dest/msg_validators/proposal_validator/proposal_validator.js +48 -36
  65. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
  66. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  67. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  68. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  69. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  70. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  71. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  72. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  73. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  74. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  75. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  76. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  77. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  78. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  79. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  80. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  81. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  82. package/dest/msg_validators/tx_validator/factory.js +247 -60
  83. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  84. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  86. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  87. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  88. package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
  89. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  90. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  91. package/dest/msg_validators/tx_validator/index.js +2 -0
  92. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  93. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  94. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  95. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  96. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  97. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  98. package/dest/services/dummy_service.d.ts +2 -3
  99. package/dest/services/dummy_service.d.ts.map +1 -1
  100. package/dest/services/dummy_service.js +1 -4
  101. package/dest/services/encoding.d.ts +6 -2
  102. package/dest/services/encoding.d.ts.map +1 -1
  103. package/dest/services/encoding.js +14 -8
  104. package/dest/services/libp2p/libp2p_service.d.ts +15 -13
  105. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  106. package/dest/services/libp2p/libp2p_service.js +92 -92
  107. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  108. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  109. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  110. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  111. package/dest/services/reqresp/reqresp.d.ts +1 -1
  112. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  113. package/dest/services/reqresp/reqresp.js +17 -9
  114. package/dest/services/service.d.ts +2 -2
  115. package/dest/services/service.d.ts.map +1 -1
  116. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  117. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  118. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  119. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  120. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  121. package/dest/services/tx_collection/tx_source.js +9 -7
  122. package/dest/services/tx_provider.d.ts +3 -3
  123. package/dest/services/tx_provider.d.ts.map +1 -1
  124. package/dest/services/tx_provider.js +4 -4
  125. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  126. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  127. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  128. package/dest/test-helpers/mock-pubsub.d.ts +2 -3
  129. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  130. package/dest/test-helpers/mock-pubsub.js +2 -2
  131. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  132. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  133. package/dest/test-helpers/reqresp-nodes.js +2 -2
  134. package/dest/test-helpers/testbench-utils.d.ts +2 -2
  135. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  136. package/dest/test-helpers/testbench-utils.js +2 -1
  137. package/dest/testbench/p2p_client_testbench_worker.js +7 -6
  138. package/dest/testbench/worker_client_manager.d.ts +3 -1
  139. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  140. package/dest/testbench/worker_client_manager.js +4 -1
  141. package/package.json +14 -14
  142. package/src/client/factory.ts +49 -46
  143. package/src/client/interface.ts +5 -19
  144. package/src/client/p2p_client.ts +20 -118
  145. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +1 -2
  146. package/src/config.ts +124 -34
  147. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  148. package/src/mem_pools/tx_pool/priority.ts +4 -4
  149. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  150. package/src/mem_pools/tx_pool_v2/README.md +9 -1
  151. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +3 -2
  152. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -0
  153. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
  154. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +2 -2
  155. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +15 -6
  156. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +2 -1
  157. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  158. package/src/mem_pools/tx_pool_v2/interfaces.ts +9 -7
  159. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +113 -18
  160. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +11 -11
  161. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +14 -2
  162. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +57 -39
  163. package/src/msg_validators/attestation_validator/README.md +49 -0
  164. package/src/msg_validators/proposal_validator/README.md +123 -0
  165. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  166. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  167. package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -40
  168. package/src/msg_validators/tx_validator/README.md +119 -0
  169. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
  170. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  171. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  172. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  173. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  174. package/src/msg_validators/tx_validator/factory.ts +394 -78
  175. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  176. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  177. package/src/msg_validators/tx_validator/index.ts +2 -0
  178. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  179. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  180. package/src/services/dummy_service.ts +1 -5
  181. package/src/services/encoding.ts +14 -7
  182. package/src/services/libp2p/libp2p_service.ts +106 -101
  183. package/src/services/reqresp/README.md +229 -0
  184. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  185. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  186. package/src/services/reqresp/reqresp.ts +19 -11
  187. package/src/services/service.ts +1 -1
  188. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  189. package/src/services/tx_collection/tx_source.ts +8 -7
  190. package/src/services/tx_provider.ts +2 -2
  191. package/src/test-helpers/make-test-p2p-clients.ts +0 -2
  192. package/src/test-helpers/mock-pubsub.ts +3 -6
  193. package/src/test-helpers/reqresp-nodes.ts +2 -5
  194. package/src/test-helpers/testbench-utils.ts +2 -1
  195. package/src/testbench/p2p_client_testbench_worker.ts +3 -6
  196. package/src/testbench/worker_client_manager.ts +11 -4
  197. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  198. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  199. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  200. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -1,22 +1,119 @@
1
- import { AVM_MAX_PROCESSABLE_L2_GAS, FIXED_DA_GAS, FIXED_L2_GAS } from '@aztec/constants';
1
+ import { MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, 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
+ #effectiveMaxL2Gas;
21
+ #effectiveMaxDAGas;
22
+ #rollupManaLimit;
23
+ #maxBlockL2Gas;
24
+ #maxBlockDAGas;
25
+ constructor(opts){
26
+ this.#log = createLogger('sequencer:tx_validator:tx_gas', opts?.bindings);
27
+ this.#rollupManaLimit = opts?.rollupManaLimit ?? Infinity;
28
+ this.#maxBlockL2Gas = opts?.maxBlockL2Gas ?? Infinity;
29
+ this.#maxBlockDAGas = opts?.maxBlockDAGas ?? Infinity;
30
+ this.#effectiveMaxL2Gas = Math.min(MAX_PROCESSABLE_L2_GAS, this.#rollupManaLimit, this.#maxBlockL2Gas);
31
+ this.#effectiveMaxDAGas = Math.min(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, this.#maxBlockDAGas);
32
+ }
33
+ validateTx(tx) {
34
+ return Promise.resolve(this.validateGasLimit(tx));
35
+ }
36
+ /** Checks gas limits are >= fixed minimums and <= effective max gas (L2 and DA). */ validateGasLimit(tx) {
37
+ const gasLimits = tx.data.constants.txContext.gasSettings.gasLimits;
38
+ const minGasLimits = new Gas(TX_DA_GAS_OVERHEAD, tx.data.forPublic ? PUBLIC_TX_L2_GAS_OVERHEAD : PRIVATE_TX_L2_GAS_OVERHEAD);
39
+ if (minGasLimits.gtAny(gasLimits)) {
40
+ this.#log.verbose(`Rejecting transaction due to the gas limit(s) not being above the minimum gas limit`, {
41
+ gasLimits,
42
+ minGasLimits
43
+ });
44
+ return {
45
+ result: 'invalid',
46
+ reason: [
47
+ TX_ERROR_INSUFFICIENT_GAS_LIMIT
48
+ ]
49
+ };
50
+ }
51
+ if (gasLimits.l2Gas > this.#effectiveMaxL2Gas) {
52
+ this.#log.verbose(`Rejecting transaction due to the L2 gas limit being higher than the effective maximum`, {
53
+ gasLimits,
54
+ effectiveMaxL2Gas: this.#effectiveMaxL2Gas,
55
+ rollupManaLimit: this.#rollupManaLimit,
56
+ maxBlockL2Gas: this.#maxBlockL2Gas
57
+ });
58
+ return {
59
+ result: 'invalid',
60
+ reason: [
61
+ TX_ERROR_GAS_LIMIT_TOO_HIGH
62
+ ]
63
+ };
64
+ }
65
+ if (gasLimits.daGas > this.#effectiveMaxDAGas) {
66
+ this.#log.verbose(`Rejecting transaction due to the DA gas limit being higher than the effective maximum`, {
67
+ gasLimits,
68
+ effectiveMaxDAGas: this.#effectiveMaxDAGas,
69
+ maxBlockDAGas: this.#maxBlockDAGas
70
+ });
71
+ return {
72
+ result: 'invalid',
73
+ reason: [
74
+ TX_ERROR_GAS_LIMIT_TOO_HIGH
75
+ ]
76
+ };
77
+ }
78
+ return {
79
+ result: 'valid'
80
+ };
81
+ }
82
+ }
83
+ /**
84
+ * Validates that a transaction can pay its gas fees.
85
+ *
86
+ * Runs three checks in order:
87
+ * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
88
+ * out of bounds.
89
+ * 2. **Max fee per gas** — skips (not rejects) the tx if its maxFeesPerGas is below
90
+ * the current block's gas fees. We skip rather than reject because the tx may
91
+ * become eligible in a later block with lower fees.
92
+ * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
93
+ * adds any pending claim from a setup-phase `_increase_public_balance` call, and
94
+ * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
95
+ *
96
+ * Used by: gossip (stage 1), RPC, and block building validators.
97
+ */ export class GasTxValidator {
98
+ bindings;
8
99
  #log;
9
100
  #publicDataSource;
10
101
  #feeJuiceAddress;
11
102
  #gasFees;
12
- constructor(publicDataSource, feeJuiceAddress, gasFees, bindings){
103
+ #gasLimitOpts;
104
+ constructor(publicDataSource, feeJuiceAddress, gasFees, bindings, opts){
105
+ this.bindings = bindings;
13
106
  this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
14
107
  this.#publicDataSource = publicDataSource;
15
108
  this.#feeJuiceAddress = feeJuiceAddress;
16
109
  this.#gasFees = gasFees;
110
+ this.#gasLimitOpts = opts;
17
111
  }
18
112
  async validateTx(tx) {
19
- const gasLimitValidation = this.#validateGasLimit(tx);
113
+ const gasLimitValidation = new GasLimitsValidator({
114
+ ...this.#gasLimitOpts,
115
+ bindings: this.bindings
116
+ }).validateGasLimit(tx);
20
117
  if (gasLimitValidation.result === 'invalid') {
21
118
  return Promise.resolve(gasLimitValidation);
22
119
  }
@@ -49,39 +146,9 @@ export class GasTxValidator {
49
146
  return notEnoughMaxFees;
50
147
  }
51
148
  /**
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) {
149
+ * Checks the fee payer has enough FeeJuice balance to cover the tx's fee limit.
150
+ * Accounts for any pending claim from a setup-phase `_increase_public_balance` call.
151
+ */ async validateTxFee(tx) {
85
152
  const feePayer = tx.data.feePayer;
86
153
  // Compute the maximum fee that this tx may pay, based on its gasLimits and maxFeePerGas
87
154
  const feeLimit = getTxFeeLimit(tx);
@@ -8,8 +8,10 @@ export * from './gas_validator.js';
8
8
  export * from './phases_validator.js';
9
9
  export * from './test_utils.js';
10
10
  export * from './allowed_public_setup.js';
11
+ export * from './allowed_setup_helpers.js';
11
12
  export * from './archive_cache.js';
12
13
  export * from './tx_permitted_validator.js';
13
14
  export * from './timestamp_validator.js';
14
15
  export * from './size_validator.js';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDIn0=
16
+ export * from './factory.js';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUMifQ==
@@ -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,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
@@ -8,7 +8,9 @@ export * from './gas_validator.js';
8
8
  export * from './phases_validator.js';
9
9
  export * from './test_utils.js';
10
10
  export * from './allowed_public_setup.js';
11
+ export * from './allowed_setup_helpers.js';
11
12
  export * from './archive_cache.js';
12
13
  export * from './tx_permitted_validator.js';
13
14
  export * from './timestamp_validator.js';
14
15
  export * from './size_validator.js';
16
+ 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
+ }
@@ -10,6 +10,26 @@ export declare class PhasesTxValidator implements TxValidator<Tx> {
10
10
  private contractsDB;
11
11
  constructor(contracts: ContractDataSource, setupAllowList: AllowedElement[], timestamp: UInt64, bindings?: LoggerBindings);
12
12
  validateTx(tx: Tx): Promise<TxValidationResult>;
13
- private isOnAllowList;
13
+ private checkAllowList;
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9waGFzZXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFJTCxFQUFFLEVBRUYsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQscUJBQWEsaUJBQWtCLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFNckQsT0FBTyxDQUFDLGNBQWM7SUFDdEIsT0FBTyxDQUFDLFNBQVM7SUFMbkIsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFFdkMsWUFDRSxTQUFTLEVBQUUsa0JBQWtCLEVBQ3JCLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFDaEMsU0FBUyxFQUFFLE1BQU0sRUFDekIsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUkxQjtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQXFDcEQ7WUFFYSxhQUFhO0NBaUQ1QiJ9
15
+ /** Structural interface for the allowed-setup-calls flag check. */
16
+ export interface HasAllowedSetupCallsData {
17
+ txHash: {
18
+ toString(): string;
19
+ };
20
+ allowedSetupCalls: boolean;
21
+ }
22
+ /**
23
+ * Validates that a transaction's setup-phase calls were allowed at receipt time.
24
+ *
25
+ * Checks the precomputed `allowedSetupCalls` flag on TxMetaData. The flag is
26
+ * computed by running the PhasesTxValidator on the full Tx when it first enters
27
+ * the pool. This lightweight validator is used during pending pool migration to
28
+ * reject txs whose setup calls are not on the allow list.
29
+ */
30
+ export declare class AllowedSetupCallsMetaValidator<T extends HasAllowedSetupCallsData> implements TxValidator<T> {
31
+ #private;
32
+ constructor(bindings?: LoggerBindings);
33
+ validateTx(tx: T): Promise<TxValidationResult>;
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9waGFzZXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFRTCxFQUFFLEVBRUYsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQscUJBQWEsaUJBQWtCLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFNckQsT0FBTyxDQUFDLGNBQWM7SUFDdEIsT0FBTyxDQUFDLFNBQVM7SUFMbkIsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFFdkMsWUFDRSxTQUFTLEVBQUUsa0JBQWtCLEVBQ3JCLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFDaEMsU0FBUyxFQUFFLE1BQU0sRUFDekIsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUkxQjtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQXNDcEQ7WUFHYSxjQUFjO0NBa0U3QjtBQUVELG1FQUFtRTtBQUNuRSxNQUFNLFdBQVcsd0JBQXdCO0lBQ3ZDLE1BQU0sRUFBRTtRQUFFLFFBQVEsSUFBSSxNQUFNLENBQUE7S0FBRSxDQUFDO0lBQy9CLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztDQUM1QjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSw4QkFBOEIsQ0FBQyxDQUFDLFNBQVMsd0JBQXdCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUd2RyxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FNN0M7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAIL,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAMrD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,WAAW,CAAoB;IAEvC,YACE,SAAS,EAAE,kBAAkB,EACrB,cAAc,EAAE,cAAc,EAAE,EAChC,SAAS,EAAE,MAAM,EACzB,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqCpD;YAEa,aAAa;CAiD5B"}
1
+ {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAQL,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAMrD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,WAAW,CAAoB;IAEvC,YACE,SAAS,EAAE,kBAAkB,EACrB,cAAc,EAAE,cAAc,EAAE,EAChC,SAAS,EAAE,MAAM,EACzB,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsCpD;YAGa,cAAc;CAkE7B;AAED,mEAAmE;AACnE,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,qBAAa,8BAA8B,CAAC,CAAC,SAAS,wBAAwB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAGvG,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAM7C;CACF"}
@@ -1,6 +1,8 @@
1
+ import { NULL_MSG_SENDER_CONTRACT_ADDRESS } from '@aztec/constants';
1
2
  import { createLogger } from '@aztec/foundation/log';
2
3
  import { PublicContractsDB, getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
3
- import { TX_ERROR_DURING_VALIDATION, TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED, TxExecutionPhase } from '@aztec/stdlib/tx';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import { TX_ERROR_DURING_VALIDATION, TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED, TX_ERROR_SETUP_FUNCTION_UNKNOWN_CONTRACT, TX_ERROR_SETUP_NULL_MSG_SENDER, TX_ERROR_SETUP_ONLY_SELF_WRONG_SENDER, TX_ERROR_SETUP_WRONG_CALLDATA_LENGTH, TxExecutionPhase } from '@aztec/stdlib/tx';
4
6
  export class PhasesTxValidator {
5
7
  setupAllowList;
6
8
  timestamp;
@@ -19,7 +21,7 @@ export class PhasesTxValidator {
19
21
  // which are needed for public FPC flows, but fail if the account contract hasnt been deployed yet,
20
22
  // which is what we're trying to do as part of the current txs.
21
23
  // We only need to create/revert checkpoint here because of this addNewContracts call.
22
- await this.contractsDB.addNewContracts(tx);
24
+ this.contractsDB.addNewContracts(tx);
23
25
  if (!tx.data.forPublic) {
24
26
  this.#log.debug(`Tx ${tx.getTxHash().toString()} does not contain enqueued public functions. Skipping phases validation.`);
25
27
  return {
@@ -28,14 +30,15 @@ export class PhasesTxValidator {
28
30
  }
29
31
  const setupFns = getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP);
30
32
  for (const setupFn of setupFns){
31
- if (!await this.isOnAllowList(setupFn, this.setupAllowList)) {
33
+ const rejectionReason = await this.checkAllowList(setupFn, this.setupAllowList);
34
+ if (rejectionReason) {
32
35
  this.#log.verbose(`Rejecting tx ${tx.getTxHash().toString()} because it calls setup function not on allow list: ${setupFn.request.contractAddress}:${setupFn.functionSelector}`, {
33
36
  allowList: this.setupAllowList
34
37
  });
35
38
  return {
36
39
  result: 'invalid',
37
40
  reason: [
38
- TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED
41
+ rejectionReason
39
42
  ]
40
43
  };
41
44
  }
@@ -55,39 +58,84 @@ export class PhasesTxValidator {
55
58
  this.contractsDB.revertCheckpoint();
56
59
  }
57
60
  }
58
- async isOnAllowList(publicCall, allowList) {
61
+ /** Returns a rejection reason if the call is not on the allow list, or undefined if it is allowed. */ async checkAllowList(publicCall, allowList) {
59
62
  if (publicCall.isEmpty()) {
60
- return true;
63
+ return undefined;
61
64
  }
62
65
  const contractAddress = publicCall.request.contractAddress;
63
66
  const functionSelector = publicCall.functionSelector;
64
- // do these checks first since they don't require the contract class
67
+ // Check address-based entries first since they don't require the contract class.
65
68
  for (const entry of allowList){
66
- if ('address' in entry && !('selector' in entry)) {
67
- if (contractAddress.equals(entry.address)) {
68
- return true;
69
- }
70
- }
71
- if ('address' in entry && 'selector' in entry) {
69
+ if ('address' in entry) {
72
70
  if (contractAddress.equals(entry.address) && entry.selector.equals(functionSelector)) {
73
- return true;
71
+ if (entry.calldataLength !== undefined && publicCall.calldata.length !== entry.calldataLength) {
72
+ return TX_ERROR_SETUP_WRONG_CALLDATA_LENGTH;
73
+ }
74
+ if (entry.onlySelf && !publicCall.request.msgSender.equals(contractAddress)) {
75
+ return TX_ERROR_SETUP_ONLY_SELF_WRONG_SENDER;
76
+ }
77
+ if (entry.rejectNullMsgSender && publicCall.request.msgSender.equals(AztecAddress.fromBigInt(NULL_MSG_SENDER_CONTRACT_ADDRESS))) {
78
+ return TX_ERROR_SETUP_NULL_MSG_SENDER;
79
+ }
80
+ return undefined;
74
81
  }
75
82
  }
76
- const contractClass = await this.contractsDB.getContractInstance(contractAddress, this.timestamp);
77
- if (!contractClass) {
78
- throw new Error(`Contract not found: ${contractAddress}`);
83
+ }
84
+ // Check class-based entries. Fetch the contract instance lazily (only once).
85
+ let contractClassId;
86
+ for (const entry of allowList){
87
+ if (!('classId' in entry)) {
88
+ continue;
79
89
  }
80
- if ('classId' in entry && !('selector' in entry)) {
81
- if (contractClass.currentContractClassId.equals(entry.classId)) {
82
- return true;
90
+ if (contractClassId === undefined) {
91
+ const instance = await this.contractsDB.getContractInstance(contractAddress, this.timestamp);
92
+ contractClassId = {
93
+ value: instance?.currentContractClassId.toString()
94
+ };
95
+ if (!contractClassId.value) {
96
+ return TX_ERROR_SETUP_FUNCTION_UNKNOWN_CONTRACT;
83
97
  }
84
98
  }
85
- if ('classId' in entry && 'selector' in entry) {
86
- if (contractClass.currentContractClassId.equals(entry.classId) && (entry.selector === undefined || entry.selector.equals(functionSelector))) {
87
- return true;
99
+ if (contractClassId.value === entry.classId.toString() && entry.selector.equals(functionSelector)) {
100
+ if (entry.calldataLength !== undefined && publicCall.calldata.length !== entry.calldataLength) {
101
+ return TX_ERROR_SETUP_WRONG_CALLDATA_LENGTH;
102
+ }
103
+ if (entry.onlySelf && !publicCall.request.msgSender.equals(contractAddress)) {
104
+ return TX_ERROR_SETUP_ONLY_SELF_WRONG_SENDER;
88
105
  }
106
+ if (entry.rejectNullMsgSender && publicCall.request.msgSender.equals(AztecAddress.fromBigInt(NULL_MSG_SENDER_CONTRACT_ADDRESS))) {
107
+ return TX_ERROR_SETUP_NULL_MSG_SENDER;
108
+ }
109
+ return undefined;
89
110
  }
90
111
  }
91
- return false;
112
+ return TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED;
113
+ }
114
+ }
115
+ /**
116
+ * Validates that a transaction's setup-phase calls were allowed at receipt time.
117
+ *
118
+ * Checks the precomputed `allowedSetupCalls` flag on TxMetaData. The flag is
119
+ * computed by running the PhasesTxValidator on the full Tx when it first enters
120
+ * the pool. This lightweight validator is used during pending pool migration to
121
+ * reject txs whose setup calls are not on the allow list.
122
+ */ export class AllowedSetupCallsMetaValidator {
123
+ #log;
124
+ constructor(bindings){
125
+ this.#log = createLogger('sequencer:tx_validator:tx_phases_meta', bindings);
126
+ }
127
+ validateTx(tx) {
128
+ if (!tx.allowedSetupCalls) {
129
+ this.#log.verbose(`Rejecting tx ${tx.txHash} because its setup calls are not on the allow list`);
130
+ return Promise.resolve({
131
+ result: 'invalid',
132
+ reason: [
133
+ TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED
134
+ ]
135
+ });
136
+ }
137
+ return Promise.resolve({
138
+ result: 'valid'
139
+ });
92
140
  }
93
141
  }
@@ -77,8 +77,7 @@ export declare class DummyP2PService implements P2PService {
77
77
  * @returns The ENR of the peer, otherwise undefined.
78
78
  */
79
79
  getEnr(): undefined;
80
- validate(_txs: Tx[]): Promise<void>;
81
- validatePropagatedTx(_tx: Tx, _peerId: PeerId): Promise<boolean>;
80
+ validateTxsReceivedInBlockProposal(_txs: Tx[]): Promise<void>;
82
81
  addReqRespSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
83
82
  handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
84
83
  registerThisValidatorAddresses(_address: EthAddress[]): void;
@@ -146,4 +145,4 @@ export declare class DummyReqResp implements ReqRespInterface {
146
145
  getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'>;
147
146
  addSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
148
147
  }
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2R1bW15X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxZQUFZLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUNWLGdCQUFnQixFQUNoQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxD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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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"}
@@ -74,12 +74,9 @@ import { PeerDiscoveryState } from './service.js';
74
74
  */ getEnr() {
75
75
  return undefined;
76
76
  }
77
- validate(_txs) {
77
+ validateTxsReceivedInBlockProposal(_txs) {
78
78
  return Promise.resolve();
79
79
  }
80
- validatePropagatedTx(_tx, _peerId) {
81
- return Promise.resolve(true);
82
- }
83
80
  addReqRespSubProtocol(_subProtocol, _handler, _validator) {
84
81
  return Promise.resolve();
85
82
  }
@@ -2,6 +2,10 @@ import { TopicType } from '@aztec/stdlib/p2p';
2
2
  import type { RPC } from '@chainsafe/libp2p-gossipsub/message';
3
3
  import type { DataTransform } from '@chainsafe/libp2p-gossipsub/types';
4
4
  import type { Message } from '@libp2p/interface';
5
+ /** Thrown when a Snappy-compressed response exceeds the allowed decompressed size. */
6
+ export declare class OversizedSnappyResponseError extends Error {
7
+ constructor(decompressedSize: number, maxSizeKb: number);
8
+ }
5
9
  /**
6
10
  * The function used to generate a gossipsub message id
7
11
  * We use the first 8 bytes of SHA256(data) for content addressing
@@ -17,7 +21,7 @@ export declare function msgIdToStrFn(msgId: Uint8Array): string;
17
21
  * @param message - The libp2p message
18
22
  * @returns The message identifier
19
23
  */
20
- export declare function getMsgIdFn(message: Message): Buffer<ArrayBuffer>;
24
+ export declare function getMsgIdFn({ topic, data }: Message): Promise<Uint8Array>;
21
25
  /**
22
26
  * Snappy transform for libp2p gossipsub
23
27
  */
@@ -47,4 +51,4 @@ export declare function readSnappyPreamble(data: Uint8Array): {
47
51
  decompressedSize: number;
48
52
  bytesRead: number;
49
53
  };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWtCLFNBQVMsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRixPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWFqRDs7O0dBR0c7QUFDSCx3QkFBZ0IsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FLdkQ7QUFFRCx3QkFBZ0IsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUl0RDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyx1QkFLMUM7QUFjRDs7R0FFRztBQUNILHFCQUFhLGVBQWdCLFlBQVcsYUFBYTtJQUVqRCxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxNQUFNO0lBSGhCLFlBQ1UsVUFBVSxHQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFxQixFQUN6RCxnQkFBZ0IsR0FBRSxNQUFrQixFQUNwQyxNQUFNLHlDQUF1QyxFQUNuRDtJQUdKLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRy9EO0lBRU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQVkvRjtJQUdELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRWpFO0lBRU0scUJBQXFCLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBS2pEO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHO0lBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBbUNwRyJ9
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWtCLFNBQVMsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRixPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUtqRCxzRkFBc0Y7QUFDdEYscUJBQWEsNEJBQTZCLFNBQVEsS0FBSztJQUNyRCxZQUFZLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUd0RDtDQUNGO0FBV0Q7OztHQUdHO0FBQ0gsd0JBQWdCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBS3ZEO0FBRUQsd0JBQWdCLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FJdEQ7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FJOUU7QUFjRDs7R0FFRztBQUNILHFCQUFhLGVBQWdCLFlBQVcsYUFBYTtJQUVqRCxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxNQUFNO0lBSGhCLFlBQ1UsVUFBVSxHQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFxQixFQUN6RCxnQkFBZ0IsR0FBRSxNQUFrQixFQUNwQyxNQUFNLHlDQUF1QyxFQUNuRDtJQUdKLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRy9EO0lBRU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQVkvRjtJQUdELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRWpFO0lBRU0scUJBQXFCLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBS2pEO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHO0lBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBbUNwRyJ9
@@ -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;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
+ {"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;AAKjD,sFAAsF;AACtF,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAGtD;CACF;AAWD;;;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,9 +1,15 @@
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
+ /** Thrown when a Snappy-compressed response exceeds the allowed decompressed size. */ export class OversizedSnappyResponseError extends Error {
8
+ constructor(decompressedSize, maxSizeKb){
9
+ super(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
10
+ this.name = 'OversizedSnappyResponseError';
11
+ }
12
+ }
7
13
  // Load WASM
8
14
  const xxhash = await xxhashFactory();
9
15
  // Use salt to prevent msgId from being mined for collisions
@@ -32,13 +38,13 @@ export function msgIdToStrFn(msgId) {
32
38
  *
33
39
  * @param message - The libp2p message
34
40
  * @returns The message identifier
35
- */ export function getMsgIdFn(message) {
36
- const { topic } = message;
37
- const vec = [
41
+ */ export async function getMsgIdFn({ topic, data }) {
42
+ const buffer = Buffer.concat([
38
43
  Buffer.from(topic),
39
- message.data
40
- ];
41
- return sha256(Buffer.concat(vec)).subarray(0, 20);
44
+ data
45
+ ]);
46
+ const hash = await webcrypto.subtle.digest('SHA-256', buffer);
47
+ return Buffer.from(hash.slice(0, 20));
42
48
  }
43
49
  const DefaultMaxSizesKb = {
44
50
  [TopicType.tx]: MAX_TX_SIZE_KB,
@@ -75,7 +81,7 @@ const DefaultMaxSizesKb = {
75
81
  const { decompressedSize } = readSnappyPreamble(data);
76
82
  if (decompressedSize > maxSizeKb * 1024) {
77
83
  this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
78
- throw new Error(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
84
+ throw new OversizedSnappyResponseError(decompressedSize, maxSizeKb);
79
85
  }
80
86
  return Buffer.from(uncompressSync(data, {
81
87
  asBuffer: true