@aztec/p2p 0.0.1-commit.2d9cb6034 → 0.0.1-commit.2e20a94

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 (118) hide show
  1. package/dest/client/p2p_client.d.ts +1 -1
  2. package/dest/client/p2p_client.d.ts.map +1 -1
  3. package/dest/client/p2p_client.js +9 -2
  4. package/dest/config.d.ts +103 -99
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +10 -5
  7. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -2
  8. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  9. package/dest/mem_pools/attestation_pool/attestation_pool.js +5 -3
  10. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  11. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +1 -1
  12. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  13. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  14. package/dest/msg_validators/attestation_validator/attestation_validator.js +17 -9
  15. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  16. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  17. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  18. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  19. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  20. package/dest/msg_validators/clock_tolerance.js +50 -0
  21. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  22. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  23. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  24. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  25. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  26. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  27. package/dest/msg_validators/proposal_validator/proposal_validator.js +16 -8
  28. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  29. package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
  30. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  31. package/dest/msg_validators/tx_validator/gas_validator.js +11 -9
  32. package/dest/services/data_store.d.ts +1 -1
  33. package/dest/services/data_store.d.ts.map +1 -1
  34. package/dest/services/data_store.js +5 -5
  35. package/dest/services/dummy_service.d.ts +2 -1
  36. package/dest/services/dummy_service.d.ts.map +1 -1
  37. package/dest/services/dummy_service.js +1 -0
  38. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  39. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  40. package/dest/services/gossipsub/topic_score_params.js +21 -4
  41. package/dest/services/libp2p/libp2p_service.d.ts +2 -15
  42. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  43. package/dest/services/libp2p/libp2p_service.js +17 -55
  44. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  45. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  46. package/dest/services/peer-manager/peer_manager.js +15 -2
  47. package/dest/services/peer-manager/peer_scoring.d.ts +3 -1
  48. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  49. package/dest/services/peer-manager/peer_scoring.js +4 -0
  50. package/dest/services/reqresp/config.d.ts +3 -3
  51. package/dest/services/reqresp/config.d.ts.map +1 -1
  52. package/dest/services/reqresp/interface.d.ts +14 -9
  53. package/dest/services/reqresp/interface.d.ts.map +1 -1
  54. package/dest/services/reqresp/interface.js +10 -11
  55. package/dest/services/reqresp/metrics.d.ts +1 -1
  56. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  57. package/dest/services/reqresp/metrics.js +0 -1
  58. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  59. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  60. package/dest/services/reqresp/protocols/index.js +0 -1
  61. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  62. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  63. package/dest/services/reqresp/protocols/tx.js +1 -3
  64. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  65. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  66. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  67. package/dest/services/reqresp/reqresp.d.ts +4 -2
  68. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  69. package/dest/services/reqresp/reqresp.js +11 -2
  70. package/dest/test-helpers/mock-pubsub.d.ts +11 -3
  71. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  72. package/dest/test-helpers/mock-pubsub.js +35 -10
  73. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  74. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  75. package/dest/test-helpers/reqresp-nodes.js +1 -2
  76. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  77. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  78. package/dest/test-helpers/testbench-utils.js +1 -0
  79. package/dest/testbench/p2p_client_testbench_worker.js +22 -0
  80. package/dest/testbench/worker_client_manager.d.ts +8 -1
  81. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  82. package/dest/testbench/worker_client_manager.js +49 -0
  83. package/package.json +14 -14
  84. package/src/client/p2p_client.ts +11 -3
  85. package/src/config.ts +18 -6
  86. package/src/mem_pools/attestation_pool/attestation_pool.ts +5 -3
  87. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  88. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +1 -1
  89. package/src/msg_validators/attestation_validator/attestation_validator.ts +18 -7
  90. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  91. package/src/msg_validators/clock_tolerance.ts +68 -0
  92. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +4 -1
  93. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +4 -1
  94. package/src/msg_validators/proposal_validator/proposal_validator.ts +13 -7
  95. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  96. package/src/msg_validators/tx_validator/gas_validator.ts +25 -9
  97. package/src/services/data_store.ts +5 -13
  98. package/src/services/dummy_service.ts +1 -0
  99. package/src/services/gossipsub/topic_score_params.ts +36 -4
  100. package/src/services/libp2p/libp2p_service.ts +13 -55
  101. package/src/services/peer-manager/peer_manager.ts +17 -2
  102. package/src/services/peer-manager/peer_scoring.ts +6 -0
  103. package/src/services/reqresp/config.ts +2 -2
  104. package/src/services/reqresp/interface.ts +21 -11
  105. package/src/services/reqresp/metrics.ts +0 -1
  106. package/src/services/reqresp/protocols/index.ts +0 -1
  107. package/src/services/reqresp/protocols/tx.ts +1 -3
  108. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  109. package/src/services/reqresp/reqresp.ts +18 -1
  110. package/src/test-helpers/mock-pubsub.ts +31 -5
  111. package/src/test-helpers/reqresp-nodes.ts +2 -2
  112. package/src/test-helpers/testbench-utils.ts +1 -0
  113. package/src/testbench/p2p_client_testbench_worker.ts +27 -0
  114. package/src/testbench/worker_client_manager.ts +55 -0
  115. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  116. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  117. package/dest/services/reqresp/protocols/block.js +0 -32
  118. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -424,6 +424,61 @@ class WorkerClientManager {
424
424
  this.logger.info('All worker processes cleaned up');
425
425
  }
