@aztec/p2p 0.80.0 → 0.82.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 (54) hide show
  1. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  2. package/dest/bootstrap/bootstrap.js +5 -5
  3. package/dest/client/factory.js +2 -1
  4. package/dest/client/p2p_client.d.ts +2 -1
  5. package/dest/client/p2p_client.d.ts.map +1 -1
  6. package/dest/client/p2p_client.js +14 -3
  7. package/dest/config.d.ts +16 -16
  8. package/dest/config.d.ts.map +1 -1
  9. package/dest/config.js +18 -17
  10. package/dest/enr/generate-enr.d.ts +1 -1
  11. package/dest/enr/generate-enr.d.ts.map +1 -1
  12. package/dest/enr/generate-enr.js +2 -2
  13. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  14. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +13 -7
  15. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  16. package/dest/msg_validators/tx_validator/data_validator.js +5 -5
  17. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  18. package/dest/services/discv5/discV5_service.d.ts +4 -3
  19. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  20. package/dest/services/discv5/discV5_service.js +36 -21
  21. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  22. package/dest/services/libp2p/libp2p_service.js +8 -11
  23. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  24. package/dest/test-helpers/make-enrs.js +3 -4
  25. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  26. package/dest/test-helpers/make-test-p2p-clients.js +2 -6
  27. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  28. package/dest/test-helpers/reqresp-nodes.js +7 -8
  29. package/dest/testbench/worker_client_manager.d.ts +0 -4
  30. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  31. package/dest/testbench/worker_client_manager.js +3 -13
  32. package/dest/types/index.d.ts +2 -1
  33. package/dest/types/index.d.ts.map +1 -1
  34. package/dest/types/index.js +1 -0
  35. package/dest/util.d.ts +2 -7
  36. package/dest/util.d.ts.map +1 -1
  37. package/dest/util.js +12 -57
  38. package/package.json +10 -10
  39. package/src/bootstrap/bootstrap.ts +6 -5
  40. package/src/client/factory.ts +1 -1
  41. package/src/client/p2p_client.ts +24 -6
  42. package/src/config.ts +34 -32
  43. package/src/enr/generate-enr.ts +3 -2
  44. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +12 -7
  45. package/src/msg_validators/tx_validator/data_validator.ts +9 -7
  46. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -2
  47. package/src/services/discv5/discV5_service.ts +36 -23
  48. package/src/services/libp2p/libp2p_service.ts +8 -9
  49. package/src/test-helpers/make-enrs.ts +3 -4
  50. package/src/test-helpers/make-test-p2p-clients.ts +2 -7
  51. package/src/test-helpers/reqresp-nodes.ts +6 -7
  52. package/src/testbench/worker_client_manager.ts +8 -17
  53. package/src/types/index.ts +1 -0
  54. package/src/util.ts +12 -72
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IAKjD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,IAAI,CAAC,CAA0C;IACvD,OAAO,CAAC,MAAM,CAAC,CAAS;gBAGd,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,eAAe,EAC1B,MAAM,yCAAgC;IAGhD;;;;OAIG;IACU,KAAK,CAAC,MAAM,EAAE,cAAc;IAmEzC;;;OAGG;IACU,IAAI;IAOjB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,YAAY;IAMpB;;;OAGG;IACI,SAAS;IAKT,MAAM;IAKN,aAAa;IAKb,eAAe;CAIvB"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IAKjD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,IAAI,CAAC,CAA0C;IACvD,OAAO,CAAC,MAAM,CAAC,CAAS;gBAGd,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,eAAe,EAC1B,MAAM,yCAAgC;IAGhD;;;;OAIG;IACU,KAAK,CAAC,MAAM,EAAE,cAAc;IAoEzC;;;OAGG;IACU,IAAI;IAOjB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,YAAY;IAMpB;;;OAGG;IACI,SAAS;IAKT,MAAM;IAKN,aAAa;IAKb,eAAe;CAIvB"}
@@ -24,13 +24,13 @@ import { convertToMultiaddr, getPeerIdPrivateKey } from '../util.js';
24
24
  * @param config - A partial P2P configuration. No need for TCP values as well as aztec node specific values.
25
25
  * @returns An empty promise.
