@aztec/p2p 0.86.0-starknet.1 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/client/factory.d.ts +1 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +11 -13
- package/dest/client/interface.d.ts +10 -1
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +18 -6
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +103 -53
- package/dest/config.d.ts +5 -6
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +6 -11
- package/dest/enr/generate-enr.d.ts +7 -0
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +23 -2
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -0
- 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 +44 -14
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +2 -0
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +6 -0
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +7 -0
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +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 +13 -5
- package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +15 -14
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +2 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +14 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +62 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +3 -3
- package/dest/msg_validators/tx_validator/metadata_validator.js +5 -5
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +1 -1
- package/dest/services/discv5/discV5_service.d.ts +2 -2
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +9 -13
- package/dest/services/dummy_service.d.ts +3 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +6 -1
- package/dest/services/encoding.d.ts +1 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.d.ts +4 -2
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +87 -88
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +11 -2
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -2
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +41 -21
- package/dest/services/reqresp/interface.d.ts +1 -3
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts +0 -2
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +1 -1
- package/dest/services/reqresp/protocols/ping.d.ts +0 -2
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +0 -2
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.d.ts +1 -3
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +2 -2
- package/dest/services/service.d.ts +3 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +2 -2
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +9 -6
- package/dest/testbench/testbench.js +1 -1
- package/dest/testbench/worker_client_manager.d.ts +0 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +2 -2
- package/dest/types/index.d.ts +1 -0
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +1 -0
- package/dest/versioning.d.ts +2 -2
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +6 -1
- package/package.json +15 -15
- package/src/bootstrap/bootstrap.ts +1 -1
- package/src/client/factory.ts +33 -32
- package/src/client/interface.ts +13 -1
- package/src/client/p2p_client.ts +129 -55
- package/src/config.ts +11 -18
- package/src/enr/generate-enr.ts +33 -3
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +2 -2
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +4 -1
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +72 -34
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +12 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +9 -0
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +9 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +1 -1
- package/src/msg_validators/tx_validator/data_validator.ts +24 -18
- package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
- package/src/msg_validators/tx_validator/factory.ts +94 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +3 -3
- package/src/msg_validators/tx_validator/metadata_validator.ts +5 -5
- package/src/msg_validators/tx_validator/phases_validator.ts +6 -2
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +1 -1
- package/src/services/discv5/discV5_service.ts +14 -12
- package/src/services/dummy_service.ts +8 -2
- package/src/services/libp2p/libp2p_service.ts +95 -107
- package/src/services/peer-manager/metrics.ts +4 -1
- package/src/services/peer-manager/peer_manager.ts +18 -1
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +5 -1
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +42 -19
- package/src/services/reqresp/metrics.ts +4 -1
- package/src/services/reqresp/protocols/goodbye.ts +1 -1
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +4 -1
- package/src/services/reqresp/reqresp.ts +2 -1
- package/src/services/service.ts +4 -1
- package/src/test-helpers/make-test-p2p-clients.ts +2 -1
- package/src/test-helpers/reqresp-nodes.ts +1 -1
- package/src/testbench/p2p_client_testbench_worker.ts +8 -4
- package/src/testbench/testbench.ts +1 -1
- package/src/testbench/worker_client_manager.ts +2 -2
- package/src/types/index.ts +1 -0
- package/src/versioning.ts +8 -1
package/src/services/service.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
2
2
|
import type { BlockAttestation, BlockProposal, Gossipable } from '@aztec/stdlib/p2p';
|
|
3
|
+
import type { Tx } from '@aztec/stdlib/tx';
|
|
3
4
|
|
|
4
5
|
import type { ENR } from '@chainsafe/enr';
|
|
5
6
|
import type { PeerId } from '@libp2p/interface';
|
|
@@ -32,7 +33,7 @@ export interface P2PService {
|
|
|
32
33
|
* Called to have the given transaction propagated through the P2P network.
|
|
33
34
|
* @param message - The message to be propagated.
|
|
34
35
|
*/
|
|
35
|
-
propagate<T extends Gossipable>(message: T): void
|
|
36
|
+
propagate<T extends Gossipable>(message: T): Promise<void>;
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* Request information from peers via the request response protocol.
|
|
@@ -67,6 +68,8 @@ export interface P2PService {
|
|
|
67
68
|
getEnr(): ENR | undefined;
|
|
68
69
|
|
|
69
70
|
getPeers(includePending?: boolean): PeerInfo[];
|
|
71
|
+
|
|
72
|
+
validate(txs: Tx[]): Promise<void>;
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
/**
|
|
@@ -85,6 +85,7 @@ export async function makeTestP2PClient(
|
|
|
85
85
|
proofVerifier,
|
|
86
86
|
mockWorldState,
|
|
87
87
|
mockEpochCache,
|
|
88
|
+
'test-p2p-client',
|
|
88
89
|
undefined,
|
|
89
90
|
deps,
|
|
90
91
|
);
|
|
@@ -108,7 +109,7 @@ export async function makeTestP2PClients(numberOfPeers: number, testConfig: Make
|
|
|
108
109
|
try {
|
|
109
110
|
ports = await getPorts(numberOfPeers);
|
|
110
111
|
break;
|
|
111
|
-
} catch
|
|
112
|
+
} catch {
|
|
112
113
|
await sleep(1000);
|
|
113
114
|
}
|
|
114
115
|
}
|
|
@@ -120,7 +120,7 @@ export async function createTestLibP2PService<T extends P2PClientType>(
|
|
|
120
120
|
bootstrapNodeEnrVersionCheck: false,
|
|
121
121
|
...chainConfig,
|
|
122
122
|
} as P2PConfig & DataStoreConfig;
|
|
123
|
-
const discoveryService = new DiscV5Service(peerId, config, telemetry);
|
|
123
|
+
const discoveryService = new DiscV5Service(peerId, config, 'test-reqresp-node', telemetry);
|
|
124
124
|
const proofVerifier = new AlwaysTrueCircuitVerifier();
|
|
125
125
|
|
|
126
126
|
// No bootstrap nodes provided as the libp2p service will register them in the constructor
|
|
@@ -13,7 +13,7 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
|
13
13
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
14
14
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
15
15
|
import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
16
|
-
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
16
|
+
import { P2PClientType, P2PMessage } from '@aztec/stdlib/p2p';
|
|
17
17
|
import { Tx, TxStatus } from '@aztec/stdlib/tx';
|
|
18
18
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
19
19
|
|
|
@@ -44,11 +44,13 @@ function mockTxPool(): TxPool {
|
|
|
44
44
|
getAllTxs: () => Promise.resolve([]),
|
|
45
45
|
getAllTxHashes: () => Promise.resolve([]),
|
|
46
46
|
getPendingTxHashes: () => Promise.resolve([]),
|
|
47
|
+
getPendingTxCount: () => Promise.resolve(0),
|
|
47
48
|
getMinedTxHashes: () => Promise.resolve([]),
|
|
48
49
|
getTxStatus: () => Promise.resolve(TxStatus.PENDING),
|
|
49
50
|
getTxsByHash: () => Promise.resolve([]),
|
|
50
51
|
hasTxs: () => Promise.resolve([]),
|
|
51
52
|
setMaxTxPoolSize: () => Promise.resolve(),
|
|
53
|
+
markTxsAsNonEvictable: () => Promise.resolve(),
|
|
52
54
|
};
|
|
53
55
|
}
|
|
54
56
|
|
|
@@ -124,9 +126,10 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
124
126
|
this.disableTxValidation = disable;
|
|
125
127
|
}
|
|
126
128
|
|
|
127
|
-
protected override async handleGossipedTx(
|
|
129
|
+
protected override async handleGossipedTx(payload: Buffer, msgId: string, source: PeerId) {
|
|
128
130
|
if (this.disableTxValidation) {
|
|
129
|
-
const
|
|
131
|
+
const p2pMessage = P2PMessage.fromMessageData(payload);
|
|
132
|
+
const tx = Tx.fromBuffer(p2pMessage.payload);
|
|
130
133
|
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Accept);
|
|
131
134
|
|
|
132
135
|
const txHash = await tx.getTxHash();
|
|
@@ -134,7 +137,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
134
137
|
this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
|
|
135
138
|
await this.mempools.txPool.addTxs([tx]);
|
|
136
139
|
} else {
|
|
137
|
-
await super.handleGossipedTx(
|
|
140
|
+
await super.handleGossipedTx(payload, msgId, source);
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
|
|
@@ -179,6 +182,7 @@ process.on('message', async msg => {
|
|
|
179
182
|
proofVerifier,
|
|
180
183
|
worldState,
|
|
181
184
|
epochCache,
|
|
185
|
+
'test-p2p-bench-worker',
|
|
182
186
|
telemetry,
|
|
183
187
|
deps,
|
|
184
188
|
);
|
|
@@ -21,7 +21,7 @@ async function main() {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const configPath = path.join(__dirname, '../../testbench/configurations', configFile);
|
|
24
|
-
const config = await import(configPath, {
|
|
24
|
+
const config = await import(configPath, { with: { type: 'json' } });
|
|
25
25
|
const testConfig = { ...testChainConfig, ...config.default };
|
|
26
26
|
const numberOfClients = config.default.numberOfClients;
|
|
27
27
|
|
|
@@ -257,7 +257,7 @@ class WorkerClientManager {
|
|
|
257
257
|
// Try to gracefully stop the process
|
|
258
258
|
try {
|
|
259
259
|
process.send({ type: 'STOP' });
|
|
260
|
-
} catch
|
|
260
|
+
} catch {
|
|
261
261
|
// If sending the message fails, force kill immediately
|
|
262
262
|
clearTimeout(forceKillTimeout);
|
|
263
263
|
try {
|
|
@@ -291,7 +291,7 @@ class WorkerClientManager {
|
|
|
291
291
|
if (!p.killed) {
|
|
292
292
|
p.kill('SIGKILL');
|
|
293
293
|
}
|
|
294
|
-
} catch
|
|
294
|
+
} catch {
|
|
295
295
|
// Ignore errors when force killing
|
|
296
296
|
}
|
|
297
297
|
});
|
package/src/types/index.ts
CHANGED
package/src/versioning.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import type { SignableENR } from '@chainsafe/enr';
|
|
13
13
|
import xxhashFactory from 'xxhash-wasm';
|
|
14
14
|
|
|
15
|
-
import { AZTEC_ENR_KEY } from './types/index.js';
|
|
15
|
+
import { AZTEC_ENR_CLIENT_VERSION_KEY, 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;
|
|
@@ -31,6 +31,13 @@ export function setAztecEnrKey(enr: SignableENR, config: ChainConfig, useXxHash
|
|
|
31
31
|
return versions;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/** Sets the Aztec client version on ENR record **/
|
|
35
|
+
export function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: string) {
|
|
36
|
+
if (clientVersion) {
|
|
37
|
+
enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
34
41
|
/** Checks the given value from an ENR record against the expected versions. */
|
|
35
42
|
export function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions) {
|
|
36
43
|
if (enrValue.length === XX_HASH_LEN) {
|