@aztec/p2p 0.0.1-commit.7b97ef96e → 0.0.1-commit.7cbc774
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/README.md +129 -3
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +9 -1
- package/dest/client/factory.d.ts +7 -7
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +39 -32
- package/dest/client/interface.d.ts +19 -17
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +16 -20
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +94 -105
- package/dest/config.d.ts +154 -106
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +134 -40
- package/dest/errors/p2p-service.error.d.ts +9 -0
- package/dest/errors/p2p-service.error.d.ts.map +1 -0
- package/dest/errors/p2p-service.error.js +10 -0
- package/dest/errors/reqresp.error.d.ts +1 -20
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +0 -21
- package/dest/index.d.ts +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +99 -59
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +267 -197
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +181 -65
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +6 -4
- package/dest/mem_pools/index.d.ts +1 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.d.ts +4 -2
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +33 -15
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +3 -2
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +2 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +7 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +4 -4
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +10 -6
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +8 -6
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +18 -9
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +3 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +51 -11
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +90 -19
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -44
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +5 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +6 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +3 -2
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +256 -220
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -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 +4 -5
- package/dest/msg_validators/clock_tolerance.d.ts +12 -1
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
- package/dest/msg_validators/clock_tolerance.js +61 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -4
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +10 -4
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +21 -8
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +90 -44
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +36 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +135 -7
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +252 -61
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +99 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
- package/dest/msg_validators/tx_validator/index.d.ts +5 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +4 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.js +69 -0
- 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 +5 -5
- package/dest/services/discv5/discV5_service.d.ts +2 -1
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +35 -8
- package/dest/services/dummy_service.d.ts +12 -17
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +13 -20
- package/dest/services/encoding.d.ts +6 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +14 -8
- package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +21 -4
- package/dest/services/libp2p/instrumentation.d.ts +3 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +14 -0
- package/dest/services/libp2p/libp2p_service.d.ts +47 -55
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +344 -308
- package/dest/services/peer-manager/metrics.d.ts +3 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +6 -0
- package/dest/services/peer-manager/peer_manager.d.ts +6 -2
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +40 -11
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +32 -10
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
- 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 +97 -107
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +10 -6
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
- package/dest/services/reqresp/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/interface.d.ts +16 -18
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +10 -20
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +0 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
- 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 +4 -2
- package/dest/services/reqresp/protocols/index.d.ts +1 -2
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +0 -1
- package/dest/services/reqresp/protocols/tx.d.ts +1 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +1 -3
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
- package/dest/services/reqresp/reqresp.d.ts +7 -29
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +43 -215
- package/dest/services/service.d.ts +10 -13
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +2 -23
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +2 -55
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
- package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +39 -29
- package/dest/services/tx_collection/index.d.ts +2 -3
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +0 -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 +0 -2
- package/dest/services/tx_collection/request_tracker.d.ts +53 -0
- package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/request_tracker.js +84 -0
- package/dest/services/tx_collection/tx_collection.d.ts +36 -55
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +275 -119
- package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +2 -2
- package/dest/services/tx_collection/tx_source.d.ts +6 -5
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +9 -7
- package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +4 -14
- package/dest/services/tx_provider.d.ts +5 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +7 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +5 -3
- package/dest/test-helpers/mock-pubsub.d.ts +24 -11
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +45 -45
- package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +17 -19
- package/dest/test-helpers/test_tx_provider.d.ts +3 -1
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
- package/dest/test-helpers/test_tx_provider.js +3 -0
- package/dest/test-helpers/testbench-utils.d.ts +13 -15
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +42 -15
- package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +88 -42
- package/dest/testbench/worker_client_manager.d.ts +12 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +57 -11
- package/dest/util.d.ts +12 -7
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +35 -14
- package/dest/versioning.d.ts +3 -6
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +3 -24
- package/package.json +15 -14
- package/src/bootstrap/bootstrap.ts +9 -1
- package/src/client/factory.ts +74 -49
- package/src/client/interface.ts +20 -30
- package/src/client/p2p_client.ts +108 -156
- package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
- package/src/config.ts +227 -45
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +0 -25
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +318 -242
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +204 -68
- package/src/mem_pools/attestation_pool/mocks.ts +13 -8
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/instrumentation.ts +22 -14
- package/src/mem_pools/tx_pool_v2/README.md +9 -1
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +3 -2
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +10 -6
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +15 -6
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +2 -1
- package/src/mem_pools/tx_pool_v2/index.ts +1 -1
- package/src/mem_pools/tx_pool_v2/interfaces.ts +19 -8
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +130 -23
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +17 -2
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +267 -229
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -7
- package/src/msg_validators/clock_tolerance.ts +79 -3
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +114 -47
- package/src/msg_validators/tx_validator/README.md +127 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +6 -15
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
- package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +44 -1
- package/src/msg_validators/tx_validator/factory.ts +407 -80
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +199 -54
- package/src/msg_validators/tx_validator/index.ts +4 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
- package/src/msg_validators/tx_validator/tx_validation_cache.ts +102 -0
- package/src/services/data_store.ts +5 -13
- package/src/services/discv5/discV5_service.ts +38 -5
- package/src/services/dummy_service.ts +15 -44
- package/src/services/encoding.ts +14 -7
- package/src/services/gossipsub/topic_score_params.ts +36 -4
- package/src/services/libp2p/instrumentation.ts +14 -0
- package/src/services/libp2p/libp2p_service.ts +390 -360
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +46 -11
- package/src/services/peer-manager/peer_scoring.ts +27 -5
- package/src/services/reqresp/README.md +215 -0
- package/src/services/reqresp/batch-tx-requester/README.md +46 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +97 -119
- package/src/services/reqresp/batch-tx-requester/interface.ts +13 -5
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
- package/src/services/reqresp/config.ts +2 -2
- package/src/services/reqresp/interface.ts +21 -47
- package/src/services/reqresp/metrics.ts +0 -1
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +4 -2
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/tx.ts +1 -3
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
- package/src/services/reqresp/reqresp.ts +48 -261
- package/src/services/service.ts +13 -29
- package/src/services/tx_collection/config.ts +3 -80
- package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
- package/src/services/tx_collection/file_store_tx_source.ts +43 -31
- package/src/services/tx_collection/index.ts +1 -6
- package/src/services/tx_collection/instrumentation.ts +1 -7
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/tx_collection.ts +331 -176
- package/src/services/tx_collection/tx_collection_sink.ts +2 -2
- package/src/services/tx_collection/tx_source.ts +8 -7
- package/src/services/tx_file_store/tx_file_store.ts +5 -17
- package/src/services/tx_provider.ts +7 -2
- package/src/test-helpers/make-test-p2p-clients.ts +4 -3
- package/src/test-helpers/mock-pubsub.ts +49 -66
- package/src/test-helpers/reqresp-nodes.ts +15 -28
- package/src/test-helpers/test_tx_provider.ts +5 -0
- package/src/test-helpers/testbench-utils.ts +54 -29
- package/src/testbench/p2p_client_testbench_worker.ts +91 -61
- package/src/testbench/worker_client_manager.ts +72 -25
- package/src/util.ts +33 -18
- package/src/versioning.ts +3 -33
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
- package/dest/mem_pools/tx_pool/index.d.ts +0 -3
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -2
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -15
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
- package/dest/services/reqresp/protocols/block.d.ts +0 -9
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.js +0 -32
- package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -54
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/fast_tx_collection.js +0 -327
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
- package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -49
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
- package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/slow_tx_collection.js +0 -211
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -346
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
- package/src/mem_pools/tx_pool/README.md +0 -270
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
- package/src/mem_pools/tx_pool/index.ts +0 -2
- package/src/mem_pools/tx_pool/priority.ts +0 -20
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
- package/src/services/reqresp/protocols/block.ts +0 -37
- package/src/services/tx_collection/fast_tx_collection.ts +0 -387
- package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
- package/src/services/tx_collection/proposal_tx_collector.ts +0 -113
- package/src/services/tx_collection/slow_tx_collection.ts +0 -266
package/dest/versioning.js
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
1
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
2
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
|
-
import {
|
|
5
|
-
import xxhashFactory from 'xxhash-wasm';
|
|
3
|
+
import { compressComponentVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
|
|
6
4
|
import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
|
|
7
|
-
const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
|
|
8
|
-
const XX_HASH_LEN = 8;
|
|
9
|
-
const xxhash = await xxhashFactory();
|
|
10
5
|
/** Returns the component versions based on config and this build. */ export function getVersions(config) {
|
|
11
6
|
return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
|
|
12
7
|
}
|
|
13
|
-
/** Sets the aztec key on the ENR record with versioning info. */ export function setAztecEnrKey(enr, config
|
|
8
|
+
/** Sets the aztec key on the ENR record with versioning info. */ export function setAztecEnrKey(enr, config) {
|
|
14
9
|
const versions = getVersions(config);
|
|
15
|
-
|
|
16
|
-
enr.set(AZTEC_ENR_KEY, value);
|
|
10
|
+
enr.set(AZTEC_ENR_KEY, Buffer.from(compressComponentVersions(versions)));
|
|
17
11
|
return versions;
|
|
18
12
|
}
|
|
19
13
|
/** Sets the Aztec client version on ENR record **/ export function setAztecClientVersionEnrKey(enr, clientVersion) {
|
|
@@ -21,18 +15,3 @@ const xxhash = await xxhashFactory();
|
|
|
21
15
|
enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
|
-
/** Checks the given value from an ENR record against the expected versions. */ export function checkAztecEnrVersion(enrValue, expectedVersions) {
|
|
25
|
-
if (enrValue.length === XX_HASH_LEN) {
|
|
26
|
-
const expected = versionsToEnrValue(expectedVersions, true);
|
|
27
|
-
if (!Buffer.from(enrValue).equals(expected)) {
|
|
28
|
-
throw new Error(`Expected ENR version ${expected.toString('hex')} but received ${enrValue.toString('hex')}`);
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
const actual = Buffer.from(enrValue).toString();
|
|
32
|
-
checkCompressedComponentVersion(actual, expectedVersions);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function versionsToEnrValue(versions, useXxHash) {
|
|
36
|
-
const compressed = compressComponentVersions(versions);
|
|
37
|
-
return useXxHash ? toBufferBE(xxhash.h64(compressed), XX_HASH_LEN) : Buffer.from(compressed);
|
|
38
|
-
}
|
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.7cbc774",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -67,17 +67,18 @@
|
|
|
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/
|
|
80
|
-
"@aztec/
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.7cbc774",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.7cbc774",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.7cbc774",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.7cbc774",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.7cbc774",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.7cbc774",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.7cbc774",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.7cbc774",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.7cbc774",
|
|
79
|
+
"@aztec/standard-contracts": "0.0.1-commit.7cbc774",
|
|
80
|
+
"@aztec/stdlib": "0.0.1-commit.7cbc774",
|
|
81
|
+
"@aztec/telemetry-client": "0.0.1-commit.7cbc774",
|
|
81
82
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
82
83
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
83
84
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
@@ -104,8 +105,8 @@
|
|
|
104
105
|
"xxhash-wasm": "^1.1.0"
|
|
105
106
|
},
|
|
106
107
|
"devDependencies": {
|
|
107
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
108
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
108
|
+
"@aztec/archiver": "0.0.1-commit.7cbc774",
|
|
109
|
+
"@aztec/world-state": "0.0.1-commit.7cbc774",
|
|
109
110
|
"@jest/globals": "^30.0.0",
|
|
110
111
|
"@types/jest": "^30.0.0",
|
|
111
112
|
"@types/node": "^22.15.17",
|
|
@@ -40,7 +40,7 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
40
40
|
if (!p2pIp) {
|
|
41
41
|
if (queryForIp) {
|
|
42
42
|
this.logger.info('Querying for public IP address...');
|
|
43
|
-
const publicIp = await getPublicIp();
|
|
43
|
+
const publicIp = await getPublicIp(config.publicIpServices);
|
|
44
44
|
p2pIp = publicIp;
|
|
45
45
|
this.logger.info(`Found public IP address: ${publicIp}`);
|
|
46
46
|
}
|
|
@@ -86,6 +86,14 @@ export class BootstrapNode implements P2PBootstrapApi {
|
|
|
86
86
|
this.node.on('discovered', async (enr: SignableENR) => {
|
|
87
87
|
const addr = await enr.getFullMultiaddr('udp');
|
|
88
88
|
this.logger.verbose(`Discovered new peer`, { enr: enr.encodeTxt(), addr: addr?.toString() });
|
|
89
|
+
// discv5's discovered() only updates routing table entries that already exist. Nodes that
|
|
90
|
+
// established a session with an empty-IP ENR are never inserted, so even after their ENR
|
|
91
|
+
// gains a valid socket address the routing table stays empty and FINDNODE always returns 0
|
|
92
|
+
// peers. Calling addEnr() here does an insertOrUpdate regardless of prior state, fixing
|
|
93
|
+
// the routing table so these nodes become discoverable to other peers.
|
|
94
|
+
if (addr) {
|
|
95
|
+
this.node.addEnr(enr);
|
|
96
|
+
}
|
|
89
97
|
});
|
|
90
98
|
|
|
91
99
|
try {
|
package/src/client/factory.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
4
5
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
|
-
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
6
6
|
import { AztecLMDBStoreV2, createStore } from '@aztec/kv-store/lmdb-v2';
|
|
7
7
|
import type { BlockHash, L2BlockSource } from '@aztec/stdlib/block';
|
|
8
8
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
9
9
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
10
|
+
import type { BlockMinFeesProvider } from '@aztec/stdlib/gas';
|
|
10
11
|
import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
11
|
-
import {
|
|
12
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
12
|
+
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
13
13
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
14
14
|
|
|
15
15
|
import { P2PClient } from '../client/p2p_client.js';
|
|
@@ -17,11 +17,14 @@ import type { P2PConfig } from '../config.js';
|
|
|
17
17
|
import { AttestationPool, type AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
18
18
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
19
19
|
import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
|
|
20
|
-
import type { TxMetaData } from '../mem_pools/tx_pool_v2/tx_metadata.js';
|
|
21
20
|
import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
|
|
22
|
-
import {
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
import {
|
|
22
|
+
createCheckAllowedSetupCalls,
|
|
23
|
+
createTxValidatorForOnDemandReceivedTxs,
|
|
24
|
+
createTxValidatorForTransactionsEnteringPendingTxPool,
|
|
25
|
+
getDefaultAllowedSetupFunctions,
|
|
26
|
+
} from '../msg_validators/index.js';
|
|
27
|
+
import { TxValidationCache } from '../msg_validators/tx_validator/tx_validation_cache.js';
|
|
25
28
|
import { DummyP2PService } from '../services/dummy_service.js';
|
|
26
29
|
import { LibP2PService } from '../services/index.js';
|
|
27
30
|
import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
|
|
@@ -30,14 +33,14 @@ import { NodeRpcTxSource, type TxSource, createNodeRpcTxSources } from '../servi
|
|
|
30
33
|
import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
31
34
|
import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
|
|
32
35
|
|
|
33
|
-
export type P2PClientDeps
|
|
36
|
+
export type P2PClientDeps = {
|
|
34
37
|
txPool?: TxPoolV2;
|
|
35
38
|
store?: AztecAsyncKVStore;
|
|
36
39
|
attestationPool?: AttestationPoolApi;
|
|
37
40
|
logger?: Logger;
|
|
38
41
|
txCollectionNodeSources?: TxSource[];
|
|
39
42
|
rpcTxProviders?: AztecNode[];
|
|
40
|
-
p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService
|
|
43
|
+
p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
export const P2P_STORE_NAME = 'p2p';
|
|
@@ -45,17 +48,18 @@ export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
|
|
|
45
48
|
export const P2P_PEER_STORE_NAME = 'p2p-peers';
|
|
46
49
|
export const P2P_ATTESTATION_STORE_NAME = 'p2p-attestation';
|
|
47
50
|
|
|
48
|
-
export async function createP2PClient
|
|
49
|
-
clientType: T,
|
|
51
|
+
export async function createP2PClient(
|
|
50
52
|
inputConfig: P2PConfig & DataStoreConfig & ChainConfig,
|
|
51
53
|
archiver: L2BlockSource & ContractDataSource,
|
|
52
54
|
proofVerifier: ClientProtocolCircuitVerifier,
|
|
53
55
|
worldStateSynchronizer: WorldStateSynchronizer,
|
|
54
56
|
epochCache: EpochCacheInterface,
|
|
57
|
+
blockMinFeesProvider: BlockMinFeesProvider,
|
|
55
58
|
packageVersion: string,
|
|
56
59
|
dateProvider: DateProvider = new DateProvider(),
|
|
57
60
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
58
|
-
deps: P2PClientDeps
|
|
61
|
+
deps: P2PClientDeps = {},
|
|
62
|
+
initialBlockHash: BlockHash,
|
|
59
63
|
) {
|
|
60
64
|
const config = await configureP2PClientAddresses({
|
|
61
65
|
...inputConfig,
|
|
@@ -74,37 +78,21 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
74
78
|
const store = deps.store ?? (await createStore(P2P_STORE_NAME, 2, config, bindings));
|
|
75
79
|
const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, bindings);
|
|
76
80
|
const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, bindings);
|
|
77
|
-
const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME,
|
|
81
|
+
const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 2, config, bindings);
|
|
78
82
|
const l1Constants = await archiver.getL1Constants();
|
|
79
83
|
|
|
80
|
-
const rollupAddress = inputConfig.
|
|
84
|
+
const rollupAddress = inputConfig.rollupAddress.toString().toLowerCase().replace(/^0x/, '');
|
|
81
85
|
const txFileStoreBasePath = `aztec-${inputConfig.l1ChainId}-${inputConfig.rollupVersion}-0x${rollupAddress}`;
|
|
82
86
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return indices.map(index => index !== undefined);
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
bindings,
|
|
96
|
-
),
|
|
97
|
-
new BlockHeaderTxValidator<TxMetaData>(
|
|
98
|
-
{
|
|
99
|
-
getArchiveIndices: (archives: BlockHash[]) => {
|
|
100
|
-
const merkleTree = worldStateSynchronizer.getCommitted();
|
|
101
|
-
return merkleTree.findLeafIndices(MerkleTreeId.ARCHIVE, archives);
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
bindings,
|
|
105
|
-
),
|
|
106
|
-
);
|
|
107
|
-
};
|
|
87
|
+
const allowedInSetup = [
|
|
88
|
+
...(await getDefaultAllowedSetupFunctions()),
|
|
89
|
+
...(inputConfig.txPublicSetupAllowListExtend ?? []),
|
|
90
|
+
];
|
|
91
|
+
const checkAllowedSetupCalls = createCheckAllowedSetupCalls(
|
|
92
|
+
archiver,
|
|
93
|
+
allowedInSetup,
|
|
94
|
+
() => epochCache.getEpochAndSlotInNextL1Slot().ts,
|
|
95
|
+
);
|
|
108
96
|
|
|
109
97
|
const txPool =
|
|
110
98
|
deps.txPool ??
|
|
@@ -114,13 +102,33 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
114
102
|
{
|
|
115
103
|
l2BlockSource: archiver,
|
|
116
104
|
worldStateSynchronizer,
|
|
117
|
-
|
|
105
|
+
checkAllowedSetupCalls,
|
|
106
|
+
createTxValidator: async () => {
|
|
107
|
+
const currentBlockNumber = await archiver.getBlockNumber();
|
|
108
|
+
const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
|
|
109
|
+
const l1Constants = await archiver.getL1Constants();
|
|
110
|
+
const gasFees = await blockMinFeesProvider.getCurrentMinFees();
|
|
111
|
+
return createTxValidatorForTransactionsEnteringPendingTxPool(
|
|
112
|
+
worldStateSynchronizer,
|
|
113
|
+
nextSlotTimestamp,
|
|
114
|
+
BlockNumber(currentBlockNumber + 1),
|
|
115
|
+
{
|
|
116
|
+
rollupManaLimit: l1Constants.rollupManaLimit,
|
|
117
|
+
maxBlockL2Gas: config.validateMaxL2BlockGas,
|
|
118
|
+
maxBlockDAGas: config.validateMaxDABlockGas,
|
|
119
|
+
},
|
|
120
|
+
gasFees,
|
|
121
|
+
);
|
|
122
|
+
},
|
|
123
|
+
blockMinFeesProvider,
|
|
118
124
|
},
|
|
119
125
|
telemetry,
|
|
120
126
|
{
|
|
121
127
|
maxPendingTxCount: config.maxPendingTxCount,
|
|
122
128
|
archivedTxLimit: config.archivedTxLimit,
|
|
123
129
|
minTxPoolAgeMs: config.minTxPoolAgeMs,
|
|
130
|
+
dropTransactionsProbability: config.dropTransactionsProbability,
|
|
131
|
+
priceBumpPercentage: config.priceBumpPercentage,
|
|
124
132
|
},
|
|
125
133
|
dateProvider,
|
|
126
134
|
);
|
|
@@ -130,13 +138,16 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
130
138
|
attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
|
|
131
139
|
};
|
|
132
140
|
|
|
133
|
-
const
|
|
141
|
+
const txValidationCache =
|
|
142
|
+
config.txValidationCacheSize > 0 ? new TxValidationCache(config.txValidationCacheSize) : undefined;
|
|
143
|
+
|
|
144
|
+
const p2pService = await createP2PService(
|
|
134
145
|
config,
|
|
135
|
-
clientType,
|
|
136
146
|
archiver,
|
|
137
147
|
proofVerifier,
|
|
138
148
|
worldStateSynchronizer,
|
|
139
149
|
epochCache,
|
|
150
|
+
blockMinFeesProvider,
|
|
140
151
|
store,
|
|
141
152
|
peerStore,
|
|
142
153
|
mempools,
|
|
@@ -144,11 +155,20 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
144
155
|
packageVersion,
|
|
145
156
|
logger.createChild('libp2p_service'),
|
|
146
157
|
telemetry,
|
|
158
|
+
txValidationCache,
|
|
147
159
|
);
|
|
148
160
|
|
|
161
|
+
const txValidatorForTxCollection = createTxValidatorForOnDemandReceivedTxs(
|
|
162
|
+
proofVerifier,
|
|
163
|
+
config,
|
|
164
|
+
/*bindings=*/ undefined,
|
|
165
|
+
txValidationCache,
|
|
166
|
+
);
|
|
149
167
|
const nodeSources = [
|
|
150
|
-
...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
|
|
151
|
-
...(deps.rpcTxProviders ?? []).map(
|
|
168
|
+
...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, txValidatorForTxCollection, config),
|
|
169
|
+
...(deps.rpcTxProviders ?? []).map(
|
|
170
|
+
(node, i) => new NodeRpcTxSource(node, txValidatorForTxCollection, `node-rpc-provider-${i}`),
|
|
171
|
+
),
|
|
152
172
|
...(deps.txCollectionNodeSources ?? []),
|
|
153
173
|
];
|
|
154
174
|
if (nodeSources.length > 0) {
|
|
@@ -160,6 +180,7 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
160
180
|
const fileStoreSources = await createFileStoreTxSources(
|
|
161
181
|
config.txCollectionFileStoreUrls,
|
|
162
182
|
txFileStoreBasePath,
|
|
183
|
+
txValidatorForTxCollection,
|
|
163
184
|
logger.createChild('file-store-tx-source'),
|
|
164
185
|
telemetry,
|
|
165
186
|
);
|
|
@@ -190,7 +211,6 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
190
211
|
);
|
|
191
212
|
|
|
192
213
|
return new P2PClient(
|
|
193
|
-
clientType,
|
|
194
214
|
store,
|
|
195
215
|
archiver,
|
|
196
216
|
mempools,
|
|
@@ -201,23 +221,26 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
201
221
|
config,
|
|
202
222
|
dateProvider,
|
|
203
223
|
telemetry,
|
|
224
|
+
undefined,
|
|
225
|
+
initialBlockHash,
|
|
204
226
|
);
|
|
205
227
|
}
|
|
206
228
|
|
|
207
|
-
async function createP2PService
|
|
229
|
+
async function createP2PService(
|
|
208
230
|
config: P2PConfig & DataStoreConfig,
|
|
209
|
-
clientType: T,
|
|
210
231
|
archiver: L2BlockSource & ContractDataSource,
|
|
211
232
|
proofVerifier: ClientProtocolCircuitVerifier,
|
|
212
233
|
worldStateSynchronizer: WorldStateSynchronizer,
|
|
213
234
|
epochCache: EpochCacheInterface,
|
|
235
|
+
blockMinFeesProvider: BlockMinFeesProvider,
|
|
214
236
|
store: AztecAsyncKVStore,
|
|
215
237
|
peerStore: AztecLMDBStoreV2,
|
|
216
238
|
mempools: MemPools,
|
|
217
|
-
p2pServiceFactory: P2PClientDeps
|
|
239
|
+
p2pServiceFactory: P2PClientDeps['p2pServiceFactory'],
|
|
218
240
|
packageVersion: string,
|
|
219
241
|
logger: Logger,
|
|
220
242
|
telemetry: TelemetryClient,
|
|
243
|
+
txValidationCache?: TxValidationCache,
|
|
221
244
|
) {
|
|
222
245
|
if (!config.p2pEnabled) {
|
|
223
246
|
logger.verbose('P2P is disabled. Using dummy P2P service.');
|
|
@@ -230,7 +253,7 @@ async function createP2PService<T extends P2PClientType>(
|
|
|
230
253
|
const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
|
|
231
254
|
const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey.getValue());
|
|
232
255
|
|
|
233
|
-
const p2pService = await (p2pServiceFactory ?? LibP2PService.new
|
|
256
|
+
const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(config, peerId, {
|
|
234
257
|
packageVersion,
|
|
235
258
|
mempools,
|
|
236
259
|
l2BlockSource: archiver,
|
|
@@ -238,8 +261,10 @@ async function createP2PService<T extends P2PClientType>(
|
|
|
238
261
|
proofVerifier,
|
|
239
262
|
worldStateSynchronizer,
|
|
240
263
|
peerStore,
|
|
264
|
+
blockMinFeesProvider,
|
|
241
265
|
telemetry,
|
|
242
266
|
logger: logger.createChild(`libp2p_service`),
|
|
267
|
+
txValidationCache,
|
|
243
268
|
});
|
|
244
269
|
|
|
245
270
|
return p2pService;
|
package/src/client/interface.ts
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
|
|
3
|
-
import type { ITxProvider,
|
|
4
|
-
import type {
|
|
5
|
-
BlockProposal,
|
|
6
|
-
CheckpointAttestation,
|
|
7
|
-
CheckpointProposal,
|
|
8
|
-
P2PClientType,
|
|
9
|
-
TopicType,
|
|
10
|
-
} from '@aztec/stdlib/p2p';
|
|
3
|
+
import type { ITxProvider, P2PClient } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposal, TopicType } from '@aztec/stdlib/p2p';
|
|
11
5
|
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
12
6
|
|
|
13
7
|
import type { PeerId } from '@libp2p/interface';
|
|
@@ -15,15 +9,12 @@ import type { ENR } from '@nethermindeth/enr';
|
|
|
15
9
|
|
|
16
10
|
import type { P2PConfig } from '../config.js';
|
|
17
11
|
import type { AuthRequest, StatusMessage } from '../services/index.js';
|
|
18
|
-
import type {
|
|
19
|
-
ReqRespSubProtocol,
|
|
20
|
-
ReqRespSubProtocolHandler,
|
|
21
|
-
ReqRespSubProtocolValidators,
|
|
22
|
-
} from '../services/reqresp/interface.js';
|
|
12
|
+
import type { ReqRespSubProtocol, ReqRespSubProtocolHandler } from '../services/reqresp/interface.js';
|
|
23
13
|
import type {
|
|
24
14
|
DuplicateAttestationInfo,
|
|
25
15
|
DuplicateProposalInfo,
|
|
26
16
|
P2PBlockReceivedCallback,
|
|
17
|
+
P2PCheckpointAttestationCallback,
|
|
27
18
|
P2PCheckpointReceivedCallback,
|
|
28
19
|
} from '../services/service.js';
|
|
29
20
|
|
|
@@ -54,7 +45,7 @@ export interface P2PSyncState {
|
|
|
54
45
|
/**
|
|
55
46
|
* Interface of a P2P client.
|
|
56
47
|
**/
|
|
57
|
-
export type P2P
|
|
48
|
+
export type P2P = P2PClient & {
|
|
58
49
|
/**
|
|
59
50
|
* Broadcasts a block proposal to other peers.
|
|
60
51
|
*
|
|
@@ -88,7 +79,15 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
88
79
|
*
|
|
89
80
|
* @param handler - A function taking a received checkpoint proposal and producing attestations
|
|
90
81
|
*/
|
|
91
|
-
|
|
82
|
+
registerValidatorCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Registers a callback that runs for ALL nodes (not just validators) when a checkpoint proposal is received.
|
|
86
|
+
* Used to set the proposed checkpoint number on the archiver so the sequencer can build on top of it.
|
|
87
|
+
*
|
|
88
|
+
* @param handler - A function taking a received checkpoint proposal
|
|
89
|
+
*/
|
|
90
|
+
registerAllNodesCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
|
|
92
91
|
|
|
93
92
|
/**
|
|
94
93
|
* Registers a callback invoked when a duplicate proposal is detected (equivocation).
|
|
@@ -107,6 +106,9 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
107
106
|
*/
|
|
108
107
|
registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
|
|
109
108
|
|
|
109
|
+
/** Registers a callback invoked when a valid checkpoint attestation is accepted into the pool. */
|
|
110
|
+
registerCheckpointAttestationCallback(callback: P2PCheckpointAttestationCallback): void;
|
|
111
|
+
|
|
110
112
|
/**
|
|
111
113
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
112
114
|
* @param tx - The transaction.
|
|
@@ -140,14 +142,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
140
142
|
*/
|
|
141
143
|
hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
|
|
142
144
|
|
|
143
|
-
/**
|
|
144
|
-
* Returns transactions in the transaction pool by hash, requesting from the network if not found.
|
|
145
|
-
* @param txHashes - Hashes of tx to return.
|
|
146
|
-
* @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
|
|
147
|
-
* @returns An array of tx or undefined.
|
|
148
|
-
*/
|
|
149
|
-
getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
|
|
150
|
-
|
|
151
145
|
/**
|
|
152
146
|
* Returns an archived transaction from the transaction pool by its hash.
|
|
153
147
|
* @param txHash - Hash of tx to return.
|
|
@@ -224,17 +218,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
224
218
|
|
|
225
219
|
updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
|
|
226
220
|
|
|
227
|
-
/** Validates a set of txs. */
|
|
228
|
-
|
|
221
|
+
/** Validates a set of txs received in a block proposal. */
|
|
222
|
+
validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
|
|
229
223
|
|
|
230
224
|
/** Clears the db. */
|
|
231
225
|
clear(): Promise<void>;
|
|
232
226
|
|
|
233
|
-
addReqRespSubProtocol(
|
|
234
|
-
subProtocol: ReqRespSubProtocol,
|
|
235
|
-
handler: ReqRespSubProtocolHandler,
|
|
236
|
-
validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol],
|
|
237
|
-
): Promise<void>;
|
|
227
|
+
addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler): Promise<void>;
|
|
238
228
|
|
|
239
229
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
240
230
|
|