26
26
  */ async start(config) {
27
- const { udpListenAddress, udpAnnounceAddress } = config;
28
- const listenAddrUdp = multiaddr(convertToMultiaddr(udpListenAddress, 'udp'));
29
- if (!udpAnnounceAddress) {
30
- throw new Error('You need to provide a UDP announce address.');
27
+ const { p2pIp, p2pPort, listenAddress } = config;
28
+ const listenAddrUdp = multiaddr(convertToMultiaddr(listenAddress, p2pPort, 'udp'));
29
+ if (!p2pIp) {
30
+ throw new Error('You need to provide a P2P IP address.');
31
31
  }
32
32
  const peerIdPrivateKey = await getPeerIdPrivateKey(config, this.store);
33
- const { enr: ourEnr, peerId } = await createBootnodeENRandPeerId(peerIdPrivateKey, udpAnnounceAddress, config.l1ChainId);
33
+ const { enr: ourEnr, peerId } = await createBootnodeENRandPeerId(peerIdPrivateKey, p2pIp, p2pPort, config.l1ChainId);
34
34
  this.peerId = peerId;
35
35
  this.logger.debug(`Starting bootstrap node ${peerId} listening on ${listenAddrUdp.toString()}`);
36
36
  const metricsRegistry = new OtelMetricsAdapter(this.telemetry);
@@ -11,7 +11,8 @@ import { LibP2PService } from '../services/index.js';
11
11
  import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
12
12
  export const createP2PClient = async (clientType, _config, l2BlockSource, proofVerifier, worldStateSynchronizer, epochCache, telemetry = getTelemetryClient(), deps = {})=>{
13
13
  let config = {
14
- ..._config
14
+ ..._config,
15
+ dataStoreMapSizeKB: _config.p2pStoreMapSizeKb ?? _config.dataStoreMapSizeKB
15
16
  };
16
17
  const logger = deps.logger ?? createLogger('p2p');
17
18
  const store = deps.store ?? await createStore('p2p', 1, config, createLogger('p2p:lmdb-v2'));
@@ -1,7 +1,7 @@
1
1
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
2
  import type { L2BlockId, L2BlockSource, L2BlockStreamEvent, L2Tips } from '@aztec/stdlib/block';
3
3
  import type { P2PApi, PeerInfo, ProverCoordination } from '@aztec/stdlib/interfaces/server';
4
- import type { BlockAttestation, BlockProposal, P2PClientType } from '@aztec/stdlib/p2p';
4
+ import { BlockAttestation, type BlockProposal, type P2PClientType } from '@aztec/stdlib/p2p';
5
5
  import type { Tx, TxHash } from '@aztec/stdlib/tx';
6
6
  import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
7
7
  import type { ENR } from '@chainsafe/enr';
@@ -281,6 +281,7 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
281
281
  * @returns Empty promise.
282
282
  */
283
283
  private markTxsAsMinedFromBlocks;
284
+ private addAttestationsToPool;
284
285
  /**
285
286
  * Deletes txs from these blocks.
286
287
  * @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
@@ -1 +1 @@
1
- {"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ function _ts_decorate(decorators, target, key, desc) {
6
6
  }
7
7
  import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
8
8
  import { createLogger } from '@aztec/foundation/log';
9
+ import { BlockAttestation, ConsensusPayload } from '@aztec/stdlib/p2p';
9
10
  import { Attributes, TraceableL2BlockStream, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
10
11
  import { getP2PDefaultConfig } from '../config.js';
11
12
  import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
@@ -391,6 +392,15 @@ import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
391
392
  await this.txPool.markAsMined(txHashes, block.number);
392
393
  }
393
394
  }
395
+ async addAttestationsToPool(blocks) {
396
+ const attestations = blocks.flatMap((block)=>{
397
+ const payload = ConsensusPayload.fromBlock(block.block);
398
+ return block.signatures.filter((sig)=>!sig.isEmpty).map((signature)=>new BlockAttestation(payload, signature));
399
+ });
400
+ await this.attestationPool?.addAttestations(attestations);
401
+ const slots = blocks.map((b)=>b.block.header.getSlot()).sort((a, b)=>Number(a - b));
402
+ this.log.debug(`Added ${attestations.length} attestations for slots ${slots[0]}-${slots.at(-1)} to the pool`);
403
+ }
394
404
  /**
395
405
  * Deletes txs from these blocks.
396
406
  * @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
@@ -410,9 +420,10 @@ import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
410
420
  if (!blocks.length) {
411
421
  return Promise.resolve();
412
422
  }
413
- await this.markTxsAsMinedFromBlocks(blocks);
414
- const lastBlockNum = blocks[blocks.length - 1].number;
415
- await Promise.all(blocks.map(async (block)=>this.synchedBlockHashes.set(block.number, (await block.hash()).toString())));
423
+ await this.markTxsAsMinedFromBlocks(blocks.map((b)=>b.block));
424
+ await this.addAttestationsToPool(blocks);
425
+ const lastBlockNum = blocks.at(-1).block.number;
426
+ await Promise.all(blocks.map(async (block)=>this.synchedBlockHashes.set(block.block.number, (await block.block.hash()).toString())));
416
427
  await this.synchedLatestBlockNumber.set(lastBlockNum);
417
428
  this.log.verbose(`Synched to latest block ${lastBlockNum}`);
418
429
  await this.startServiceIfSynched();
package/dest/config.d.ts CHANGED
@@ -31,21 +31,17 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
31
31
  */
32
32
  l2QueueSize: number;
33
33
  /**
34
- * The announce address for TCP.
34
+ * The port for the P2P service.
35
35
  */
36
- tcpAnnounceAddress?: string;
36
+ p2pPort: number;
37
37
  /**
38
- * The announce address for UDP.
38
+ * The IP address for the P2P service.
39
39
  */
40
- udpAnnounceAddress?: string;
40
+ p2pIp?: string;
41
41
  /**
42
- * The listen address for TCP.
42
+ * The listen address.
43
43
  */
44
- tcpListenAddress: string;
45
- /**
46
- * The listen address for UDP.
47
- */
48
- udpListenAddress: string;
44
+ listenAddress: string;
49
45
  /**
50
46
  * An optional peer id private key. If blank, will generate a random key.
51
47
  */
@@ -128,6 +124,10 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
128
124
  * A list of trusted peers.
129
125
  */
130
126
  trustedPeers: string[];
127
+ /**
128
+ * The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKB.
129
+ */
130
+ p2pStoreMapSizeKb?: number;
131
131
  }
132
132
  export declare const p2pConfigMappings: ConfigMappingsType<P2PConfig>;
133
133
  /**
@@ -139,7 +139,7 @@ export declare function getP2PDefaultConfig(): P2PConfig;
139
139
  /**
140
140
  * Required P2P config values for a bootstrap node.
141
141
  */
142
- export type BootnodeConfig = Pick<P2PConfig, 'udpAnnounceAddress' | 'peerIdPrivateKey' | 'bootstrapNodes'> & Required<Pick<P2PConfig, 'udpListenAddress'>> & Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKB'> & Pick<ChainConfig, 'l1ChainId'>;
142
+ export type BootnodeConfig = Pick<P2PConfig, 'p2pIp' | 'p2pPort' | 'peerIdPrivateKey' | 'bootstrapNodes' | 'listenAddress'> & Required<Pick<P2PConfig, 'p2pIp' | 'p2pPort'>> & Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKB'> & Pick<ChainConfig, 'l1ChainId'>;
143
143
  export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
144
144
  l1ChainId: unknown;
145
145
  version: unknown;
@@ -154,10 +154,9 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
154
154
  debugDisableColocationPenalty: unknown;
155
155
  peerCheckIntervalMS: unknown;
156
156
  l2QueueSize: unknown;
157
- tcpAnnounceAddress: unknown;
158
- udpAnnounceAddress: unknown;
159
- tcpListenAddress: unknown;
160
- udpListenAddress: unknown;
157
+ p2pPort: unknown;
158
+ p2pIp: unknown;
159
+ listenAddress: unknown;
161
160
  peerIdPrivateKey: unknown;
162
161
  bootstrapNodes: unknown;
163
162
  bootstrapNodeEnrVersionCheck: unknown;
@@ -181,5 +180,6 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
181
180
  peerPenaltyValues: unknown;
182
181
  archivedTxLimit: unknown;
183
182
  trustedPeers: unknown;
184
- }, "udpAnnounceAddress" | "udpListenAddress" | "peerIdPrivateKey" | "bootstrapNodes" | "l1ChainId" | "dataDirectory" | "dataStoreMapSizeKB">>;
183
+ p2pStoreMapSizeKb: unknown;
184
+ }, "p2pPort" | "p2pIp" | "listenAddress" | "peerIdPrivateKey" | "bootstrapNodes" | "l1ChainId" | "dataDirectory" | "dataStoreMapSizeKB">>;
185
185
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dest/config.js CHANGED
@@ -28,23 +28,19 @@ export const p2pConfigMappings = {
28
28
  description: 'Size of queue of L2 blocks to store.',
29
29
  ...numberConfigHelper(1_000)
30
30
  },
