@aztec/p2p 0.0.1-commit.e61ad554 → 0.0.1-commit.f146247c

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 (217) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +1 -1
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +6 -5
  7. package/dest/client/p2p_client.d.ts +1 -1
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +9 -2
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  11. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  16. package/dest/config.d.ts +8 -2
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +2 -0
  19. package/dest/mem_pools/instrumentation.d.ts +1 -1
  20. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  21. package/dest/mem_pools/instrumentation.js +2 -2
  22. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +1 -1
  23. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  24. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +7 -2
  25. package/dest/msg_validators/proposal_validator/proposal_validator.js +5 -5
  26. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  27. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  28. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  29. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  30. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  31. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  32. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  33. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  34. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  35. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  36. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  37. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  38. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  39. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  40. package/dest/msg_validators/tx_validator/factory.js +21 -11
  41. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  42. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  43. package/dest/msg_validators/tx_validator/gas_validator.js +3 -2
  44. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  45. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  46. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  47. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  48. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  49. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  50. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  51. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  52. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  53. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  54. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  55. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  56. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  57. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  59. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  60. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  61. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  62. package/dest/services/data_store.d.ts +1 -1
  63. package/dest/services/data_store.d.ts.map +1 -1
  64. package/dest/services/data_store.js +10 -6
  65. package/dest/services/discv5/discV5_service.js +1 -1
  66. package/dest/services/dummy_service.d.ts +13 -1
  67. package/dest/services/dummy_service.d.ts.map +1 -1
  68. package/dest/services/dummy_service.js +39 -0
  69. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  70. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  71. package/dest/services/libp2p/instrumentation.js +14 -3
  72. package/dest/services/libp2p/libp2p_service.d.ts +9 -3
  73. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  74. package/dest/services/libp2p/libp2p_service.js +37 -28
  75. package/dest/services/peer-manager/metrics.d.ts +2 -2
  76. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  77. package/dest/services/peer-manager/metrics.js +20 -5
  78. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  79. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  80. package/dest/services/peer-manager/peer_scoring.js +8 -2
  81. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  82. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  83. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  84. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  85. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  86. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  87. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  88. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  89. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  90. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  91. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  92. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  93. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  94. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  95. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  96. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  97. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  98. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  99. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  100. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  101. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  102. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  103. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  104. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  105. package/dest/services/reqresp/interface.d.ts +3 -1
  106. package/dest/services/reqresp/interface.d.ts.map +1 -1
  107. package/dest/services/reqresp/metrics.d.ts +6 -5
  108. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  109. package/dest/services/reqresp/metrics.js +17 -5
  110. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  111. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  112. package/dest/services/reqresp/protocols/block_txs/bitvector.js +5 -0
  113. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  114. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  115. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -3
  116. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +18 -6
  117. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  118. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +43 -13
  119. package/dest/services/reqresp/reqresp.d.ts +6 -1
  120. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  121. package/dest/services/reqresp/reqresp.js +58 -22
  122. package/dest/services/service.d.ts +4 -1
  123. package/dest/services/service.d.ts.map +1 -1
  124. package/dest/services/tx_collection/config.d.ts +4 -1
  125. package/dest/services/tx_collection/config.d.ts.map +1 -1
  126. package/dest/services/tx_collection/config.js +9 -1
  127. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -4
  128. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  129. package/dest/services/tx_collection/fast_tx_collection.js +16 -5
  130. package/dest/services/tx_collection/index.d.ts +2 -1
  131. package/dest/services/tx_collection/index.d.ts.map +1 -1
  132. package/dest/services/tx_collection/index.js +1 -0
  133. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  134. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  135. package/dest/services/tx_collection/instrumentation.js +9 -2
  136. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  137. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  138. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  139. package/dest/services/tx_collection/tx_collection.d.ts +4 -4
  140. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  141. package/dest/services/tx_collection/tx_collection.js +5 -5
  142. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  143. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  144. package/dest/services/tx_provider_instrumentation.js +5 -5
  145. package/dest/test-helpers/index.d.ts +3 -1
  146. package/dest/test-helpers/index.d.ts.map +1 -1
  147. package/dest/test-helpers/index.js +2 -0
  148. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  149. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  150. package/dest/test-helpers/test_tx_provider.js +41 -0
  151. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  152. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  153. package/dest/test-helpers/testbench-utils.js +297 -0
  154. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  155. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  156. package/dest/testbench/p2p_client_testbench_worker.js +212 -131
  157. package/dest/testbench/worker_client_manager.d.ts +51 -6
  158. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  159. package/dest/testbench/worker_client_manager.js +226 -44
  160. package/package.json +14 -14
  161. package/src/bootstrap/bootstrap.ts +7 -4
  162. package/src/client/factory.ts +6 -10
  163. package/src/client/p2p_client.ts +9 -2
  164. package/src/client/test/tx_proposal_collector/README.md +227 -0
  165. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  166. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  167. package/src/config.ts +6 -1
  168. package/src/mem_pools/instrumentation.ts +2 -1
  169. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +8 -2
  170. package/src/msg_validators/proposal_validator/proposal_validator.ts +5 -5
  171. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  172. package/src/msg_validators/tx_validator/block_header_validator.ts +7 -8
  173. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  174. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  175. package/src/msg_validators/tx_validator/factory.ts +64 -23
  176. package/src/msg_validators/tx_validator/gas_validator.ts +9 -3
  177. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  178. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  179. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  180. package/src/msg_validators/tx_validator/timestamp_validator.ts +6 -3
  181. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  182. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  183. package/src/services/data_store.ts +10 -7
  184. package/src/services/discv5/discV5_service.ts +1 -1
  185. package/src/services/dummy_service.ts +45 -0
  186. package/src/services/libp2p/instrumentation.ts +15 -2
  187. package/src/services/libp2p/libp2p_service.ts +60 -46
  188. package/src/services/peer-manager/metrics.ts +21 -4
  189. package/src/services/peer-manager/peer_scoring.ts +4 -1
  190. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  191. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  192. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  193. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  194. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  195. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  196. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  197. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  198. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  199. package/src/services/reqresp/interface.ts +3 -0
  200. package/src/services/reqresp/metrics.ts +34 -9
  201. package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
  202. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +18 -4
  203. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +51 -9
  204. package/src/services/reqresp/reqresp.ts +66 -19
  205. package/src/services/service.ts +4 -0
  206. package/src/services/tx_collection/config.ts +15 -1
  207. package/src/services/tx_collection/fast_tx_collection.ts +36 -13
  208. package/src/services/tx_collection/index.ts +5 -0
  209. package/src/services/tx_collection/instrumentation.ts +11 -2
  210. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  211. package/src/services/tx_collection/tx_collection.ts +4 -4
  212. package/src/services/tx_provider_instrumentation.ts +11 -5
  213. package/src/test-helpers/index.ts +2 -0
  214. package/src/test-helpers/test_tx_provider.ts +64 -0
  215. package/src/test-helpers/testbench-utils.ts +374 -0
  216. package/src/testbench/p2p_client_testbench_worker.ts +321 -122
  217. package/src/testbench/worker_client_manager.ts +304 -47
