@aztec/p2p 0.84.0 → 0.85.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.js +1 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +5 -2
- package/dest/client/p2p_client.d.ts +2 -0
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +4 -1
- package/dest/config.d.ts +15 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +12 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +56 -2
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +229 -16
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +8 -8
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +2 -1
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +32 -5
- package/dest/msg_validators/tx_validator/index.d.ts +1 -0
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +1 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +10 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
- package/dest/services/discv5/discV5_service.d.ts +1 -2
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +6 -8
- package/dest/services/dummy_service.d.ts +2 -1
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +1 -1
- package/dest/services/libp2p/libp2p_service.d.ts +14 -8
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +2 -2
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +0 -1
- package/dest/services/service.d.ts +1 -1
- package/dest/services/service.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +46 -16
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.js +1 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +3 -2
- package/dest/util.d.ts +7 -3
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +44 -7
- package/package.json +12 -12
- package/src/bootstrap/bootstrap.ts +1 -1
- package/src/client/factory.ts +7 -2
- package/src/client/p2p_client.ts +6 -1
- package/src/config.ts +26 -2
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +312 -27
- package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
- package/src/msg_validators/tx_validator/data_validator.ts +19 -8
- package/src/msg_validators/tx_validator/double_spend_validator.ts +10 -3
- package/src/msg_validators/tx_validator/gas_validator.ts +36 -6
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
- package/src/msg_validators/tx_validator/phases_validator.ts +6 -1
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -2
- package/src/services/discv5/discV5_service.ts +10 -8
- package/src/services/dummy_service.ts +2 -1
- package/src/services/libp2p/libp2p_service.ts +9 -9
- package/src/services/peer-manager/peer_manager.ts +1 -1
- package/src/services/service.ts +1 -1
- package/src/testbench/p2p_client_testbench_worker.ts +97 -16
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +1 -1
- package/src/testbench/worker_client_manager.ts +4 -2
- package/src/util.ts +57 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/metadata_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,
|
|
1
|
+
{"version":3,"file":"metadata_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/metadata_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EACL,KAAK,KAAK,EAKV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAG7D,OAAO,CAAC,OAAO;IAAM,OAAO,CAAC,aAAa;IAAM,OAAO,CAAC,WAAW;gBAA3D,OAAO,EAAE,EAAE,EAAU,aAAa,EAAE,EAAE,EAAU,WAAW,EAAE,EAAE;IAE7E,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAsDrD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { Tx } from '@aztec/stdlib/tx';
|
|
2
|
+
import { TX_ERROR_INCORRECT_CHAIN_ID, TX_ERROR_INCORRECT_ROLLUP_VERSION, TX_ERROR_INVALID_BLOCK_NUMBER, Tx } from '@aztec/stdlib/tx';
|
|
3
3
|
export class MetadataTxValidator {
|
|
4
4
|
chainId;
|
|
5
5
|
rollupVersion;
|
|
@@ -14,13 +14,13 @@ export class MetadataTxValidator {
|
|
|
14
14
|
async validateTx(tx) {
|
|
15
15
|
const errors = [];
|
|
16
16
|
if (!await this.#hasCorrectChainId(tx)) {
|
|
17
|
-
errors.push(
|
|
17
|
+
errors.push(TX_ERROR_INCORRECT_CHAIN_ID);
|
|
18
18
|
}
|
|
19
19
|
if (!await this.#hasCorrectRollupVersion(tx)) {
|
|
20
|
-
errors.push(
|
|
20
|
+
errors.push(TX_ERROR_INCORRECT_ROLLUP_VERSION);
|
|
21
21
|
}
|
|
22
22
|
if (!await this.#isValidForBlockNumber(tx)) {
|
|
23
|
-
errors.push(
|
|
23
|
+
errors.push(TX_ERROR_INVALID_BLOCK_NUMBER);
|
|
24
24
|
}
|
|
25
25
|
return errors.length > 0 ? {
|
|
26
26
|
result: 'invalid',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAIL,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAIZ,OAAO,CAAC,cAAc;IAAoB,OAAO,CAAC,WAAW;IAFxG,OAAO,CAAC,WAAW,CAAoB;gBAE3B,SAAS,EAAE,kBAAkB,EAAU,cAAc,EAAE,cAAc,EAAE,EAAU,WAAW,EAAE,MAAM;IAI1G,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAqCvC,aAAa;CAiD5B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { PublicContractsDB, getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
|
|
3
|
-
import { Tx, TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
3
|
+
import { TX_ERROR_DURING_VALIDATION, TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED, Tx, TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
4
4
|
export class PhasesTxValidator {
|
|
5
5
|
setupAllowList;
|
|
6
6
|
blockNumber;
|
|
@@ -33,7 +33,7 @@ export class PhasesTxValidator {
|
|
|
33
33
|
return {
|
|
34
34
|
result: 'invalid',
|
|
35
35
|
reason: [
|
|
36
|
-
|
|
36
|
+
TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED
|
|
37
37
|
]
|
|
38
38
|
};
|
|
39
39
|
}
|
|
@@ -41,6 +41,14 @@ export class PhasesTxValidator {
|
|
|
41
41
|
return {
|
|
42
42
|
result: 'valid'
|
|
43
43
|
};
|
|
44
|
+
} catch (err) {
|
|
45
|
+
this.#log.error(`Error validating phases for tx`, err);
|
|
46
|
+
return {
|
|
47
|
+
result: 'invalid',
|
|
48
|
+
reason: [
|
|
49
|
+
TX_ERROR_DURING_VALIDATION
|
|
50
|
+
]
|
|
51
|
+
};
|
|
44
52
|
} finally{
|
|
45
53
|
this.contractsDB.clearContractsForTx();
|
|
46
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_proof_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/tx_proof_validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,
|
|
1
|
+
{"version":3,"file":"tx_proof_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/tx_proof_validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAA0B,EAAE,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzG,qBAAa,gBAAiB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAG1C,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,6BAA6B;IAErD,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAQtD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { Tx } from '@aztec/stdlib/tx';
|
|
2
|
+
import { TX_ERROR_INVALID_PROOF, Tx } from '@aztec/stdlib/tx';
|
|
3
3
|
export class TxProofValidator {
|
|
4
4
|
verifier;
|
|
5
5
|
#log;
|
|
@@ -13,7 +13,7 @@ export class TxProofValidator {
|
|
|
13
13
|
return {
|
|
14
14
|
result: 'invalid',
|
|
15
15
|
reason: [
|
|
16
|
-
|
|
16
|
+
TX_ERROR_INVALID_PROOF
|
|
17
17
|
]
|
|
18
18
|
};
|
|
19
19
|
}
|
|
@@ -20,9 +20,8 @@ export declare class DiscV5Service extends EventEmitter implements PeerDiscovery
|
|
|
20
20
|
/** Version identifiers. */
|
|
21
21
|
private versions;
|
|
22
22
|
private currentState;
|
|
23
|
-
readonly bootstrapNodes: string[];
|
|
24
23
|
private bootstrapNodePeerIds;
|
|
25
|
-
|
|
24
|
+
bootstrapNodeEnrs: ENR[];
|
|
26
25
|
private startTime;
|
|
27
26
|
private handlers;
|
|
28
27
|
constructor(peerId: PeerId, config: P2PConfig, telemetry?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger, configOverrides?: Partial<IDiscv5CreateOptions>);
|
|
@@ -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;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;
|
|
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;IAwB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IA1BhB,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,OAAO,CAAC,oBAAoB,CAAgB;IACrC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IAErC,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;IA+DrD,OAAO,CAAC,kBAAkB;IAOb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CtB,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"}
|
|
@@ -21,20 +21,18 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
21
21
|
/** This instance's ENR */ enr;
|
|
22
22
|
/** Version identifiers. */ versions;
|
|
23
23
|
currentState;
|
|
24
|
-
bootstrapNodes;
|
|
25
24
|
bootstrapNodePeerIds;
|
|
26
25
|
bootstrapNodeEnrs;
|
|
27
26
|
startTime;
|
|
28
27
|
handlers;
|
|
29
28
|
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.
|
|
29
|
+
super(), this.peerId = peerId, this.config = config, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.startTime = 0, this.handlers = {
|
|
31
30
|
onMultiaddrUpdated: this.onMultiaddrUpdated.bind(this),
|
|
32
31
|
onDiscovered: this.onDiscovered.bind(this),
|
|
33
32
|
onEnrAdded: this.onEnrAdded.bind(this)
|
|
34
33
|
};
|
|
35
34
|
const { p2pIp, p2pPort, bootstrapNodes } = config;
|
|
36
|
-
this.
|
|
37
|
-
this.bootstrapNodeEnrs = this.bootstrapNodes.map((x)=>ENR.decodeTxt(x));
|
|
35
|
+
this.bootstrapNodeEnrs = bootstrapNodes.map((x)=>ENR.decodeTxt(x));
|
|
38
36
|
// create ENR from PeerId
|
|
39
37
|
this.enr = SignableENR.createFromPeerId(peerId);
|
|
40
38
|
// Add aztec identification to ENR
|
|
@@ -91,7 +89,7 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
91
89
|
const multiAddrTcp = multiaddr(convertToMultiaddr(m.nodeAddress().address, this.config.p2pPort, 'tcp'));
|
|
92
90
|
this.enr.setLocationMultiaddr(multiAddrTcp);
|
|
93
91
|
this.logger.info('Multiaddr updated', {
|
|
94
|
-
multiaddr:
|
|
92
|
+
multiaddr: multiAddrTcp.toString()
|
|
95
93
|
});
|
|
96
94
|
}
|
|
97
95
|
async start() {
|
|
@@ -110,10 +108,10 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
110
108
|
});
|
|
111
109
|
this.currentState = PeerDiscoveryState.RUNNING;
|
|
112
110
|
// Add bootnode ENR if provided
|
|
113
|
-
if (this.
|
|
111
|
+
if (this.bootstrapNodeEnrs?.length) {
|
|
114
112
|
// Do this conversion once since it involves an async function call
|
|
115
113
|
this.bootstrapNodePeerIds = await Promise.all(this.bootstrapNodeEnrs.map((enr)=>enr.peerId()));
|
|
116
|
-
this.logger.info(`Adding ${this.
|
|
114
|
+
this.logger.info(`Adding ${this.bootstrapNodeEnrs.length} bootstrap nodes ENRs: ${this.bootstrapNodeEnrs.map((enr)=>enr.encodeTxt()).join(', ')}`);
|
|
117
115
|
for (const enr of this.bootstrapNodeEnrs){
|
|
118
116
|
try {
|
|
119
117
|
if (this.config.bootstrapNodeEnrVersionCheck) {
|
|
@@ -205,7 +203,7 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
205
203
|
// Check the peer is an aztec peer
|
|
206
204
|
const value = enr.kvs.get(AZTEC_ENR_KEY);
|
|
207
205
|
if (!value) {
|
|
208
|
-
this.logger.
|
|
206
|
+
this.logger.debug(`Peer node ${enr.nodeId} does not have aztec key in ENR`);
|
|
209
207
|
return false;
|
|
210
208
|
}
|
|
211
209
|
// And check it has the correct version
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
3
3
|
import type { BlockAttestation, BlockProposal, Gossipable } from '@aztec/stdlib/p2p';
|
|
4
4
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
5
|
+
import type { ENR } from '@chainsafe/enr';
|
|
5
6
|
import type { PeerId } from '@libp2p/interface';
|
|
6
7
|
import EventEmitter from 'events';
|
|
7
8
|
import type { ReqRespSubProtocol, SubProtocolMap } from './reqresp/interface.js';
|
|
@@ -61,7 +62,7 @@ export declare class DummyP2PService implements P2PService {
|
|
|
61
62
|
*/
|
|
62
63
|
export declare class DummyPeerDiscoveryService extends EventEmitter implements PeerDiscoveryService {
|
|
63
64
|
private currentState;
|
|
64
|
-
|
|
65
|
+
bootstrapNodeEnrs: ENR[];
|
|
65
66
|
/**
|
|
66
67
|
* Starts the dummy implementation.
|
|
67
68
|
* @returns A resolved promise.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE9F;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,wCAAwC;IACxC,QAAQ,IAAI,QAAQ,EAAE;IAItB;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;IAE3C;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAE7B;;OAEG;IACI,6BAA6B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC;IAE3F;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EACpD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EACzD,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC7D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAIhE;;;OAGG;IACI,MAAM,IAAI,SAAS;CAG3B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAa,YAAW,oBAAoB;IACzF,OAAO,CAAC,YAAY,CAA8B;IAC3C,
|
|
1
|
+
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE9F;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,wCAAwC;IACxC,QAAQ,IAAI,QAAQ,EAAE;IAItB;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;IAE3C;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAE7B;;OAEG;IACI,6BAA6B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC;IAE3F;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EACpD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EACzD,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC7D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAIhE;;;OAGG;IACI,MAAM,IAAI,SAAS;CAG3B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAa,YAAW,oBAAoB;IACzF,OAAO,CAAC,YAAY,CAA8B;IAC3C,iBAAiB,EAAE,GAAG,EAAE,CAAM;IAErC;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,WAAW;IAIX,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,IAAI,kBAAkB;IAI/B,MAAM,IAAI,SAAS;CAG3B"}
|
|
@@ -56,7 +56,7 @@ import { PeerDiscoveryState } from './service.js';
|
|
|
56
56
|
* A dummy implementation of the Peer Discovery Service.
|
|
57
57
|
*/ export class DummyPeerDiscoveryService extends EventEmitter {
|
|
58
58
|
currentState = PeerDiscoveryState.STOPPED;
|
|
59
|
-
|
|
59
|
+
bootstrapNodeEnrs = [];
|
|
60
60
|
/**
|
|
61
61
|
* Starts the dummy implementation.
|
|
62
62
|
* @returns A resolved promise.
|
|
@@ -6,7 +6,7 @@ import type { ClientProtocolCircuitVerifier, PeerInfo, WorldStateSynchronizer }
|
|
|
6
6
|
import { BlockAttestation, BlockProposal, type Gossipable, P2PClientType } from '@aztec/stdlib/p2p';
|
|
7
7
|
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
8
8
|
import type { ENR } from '@chainsafe/enr';
|
|
9
|
-
import { type PeerId } from '@libp2p/interface';
|
|
9
|
+
import { type Message, type PeerId } from '@libp2p/interface';
|
|
10
10
|
import '@libp2p/kad-dht';
|
|
11
11
|
import type { P2PConfig } from '../../config.js';
|
|
12
12
|
import type { MemPools } from '../../mem_pools/interface.js';
|
|
@@ -17,16 +17,16 @@ import type { P2PService, PeerDiscoveryService } from '../service.js';
|
|
|
17
17
|
/**
|
|
18
18
|
* Lib P2P implementation of the P2PService interface.
|
|
19
19
|
*/
|
|
20
|
-
export declare class LibP2PService<T extends P2PClientType> extends WithTracer implements P2PService {
|
|
20
|
+
export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends WithTracer implements P2PService {
|
|
21
21
|
private clientType;
|
|
22
22
|
private config;
|
|
23
|
-
|
|
23
|
+
protected node: PubSubLibp2p;
|
|
24
24
|
private peerDiscoveryService;
|
|
25
|
-
|
|
25
|
+
protected mempools: MemPools<T>;
|
|
26
26
|
private archiver;
|
|
27
27
|
private proofVerifier;
|
|
28
28
|
private worldStateSynchronizer;
|
|
29
|
-
|
|
29
|
+
protected logger: import("@aztec/foundation/log").Logger;
|
|
30
30
|
private jobQueue;
|
|
31
31
|
private peerManager;
|
|
32
32
|
private discoveryRunningPromise?;
|
|
@@ -103,9 +103,15 @@ export declare class LibP2PService<T extends P2PClientType> extends WithTracer i
|
|
|
103
103
|
* @param topic - The message's topic.
|
|
104
104
|
* @param data - The message data
|
|
105
105
|
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
protected handleNewGossipMessage(msg: Message, msgId: string, source: PeerId): Promise<void>;
|
|
107
|
+
protected validateReceivedMessage<T>(validationFunc: () => Promise<{
|
|
108
|
+
result: boolean;
|
|
109
|
+
obj: T;
|
|
110
|
+
}>, msgId: string, source: PeerId): Promise<{
|
|
111
|
+
result: boolean;
|
|
112
|
+
obj: T | undefined;
|
|
113
|
+
}>;
|
|
114
|
+
protected handleGossipedTx(msg: Message, msgId: string, source: PeerId): Promise<void>;
|
|
109
115
|
/**
|
|
110
116
|
* Process Attestation From Peer
|
|
111
117
|
* When a proposal is received from a peer, we add it to the attestation pool, so it can be accessed by other services.
|
|
@@ -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;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,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,
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,7 +99,7 @@ import { ReqResp } from '../reqresp/reqresp.js';
|
|
|
99
99
|
const bindAddrTcp = convertToMultiaddr(listenAddress, p2pPort, 'tcp');
|
|
100
100
|
const datastore = new AztecDatastore(store);
|
|
101
101
|
const otelMetricsAdapter = new OtelMetricsAdapter(telemetry);
|
|
102
|
-
const bootstrapNodes = peerDiscoveryService.
|
|
102
|
+
const bootstrapNodes = peerDiscoveryService.bootstrapNodeEnrs.map((enr)=>enr.encodeTxt());
|
|
103
103
|
// If trusted peers are provided, also provide them to the p2p service
|
|
104
104
|
bootstrapNodes.push(...config.trustedPeers);
|
|
105
105
|
// If bootstrap nodes are provided, also provide them to the p2p service
|
|
@@ -595,7 +595,7 @@ import { ReqResp } from '../reqresp/reqresp.js';
|
|
|
595
595
|
const { result } = await validator.validateTx(tx);
|
|
596
596
|
return {
|
|
597
597
|
name,
|
|
598
|
-
isValid: result
|
|
598
|
+
isValid: result !== 'invalid',
|
|
599
599
|
severity
|
|
600
600
|
};
|
|
601
601
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,yBAAyB,CAAC;AAG1E,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,aAAa,EAAuB,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAoBrE,qBAAa,WAAW;IAgBpB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,OAAO;IArBjB,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,8BAA8B,CAAa;IACnD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IAEjD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,yBAAyB,CAAC;AAG1E,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,aAAa,EAAuB,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAoBrE,qBAAa,WAAW;IAgBpB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,OAAO;IArBjB,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,8BAA8B,CAAa;IACnD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IAEjD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAId;gBAGQ,UAAU,EAAE,YAAY,EACxB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,SAAS,EACzB,eAAe,EAAE,eAAe,EACxB,MAAM,wCAAmC,EACzC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO;IAwB1B;;;;OAIG;IACG,sBAAsB;IAU5B,IAAI,MAAM,6CAET;IAGM,SAAS;IAShB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAShC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IASnC;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM3C;;;;;;OAMG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAQrD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIpC,QAAQ,CAAC,cAAc,UAAQ,GAAG,QAAQ,EAAE;IAiCnD;;OAEG;IACH,OAAO,CAAC,QAAQ;IAiEhB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,mBAAmB;IAwB3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;YAuBb,wBAAwB;YAcxB,cAAc;IAQ5B;;;OAGG;YACW,oBAAoB;YA8DpB,QAAQ;IA2BtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;IACU,IAAI;CAYlB"}
|
|
@@ -45,7 +45,6 @@ export class PeerManager {
|
|
|
45
45
|
this.timedOutPeers = new Map();
|
|
46
46
|
this.trustedPeers = new Set();
|
|
47
47
|
this.trustedPeersInitialized = false;
|
|
48
|
-
this.handlers = {};
|
|
49
48
|
this.metrics = new PeerManagerMetrics(telemetryClient, 'PeerManager');
|
|
50
49
|
// Handle Discovered peers
|
|
51
50
|
this.handlers = {
|
|
@@ -82,6 +82,6 @@ export interface PeerDiscoveryService extends EventEmitter {
|
|
|
82
82
|
emit(event: 'peer:discovered', enr: ENR): boolean;
|
|
83
83
|
getStatus(): PeerDiscoveryState;
|
|
84
84
|
getEnr(): ENR | undefined;
|
|
85
|
-
|
|
85
|
+
bootstrapNodeEnrs: ENR[];
|
|
86
86
|
}
|
|
87
87
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAErF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEjF,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EAC7C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACzD,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE3E;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EAClD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC5D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAG7E,6BAA6B,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAE/G,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD;;SAEK;IACL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;SAEK;IACL,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,GAAG,EAAE,CAAC;IAErB;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAElD,SAAS,IAAI,kBAAkB,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAErF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEjF,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EAC7C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACzD,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE3E;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EAClD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC5D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAG7E,6BAA6B,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAE/G,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD;;SAEK;IACL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;SAEK;IACL,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,GAAG,EAAE,CAAC;IAErB;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAElD,SAAS,IAAI,kBAAkB,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,iBAAiB,EAAE,GAAG,EAAE,CAAC;CAC1B"}
|
|
@@ -9,7 +9,10 @@ import { sleep } from '@aztec/foundation/sleep';
|
|
|
9
9
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
10
10
|
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
11
11
|
import { Tx, TxStatus } from '@aztec/stdlib/tx';
|
|
12
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
13
|
+
import { TopicValidatorResult } from '@libp2p/interface';
|
|
12
14
|
import { createP2PClient } from '../index.js';
|
|
15
|
+
import { LibP2PService } from '../services/libp2p/libp2p_service.js';
|
|
13
16
|
import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
|
|
14
17
|
// Simple mock implementation
|
|
15
18
|
function mockTxPool() {
|
|
@@ -62,6 +65,42 @@ function mockEpochCache() {
|
|
|
62
65
|
isInCommittee: ()=>Promise.resolve(false)
|
|
63
66
|
};
|
|
64
67
|
}
|
|
68
|
+
class TestLibP2PService extends LibP2PService {
|
|
69
|
+
disableTxValidation;
|
|
70
|
+
gossipMessageCount = 0;
|
|
71
|
+
constructor(clientType, config, node, peerDiscoveryService, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:test:libp2p_service'), disableTxValidation = true){
|
|
72
|
+
super(clientType, config, node, peerDiscoveryService, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
|
|
73
|
+
this.disableTxValidation = disableTxValidation;
|
|
74
|
+
}
|
|
75
|
+
getGossipMessageCount() {
|
|
76
|
+
return this.gossipMessageCount;
|
|
77
|
+
}
|
|
78
|
+
setDisableTxValidation(disable) {
|
|
79
|
+
this.disableTxValidation = disable;
|
|
80
|
+
}
|
|
81
|
+
async handleGossipedTx(msg, msgId, source) {
|
|
82
|
+
if (this.disableTxValidation) {
|
|
83
|
+
const tx = Tx.fromBuffer(Buffer.from(msg.data));
|
|
84
|
+
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Accept);
|
|
85
|
+
const txHash = await tx.getTxHash();
|
|
86
|
+
const txHashString = txHash.toString();
|
|
87
|
+
this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
|
|
88
|
+
await this.mempools.txPool.addTxs([
|
|
89
|
+
tx
|
|
90
|
+
]);
|
|
91
|
+
} else {
|
|
92
|
+
await super.handleGossipedTx(msg, msgId, source);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async handleNewGossipMessage(msg, msgId, source) {
|
|
96
|
+
this.gossipMessageCount++;
|
|
97
|
+
process.send({
|
|
98
|
+
type: 'GOSSIP_RECEIVED',
|
|
99
|
+
count: this.gossipMessageCount
|
|
100
|
+
});
|
|
101
|
+
await super.handleNewGossipMessage(msg, msgId, source);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
65
104
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
66
105
|
process.on('message', async (msg)=>{
|
|
67
106
|
const { type, config, clientIndex } = msg;
|
|
@@ -72,31 +111,22 @@ process.on('message', async (msg)=>{
|
|
|
72
111
|
const epochCache = mockEpochCache();
|
|
73
112
|
const worldState = {};
|
|
74
113
|
const l2BlockSource = new MockL2BlockSource();
|
|
75
|
-
await l2BlockSource.createBlocks(100);
|
|
76
114
|
const proofVerifier = new AlwaysTrueCircuitVerifier();
|
|
77
115
|
const kvStore = await openTmpStore(`test-${clientIndex}`);
|
|
78
116
|
const logger = createLogger(`p2p:${clientIndex}`);
|
|
117
|
+
const telemetry = getTelemetryClient();
|
|
79
118
|
const deps = {
|
|
80
119
|
txPool,
|
|
81
120
|
attestationPool,
|
|
82
121
|
store: kvStore,
|
|
83
122
|
logger
|
|
84
123
|
};
|
|
85
|
-
const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, worldState, epochCache,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
client.p2pService.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
type: 'GOSSIP_RECEIVED',
|
|
92
|
-
count: gossipMessageCount
|
|
93
|
-
});
|
|
94
|
-
return client.p2pService.constructor.prototype.handleNewGossipMessage.apply(client.p2pService, [
|
|
95
|
-
msg,
|
|
96
|
-
msgId,
|
|
97
|
-
source
|
|
98
|
-
]);
|
|
99
|
-
};
|
|
124
|
+
const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, worldState, epochCache, telemetry, deps);
|
|
125
|
+
const _client = client;
|
|
126
|
+
// Create test service with validation disabled
|
|
127
|
+
const testService = new TestLibP2PService(P2PClientType.Full, config, client.p2pService.node, client.p2pService.peerDiscoveryService, client.p2pService.mempools, client.p2pService.archiver, epochCache, proofVerifier, worldState, telemetry, logger, true);
|
|
128
|
+
// Replace the existing p2pService with our test version
|
|
129
|
+
client.p2pService = testService;
|
|
100
130
|
await client.start();
|
|
101
131
|
// Wait until the client is ready
|
|
102
132
|
for(let i = 0; i < 100; i++){
|
|
@@ -14,7 +14,7 @@ function getTimestamp(line) {
|
|
|
14
14
|
return parseInt(timestampMatch[1], 10);
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
* Parses a single log line. If the line contains an "
|
|
17
|
+
* Parses a single log line. If the line contains an "Received tx" event,
|
|
18
18
|
* it extracts the timestamp and the peer ID.
|
|
19
19
|
*/ function parseReceivedTx(line) {
|
|
20
20
|
if (!line.includes('Received tx')) {
|
|
@@ -26,9 +26,9 @@ function getTimestamp(line) {
|
|
|
26
26
|
logger.error('No timestamp found in received tx log');
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
const peerIdMatch = line.match(/p2p:(\d+)
|
|
29
|
+
// Extract the peer ID from the log line
|
|
30
|
+
// Example format: "module":"p2p:1","msg":"Received tx 0x0feeafa65f25fd8d613fe4aca44fd65fe41c149ef1941e2019d40925c40748f9 from external peer 16Uiu2HAm8w4oxXF3TwDKoGL9U66thMXWqCgPnb2CgkYwmUqFCWbC."
|
|
31
|
+
const peerIdMatch = line.match(/"module":"p2p:(\d+)"/);
|
|
32
32
|
if (!peerIdMatch) {
|
|
33
33
|
logger.error('No peer Number found in received tx log');
|
|
34
34
|
return null;
|
|
@@ -42,7 +42,7 @@ async function main() {
|
|
|
42
42
|
});
|
|
43
43
|
logger.info('Transaction sent from client 0');
|
|
44
44
|
// Give time for message propagation
|
|
45
|
-
await sleep(
|
|
45
|
+
await sleep(10000);
|
|
46
46
|
logger.info('Checking message propagation results');
|
|
47
47
|
// Check message propagation results
|
|
48
48
|
const numberOfClientsThatReceivedMessage = workerClientManager.numberOfClientsThatReceivedMessage();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAQnE,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;gBAEnC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;IAKzD,OAAO;IAOP;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoD1B;;;;;;OAMG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM;IA2C/C,4BAA4B;IAI5B,kCAAkC;IAIlC;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAQnE,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;gBAEnC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;IAKzD,OAAO;IAOP;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoD1B;;;;;;OAMG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM;IA2C/C,4BAA4B;IAI5B,kCAAkC;IAIlC;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IA8CrD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACG,OAAO;CAiCd;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -167,6 +167,7 @@ class WorkerClientManager {
|
|
|
167
167
|
this.peerEnrs[clientIndex] = await makeEnr(this.peerIdPrivateKeys[clientIndex], newPort, testChainConfig);
|
|
168
168
|
// Maximum seed with 10 other peers to allow peer discovery to connect them at a smoother rate
|
|
169
169
|
const otherNodes = this.peerEnrs.filter((_, ind)=>ind !== clientIndex && ind < Math.min(this.peerEnrs.length, 10));
|
|
170
|
+
this.logger.info(`Changing port for client ${clientIndex} to ${newPort} with other nodes `, otherNodes);
|
|
170
171
|
const config = this.createClientConfig(clientIndex, newPort, otherNodes);
|
|
171
172
|
const [childProcess, readySignal] = this.spawnWorkerProcess(config, clientIndex);
|
|
172
173
|
this.processes[clientIndex] = childProcess;
|
|
@@ -197,7 +198,7 @@ class WorkerClientManager {
|
|
|
197
198
|
} catch (e) {
|
|
198
199
|
this.logger.error(`Error force killing process ${index}:`, e);
|
|
199
200
|
}
|
|
200
|
-
},
|
|
201
|
+
}, 5000); // 5 second timeout for graceful exit
|
|
201
202
|
// Listen for process exit
|
|
202
203
|
process1.once('exit', ()=>{
|
|
203
204
|
clearTimeout(forceKillTimeout);
|
|
@@ -243,7 +244,7 @@ class WorkerClientManager {
|
|
|
243
244
|
}
|
|
244
245
|
});
|
|
245
246
|
resolve();
|
|
246
|
-
},
|
|
247
|
+
}, 10000); // 10 second timeout for all processes
|
|
247
248
|
})
|
|
248
249
|
]);
|
|
249
250
|
} catch (error) {
|
package/dest/util.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
1
2
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
3
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
3
4
|
import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
|
|
@@ -32,13 +33,16 @@ export declare function configureP2PClientAddresses(_config: P2PConfig & DataSto
|
|
|
32
33
|
* Get the peer id private key
|
|
33
34
|
*
|
|
34
35
|
* 1. Check if we have a peer id private key in the config
|
|
35
|
-
* 2. If not, check we have a peer id private key persisted in
|
|
36
|
-
* 3. If
|
|
36
|
+
* 2. If not, check if we have a peer id private key persisted in a file
|
|
37
|
+
* 3. If no file path or data directory is provided, check if we have a peer id private key in the node's store
|
|
38
|
+
* 4. If not, create a new one, then persist it in a file if a file path or data directory is provided or in the node's store otherwise
|
|
37
39
|
*
|
|
38
40
|
*/
|
|
39
41
|
export declare function getPeerIdPrivateKey(config: {
|
|
40
42
|
peerIdPrivateKey?: string;
|
|
41
|
-
|
|
43
|
+
peerIdPrivateKeyPath?: string;
|
|
44
|
+
dataDirectory?: string;
|
|
45
|
+
}, store: AztecAsyncKVStore, logger: Logger): Promise<string>;
|
|
42
46
|
/**
|
|
43
47
|
* Create a libp2p peer ID from the private key.
|
|
44
48
|
* @param privateKey - peer ID private key as hex string
|
package/dest/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,QAAQ,EAAE;QACR,MAAM,EAAE,SAAS,CAAC;QAClB,UAAU,EAAE;YACV,iBAAiB,EAAE,iBAAiB,CAAC;SACtC,CAAC;KACH,CAAC;CACH;AAED;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CActC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5F,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
|
package/dest/util.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';
|
|
2
2
|
import { createFromPrivKey } from '@libp2p/peer-id-factory';
|
|
3
3
|
import { resolve } from 'dns/promises';
|
|
4
|
+
import { promises as fs } from 'fs';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
const PEER_ID_DATA_DIR_FILE = 'p2p-private-key';
|
|
4
7
|
/**
|
|
5
8
|
* Converts an address string to a multiaddr string.
|
|
6
9
|
* Example usage:
|
|
@@ -64,22 +67,56 @@ export async function configureP2PClientAddresses(_config) {
|
|
|
64
67
|
* Get the peer id private key
|
|
65
68
|
*
|
|
66
69
|
* 1. Check if we have a peer id private key in the config
|
|
67
|
-
* 2. If not, check we have a peer id private key persisted in
|
|
68
|
-
* 3. If
|
|
70
|
+
* 2. If not, check if we have a peer id private key persisted in a file
|
|
71
|
+
* 3. If no file path or data directory is provided, check if we have a peer id private key in the node's store
|
|
72
|
+
* 4. If not, create a new one, then persist it in a file if a file path or data directory is provided or in the node's store otherwise
|
|
69
73
|
*
|
|
70
|
-
*/ export async function getPeerIdPrivateKey(config, store) {
|
|
71
|
-
const
|
|
74
|
+
*/ export async function getPeerIdPrivateKey(config, store, logger) {
|
|
75
|
+
const peerIdPrivateKeyFilePath = config.peerIdPrivateKeyPath ?? (config.dataDirectory ? path.join(config.dataDirectory, PEER_ID_DATA_DIR_FILE) : undefined);
|
|
76
|
+
let peerIdPrivateKeySingleton;
|
|
77
|
+
const writePrivateKeyToFile = async (filePath, privateKey)=>{
|
|
78
|
+
await fs.mkdir(path.dirname(filePath), {
|
|
79
|
+
recursive: true
|
|
80
|
+
});
|
|
81
|
+
await fs.writeFile(filePath, privateKey);
|
|
82
|
+
};
|
|
83
|
+
// If the peerIdPrivateKey is provided in the config, we use it and persist it in either a file or the node's store
|
|
72
84
|
if (config.peerIdPrivateKey) {
|
|
73
|
-
|
|
85
|
+
if (peerIdPrivateKeyFilePath) {
|
|
86
|
+
await writePrivateKeyToFile(peerIdPrivateKeyFilePath, config.peerIdPrivateKey);
|
|
87
|
+
} else {
|
|
88
|
+
peerIdPrivateKeySingleton = store.openSingleton('peerIdPrivateKey');
|
|
89
|
+
await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey);
|
|
90
|
+
}
|
|
74
91
|
return config.peerIdPrivateKey;
|
|
75
92
|
}
|
|
76
|
-
|
|
93
|
+
// Check to see if we have a peer id private key stored in a file or the node's store
|
|
94
|
+
let storedPeerIdPrivateKey;
|
|
95
|
+
const privateKeyFileExists = peerIdPrivateKeyFilePath && await fs.access(peerIdPrivateKeyFilePath).then(()=>true).catch(()=>false);
|
|
96
|
+
if (peerIdPrivateKeyFilePath && privateKeyFileExists) {
|
|
97
|
+
await fs.access(peerIdPrivateKeyFilePath);
|
|
98
|
+
storedPeerIdPrivateKey = await fs.readFile(peerIdPrivateKeyFilePath, 'utf8');
|
|
99
|
+
} else {
|
|
100
|
+
peerIdPrivateKeySingleton = store.openSingleton('peerIdPrivateKey');
|
|
101
|
+
storedPeerIdPrivateKey = await peerIdPrivateKeySingleton.getAsync();
|
|
102
|
+
}
|
|
77
103
|
if (storedPeerIdPrivateKey) {
|
|
104
|
+
if (peerIdPrivateKeyFilePath && !privateKeyFileExists) {
|
|
105
|
+
logger.verbose(`Peer ID private key found in the node's store, persisting it to ${peerIdPrivateKeyFilePath}`);
|
|
106
|
+
await writePrivateKeyToFile(peerIdPrivateKeyFilePath, storedPeerIdPrivateKey);
|
|
107
|
+
}
|
|
78
108
|
return storedPeerIdPrivateKey;
|
|
79
109
|
}
|
|
110
|
+
// Generate and persist a new private key
|
|
80
111
|
const newPeerIdPrivateKey = await generateKeyPair('secp256k1');
|
|
81
112
|
const privateKeyString = Buffer.from(marshalPrivateKey(newPeerIdPrivateKey)).toString('hex');
|
|
82
|
-
|
|
113
|
+
if (peerIdPrivateKeyFilePath) {
|
|
114
|
+
logger.verbose(`Creating new peer ID private key and persisting it to ${peerIdPrivateKeyFilePath}`);
|
|
115
|
+
await writePrivateKeyToFile(peerIdPrivateKeyFilePath, privateKeyString);
|
|
116
|
+
} else {
|
|
117
|
+
logger.warn('Creating new peer ID private key and persisting it to the lmdb store. Key will be lost on rollup upgrade, specify the peer id private key path and restart the node to persist the peer id private key to a file');
|
|
118
|
+
await peerIdPrivateKeySingleton.set(privateKeyString);
|
|
119
|
+
}
|
|
83
120
|
return privateKeyString;
|
|
84
121
|
}
|
|
85
122
|
/**
|