31
- tcpListenAddress: {
32
- env: 'P2P_TCP_LISTEN_ADDR',
33
- defaultValue: '0.0.0.0:40400',
34
- description: 'The listen address for TCP. Format: <IP_ADDRESS>:<PORT>.'
31
+ listenAddress: {
32
+ env: 'P2P_LISTEN_ADDR',
33
+ defaultValue: '0.0.0.0',
34
+ description: 'The listen address. ipv4 address.'
35
35
  },
36
- udpListenAddress: {
37
- env: 'P2P_UDP_LISTEN_ADDR',
38
- defaultValue: '0.0.0.0:40400',
39
- description: 'The listen address for UDP. Format: <IP_ADDRESS>:<PORT>.'
36
+ p2pPort: {
37
+ env: 'P2P_PORT',
38
+ description: 'The port for the P2P service.',
39
+ ...numberConfigHelper(40400)
40
40
  },
41
- tcpAnnounceAddress: {
42
- env: 'P2P_TCP_ANNOUNCE_ADDR',
43
- description: 'The announce address for TCP. Format: <IP_ADDRESS>:<PORT>. Leave IP_ADDRESS blank to query for public IP.'
44
- },
45
- udpAnnounceAddress: {
46
- env: 'P2P_UDP_ANNOUNCE_ADDR',
47
- description: 'The announce address for UDP. Format: <IP_ADDRESS>:<PORT>. Leave IP_ADDRESS blank to query for public IP.'
41
+ p2pIp: {
42
+ env: 'P2P_IP',
43
+ description: 'The IP address for the P2P service. ipv4 address.'
48
44
  },
49
45
  peerIdPrivateKey: {
50
46
  env: 'PEER_ID_PRIVATE_KEY',
@@ -171,6 +167,11 @@ export const p2pConfigMappings = {
171
167
  description: 'A list of trusted peers ENRs. Separated by commas.',
172
168
  defaultValue: []
173
169
  },
170
+ p2pStoreMapSizeKb: {
171
+ env: 'P2P_STORE_MAP_SIZE_KB',
172
+ parseEnv: (val)=>val ? +val : undefined,
173
+ description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKB.'
174
+ },
174
175
  ...p2pReqRespConfigMappings,
175
176
  ...chainConfigMappings
176
177
  };
@@ -184,9 +185,9 @@ export function getP2PDefaultConfig() {
184
185
  return getDefaultConfig(p2pConfigMappings);
185
186
  }
186
187
  const bootnodeConfigKeys = [
187
- 'udpAnnounceAddress',
188
+ 'p2pIp',
189
+ 'p2pPort',
188
190
  'peerIdPrivateKey',
189
- 'udpListenAddress',
190
191
  'dataDirectory',
191
192
  'dataStoreMapSizeKB',
192
193
  'bootstrapNodes',
@@ -1,7 +1,7 @@
1
1
  import type { LogFn } from '@aztec/foundation/log';
2
2
  import { SignableENR } from '@chainsafe/enr';
3
3
  import type { PeerId } from '@libp2p/interface';
4
- export declare function createBootnodeENRandPeerId(privateKey: string, udpAnnounceAddress: string, l1ChainId: number): Promise<{
4
+ export declare function createBootnodeENRandPeerId(privateKey: string, p2pIp: string, p2pPort: number, l1ChainId: number): Promise<{
5
5
  enr: SignableENR;
6
6
  peerId: PeerId;
7
7
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-enr.d.ts","sourceRoot":"","sources":["../../src/enr/generate-enr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAO,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAOhD,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAa/C;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAQrD"}
1
+ {"version":3,"file":"generate-enr.d.ts","sourceRoot":"","sources":["../../src/enr/generate-enr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAO,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAOhD,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAa/C;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAQrD"}
@@ -4,10 +4,10 @@ import { multiaddr } from '@multiformats/multiaddr';
4
4
  import { AZTEC_ENR_KEY } from '../types/index.js';
5
5
  import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js';
6
6
  import { setAztecEnrKey } from '../versioning.js';
7
- export async function createBootnodeENRandPeerId(privateKey, udpAnnounceAddress, l1ChainId) {
7
+ export async function createBootnodeENRandPeerId(privateKey, p2pIp, p2pPort, l1ChainId) {
8
8
  const peerId = await createLibP2PPeerIdFromPrivateKey(privateKey);
9
9
  const enr = SignableENR.createFromPeerId(peerId);
10
- const publicAddr = multiaddr(convertToMultiaddr(udpAnnounceAddress, 'udp'));
10
+ const publicAddr = multiaddr(convertToMultiaddr(p2pIp, p2pPort, 'udp'));
11
11
  enr.setLocationMultiaddr(publicAddr);
12
12
  const config = {
13
13
  ...emptyChainConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,wBAAgB,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,eAAe,QAuNhF"}
1
+ {"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,wBAAgB,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,eAAe,QA4NhF"}
@@ -47,7 +47,7 @@ export function describeAttestationPool(getAttestationPool) {
47
47
  const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlot(BigInt(slotNumber), archive.toString());
48
48
  expect(retreivedAttestationsAfterDelete.length).toBe(0);
49
49
  });
50
- it('Should handle duplicate proposals in a slot', async ()=>{
50
+ it('should handle duplicate proposals in a slot', async ()=>{
51
51
  const slotNumber = 420;
52
52
  const archive = Fr.random();
53
53
  const txs = [
@@ -64,14 +64,20 @@ export function describeAttestationPool(getAttestationPool) {
64
64
  for(let i = 0; i < NUMBER_OF_SIGNERS_PER_TEST; i++){
65
65
  attestations.push(await mockAttestation(signer, slotNumber, archive, txs));
66
66
  }
67
+ // Add them to store and check we end up with only one
67
68
  await ap.addAttestations(attestations);
68
69
  const retreivedAttestations = await ap.getAttestationsForSlot(BigInt(slotNumber), archive.toString());
69
70
  expect(retreivedAttestations.length).toBe(1);
70
71
  expect(retreivedAttestations[0].toBuffer()).toEqual(attestations[0].toBuffer());
71
72
  expect(retreivedAttestations[0].payload.txHashes).toEqual(txs);
72
73
  expect((await retreivedAttestations[0].getSender()).toString()).toEqual(signer.address.toString());
74
+ // Try adding them on another operation and check they are still not duplicated
75
+ await ap.addAttestations([
76
+ attestations[0]
77
+ ]);
78
+ expect(await ap.getAttestationsForSlot(BigInt(slotNumber), archive.toString())).toHaveLength(1);
73
79
  });
74
- it('Should store attestations by differing slot', async ()=>{
80
+ it('should store attestations by differing slot', async ()=>{
75
81
  const slotNumbers = [
76
82
  1,
77
83
  2,
@@ -89,7 +95,7 @@ export function describeAttestationPool(getAttestationPool) {
89
95
  expect(retreivedAttestations[0].payload.header.globalVariables.slotNumber).toEqual(slot);
90
96
  }
91
97
  });
92
- it('Should store attestations by differing slot and archive', async ()=>{
98
+ it('should store attestations by differing slot and archive', async ()=>{
93
99
  const slotNumbers = [
94
100
  1,
95
101
  1,
@@ -113,7 +119,7 @@ export function describeAttestationPool(getAttestationPool) {
113
119
  expect(retreivedAttestations[0].payload.header.globalVariables.slotNumber).toEqual(slot);
114
120
  }
115
121
  });
116
- it('Should delete attestations', async ()=>{
122
+ it('should delete attestations', async ()=>{
117
123
  const slotNumber = 420;
118
124
  const archive = Fr.random();
119
125
  const attestations = await Promise.all(signers.map((signer)=>mockAttestation(signer, slotNumber, archive)));
@@ -128,7 +134,7 @@ export function describeAttestationPool(getAttestationPool) {
128
134
  const gottenAfterDelete = await ap.getAttestationsForSlot(BigInt(slotNumber), proposalId);
129
135
  expect(gottenAfterDelete.length).toBe(0);
130
136
  });
131
- it('Should blanket delete attestations per slot', async ()=>{
137
+ it('should blanket delete attestations per slot', async ()=>{
132
138
  const slotNumber = 420;
133
139
  const archive = Fr.random();
134
140
  const attestations = await Promise.all(signers.map((signer)=>mockAttestation(signer, slotNumber, archive)));
@@ -141,7 +147,7 @@ export function describeAttestationPool(getAttestationPool) {
141
147
  const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlot(BigInt(slotNumber), proposalId);
142
148
  expect(retreivedAttestationsAfterDelete.length).toBe(0);
143
149
  });
144
- it('Should blanket delete attestations per slot and proposal', async ()=>{
150
+ it('should blanket delete attestations per slot and proposal', async ()=>{
145
151
  const slotNumber = 420;
146
152
  const archive = Fr.random();
147
153
  const attestations = await Promise.all(signers.map((signer)=>mockAttestation(signer, slotNumber, archive)));
@@ -165,7 +171,7 @@ export function describeAttestationPool(getAttestationPool) {
165
171
  expect(retreivedAttestationsAfterDeleteForOtherProposal.length).toBe(NUMBER_OF_SIGNERS_PER_TEST);
166
172
  compareAttestations(retreivedAttestationsAfterDeleteForOtherProposal, attestations2);
167
173
  });
168
- it('Should delete attestations older than a given slot', async ()=>{
174
+ it('should delete attestations older than a given slot', async ()=>{
169
175
  const slotNumbers = [
170
176
  1,
171
177
  2,
@@ -1 +1 @@
1
- {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjF,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAG/C,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAkGtD"}
1
+ {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjF,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAG/C,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAoGtD"}
@@ -14,7 +14,7 @@ export class DataTxValidator {
14
14
  ...tx.data.getNonRevertiblePublicCallRequests()
15
15
  ];
16
16
  if (callRequests.length !== tx.enqueuedPublicFunctionCalls.length) {
17
- this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} because of mismatch number of execution requests for public calls. Expected ${callRequests.length}. Got ${tx.enqueuedPublicFunctionCalls.length}.`);
17
+ this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatch number of execution requests for public calls. Expected ${callRequests.length}. Got ${tx.enqueuedPublicFunctionCalls.length}.`);
18
18
  return {
19
19
  result: 'invalid',
20
20
  reason: [
@@ -60,7 +60,7 @@ export class DataTxValidator {
60
60
  const contractClassLogsHashes = tx.data.getNonEmptyContractClassLogsHashes();
61
61
  const hashedContractClasslogs = await Promise.all(tx.contractClassLogs.map((l)=>l.hash()));
62
62
  if (contractClassLogsHashes.length !== hashedContractClasslogs.length) {
63
- this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} because of mismatched number of contract class logs. Expected ${contractClassLogsHashes.length}. Got ${hashedContractClasslogs.length}.`);
63
+ this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched number of contract class logs. Expected ${contractClassLogsHashes.length}. Got ${hashedContractClasslogs.length}.`);
64
64
  return {
65
65
  result: 'invalid',
66
66
  reason: [
@@ -73,7 +73,7 @@ export class DataTxValidator {
73
73
  if (!logHash.value.equals(hashedLog)) {
74
74
  if (hashedContractClasslogs.some((l)=>logHash.value.equals(l))) {
75
75
  const matchingLogIndex = hashedContractClasslogs.findIndex((l)=>logHash.value.equals(l));
76
- this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} because of mismatched contract class logs indices. Expected ${i} from the kernel's log hashes. Got ${matchingLogIndex} in the tx.`);
76
+ this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs indices. Expected ${i} from the kernel's log hashes. Got ${matchingLogIndex} in the tx.`);
77
77
  return {
78
78
  result: 'invalid',
79
79
  reason: [
@@ -81,7 +81,7 @@ export class DataTxValidator {
81
81
  ]
82
82
  };
83
83
  } else {
84
- this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} because of mismatched contract class logs. Expected hash ${logHash.value} from the kernels. Got ${hashedLog} in the tx.`);
84
+ this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs. Expected hash ${logHash.value} from the kernels. Got ${hashedLog} in the tx.`);
85
85
  return {
86
86
  result: 'invalid',
87
87
  reason: [
@@ -91,7 +91,7 @@ export class DataTxValidator {
91
91
  }
92
92
  }
93
93
  if (logHash.logHash.length !== tx.contractClassLogs[i].getEmittedLength()) {
94
- this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} because of mismatched contract class logs length. Expected ${logHash.logHash.length} from the kernel's log hashes. Got ${tx.contractClassLogs[i].getEmittedLength()} in the tx.`);
94
+ this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs length. Expected ${logHash.logHash.length} from the kernel's log hashes. Got ${tx.contractClassLogs[i].getEmittedLength()} in the tx.`);
95
95
  return {
96
96
  result: 'invalid',
97
97
  reason: [
@@ -9,7 +9,7 @@ export class TxProofValidator {
9
9
  }
10
10
  async validateTx(tx) {
11
11
  if (!await this.verifier.verifyProof(tx)) {
12
- this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} for invalid proof`);
12
+ this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} for invalid proof`);
13
13
  return {
14
14
  result: 'invalid',
15
15
  reason: [
@@ -17,7 +17,7 @@ export class TxProofValidator {
17
17
  ]
18
18
  };
19
19
  }
20
- this.#log.trace(`Accepted ${Tx.getHash(tx)} with valid proof`);
20
+ this.#log.trace(`Accepted ${await Tx.getHash(tx)} with valid proof`);
21
21
  return {
22
22
  result: 'valid'
23
23
  };
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import { type TelemetryClient } from '@aztec/telemetry-client';
3
+ import { type IDiscv5CreateOptions } from '@chainsafe/discv5';
3
4
  import { ENR } from '@chainsafe/enr';
4
5
  import type { PeerId } from '@libp2p/interface';
5
6
  import EventEmitter from 'events';
@@ -18,14 +19,14 @@ export declare class DiscV5Service extends EventEmitter implements PeerDiscovery
18
19
  private enr;
19
20
  /** Version identifiers. */
20
21
  private versions;
21
- /** UDP listen addr */
22
- private listenMultiAddrUdp;
23
22
  private currentState;
24
23
  readonly bootstrapNodes: string[];
25
24
  private bootstrapNodePeerIds;
26
25
  private bootstrapNodeEnrs;
27
26
  private startTime;
28
- constructor(peerId: PeerId, config: P2PConfig, telemetry?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger);
27
+ private handlers;
28
+ constructor(peerId: PeerId, config: P2PConfig, telemetry?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger, configOverrides?: Partial<IDiscv5CreateOptions>);
29
+ private onMultiaddrUpdated;
29
30
  start(): Promise<void>;
30
31
  runRandomNodesQuery(): Promise<void>;
31
32
  getAllPeers(): ENR[];
@@ -1 +1 @@
1
- {"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":";AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGvG,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAsB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IAxBhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAE5C,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,sBAAsB;IACtB,OAAO,CAAC,kBAAkB,CAAY;IAEtC,OAAO,CAAC,YAAY,CAA8B;IAElD,SAAgB,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9C,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,SAAS,CAAK;gBAGZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACzB,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC;IA+DxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,WAAW,IAAI,GAAG,EAAE;IAIpB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASpB,UAAU;IAOxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;CA0BpB"}
1
+ {"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":";AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEvG,OAAO,EAAmC,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAyB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IA3BhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAE5C,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,YAAY,CAA8B;IAElD,SAAgB,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9C,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,QAAQ,CAId;gBAGQ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACzB,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC,EACnD,eAAe,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAgErD,OAAO,CAAC,kBAAkB;IAOb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,WAAW,IAAI,GAAG,EAAE;IAIpB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAUpB,UAAU;IAOxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;CA0BpB"}
@@ -20,42 +20,47 @@ const delayBeforeStart = 2000; // 2sec
20
20
  /** The Discv5 instance */ discv5;
21
21
  /** This instance's ENR */ enr;
22
22
  /** Version identifiers. */ versions;
23
- /** UDP listen addr */ listenMultiAddrUdp;
24
23
  currentState;
25
24
  bootstrapNodes;
26
25
  bootstrapNodePeerIds;
27
26
  bootstrapNodeEnrs;
28
27
  startTime;
29
- constructor(peerId, config, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service')){
30
- super(), this.peerId = peerId, this.config = config, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodes = [], this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.startTime = 0;
31
- const { tcpAnnounceAddress, udpAnnounceAddress, udpListenAddress, bootstrapNodes } = config;
28
+ handlers;
29
+ constructor(peerId, config, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service'), configOverrides = {}){
30
+ super(), this.peerId = peerId, this.config = config, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodes = [], this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.startTime = 0, this.handlers = {
31
+ onMultiaddrUpdated: this.onMultiaddrUpdated.bind(this),
32
+ onDiscovered: this.onDiscovered.bind(this),
33
+ onEnrAdded: this.onEnrAdded.bind(this)
34
+ };
35
+ const { p2pIp, p2pPort, bootstrapNodes } = config;
32
36
  this.bootstrapNodes = bootstrapNodes ?? [];
33
37
  this.bootstrapNodeEnrs = this.bootstrapNodes.map((x)=>ENR.decodeTxt(x));
34
38
  // create ENR from PeerId
35
39
  this.enr = SignableENR.createFromPeerId(peerId);
36
40
  // Add aztec identification to ENR
37
41
  this.versions = setAztecEnrKey(this.enr, config);
38
- if (!tcpAnnounceAddress) {
39
- throw new Error('You need to provide at least a TCP announce address.');
42
+ const bindAddrs = {
43
+ ip4: multiaddr(convertToMultiaddr(config.listenAddress, p2pPort, 'udp'))
44
+ };
45
+ if (p2pIp) {
46
+ const multiAddrTcp = multiaddr(`${convertToMultiaddr(p2pIp, p2pPort, 'tcp')}/p2p/${peerId.toString()}`);
47
+ // if no udp announce address is provided, use the tcp announce address
48
+ const multiAddrUdp = multiaddr(`${convertToMultiaddr(p2pIp, p2pPort, 'udp')}/p2p/${peerId.toString()}`);
49
+ // set location multiaddr in ENR record
50
+ this.enr.setLocationMultiaddr(multiAddrUdp);
51
+ this.enr.setLocationMultiaddr(multiAddrTcp);
40
52
  }
41
- const multiAddrTcp = multiaddr(`${convertToMultiaddr(tcpAnnounceAddress, 'tcp')}/p2p/${peerId.toString()}`);
42
- // if no udp announce address is provided, use the tcp announce address
43
- const multiAddrUdp = multiaddr(`${convertToMultiaddr(udpAnnounceAddress || tcpAnnounceAddress, 'udp')}/p2p/${peerId.toString()}`);
44
- this.listenMultiAddrUdp = multiaddr(convertToMultiaddr(udpListenAddress, 'udp'));
45
- // set location multiaddr in ENR record
46
- this.enr.setLocationMultiaddr(multiAddrUdp);
47
- this.enr.setLocationMultiaddr(multiAddrTcp);
48
53
  const metricsRegistry = new OtelMetricsAdapter(telemetry);
49
54
  this.discv5 = Discv5.create({
50
55
  enr: this.enr,
51
56
  peerId,
52
- bindAddrs: {
53
- ip4: this.listenMultiAddrUdp
54
- },
57
+ bindAddrs,
55
58
  config: {
56
59
  lookupTimeout: 2000,
57
60
  requestTimeout: 2000,
58
- allowUnverifiedSessions: true
61
+ allowUnverifiedSessions: true,
62
+ enrUpdate: !p2pIp ? true : false,
63
+ ...configOverrides.config
59
64
  },
60
65
  metricsRegistry
61
66
  });
@@ -77,8 +82,17 @@ const delayBeforeStart = 2000; // 2sec
77
82
  return origOnEstablished(...args);
78
83
  }
79
84
  };
80
- this.discv5.on(Discv5Event.DISCOVERED, this.onDiscovered.bind(this));
81
- this.discv5.on(Discv5Event.ENR_ADDED, this.onEnrAdded.bind(this));
85
+ this.discv5.on(Discv5Event.DISCOVERED, this.handlers.onDiscovered);
86
+ this.discv5.on(Discv5Event.ENR_ADDED, this.handlers.onEnrAdded);
87
+ this.discv5.on(Discv5Event.MULTIADDR_UPDATED, this.handlers.onMultiaddrUpdated);
88
+ }
89
+ onMultiaddrUpdated(m) {
90
+ // We want to update our tcp port to match the udp port
91
+ const multiAddrTcp = multiaddr(convertToMultiaddr(m.nodeAddress().address, this.config.p2pPort, 'tcp'));
92
+ this.enr.setLocationMultiaddr(multiAddrTcp);
93
+ this.logger.info('Multiaddr updated', {
94
+ multiaddr: multiaddr.toString()
95
+ });
82
96
  }
83
97
  async start() {
84
98
  if (this.currentState === PeerDiscoveryState.RUNNING) {
@@ -148,8 +162,9 @@ const delayBeforeStart = 2000; // 2sec
148
162
  return this.bootstrapNodePeerIds.some((node)=>node.equals(peerId));
149
163
  }
150
164
  async stop() {
151
- await this.discv5.off(Discv5Event.DISCOVERED, this.onDiscovered);
152
- await this.discv5.off(Discv5Event.ENR_ADDED, this.onEnrAdded);
165
+ await this.discv5.off(Discv5Event.DISCOVERED, this.handlers.onDiscovered);
166
+ await this.discv5.off(Discv5Event.ENR_ADDED, this.handlers.onEnrAdded);
167
+ await this.discv5.off(Discv5Event.MULTIADDR_UPDATED, this.handlers.onMultiaddrUpdated);
153
168
  await this.discv5.stop();
154
169
  this.currentState = PeerDiscoveryState.STOPPED;
155
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}