@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.
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +5 -5
- package/dest/client/factory.js +2 -1
- package/dest/client/p2p_client.d.ts +2 -1
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +14 -3
- package/dest/config.d.ts +16 -16
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +18 -17
- package/dest/enr/generate-enr.d.ts +1 -1
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +2 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +13 -7
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +5 -5
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
- package/dest/services/discv5/discV5_service.d.ts +4 -3
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +36 -21
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +8 -11
- package/dest/test-helpers/make-enrs.d.ts.map +1 -1
- package/dest/test-helpers/make-enrs.js +3 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +2 -6
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +7 -8
- package/dest/testbench/worker_client_manager.d.ts +0 -4
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +3 -13
- package/dest/types/index.d.ts +2 -1
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +1 -0
- package/dest/util.d.ts +2 -7
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +12 -57
- package/package.json +10 -10
- package/src/bootstrap/bootstrap.ts +6 -5
- package/src/client/factory.ts +1 -1
- package/src/client/p2p_client.ts +24 -6
- package/src/config.ts +34 -32
- package/src/enr/generate-enr.ts +3 -2
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +12 -7
- package/src/msg_validators/tx_validator/data_validator.ts +9 -7
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -2
- package/src/services/discv5/discV5_service.ts +36 -23
- package/src/services/libp2p/libp2p_service.ts +8 -9
- package/src/test-helpers/make-enrs.ts +3 -4
- package/src/test-helpers/make-test-p2p-clients.ts +2 -7
- package/src/test-helpers/reqresp-nodes.ts +6 -7
- package/src/testbench/worker_client_manager.ts +8 -17
- package/src/types/index.ts +1 -0
- 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;
|
|
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 {
|
|
28
|
-
const listenAddrUdp = multiaddr(convertToMultiaddr(
|
|
29
|
-
if (!
|
|
30
|
-
throw new Error('You need to provide a
|
|
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,
|
|
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);
|
package/dest/client/factory.js
CHANGED
|
@@ -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
|
|
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":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,iBAAiB,CAAC;AAC7F,OAAO,KAAK,
|
|
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
|
-
|
|
415
|
-
|
|
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
|
|
34
|
+
* The port for the P2P service.
|
|
35
35
|
*/
|
|
36
|
-
|
|
36
|
+
p2pPort: number;
|
|
37
37
|
/**
|
|
38
|
-
* The
|
|
38
|
+
* The IP address for the P2P service.
|
|
39
39
|
*/
|
|
40
|
-
|
|
40
|
+
p2pIp?: string;
|
|
41
41
|
/**
|
|
42
|
-
* The listen address
|
|
42
|
+
* The listen address.
|
|
43
43
|
*/
|
|
44
|
-
|
|
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, '
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
183
|
+
p2pStoreMapSizeKb: unknown;
|
|
184
|
+
}, "p2pPort" | "p2pIp" | "listenAddress" | "peerIdPrivateKey" | "bootstrapNodes" | "l1ChainId" | "dataDirectory" | "dataStoreMapSizeKB">>;
|
|
185
185
|
//# sourceMappingURL=config.d.ts.map
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAMxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,8BAA8B,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB,EAAE,WAAW;IAC9D;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,6BAA6B,EAAE,OAAO,CAAC;IAEvC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,
|
|
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
|
-
|
|
32
|
-
env: '
|
|
33
|
-
defaultValue: '0.0.0.0
|
|
34
|
-
description: 'The listen address
|
|
31
|
+
listenAddress: {
|
|
32
|
+
env: 'P2P_LISTEN_ADDR',
|
|
33
|
+
defaultValue: '0.0.0.0',
|
|
34
|
+
description: 'The listen address. ipv4 address.'
|
|
35
35
|
},
|
|
36
|
-
|
|
37
|
-
env: '
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
p2pPort: {
|
|
37
|
+
env: 'P2P_PORT',
|
|
38
|
+
description: 'The port for the P2P service.',
|
|
39
|
+
...numberConfigHelper(40400)
|
|
40
40
|
},
|
|
41
|
-
|
|
42
|
-
env: '
|
|
43
|
-
description: 'The
|
|
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
|
-
'
|
|
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,
|
|
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,
|
|
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"}
|
package/dest/enr/generate-enr.js
CHANGED
|
@@ -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,
|
|
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(
|
|
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,
|
|
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('
|
|
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('
|
|
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('
|
|
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('
|
|
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('
|
|
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('
|
|
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('
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
39
|
-
|
|
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
|
|
81
|
-
this.discv5.on(Discv5Event.ENR_ADDED, this.onEnrAdded
|
|
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":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACvH,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,UAAU,EACf,aAAa,EAKd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAkC,KAAK,eAAe,EAAE,UAAU,EAAa,MAAM,yBAAyB,CAAC;AAEtH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAa1C,OAAO,EAAgB,KAAK,MAAM,EAAwB,MAAM,mBAAmB,CAAC;AAEpF,OAAO,iBAAiB,CAAC;AAKzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAS7D,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,eAAe,CAAC;AAMtE,OAAO,EAAmC,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGnH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAiBtE;;GAEG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,UAAW,YAAW,UAAU;IAuBxF,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,sBAAsB;IAE9B,OAAO,CAAC,MAAM;IAhChB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,uBAAuB,CAAC,CAAiB;IAGjD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,sBAAsB,CAAyB;IAGhD,OAAO,EAAE,OAAO,CAAC;IAGxB,OAAO,CAAC,eAAe,CAAgB;IAEvC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAkE;gBAGrF,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,YAAY,EAClB,oBAAoB,EAAE,oBAAoB,EAC1C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,aAAa,EAAE,aAAa,EACpC,UAAU,EAAE,mBAAmB,EACvB,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EACtD,SAAS,EAAE,eAAe,EAClB,MAAM,yCAAqC;IAmCrD;;;;;OAKG;WACiB,GAAG,CAAC,CAAC,SAAS,aAAa,EAC7C,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,mBAAmB,EAC/B,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,eAAe,EAC1B,MAAM,yCAAqC;
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACvH,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,UAAU,EACf,aAAa,EAKd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAkC,KAAK,eAAe,EAAE,UAAU,EAAa,MAAM,yBAAyB,CAAC;AAEtH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAa1C,OAAO,EAAgB,KAAK,MAAM,EAAwB,MAAM,mBAAmB,CAAC;AAEpF,OAAO,iBAAiB,CAAC;AAKzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAS7D,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,eAAe,CAAC;AAMtE,OAAO,EAAmC,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGnH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAiBtE;;GAEG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,UAAW,YAAW,UAAU;IAuBxF,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,sBAAsB;IAE9B,OAAO,CAAC,MAAM;IAhChB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,uBAAuB,CAAC,CAAiB;IAGjD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,sBAAsB,CAAyB;IAGhD,OAAO,EAAE,OAAO,CAAC;IAGxB,OAAO,CAAC,eAAe,CAAgB;IAEvC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAkE;gBAGrF,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,YAAY,EAClB,oBAAoB,EAAE,oBAAoB,EAC1C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,aAAa,EAAE,aAAa,EACpC,UAAU,EAAE,mBAAmB,EACvB,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EACtD,SAAS,EAAE,eAAe,EAClB,MAAM,yCAAqC;IAmCrD;;;;;OAKG;WACiB,GAAG,CAAC,CAAC,SAAS,aAAa,EAC7C,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,mBAAmB,EAC/B,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,eAAe,EAC1B,MAAM,yCAAqC;IAwH7C;;;OAGG;IACU,KAAK;IAgElB;;;OAGG;IACU,IAAI;IAqBV,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE;IAIrD,OAAO,CAAC,oBAAoB;IAa5B;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,SAAS,kBAAkB,EAChD,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAC5D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI7E;;;;;OAKG;IACH,gBAAgB,CAAC,WAAW,SAAS,kBAAkB,EACrD,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC/D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IAI/E;;;OAGG;IACI,MAAM,IAAI,GAAG,GAAG,SAAS;IAIzB,6BAA6B,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAK9G;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;;;;OAKG;YACW,cAAc;IAS5B;;;;OAIG;YACW,sBAAsB;YActB,uBAAuB;YAoBvB,gBAAgB;IAiB9B;;;;OAIG;YACW,0BAA0B;YA+B1B,oBAAoB;YAyBpB,yBAAyB;IA4BvC;;;OAGG;YAOW,oBAAoB;IAIlC;;;OAGG;IACU,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC;IAYvD;;;;;;;;;;;;;OAaG;YAIW,mBAAmB;YAuBnB,oBAAoB;IAoBlC;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;;;;OAKG;YACW,cAAc;IA8B5B;;;;;;;;;;OAUG;YACW,wBAAwB;IAuBtC;;;;;OAKG;IAOU,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUjG;;;;;OAKG;IAIU,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnF,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;YAI7B,WAAW;YAcX,UAAU;CAYzB"}
|