@aztec/p2p 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2eb6648a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +4 -4
- package/dest/client/factory.d.ts +3 -3
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +10 -7
- package/dest/client/interface.d.ts +9 -2
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +7 -4
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +24 -7
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +2 -2
- package/dest/config.d.ts +9 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +94 -87
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +411 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- 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 +351 -85
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -2
- package/dest/mem_pools/index.d.ts +2 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- package/dest/mem_pools/instrumentation.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +2 -2
- package/dest/mem_pools/interface.d.ts +3 -3
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +5 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/index.js +4 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +197 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +71 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +95 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +99 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +332 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +156 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +748 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +7 -2
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
- package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +4 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +4 -3
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +12 -12
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +3 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
- package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/size_validator.js +4 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +10 -6
- package/dest/services/discv5/discV5_service.js +1 -1
- package/dest/services/dummy_service.d.ts +6 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +3 -0
- package/dest/services/index.d.ts +2 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +1 -0
- package/dest/services/libp2p/instrumentation.d.ts +1 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +14 -3
- package/dest/services/libp2p/libp2p_service.d.ts +74 -33
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +309 -238
- package/dest/services/peer-manager/metrics.d.ts +2 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +20 -5
- package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +8 -2
- 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 +9 -9
- package/dest/services/reqresp/metrics.d.ts +6 -5
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +17 -5
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +6 -4
- 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 +17 -12
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +19 -14
- 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 +25 -24
- package/dest/services/service.d.ts +18 -1
- package/dest/services/service.d.ts.map +1 -1
- 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 +4 -5
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +10 -14
- package/dest/services/tx_collection/index.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +9 -2
- 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 +4 -5
- package/dest/services/tx_file_store/config.d.ts +18 -0
- package/dest/services/tx_file_store/config.d.ts.map +1 -0
- package/dest/services/tx_file_store/config.js +26 -0
- package/dest/services/tx_file_store/index.d.ts +4 -0
- package/dest/services/tx_file_store/index.d.ts.map +1 -0
- package/dest/services/tx_file_store/index.js +3 -0
- package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
- package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_file_store/instrumentation.js +29 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
- package/dest/services/tx_file_store/tx_file_store.js +149 -0
- package/dest/services/tx_provider_instrumentation.d.ts +1 -1
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +5 -5
- package/dest/test-helpers/testbench-utils.d.ts +12 -16
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +34 -31
- package/dest/testbench/p2p_client_testbench_worker.js +2 -2
- package/package.json +14 -14
- package/src/bootstrap/bootstrap.ts +7 -4
- package/src/client/factory.ts +12 -13
- package/src/client/interface.ts +13 -1
- package/src/client/p2p_client.ts +32 -8
- package/src/client/test/tx_proposal_collector/README.md +4 -4
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +2 -2
- package/src/config.ts +8 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +444 -90
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +436 -100
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/index.ts +1 -1
- package/src/mem_pools/instrumentation.ts +2 -1
- package/src/mem_pools/interface.ts +2 -2
- package/src/mem_pools/tx_pool_v2/README.md +209 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
- package/src/mem_pools/tx_pool_v2/index.ts +11 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +227 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +161 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +417 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +212 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +882 -0
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +10 -4
- package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +7 -8
- package/src/msg_validators/tx_validator/data_validator.ts +6 -2
- package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
- package/src/msg_validators/tx_validator/factory.ts +46 -30
- package/src/msg_validators/tx_validator/gas_validator.ts +9 -3
- package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
- package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
- package/src/msg_validators/tx_validator/size_validator.ts +6 -2
- package/src/msg_validators/tx_validator/timestamp_validator.ts +6 -3
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
- package/src/services/data_store.ts +10 -7
- package/src/services/discv5/discV5_service.ts +1 -1
- package/src/services/dummy_service.ts +6 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/instrumentation.ts +15 -2
- package/src/services/libp2p/libp2p_service.ts +324 -246
- package/src/services/peer-manager/metrics.ts +21 -4
- package/src/services/peer-manager/peer_scoring.ts +4 -1
- package/src/services/reqresp/batch-tx-requester/README.md +14 -14
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +12 -12
- package/src/services/reqresp/metrics.ts +34 -9
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +30 -24
- package/src/services/service.ts +20 -0
- package/src/services/tx_collection/config.ts +6 -6
- package/src/services/tx_collection/fast_tx_collection.ts +14 -24
- package/src/services/tx_collection/index.ts +1 -1
- package/src/services/tx_collection/instrumentation.ts +11 -2
- package/src/services/tx_collection/proposal_tx_collector.ts +12 -14
- package/src/services/tx_file_store/config.ts +43 -0
- package/src/services/tx_file_store/index.ts +3 -0
- package/src/services/tx_file_store/instrumentation.ts +36 -0
- package/src/services/tx_file_store/tx_file_store.ts +173 -0
- package/src/services/tx_provider_instrumentation.ts +11 -5
- package/src/test-helpers/testbench-utils.ts +20 -39
- package/src/testbench/p2p_client_testbench_worker.ts +2 -2
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
package/src/client/p2p_client.ts
CHANGED
|
@@ -29,7 +29,7 @@ import type { PeerId } from '@libp2p/interface';
|
|
|
29
29
|
import type { ENR } from '@nethermindeth/enr';
|
|
30
30
|
|
|
31
31
|
import { type P2PConfig, getP2PDefaultConfig } from '../config.js';
|
|
32
|
-
import type {
|
|
32
|
+
import type { AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
33
33
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
34
34
|
import type { TxPool } from '../mem_pools/tx_pool/index.js';
|
|
35
35
|
import type { AuthRequest, StatusMessage } from '../services/index.js';
|
|
@@ -39,8 +39,14 @@ import {
|
|
|
39
39
|
type ReqRespSubProtocolValidators,
|
|
40
40
|
} from '../services/reqresp/interface.js';
|
|
41
41
|
import { chunkTxHashesRequest } from '../services/reqresp/protocols/tx.js';
|
|
42
|
-
import type {
|
|
42
|
+
import type {
|
|
43
|
+
DuplicateProposalInfo,
|
|
44
|
+
P2PBlockReceivedCallback,
|
|
45
|
+
P2PCheckpointReceivedCallback,
|
|
46
|
+
P2PService,
|
|
47
|
+
} from '../services/service.js';
|
|
43
48
|
import { TxCollection } from '../services/tx_collection/tx_collection.js';
|
|
49
|
+
import type { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
44
50
|
import { TxProvider } from '../services/tx_provider.js';
|
|
45
51
|
import { type P2P, P2PClientState, type P2PSyncState } from './interface.js';
|
|
46
52
|
|
|
@@ -65,7 +71,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
65
71
|
private synchedLatestSlot: AztecAsyncSingleton<bigint>;
|
|
66
72
|
|
|
67
73
|
private txPool: TxPool;
|
|
68
|
-
private attestationPool:
|
|
74
|
+
private attestationPool: AttestationPoolApi;
|
|
69
75
|
|
|
70
76
|
private config: P2PConfig;
|
|
71
77
|
|
|
@@ -90,6 +96,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
90
96
|
mempools: MemPools,
|
|
91
97
|
private p2pService: P2PService,
|
|
92
98
|
private txCollection: TxCollection,
|
|
99
|
+
private txFileStore: TxFileStore | undefined,
|
|
93
100
|
config: Partial<P2PConfig> = {},
|
|
94
101
|
private _dateProvider: DateProvider = new DateProvider(),
|
|
95
102
|
private telemetry: TelemetryClient = getTelemetryClient(),
|
|
@@ -274,6 +281,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
274
281
|
|
|
275
282
|
this.blockStream!.start();
|
|
276
283
|
await this.txCollection.start();
|
|
284
|
+
this.txFileStore?.start();
|
|
277
285
|
return this.syncPromise;
|
|
278
286
|
}
|
|
279
287
|
|
|
@@ -306,6 +314,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
306
314
|
this.log.debug('Stopping p2p client...');
|
|
307
315
|
await tryStop(this.txCollection);
|
|
308
316
|
this.log.debug('Stopped tx collection service');
|
|
317
|
+
await this.txFileStore?.stop();
|
|
318
|
+
this.log.debug('Stopped tx file store');
|
|
309
319
|
await this.p2pService.stop();
|
|
310
320
|
this.log.debug('Stopped p2p service');
|
|
311
321
|
await this.blockStream?.stop();
|
|
@@ -326,8 +336,13 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
326
336
|
[Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
|
|
327
337
|
[Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString(),
|
|
328
338
|
}))
|
|
329
|
-
public broadcastProposal(proposal: BlockProposal): Promise<void> {
|
|
339
|
+
public async broadcastProposal(proposal: BlockProposal): Promise<void> {
|
|
330
340
|
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
|
|
341
|
+
// Store our own proposal so we can respond to req/resp requests for it
|
|
342
|
+
const { totalForPosition } = await this.attestationPool.tryAddBlockProposal(proposal);
|
|
343
|
+
if (totalForPosition > 1) {
|
|
344
|
+
throw new Error(`Attempted to broadcast a duplicate block proposal for slot ${proposal.slotNumber}`);
|
|
345
|
+
}
|
|
331
346
|
return this.p2pService.propagate(proposal);
|
|
332
347
|
}
|
|
333
348
|
|
|
@@ -336,8 +351,13 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
336
351
|
[Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
|
|
337
352
|
[Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString(),
|
|
338
353
|
}))
|
|
339
|
-
public broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void> {
|
|
354
|
+
public async broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void> {
|
|
340
355
|
this.log.verbose(`Broadcasting checkpoint proposal for slot ${proposal.slotNumber} to peers`);
|
|
356
|
+
const blockProposal = proposal.getBlockProposal();
|
|
357
|
+
if (blockProposal) {
|
|
358
|
+
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
359
|
+
await this.attestationPool.tryAddBlockProposal(blockProposal);
|
|
360
|
+
}
|
|
341
361
|
return this.p2pService.propagate(proposal);
|
|
342
362
|
}
|
|
343
363
|
|
|
@@ -355,8 +375,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
355
375
|
: this.attestationPool.getCheckpointAttestationsForSlot(slot));
|
|
356
376
|
}
|
|
357
377
|
|
|
358
|
-
public
|
|
359
|
-
return this.attestationPool.
|
|
378
|
+
public addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void> {
|
|
379
|
+
return this.attestationPool.addOwnCheckpointAttestations(attestations);
|
|
360
380
|
}
|
|
361
381
|
|
|
362
382
|
// REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
|
|
@@ -369,6 +389,10 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
369
389
|
this.p2pService.registerCheckpointReceivedCallback(handler);
|
|
370
390
|
}
|
|
371
391
|
|
|
392
|
+
public registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void {
|
|
393
|
+
this.p2pService.registerDuplicateProposalCallback(callback);
|
|
394
|
+
}
|
|
395
|
+
|
|
372
396
|
/**
|
|
373
397
|
* Uses the batched Request Response protocol to request a set of transactions from the network.
|
|
374
398
|
*/
|
|
@@ -733,7 +757,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
733
757
|
await this.txPool.deleteTxs(txHashes, { permanently: true });
|
|
734
758
|
await this.txPool.cleanupDeletedMinedTxs(lastBlockNum);
|
|
735
759
|
|
|
736
|
-
await this.attestationPool.
|
|
760
|
+
await this.attestationPool.deleteOlderThan(lastBlockSlot);
|
|
737
761
|
|
|
738
762
|
this.log.debug(`Synched to finalized block ${lastBlockNum} at slot ${lastBlockSlot}`);
|
|
739
763
|
}
|
|
@@ -24,7 +24,7 @@ The benchmark runs a small simulated network on localhost:
|
|
|
24
24
|
```
|
|
25
25
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
26
26
|
│ Test Process (Driver) │
|
|
27
|
-
│ p2p_client.
|
|
27
|
+
│ p2p_client.proposal_tx_collector.bench.test.ts │
|
|
28
28
|
│ ┌─────────────────────────────────────────────────────────────┐ │
|
|
29
29
|
│ │ WorkerClientManager │ │
|
|
30
30
|
│ │ (src/testbench/worker_client_manager.ts) │ │
|
|
@@ -127,13 +127,13 @@ From the p2p package:
|
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
129
|
cd yarn-project/p2p
|
|
130
|
-
yarn test src/client/test/tx_proposal_collector/p2p_client.
|
|
130
|
+
yarn test src/client/test/tx_proposal_collector/p2p_client.proposal_tx_collector.bench.test.ts
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
Or from repo root:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
yarn test p2p_client.
|
|
136
|
+
yarn test p2p_client.proposal_tx_collector.bench.test.ts
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
The benchmark is intentionally long due to spawning many processes and running multiple cases.
|
|
@@ -207,7 +207,7 @@ This benchmark does **not** measure:
|
|
|
207
207
|
|
|
208
208
|
| File | Purpose |
|
|
209
209
|
|------|---------|
|
|
210
|
-
| `p2p_client.
|
|
210
|
+
| `p2p_client.proposal_tx_collector.bench.test.ts` | Test suite (cases, distributions, output formatting) |
|
|
211
211
|
| `proposal_tx_collector_worker.ts` | Collector-specific worker implementation |
|
|
212
212
|
| `proposal_tx_collector_worker_protocol.ts` | IPC message types and serialization |
|
|
213
213
|
| `src/testbench/worker_client_manager.ts` | Worker process manager (forking, IPC, orchestration) |
|
|
@@ -104,7 +104,7 @@ async function startClient(config: P2PConfig, clientIndex: number) {
|
|
|
104
104
|
const worldState = createMockWorldStateSynchronizer();
|
|
105
105
|
const l2BlockSource = new MockL2BlockSource();
|
|
106
106
|
const proofVerifier = new AlwaysTrueCircuitVerifier();
|
|
107
|
-
kvStore = await openTmpStore(`proposal-bench-${clientIndex}
|
|
107
|
+
kvStore = await openTmpStore(`proposal-bench-${clientIndex}`, true, BENCHMARK_CONSTANTS.KV_STORE_MAP_SIZE_KB);
|
|
108
108
|
logger = createLogger(`p2p:proposal-bench:${clientIndex}`);
|
|
109
109
|
|
|
110
110
|
const telemetry = getTelemetryClient();
|
|
@@ -301,7 +301,7 @@ process.on('message', (msg: WorkerCommand) => {
|
|
|
301
301
|
throw new Error('Attestation pool not initialized');
|
|
302
302
|
}
|
|
303
303
|
const proposal = deserializeBlockProposal(msg.blockProposal);
|
|
304
|
-
await attestationPool.
|
|
304
|
+
await attestationPool.tryAddBlockProposal(proposal);
|
|
305
305
|
await sendMessage({ type: 'BLOCK_PROPOSAL_SET', requestId, archiveRoot: proposal.archive.toString() });
|
|
306
306
|
break;
|
|
307
307
|
}
|
package/src/config.ts
CHANGED
|
@@ -21,11 +21,17 @@ 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';
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* P2P client configuration values.
|
|
27
28
|
*/
|
|
28
|
-
export interface P2PConfig
|
|
29
|
+
export interface P2PConfig
|
|
30
|
+
extends P2PReqRespConfig,
|
|
31
|
+
BatchTxRequesterConfig,
|
|
32
|
+
ChainConfig,
|
|
33
|
+
TxCollectionConfig,
|
|
34
|
+
TxFileStoreConfig {
|
|
29
35
|
/** A flag dictating whether the P2P subsystem should be enabled. */
|
|
30
36
|
p2pEnabled: boolean;
|
|
31
37
|
|
|
@@ -439,6 +445,7 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
|
|
|
439
445
|
...batchTxRequesterConfigMappings,
|
|
440
446
|
...chainConfigMappings,
|
|
441
447
|
...txCollectionConfigMappings,
|
|
448
|
+
...txFileStoreConfigMappings,
|
|
442
449
|
};
|
|
443
450
|
|
|
444
451
|
/**
|