@aztec/p2p 0.86.0-starknet.1 → 0.87.0

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 (132) hide show
  1. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  2. package/dest/client/factory.d.ts +1 -1
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +11 -13
  5. package/dest/client/interface.d.ts +10 -1
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +18 -6
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +103 -53
  10. package/dest/config.d.ts +5 -6
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +6 -11
  13. package/dest/enr/generate-enr.d.ts +7 -0
  14. package/dest/enr/generate-enr.d.ts.map +1 -1
  15. package/dest/enr/generate-enr.js +23 -2
  16. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  17. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  18. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -0
  19. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  20. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +44 -14
  21. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +2 -0
  22. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
  23. package/dest/mem_pools/tx_pool/memory_tx_pool.js +6 -0
  24. package/dest/mem_pools/tx_pool/tx_pool.d.ts +7 -0
  25. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  26. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  27. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +13 -5
  28. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  29. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  30. package/dest/msg_validators/tx_validator/data_validator.js +15 -14
  31. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
  32. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  33. package/dest/msg_validators/tx_validator/double_spend_validator.js +2 -2
  34. package/dest/msg_validators/tx_validator/factory.d.ts +14 -0
  35. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  36. package/dest/msg_validators/tx_validator/factory.js +62 -0
  37. package/dest/msg_validators/tx_validator/gas_validator.js +3 -3
  38. package/dest/msg_validators/tx_validator/metadata_validator.js +5 -5
  39. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  40. package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
  41. package/dest/msg_validators/tx_validator/tx_proof_validator.js +1 -1
  42. package/dest/services/discv5/discV5_service.d.ts +2 -2
  43. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  44. package/dest/services/discv5/discV5_service.js +9 -13
  45. package/dest/services/dummy_service.d.ts +3 -3
  46. package/dest/services/dummy_service.d.ts.map +1 -1
  47. package/dest/services/dummy_service.js +6 -1
  48. package/dest/services/encoding.d.ts +1 -3
  49. package/dest/services/encoding.d.ts.map +1 -1
  50. package/dest/services/libp2p/libp2p_service.d.ts +4 -2
  51. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  52. package/dest/services/libp2p/libp2p_service.js +87 -88
  53. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  54. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  55. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  56. package/dest/services/peer-manager/peer_manager.js +11 -2
  57. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  58. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -2
  59. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  60. package/dest/services/reqresp/connection-sampler/connection_sampler.js +41 -21
  61. package/dest/services/reqresp/interface.d.ts +1 -3
  62. package/dest/services/reqresp/interface.d.ts.map +1 -1
  63. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  64. package/dest/services/reqresp/protocols/goodbye.d.ts +0 -2
  65. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  66. package/dest/services/reqresp/protocols/goodbye.js +1 -1
  67. package/dest/services/reqresp/protocols/ping.d.ts +0 -2
  68. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  69. package/dest/services/reqresp/protocols/status.d.ts +0 -2
  70. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  71. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  72. package/dest/services/reqresp/reqresp.d.ts +1 -3
  73. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  74. package/dest/services/reqresp/reqresp.js +2 -2
  75. package/dest/services/service.d.ts +3 -2
  76. package/dest/services/service.d.ts.map +1 -1
  77. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  78. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  79. package/dest/test-helpers/make-test-p2p-clients.js +2 -2
  80. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  81. package/dest/test-helpers/reqresp-nodes.js +1 -1
  82. package/dest/testbench/p2p_client_testbench_worker.js +9 -6
  83. package/dest/testbench/testbench.js +1 -1
  84. package/dest/testbench/worker_client_manager.d.ts +0 -1
  85. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  86. package/dest/testbench/worker_client_manager.js +2 -2
  87. package/dest/types/index.d.ts +1 -0
  88. package/dest/types/index.d.ts.map +1 -1
  89. package/dest/types/index.js +1 -0
  90. package/dest/versioning.d.ts +2 -2
  91. package/dest/versioning.d.ts.map +1 -1
  92. package/dest/versioning.js +6 -1
  93. package/package.json +15 -15
  94. package/src/bootstrap/bootstrap.ts +1 -1
  95. package/src/client/factory.ts +33 -32
  96. package/src/client/interface.ts +13 -1
  97. package/src/client/p2p_client.ts +129 -55
  98. package/src/config.ts +11 -18
  99. package/src/enr/generate-enr.ts +33 -3
  100. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +2 -2
  101. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +4 -1
  102. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +72 -34
  103. package/src/mem_pools/tx_pool/memory_tx_pool.ts +12 -1
  104. package/src/mem_pools/tx_pool/tx_pool.ts +9 -0
  105. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +9 -3
  106. package/src/msg_validators/tx_validator/block_header_validator.ts +1 -1
  107. package/src/msg_validators/tx_validator/data_validator.ts +24 -18
  108. package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
  109. package/src/msg_validators/tx_validator/factory.ts +94 -0
  110. package/src/msg_validators/tx_validator/gas_validator.ts +3 -3
  111. package/src/msg_validators/tx_validator/metadata_validator.ts +5 -5
  112. package/src/msg_validators/tx_validator/phases_validator.ts +6 -2
  113. package/src/msg_validators/tx_validator/tx_proof_validator.ts +1 -1
  114. package/src/services/discv5/discV5_service.ts +14 -12
  115. package/src/services/dummy_service.ts +8 -2
  116. package/src/services/libp2p/libp2p_service.ts +95 -107
  117. package/src/services/peer-manager/metrics.ts +4 -1
  118. package/src/services/peer-manager/peer_manager.ts +18 -1
  119. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +5 -1
  120. package/src/services/reqresp/connection-sampler/connection_sampler.ts +42 -19
  121. package/src/services/reqresp/metrics.ts +4 -1
  122. package/src/services/reqresp/protocols/goodbye.ts +1 -1
  123. package/src/services/reqresp/rate-limiter/rate_limiter.ts +4 -1
  124. package/src/services/reqresp/reqresp.ts +2 -1
  125. package/src/services/service.ts +4 -1
  126. package/src/test-helpers/make-test-p2p-clients.ts +2 -1
  127. package/src/test-helpers/reqresp-nodes.ts +1 -1
  128. package/src/testbench/p2p_client_testbench_worker.ts +8 -4
  129. package/src/testbench/testbench.ts +1 -1
  130. package/src/testbench/worker_client_manager.ts +2 -2
  131. package/src/types/index.ts +1 -0
  132. package/src/versioning.ts +8 -1
