@aztec/p2p 1.2.1 → 2.0.0-nightly.20250813
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/client/factory.d.ts +5 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +29 -12
- package/dest/client/interface.d.ts +8 -13
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +18 -22
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +86 -83
- package/dest/config.d.ts +30 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +34 -1
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +13 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +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 +117 -10
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +4 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +22 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +4 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +21 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +2 -10
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +8 -3
- 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 +64 -37
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +8 -3
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +18 -10
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -2
- 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 +73 -44
- package/dest/msg_validators/attestation_validator/attestation_validator.js +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +35 -59
- package/dest/msg_validators/tx_validator/double_spend_validator.js +2 -2
- package/dest/msg_validators/tx_validator/gas_validator.js +4 -4
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +21 -21
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +3 -3
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +4 -1
- package/dest/services/dummy_service.d.ts +13 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +26 -3
- package/dest/services/index.d.ts +3 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +3 -1
- package/dest/services/libp2p/libp2p_service.d.ts +13 -20
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +123 -46
- package/dest/services/peer-manager/interface.d.ts +8 -1
- package/dest/services/peer-manager/interface.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts +70 -3
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +369 -39
- package/dest/services/reqresp/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +3 -3
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +3 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +35 -52
- package/dest/services/reqresp/index.d.ts +2 -1
- package/dest/services/reqresp/index.d.ts.map +1 -1
- package/dest/services/reqresp/index.js +2 -1
- package/dest/services/reqresp/interface.d.ts +61 -10
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +41 -6
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +5 -0
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +28 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +49 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
- package/dest/services/reqresp/protocols/goodbye.js +3 -5
- package/dest/services/reqresp/protocols/index.d.ts +2 -0
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -0
- package/dest/services/reqresp/protocols/status.d.ts +2 -0
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +7 -0
- package/dest/services/reqresp/protocols/tx.d.ts +12 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +34 -6
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +20 -0
- package/dest/services/reqresp/reqresp.d.ts +37 -39
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +220 -220
- package/dest/services/reqresp/status.d.ts +8 -3
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +6 -2
- package/dest/services/service.d.ts +10 -10
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +25 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +58 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +56 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +295 -0
- package/dest/services/tx_collection/index.d.ts +3 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +2 -0
- package/dest/services/tx_collection/instrumentation.d.ts +10 -0
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_collection/instrumentation.js +34 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +54 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +176 -0
- package/dest/services/tx_collection/tx_collection.d.ts +109 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +127 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +81 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +49 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +206 -0
- package/dest/services/{tx_collect_instrumentation.d.ts → tx_provider_instrumentation.d.ts} +2 -2
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/{tx_collect_instrumentation.js → tx_provider_instrumentation.js} +5 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +4 -3
- package/dest/test-helpers/mock-pubsub.d.ts +2 -1
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +2 -1
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +8 -4
- package/dest/testbench/p2p_client_testbench_worker.js +11 -5
- package/dest/util.d.ts +1 -1
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -15
- package/src/client/factory.ts +87 -12
- package/src/client/interface.ts +19 -15
- package/src/client/p2p_client.ts +108 -92
- package/src/config.ts +52 -1
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +15 -1
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +155 -4
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +28 -1
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +28 -2
- package/src/mem_pools/attestation_pool/mocks.ts +1 -3
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +59 -41
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +19 -9
- package/src/mem_pools/tx_pool/tx_pool.ts +7 -2
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +63 -40
- package/src/msg_validators/attestation_validator/attestation_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 +36 -27
- package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +4 -4
- package/src/msg_validators/tx_validator/metadata_validator.ts +22 -28
- package/src/msg_validators/tx_validator/phases_validator.ts +2 -2
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -2
- package/src/services/discv5/discV5_service.ts +4 -1
- package/src/services/dummy_service.ts +44 -4
- package/src/services/index.ts +3 -1
- package/src/services/libp2p/libp2p_service.ts +147 -55
- package/src/services/peer-manager/interface.ts +10 -1
- package/src/services/peer-manager/peer_manager.ts +441 -41
- package/src/services/reqresp/config.ts +3 -3
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +38 -63
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +63 -17
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +24 -3
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
- package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
- package/src/services/reqresp/protocols/goodbye.ts +3 -3
- package/src/services/reqresp/protocols/index.ts +2 -0
- package/src/services/reqresp/protocols/status.ts +20 -0
- package/src/services/reqresp/protocols/tx.ts +35 -6
- package/src/services/reqresp/rate-limiter/rate_limits.ts +20 -0
- package/src/services/reqresp/reqresp.ts +294 -264
- package/src/services/reqresp/status.ts +9 -3
- package/src/services/service.ts +23 -14
- package/src/services/tx_collection/config.ts +84 -0
- package/src/services/tx_collection/fast_tx_collection.ts +338 -0
- package/src/services/tx_collection/index.ts +2 -0
- package/src/services/tx_collection/instrumentation.ts +43 -0
- package/src/services/tx_collection/slow_tx_collection.ts +232 -0
- package/src/services/tx_collection/tx_collection.ts +214 -0
- package/src/services/tx_collection/tx_collection_sink.ts +98 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +215 -0
- package/src/services/{tx_collect_instrumentation.ts → tx_provider_instrumentation.ts} +5 -5
- package/src/test-helpers/make-test-p2p-clients.ts +4 -2
- package/src/test-helpers/mock-pubsub.ts +1 -0
- package/src/test-helpers/reqresp-nodes.ts +7 -1
- package/src/testbench/p2p_client_testbench_worker.ts +9 -2
- package/src/util.ts +1 -1
- package/dest/services/tx_collect_instrumentation.d.ts.map +0 -1
- package/dest/services/tx_collector.d.ts +0 -23
- package/dest/services/tx_collector.d.ts.map +0 -1
- package/dest/services/tx_collector.js +0 -95
- package/src/services/tx_collector.ts +0 -134
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { compactArray } from '@aztec/foundation/collection';
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { elapsed } from '@aztec/foundation/timer';
|
|
4
|
+
import { TxHash } from '@aztec/stdlib/tx';
|
|
5
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
6
|
+
import { TxProviderInstrumentation } from './tx_provider_instrumentation.js';
|
|
7
|
+
/**
|
|
8
|
+
* Gathers and returns txs given a block proposal, block, or their hashes.
|
|
9
|
+
* Loads available txs from the tx pool, and relies on a TxCollection service to collect txs from the network and other nodes.
|
|
10
|
+
*/ export class TxProvider {
|
|
11
|
+
txCollection;
|
|
12
|
+
txPool;
|
|
13
|
+
txValidator;
|
|
14
|
+
log;
|
|
15
|
+
instrumentation;
|
|
16
|
+
constructor(txCollection, txPool, txValidator, log = createLogger('p2p:tx-collector'), client = getTelemetryClient()){
|
|
17
|
+
this.txCollection = txCollection;
|
|
18
|
+
this.txPool = txPool;
|
|
19
|
+
this.txValidator = txValidator;
|
|
20
|
+
this.log = log;
|
|
21
|
+
this.instrumentation = new TxProviderInstrumentation(client, 'TxProvider');
|
|
22
|
+
}
|
|
23
|
+
/** Returns txs from the tx pool given their hashes.*/ async getAvailableTxs(txHashes) {
|
|
24
|
+
const response = await this.txPool.getTxsByHash(txHashes);
|
|
25
|
+
if (response.length !== txHashes.length) {
|
|
26
|
+
throw new Error(`Unexpected response size from tx pool: expected ${txHashes.length} but got ${response.length}`);
|
|
27
|
+
}
|
|
28
|
+
const txs = [];
|
|
29
|
+
const missingTxs = [];
|
|
30
|
+
for(let i = 0; i < txHashes.length; i++){
|
|
31
|
+
const tx = response[i];
|
|
32
|
+
if (tx === undefined) {
|
|
33
|
+
missingTxs.push(txHashes[i]);
|
|
34
|
+
} else {
|
|
35
|
+
txs.push(tx.setTxHash(txHashes[i]));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
txs,
|
|
40
|
+
missingTxs
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Gathers txs from the tx pool, proposal body, remote rpc nodes, and reqresp. */ getTxsForBlockProposal(blockProposal, opts) {
|
|
44
|
+
return this.getOrderedTxsFromAllSources({
|
|
45
|
+
type: 'proposal',
|
|
46
|
+
blockProposal
|
|
47
|
+
}, blockProposal.toBlockInfo(), blockProposal.txHashes, {
|
|
48
|
+
...opts,
|
|
49
|
+
pinnedPeer: opts.pinnedPeer
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/** Gathers txs from the tx pool, remote rpc nodes, and reqresp. */ getTxsForBlock(block, opts) {
|
|
53
|
+
return this.getOrderedTxsFromAllSources({
|
|
54
|
+
type: 'block',
|
|
55
|
+
block
|
|
56
|
+
}, block.toBlockInfo(), block.body.txEffects.map((tx)=>tx.txHash), {
|
|
57
|
+
...opts,
|
|
58
|
+
pinnedPeer: undefined
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async getOrderedTxsFromAllSources(request, blockInfo, txHashes, opts) {
|
|
62
|
+
const [durationMs, result] = await elapsed(()=>this.getTxsFromAllSources(request, blockInfo, txHashes, opts));
|
|
63
|
+
const { missingTxHashes, txsFromMempool, txsFromNetwork, txsFromProposal } = result;
|
|
64
|
+
const txs = [
|
|
65
|
+
...txsFromMempool ?? [],
|
|
66
|
+
...txsFromProposal ?? [],
|
|
67
|
+
...txsFromNetwork ?? []
|
|
68
|
+
];
|
|
69
|
+
const missingTxs = missingTxHashes?.length ?? 0;
|
|
70
|
+
const level = missingTxs === 0 ? 'verbose' : 'warn';
|
|
71
|
+
this.log[level](`Retrieved ${txs.length} out of ${blockInfo.txCount} txs for ${request.type}`, {
|
|
72
|
+
...blockInfo,
|
|
73
|
+
txsFromProposal: txsFromProposal?.length,
|
|
74
|
+
txsFromMempool: txsFromMempool?.length,
|
|
75
|
+
txsFromNetwork: txsFromNetwork?.length,
|
|
76
|
+
missingTxs,
|
|
77
|
+
durationMs
|
|
78
|
+
});
|
|
79
|
+
const orderedTxs = this.orderTxs(txs, txHashes);
|
|
80
|
+
if (orderedTxs.length + missingTxs !== txHashes.length) {
|
|
81
|
+
throw new Error(`Error collecting txs for ${request.type} with ${txHashes.length} txs: found ${orderedTxs.length} and flagged ${missingTxs} as missing`);
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
txs: orderedTxs,
|
|
85
|
+
missingTxs: (missingTxHashes ?? []).map(TxHash.fromString),
|
|
86
|
+
durationMs
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
orderTxs(txs, order) {
|
|
90
|
+
const txsMap = new Map(txs.map((tx)=>[
|
|
91
|
+
tx.txHash.toString(),
|
|
92
|
+
tx
|
|
93
|
+
]));
|
|
94
|
+
return order.map((hash)=>txsMap.get(hash.toString())).filter((tx)=>tx !== undefined);
|
|
95
|
+
}
|
|
96
|
+
async getTxsFromAllSources(request, blockInfo, txHashes, opts) {
|
|
97
|
+
const missingTxHashes = new Set(txHashes.map((txHash)=>txHash.toString()));
|
|
98
|
+
if (missingTxHashes.size === 0) {
|
|
99
|
+
this.log.debug(`Received request with no transactions`, blockInfo);
|
|
100
|
+
return {};
|
|
101
|
+
}
|
|
102
|
+
// First go to our tx pool and fetch whatever txs we have there
|
|
103
|
+
// We go to the mempool first since those txs are already validated
|
|
104
|
+
const txsFromMempool = compactArray(await this.txPool.getTxsByHash(txHashes));
|
|
105
|
+
txsFromMempool.forEach((tx)=>missingTxHashes.delete(tx.getTxHash().toString()));
|
|
106
|
+
this.instrumentation.incTxsFromMempool(txsFromMempool.length);
|
|
107
|
+
this.log.debug(`Retrieved ${txsFromMempool.length} txs from mempool for block proposal (${missingTxHashes.size} pending)`, {
|
|
108
|
+
...blockInfo,
|
|
109
|
+
missingTxHashes: [
|
|
110
|
+
...missingTxHashes
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
if (missingTxHashes.size === 0) {
|
|
114
|
+
return {
|
|
115
|
+
txsFromMempool
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// Take txs from the proposal body if there are any
|
|
119
|
+
// Note that we still have to validate these txs, but we do it in parallel with tx collection
|
|
120
|
+
const proposal = request.type === 'proposal' ? request.blockProposal : undefined;
|
|
121
|
+
const txsFromProposal = this.extractFromProposal(proposal, [
|
|
122
|
+
...missingTxHashes
|
|
123
|
+
]);
|
|
124
|
+
if (txsFromProposal.length > 0) {
|
|
125
|
+
this.instrumentation.incTxsFromProposals(txsFromProposal.length);
|
|
126
|
+
txsFromProposal.forEach((tx)=>missingTxHashes.delete(tx.txHash.toString()));
|
|
127
|
+
this.log.debug(`Retrieved ${txsFromProposal.length} txs from proposal body (${missingTxHashes.size} pending)`, {
|
|
128
|
+
...blockInfo,
|
|
129
|
+
missingTxHashes: [
|
|
130
|
+
...missingTxHashes
|
|
131
|
+
]
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (missingTxHashes.size === 0) {
|
|
135
|
+
await this.processProposalTxs(txsFromProposal);
|
|
136
|
+
return {
|
|
137
|
+
txsFromMempool,
|
|
138
|
+
txsFromProposal
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
// Start tx collection from the network if needed, while we validate the txs taken from the proposal in parallel
|
|
142
|
+
const [txsFromNetwork] = await Promise.all([
|
|
143
|
+
this.txCollection.collectFastFor(request, [
|
|
144
|
+
...missingTxHashes
|
|
145
|
+
], opts),
|
|
146
|
+
this.processProposalTxs(txsFromProposal)
|
|
147
|
+
]);
|
|
148
|
+
if (txsFromNetwork.length > 0) {
|
|
149
|
+
txsFromNetwork.forEach((tx)=>missingTxHashes.delete(tx.txHash.toString()));
|
|
150
|
+
this.instrumentation.incTxsFromP2P(txsFromNetwork.length);
|
|
151
|
+
this.log.debug(`Retrieved ${txsFromNetwork.length} txs from network for block proposal (${missingTxHashes.size} pending)`, {
|
|
152
|
+
...blockInfo,
|
|
153
|
+
missingTxHashes: [
|
|
154
|
+
...missingTxHashes
|
|
155
|
+
]
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
if (missingTxHashes.size === 0) {
|
|
159
|
+
return {
|
|
160
|
+
txsFromNetwork,
|
|
161
|
+
txsFromMempool,
|
|
162
|
+
txsFromProposal
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
// We are still missing txs, make one last attempt to collect them from our pool, in case they showed up somehow else
|
|
166
|
+
const moreTxsFromPool = compactArray(await this.txPool.getTxsByHash([
|
|
167
|
+
...missingTxHashes
|
|
168
|
+
].map(TxHash.fromString)));
|
|
169
|
+
if (moreTxsFromPool.length > 0) {
|
|
170
|
+
this.instrumentation.incTxsFromMempool(moreTxsFromPool.length);
|
|
171
|
+
this.log.debug(`Retrieved ${moreTxsFromPool.length} txs from pool retry for block proposal (${missingTxHashes.size} pending)`, {
|
|
172
|
+
...blockInfo,
|
|
173
|
+
missingTxHashes: [
|
|
174
|
+
...missingTxHashes
|
|
175
|
+
]
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
if (missingTxHashes.size > 0) {
|
|
179
|
+
this.instrumentation.incMissingTxs(missingTxHashes.size);
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
txsFromNetwork,
|
|
183
|
+
txsFromMempool: [
|
|
184
|
+
...txsFromMempool,
|
|
185
|
+
...moreTxsFromPool
|
|
186
|
+
],
|
|
187
|
+
txsFromProposal,
|
|
188
|
+
missingTxHashes: [
|
|
189
|
+
...missingTxHashes
|
|
190
|
+
]
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
extractFromProposal(proposal, missingTxHashes) {
|
|
194
|
+
if (!proposal) {
|
|
195
|
+
return [];
|
|
196
|
+
}
|
|
197
|
+
return compactArray(proposal.txs ?? []).filter((tx)=>missingTxHashes.includes(tx.getTxHash().toString()));
|
|
198
|
+
}
|
|
199
|
+
async processProposalTxs(txs) {
|
|
200
|
+
if (txs.length === 0) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
await this.txValidator.validate(txs);
|
|
204
|
+
await this.txPool.addTxs(txs);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class TxProviderInstrumentation {
|
|
3
3
|
private txFromProposalCount;
|
|
4
4
|
private txFromMempoolCount;
|
|
5
5
|
private txFromP2PCount;
|
|
@@ -10,4 +10,4 @@ export declare class TxCollectorInstrumentation {
|
|
|
10
10
|
incTxsFromP2P(count: number): void;
|
|
11
11
|
incMissingTxs(count: number): void;
|
|
12
12
|
}
|
|
13
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=tx_provider_instrumentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx_provider_instrumentation.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAE5F,qBAAa,yBAAyB;IACpC,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAgB;gBAE3B,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM;IAoBjD,mBAAmB,CAAC,KAAK,EAAE,MAAM;IAIjC,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAI/B,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,aAAa,CAAC,KAAK,EAAE,MAAM;CAG5B"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { Metrics } from '@aztec/telemetry-client';
|
|
2
|
-
export class
|
|
2
|
+
export class TxProviderInstrumentation {
|
|
3
3
|
txFromProposalCount;
|
|
4
4
|
txFromMempoolCount;
|
|
5
5
|
txFromP2PCount;
|
|
6
6
|
missingTxsCount;
|
|
7
7
|
constructor(client, name){
|
|
8
8
|
const meter = client.getMeter(name);
|
|
9
|
-
this.txFromProposalCount = meter.createUpDownCounter(Metrics.
|
|
9
|
+
this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT, {
|
|
10
10
|
description: 'The number of txs taken from block proposals'
|
|
11
11
|
});
|
|
12
|
-
this.txFromMempoolCount = meter.createUpDownCounter(Metrics.
|
|
12
|
+
this.txFromMempoolCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT, {
|
|
13
13
|
description: 'The number of txs taken from the local mempool'
|
|
14
14
|
});
|
|
15
|
-
this.txFromP2PCount = meter.createUpDownCounter(Metrics.
|
|
15
|
+
this.txFromP2PCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT, {
|
|
16
16
|
description: 'The number of txs taken from the p2p network'
|
|
17
17
|
});
|
|
18
|
-
this.missingTxsCount = meter.createUpDownCounter(Metrics.
|
|
18
|
+
this.missingTxsCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_MISSING_TXS_COUNT, {
|
|
19
19
|
description: 'The number of txs not found anywhere'
|
|
20
20
|
});
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-test-p2p-clients.d.ts","sourceRoot":"","sources":["../../src/test-helpers/make-test-p2p-clients.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"make-test-p2p-clients.d.ts","sourceRoot":"","sources":["../../src/test-helpers/make-test-p2p-clients.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAI5D,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,kBAAkB,CAAC;AAG7F,MAAM,WAAW,wBAAwB;IACvC,mBAAmB,EAAE,eAAe,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,UAAU,CAAC;IAC3B,cAAc,EAAE,sBAAsB,CAAC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,SAAS,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,wBAAwB,0CAMlC;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,EACE,kBAAyB,EACzB,aAAa,EACb,kBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,MAAwC,GACzC,EAAE,wBAAwB,0CA2C5B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB;;;;;KAuC3G;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB;;;;;KAgCnG;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAG7D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MockL2BlockSource } from '@aztec/archiver/test';
|
|
2
2
|
import { SecretValue } from '@aztec/foundation/config';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
4
5
|
import { sleep } from '@aztec/foundation/sleep';
|
|
5
6
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
6
7
|
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
@@ -48,7 +49,7 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
48
49
|
await l2BlockSource.createBlocks(100);
|
|
49
50
|
const proofVerifier = alwaysTrueVerifier ? new AlwaysTrueCircuitVerifier() : new AlwaysFalseCircuitVerifier();
|
|
50
51
|
const kvStore = await openTmpStore('test');
|
|
51
|
-
const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, mockWorldState, mockEpochCache, 'test-p2p-client', undefined, {
|
|
52
|
+
const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, mockWorldState, mockEpochCache, 'test-p2p-client', undefined, undefined, {
|
|
52
53
|
txPool: mockTxPool,
|
|
53
54
|
attestationPool: mockAttestationPool,
|
|
54
55
|
store: kvStore,
|
|
@@ -82,7 +83,7 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
82
83
|
});
|
|
83
84
|
clients.push(client);
|
|
84
85
|
}
|
|
85
|
-
await
|
|
86
|
+
await retryUntil(()=>clients.every((c)=>c.isReady()), 'p2p clients started', 10, 0.5);
|
|
86
87
|
testConfig.logger?.info(`Created and started ${clients.length} P2P clients at ports ${ports.join(',')}`, {
|
|
87
88
|
ports,
|
|
88
89
|
peerEnrs,
|
|
@@ -133,5 +134,5 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
133
134
|
}
|
|
134
135
|
export async function startTestP2PClients(clients) {
|
|
135
136
|
await Promise.all(clients.map((c)=>c.start()));
|
|
136
|
-
await
|
|
137
|
+
await retryUntil(()=>clients.every((c)=>c.isReady()), 'p2p clients started', 10, 0.5);
|
|
137
138
|
}
|
|
@@ -21,7 +21,7 @@ export declare class MockPubSub implements PubSubLibp2p {
|
|
|
21
21
|
private gossipSub;
|
|
22
22
|
constructor(peerId: PeerId, network: MockGossipSubNetwork);
|
|
23
23
|
get services(): {
|
|
24
|
-
pubsub: Pick<import("@chainsafe/libp2p-gossipsub").GossipSub, "addEventListener" | "removeEventListener" | "publish" | "subscribe" | "reportMessageValidationResult"> & {
|
|
24
|
+
pubsub: Pick<import("@chainsafe/libp2p-gossipsub").GossipSub, "addEventListener" | "removeEventListener" | "publish" | "subscribe" | "reportMessageValidationResult" | "direct"> & {
|
|
25
25
|
score: Pick<import("@chainsafe/libp2p-gossipsub").GossipSub["score"], "score">;
|
|
26
26
|
};
|
|
27
27
|
};
|
|
@@ -33,6 +33,7 @@ declare class MockGossipSubService extends TypedEventEmitter<GossipsubEvents> im
|
|
|
33
33
|
private network;
|
|
34
34
|
private logger;
|
|
35
35
|
subscribedTopics: Set<TopicStr>;
|
|
36
|
+
readonly direct: Set<string>;
|
|
36
37
|
constructor(peerId: PeerId, network: MockGossipSubNetwork);
|
|
37
38
|
score: {
|
|
38
39
|
score: (_peerId: PeerIdStr) => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-pubsub.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-pubsub.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAA6D,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,KAAK,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,aAAa,EACpE,OAAO,EAAE,oBAAoB,GAC5B,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAwCtF;AAED;;;;GAIG;AACH,qBAAa,UAAW,YAAW,YAAY;IAMpC,MAAM,EAAE,MAAM;IALhB,MAAM,EAAE,YAAY,CAAa;IAExC,OAAO,CAAC,SAAS,CAAmB;gBAG3B,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,oBAAoB;IAK/B,IAAI,QAAQ;;;;MAIX;IAED,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAI7B;AAED,cAAM,oBAAqB,SAAQ,iBAAiB,CAAC,eAAe,CAAE,YAAW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"mock-pubsub.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-pubsub.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAA6D,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,KAAK,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,aAAa,EACpE,OAAO,EAAE,oBAAoB,GAC5B,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAwCtF;AAED;;;;GAIG;AACH,qBAAa,UAAW,YAAW,YAAY;IAMpC,MAAM,EAAE,MAAM;IALhB,MAAM,EAAE,YAAY,CAAa;IAExC,OAAO,CAAC,SAAS,CAAmB;gBAG3B,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,oBAAoB;IAK/B,IAAI,QAAQ;;;;MAIX;IAED,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAI7B;AAED,cAAM,oBAAqB,SAAQ,iBAAiB,CAAC,eAAe,CAAE,YAAW,gBAAgB;IAMtF,MAAM,EAAE,MAAM;IACrB,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,MAAM,CAA2C;IAClD,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAa;IACnD,SAAgB,MAAM,cAAqB;gBAGlC,MAAM,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB;IAMvC,KAAK;yBACc,SAAS;MAC1B;IAEF,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAMvF,OAAO,CAAC,GAAG,EAAE,gBAAgB;IAQ7B,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKhC,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI;CAMrH;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,MAAM,CAAmD;IAE1D,QAAQ,IAAI,MAAM,EAAE;IAIpB,YAAY,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAI9C,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAgB/E"}
|
|
@@ -48,8 +48,9 @@ class MockGossipSubService extends TypedEventEmitter {
|
|
|
48
48
|
network;
|
|
49
49
|
logger;
|
|
50
50
|
subscribedTopics;
|
|
51
|
+
direct;
|
|
51
52
|
constructor(peerId, network){
|
|
52
|
-
super(), this.peerId = peerId, this.network = network, this.logger = createLogger('p2p:test:mock-gossipsub'), this.subscribedTopics = new Set(), this.score = {
|
|
53
|
+
super(), this.peerId = peerId, this.network = network, this.logger = createLogger('p2p:test:mock-gossipsub'), this.subscribedTopics = new Set(), this.direct = new Set(), this.score = {
|
|
53
54
|
score: (_peerId)=>0
|
|
54
55
|
};
|
|
55
56
|
network.registerPeer(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,QAAQ,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EAElC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,KAAK,UAAU,EAA2E,MAAM,YAAY,CAAC;AAGtH;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,GAAE,MAAM,EAAO,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,GAAE,OAAe,EAChC,KAAK,GAAE,OAAc,GACpB,OAAO,CAAC,UAAU,CAAC,CAqCrB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,aAAa,EACnE,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,MAAM,EAAE,YAAK,EAC5B,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,SAAS,EAAE,eAAe,EAC1B,IAAI,GAAE,MAAU,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,GAAE,WAA8B,
|
|
1
|
+
{"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,QAAQ,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EAElC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,KAAK,UAAU,EAA2E,MAAM,YAAY,CAAC;AAGtH;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,GAAE,MAAM,EAAO,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,GAAE,OAAe,EAChC,KAAK,GAAE,OAAc,GACpB,OAAO,CAAC,UAAU,CAAC,CAqCrB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,aAAa,EACnE,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,MAAM,EAAE,YAAK,EAC5B,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,SAAS,EAAE,eAAe,EAC1B,IAAI,GAAE,MAAU,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,GAAE,WAA8B,6BAwD5C;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,0BAQxC,CAAC;AAIF,eAAO,MAAM,4BAA4B,EAAE,4BAQ1C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,aAAa,WAAW,EACxB,eAAe,MAAM,EACrB,aAAY,OAAO,CAAC,4BAA4B,CAAM,KACrD,OAAO,CAAC,WAAW,EAAE,CAEvB,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,WAAW,EAAE,EACpB,gDAAgD,EAChD,oDAAoD,kBAKrD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,OAAO,WAAW,EAAE,KAAG,OAAO,CAAC,IAAI,CAGlE,CAAC;AAGF,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,EACxB,aAAY,OAAO,CAAC,4BAA4B,CAAM,KACrD,OAAO,CAAC,WAAW,CAUrB,CAAC;AAGF,eAAO,MAAM,cAAc,GAAU,OAAO,WAAW,EAAE,KAAG,OAAO,CAAC,IAAI,CAUvE,CAAC;AAGF,qBAAa,yBAA0B,YAAW,6BAA6B;IAC7E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAGrB,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAG1D;AACD,qBAAa,0BAA2B,YAAW,6BAA6B;IAC9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAGrB,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAG1D;AAGD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc,CAWpH;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,eAAsC,EACjD,WAAW,GAAE,WAA8B,GAC1C,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAOzE;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,eAAsC,EACjD,WAAW,GAAE,WAA8B,GAC1C,OAAO,CAAC,aAAa,CAAC,CAKxB"}
|
|
@@ -101,9 +101,9 @@ import { getVersions } from '../versioning.js';
|
|
|
101
101
|
const reqresp = new ReqResp(config, p2pNode, peerScoring);
|
|
102
102
|
const versions = getVersions(config);
|
|
103
103
|
const protocolVersion = compressComponentVersions(versions);
|
|
104
|
-
const peerManager = new PeerManager(p2pNode, discoveryService, config, telemetry, createLogger(`p2p:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion);
|
|
104
|
+
const peerManager = new PeerManager(p2pNode, discoveryService, config, telemetry, createLogger(`p2p:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
|
|
105
105
|
p2pNode.services.pubsub.score.params.appSpecificWeight = 10;
|
|
106
|
-
p2pNode.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.getPeerScore(peerId);
|
|
106
|
+
p2pNode.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
|
|
107
107
|
return new LibP2PService(clientType, config, p2pNode, discoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry);
|
|
108
108
|
}
|
|
109
109
|
// Mock sub protocol handlers
|
|
@@ -112,7 +112,9 @@ export const MOCK_SUB_PROTOCOL_HANDLERS = {
|
|
|
112
112
|
[ReqRespSubProtocol.STATUS]: (_msg)=>Promise.resolve(Buffer.from('status')),
|
|
113
113
|
[ReqRespSubProtocol.TX]: (_msg)=>Promise.resolve(Buffer.from('tx')),
|
|
114
114
|
[ReqRespSubProtocol.GOODBYE]: (_msg)=>Promise.resolve(Buffer.from('goodbye')),
|
|
115
|
-
[ReqRespSubProtocol.BLOCK]: (_msg)=>Promise.resolve(Buffer.from('block'))
|
|
115
|
+
[ReqRespSubProtocol.BLOCK]: (_msg)=>Promise.resolve(Buffer.from('block')),
|
|
116
|
+
[ReqRespSubProtocol.AUTH]: (_msg)=>Promise.resolve(Buffer.from('auth')),
|
|
117
|
+
[ReqRespSubProtocol.BLOCK_TXS]: (_msg)=>Promise.resolve(Buffer.from('block_txs'))
|
|
116
118
|
};
|
|
117
119
|
// By default, all requests are valid
|
|
118
120
|
// If you want to test an invalid response, you can override the validator
|
|
@@ -121,7 +123,9 @@ export const MOCK_SUB_PROTOCOL_VALIDATORS = {
|
|
|
121
123
|
[ReqRespSubProtocol.STATUS]: noopValidator,
|
|
122
124
|
[ReqRespSubProtocol.TX]: noopValidator,
|
|
123
125
|
[ReqRespSubProtocol.GOODBYE]: noopValidator,
|
|
124
|
-
[ReqRespSubProtocol.BLOCK]: noopValidator
|
|
126
|
+
[ReqRespSubProtocol.BLOCK]: noopValidator,
|
|
127
|
+
[ReqRespSubProtocol.AUTH]: noopValidator,
|
|
128
|
+
[ReqRespSubProtocol.BLOCK_TXS]: noopValidator
|
|
125
129
|
};
|
|
126
130
|
/**
|
|
127
131
|
* @param numberOfNodes - the number of nodes to create
|
|
@@ -11,13 +11,14 @@ import { P2PClientType, P2PMessage } from '@aztec/stdlib/p2p';
|
|
|
11
11
|
import { Tx, TxStatus } from '@aztec/stdlib/tx';
|
|
12
12
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
13
13
|
import { TopicValidatorResult } from '@libp2p/interface';
|
|
14
|
+
import EventEmitter from 'events';
|
|
14
15
|
import { createP2PClient } from '../index.js';
|
|
15
16
|
import { LibP2PService } from '../services/libp2p/libp2p_service.js';
|
|
16
17
|
import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
|
|
17
18
|
// Simple mock implementation
|
|
18
19
|
function mockTxPool() {
|
|
19
20
|
// Mock all methods
|
|
20
|
-
|
|
21
|
+
const pool = {
|
|
21
22
|
isEmpty: ()=>Promise.resolve(false),
|
|
22
23
|
addTxs: ()=>Promise.resolve(1),
|
|
23
24
|
getTxByHash: ()=>Promise.resolve(undefined),
|
|
@@ -36,6 +37,7 @@ function mockTxPool() {
|
|
|
36
37
|
updateConfig: ()=>{},
|
|
37
38
|
markTxsAsNonEvictable: ()=>Promise.resolve()
|
|
38
39
|
};
|
|
40
|
+
return Object.assign(new EventEmitter(), pool);
|
|
39
41
|
}
|
|
40
42
|
function mockAttestationPool() {
|
|
41
43
|
return {
|
|
@@ -46,7 +48,9 @@ function mockAttestationPool() {
|
|
|
46
48
|
deleteAttestationsForSlot: ()=>Promise.resolve(),
|
|
47
49
|
deleteAttestationsForSlotAndProposal: ()=>Promise.resolve(),
|
|
48
50
|
getAttestationsForSlot: ()=>Promise.resolve([]),
|
|
49
|
-
getAttestationsForSlotAndProposal: ()=>Promise.resolve([])
|
|
51
|
+
getAttestationsForSlotAndProposal: ()=>Promise.resolve([]),
|
|
52
|
+
addBlockProposal: ()=>Promise.resolve(),
|
|
53
|
+
getBlockProposal: ()=>Promise.resolve(undefined)
|
|
50
54
|
};
|
|
51
55
|
}
|
|
52
56
|
function mockEpochCache() {
|
|
@@ -75,7 +79,9 @@ function mockEpochCache() {
|
|
|
75
79
|
ts: 0n,
|
|
76
80
|
now: 0n
|
|
77
81
|
}),
|
|
78
|
-
isInCommittee: ()=>Promise.resolve(false)
|
|
82
|
+
isInCommittee: ()=>Promise.resolve(false),
|
|
83
|
+
getRegisteredValidators: ()=>Promise.resolve([]),
|
|
84
|
+
filterInCommittee: ()=>Promise.resolve([])
|
|
79
85
|
};
|
|
80
86
|
}
|
|
81
87
|
function mockWorldStateSynchronizer() {
|
|
@@ -109,7 +115,7 @@ class TestLibP2PService extends LibP2PService {
|
|
|
109
115
|
const p2pMessage = P2PMessage.fromMessageData(payload);
|
|
110
116
|
const tx = Tx.fromBuffer(p2pMessage.payload);
|
|
111
117
|
this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Accept);
|
|
112
|
-
const txHash =
|
|
118
|
+
const txHash = tx.getTxHash();
|
|
113
119
|
const txHashString = txHash.toString();
|
|
114
120
|
this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
|
|
115
121
|
await this.mempools.txPool.addTxs([
|
|
@@ -148,7 +154,7 @@ process.on('message', async (msg)=>{
|
|
|
148
154
|
store: kvStore,
|
|
149
155
|
logger
|
|
150
156
|
};
|
|
151
|
-
const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, worldState, epochCache, 'test-p2p-bench-worker', telemetry, deps);
|
|
157
|
+
const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, worldState, epochCache, 'test-p2p-bench-worker', undefined, telemetry, deps);
|
|
152
158
|
// Create test service with validation disabled
|
|
153
159
|
const testService = new TestLibP2PService(P2PClientType.Full, config, client.p2pService.node, client.p2pService.peerDiscoveryService, client.p2pService.mempools, client.p2pService.reqresp, client.p2pService.peerManager, client.p2pService.archiver, epochCache, proofVerifier, worldState, telemetry, logger, true);
|
|
154
160
|
// Replace the existing p2pService with our test version
|
package/dest/util.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ import type { Libp2p } from 'libp2p';
|
|
|
10
10
|
import type { P2PConfig } from './config.js';
|
|
11
11
|
export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' | 'peerId'> {
|
|
12
12
|
services: {
|
|
13
|
-
pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult'> & {
|
|
13
|
+
pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct'> & {
|
|
14
14
|
score: Pick<GossipSub['score'], 'score'>;
|
|
15
15
|
};
|
|
16
16
|
};
|
package/dest/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACT,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,+BAA+B,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACT,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,+BAA+B,GAAG,QAAQ,CAClH,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-nightly.20250813",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/constants": "
|
|
71
|
-
"@aztec/epoch-cache": "
|
|
72
|
-
"@aztec/ethereum": "
|
|
73
|
-
"@aztec/foundation": "
|
|
74
|
-
"@aztec/kv-store": "
|
|
75
|
-
"@aztec/noir-contracts.js": "
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "
|
|
77
|
-
"@aztec/protocol-contracts": "
|
|
78
|
-
"@aztec/simulator": "
|
|
79
|
-
"@aztec/stdlib": "
|
|
80
|
-
"@aztec/telemetry-client": "
|
|
70
|
+
"@aztec/constants": "2.0.0-nightly.20250813",
|
|
71
|
+
"@aztec/epoch-cache": "2.0.0-nightly.20250813",
|
|
72
|
+
"@aztec/ethereum": "2.0.0-nightly.20250813",
|
|
73
|
+
"@aztec/foundation": "2.0.0-nightly.20250813",
|
|
74
|
+
"@aztec/kv-store": "2.0.0-nightly.20250813",
|
|
75
|
+
"@aztec/noir-contracts.js": "2.0.0-nightly.20250813",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "2.0.0-nightly.20250813",
|
|
77
|
+
"@aztec/protocol-contracts": "2.0.0-nightly.20250813",
|
|
78
|
+
"@aztec/simulator": "2.0.0-nightly.20250813",
|
|
79
|
+
"@aztec/stdlib": "2.0.0-nightly.20250813",
|
|
80
|
+
"@aztec/telemetry-client": "2.0.0-nightly.20250813",
|
|
81
81
|
"@chainsafe/discv5": "9.0.0",
|
|
82
82
|
"@chainsafe/enr": "3.0.0",
|
|
83
83
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
@@ -95,10 +95,8 @@
|
|
|
95
95
|
"@libp2p/prometheus-metrics": "^4.2.4",
|
|
96
96
|
"@libp2p/tcp": "9.0.24",
|
|
97
97
|
"@multiformats/multiaddr": "12.1.14",
|
|
98
|
-
"abortable-iterator": "^5.1.0",
|
|
99
98
|
"interface-datastore": "^8.2.11",
|
|
100
99
|
"interface-store": "^5.1.8",
|
|
101
|
-
"it-pipe": "^3.0.1",
|
|
102
100
|
"libp2p": "1.5.0",
|
|
103
101
|
"semver": "^7.6.0",
|
|
104
102
|
"sha3": "^2.1.4",
|
|
@@ -107,7 +105,8 @@
|
|
|
107
105
|
"xxhash-wasm": "^1.1.0"
|
|
108
106
|
},
|
|
109
107
|
"devDependencies": {
|
|
110
|
-
"@aztec/archiver": "
|
|
108
|
+
"@aztec/archiver": "2.0.0-nightly.20250813",
|
|
109
|
+
"@aztec/world-state": "2.0.0-nightly.20250813",
|
|
111
110
|
"@jest/globals": "^30.0.0",
|
|
112
111
|
"@types/jest": "^30.0.0",
|
|
113
112
|
"@types/node": "^22.15.17",
|