426
426
 
427
+ /**
428
+ * Checks that the aggregator (client 0) has sufficient peer connections before running a benchmark.
429
+ * This prevents benchmark cases from starting with degraded connectivity after a previous case
430
+ * caused connection failures.
431
+ */
432
+ async waitForConnectivity(minPeers: number, timeoutMs: number = 15_000): Promise<number> {
433
+ const waitInterval = 1000;
434
+ let waited = 0;
435
+
436
+ while (waited < timeoutMs) {
437
+ const count = await this.getPeerCount(0, 5000);
438
+ if (count >= minPeers) {
439
+ this.logger.info(`Connectivity check passed: ${count}/${minPeers} peers connected`);
440
+ return count;
441
+ }
442
+ this.logger.debug(`Waiting for connectivity: ${count}/${minPeers} (waited ${waited}ms)`);
443
+ await sleep(waitInterval);
444
+ waited += waitInterval;
445
+ }
446
+
447
+ const finalCount = await this.getPeerCount(0, 5000);
448
+ this.logger.warn(`Connectivity check: only ${finalCount}/${minPeers} peers after ${timeoutMs}ms`);
449
+ return finalCount;
450
+ }
451
+
452
+ private getPeerCount(clientIndex: number, timeoutMs: number): Promise<number> {
453
+ return new Promise<number>(resolve => {
454
+ let resolved = false;
455
+
456
+ const handler = (msg: any) => {
457
+ if (resolved) {
458
+ return;
459
+ }
460
+ if (msg.type === 'PEER_COUNT') {
461
+ resolved = true;
462
+ clearTimeout(timeout);
463
+ this.processes[clientIndex].off('message', handler);
464
+ resolve(msg.count as number);
465
+ }
466
+ };
467
+
468
+ const timeout = setTimeout(() => {
469
+ if (resolved) {
470
+ return;
471
+ }
472
+ resolved = true;
473
+ this.processes[clientIndex].off('message', handler);
474
+ resolve(0);
475
+ }, timeoutMs);
476
+
477
+ this.processes[clientIndex].on('message', handler);
478
+ this.processes[clientIndex].send({ type: 'GET_PEER_COUNT' });
479
+ });
480
+ }
481
+
427
482
  /**
428
483
  * Run a req/resp benchmark across all worker clients.
429
484
  *
@@ -1,9 +0,0 @@
1
- import type { L2BlockSource } from '@aztec/stdlib/block';
2
- import type { ReqRespSubProtocolHandler } from '../interface.js';
3
- /**
4
- * Handler for L2 Block requests
5
- * @param l2BlockSource - source for L2 blocks
6
- * @returns the Block request handler
7
- * */
8
- export declare function reqRespBlockHandler(l2BlockSource: L2BlockSource): ReqRespSubProtocolHandler;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUl6RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pFOzs7O0tBSUs7QUFDTCx3QkFBZ0IsbUJBQW1CLENBQUMsYUFBYSxFQUFFLGFBQWEsR0FBRyx5QkFBeUIsQ0FzQjNGIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/block.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE;;;;KAIK;AACL,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,GAAG,yBAAyB,CAsB3F"}
@@ -1,32 +0,0 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { ReqRespStatus, ReqRespStatusError } from '../status.js';
4
- /**
5
- * Handler for L2 Block requests
6
- * @param l2BlockSource - source for L2 blocks
7
- * @returns the Block request handler
8
- * */ export function reqRespBlockHandler(l2BlockSource) {
9
- /**
10
- * @param peerId - the peer ID of the requester
11
- * @param msg - the block request message, which is expected to contain valid block number as a Buffer
12
- * @returns a Buffer containing the requested block data, or an empty Buffer if the block is not found
13
- * @throws ReqRespStatusError if the input msg is not a valid block number
14
- * */ return async (_peerId, msg)=>{
15
- let blockNumber;
16
- try {
17
- blockNumber = Fr.fromBuffer(msg);
18
- } catch (err) {
19
- throw new ReqRespStatusError(ReqRespStatus.BADLY_FORMED_REQUEST, {
20
- cause: err
21
- });
22
- }
23
- try {
24
- const foundBlock = await l2BlockSource.getBlock(BlockNumber(Number(blockNumber)));
25
- return foundBlock ? foundBlock.toBuffer() : Buffer.alloc(0);
26
- } catch (err) {
27
- throw new ReqRespStatusError(ReqRespStatus.INTERNAL_ERROR, {
28
- cause: err
29
- });
30
- }
31
- };
32
- }
@@ -1,37 +0,0 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import type { L2BlockSource } from '@aztec/stdlib/block';
4
-
5
- import type { PeerId } from '@libp2p/interface';
6
-
7
- import type { ReqRespSubProtocolHandler } from '../interface.js';
8
- import { ReqRespStatus, ReqRespStatusError } from '../status.js';
9
-
10
- /**
11
- * Handler for L2 Block requests
12
- * @param l2BlockSource - source for L2 blocks
13
- * @returns the Block request handler
14
- * */
15
- export function reqRespBlockHandler(l2BlockSource: L2BlockSource): ReqRespSubProtocolHandler {
16
- /**
17
- * @param peerId - the peer ID of the requester
18
- * @param msg - the block request message, which is expected to contain valid block number as a Buffer
19
- * @returns a Buffer containing the requested block data, or an empty Buffer if the block is not found
20
- * @throws ReqRespStatusError if the input msg is not a valid block number
21
- * */
22
- return async (_peerId: PeerId, msg: Buffer) => {
23
- let blockNumber: Fr;
24
- try {
25
- blockNumber = Fr.fromBuffer(msg);
26
- } catch (err: any) {
27
- throw new ReqRespStatusError(ReqRespStatus.BADLY_FORMED_REQUEST, { cause: err });
28
- }
29
-
30
- try {
31
- const foundBlock = await l2BlockSource.getBlock(BlockNumber(Number(blockNumber)));
32
- return foundBlock ? foundBlock.toBuffer() : Buffer.alloc(0);
33
- } catch (err: any) {
34
- throw new ReqRespStatusError(ReqRespStatus.INTERNAL_ERROR, { cause: err });
35
- }
36
- };
37
- }