@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
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
4
|
+
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
5
|
+
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
6
|
+
import { mockTx } from '@aztec/stdlib/testing';
|
|
7
|
+
|
|
8
|
+
import { type ChildProcess, fork } from 'child_process';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
|
|
12
|
+
import { type P2PConfig, getP2PDefaultConfig } from '../config.js';
|
|
13
|
+
import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-private-keys.js';
|
|
14
|
+
import { getPorts } from '../test-helpers/get-ports.js';
|
|
15
|
+
import { makeEnrs } from '../test-helpers/make-enrs.js';
|
|
16
|
+
|
|
17
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
18
|
+
const workerPath = path.join(__dirname, '../../dest/testbench/p2p_client_testbench_worker.js');
|
|
19
|
+
const logger = createLogger('testbench');
|
|
20
|
+
|
|
21
|
+
let processes: ChildProcess[] = [];
|
|
22
|
+
|
|
23
|
+
const testChainConfig: ChainConfig = {
|
|
24
|
+
l1ChainId: 31337,
|
|
25
|
+
version: 1,
|
|
26
|
+
l1Contracts: {
|
|
27
|
+
rollupAddress: EthAddress.random(),
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Cleanup function to kill all child processes
|
|
33
|
+
*/
|
|
34
|
+
async function cleanup() {
|
|
35
|
+
logger.info('Cleaning up processes...');
|
|
36
|
+
await Promise.all(
|
|
37
|
+
processes.map(
|
|
38
|
+
proc =>
|
|
39
|
+
new Promise<void>(resolve => {
|
|
40
|
+
proc.once('exit', () => resolve());
|
|
41
|
+
proc.send({ type: 'STOP' });
|
|
42
|
+
}),
|
|
43
|
+
),
|
|
44
|
+
);
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Handle cleanup on process termination
|
|
49
|
+
process.on('SIGINT', () => void cleanup());
|
|
50
|
+
process.on('SIGTERM', () => void cleanup());
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Creates a number of worker clients in separate processes
|
|
54
|
+
* All are configured to connect to each other and overrided with the test specific config
|
|
55
|
+
*
|
|
56
|
+
* @param numberOfClients - The number of clients to create
|
|
57
|
+
* @param p2pConfig - The P2P config to use for the clients
|
|
58
|
+
* @returns The ENRs of the created clients
|
|
59
|
+
*/
|
|
60
|
+
async function makeWorkerClients(numberOfClients: number, p2pConfig: Partial<P2PConfig>) {
|
|
61
|
+
const peerIdPrivateKeys = generatePeerIdPrivateKeys(numberOfClients);
|
|
62
|
+
const ports = await getPorts(numberOfClients);
|
|
63
|
+
const peerEnrs = await makeEnrs(peerIdPrivateKeys, ports, testChainConfig);
|
|
64
|
+
|
|
65
|
+
processes = [];
|
|
66
|
+
const readySignals: Promise<void>[] = [];
|
|
67
|
+
for (let i = 0; i < numberOfClients; i++) {
|
|
68
|
+
logger.info(`Creating client ${i}`);
|
|
69
|
+
const addr = `127.0.0.1:${ports[i]}`;
|
|
70
|
+
const listenAddr = `0.0.0.0:${ports[i]}`;
|
|
71
|
+
|
|
72
|
+
// Maximum seed with 10 other peers to allow peer discovery to connect them at a smoother rate
|
|
73
|
+
const otherNodes = peerEnrs.filter((_, ind) => ind < Math.min(i, 10));
|
|
74
|
+
|
|
75
|
+
const config: P2PConfig & Partial<ChainConfig> = {
|
|
76
|
+
...getP2PDefaultConfig(),
|
|
77
|
+
p2pEnabled: true,
|
|
78
|
+
peerIdPrivateKey: peerIdPrivateKeys[i],
|
|
79
|
+
tcpListenAddress: listenAddr,
|
|
80
|
+
udpListenAddress: listenAddr,
|
|
81
|
+
tcpAnnounceAddress: addr,
|
|
82
|
+
udpAnnounceAddress: addr,
|
|
83
|
+
bootstrapNodes: [...otherNodes],
|
|
84
|
+
...p2pConfig,
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const childProcess = fork(workerPath);
|
|
88
|
+
childProcess.send({ type: 'START', config, clientIndex: i });
|
|
89
|
+
|
|
90
|
+
// Wait for ready signal
|
|
91
|
+
readySignals.push(
|
|
92
|
+
new Promise((resolve, reject) => {
|
|
93
|
+
childProcess.once('message', (msg: any) => {
|
|
94
|
+
if (msg.type === 'READY') {
|
|
95
|
+
resolve(undefined);
|
|
96
|
+
}
|
|
97
|
+
if (msg.type === 'ERROR') {
|
|
98
|
+
reject(new Error(msg.error));
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}),
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
processes.push(childProcess);
|
|
105
|
+
}
|
|
106
|
+
// Wait for peers to all connect with each other
|
|
107
|
+
await sleep(4000);
|
|
108
|
+
|
|
109
|
+
// Wait for all peers to be booted up
|
|
110
|
+
await Promise.all(readySignals);
|
|
111
|
+
|
|
112
|
+
return peerEnrs;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
async function main() {
|
|
116
|
+
try {
|
|
117
|
+
// Read configuration file name from command line args
|
|
118
|
+
const configFile = process.argv[2];
|
|
119
|
+
if (!configFile) {
|
|
120
|
+
throw new Error('Configuration file must be provided as first argument');
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const configPath = path.join(__dirname, '../../testbench/configurations', configFile);
|
|
124
|
+
const config = await import(configPath, { assert: { type: 'json' } });
|
|
125
|
+
const testConfig = { ...testChainConfig, ...config.default };
|
|
126
|
+
const numberOfClients = config.default.numberOfClients;
|
|
127
|
+
|
|
128
|
+
// Setup clients in separate processes
|
|
129
|
+
await makeWorkerClients(numberOfClients, testConfig);
|
|
130
|
+
|
|
131
|
+
// wait a bit longer for all peers to be ready
|
|
132
|
+
await sleep(5000);
|
|
133
|
+
logger.info('Workers Ready');
|
|
134
|
+
|
|
135
|
+
// Send tx from client 0
|
|
136
|
+
const tx = await mockTx(1, {
|
|
137
|
+
clientIvcProof: ClientIvcProof.random(),
|
|
138
|
+
});
|
|
139
|
+
processes[0].send({ type: 'SEND_TX', tx: tx.toBuffer() });
|
|
140
|
+
logger.info('Transaction sent from client 0');
|
|
141
|
+
|
|
142
|
+
// Give time for message propagation
|
|
143
|
+
await sleep(30000);
|
|
144
|
+
logger.info('Checking message propagation results');
|
|
145
|
+
|
|
146
|
+
await cleanup();
|
|
147
|
+
} catch (error) {
|
|
148
|
+
logger.error('Test failed with error:', error);
|
|
149
|
+
await cleanup();
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
main().catch(error => {
|
|
155
|
+
logger.error('Unhandled error:', error);
|
|
156
|
+
cleanup().catch(() => process.exit(1));
|
|
157
|
+
});
|
package/src/util.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
|
+
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
3
3
|
|
|
4
4
|
import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
|
|
5
5
|
import { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import type { PeerId, PrivateKey } from '@libp2p/interface';
|
|
7
|
+
import type { ConnectionManager } from '@libp2p/interface-internal';
|
|
8
8
|
import { createFromPrivKey } from '@libp2p/peer-id-factory';
|
|
9
9
|
import { resolve } from 'dns/promises';
|
|
10
10
|
import type { Libp2p } from 'libp2p';
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import type { P2PConfig } from './config.js';
|
|
13
13
|
|
|
14
14
|
export interface PubSubLibp2p extends Libp2p {
|
|
15
15
|
services: {
|
package/src/versioning.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
+
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
|
+
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
4
|
+
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
1
5
|
import {
|
|
2
6
|
type ComponentsVersions,
|
|
3
7
|
checkCompressedComponentVersion,
|
|
4
8
|
compressComponentVersions,
|
|
5
9
|
getComponentsVersionsFromConfig,
|
|
6
|
-
} from '@aztec/
|
|
7
|
-
import { type ChainConfig } from '@aztec/circuit-types/config';
|
|
8
|
-
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
9
|
-
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vks';
|
|
10
|
-
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
10
|
+
} from '@aztec/stdlib/versioning';
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import type { SignableENR } from '@chainsafe/enr';
|
|
13
13
|
import xxhashFactory from 'xxhash-wasm';
|
|
14
14
|
|
|
15
|
-
import { AZTEC_ENR_KEY } from './
|
|
15
|
+
import { AZTEC_ENR_KEY } from './types/index.js';
|
|
16
16
|
|
|
17
17
|
const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
|
|
18
18
|
const XX_HASH_LEN = 8;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type ComponentLogger } from '@libp2p/interface';
|
|
2
|
-
/**
|
|
3
|
-
* Creates a libp2p compatible logger that wraps our pino logger.
|
|
4
|
-
* This adapter implements the ComponentLogger interface required by libp2p.
|
|
5
|
-
*/
|
|
6
|
-
export declare function createLibp2pComponentLogger(namespace: string, fixedTerms?: {}): ComponentLogger;
|
|
7
|
-
//# sourceMappingURL=libp2p_logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_logger.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_logger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAe,MAAM,mBAAmB,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,KAAK,GAAG,eAAe,CAI/F"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
/**
|
|
3
|
-
* Creates a libp2p compatible logger that wraps our pino logger.
|
|
4
|
-
* This adapter implements the ComponentLogger interface required by libp2p.
|
|
5
|
-
*/
|
|
6
|
-
export function createLibp2pComponentLogger(namespace, fixedTerms = {}) {
|
|
7
|
-
return {
|
|
8
|
-
forComponent: (component) => createLibp2pLogger(`${namespace}:${component}`, fixedTerms),
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
function createLibp2pLogger(component, fixedTerms = {}) {
|
|
12
|
-
const logger = createLogger(component, fixedTerms);
|
|
13
|
-
// Default log level is trace as this is super super noisy
|
|
14
|
-
const logFn = (formatter, ...args) => {
|
|
15
|
-
// Handle %p format specifier by manually replacing with args
|
|
16
|
-
if (typeof formatter === 'string' && args.length > 0) {
|
|
17
|
-
// Handle %p, %a, %s and %d format specifiers
|
|
18
|
-
const parts = formatter.split(/(%p|%a|%s|%d)/);
|
|
19
|
-
let result = parts[0];
|
|
20
|
-
let argIndex = 0;
|
|
21
|
-
for (let i = 1; i < parts.length; i += 2) {
|
|
22
|
-
if (argIndex < args.length) {
|
|
23
|
-
result += String(args[argIndex]) + (parts[i + 1] || '');
|
|
24
|
-
argIndex++;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
formatter = result;
|
|
28
|
-
// Only keep non-format args as data
|
|
29
|
-
args = args.slice(argIndex);
|
|
30
|
-
}
|
|
31
|
-
// Handle object args by spreading them, but only if they weren't used in formatting
|
|
32
|
-
if (args.length === 1 && typeof args[0] === 'object') {
|
|
33
|
-
logger.trace(formatter, args[0]);
|
|
34
|
-
}
|
|
35
|
-
else if (args.length > 0) {
|
|
36
|
-
// If we have remaining args after formatting, pass them as data
|
|
37
|
-
logger.trace(formatter, { _args: args });
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
logger.trace(formatter);
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
return Object.assign(logFn, {
|
|
44
|
-
enabled: logger.isLevelEnabled('debug'),
|
|
45
|
-
error(...args) {
|
|
46
|
-
const [msg, ...rest] = args;
|
|
47
|
-
logger.error(msg, ...rest);
|
|
48
|
-
},
|
|
49
|
-
debug(...args) {
|
|
50
|
-
const [msg, ...rest] = args;
|
|
51
|
-
logger.debug(msg, ...rest);
|
|
52
|
-
},
|
|
53
|
-
info(...args) {
|
|
54
|
-
const [msg, ...rest] = args;
|
|
55
|
-
logger.info(msg, ...rest);
|
|
56
|
-
},
|
|
57
|
-
warn(...args) {
|
|
58
|
-
const [msg, ...rest] = args;
|
|
59
|
-
logger.warn(msg, ...rest);
|
|
60
|
-
},
|
|
61
|
-
trace(...args) {
|
|
62
|
-
const [msg, ...rest] = args;
|
|
63
|
-
logger.trace(msg, ...rest);
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicDJwX2xvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9saWJwMnAvbGlicDJwX2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJckQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFNBQWlCLEVBQUUsVUFBVSxHQUFHLEVBQUU7SUFDNUUsT0FBTztRQUNMLFlBQVksRUFBRSxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsRUFBRSxFQUFFLFVBQVUsQ0FBQztLQUNqRyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxVQUFVLEdBQUcsRUFBRTtJQUM1RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRW5ELDBEQUEwRDtJQUMxRCxNQUFNLEtBQUssR0FBRyxDQUFDLFNBQWMsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFO1FBQy9DLDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JELDZDQUE2QztZQUM3QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQy9DLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFFakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA;;qDAEqD;AAErD;;GAEG;AACH,oBAAY,SAAS;IACnB,UAAU,oBAAoB;IAC9B,SAAS,iBAAiB;IAC1B,YAAY,oBAAoB;CACjC;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,SAAS,aAAa;CACvB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,OAAO,sBAAsB;CAC9B;AAED;;qDAEqD;AAErD;;GAEG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC"}
|
package/dest/services/types.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/***************************************************
|
|
2
|
-
* Events
|
|
3
|
-
***************************************************/
|
|
4
|
-
/**
|
|
5
|
-
* Events emitted from the libp2p node.
|
|
6
|
-
*/
|
|
7
|
-
export var PeerEvent;
|
|
8
|
-
(function (PeerEvent) {
|
|
9
|
-
PeerEvent["DISCOVERED"] = "peer:discovered";
|
|
10
|
-
PeerEvent["CONNECTED"] = "peer:connect";
|
|
11
|
-
PeerEvent["DISCONNECTED"] = "peer:disconnect";
|
|
12
|
-
})(PeerEvent || (PeerEvent = {}));
|
|
13
|
-
/**
|
|
14
|
-
* Events emitted from the Discv5 service.
|
|
15
|
-
*/
|
|
16
|
-
export var Discv5Event;
|
|
17
|
-
(function (Discv5Event) {
|
|
18
|
-
Discv5Event["DISCOVERED"] = "discovered";
|
|
19
|
-
Discv5Event["ENR_ADDED"] = "enrAdded";
|
|
20
|
-
})(Discv5Event || (Discv5Event = {}));
|
|
21
|
-
/**
|
|
22
|
-
* Events emitted from the GossipSub protocol.
|
|
23
|
-
*/
|
|
24
|
-
export var GossipSubEvent;
|
|
25
|
-
(function (GossipSubEvent) {
|
|
26
|
-
GossipSubEvent["MESSAGE"] = "gossipsub:message";
|
|
27
|
-
})(GossipSubEvent || (GossipSubEvent = {}));
|
|
28
|
-
/***************************************************
|
|
29
|
-
* Types
|
|
30
|
-
***************************************************/
|
|
31
|
-
/**
|
|
32
|
-
* Aztec network specific types
|
|
33
|
-
*/
|
|
34
|
-
export const AZTEC_ENR_KEY = 'aztec';
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O3FEQUVxRDtBQUVyRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsMkNBQThCLENBQUE7SUFDOUIsdUNBQTBCLENBQUE7SUFDMUIsNkNBQWdDLENBQUE7QUFDbEMsQ0FBQyxFQUpXLFNBQVMsS0FBVCxTQUFTLFFBSXBCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHdDQUF5QixDQUFBO0lBQ3pCLHFDQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN4QiwrQ0FBNkIsQ0FBQTtBQUMvQixDQUFDLEVBRlcsY0FBYyxLQUFkLGNBQWMsUUFFekI7QUFFRDs7cURBRXFEO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyJ9
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
|
|
3
|
-
import { type ComponentLogger, type Logger } from '@libp2p/interface';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Creates a libp2p compatible logger that wraps our pino logger.
|
|
7
|
-
* This adapter implements the ComponentLogger interface required by libp2p.
|
|
8
|
-
*/
|
|
9
|
-
export function createLibp2pComponentLogger(namespace: string, fixedTerms = {}): ComponentLogger {
|
|
10
|
-
return {
|
|
11
|
-
forComponent: (component: string) => createLibp2pLogger(`${namespace}:${component}`, fixedTerms),
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function createLibp2pLogger(component: string, fixedTerms = {}): Logger {
|
|
16
|
-
const logger = createLogger(component, fixedTerms);
|
|
17
|
-
|
|
18
|
-
// Default log level is trace as this is super super noisy
|
|
19
|
-
const logFn = (formatter: any, ...args: any[]) => {
|
|
20
|
-
// Handle %p format specifier by manually replacing with args
|
|
21
|
-
if (typeof formatter === 'string' && args.length > 0) {
|
|
22
|
-
// Handle %p, %a, %s and %d format specifiers
|
|
23
|
-
const parts = formatter.split(/(%p|%a|%s|%d)/);
|
|
24
|
-
let result = parts[0];
|
|
25
|
-
let argIndex = 0;
|
|
26
|
-
|
|
27
|
-
for (let i = 1; i < parts.length; i += 2) {
|
|
28
|
-
if (argIndex < args.length) {
|
|
29
|
-
result += String(args[argIndex]) + (parts[i + 1] || '');
|
|
30
|
-
argIndex++;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
formatter = result;
|
|
35
|
-
// Only keep non-format args as data
|
|
36
|
-
args = args.slice(argIndex);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Handle object args by spreading them, but only if they weren't used in formatting
|
|
40
|
-
if (args.length === 1 && typeof args[0] === 'object') {
|
|
41
|
-
logger.trace(formatter, args[0]);
|
|
42
|
-
} else if (args.length > 0) {
|
|
43
|
-
// If we have remaining args after formatting, pass them as data
|
|
44
|
-
logger.trace(formatter, { _args: args });
|
|
45
|
-
} else {
|
|
46
|
-
logger.trace(formatter);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
return Object.assign(logFn, {
|
|
51
|
-
enabled: logger.isLevelEnabled('debug'),
|
|
52
|
-
|
|
53
|
-
error(...args: any[]) {
|
|
54
|
-
const [msg, ...rest] = args;
|
|
55
|
-
logger.error(msg as string, ...rest);
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
debug(...args: any[]) {
|
|
59
|
-
const [msg, ...rest] = args;
|
|
60
|
-
logger.debug(msg as string, ...rest);
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
info(...args: any[]) {
|
|
64
|
-
const [msg, ...rest] = args;
|
|
65
|
-
logger.info(msg as string, ...rest);
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
warn(...args: any[]) {
|
|
69
|
-
const [msg, ...rest] = args;
|
|
70
|
-
logger.warn(msg as string, ...rest);
|
|
71
|
-
},
|
|
72
|
-
|
|
73
|
-
trace(...args: any[]) {
|
|
74
|
-
const [msg, ...rest] = args;
|
|
75
|
-
logger.trace(msg as string, ...rest);
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
}
|
|
File without changes
|