@aztec/p2p 0.0.1-commit.6d63667d → 0.0.1-commit.86469d5
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 +1 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +1 -3
- package/dest/client/p2p_client.d.ts +2 -4
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +2 -6
- package/dest/config.d.ts +3 -9
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +1 -3
- package/dest/services/index.d.ts +1 -2
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +0 -1
- package/dest/services/libp2p/libp2p_service.d.ts +4 -4
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +8 -4
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -4
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +8 -8
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +5 -6
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +11 -16
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +10 -15
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +11 -12
- package/dest/services/tx_collection/config.d.ts +3 -3
- package/dest/services/tx_collection/config.js +3 -3
- package/dest/services/tx_collection/fast_tx_collection.d.ts +5 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +14 -10
- package/dest/services/tx_collection/index.d.ts +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +12 -12
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
- package/package.json +14 -14
- package/src/client/factory.ts +0 -4
- package/src/client/p2p_client.ts +0 -5
- package/src/config.ts +1 -8
- package/src/services/index.ts +0 -1
- package/src/services/libp2p/libp2p_service.ts +8 -12
- package/src/services/reqresp/batch-tx-requester/README.md +7 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +11 -11
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +14 -22
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +15 -21
- package/src/services/tx_collection/config.ts +6 -6
- package/src/services/tx_collection/fast_tx_collection.ts +24 -14
- package/src/services/tx_collection/index.ts +1 -1
- package/src/services/tx_collection/proposal_tx_collector.ts +14 -12
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +0 -2
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/archive/index.js +0 -1
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +0 -43
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +0 -103
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +0 -47
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +0 -119
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +0 -90
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +0 -19
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +0 -89
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +0 -10
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +0 -11
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +0 -131
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +0 -17
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +0 -15
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +0 -63
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +0 -91
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +0 -16
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +0 -70
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +0 -20
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +0 -63
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +0 -15
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +0 -19
- package/dest/mem_pools/tx_pool_v2/index.d.ts +0 -5
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/index.js +0 -4
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +0 -197
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +0 -6
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +0 -71
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +0 -95
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +0 -26
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +0 -70
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +0 -99
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +0 -332
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +0 -55
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +0 -156
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +0 -69
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +0 -748
- package/dest/services/tx_file_store/config.d.ts +0 -18
- package/dest/services/tx_file_store/config.d.ts.map +0 -1
- package/dest/services/tx_file_store/config.js +0 -26
- package/dest/services/tx_file_store/index.d.ts +0 -4
- package/dest/services/tx_file_store/index.d.ts.map +0 -1
- package/dest/services/tx_file_store/index.js +0 -3
- package/dest/services/tx_file_store/instrumentation.d.ts +0 -15
- package/dest/services/tx_file_store/instrumentation.d.ts.map +0 -1
- package/dest/services/tx_file_store/instrumentation.js +0 -29
- package/dest/services/tx_file_store/tx_file_store.d.ts +0 -47
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +0 -1
- package/dest/services/tx_file_store/tx_file_store.js +0 -149
- package/src/mem_pools/tx_pool_v2/README.md +0 -209
- package/src/mem_pools/tx_pool_v2/archive/index.ts +0 -1
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +0 -120
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +0 -147
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +0 -118
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +0 -111
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +0 -23
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +0 -164
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +0 -74
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +0 -101
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +0 -86
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +0 -72
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +0 -31
- package/src/mem_pools/tx_pool_v2/index.ts +0 -11
- package/src/mem_pools/tx_pool_v2/interfaces.ts +0 -227
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +0 -161
- package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +0 -77
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +0 -417
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +0 -212
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +0 -882
- package/src/services/tx_file_store/config.ts +0 -43
- package/src/services/tx_file_store/index.ts +0 -3
- package/src/services/tx_file_store/instrumentation.ts +0 -36
- package/src/services/tx_file_store/tx_file_store.ts +0 -173
|
@@ -6,10 +6,9 @@ import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
|
|
|
6
6
|
/**
|
|
7
7
|
* Handler for block txs requests
|
|
8
8
|
* @param attestationPool - the attestation pool to check for block proposals
|
|
9
|
-
* @param
|
|
10
|
-
* @param txPool - the tx pool to fetch transactions from
|
|
9
|
+
* @param mempools - the mempools containing the tx pool
|
|
11
10
|
* @returns the BlockTxs request handler
|
|
12
|
-
*/ export function reqRespBlockTxsHandler(attestationPool,
|
|
11
|
+
*/ export function reqRespBlockTxsHandler(attestationPool, txPool) {
|
|
13
12
|
/**
|
|
14
13
|
* Handler for block txs requests
|
|
15
14
|
* @param msg - the block txs request message
|
|
@@ -24,32 +23,28 @@ import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
|
|
|
24
23
|
cause: err
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
|
-
|
|
28
|
-
let txHashes = (await attestationPool.getBlockProposal(request.archiveRoot.toString()))?.txHashes;
|
|
29
|
-
if (!txHashes) {
|
|
30
|
-
txHashes = (await archiver.getL2BlockByArchive(request.archiveRoot))?.body.txEffects.map((effect)=>effect.txHash);
|
|
31
|
-
}
|
|
26
|
+
const blockProposal = await attestationPool.getBlockProposal(request.archiveRoot.toString());
|
|
32
27
|
let requestedTxsHashes;
|
|
33
28
|
if (request.txHashes.length > 0) {
|
|
34
29
|
requestedTxsHashes = request.txHashes;
|
|
35
30
|
}
|
|
36
|
-
// This is scenario in which we don't have this block the peer is requesting from us
|
|
31
|
+
// This is scenario in which we don't have this block proposal the peer is requesting from us
|
|
37
32
|
// But peer has sent requested tx hashes, so we can send them the transactions
|
|
38
|
-
if (!
|
|
33
|
+
if (!blockProposal && requestedTxsHashes !== undefined) {
|
|
39
34
|
const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter((tx)=>!!tx);
|
|
40
35
|
const response = new BlockTxsResponse(Fr.zero(), new TxArray(...responseTxs), BitVector.init(0, []));
|
|
41
36
|
return response.toBuffer();
|
|
42
37
|
}
|
|
43
|
-
// If
|
|
44
|
-
if (!
|
|
38
|
+
// If don't have this block proposal and peer has not sent requested tx hashes
|
|
39
|
+
if (!blockProposal) {
|
|
45
40
|
throw new ReqRespStatusError(ReqRespStatus.NOT_FOUND);
|
|
46
41
|
}
|
|
47
|
-
const txsAvailableInPool = await txPool.hasTxs(txHashes);
|
|
48
|
-
//
|
|
42
|
+
const txsAvailableInPool = await txPool.hasTxs(blockProposal.txHashes);
|
|
43
|
+
//Map txs in the pool to their indices in the block proposal
|
|
49
44
|
const availableIndices = txsAvailableInPool.map((hasTx, idx)=>hasTx ? idx : -1).filter((idx)=>idx !== -1);
|
|
50
|
-
const responseBitVector = BitVector.init(txHashes.length, availableIndices);
|
|
45
|
+
const responseBitVector = BitVector.init(blockProposal.txHashes.length, availableIndices);
|
|
51
46
|
const requestedIndices = new Set(request.txIndices.getTrueIndices());
|
|
52
|
-
requestedTxsHashes = txHashes.filter((_, idx)=>requestedIndices.has(idx));
|
|
47
|
+
requestedTxsHashes = blockProposal.txHashes.filter((_, idx)=>requestedIndices.has(idx));
|
|
53
48
|
const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter((tx)=>!!tx);
|
|
54
49
|
const response = new BlockTxsResponse(request.archiveRoot, new TxArray(...responseTxs), responseBitVector);
|
|
55
50
|
return response.toBuffer();
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
|
-
import
|
|
3
|
+
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
4
|
+
import { TxArray, TxHash, TxHashArray } from '@aztec/stdlib/tx';
|
|
4
5
|
import { BitVector } from './bitvector.js';
|
|
5
|
-
/** Minimal interface for a block source that provides tx hashes and an archive root. */
|
|
6
|
-
export interface BlockTxsSource {
|
|
7
|
-
txHashes: TxHash[];
|
|
8
|
-
archive: Fr;
|
|
9
|
-
}
|
|
10
6
|
/**
|
|
11
7
|
* Request message for requesting specific transactions from a block
|
|
12
8
|
*/
|
|
@@ -16,16 +12,15 @@ export declare class BlockTxsRequest {
|
|
|
16
12
|
readonly txIndices: BitVector;
|
|
17
13
|
constructor(archiveRoot: Fr, txHashes: TxHashArray, txIndices: BitVector);
|
|
18
14
|
/**
|
|
19
|
-
* Creates new BlockTxsRequest given
|
|
15
|
+
* Creates new BlockTxsRequest given proposal and missing tx hashes
|
|
20
16
|
*
|
|
21
|
-
* @param
|
|
22
|
-
* @param missingTxHashes - Tx hashes from the
|
|
23
|
-
* @param includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
|
|
17
|
+
* @param: blockProposal - The block proposal for which we are making request
|
|
18
|
+
* @param: missingTxHashes - Tx hashes from the proposal we are missing
|
|
19
|
+
* @param: includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
|
|
24
20
|
*
|
|
25
|
-
* @returns undefined if there were no missingTxHashes matching
|
|
26
|
-
* returns new BlockTxsRequest
|
|
27
|
-
|
|
28
|
-
static fromTxsSourceAndMissingTxs(blockTxsSource: BlockTxsSource, missingTxHashes: TxHash[], includeFullTxHashes?: boolean): BlockTxsRequest | undefined;
|
|
21
|
+
* @returns undefined if there were no missingTxHashes matching BlockProposal hashes, otherwise
|
|
22
|
+
* returns new BlockTxsRequest*/
|
|
23
|
+
static fromBlockProposalAndMissingTxs(blockProposal: BlockProposal, missingTxHashes: TxHash[], includeFullTxHashes?: boolean): BlockTxsRequest | undefined;
|
|
29
24
|
/**
|
|
30
25
|
* Deserializes the BlockTxRequest object from a Buffer
|
|
31
26
|
* @param buffer - Buffer or BufferReader object to deserialize
|
|
@@ -61,4 +56,4 @@ export declare class BlockTxsResponse {
|
|
|
61
56
|
toBuffer(): Buffer;
|
|
62
57
|
static empty(): BlockTxsResponse;
|
|
63
58
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX3JlcXJlc3AuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX3JlcXJlc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDOztHQUVHO0FBQ0gscUJBQWEsZUFBZTtJQUd4QixRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUU7SUFFeEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXO0lBSzlCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUztJQVQvQixZQUVXLFdBQVcsRUFBRSxFQUFFLEVBRWYsUUFBUSxFQUFFLFdBQVcsRUFLckIsU0FBUyxFQUFFLFNBQVMsRUFDM0I7SUFFSjs7Ozs7Ozs7b0NBUWdDO0lBQ2hDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FDbkMsYUFBYSxFQUFFLGFBQWEsRUFDNUIsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUN6QixtQkFBbUIsVUFBUSxHQUMxQixlQUFlLEdBQUcsU0FBUyxDQW9CN0I7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxlQUFlLENBT2hFO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FFakI7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsZ0JBQWdCO0lBRXpCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRTtJQUN4QixRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU87SUFHckIsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTO0lBTC9CLFlBQ1csV0FBVyxFQUFFLEVBQUUsRUFDZixHQUFHLEVBQUUsT0FBTyxFQUdaLFNBQVMsRUFBRSxTQUFTLEVBQzNCO0lBRUo7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsZ0JBQWdCLENBT2pFO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLElBQUksTUFBTSxDQUVqQjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBRS9CO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_txs_reqresp.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"block_txs_reqresp.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,eAAe;IAGxB,QAAQ,CAAC,WAAW,EAAE,EAAE;IAExB,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAK9B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,YAEW,WAAW,EAAE,EAAE,EAEf,QAAQ,EAAE,WAAW,EAKrB,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;;;;;oCAQgC;IAChC,MAAM,CAAC,8BAA8B,CACnC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,EAAE,EACzB,mBAAmB,UAAQ,GAC1B,eAAe,GAAG,SAAS,CAoB7B;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAOhE;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;CACF;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,WAAW,EAAE,EAAE;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO;IAGrB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAL/B,YACW,WAAW,EAAE,EAAE,EACf,GAAG,EAAE,OAAO,EAGZ,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAOjE;IAED;;;;;OAKG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;CACF"}
|
|
@@ -20,27 +20,26 @@ import { BitVector } from './bitvector.js';
|
|
|
20
20
|
this.txIndices = txIndices;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
* Creates new BlockTxsRequest given
|
|
23
|
+
* Creates new BlockTxsRequest given proposal and missing tx hashes
|
|
24
24
|
*
|
|
25
|
-
* @param
|
|
26
|
-
* @param missingTxHashes - Tx hashes from the
|
|
27
|
-
* @param includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
|
|
25
|
+
* @param: blockProposal - The block proposal for which we are making request
|
|
26
|
+
* @param: missingTxHashes - Tx hashes from the proposal we are missing
|
|
27
|
+
* @param: includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
|
|
28
28
|
*
|
|
29
|
-
* @returns undefined if there were no missingTxHashes matching
|
|
30
|
-
* returns new BlockTxsRequest
|
|
31
|
-
*/ static fromTxsSourceAndMissingTxs(blockTxsSource, missingTxHashes, includeFullTxHashes = false) {
|
|
29
|
+
* @returns undefined if there were no missingTxHashes matching BlockProposal hashes, otherwise
|
|
30
|
+
* returns new BlockTxsRequest*/ static fromBlockProposalAndMissingTxs(blockProposal, missingTxHashes, includeFullTxHashes = false) {
|
|
32
31
|
if (missingTxHashes.length === 0) {
|
|
33
32
|
return undefined; // No missing txs to request
|
|
34
33
|
}
|
|
35
34
|
const missingHashesSet = new Set(missingTxHashes.map((t)=>t.toString()));
|
|
36
|
-
// We cannot request txs that are not part of the block
|
|
37
|
-
if (!missingHashesSet.isSubsetOf(new Set(
|
|
35
|
+
// We cannot request txs that are not part of the block proposal
|
|
36
|
+
if (!missingHashesSet.isSubsetOf(new Set(blockProposal.txHashes.map((t)=>t.toString())))) {
|
|
38
37
|
return undefined;
|
|
39
38
|
}
|
|
40
|
-
const missingIndices =
|
|
41
|
-
const requestBitVector = BitVector.init(
|
|
39
|
+
const missingIndices = blockProposal.txHashes.map((hash, idx)=>missingHashesSet.has(hash.toString()) ? idx : -1).filter((i)=>i != -1);
|
|
40
|
+
const requestBitVector = BitVector.init(blockProposal.txHashes.length, missingIndices);
|
|
42
41
|
const hashes = includeFullTxHashes ? new TxHashArray(...missingTxHashes) : new TxHashArray();
|
|
43
|
-
return new BlockTxsRequest(
|
|
42
|
+
return new BlockTxsRequest(blockProposal.archive, hashes, requestBitVector);
|
|
44
43
|
}
|
|
45
44
|
/**
|
|
46
45
|
* Deserializes the BlockTxRequest object from a Buffer
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
|
-
export type
|
|
2
|
+
export type ProposalTxCollectorType = 'new' | 'old';
|
|
3
3
|
export type TxCollectionConfig = {
|
|
4
4
|
/** How long to wait before starting reqresp for fast collection */
|
|
5
5
|
txCollectionFastNodesTimeoutBeforeReqRespMs: number;
|
|
@@ -21,8 +21,8 @@ export type TxCollectionConfig = {
|
|
|
21
21
|
txCollectionFastMaxParallelRequestsPerNode: number;
|
|
22
22
|
/** Maximum number of transactions to request from a node in a single batch */
|
|
23
23
|
txCollectionNodeRpcMaxBatchSize: number;
|
|
24
|
-
/** Which collector implementation to use for
|
|
25
|
-
|
|
24
|
+
/** Which collector implementation to use for proposal tx collection */
|
|
25
|
+
txCollectionProposalTxCollectorType: ProposalTxCollectorType;
|
|
26
26
|
};
|
|
27
27
|
export declare const txCollectionConfigMappings: ConfigMappingsType<TxCollectionConfig>;
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBSXhCLE1BQU0sMEJBQTBCLENBQUM7QUFHbEMsTUFBTSxNQUFNLHVCQUF1QixHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7QUFFcEQsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLG9FQUFvRTtJQUNwRSwyQ0FBMkMsRUFBRSxNQUFNLENBQUM7SUFDcEQsaURBQWlEO0lBQ2pELCtCQUErQixFQUFFLE1BQU0sQ0FBQztJQUN4QyxzQ0FBc0M7SUFDdEMsaUNBQWlDLEVBQUUsTUFBTSxDQUFDO0lBQzFDLHFFQUFxRTtJQUNyRSxnQ0FBZ0MsRUFBRSxNQUFNLENBQUM7SUFDekMsd0RBQXdEO0lBQ3hELCtCQUErQixFQUFFLE1BQU0sQ0FBQztJQUN4QyxnR0FBZ0c7SUFDaEcseUNBQXlDLEVBQUUsT0FBTyxDQUFDO0lBQ25ELDJGQUEyRjtJQUMzRiw4QkFBOEIsRUFBRSxNQUFNLENBQUM7SUFDdkMsNkVBQTZFO0lBQzdFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ2xDLG1GQUFtRjtJQUNuRiwwQ0FBMEMsRUFBRSxNQUFNLENBQUM7SUFDbkQsOEVBQThFO0lBQzlFLCtCQUErQixFQUFFLE1BQU0sQ0FBQztJQUN4Qyx1RUFBdUU7SUFDdkUsbUNBQW1DLEVBQUUsdUJBQXVCLENBQUM7Q0FDOUQsQ0FBQztBQUVGLGVBQU8sTUFBTSwwQkFBMEIsRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0E4RDdFLENBQUMifQ==
|
|
@@ -55,9 +55,9 @@ export const txCollectionConfigMappings = {
|
|
|
55
55
|
description: 'Maximum number of transactions to request from a node in a single batch',
|
|
56
56
|
...numberConfigHelper(MAX_RPC_TXS_LEN)
|
|
57
57
|
},
|
|
58
|
-
|
|
59
|
-
env: '
|
|
60
|
-
description: 'Which collector implementation to use for
|
|
58
|
+
txCollectionProposalTxCollectorType: {
|
|
59
|
+
env: 'TX_COLLECTION_PROPOSAL_TX_COLLECTOR_TYPE',
|
|
60
|
+
description: 'Which collector implementation to use for proposal tx collection (new or old)',
|
|
61
61
|
...enumConfigHelper([
|
|
62
62
|
'new',
|
|
63
63
|
'old'
|
|
@@ -6,19 +6,20 @@ import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
|
6
6
|
import type { PeerId } from '@libp2p/interface';
|
|
7
7
|
import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
|
|
8
8
|
import type { TxCollectionConfig } from './config.js';
|
|
9
|
-
import { type
|
|
9
|
+
import { type ProposalTxCollector } from './proposal_tx_collector.js';
|
|
10
10
|
import type { FastCollectionRequest, FastCollectionRequestInput } from './tx_collection.js';
|
|
11
11
|
import type { TxCollectionSink } from './tx_collection_sink.js';
|
|
12
12
|
import type { TxSource } from './tx_source.js';
|
|
13
13
|
export declare class FastTxCollection {
|
|
14
|
+
private p2pService;
|
|
14
15
|
private nodes;
|
|
15
16
|
private txCollectionSink;
|
|
16
17
|
private config;
|
|
17
18
|
private dateProvider;
|
|
18
19
|
private log;
|
|
19
20
|
protected requests: Set<FastCollectionRequest>;
|
|
20
|
-
private
|
|
21
|
-
constructor(p2pService: BatchTxRequesterLibP2PService, nodes: TxSource[], txCollectionSink: TxCollectionSink, config: TxCollectionConfig, dateProvider?: DateProvider, log?: Logger,
|
|
21
|
+
private proposalTxCollector;
|
|
22
|
+
constructor(p2pService: BatchTxRequesterLibP2PService, nodes: TxSource[], txCollectionSink: TxCollectionSink, config: TxCollectionConfig, dateProvider?: DateProvider, log?: Logger, proposalTxCollector?: ProposalTxCollector);
|
|
22
23
|
stop(): Promise<void>;
|
|
23
24
|
getFastCollectionRequests(): Set<FastCollectionRequest>;
|
|
24
25
|
collectFastFor(input: FastCollectionRequestInput, txHashes: TxHash[] | string[], opts: {
|
|
@@ -49,4 +50,4 @@ export declare class FastTxCollection {
|
|
|
49
50
|
*/
|
|
50
51
|
stopCollectingForBlocksAfter(blockNumber: BlockNumber): void;
|
|
51
52
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdF90eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9mYXN0X3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUlsRSxPQUFPLEVBQUUsWUFBWSxFQUFXLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHaEcsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUVMLEtBQUssbUJBQW1CLEVBRXpCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLHFCQUFhLGdCQUFnQjtJQU16QixPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsS0FBSztJQUNiLE9BQU8sQ0FBQyxnQkFBZ0I7SUFDeEIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsR0FBRztJQVRiLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQWE7SUFDM0QsT0FBTyxDQUFDLG1CQUFtQixDQUFzQjtJQUVqRCxZQUNVLFVBQVUsRUFBRSw2QkFBNkIsRUFDekMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUNqQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixZQUFZLEdBQUUsWUFBaUMsRUFDL0MsR0FBRyxHQUFFLE1BQWtELEVBQy9ELG1CQUFtQixDQUFDLEVBQUUsbUJBQW1CLEVBUzFDO0lBRVksSUFBSSxrQkFHaEI7SUFFTSx5QkFBeUIsK0JBRS9CO0lBRVksY0FBYyxDQUN6QixLQUFLLEVBQUUsMEJBQTBCLEVBQ2pDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFDN0IsSUFBSSxFQUFFO1FBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztRQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLGlCQTBDOUM7SUFFRCxVQUFnQixXQUFXLENBQ3pCLE9BQU8sRUFBRSxxQkFBcUIsRUFDOUIsSUFBSSxFQUFFO1FBQUUsUUFBUSxDQUFDLEVBQUUsYUFBYSxDQUFDO1FBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztRQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLGlCQStDeEU7WUFRYSxvQkFBb0I7WUFZcEIsbUJBQW1CO1lBaUZuQixxQkFBcUI7SUFtRG5DOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBd0J4QjtJQUVEOzs7T0FHRztJQUNJLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsSUFBSSxDQU9qRTtJQUVEOzs7T0FHRztJQUNJLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsSUFBSSxDQU9sRTtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/fast_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"fast_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/fast_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EAAE,YAAY,EAAW,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAGhG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IATb,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAa;IAC3D,OAAO,CAAC,mBAAmB,CAAsB;IAEjD,YACU,UAAU,EAAE,6BAA6B,EACzC,KAAK,EAAE,QAAQ,EAAE,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,kBAAkB,EAC1B,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAkD,EAC/D,mBAAmB,CAAC,EAAE,mBAAmB,EAS1C;IAEY,IAAI,kBAGhB;IAEM,yBAAyB,+BAE/B;IAEY,cAAc,CACzB,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAC7B,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,iBA0C9C;IAED,UAAgB,WAAW,CACzB,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,iBA+CxE;YAQa,oBAAoB;YAYpB,mBAAmB;YAiFnB,qBAAqB;IAmDnC;;;OAGG;IACI,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,QAwBxB;IAED;;;OAGG;IACI,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAOjE;IAED;;;OAGG;IACI,4BAA4B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAOlE;CACF"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { times } from '@aztec/foundation/collection';
|
|
2
2
|
import { AbortError, TimeoutError } from '@aztec/foundation/error';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { boundInclusive } from '@aztec/foundation/number';
|
|
4
5
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
5
6
|
import { sleep } from '@aztec/foundation/sleep';
|
|
6
7
|
import { DateProvider, elapsed } from '@aztec/foundation/timer';
|
|
7
8
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
9
|
+
import { ReqRespSubProtocol } from '../reqresp/interface.js';
|
|
10
|
+
import { chunkTxHashesRequest } from '../reqresp/protocols/tx.js';
|
|
8
11
|
import { BatchTxRequesterCollector, SendBatchRequestCollector } from './proposal_tx_collector.js';
|
|
9
12
|
export class FastTxCollection {
|
|
13
|
+
p2pService;
|
|
10
14
|
nodes;
|
|
11
15
|
txCollectionSink;
|
|
12
16
|
config;
|
|
@@ -14,8 +18,9 @@ export class FastTxCollection {
|
|
|
14
18
|
log;
|
|
15
19
|
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
16
20
|
requests;
|
|
17
|
-
|
|
18
|
-
constructor(p2pService, nodes, txCollectionSink, config, dateProvider = new DateProvider(), log = createLogger('p2p:tx_collection_service'),
|
|
21
|
+
proposalTxCollector;
|
|
22
|
+
constructor(p2pService, nodes, txCollectionSink, config, dateProvider = new DateProvider(), log = createLogger('p2p:tx_collection_service'), proposalTxCollector){
|
|
23
|
+
this.p2pService = p2pService;
|
|
19
24
|
this.nodes = nodes;
|
|
20
25
|
this.txCollectionSink = txCollectionSink;
|
|
21
26
|
this.config = config;
|
|
@@ -23,8 +28,8 @@ export class FastTxCollection {
|
|
|
23
28
|
this.log = log;
|
|
24
29
|
this.requests = new Set();
|
|
25
30
|
const batchTxRequesterConfig = this.config;
|
|
26
|
-
const
|
|
27
|
-
this.
|
|
31
|
+
const proposalCollectorType = this.config.txCollectionProposalTxCollectorType;
|
|
32
|
+
this.proposalTxCollector = proposalTxCollector ?? (proposalCollectorType === 'old' ? new SendBatchRequestCollector(p2pService) : new BatchTxRequesterCollector(p2pService, log, dateProvider, undefined, batchTxRequesterConfig));
|
|
28
33
|
}
|
|
29
34
|
async stop() {
|
|
30
35
|
this.requests.forEach((request)=>request.promise.reject(new AbortError(`Stopped collection service`)));
|
|
@@ -212,6 +217,8 @@ export class FastTxCollection {
|
|
|
212
217
|
async collectFastViaReqResp(request, opts) {
|
|
213
218
|
const timeoutMs = +request.deadline - this.dateProvider.now();
|
|
214
219
|
const pinnedPeer = opts.pinnedPeer;
|
|
220
|
+
const maxPeers = boundInclusive(Math.ceil(request.missingTxHashes.size / 2), 8, 32);
|
|
221
|
+
const maxRetryAttempts = 5;
|
|
215
222
|
const blockInfo = request.blockInfo;
|
|
216
223
|
const slotNumber = blockInfo.slotNumber;
|
|
217
224
|
if (timeoutMs < 100) {
|
|
@@ -229,13 +236,10 @@ export class FastTxCollection {
|
|
|
229
236
|
try {
|
|
230
237
|
await this.txCollectionSink.collect(async (txHashes)=>{
|
|
231
238
|
if (request.type === 'proposal') {
|
|
232
|
-
return await this.
|
|
239
|
+
return await this.proposalTxCollector.collectTxs(txHashes, request.blockProposal, pinnedPeer, timeoutMs);
|
|
233
240
|
} else if (request.type === 'block') {
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
archive: request.block.archive.root
|
|
237
|
-
};
|
|
238
|
-
return await this.missingTxsCollector.collectTxs(txHashes, blockTxsSource, pinnedPeer, timeoutMs);
|
|
241
|
+
const txs = await this.p2pService.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(txHashes), pinnedPeer, timeoutMs, maxPeers, maxRetryAttempts);
|
|
242
|
+
return txs.flat();
|
|
239
243
|
} else {
|
|
240
244
|
throw new Error(`Unknown request type: ${request.type}`);
|
|
241
245
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { TxCollection, type FastCollectionRequestInput } from './tx_collection.js';
|
|
2
2
|
export { type TxSource, createNodeRpcTxSources, NodeRpcTxSource } from './tx_source.js';
|
|
3
|
-
export { type
|
|
3
|
+
export { type ProposalTxCollector, BatchTxRequesterCollector, SendBatchRequestCollector, } from './proposal_tx_collector.js';
|
|
4
4
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9jb2xsZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSywwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxtQkFBbUIsRUFDeEIseUJBQXlCLEVBQ3pCLHlCQUF5QixHQUMxQixNQUFNLDRCQUE0QixDQUFDIn0=
|
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
2
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
3
|
+
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
3
4
|
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
4
5
|
import type { PeerId } from '@libp2p/interface';
|
|
5
6
|
import type { BatchTxRequesterConfig } from '../reqresp/batch-tx-requester/config.js';
|
|
6
7
|
import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
|
|
7
8
|
import type { IBatchRequestTxValidator } from '../reqresp/batch-tx-requester/tx_validator.js';
|
|
8
|
-
import { type BlockTxsSource } from '../reqresp/index.js';
|
|
9
9
|
/**
|
|
10
|
-
* Strategy interface for collecting
|
|
10
|
+
* Strategy interface for collecting transactions for block proposals.
|
|
11
11
|
* Allows swapping between different tx collection implementations for benchmarking.
|
|
12
12
|
*/
|
|
13
|
-
export interface
|
|
13
|
+
export interface ProposalTxCollector {
|
|
14
14
|
/**
|
|
15
|
-
* Collect
|
|
15
|
+
* Collect transactions for a block proposal.
|
|
16
16
|
* @param txHashes - The transaction hashes to collect
|
|
17
|
-
* @param
|
|
18
|
-
* @param pinnedPeer - Optional peer expected to have
|
|
17
|
+
* @param blockProposal - The block proposal containing the transactions
|
|
18
|
+
* @param pinnedPeer - Optional peer that sent the proposal (expected to have all txs)
|
|
19
19
|
* @param timeoutMs - Timeout in milliseconds
|
|
20
20
|
* @returns The collected transactions
|
|
21
21
|
*/
|
|
22
|
-
collectTxs(txHashes: TxHash[],
|
|
22
|
+
collectTxs(txHashes: TxHash[], blockProposal: BlockProposal, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Collects transactions using the BatchTxRequester implementation.
|
|
26
26
|
* This uses a smart/dumb peer strategy with parallel workers.
|
|
27
27
|
*/
|
|
28
|
-
export declare class BatchTxRequesterCollector implements
|
|
28
|
+
export declare class BatchTxRequesterCollector implements ProposalTxCollector {
|
|
29
29
|
private p2pService;
|
|
30
30
|
private log;
|
|
31
31
|
private dateProvider;
|
|
32
32
|
private txValidator?;
|
|
33
33
|
private batchTxRequesterConfig?;
|
|
34
34
|
constructor(p2pService: BatchTxRequesterLibP2PService, log: Logger, dateProvider: DateProvider, txValidator?: IBatchRequestTxValidator | undefined, batchTxRequesterConfig?: Partial<BatchTxRequesterConfig> | undefined);
|
|
35
|
-
collectTxs(txHashes: TxHash[],
|
|
35
|
+
collectTxs(txHashes: TxHash[], blockProposal: BlockProposal, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Collects transactions using the sendBatchRequest implementation from ReqResp.
|
|
39
39
|
* This is the original implementation that balances requests across peers.
|
|
40
40
|
*/
|
|
41
|
-
export declare class SendBatchRequestCollector implements
|
|
41
|
+
export declare class SendBatchRequestCollector implements ProposalTxCollector {
|
|
42
42
|
private p2pService;
|
|
43
43
|
private maxPeers;
|
|
44
44
|
private maxRetryAttempts;
|
|
45
45
|
constructor(p2pService: BatchTxRequesterLibP2PService, maxPeers?: number, maxRetryAttempts?: number);
|
|
46
|
-
collectTxs(txHashes: TxHash[],
|
|
46
|
+
collectTxs(txHashes: TxHash[], _blockProposal: BlockProposal, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdHhfY29sbGVjdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9wcm9wb3NhbF90eF9jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBSTlGOzs7R0FHRztBQUNILE1BQU0sV0FBVyxtQkFBbUI7SUFDbEM7Ozs7Ozs7T0FPRztJQUNILFVBQVUsQ0FDUixRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQ2xCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM5QixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztDQUNsQjtBQUVEOzs7R0FHRztBQUNILHFCQUFhLHlCQUEwQixZQUFXLG1CQUFtQjtJQUVqRSxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsR0FBRztJQUNYLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDcEIsT0FBTyxDQUFDLHNCQUFzQixDQUFDO0lBTGpDLFlBQ1UsVUFBVSxFQUFFLDZCQUE2QixFQUN6QyxHQUFHLEVBQUUsTUFBTSxFQUNYLFlBQVksRUFBRSxZQUFZLEVBQzFCLFdBQVcsQ0FBQyxzQ0FBMEIsRUFDdEMsc0JBQXNCLENBQUMsNkNBQWlDLEVBQzlEO0lBRUUsVUFBVSxDQUNkLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFDbEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQzlCLFNBQVMsRUFBRSxNQUFNLEdBQ2hCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQTBCZjtDQUNGO0FBS0Q7OztHQUdHO0FBQ0gscUJBQWEseUJBQTBCLFlBQVcsbUJBQW1CO0lBRWpFLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFIMUIsWUFDVSxVQUFVLEVBQUUsNkJBQTZCLEVBQ3pDLFFBQVEsR0FBRSxNQUEwQixFQUNwQyxnQkFBZ0IsR0FBRSxNQUFtQyxFQUMzRDtJQUVFLFVBQVUsQ0FDZCxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQ2xCLGNBQWMsRUFBRSxhQUFhLEVBQzdCLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM5QixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FXZjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal_tx_collector.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/proposal_tx_collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"proposal_tx_collector.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/proposal_tx_collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAI9F;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,UAAU,CACR,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IAEjE,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,sBAAsB,CAAC;IALjC,YACU,UAAU,EAAE,6BAA6B,EACzC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,sCAA0B,EACtC,sBAAsB,CAAC,6CAAiC,EAC9D;IAEE,UAAU,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,EAAE,EAAE,CAAC,CA0Bf;CACF;AAKD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IAEjE,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IAH1B,YACU,UAAU,EAAE,6BAA6B,EACzC,QAAQ,GAAE,MAA0B,EACpC,gBAAgB,GAAE,MAAmC,EAC3D;IAEE,UAAU,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,cAAc,EAAE,aAAa,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,EAAE,EAAE,CAAC,CAWf;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BatchTxRequester } from '../reqresp/batch-tx-requester/batch_tx_requester.js';
|
|
2
|
-
import { ReqRespSubProtocol
|
|
2
|
+
import { ReqRespSubProtocol } from '../reqresp/interface.js';
|
|
3
|
+
import { chunkTxHashesRequest } from '../reqresp/protocols/tx.js';
|
|
3
4
|
/**
|
|
4
5
|
* Collects transactions using the BatchTxRequester implementation.
|
|
5
6
|
* This uses a smart/dumb peer strategy with parallel workers.
|
|
@@ -16,9 +17,9 @@ import { ReqRespSubProtocol, chunkTxHashesRequest } from '../reqresp/index.js';
|
|
|
16
17
|
this.txValidator = txValidator;
|
|
17
18
|
this.batchTxRequesterConfig = batchTxRequesterConfig;
|
|
18
19
|
}
|
|
19
|
-
async collectTxs(txHashes,
|
|
20
|
+
async collectTxs(txHashes, blockProposal, pinnedPeer, timeoutMs) {
|
|
20
21
|
const { batchTxRequesterSmartParallelWorkerCount: smartParallelWorkerCount, batchTxRequesterDumbParallelWorkerCount: dumbParallelWorkerCount, batchTxRequesterTxBatchSize: txBatchSize, batchTxRequesterBadPeerThreshold: badPeerThreshold } = this.batchTxRequesterConfig ?? {};
|
|
21
|
-
const batchRequester = new BatchTxRequester(txHashes,
|
|
22
|
+
const batchRequester = new BatchTxRequester(txHashes, blockProposal, pinnedPeer, timeoutMs, this.p2pService, this.log, this.dateProvider, {
|
|
22
23
|
smartParallelWorkerCount,
|
|
23
24
|
dumbParallelWorkerCount,
|
|
24
25
|
txBatchSize,
|
|
@@ -42,7 +43,7 @@ const DEFAULT_MAX_RETRY_ATTEMPTS = 3;
|
|
|
42
43
|
this.maxPeers = maxPeers;
|
|
43
44
|
this.maxRetryAttempts = maxRetryAttempts;
|
|
44
45
|
}
|
|
45
|
-
async collectTxs(txHashes,
|
|
46
|
+
async collectTxs(txHashes, _blockProposal, pinnedPeer, timeoutMs) {
|
|
46
47
|
const txs = await this.p2pService.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(txHashes), pinnedPeer, timeoutMs, this.maxPeers, this.maxRetryAttempts);
|
|
47
48
|
return txs.flat();
|
|
48
49
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.86469d5",
|
|
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": "0.0.1-commit.
|
|
71
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
72
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
73
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
74
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
75
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
77
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
78
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
79
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
80
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.86469d5",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.86469d5",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.86469d5",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.86469d5",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.86469d5",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.86469d5",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.86469d5",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.86469d5",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.86469d5",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.86469d5",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.86469d5",
|
|
81
81
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
82
82
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
83
83
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
@@ -104,8 +104,8 @@
|
|
|
104
104
|
"xxhash-wasm": "^1.1.0"
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
108
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
107
|
+
"@aztec/archiver": "0.0.1-commit.86469d5",
|
|
108
|
+
"@aztec/world-state": "0.0.1-commit.86469d5",
|
|
109
109
|
"@jest/globals": "^30.0.0",
|
|
110
110
|
"@types/jest": "^30.0.0",
|
|
111
111
|
"@types/node": "^22.15.17",
|
package/src/client/factory.ts
CHANGED
|
@@ -21,7 +21,6 @@ import { DummyP2PService } from '../services/dummy_service.js';
|
|
|
21
21
|
import { LibP2PService } from '../services/index.js';
|
|
22
22
|
import { TxCollection } from '../services/tx_collection/tx_collection.js';
|
|
23
23
|
import { type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
|
|
24
|
-
import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
25
24
|
import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
|
|
26
25
|
|
|
27
26
|
export type P2PClientDeps<T extends P2PClientType> = {
|
|
@@ -117,8 +116,6 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
117
116
|
logger.createChild('tx-collection'),
|
|
118
117
|
);
|
|
119
118
|
|
|
120
|
-
const txFileStore = await TxFileStore.create(mempools.txPool, config, logger.createChild('tx-file-store'), telemetry);
|
|
121
|
-
|
|
122
119
|
return new P2PClient(
|
|
123
120
|
clientType,
|
|
124
121
|
store,
|
|
@@ -126,7 +123,6 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
126
123
|
mempools,
|
|
127
124
|
p2pService,
|
|
128
125
|
txCollection,
|
|
129
|
-
txFileStore,
|
|
130
126
|
config,
|
|
131
127
|
dateProvider,
|
|
132
128
|
telemetry,
|
package/src/client/p2p_client.ts
CHANGED
|
@@ -41,7 +41,6 @@ import {
|
|
|
41
41
|
import { chunkTxHashesRequest } from '../services/reqresp/protocols/tx.js';
|
|
42
42
|
import type { P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PService } from '../services/service.js';
|
|
43
43
|
import { TxCollection } from '../services/tx_collection/tx_collection.js';
|
|
44
|
-
import type { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
45
44
|
import { TxProvider } from '../services/tx_provider.js';
|
|
46
45
|
import { type P2P, P2PClientState, type P2PSyncState } from './interface.js';
|
|
47
46
|
|
|
@@ -91,7 +90,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
91
90
|
mempools: MemPools,
|
|
92
91
|
private p2pService: P2PService,
|
|
93
92
|
private txCollection: TxCollection,
|
|
94
|
-
private txFileStore: TxFileStore | undefined,
|
|
95
93
|
config: Partial<P2PConfig> = {},
|
|
96
94
|
private _dateProvider: DateProvider = new DateProvider(),
|
|
97
95
|
private telemetry: TelemetryClient = getTelemetryClient(),
|
|
@@ -276,7 +274,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
276
274
|
|
|
277
275
|
this.blockStream!.start();
|
|
278
276
|
await this.txCollection.start();
|
|
279
|
-
this.txFileStore?.start();
|
|
280
277
|
return this.syncPromise;
|
|
281
278
|
}
|
|
282
279
|
|
|
@@ -309,8 +306,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
309
306
|
this.log.debug('Stopping p2p client...');
|
|
310
307
|
await tryStop(this.txCollection);
|
|
311
308
|
this.log.debug('Stopped tx collection service');
|
|
312
|
-
await this.txFileStore?.stop();
|
|
313
|
-
this.log.debug('Stopped tx file store');
|
|
314
309
|
await this.p2pService.stop();
|
|
315
310
|
this.log.debug('Stopped p2p service');
|
|
316
311
|
await this.blockStream?.stop();
|
package/src/config.ts
CHANGED
|
@@ -21,17 +21,11 @@ import {
|
|
|
21
21
|
} from './services/reqresp/batch-tx-requester/config.js';
|
|
22
22
|
import { type P2PReqRespConfig, p2pReqRespConfigMappings } from './services/reqresp/config.js';
|
|
23
23
|
import { type TxCollectionConfig, txCollectionConfigMappings } from './services/tx_collection/config.js';
|
|
24
|
-
import { type TxFileStoreConfig, txFileStoreConfigMappings } from './services/tx_file_store/config.js';
|
|
25
24
|
|
|
26
25
|
/**
|
|
27
26
|
* P2P client configuration values.
|
|
28
27
|
*/
|
|
29
|
-
export interface P2PConfig
|
|
30
|
-
extends P2PReqRespConfig,
|
|
31
|
-
BatchTxRequesterConfig,
|
|
32
|
-
ChainConfig,
|
|
33
|
-
TxCollectionConfig,
|
|
34
|
-
TxFileStoreConfig {
|
|
28
|
+
export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig {
|
|
35
29
|
/** A flag dictating whether the P2P subsystem should be enabled. */
|
|
36
30
|
p2pEnabled: boolean;
|
|
37
31
|
|
|
@@ -445,7 +439,6 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
|
|
|
445
439
|
...batchTxRequesterConfigMappings,
|
|
446
440
|
...chainConfigMappings,
|
|
447
441
|
...txCollectionConfigMappings,
|
|
448
|
-
...txFileStoreConfigMappings,
|
|
449
442
|
};
|
|
450
443
|
|
|
451
444
|
/**
|
package/src/services/index.ts
CHANGED