@@ -373,11 +373,9 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
373
373
  var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _initProto;
374
374
  import { BlockNumber } from '@aztec/foundation/branded-types';
375
375
  import { randomInt } from '@aztec/foundation/crypto/random';
376
- import { Fr } from '@aztec/foundation/curves/bn254';
377
376
  import { createLibp2pComponentLogger, createLogger } from '@aztec/foundation/log';
378
377
  import { RunningPromise } from '@aztec/foundation/running-promise';
379
378
  import { Timer } from '@aztec/foundation/timer';
380
- import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
381
379
  import { protocolContractsHash } from '@aztec/protocol-contracts';
382
380
  import { GasFees } from '@aztec/stdlib/gas';
383
381
  import { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PClientType, P2PMessage, PeerErrorSeverity, TopicType, createTopicString, getTopicsForClientAndConfig, metricsTopicStrToLabels } from '@aztec/stdlib/p2p';
@@ -398,11 +396,11 @@ import { tcp } from '@libp2p/tcp';
398
396
  import { ENR } from '@nethermindeth/enr';
399
397
  import { createLibp2p } from 'libp2p';
400
398
  import { ProposalSlotCapExceededError } from '../../errors/attestation-pool.error.js';
401
- import { BlockProposalValidator, CheckpointAttestationValidator, CheckpointProposalValidator, FishermanAttestationValidator, SizeTxValidator } from '../../msg_validators/index.js';
399
+ import { BlockProposalValidator, CheckpointAttestationValidator, CheckpointProposalValidator, FishermanAttestationValidator } from '../../msg_validators/index.js';
402
400
  import { MessageSeenValidator } from '../../msg_validators/msg_seen_validator/msg_seen_validator.js';
403
401
  import { getDefaultAllowedSetupFunctions } from '../../msg_validators/tx_validator/allowed_public_setup.js';
404
- import { createTxMessageValidators } from '../../msg_validators/tx_validator/factory.js';
405
- import { AggregateTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, TxProofValidator } from '../../msg_validators/tx_validator/index.js';
402
+ import { createTxMessageValidators, createTxReqRespValidator } from '../../msg_validators/tx_validator/factory.js';
403
+ import { DoubleSpendTxValidator } from '../../msg_validators/tx_validator/index.js';
406
404
  import { GossipSubEvent } from '../../types/index.js';
407
405
  import { convertToMultiaddr } from '../../util.js';
408
406
  import { getVersions } from '../../versioning.js';
@@ -427,7 +425,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
427
425
  [Attributes.BLOCK_ARCHIVE]: checkpoint.archive.toString(),
428
426
  [Attributes.P2P_ID]: await checkpoint.p2pMessageLoggingIdentifier().then((i)=>i.toString())
