@aztec/p2p 0.76.4 → 0.77.0-testnet-ignition.21
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 +2 -2
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +55 -41
- package/dest/client/factory.d.ts +8 -6
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +8 -10
- package/dest/client/index.js +0 -1
- package/dest/client/p2p_client.d.ts +7 -4
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +492 -514
- package/dest/config.d.ts +8 -10
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +54 -47
- package/dest/enr/generate-enr.d.ts +9 -0
- package/dest/enr/generate-enr.d.ts.map +1 -0
- package/dest/enr/generate-enr.js +30 -0
- package/dest/enr/index.d.ts +2 -0
- package/dest/enr/index.d.ts.map +1 -0
- package/dest/enr/index.js +1 -0
- package/dest/errors/reqresp.error.js +6 -10
- package/dest/index.js +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +6 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- 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 +65 -33
- package/dest/mem_pools/attestation_pool/index.js +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +3 -3
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +23 -20
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +22 -26
- package/dest/mem_pools/attestation_pool/mocks.d.ts +3 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +12 -7
- package/dest/mem_pools/index.d.ts +2 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -2
- package/dest/mem_pools/instrumentation.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +35 -39
- package/dest/mem_pools/interface.d.ts +3 -3
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/interface.js +3 -2
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +2 -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 +129 -136
- package/dest/mem_pools/tx_pool/index.js +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +2 -2
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +46 -44
- package/dest/mem_pools/tx_pool/priority.d.ts +1 -1
- package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/priority.js +1 -3
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +3 -2
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +109 -39
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +2 -2
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +4 -4
- package/dest/msg_validators/attestation_validator/index.js +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +2 -2
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +3 -3
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/dest/msg_validators/index.js +0 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +9 -11
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +18 -13
- package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +102 -33
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +34 -20
- package/dest/msg_validators/tx_validator/index.js +0 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +30 -27
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +17 -12
- package/dest/services/data_store.js +57 -57
- package/dest/services/discv5/discV5_service.d.ts +2 -0
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +64 -36
- package/dest/services/dummy_service.d.ts +4 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +41 -59
- package/dest/services/encoding.d.ts +3 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +10 -9
- package/dest/services/gossipsub/scoring.d.ts +7 -0
- package/dest/services/gossipsub/scoring.d.ts.map +1 -0
- package/dest/services/gossipsub/scoring.js +10 -0
- package/dest/services/index.js +0 -1
- package/dest/services/libp2p/libp2p_service.d.ts +10 -33
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +682 -673
- package/dest/services/peer-manager/metrics.js +14 -7
- package/dest/services/peer-manager/peer_manager.d.ts +24 -6
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +390 -340
- package/dest/services/peer-manager/peer_scoring.d.ts +3 -3
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +21 -19
- package/dest/services/reqresp/config.js +4 -5
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +2 -2
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +35 -28
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +67 -61
- package/dest/services/reqresp/index.js +1 -3
- package/dest/services/reqresp/interface.d.ts +2 -2
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +27 -31
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +23 -10
- package/dest/services/reqresp/protocols/block.d.ts +2 -2
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +1 -2
- package/dest/services/reqresp/protocols/goodbye.d.ts +5 -5
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +36 -41
- package/dest/services/reqresp/protocols/index.js +1 -3
- package/dest/services/reqresp/protocols/ping.js +1 -3
- package/dest/services/reqresp/protocols/status.js +1 -3
- package/dest/services/reqresp/protocols/tx.d.ts +3 -3
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +6 -9
- package/dest/services/reqresp/rate-limiter/index.js +0 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +9 -9
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +53 -46
- package/dest/services/reqresp/rate-limiter/rate_limits.js +16 -17
- package/dest/services/reqresp/reqresp.d.ts +4 -4
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +467 -464
- package/dest/services/reqresp/status.js +16 -17
- package/dest/services/service.d.ts +3 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/service.js +3 -4
- package/dest/test-helpers/generate-peer-id-private-keys.js +2 -4
- package/dest/test-helpers/get-ports.js +3 -3
- package/dest/test-helpers/index.js +0 -1
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- package/dest/test-helpers/make-enrs.d.ts.map +1 -1
- package/dest/test-helpers/make-enrs.js +3 -6
- package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -6
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +10 -12
- package/dest/test-helpers/reqresp-nodes.d.ts +18 -7
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +64 -40
- package/dest/testbench/p2p_client_testbench_worker.js +61 -45
- package/dest/testbench/parse_log_file.d.ts +2 -0
- package/dest/testbench/parse_log_file.d.ts.map +1 -0
- package/dest/testbench/parse_log_file.js +131 -0
- package/dest/testbench/testbench.d.ts +2 -0
- package/dest/testbench/testbench.d.ts.map +1 -0
- package/dest/testbench/testbench.js +141 -0
- package/dest/{services/types.d.ts → types/index.d.ts} +1 -1
- package/dest/types/index.d.ts.map +1 -0
- package/dest/types/index.js +28 -0
- package/dest/util.d.ts +5 -5
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +23 -34
- package/dest/versioning.d.ts +3 -3
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +7 -12
- package/package.json +15 -13
- package/src/bootstrap/bootstrap.ts +30 -17
- package/src/client/factory.ts +9 -12
- package/src/client/p2p_client.ts +13 -24
- package/src/config.ts +14 -15
- package/src/enr/generate-enr.ts +39 -0
- package/src/enr/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +1 -1
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +4 -3
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +3 -3
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +2 -2
- package/src/mem_pools/attestation_pool/mocks.ts +5 -5
- package/src/mem_pools/index.ts +2 -2
- package/src/mem_pools/instrumentation.ts +4 -3
- package/src/mem_pools/interface.ts +3 -3
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +4 -4
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +3 -3
- package/src/mem_pools/tx_pool/priority.ts +1 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +1 -1
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +4 -3
- package/src/msg_validators/attestation_validator/attestation_validator.ts +2 -2
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +2 -2
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +1 -1
- package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
- package/src/msg_validators/tx_validator/data_validator.ts +57 -4
- package/src/msg_validators/tx_validator/double_spend_validator.ts +17 -12
- package/src/msg_validators/tx_validator/metadata_validator.ts +2 -2
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -6
- package/src/services/discv5/discV5_service.ts +33 -8
- package/src/services/dummy_service.ts +4 -2
- package/src/services/encoding.ts +3 -3
- package/src/services/gossipsub/scoring.ts +13 -0
- package/src/services/libp2p/libp2p_service.ts +124 -146
- package/src/services/peer-manager/peer_manager.ts +71 -13
- package/src/services/peer-manager/peer_scoring.ts +3 -3
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +2 -2
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +9 -3
- package/src/services/reqresp/interface.ts +4 -3
- package/src/services/reqresp/metrics.ts +1 -1
- package/src/services/reqresp/protocols/block.ts +3 -3
- package/src/services/reqresp/protocols/goodbye.ts +7 -7
- package/src/services/reqresp/protocols/tx.ts +5 -5
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +22 -18
- package/src/services/reqresp/reqresp.ts +18 -11
- package/src/services/service.ts +3 -2
- package/src/test-helpers/make-enrs.ts +1 -1
- package/src/test-helpers/make-test-p2p-clients.ts +9 -7
- package/src/test-helpers/reqresp-nodes.ts +32 -18
- package/src/testbench/p2p_client_testbench_worker.ts +16 -9
- package/src/testbench/parse_log_file.ts +175 -0
- package/src/testbench/testbench.ts +157 -0
- package/src/util.ts +5 -5
- package/src/versioning.ts +7 -7
- package/dest/services/libp2p/libp2p_logger.d.ts +0 -7
- package/dest/services/libp2p/libp2p_logger.d.ts.map +0 -1
- package/dest/services/libp2p/libp2p_logger.js +0 -67
- package/dest/services/types.d.ts.map +0 -1
- package/dest/services/types.js +0 -35
- package/src/services/libp2p/libp2p_logger.ts +0 -78
- package/src/testbench/scripts/run_testbench.sh +0 -7
- /package/src/{services/types.ts → types/index.ts} +0 -0
package/dest/util.js
CHANGED
|
@@ -8,8 +8,7 @@ import { resolve } from 'dns/promises';
|
|
|
8
8
|
* const udpAddr = '[2001:db8::1]:8080' -> /ip6/2001:db8::1/udp/8080
|
|
9
9
|
* @param address - The address string to convert. Has to be in the format <addr>:<port>.
|
|
10
10
|
* @param protocol - The protocol to use in the multiaddr string.
|
|
11
|
-
* @returns A multiaddr compliant string. */
|
|
12
|
-
export function convertToMultiaddr(address, protocol) {
|
|
11
|
+
* @returns A multiaddr compliant string. */ export function convertToMultiaddr(address, protocol) {
|
|
13
12
|
const [addr, port] = splitAddressPort(address, false);
|
|
14
13
|
const multiaddrPrefix = addressToMultiAddressType(addr);
|
|
15
14
|
if (multiaddrPrefix === 'dns') {
|
|
@@ -20,8 +19,7 @@ export function convertToMultiaddr(address, protocol) {
|
|
|
20
19
|
/**
|
|
21
20
|
* Splits an <address>:<port> string into its components.
|
|
22
21
|
* @returns The ip6 or ip4 address & port separately
|
|
23
|
-
*/
|
|
24
|
-
export function splitAddressPort(address, allowEmptyAddress) {
|
|
22
|
+
*/ export function splitAddressPort(address, allowEmptyAddress) {
|
|
25
23
|
let addr;
|
|
26
24
|
let port;
|
|
27
25
|
if (address.startsWith('[')) {
|
|
@@ -31,20 +29,21 @@ export function splitAddressPort(address, allowEmptyAddress) {
|
|
|
31
29
|
throw new Error(`Invalid IPv6 address format:${address}. Expected format: [<addr>]:<port>`);
|
|
32
30
|
}
|
|
33
31
|
[, addr, port] = match;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
32
|
+
} else {
|
|
36
33
|
// IPv4 address
|
|
37
34
|
[addr, port] = address.split(':');
|
|
38
|
-
if (
|
|
35
|
+
if (!addr && !allowEmptyAddress || !port) {
|
|
39
36
|
throw new Error(`Invalid address format: ${address}. Expected format: <addr>:<port>`);
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
|
-
return [
|
|
39
|
+
return [
|
|
40
|
+
addr,
|
|
41
|
+
port
|
|
42
|
+
];
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
* Queries the public IP address of the machine.
|
|
46
|
-
*/
|
|
47
|
-
export async function getPublicIp() {
|
|
46
|
+
*/ export async function getPublicIp() {
|
|
48
47
|
const resp = await fetch('http://checkip.amazonaws.com/');
|
|
49
48
|
const text = await resp.text();
|
|
50
49
|
return text.trim();
|
|
@@ -58,8 +57,7 @@ export async function resolveAddressIfNecessary(address) {
|
|
|
58
57
|
throw new Error(`Could not resolve address: ${addr}`);
|
|
59
58
|
}
|
|
60
59
|
return `${resolvedAddresses[0]}:${port}`;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
60
|
+
} else {
|
|
63
61
|
return address;
|
|
64
62
|
}
|
|
65
63
|
}
|
|
@@ -68,23 +66,19 @@ export async function resolveAddressIfNecessary(address) {
|
|
|
68
66
|
function addressToMultiAddressType(address) {
|
|
69
67
|
if (address.includes(':')) {
|
|
70
68
|
return 'ip6';
|
|
71
|
-
}
|
|
72
|
-
else if (address.match(/^[\d.]+$/)) {
|
|
69
|
+
} else if (address.match(/^[\d.]+$/)) {
|
|
73
70
|
return 'ip4';
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
71
|
+
} else {
|
|
76
72
|
return 'dns';
|
|
77
73
|
}
|
|
78
74
|
}
|
|
79
75
|
export async function configureP2PClientAddresses(_config) {
|
|
80
|
-
const config = {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
config.udpAnnounceAddress = configUdpAnnounceAddress
|
|
86
|
-
? await resolveAddressIfNecessary(configUdpAnnounceAddress)
|
|
87
|
-
: undefined;
|
|
76
|
+
const config = {
|
|
77
|
+
..._config
|
|
78
|
+
};
|
|
79
|
+
const { tcpAnnounceAddress: configTcpAnnounceAddress, udpAnnounceAddress: configUdpAnnounceAddress, queryForIp } = config;
|
|
80
|
+
config.tcpAnnounceAddress = configTcpAnnounceAddress ? await resolveAddressIfNecessary(configTcpAnnounceAddress) : undefined;
|
|
81
|
+
config.udpAnnounceAddress = configUdpAnnounceAddress ? await resolveAddressIfNecessary(configUdpAnnounceAddress) : undefined;
|
|
88
82
|
// create variable for re-use if needed
|
|
89
83
|
let publicIp;
|
|
90
84
|
// check if no announce IP was provided
|
|
@@ -94,8 +88,7 @@ export async function configureP2PClientAddresses(_config) {
|
|
|
94
88
|
publicIp = await getPublicIp();
|
|
95
89
|
const tcpAnnounceAddress = `${publicIp}:${splitTcpAnnounceAddress[1]}`;
|
|
96
90
|
config.tcpAnnounceAddress = tcpAnnounceAddress;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
91
|
+
} else {
|
|
99
92
|
throw new Error(`Invalid announceTcpAddress provided: ${configTcpAnnounceAddress}. Expected format: <addr>:<port>`);
|
|
100
93
|
}
|
|
101
94
|
}
|
|
@@ -104,9 +97,8 @@ export async function configureP2PClientAddresses(_config) {
|
|
|
104
97
|
// If announceUdpAddress is not provided, use announceTcpAddress
|
|
105
98
|
if (!queryForIp && config.tcpAnnounceAddress) {
|
|
106
99
|
config.udpAnnounceAddress = config.tcpAnnounceAddress;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const udpPublicIp = publicIp || (await getPublicIp());
|
|
100
|
+
} else if (queryForIp) {
|
|
101
|
+
const udpPublicIp = publicIp || await getPublicIp();
|
|
110
102
|
const udpAnnounceAddress = `${udpPublicIp}:${splitUdpAnnounceAddress[1]}`;
|
|
111
103
|
config.udpAnnounceAddress = udpAnnounceAddress;
|
|
112
104
|
}
|
|
@@ -120,8 +112,7 @@ export async function configureP2PClientAddresses(_config) {
|
|
|
120
112
|
* 2. If not, check we have a peer id private key persisted in the node
|
|
121
113
|
* 3. If not, create a new one, then persist it in the node
|
|
122
114
|
*
|
|
123
|
-
*/
|
|
124
|
-
export async function getPeerIdPrivateKey(config, store) {
|
|
115
|
+
*/ export async function getPeerIdPrivateKey(config, store) {
|
|
125
116
|
const peerIdPrivateKeySingleton = store.openSingleton('peerIdPrivateKey');
|
|
126
117
|
if (config.peerIdPrivateKey) {
|
|
127
118
|
await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey);
|
|
@@ -140,12 +131,10 @@ export async function getPeerIdPrivateKey(config, store) {
|
|
|
140
131
|
* Create a libp2p peer ID from the private key.
|
|
141
132
|
* @param privateKey - peer ID private key as hex string
|
|
142
133
|
* @returns The peer ID.
|
|
143
|
-
*/
|
|
144
|
-
export async function createLibP2PPeerIdFromPrivateKey(privateKey) {
|
|
134
|
+
*/ export async function createLibP2PPeerIdFromPrivateKey(privateKey) {
|
|
145
135
|
if (!privateKey?.length) {
|
|
146
136
|
throw new Error('No peer private key provided');
|
|
147
137
|
}
|
|
148
138
|
const asLibp2pPrivateKey = await unmarshalPrivateKey(new Uint8Array(Buffer.from(privateKey, 'hex')));
|
|
149
139
|
return await createFromPrivKey(asLibp2pPrivateKey);
|
|
150
140
|
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBY3ZDOzs7Ozs7OzZDQU82QztBQUM3QyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFFBQXVCO0lBQ3pFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXRELE1BQU0sZUFBZSxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELElBQUksZUFBZSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsT0FBTyxJQUFJLGVBQWUsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQzNELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLGlCQUEwQjtJQUMxRSxJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLElBQVksQ0FBQztJQUVqQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QiwyQ0FBMkM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLE9BQU8sb0NBQW9DLENBQUMs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
|
package/dest/versioning.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import {
|
|
4
|
-
import { type
|
|
5
|
-
import {
|
|
3
|
+
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
4
|
+
import { type ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
5
|
+
import type { SignableENR } from '@chainsafe/enr';
|
|
6
6
|
/** Returns the component versions based on config and this build. */
|
|
7
7
|
export declare function getVersions(config: ChainConfig): ComponentsVersions;
|
|
8
8
|
/** Sets the aztec key on the ENR record with versioning info. */
|
package/dest/versioning.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../src/versioning.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../src/versioning.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AASlD,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,sBAE9C;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,UAAc,sBAK5F;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,QAU1F"}
|
package/dest/versioning.js
CHANGED
|
@@ -1,32 +1,28 @@
|
|
|
1
|
-
import { checkCompressedComponentVersion, compressComponentVersions, getComponentsVersionsFromConfig, } from '@aztec/circuit-types';
|
|
2
1
|
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
3
|
-
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/
|
|
2
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
4
3
|
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
4
|
+
import { checkCompressedComponentVersion, compressComponentVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
|
|
5
5
|
import xxhashFactory from 'xxhash-wasm';
|
|
6
|
-
import { AZTEC_ENR_KEY } from './
|
|
6
|
+
import { AZTEC_ENR_KEY } from './types/index.js';
|
|
7
7
|
const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
|
|
8
8
|
const XX_HASH_LEN = 8;
|
|
9
9
|
const xxhash = await xxhashFactory();
|
|
10
|
-
/** Returns the component versions based on config and this build. */
|
|
11
|
-
export function getVersions(config) {
|
|
10
|
+
/** Returns the component versions based on config and this build. */ export function getVersions(config) {
|
|
12
11
|
return getComponentsVersionsFromConfig(config, protocolContractTreeRoot, getVKTreeRoot());
|
|
13
12
|
}
|
|
14
|
-
/** Sets the aztec key on the ENR record with versioning info. */
|
|
15
|
-
export function setAztecEnrKey(enr, config, useXxHash = USE_XX_HASH) {
|
|
13
|
+
/** Sets the aztec key on the ENR record with versioning info. */ export function setAztecEnrKey(enr, config, useXxHash = USE_XX_HASH) {
|
|
16
14
|
const versions = getVersions(config);
|
|
17
15
|
const value = versionsToEnrValue(versions, useXxHash);
|
|
18
16
|
enr.set(AZTEC_ENR_KEY, value);
|
|
19
17
|
return versions;
|
|
20
18
|
}
|
|
21
|
-
/** Checks the given value from an ENR record against the expected versions. */
|
|
22
|
-
export function checkAztecEnrVersion(enrValue, expectedVersions) {
|
|
19
|
+
/** Checks the given value from an ENR record against the expected versions. */ export function checkAztecEnrVersion(enrValue, expectedVersions) {
|
|
23
20
|
if (enrValue.length === XX_HASH_LEN) {
|
|
24
21
|
const expected = versionsToEnrValue(expectedVersions, true);
|
|
25
22
|
if (!Buffer.from(enrValue).equals(expected)) {
|
|
26
23
|
throw new Error(`Expected ENR version ${expected.toString('hex')} but received ${enrValue.toString('hex')}`);
|
|
27
24
|
}
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
25
|
+
} else {
|
|
30
26
|
const actual = Buffer.from(enrValue).toString();
|
|
31
27
|
checkCompressedComponentVersion(actual, expectedVersions);
|
|
32
28
|
}
|
|
@@ -35,4 +31,3 @@ function versionsToEnrValue(versions, useXxHash) {
|
|
|
35
31
|
const compressed = compressComponentVersions(versions);
|
|
36
32
|
return useXxHash ? toBufferBE(xxhash.h64(compressed), XX_HASH_LEN) : Buffer.from(compressed);
|
|
37
33
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCwrQkFBK0IsRUFDL0IseUJBQXlCLEVBQ3pCLCtCQUErQixHQUNoQyxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHckUsT0FBTyxhQUFhLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyw2REFBNkQ7QUFDeEYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxFQUFFLENBQUM7QUFFckMscUVBQXFFO0FBQ3JFLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBbUI7SUFDN0MsT0FBTywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUM1RixDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBZ0IsRUFBRSxNQUFtQixFQUFFLFNBQVMsR0FBRyxXQUFXO0lBQzNGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUIsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxnQkFBb0M7SUFDekYsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGlCQUFpQixRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELCtCQUErQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxRQUE0QixFQUFFLFNBQWtCO0lBQzFFLE1BQU0sVUFBVSxHQUFHLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvRixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.77.0-testnet-ignition.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
7
|
"./test-helpers": "./dest/test-helpers/index.js",
|
|
8
8
|
"./bootstrap": "./dest/bootstrap/bootstrap.js",
|
|
9
9
|
"./config": "./dest/config.js",
|
|
10
|
-
"./msg_validators": "./dest/msg_validators/index.js"
|
|
10
|
+
"./msg_validators": "./dest/msg_validators/index.js",
|
|
11
|
+
"./enr": "./dest/enr/index.js",
|
|
12
|
+
"./types": "./dest/types/index.js"
|
|
11
13
|
},
|
|
12
14
|
"typedocOptions": {
|
|
13
15
|
"entryPoints": [
|
|
@@ -22,7 +24,7 @@
|
|
|
22
24
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
23
25
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src",
|
|
24
26
|
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
|
|
25
|
-
"test": "
|
|
27
|
+
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
|
|
26
28
|
"start": "node ./dest",
|
|
27
29
|
"start:dev": "tsc-watch -p tsconfig.json --onSuccess 'yarn start'"
|
|
28
30
|
},
|
|
@@ -57,20 +59,20 @@
|
|
|
57
59
|
"reporters": [
|
|
58
60
|
"default"
|
|
59
61
|
],
|
|
60
|
-
"testTimeout":
|
|
62
|
+
"testTimeout": 120000,
|
|
61
63
|
"setupFiles": [
|
|
62
64
|
"../../foundation/src/jest/setup.mjs"
|
|
63
65
|
]
|
|
64
66
|
},
|
|
65
67
|
"dependencies": {
|
|
66
|
-
"@aztec/
|
|
67
|
-
"@aztec/
|
|
68
|
-
"@aztec/
|
|
69
|
-
"@aztec/
|
|
70
|
-
"@aztec/
|
|
71
|
-
"@aztec/
|
|
72
|
-
"@aztec/
|
|
73
|
-
"@aztec/telemetry-client": "0.
|
|
68
|
+
"@aztec/constants": "0.77.0-testnet-ignition.21",
|
|
69
|
+
"@aztec/epoch-cache": "0.77.0-testnet-ignition.21",
|
|
70
|
+
"@aztec/foundation": "0.77.0-testnet-ignition.21",
|
|
71
|
+
"@aztec/kv-store": "0.77.0-testnet-ignition.21",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.21",
|
|
73
|
+
"@aztec/protocol-contracts": "0.77.0-testnet-ignition.21",
|
|
74
|
+
"@aztec/stdlib": "0.77.0-testnet-ignition.21",
|
|
75
|
+
"@aztec/telemetry-client": "0.77.0-testnet-ignition.21",
|
|
74
76
|
"@chainsafe/discv5": "9.0.0",
|
|
75
77
|
"@chainsafe/enr": "3.0.0",
|
|
76
78
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
@@ -99,7 +101,7 @@
|
|
|
99
101
|
"xxhash-wasm": "^1.1.0"
|
|
100
102
|
},
|
|
101
103
|
"devDependencies": {
|
|
102
|
-
"@aztec/archiver": "
|
|
104
|
+
"@aztec/archiver": "0.77.0-testnet-ignition.21",
|
|
103
105
|
"@jest/globals": "^29.5.0",
|
|
104
106
|
"@types/jest": "^29.5.0",
|
|
105
107
|
"@types/node": "^18.14.6",
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { type P2PBootstrapApi } from '@aztec/circuit-types/interfaces';
|
|
2
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import {
|
|
2
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
|
+
import type { P2PBootstrapApi } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import { OtelMetricsAdapter, type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
5
|
|
|
6
6
|
import { Discv5, type Discv5EventEmitter } from '@chainsafe/discv5';
|
|
7
|
-
import {
|
|
7
|
+
import { ENR, type SignableENR } from '@chainsafe/enr';
|
|
8
8
|
import type { PeerId } from '@libp2p/interface';
|
|
9
9
|
import { type Multiaddr, multiaddr } from '@multiformats/multiaddr';
|
|
10
10
|
|
|
11
11
|
import type { BootnodeConfig } from '../config.js';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { createBootnodeENRandPeerId } from '../enr/generate-enr.js';
|
|
13
|
+
import { convertToMultiaddr, getPeerIdPrivateKey } from '../util.js';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Encapsulates a 'Bootstrap' node, used for the purpose of assisting new joiners in acquiring peers.
|
|
@@ -32,28 +32,26 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
32
32
|
*/
|
|
33
33
|
public async start(config: BootnodeConfig) {
|
|
34
34
|
const { udpListenAddress, udpAnnounceAddress } = config;
|
|
35
|
-
|
|
36
|
-
const peerIdPrivateKey = await getPeerIdPrivateKey(config, this.store);
|
|
37
|
-
const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey);
|
|
38
|
-
this.peerId = peerId;
|
|
39
|
-
const enr = SignableENR.createFromPeerId(peerId);
|
|
40
|
-
|
|
41
35
|
const listenAddrUdp = multiaddr(convertToMultiaddr(udpListenAddress, 'udp'));
|
|
42
36
|
|
|
43
37
|
if (!udpAnnounceAddress) {
|
|
44
38
|
throw new Error('You need to provide a UDP announce address.');
|
|
45
39
|
}
|
|
46
40
|
|
|
47
|
-
const
|
|
48
|
-
enr.setLocationMultiaddr(publicAddr);
|
|
41
|
+
const peerIdPrivateKey = await getPeerIdPrivateKey(config, this.store);
|
|
49
42
|
|
|
50
|
-
const
|
|
43
|
+
const { enr: ourEnr, peerId } = await createBootnodeENRandPeerId(
|
|
44
|
+
peerIdPrivateKey,
|
|
45
|
+
udpAnnounceAddress,
|
|
46
|
+
config.l1ChainId,
|
|
47
|
+
);
|
|
48
|
+
this.peerId = peerId;
|
|
51
49
|
|
|
52
50
|
this.logger.debug(`Starting bootstrap node ${peerId} listening on ${listenAddrUdp.toString()}`);
|
|
53
51
|
|
|
54
52
|
const metricsRegistry = new OtelMetricsAdapter(this.telemetry);
|
|
55
53
|
this.node = Discv5.create({
|
|
56
|
-
enr,
|
|
54
|
+
enr: ourEnr,
|
|
57
55
|
peerId,
|
|
58
56
|
bindAddrs: { ip4: listenAddrUdp },
|
|
59
57
|
config: {
|
|
@@ -72,16 +70,31 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
72
70
|
});
|
|
73
71
|
|
|
74
72
|
try {
|
|
73
|
+
this.logger.info('Starting bootnode');
|
|
75
74
|
await this.node.start();
|
|
76
75
|
this.logger.info('Bootstrap node started', {
|
|
77
76
|
peerId,
|
|
78
|
-
enr:
|
|
77
|
+
enr: ourEnr.encodeTxt(),
|
|
79
78
|
addr: listenAddrUdp.toString(),
|
|
80
|
-
versions,
|
|
81
79
|
});
|
|
82
80
|
} catch (e) {
|
|
83
81
|
this.logger.error('Error starting Discv5', e);
|
|
84
82
|
}
|
|
83
|
+
|
|
84
|
+
// Add bootnode ENRs if provided, making sure we filter our own
|
|
85
|
+
if (config.bootstrapNodes?.length) {
|
|
86
|
+
const otherBootnodeENRs = config.bootstrapNodes
|
|
87
|
+
.map(x => ENR.decodeTxt(x))
|
|
88
|
+
.filter(b => b.nodeId !== ourEnr.nodeId);
|
|
89
|
+
this.logger.info(`Adding bootstrap nodes ENRs: ${otherBootnodeENRs.map(x => x.encodeTxt()).join(', ')}`);
|
|
90
|
+
try {
|
|
91
|
+
otherBootnodeENRs.forEach(enr => {
|
|
92
|
+
this.node.addEnr(enr);
|
|
93
|
+
});
|
|
94
|
+
} catch (e) {
|
|
95
|
+
this.logger.error(`Error adding bootnode ENRs: ${e}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
85
98
|
}
|
|
86
99
|
|
|
87
100
|
/**
|
package/src/client/factory.ts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type ClientProtocolCircuitVerifier,
|
|
3
|
-
type L2BlockSource,
|
|
4
|
-
P2PClientType,
|
|
5
|
-
type WorldStateSynchronizer,
|
|
6
|
-
} from '@aztec/circuit-types';
|
|
7
|
-
import { type EpochCacheInterface } from '@aztec/epoch-cache';
|
|
1
|
+
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
8
2
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
3
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
4
|
+
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
11
5
|
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
6
|
+
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
7
|
+
import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
8
|
+
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
12
9
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
13
10
|
|
|
14
11
|
import { P2PClient } from '../client/p2p_client.js';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
12
|
+
import type { P2PConfig } from '../config.js';
|
|
13
|
+
import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
17
14
|
import { InMemoryAttestationPool } from '../mem_pools/attestation_pool/memory_attestation_pool.js';
|
|
18
|
-
import {
|
|
15
|
+
import type { MemPools } from '../mem_pools/interface.js';
|
|
19
16
|
import { AztecKVTxPool, type TxPool } from '../mem_pools/tx_pool/index.js';
|
|
20
17
|
import { DiscV5Service } from '../services/discv5/discV5_service.js';
|
|
21
18
|
import { DummyP2PService } from '../services/dummy_service.js';
|
package/src/client/p2p_client.ts
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type BlockAttestation,
|
|
3
|
-
type BlockProposal,
|
|
4
|
-
type L2Block,
|
|
5
|
-
type L2BlockId,
|
|
6
|
-
type L2BlockSource,
|
|
7
|
-
type L2BlockStreamEvent,
|
|
8
|
-
type L2Tips,
|
|
9
|
-
type P2PApi,
|
|
10
|
-
type P2PClientType,
|
|
11
|
-
type PeerInfo,
|
|
12
|
-
type ProverCoordination,
|
|
13
|
-
type Tx,
|
|
14
|
-
type TxHash,
|
|
15
|
-
} from '@aztec/circuit-types';
|
|
16
|
-
import { INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js/constants';
|
|
1
|
+
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
17
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
18
|
-
import {
|
|
3
|
+
import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncSingleton } from '@aztec/kv-store';
|
|
4
|
+
import type { L2Block, L2BlockId, L2BlockSource, L2BlockStreamEvent, L2Tips } from '@aztec/stdlib/block';
|
|
5
|
+
import type { P2PApi, PeerInfo, ProverCoordination } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import type { BlockAttestation, BlockProposal, P2PClientType } from '@aztec/stdlib/p2p';
|
|
7
|
+
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
19
8
|
import {
|
|
20
9
|
Attributes,
|
|
21
10
|
type TelemetryClient,
|
|
@@ -25,12 +14,12 @@ import {
|
|
|
25
14
|
trackSpan,
|
|
26
15
|
} from '@aztec/telemetry-client';
|
|
27
16
|
|
|
28
|
-
import {
|
|
17
|
+
import type { ENR } from '@chainsafe/enr';
|
|
29
18
|
|
|
30
19
|
import { type P2PConfig, getP2PDefaultConfig } from '../config.js';
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
20
|
+
import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
21
|
+
import type { MemPools } from '../mem_pools/interface.js';
|
|
22
|
+
import type { TxPool } from '../mem_pools/tx_pool/index.js';
|
|
34
23
|
import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
35
24
|
import type { P2PService } from '../services/service.js';
|
|
36
25
|
|
|
@@ -374,13 +363,13 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
374
363
|
}
|
|
375
364
|
|
|
376
365
|
@trackSpan('p2pClient.broadcastProposal', async proposal => ({
|
|
377
|
-
[Attributes.BLOCK_NUMBER]: proposal.
|
|
378
|
-
[Attributes.SLOT_NUMBER]: proposal.
|
|
366
|
+
[Attributes.BLOCK_NUMBER]: proposal.blockNumber.toNumber(),
|
|
367
|
+
[Attributes.SLOT_NUMBER]: proposal.slotNumber.toNumber(),
|
|
379
368
|
[Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
|
|
380
369
|
[Attributes.P2P_ID]: (await proposal.p2pMessageIdentifier()).toString(),
|
|
381
370
|
}))
|
|
382
371
|
public broadcastProposal(proposal: BlockProposal): void {
|
|
383
|
-
this.log.verbose(`Broadcasting proposal ${proposal.
|
|
372
|
+
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber.toNumber()} to peers`);
|
|
384
373
|
return this.p2pService.propagate(proposal);
|
|
385
374
|
}
|
|
386
375
|
|
package/src/config.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type ChainConfig, chainConfigMappings } from '@aztec/circuit-types/config';
|
|
2
1
|
import {
|
|
3
2
|
type ConfigMappingsType,
|
|
4
3
|
booleanConfigHelper,
|
|
@@ -8,6 +7,7 @@ import {
|
|
|
8
7
|
pickConfigMappings,
|
|
9
8
|
} from '@aztec/foundation/config';
|
|
10
9
|
import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
|
|
10
|
+
import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
|
|
11
11
|
|
|
12
12
|
import { type P2PReqRespConfig, p2pReqRespConfigMappings } from './services/reqresp/config.js';
|
|
13
13
|
|
|
@@ -30,11 +30,6 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
|
|
|
30
30
|
*/
|
|
31
31
|
blockRequestBatchSize: number;
|
|
32
32
|
|
|
33
|
-
/**
|
|
34
|
-
* DEBUG: Disable message validation - for testing purposes only
|
|
35
|
-
*/
|
|
36
|
-
debugDisableMessageValidation: boolean;
|
|
37
|
-
|
|
38
33
|
/**
|
|
39
34
|
* DEBUG: Disable colocation penalty - for testing purposes only
|
|
40
35
|
*/
|
|
@@ -83,6 +78,9 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
|
|
|
83
78
|
/** Whether to execute the version check in the bootstrap node ENR. */
|
|
84
79
|
bootstrapNodeEnrVersionCheck: boolean;
|
|
85
80
|
|
|
81
|
+
/** Whether to consider any configured bootnodes as full peers, e.g. for transaction gossiping */
|
|
82
|
+
bootstrapNodesAsFullPeers: boolean;
|
|
83
|
+
|
|
86
84
|
/**
|
|
87
85
|
* Protocol identifier for transaction gossiping.
|
|
88
86
|
*/
|
|
@@ -184,11 +182,6 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
|
|
|
184
182
|
description: 'The frequency in which to check for new L2 blocks.',
|
|
185
183
|
...numberConfigHelper(100),
|
|
186
184
|
},
|
|
187
|
-
debugDisableMessageValidation: {
|
|
188
|
-
env: 'DEBUG_P2P_DISABLE_MESSAGE_VALIDATION',
|
|
189
|
-
description: 'DEBUG: Disable message validation - NEVER set to true in production',
|
|
190
|
-
...booleanConfigHelper(false),
|
|
191
|
-
},
|
|
192
185
|
debugDisableColocationPenalty: {
|
|
193
186
|
env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
|
|
194
187
|
description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
|
|
@@ -238,6 +231,11 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
|
|
|
238
231
|
description: 'Whether to check the version of the bootstrap node ENR.',
|
|
239
232
|
...booleanConfigHelper(),
|
|
240
233
|
},
|
|
234
|
+
bootstrapNodesAsFullPeers: {
|
|
235
|
+
env: 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS',
|
|
236
|
+
description: 'Whether to consider our configured bootnodes as full peers',
|
|
237
|
+
...booleanConfigHelper(false),
|
|
238
|
+
},
|
|
241
239
|
transactionProtocol: {
|
|
242
240
|
env: 'P2P_TX_PROTOCOL',
|
|
243
241
|
description: 'Protocol identifier for transaction gossiping.',
|
|
@@ -362,21 +360,22 @@ export function getP2PDefaultConfig(): P2PConfig {
|
|
|
362
360
|
/**
|
|
363
361
|
* Required P2P config values for a bootstrap node.
|
|
364
362
|
*/
|
|
365
|
-
export type BootnodeConfig = Pick<P2PConfig, 'udpAnnounceAddress' | 'peerIdPrivateKey' | '
|
|
363
|
+
export type BootnodeConfig = Pick<P2PConfig, 'udpAnnounceAddress' | 'peerIdPrivateKey' | 'bootstrapNodes'> &
|
|
366
364
|
Required<Pick<P2PConfig, 'udpListenAddress'>> &
|
|
367
365
|
Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKB'> &
|
|
368
|
-
ChainConfig
|
|
366
|
+
Pick<ChainConfig, 'l1ChainId'>;
|
|
369
367
|
|
|
370
368
|
const bootnodeConfigKeys: (keyof BootnodeConfig)[] = [
|
|
371
369
|
'udpAnnounceAddress',
|
|
372
370
|
'peerIdPrivateKey',
|
|
373
|
-
'maxPeerCount',
|
|
374
371
|
'udpListenAddress',
|
|
375
372
|
'dataDirectory',
|
|
376
373
|
'dataStoreMapSizeKB',
|
|
374
|
+
'bootstrapNodes',
|
|
375
|
+
'l1ChainId',
|
|
377
376
|
];
|
|
378
377
|
|
|
379
378
|
export const bootnodeConfigMappings = pickConfigMappings(
|
|
380
|
-
{ ...p2pConfigMappings, ...dataConfigMappings },
|
|
379
|
+
{ ...p2pConfigMappings, ...dataConfigMappings, ...chainConfigMappings },
|
|
381
380
|
bootnodeConfigKeys,
|
|
382
381
|
);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { LogFn } from '@aztec/foundation/log';
|
|
2
|
+
import { type ChainConfig, emptyChainConfig } from '@aztec/stdlib/config';
|
|
3
|
+
|
|
4
|
+
import { ENR, SignableENR } from '@chainsafe/enr';
|
|
5
|
+
import type { PeerId } from '@libp2p/interface';
|
|
6
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
|
7
|
+
|
|
8
|
+
import { AZTEC_ENR_KEY } from '../types/index.js';
|
|
9
|
+
import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js';
|
|
10
|
+
import { setAztecEnrKey } from '../versioning.js';
|
|
11
|
+
|
|
12
|
+
export async function createBootnodeENRandPeerId(
|
|
13
|
+
privateKey: string,
|
|
14
|
+
udpAnnounceAddress: string,
|
|
15
|
+
l1ChainId: number,
|
|
16
|
+
): Promise<{ enr: SignableENR; peerId: PeerId }> {
|
|
17
|
+
const peerId = await createLibP2PPeerIdFromPrivateKey(privateKey);
|
|
18
|
+
const enr = SignableENR.createFromPeerId(peerId);
|
|
19
|
+
const publicAddr = multiaddr(convertToMultiaddr(udpAnnounceAddress, 'udp'));
|
|
20
|
+
enr.setLocationMultiaddr(publicAddr);
|
|
21
|
+
|
|
22
|
+
const config: ChainConfig = {
|
|
23
|
+
...emptyChainConfig,
|
|
24
|
+
l1ChainId,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
setAztecEnrKey(enr, config);
|
|
28
|
+
return { enr, peerId };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export async function printENR(enr: string, log: LogFn) {
|
|
32
|
+
const decoded = ENR.decodeTxt(enr);
|
|
33
|
+
log(`PeerID: ${await decoded.peerId()}`);
|
|
34
|
+
log(`IP: ${decoded.ip}`);
|
|
35
|
+
log(`UDP: ${decoded.udp}`);
|
|
36
|
+
log(`TCP: ${decoded.tcp}`);
|
|
37
|
+
const aztec = decoded.kvs.get(AZTEC_ENR_KEY);
|
|
38
|
+
log(`Aztec version: ${aztec?.toString()}`);
|
|
39
|
+
}
|
package/src/enr/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './generate-enr.js';
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { type BlockAttestation, TxHash } from '@aztec/circuit-types';
|
|
2
1
|
import { Secp256k1Signer } from '@aztec/foundation/crypto';
|
|
3
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import type { BlockAttestation } from '@aztec/stdlib/p2p';
|
|
4
|
+
import { TxHash } from '@aztec/stdlib/tx';
|
|
4
5
|
|
|
5
6
|
import { jest } from '@jest/globals';
|
|
6
7
|
import { type MockProxy, mock } from 'jest-mock-extended';
|
|
7
8
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
9
|
+
import type { PoolInstrumentation } from '../instrumentation.js';
|
|
10
|
+
import type { AttestationPool } from './attestation_pool.js';
|
|
10
11
|
import { mockAttestation } from './mocks.js';
|
|
11
12
|
|
|
12
13
|
const NUMBER_OF_SIGNERS_PER_TEST = 4;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { BlockAttestation } from '@aztec/circuit-types';
|
|
2
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
2
|
import { toArray } from '@aztec/foundation/iterable';
|
|
4
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
-
import {
|
|
4
|
+
import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
|
|
5
|
+
import { BlockAttestation } from '@aztec/stdlib/p2p';
|
|
6
6
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
7
|
|
|
8
8
|
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
9
|
-
import {
|
|
9
|
+
import type { AttestationPool } from './attestation_pool.js';
|
|
10
10
|
|
|
11
11
|
export class KvAttestationPool implements AttestationPool {
|
|
12
12
|
private metrics: PoolInstrumentation<BlockAttestation>;
|