@@ -1,5 +1,6 @@
1
1
  import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
2
2
  import type { BlockAttestation, BlockProposal, Gossipable } from '@aztec/stdlib/p2p';
3
+ import type { Tx } from '@aztec/stdlib/tx';
3
4
 
4
5
  import type { ENR } from '@chainsafe/enr';
5
6
  import type { PeerId } from '@libp2p/interface';
@@ -32,7 +33,7 @@ export interface P2PService {
32
33
  * Called to have the given transaction propagated through the P2P network.
33
34
  * @param message - The message to be propagated.
34
35
  */
35
- propagate<T extends Gossipable>(message: T): void;
36
+ propagate<T extends Gossipable>(message: T): Promise<void>;
36
37
 
37
38
  /**
38
39
  * Request information from peers via the request response protocol.
@@ -67,6 +68,8 @@ export interface P2PService {
67
68
  getEnr(): ENR | undefined;
68
69
 
69
70
  getPeers(includePending?: boolean): PeerInfo[];
71
+
72
+ validate(txs: Tx[]): Promise<void>;
70
73
  }
71
74
 
72
75
  /**
@@ -85,6 +85,7 @@ export async function makeTestP2PClient(
85
85
  proofVerifier,
86
86
  mockWorldState,
87
87
  mockEpochCache,
88
+ 'test-p2p-client',
88
89
  undefined,
89
90
  deps,
90
91
  );
@@ -108,7 +109,7 @@ export async function makeTestP2PClients(numberOfPeers: number, testConfig: Make
108
109
  try {
109
110
  ports = await getPorts(numberOfPeers);
110
111
  break;
111
- } catch (err) {
112
+ } catch {
112
113
  await sleep(1000);
113
114
  }
114
115
  }
@@ -120,7 +120,7 @@ export async function createTestLibP2PService<T extends P2PClientType>(
120
120
  bootstrapNodeEnrVersionCheck: false,
121
121
  ...chainConfig,
122
122
  } as P2PConfig & DataStoreConfig;
123
- const discoveryService = new DiscV5Service(peerId, config, telemetry);
123
+ const discoveryService = new DiscV5Service(peerId, config, 'test-reqresp-node', telemetry);
124
124
  const proofVerifier = new AlwaysTrueCircuitVerifier();
125
125
 
126
126
  // No bootstrap nodes provided as the libp2p service will register them in the constructor
@@ -13,7 +13,7 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
13
13
  import type { L2BlockSource } from '@aztec/stdlib/block';
14
14
  import type { ContractDataSource } from '@aztec/stdlib/contract';
15
15
  import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
16
- import { P2PClientType } from '@aztec/stdlib/p2p';
16
+ import { P2PClientType, P2PMessage } from '@aztec/stdlib/p2p';
17
17
  import { Tx, TxStatus } from '@aztec/stdlib/tx';
18
18
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
19
19
 
@@ -44,11 +44,13 @@ function mockTxPool(): TxPool {
44
44
  getAllTxs: () => Promise.resolve([]),
45
45
  getAllTxHashes: () => Promise.resolve([]),
46
46
  getPendingTxHashes: () => Promise.resolve([]),
47
+ getPendingTxCount: () => Promise.resolve(0),
47
48
  getMinedTxHashes: () => Promise.resolve([]),
48
49
  getTxStatus: () => Promise.resolve(TxStatus.PENDING),
49
50
  getTxsByHash: () => Promise.resolve([]),
50
51
  hasTxs: () => Promise.resolve([]),
51
52
  setMaxTxPoolSize: () => Promise.resolve(),
53
+ markTxsAsNonEvictable: () => Promise.resolve(),
52
54
  };
53
55
  }
54
56
 
@@ -124,9 +126,10 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
124
126
  this.disableTxValidation = disable;
125
127
  }
126
128
 
127
- protected override async handleGossipedTx(msg: Message, msgId: string, source: PeerId) {
129
+ protected override async handleGossipedTx(payload: Buffer, msgId: string, source: PeerId) {
128
130
  if (this.disableTxValidation) {
129
- const tx = Tx.fromBuffer(Buffer.from(msg.data));
131
+ const p2pMessage = P2PMessage.fromMessageData(payload);
132
+ const tx = Tx.fromBuffer(p2pMessage.payload);
130
133
  this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Accept);
131
134
 
132
135
  const txHash = await tx.getTxHash();
@@ -134,7 +137,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
134
137
  this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
135
138
  await this.mempools.txPool.addTxs([tx]);
136
139
  } else {
137
- await super.handleGossipedTx(msg, msgId, source);
140
+ await super.handleGossipedTx(payload, msgId, source);
138
141
  }
139
142
  }
140
143
 
@@ -179,6 +182,7 @@ process.on('message', async msg => {
179
182
  proofVerifier,
180
183
  worldState,
181
184
  epochCache,
185
+ 'test-p2p-bench-worker',
182
186
  telemetry,
183
187
  deps,
184
188
  );
@@ -21,7 +21,7 @@ async function main() {
21
21
  }
22
22
 
23
23
  const configPath = path.join(__dirname, '../../testbench/configurations', configFile);
24
- const config = await import(configPath, { assert: { type: 'json' } });
24
+ const config = await import(configPath, { with: { type: 'json' } });
25
25
  const testConfig = { ...testChainConfig, ...config.default };
26
26
  const numberOfClients = config.default.numberOfClients;
27
27
 
@@ -257,7 +257,7 @@ class WorkerClientManager {
257
257
  // Try to gracefully stop the process
258
258
  try {
259
259
  process.send({ type: 'STOP' });
260
- } catch (e) {
260
+ } catch {
261
261
  // If sending the message fails, force kill immediately
262
262
  clearTimeout(forceKillTimeout);
263
263
  try {
@@ -291,7 +291,7 @@ class WorkerClientManager {
291
291
  if (!p.killed) {
292
292
  p.kill('SIGKILL');
293
293
  }
294
- } catch (e) {
294
+ } catch {
295
295
  // Ignore errors when force killing
296
296
  }
297
297
  });
@@ -35,3 +35,4 @@ export enum GossipSubEvent {
35
35
  * Aztec network specific types
36
36
  */
37
37
  export const AZTEC_ENR_KEY = 'aztec';
38
+ export const AZTEC_ENR_CLIENT_VERSION_KEY = 'ver';
package/src/versioning.ts CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  import type { SignableENR } from '@chainsafe/enr';
13
13
  import xxhashFactory from 'xxhash-wasm';
14
14
 
15
- import { AZTEC_ENR_KEY } from './types/index.js';
15
+ import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
16
16
 
17
17
  const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
18
18
  const XX_HASH_LEN = 8;
@@ -31,6 +31,13 @@ export function setAztecEnrKey(enr: SignableENR, config: ChainConfig, useXxHash
31
31
  return versions;
32
32
  }
33
33
 
34
+ /** Sets the Aztec client version on ENR record **/
35
+ export function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: string) {
36
+ if (clientVersion) {
37
+ enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
38
+ }
39
+ }
40
+
34
41
  /** Checks the given value from an ENR record against the expected versions. */
35
42
  export function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions) {
36
43
  if (enrValue.length === XX_HASH_LEN) {