429
427
  })), _dec2 = trackSpan('Libp2pService.validateRequestedBlockTxs', (request)=>({
430
- [Attributes.BLOCK_HASH]: request.blockHash.toString()
428
+ [Attributes.BLOCK_ARCHIVE]: request.archiveRoot.toString()
431
429
  })), _dec3 = trackSpan('Libp2pService.validateRequestedTx', (requestedTxHash, _responseTx)=>({
432
430
  [Attributes.TX_HASH]: requestedTxHash.toString()
433
431
  })), _dec4 = trackSpan('Libp2pService.validateRequestedBlock', (requestedBlockNumber, _responseBlock)=>({
@@ -578,8 +576,8 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
578
576
  const { p2pPort, maxPeerCount, listenAddress } = config;
579
577
  const bindAddrTcp = convertToMultiaddr(listenAddress, p2pPort, 'tcp');
580
578
  const datastore = new AztecDatastore(peerStore);
581
- const otelMetricsAdapter = new OtelMetricsAdapter(telemetry);
582
- const peerDiscoveryService = new DiscV5Service(peerId, config, packageVersion, telemetry, createLogger(`${logger.module}:discv5_service`));
579
+ const otelMetricsAdapter = new OtelMetricsAdapter(telemetry, logger.getBindings());
580
+ const peerDiscoveryService = new DiscV5Service(peerId, config, packageVersion, telemetry, createLogger(`${logger.module}:discv5_service`, logger.getBindings()));
583
581
  // Seed libp2p's bootstrap discovery with private and trusted peers
584
582
  const bootstrapNodes = [
585
583
  ...config.privatePeers,
@@ -742,7 +740,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
742
740
  connectionManager: components.connectionManager
743
741
  })
744
742
  },
745
- logger: createLibp2pComponentLogger(logger.module)
743
+ logger: createLibp2pComponentLogger(logger.module, logger.getBindings())
746
744
  });
747
745
  const peerScoring = new PeerScoring(config, telemetry);
748
746
  const reqresp = new ReqResp(config, node, peerScoring, createLogger(`${logger.module}:reqresp`));
@@ -862,6 +860,9 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
862
860
  */ sendBatchRequest(protocol, requests, pinnedPeerId) {
863
861
  return this.reqresp.sendBatchRequest(protocol, requests, pinnedPeerId);
864
862
  }
863
+ sendRequestToPeer(peerId, subProtocol, payload, dialTimeout) {
864
+ return this.reqresp.sendRequestToPeer(peerId, subProtocol, payload, dialTimeout);
865
+ }
865
866
  /**
866
867
  * Get the ENR of the node
867
868
  * @returns The ENR of the node
@@ -1360,9 +1361,9 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1360
1361
  */ async validateRequestedBlockTxs(request, response, peerId) {
1361
1362
  const requestedTxValidator = this.createRequestedTxValidator();
1362
1363
  try {
1363
- if (!response.blockHash.equals(request.blockHash)) {
1364
+ if (!response.archiveRoot.equals(request.archiveRoot)) {
1364
1365
  this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
1365
- throw new ValidationError(`Received block txs for unexpected block: expected ${request.blockHash.toString()}, got ${response.blockHash.toString()}`);
1366
+ throw new ValidationError(`Received block txs for unexpected archive root: expected ${request.archiveRoot.toString()}, got ${response.archiveRoot.toString()}`);
1366
1367
  }
1367
1368
  if (response.txIndices.getLength() !== request.txIndices.getLength()) {
1368
1369
  this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
@@ -1385,7 +1386,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1385
1386
  throw new ValidationError(`Received more txs (${response.txs.length}) than requested-and-available (${maxReturnable})`);
1386
1387
  }
1387
1388
  // Given proposal (should have locally), ensure returned txs are valid subset and match request indices
1388
- const proposal = await this.mempools.attestationPool.getBlockProposal(request.blockHash.toString());
1389
+ const proposal = await this.mempools.attestationPool.getBlockProposal(request.archiveRoot.toString());
1389
1390
  if (proposal) {
1390
1391
  // Build intersected indices
1391
1392
  const intersectIdx = request.txIndices.getTrueIndices().filter((i)=>response.txIndices.isSet(i));
@@ -1404,7 +1405,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1404
1405
  }
1405
1406
  } else {
1406
1407
  // No local proposal, cannot check the membership/order of the returned txs
1407
- this.logger.warn(`Block proposal not found for block hash ${request.blockHash.toString()}; cannot validate membership/order of returned txs`);
1408
+ this.logger.warn(`Block proposal not found for archive root ${request.archiveRoot.toString()}; cannot validate membership/order of returned txs`);
1408
1409
  return false;
1409
1410
  }
1410
1411
  await Promise.all(response.txs.map((tx)=>this.validateRequestedTx(tx, peerId, requestedTxValidator)));
@@ -1434,7 +1435,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1434
1435
  */ async validateRequestedTxs(requestedTxHash, responseTx, peerId) {
1435
1436
  const requested = new Set(requestedTxHash.map((h)=>h.toString()));
1436
1437
  const requestedTxValidator = this.createRequestedTxValidator();
1437
- //TODO: (mralj) - this is somewhat naive implementation, if single tx is invlid we consider the whole response invalid.
1438
+ //TODO: (mralj) - this is somewhat naive implementation, if single tx is invalid we consider the whole response invalid.
1438
1439
  // I think we should still extract the valid txs and return them, so that we can still use the response.
1439
1440
  try {
1440
1441
  await Promise.all(responseTx.map((tx)=>this.validateRequestedTx(tx, peerId, requestedTxValidator, requested)));
@@ -1487,20 +1488,8 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1487
1488
  return false;
1488
1489
  }
1489
1490
  }
1490
- createRequestedTxValidator() {
1491
- return new AggregateTxValidator(new DataTxValidator(), new SizeTxValidator(), new MetadataTxValidator({
1492
- l1ChainId: new Fr(this.config.l1ChainId),
1493
- rollupVersion: new Fr(this.config.rollupVersion),
1494
- protocolContractsHash,
1495
- vkTreeRoot: getVKTreeRoot()
1496
- }), new TxProofValidator(this.proofVerifier));
1497
- }
1498
1491
  async validateRequestedTx(tx, peerId, txValidator, requested) {
1499
1492
  const penalize = (severity)=>this.peerManager.penalizePeer(peerId, severity);
1500
- if (!await tx.validateTxHash()) {
1501
- penalize(PeerErrorSeverity.MidToleranceError);
1502
- throw new ValidationError(`Received tx with invalid hash ${tx.getTxHash().toString()}.`);
1503
- }
1504
1493
  if (requested && !requested.has(tx.getTxHash().toString())) {
1505
1494
  penalize(PeerErrorSeverity.MidToleranceError);
1506
1495
  throw new ValidationError(`Received tx with hash ${tx.getTxHash().toString()} that was not requested.`);
@@ -1511,6 +1500,12 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1511
1500
  throw new ValidationError(`Received tx with hash ${tx.getTxHash().toString()} that is invalid.`);
1512
1501
  }
1513
1502
  }
1503
+ createRequestedTxValidator() {
1504
+ return createTxReqRespValidator(this.proofVerifier, {
1505
+ l1ChainId: this.config.l1ChainId,
1506
+ rollupVersion: this.config.rollupVersion
1507
+ });
1508
+ }
1514
1509
  async validatePropagatedTx(tx, peerId) {
1515
1510
  const currentBlockNumber = await this.archiver.getBlockNumber();
1516
1511
  // We accept transactions if they are not expired by the next slot (checked based on the IncludeByTimestamp field)
@@ -1545,6 +1540,20 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1545
1540
  };
1546
1541
  return gasFees;
1547
1542
  }
1543
+ /**
1544
+ * Get the BatchTxRequesterLibP2PService dependencies for creating BatchTxRequester instances
1545
+ */ getBatchTxRequesterService() {
1546
+ return {
1547
+ reqResp: this.reqresp,
1548
+ connectionSampler: this.reqresp.getConnectionSampler(),
1549
+ txValidatorConfig: {
1550
+ l1ChainId: this.config.l1ChainId,
1551
+ rollupVersion: this.config.rollupVersion,
1552
+ proofVerifier: this.proofVerifier
1553
+ },
1554
+ peerScoring: this.peerManager
1555
+ };
1556
+ }
1548
1557
  async validate(txs) {
1549
1558
  const currentBlockNumber = await this.archiver.getBlockNumber();
1550
1559
  // We accept transactions if they are not expired by the next slot (checked based on the IncludeByTimestamp field)
@@ -1576,7 +1585,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1576
1585
  const gasFees = await this.getGasFees(currentBlockNumber);
1577
1586
  const allowedInSetup = this.config.txPublicSetupAllowList ?? await getDefaultAllowedSetupFunctions();
1578
1587
  const blockNumberInWhichTheTxIsConsideredToBeIncluded = BlockNumber(currentBlockNumber + 1);
1579
- return createTxMessageValidators(nextSlotTimestamp, blockNumberInWhichTheTxIsConsideredToBeIncluded, this.worldStateSynchronizer, gasFees, this.config.l1ChainId, this.config.rollupVersion, protocolContractsHash, this.archiver, this.proofVerifier, !this.config.disableTransactions, allowedInSetup);
1588
+ return createTxMessageValidators(nextSlotTimestamp, blockNumberInWhichTheTxIsConsideredToBeIncluded, this.worldStateSynchronizer, gasFees, this.config.l1ChainId, this.config.rollupVersion, protocolContractsHash, this.archiver, this.proofVerifier, !this.config.disableTransactions, allowedInSetup, this.logger.getBindings());
1580
1589
  }
1581
1590
  /**
1582
1591
  * Run validations on a tx.
@@ -1635,7 +1644,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
1635
1644
  const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
1636
1645
  return indices.map((index)=>index !== undefined);
1637
1646
  }
1638
- });
1647
+ }, this.logger.getBindings());
1639
1648
  const validSnapshot = await snapshotValidator.validateTx(tx);
1640
1649
  if (validSnapshot.result !== 'valid') {
1641
1650
  return PeerErrorSeverity.LowToleranceError;
@@ -1,6 +1,6 @@
1
1
  import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
2
2
  import type { PeerId } from '@libp2p/interface';
3
- import { type GoodByeReason } from '../reqresp/protocols/index.js';
3
+ import { GoodByeReason } from '../reqresp/protocols/index.js';
4
4
  export declare class PeerManagerMetrics {
5
5
  readonly telemetryClient: TelemetryClient;
6
6
  private sentGoodbyes;
@@ -18,4 +18,4 @@ export declare class PeerManagerMetrics {
18
18
  peerConnected(id: PeerId): void;
19
19
  peerDisconnected(id: PeerId): void;
20
20
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3BlZXItbWFuYWdlci9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBR1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsS0FBSyxhQUFhLEVBQXVCLE1BQU0sK0JBQStCLENBQUM7QUFFeEYscUJBQWEsa0JBQWtCO2FBWVgsZUFBZSxFQUFFLGVBQWU7SUFYbEQsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLGdCQUFnQixDQUFnQjtJQUN4QyxPQUFPLENBQUMsU0FBUyxDQUFRO0lBQ3pCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBZ0I7SUFDM0MsT0FBTyxDQUFDLHNCQUFzQixDQUFZO0lBRTFDLE9BQU8sQ0FBQyxlQUFlLENBQWtEO0lBRXpFLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsWUFDa0IsZUFBZSxHQUFFLGVBQXNDLEVBQ3ZFLElBQUksU0FBZ0IsRUFVckI7SUFFTSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxRQUU3QztJQUVNLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxhQUFhLFFBRWpEO0lBRU0sZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLFFBRW5DO0lBRU0sd0JBQXdCLENBQUMsVUFBVSxFQUFFLFFBQVEsR0FBRyxZQUFZLFFBRWxFO0lBRU0sYUFBYSxDQUFDLEVBQUUsRUFBRSxNQUFNLFFBRTlCO0lBRU0sZ0JBQWdCLENBQUMsRUFBRSxFQUFFLE1BQU0sUUFLakM7Q0FDRiJ9
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3BlZXItbWFuYWdlci9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLCtCQUErQixDQUFDO0FBRW5GLHFCQUFhLGtCQUFrQjthQVlYLGVBQWUsRUFBRSxlQUFlO0lBWGxELE9BQU8sQ0FBQyxZQUFZLENBQWdCO0lBQ3BDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBZ0I7SUFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBUTtJQUN6QixPQUFPLENBQUMsbUJBQW1CLENBQWdCO0lBQzNDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBWTtJQUUxQyxPQUFPLENBQUMsZUFBZSxDQUFrRDtJQUV6RSxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ2tCLGVBQWUsR0FBRSxlQUFzQyxFQUN2RSxJQUFJLFNBQWdCLEVBMEJyQjtJQUVNLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxhQUFhLFFBRTdDO0lBRU0scUJBQXFCLENBQUMsTUFBTSxFQUFFLGFBQWEsUUFFakQ7SUFFTSxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFbkM7SUFFTSx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxHQUFHLFlBQVksUUFFbEU7SUFFTSxhQUFhLENBQUMsRUFBRSxFQUFFLE1BQU0sUUFFOUI7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxRQUtqQztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,+BAA+B,CAAC;AAExF,qBAAa,kBAAkB;aAYX,eAAe,EAAE,eAAe;IAXlD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,sBAAsB,CAAY;IAE1C,OAAO,CAAC,eAAe,CAAkD;IAEzE,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACkB,eAAe,GAAE,eAAsC,EACvE,IAAI,SAAgB,EAUrB;IAEM,iBAAiB,CAAC,MAAM,EAAE,aAAa,QAE7C;IAEM,qBAAqB,CAAC,MAAM,EAAE,aAAa,QAEjD;IAEM,eAAe,CAAC,KAAK,EAAE,MAAM,QAEnC;IAEM,wBAAwB,CAAC,UAAU,EAAE,QAAQ,GAAG,YAAY,QAElE;IAEM,aAAa,CAAC,EAAE,EAAE,MAAM,QAE9B;IAEM,gBAAgB,CAAC,EAAE,EAAE,MAAM,QAKjC;CACF"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAuB,MAAM,+BAA+B,CAAC;AAEnF,qBAAa,kBAAkB;aAYX,eAAe,EAAE,eAAe;IAXlD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,sBAAsB,CAAY;IAE1C,OAAO,CAAC,eAAe,CAAkD;IAEzE,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACkB,eAAe,GAAE,eAAsC,EACvE,IAAI,SAAgB,EA0BrB;IAEM,iBAAiB,CAAC,MAAM,EAAE,aAAa,QAE7C;IAEM,qBAAqB,CAAC,MAAM,EAAE,aAAa,QAEjD;IAEM,eAAe,CAAC,KAAK,EAAE,MAAM,QAEnC;IAEM,wBAAwB,CAAC,UAAU,EAAE,QAAQ,GAAG,YAAY,QAElE;IAEM,aAAa,CAAC,EAAE,EAAE,MAAM,QAE9B;IAEM,gBAAgB,CAAC,EAAE,EAAE,MAAM,QAKjC;CACF"}
@@ -1,5 +1,5 @@
1
- import { Attributes, Metrics, getTelemetryClient } from '@aztec/telemetry-client';
2
- import { prettyGoodbyeReason } from '../reqresp/protocols/index.js';
1
+ import { Attributes, Metrics, createUpDownCounterWithDefault, getTelemetryClient } from '@aztec/telemetry-client';
2
+ import { GoodByeReason, prettyGoodbyeReason } from '../reqresp/protocols/index.js';
3
3
  export class PeerManagerMetrics {
4
4
  telemetryClient;
5
5
  sentGoodbyes;
@@ -14,10 +14,25 @@ export class PeerManagerMetrics {
14
14
  this.peerConnectedAt = new Map();
15
15
  this.tracer = telemetryClient.getTracer(name);
16
16
  const meter = telemetryClient.getMeter(name);
17
- this.sentGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_SENT);
18
- this.receivedGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_RECEIVED);
17
+ const goodbyeReasonAttrs = {
18
+ [Attributes.P2P_GOODBYE_REASON]: [
19
+ prettyGoodbyeReason(GoodByeReason.SHUTDOWN),
20
+ prettyGoodbyeReason(GoodByeReason.MAX_PEERS),
21
+ prettyGoodbyeReason(GoodByeReason.LOW_SCORE),
22
+ prettyGoodbyeReason(GoodByeReason.BANNED),
23
+ prettyGoodbyeReason(GoodByeReason.WRONG_NETWORK),
24
+ prettyGoodbyeReason(GoodByeReason.UNKNOWN)
25
+ ]
26
+ };
27
+ this.sentGoodbyes = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_GOODBYES_SENT, goodbyeReasonAttrs);
28
+ this.receivedGoodbyes = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_GOODBYES_RECEIVED, goodbyeReasonAttrs);
19
29
  this.peerCount = meter.createGauge(Metrics.PEER_MANAGER_PEER_COUNT);
20
- this.lowScoreDisconnects = meter.createUpDownCounter(Metrics.PEER_MANAGER_LOW_SCORE_DISCONNECTS);
30
+ this.lowScoreDisconnects = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_LOW_SCORE_DISCONNECTS, {
31
+ [Attributes.P2P_PEER_SCORE_STATE]: [
32
+ 'Banned',
33
+ 'Disconnect'
34
+ ]
35
+ });
21
36
  this.peerConnectionDuration = meter.createHistogram(Metrics.PEER_MANAGER_PEER_CONNECTION_DURATION);
22
37
  }
23
38
  recordGoodbyeSent(reason) {
@@ -30,4 +30,4 @@ export declare class PeerScoring {
30
30
  bannedCount: number;
31
31
  };
32
32
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9zY29yaW5nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcGVlci1tYW5hZ2VyL3BlZXJfc2NvcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBR0wsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRakQsb0JBQVksY0FBYztJQUN4QixNQUFNLElBQUE7SUFDTixVQUFVLElBQUE7SUFDVixPQUFPLElBQUE7Q0FDUjtBQU1ELHFCQUFhLFdBQVc7SUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBb0M7SUFDbEQsT0FBTyxDQUFDLE1BQU0sQ0FBa0M7SUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBa0M7SUFDeEQsT0FBTyxDQUFDLGFBQWEsQ0FBYTtJQUNsQyxPQUFPLENBQUMsV0FBVyxDQUFPO0lBQzFCLGFBQWEsRUFBRTtTQUFHLEdBQUcsSUFBSSxpQkFBaUIsR0FBRyxNQUFNO0tBQUUsQ0FBQztJQUV0RCxPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBRXhDLFlBQVksTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUUsZUFBc0MsRUFjL0U7SUFFTSxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLFVBTTdEO0lBRUQsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBaUJ0RDtJQUVELGNBQWMsSUFBSSxJQUFJLENBWXJCO0lBRUQsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUUvQjtJQUVNLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGNBQWMsQ0FVbkQ7SUFFRCxRQUFRLElBQUk7UUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztRQUFDLGVBQWUsRUFBRSxNQUFNLENBQUM7UUFBQyxXQUFXLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0E0QnRHO0NBQ0YifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9zY29yaW5nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcGVlci1tYW5hZ2VyL3BlZXJfc2NvcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBR0wsS0FBSyxlQUFlLEVBSXJCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRakQsb0JBQVksY0FBYztJQUN4QixNQUFNLElBQUE7SUFDTixVQUFVLElBQUE7SUFDVixPQUFPLElBQUE7Q0FDUjtBQU1ELHFCQUFhLFdBQVc7SUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBb0M7SUFDbEQsT0FBTyxDQUFDLE1BQU0sQ0FBa0M7SUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBa0M7SUFDeEQsT0FBTyxDQUFDLGFBQWEsQ0FBYTtJQUNsQyxPQUFPLENBQUMsV0FBVyxDQUFPO0lBQzFCLGFBQWEsRUFBRTtTQUFHLEdBQUcsSUFBSSxpQkFBaUIsR0FBRyxNQUFNO0tBQUUsQ0FBQztJQUV0RCxPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBRXhDLFlBQVksTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUUsZUFBc0MsRUFnQi9FO0lBRU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixVQU03RDtJQUVELFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQWlCdEQ7SUFFRCxjQUFjLElBQUksSUFBSSxDQVlyQjtJQUVELFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFL0I7SUFFTSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxjQUFjLENBVW5EO0lBRUQsUUFBUSxJQUFJO1FBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQztRQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7UUFBQyxlQUFlLEVBQUUsTUFBTSxDQUFDO1FBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBNEJ0RztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"peer_scoring.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_scoring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQjD,oBAAY,cAAc;IACxB,MAAM,IAAA;IACN,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,WAAW,CAAO;IAC1B,aAAa,EAAE;SAAG,GAAG,IAAI,iBAAiB,GAAG,MAAM;KAAE,CAAC;IAEtD,OAAO,CAAC,gBAAgB,CAAgB;IAExC,YAAY,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,eAAsC,EAc/E;IAEM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,UAM7D;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBtD;IAED,cAAc,IAAI,IAAI,CAYrB;IAED,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/B;IAEM,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAUnD;IAED,QAAQ,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CA4BtG;CACF"}
1
+ {"version":3,"file":"peer_scoring.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_scoring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAGL,KAAK,eAAe,EAIrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQjD,oBAAY,cAAc;IACxB,MAAM,IAAA;IACN,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,WAAW,CAAO;IAC1B,aAAa,EAAE;SAAG,GAAG,IAAI,iBAAiB,GAAG,MAAM;KAAE,CAAC;IAEtD,OAAO,CAAC,gBAAgB,CAAgB;IAExC,YAAY,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,eAAsC,EAgB/E;IAEM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,UAM7D;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBtD;IAED,cAAc,IAAI,IAAI,CAYrB;IAED,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/B;IAEM,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAUnD;IAED,QAAQ,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CA4BtG;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { median } from '@aztec/foundation/collection';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
3
  import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
4
- import { Attributes, Metrics, getTelemetryClient } from '@aztec/telemetry-client';
4
+ import { Attributes, Metrics, createUpDownCounterWithDefault, getTelemetryClient } from '@aztec/telemetry-client';
5
5
  const DefaultPeerPenalties = {
6
6
  [PeerErrorSeverity.LowToleranceError]: 50,
7
7
  [PeerErrorSeverity.MidToleranceError]: 10,
@@ -32,7 +32,13 @@ export class PeerScoring {
32
32
  [PeerErrorSeverity.LowToleranceError]: orderedValues?.[2] ?? DefaultPeerPenalties[PeerErrorSeverity.LowToleranceError]
33
33
  };
34
34
  const meter = telemetry.getMeter('PeerScoring');
35
- this.peerStateCounter = meter.createUpDownCounter(Metrics.P2P_PEER_STATE_COUNT);
35
+ this.peerStateCounter = createUpDownCounterWithDefault(meter, Metrics.P2P_PEER_STATE_COUNT, {
36
+ [Attributes.P2P_PEER_SCORE_STATE]: [
37
+ 'Healthy',
38
+ 'Disconnect',
39
+ 'Banned'
40
+ ]
41
+ });
36
42
  }
37
43
  penalizePeer(peerId, penalty) {
38
44
  const id = peerId.toString();
@@ -0,0 +1,47 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { DateProvider } from '@aztec/foundation/timer';
3
+ import { type BlockProposal } from '@aztec/stdlib/p2p';
4
+ import { Tx, TxHash } from '@aztec/stdlib/tx';
5
+ import type { PeerId } from '@libp2p/interface';
6
+ import type { BatchTxRequesterLibP2PService, BatchTxRequesterOptions } from './interface.js';
7
+ export declare class BatchTxRequester {
8
+ private readonly blockProposal;
9
+ private readonly pinnedPeer;
10
+ private readonly timeoutMs;
11
+ private readonly p2pService;
12
+ private readonly logger;
13
+ private readonly dateProvider;
14
+ private readonly opts;
15
+ private readonly peers;
16
+ private readonly txsMetadata;
17
+ private readonly deadline;
18
+ private readonly smartRequesterSemaphore;
19
+ private readonly txQueue;
20
+ private readonly txValidator;
21
+ private readonly smartParallelWorkerCount;
22
+ private readonly dumbParallelWorkerCount;
23
+ private readonly txBatchSize;
24
+ constructor(missingTxs: TxHash[], blockProposal: BlockProposal, pinnedPeer: PeerId | undefined, timeoutMs: number, p2pService: BatchTxRequesterLibP2PService, logger?: Logger, dateProvider?: DateProvider, opts?: BatchTxRequesterOptions);
25
+ run(): AsyncGenerator<Tx, Tx | undefined, unknown>;
26
+ static collectAllTxs(generator: AsyncGenerator<Tx, Tx | undefined, unknown>): Promise<Tx[]>;
27
+ private pinnedPeerRequester;
28
+ private dumbRequester;
29
+ private dumbWorkerLoop;
30
+ private smartRequester;
31
+ private smartWorkerLoop;
32
+ private requestTxBatch;
33
+ private handleFailResponseFromPeer;
34
+ private handleSuccessResponseFromPeer;
35
+ private handleReceivedTxs;
36
+ private decideIfPeerIsSmart;
37
+ private isBlockResponseValid;
38
+ private peerHasSomeTxsWeAreMissing;
39
+ private markTxsPeerHas;
40
+ private extractHashesPeerHasFromResponse;
41
+ private makeRoundRobinIndexer;
42
+ private fetchedAllTxs;
43
+ private shouldStop;
44
+ private unlockSmartRequesterSemaphores;
45
+ private sleepClampedToDeadline;
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfdHhfcmVxdWVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9iYXRjaC10eC1yZXF1ZXN0ZXIvYmF0Y2hfdHhfcmVxdWVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBcUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsRUFBRSxFQUFXLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBWWhELE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLHVCQUF1QixFQUF5QixNQUFNLGdCQUFnQixDQUFDO0FBc0JwSCxxQkFBYSxnQkFBZ0I7SUFDM0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQWdCO0lBQzlDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFxQjtJQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBUztJQUNuQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBZ0M7SUFDM0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQVM7SUFDaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQWU7SUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQTBCO0lBQy9DLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFrQjtJQUN4QyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBd0I7SUFDcEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQVM7SUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBYTtJQUNyRCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBc0I7SUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQTJCO0lBQ3ZELE9BQU8sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQVM7SUFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBUztJQUNqRCxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBUztJQUVyQyxZQUNFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFDcEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQzlCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFVBQVUsRUFBRSw2QkFBNkIsRUFDekMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUNmLFlBQVksQ0FBQyxFQUFFLFlBQVksRUFDM0IsSUFBSSxDQUFDLEVBQUUsdUJBQXVCLEVBbUMvQjtJQUthLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBNkMvRDtJQUtELE9BQW9CLGFBQWEsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQVN2RztZQVVhLG1CQUFtQjtZQWtEbkIsYUFBYTtZQXlEYixjQUFjO1lBZ0RkLGNBQWM7WUF3Q2QsZUFBZTtZQWtGZixjQUFjO0lBbUM1QixPQUFPLENBQUMsMEJBQTBCO1lBaUJwQiw2QkFBNkI7WUFZN0IsaUJBQWlCO0lBcUQvQixPQUFPLENBQUMsbUJBQW1CO0lBa0MzQixPQUFPLENBQUMsb0JBQW9CO0lBTTVCLE9BQU8sQ0FBQywwQkFBMEI7SUFLbEMsT0FBTyxDQUFDLGNBQWM7SUFNdEIsT0FBTyxDQUFDLGdDQUFnQztJQWdCeEMsT0FBTyxDQUFDLHFCQUFxQjtJQXVCN0IsT0FBTyxDQUFDLGFBQWE7SUFhckIsT0FBTyxDQUFDLFVBQVU7SUFhbEIsT0FBTyxDQUFDLDhCQUE4QjtZQVV4QixzQkFBc0I7Q0FPckMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch_tx_requester.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/batch-tx-requester/batch_tx_requester.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAkB,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,EAAE,EAAW,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAYhD,OAAO,KAAK,EAAE,6BAA6B,EAAE,uBAAuB,EAAyB,MAAM,gBAAgB,CAAC;AAsBpH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAa;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,YACE,UAAU,EAAE,MAAM,EAAE,EACpB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,6BAA6B,EACzC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,uBAAuB,EAmC/B;IAKa,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,CA6C/D;IAKD,OAAoB,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CASvG;YAUa,mBAAmB;YAkDnB,aAAa;YAyDb,cAAc;YAgDd,cAAc;YAwCd,eAAe;YAkFf,cAAc;IAmC5B,OAAO,CAAC,0BAA0B;YAiBpB,6BAA6B;YAY7B,iBAAiB;IAqD/B,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,gCAAgC;IAgBxC,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,8BAA8B;YAUxB,sBAAsB;CAOrC"}