@aztec/p2p 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5a9928
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 +130 -3
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -6
- package/dest/client/factory.d.ts +11 -10
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +64 -17
- package/dest/client/interface.d.ts +86 -40
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +67 -64
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +251 -251
- package/dest/config.d.ts +173 -94
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +158 -44
- 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 +9 -16
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +10 -17
- package/dest/errors/tx-pool.error.d.ts +8 -0
- package/dest/errors/tx-pool.error.d.ts.map +1 -0
- package/dest/errors/tx-pool.error.js +9 -0
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +106 -55
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +302 -195
- 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 +274 -115
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +7 -5
- package/dest/mem_pools/index.d.ts +2 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.d.ts +12 -5
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +38 -17
- 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/tx_archive.d.ts +10 -5
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +29 -20
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
- 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 +8 -4
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
- 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 +15 -5
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +3 -2
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +2 -1
- 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 +64 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +6 -5
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +9 -8
- 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 +15 -6
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
- 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 +16 -4
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
- 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 +3 -3
- package/dest/mem_pools/tx_pool_v2/index.d.ts +3 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +2 -1
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +25 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +67 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +62 -16
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +81 -15
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +147 -19
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +26 -3
- 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 +79 -43
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +27 -7
- 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 +94 -32
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +62 -9
- 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 +537 -246
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +38 -15
- 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/proposal_validator/block_proposal_validator.d.ts +12 -5
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +11 -3
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +12 -5
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +23 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +36 -9
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +130 -48
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
- 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/block_header_validator.d.ts +16 -3
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.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/double_spend_validator.d.ts +13 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
- package/dest/msg_validators/tx_validator/factory.d.ts +133 -7
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +261 -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 +104 -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/timestamp_validator.d.ts +20 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
- 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 +68 -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 +13 -2
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +119 -23
- package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
- package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
- package/dest/services/discv5/persisted_enr_store.js +145 -0
- package/dest/services/dummy_service.d.ts +25 -19
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +28 -20
- package/dest/services/encoding.d.ts +24 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +43 -26
- package/dest/services/gossipsub/topic_score_params.d.ts +23 -17
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +36 -24
- package/dest/services/libp2p/instrumentation.d.ts +6 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +21 -0
- package/dest/services/libp2p/libp2p_service.d.ts +71 -60
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +602 -407
- 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 +31 -3
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +127 -26
- package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +102 -13
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +5 -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 +95 -127
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +11 -11
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
- 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 +15 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +11 -0
- package/dest/services/reqresp/interface.d.ts +25 -18
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +23 -19
- 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/bitvector.d.ts +4 -3
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +3 -3
- 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 +31 -28
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +18 -7
- 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 +57 -24
- 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 +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +21 -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 +3 -13
- 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 +85 -219
- package/dest/services/service.d.ts +63 -19
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +11 -14
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +26 -33
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +100 -0
- package/dest/services/tx_collection/index.d.ts +3 -3
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -1
- package/dest/services/tx_collection/instrumentation.js +1 -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 +45 -51
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +296 -68
- package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +28 -31
- package/dest/services/tx_collection/tx_source.d.ts +13 -7
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +29 -7
- package/dest/services/tx_file_store/config.d.ts +1 -3
- package/dest/services/tx_file_store/config.d.ts.map +1 -1
- package/dest/services/tx_file_store/config.js +0 -4
- package/dest/services/tx_file_store/tx_file_store.d.ts +4 -5
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +13 -20
- package/dest/services/tx_provider.d.ts +6 -4
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +12 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
- 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 +56 -6
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +128 -14
- 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 +49 -37
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +142 -50
- 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 +112 -49
- 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 +13 -8
- 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 +17 -17
- package/src/bootstrap/bootstrap.ts +17 -3
- package/src/client/factory.ts +129 -28
- package/src/client/interface.ts +88 -48
- package/src/client/p2p_client.ts +284 -317
- package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
- package/src/config.ts +280 -49
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +13 -19
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +373 -236
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +298 -119
- package/src/mem_pools/attestation_pool/index.ts +3 -3
- package/src/mem_pools/attestation_pool/mocks.ts +14 -8
- package/src/mem_pools/index.ts +1 -1
- package/src/mem_pools/instrumentation.ts +27 -17
- package/src/mem_pools/interface.ts +2 -2
- package/src/mem_pools/tx_pool_v2/README.md +85 -11
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +30 -20
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +6 -4
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +21 -6
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +5 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +67 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +4 -6
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +8 -10
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -10
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
- package/src/mem_pools/tx_pool_v2/index.ts +2 -1
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +96 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +63 -16
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +215 -27
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +91 -43
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +122 -33
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +602 -242
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +15 -7
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +26 -4
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +43 -7
- package/src/msg_validators/proposal_validator/proposal_validator.ts +155 -49
- package/src/msg_validators/tx_validator/README.md +129 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
- 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/block_header_validator.ts +15 -3
- 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/double_spend_validator.ts +11 -6
- package/src/msg_validators/tx_validator/factory.ts +413 -80
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +195 -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/timestamp_validator.ts +23 -18
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
- package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
- package/src/services/data_store.ts +5 -13
- package/src/services/discv5/discV5_service.ts +126 -14
- package/src/services/discv5/persisted_enr_store.ts +158 -0
- package/src/services/dummy_service.ts +38 -46
- package/src/services/encoding.ts +42 -26
- package/src/services/gossipsub/README.md +59 -22
- package/src/services/gossipsub/topic_score_params.ts +58 -31
- package/src/services/libp2p/instrumentation.ts +22 -0
- package/src/services/libp2p/libp2p_service.ts +687 -466
- package/src/services/peer-manager/metrics.ts +7 -0
- package/src/services/peer-manager/peer_manager.ts +140 -25
- package/src/services/peer-manager/peer_scoring.ts +102 -8
- package/src/services/reqresp/README.md +194 -0
- package/src/services/reqresp/batch-tx-requester/README.md +46 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +92 -138
- package/src/services/reqresp/batch-tx-requester/interface.ts +14 -10
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
- 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 +19 -2
- package/src/services/reqresp/interface.ts +45 -46
- package/src/services/reqresp/metrics.ts +0 -1
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +36 -32
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +64 -20
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/tx.ts +23 -3
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
- package/src/services/reqresp/reqresp.ts +100 -263
- package/src/services/service.ts +80 -35
- package/src/services/tx_collection/config.ts +40 -49
- package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
- package/src/services/tx_collection/file_store_tx_source.ts +129 -0
- package/src/services/tx_collection/index.ts +2 -6
- package/src/services/tx_collection/instrumentation.ts +1 -1
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/tx_collection.ts +362 -110
- package/src/services/tx_collection/tx_collection_sink.ts +32 -36
- package/src/services/tx_collection/tx_source.ts +29 -8
- package/src/services/tx_file_store/config.ts +0 -6
- package/src/services/tx_file_store/tx_file_store.ts +15 -25
- package/src/services/tx_provider.ts +15 -9
- package/src/test-helpers/make-test-p2p-clients.ts +7 -6
- package/src/test-helpers/mock-pubsub.ts +152 -14
- 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 +171 -68
- package/src/testbench/p2p_client_testbench_worker.ts +121 -64
- package/src/testbench/worker_client_manager.ts +72 -25
- package/src/util.ts +40 -19
- 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/clock_tolerance.d.ts +0 -21
- package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
- package/dest/msg_validators/clock_tolerance.js +0 -37
- 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 -52
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/fast_tx_collection.js +0 -307
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +0 -49
- package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/slow_tx_collection.js +0 -177
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -336
- 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/clock_tolerance.ts +0 -51
- 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 -354
- package/src/services/tx_collection/proposal_tx_collector.ts +0 -112
- package/src/services/tx_collection/slow_tx_collection.ts +0 -233
|
@@ -3,6 +3,17 @@ export const DEFAULT_INDIVIDUAL_REQUEST_TIMEOUT_MS = 10_000;
|
|
|
3
3
|
export const DEFAULT_OVERALL_REQUEST_TIMEOUT_MS = 10_000; // Not currently used
|
|
4
4
|
export const DEFAULT_REQRESP_DIAL_TIMEOUT_MS = 5_000;
|
|
5
5
|
export const DEFAULT_OPTIMISTIC_NEGOTIATION = false;
|
|
6
|
+
/**
|
|
7
|
+
* Max size of a yamux frame, header included. This is the library default, pinned explicitly when configuring the
|
|
8
|
+
* muxer in the libp2p service so a dependency upgrade cannot silently change it.
|
|
9
|
+
*/ export const YAMUX_MAX_MESSAGE_SIZE_BYTES = 64 * 1024;
|
|
10
|
+
/** Size of a yamux data frame header. */ const YAMUX_HEADER_LENGTH_BYTES = 12;
|
|
11
|
+
/**
|
|
12
|
+
* Max size of a reqresp request payload. A request must fit in a single muxer frame: the responder never reassembles
|
|
13
|
+
* a request from multiple chunks (see `ReqResp.processStream`), and yamux splits writes larger than one frame into
|
|
14
|
+
* multiple frames, each of which arrives as a separate chunk. mplex only splits at 1 MiB, so yamux is the binding
|
|
15
|
+
* constraint.
|
|
16
|
+
*/ export const MAX_REQRESP_REQUEST_SIZE_BYTES = YAMUX_MAX_MESSAGE_SIZE_BYTES - YAMUX_HEADER_LENGTH_BYTES;
|
|
6
17
|
// For use in tests.
|
|
7
18
|
export const DEFAULT_P2P_REQRESP_CONFIG = {
|
|
8
19
|
overallRequestTimeoutMs: DEFAULT_OVERALL_REQUEST_TIMEOUT_MS,
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import { L2Block } from '@aztec/stdlib/block';
|
|
3
1
|
import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
|
|
4
2
|
import type { PeerId } from '@libp2p/interface';
|
|
5
3
|
import type { P2PReqRespConfig } from './config.js';
|
|
@@ -12,7 +10,6 @@ export declare const PING_PROTOCOL = "/aztec/req/ping/1.0.0";
|
|
|
12
10
|
export declare const STATUS_PROTOCOL = "/aztec/req/status/1.0.0";
|
|
13
11
|
export declare const GOODBYE_PROTOCOL = "/aztec/req/goodbye/1.0.0";
|
|
14
12
|
export declare const TX_REQ_PROTOCOL = "/aztec/req/tx/1.0.0";
|
|
15
|
-
export declare const BLOCK_REQ_PROTOCOL = "/aztec/req/block/1.0.0";
|
|
16
13
|
export declare const AUTH_PROTOCOL = "/aztec/req/auth/1.0.0";
|
|
17
14
|
export declare const BLOCK_TXS_REQ_PROTOCOL = "/aztec/req/block_txs/1.0.0";
|
|
18
15
|
export declare enum ReqRespSubProtocol {
|
|
@@ -20,7 +17,6 @@ export declare enum ReqRespSubProtocol {
|
|
|
20
17
|
STATUS = "/aztec/req/status/1.0.0",
|
|
21
18
|
GOODBYE = "/aztec/req/goodbye/1.0.0",
|
|
22
19
|
TX = "/aztec/req/tx/1.0.0",
|
|
23
|
-
BLOCK = "/aztec/req/block/1.0.0",
|
|
24
20
|
AUTH = "/aztec/req/auth/1.0.0",
|
|
25
21
|
BLOCK_TXS = "/aztec/req/block_txs/1.0.0"
|
|
26
22
|
}
|
|
@@ -67,16 +63,21 @@ export interface ProtocolRateLimitQuota {
|
|
|
67
63
|
*/
|
|
68
64
|
globalLimit: RateLimitQuota;
|
|
69
65
|
}
|
|
70
|
-
export declare const noopValidator: () => Promise<boolean>;
|
|
71
66
|
/**
|
|
72
67
|
* A type mapping from supprotocol to it's handling function
|
|
73
68
|
*/
|
|
74
69
|
export type ReqRespSubProtocolHandlers = Record<ReqRespSubProtocol, ReqRespSubProtocolHandler>;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Protocols that are always allowed without authentication, even when p2pAllowOnlyValidators is enabled.
|
|
72
|
+
* These are needed for the handshake and connection management flow.
|
|
73
|
+
* All other protocols require the remote peer to be authenticated.
|
|
74
|
+
*/
|
|
75
|
+
export declare const UNAUTHENTICATED_ALLOWED_PROTOCOLS: ReadonlySet<ReqRespSubProtocol>;
|
|
76
|
+
/**
|
|
77
|
+
* Callback that checks whether a peer should be rejected from req/resp data protocols.
|
|
78
|
+
* Returns true if the peer should be rejected (i.e. p2pAllowOnlyValidators is on and peer is unauthenticated).
|
|
79
|
+
*/
|
|
80
|
+
export type ShouldRejectPeer = (peerId: string) => boolean;
|
|
80
81
|
export declare class ValidationError extends Error {
|
|
81
82
|
constructor(message: string);
|
|
82
83
|
}
|
|
@@ -141,10 +142,6 @@ export declare const subProtocolMap: {
|
|
|
141
142
|
request: typeof RequestableBuffer;
|
|
142
143
|
response: typeof RequestableBuffer;
|
|
143
144
|
};
|
|
144
|
-
"/aztec/req/block/1.0.0": {
|
|
145
|
-
request: typeof Fr;
|
|
146
|
-
response: typeof L2Block;
|
|
147
|
-
};
|
|
148
145
|
"/aztec/req/auth/1.0.0": {
|
|
149
146
|
request: typeof AuthRequest;
|
|
150
147
|
response: typeof AuthResponse;
|
|
@@ -154,14 +151,24 @@ export declare const subProtocolMap: {
|
|
|
154
151
|
response: typeof BlockTxsResponse;
|
|
155
152
|
};
|
|
156
153
|
};
|
|
154
|
+
/**
|
|
155
|
+
* Type for a function that calculates the expected response size in KB for a given request.
|
|
156
|
+
*/
|
|
157
|
+
export type ExpectedResponseSizeCalculator = (requestBuffer: Buffer) => number;
|
|
158
|
+
/**
|
|
159
|
+
* Map of sub-protocols to their expected response size calculators.
|
|
160
|
+
* These are used to validate that responses don't exceed expected sizes based on request parameters.
|
|
161
|
+
*/
|
|
162
|
+
export declare const subProtocolSizeCalculators: Record<ReqRespSubProtocol, ExpectedResponseSizeCalculator>;
|
|
157
163
|
export interface ReqRespInterface {
|
|
158
|
-
start(subProtocolHandlers: Partial<ReqRespSubProtocolHandlers
|
|
159
|
-
addSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler
|
|
164
|
+
start(subProtocolHandlers: Partial<ReqRespSubProtocolHandlers>): Promise<void>;
|
|
165
|
+
addSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler): Promise<void>;
|
|
160
166
|
stop(): Promise<void>;
|
|
161
|
-
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(subProtocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], pinnedPeer: PeerId | undefined, timeoutMs?: number, maxPeers?: number, maxRetryAttempts?: number): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]>;
|
|
162
167
|
sendRequestToPeer(peerId: PeerId, subProtocol: ReqRespSubProtocol, payload: Buffer, dialTimeout?: number): Promise<ReqRespResponse>;
|
|
163
168
|
updateConfig(config: Partial<P2PReqRespConfig>): void;
|
|
169
|
+
/** Sets the callback used to reject unauthenticated peers on gated req/resp protocols. */
|
|
170
|
+
setShouldRejectPeer(checker: ShouldRejectPeer): void;
|
|
164
171
|
getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'>;
|
|
165
172
|
}
|
|
166
173
|
export {};
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFFakIsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBS2pELGVBQU8sTUFBTSxhQUFhLDBCQUEwQixDQUFDO0FBQ3JELGVBQU8sTUFBTSxlQUFlLDRCQUE0QixDQUFDO0FBQ3pELGVBQU8sTUFBTSxnQkFBZ0IsNkJBQTZCLENBQUM7QUFDM0QsZUFBTyxNQUFNLGVBQWUsd0JBQXdCLENBQUM7QUFDckQsZUFBTyxNQUFNLGFBQWEsMEJBQTBCLENBQUM7QUFDckQsZUFBTyxNQUFNLHNCQUFzQiwrQkFBK0IsQ0FBQztBQUVuRSxvQkFBWSxrQkFBa0I7SUFDNUIsSUFBSSwwQkFBZ0I7SUFDcEIsTUFBTSw0QkFBa0I7SUFDeEIsT0FBTyw2QkFBbUI7SUFDMUIsRUFBRSx3QkFBa0I7SUFDcEIsSUFBSSwwQkFBZ0I7SUFDcEIsU0FBUywrQkFBeUI7Q0FDbkM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE1BQU0seUJBQXlCLEdB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import { L2Block } from '@aztec/stdlib/block';
|
|
3
1
|
import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
|
|
4
2
|
import { AuthRequest, AuthResponse } from './protocols/auth.js';
|
|
5
|
-
import { BlockTxsRequest, BlockTxsResponse } from './protocols/block_txs/block_txs_reqresp.js';
|
|
3
|
+
import { BlockTxsRequest, BlockTxsResponse, calculateBlockTxsResponseSize } from './protocols/block_txs/block_txs_reqresp.js';
|
|
6
4
|
import { StatusMessage } from './protocols/status.js';
|
|
5
|
+
import { calculateTxResponseSize } from './protocols/tx.js';
|
|
7
6
|
/*
|
|
8
7
|
* Request Response Sub Protocols
|
|
9
8
|
*/ export const PING_PROTOCOL = '/aztec/req/ping/1.0.0';
|
|
10
9
|
export const STATUS_PROTOCOL = '/aztec/req/status/1.0.0';
|
|
11
10
|
export const GOODBYE_PROTOCOL = '/aztec/req/goodbye/1.0.0';
|
|
12
11
|
export const TX_REQ_PROTOCOL = '/aztec/req/tx/1.0.0';
|
|
13
|
-
export const BLOCK_REQ_PROTOCOL = '/aztec/req/block/1.0.0';
|
|
14
12
|
export const AUTH_PROTOCOL = '/aztec/req/auth/1.0.0';
|
|
15
13
|
export const BLOCK_TXS_REQ_PROTOCOL = '/aztec/req/block_txs/1.0.0';
|
|
16
14
|
export var ReqRespSubProtocol = /*#__PURE__*/ function(ReqRespSubProtocol) {
|
|
@@ -18,21 +16,20 @@ export var ReqRespSubProtocol = /*#__PURE__*/ function(ReqRespSubProtocol) {
|
|
|
18
16
|
ReqRespSubProtocol[ReqRespSubProtocol["STATUS"] = STATUS_PROTOCOL] = "STATUS";
|
|
19
17
|
ReqRespSubProtocol[ReqRespSubProtocol["GOODBYE"] = GOODBYE_PROTOCOL] = "GOODBYE";
|
|
20
18
|
ReqRespSubProtocol[ReqRespSubProtocol["TX"] = TX_REQ_PROTOCOL] = "TX";
|
|
21
|
-
ReqRespSubProtocol[ReqRespSubProtocol["BLOCK"] = BLOCK_REQ_PROTOCOL] = "BLOCK";
|
|
22
19
|
ReqRespSubProtocol[ReqRespSubProtocol["AUTH"] = AUTH_PROTOCOL] = "AUTH";
|
|
23
20
|
ReqRespSubProtocol[ReqRespSubProtocol["BLOCK_TXS"] = BLOCK_TXS_REQ_PROTOCOL] = "BLOCK_TXS";
|
|
24
21
|
return ReqRespSubProtocol;
|
|
25
22
|
}({});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Protocols that are always allowed without authentication, even when p2pAllowOnlyValidators is enabled.
|
|
25
|
+
* These are needed for the handshake and connection management flow.
|
|
26
|
+
* All other protocols require the remote peer to be authenticated.
|
|
27
|
+
*/ export const UNAUTHENTICATED_ALLOWED_PROTOCOLS = new Set([
|
|
28
|
+
ReqRespSubProtocol.PING,
|
|
29
|
+
ReqRespSubProtocol.STATUS,
|
|
30
|
+
ReqRespSubProtocol.AUTH,
|
|
31
|
+
ReqRespSubProtocol.GOODBYE
|
|
32
|
+
]);
|
|
36
33
|
/*
|
|
37
34
|
* Helper class to sub-protocol validation error*/ export class ValidationError extends Error {
|
|
38
35
|
constructor(message){
|
|
@@ -88,10 +85,6 @@ export const DEFAULT_SUB_PROTOCOL_VALIDATORS = {
|
|
|
88
85
|
request: RequestableBuffer,
|
|
89
86
|
response: RequestableBuffer
|
|
90
87
|
},
|
|
91
|
-
[ReqRespSubProtocol.BLOCK]: {
|
|
92
|
-
request: Fr,
|
|
93
|
-
response: L2Block
|
|
94
|
-
},
|
|
95
88
|
[ReqRespSubProtocol.AUTH]: {
|
|
96
89
|
request: AuthRequest,
|
|
97
90
|
response: AuthResponse
|
|
@@ -101,3 +94,14 @@ export const DEFAULT_SUB_PROTOCOL_VALIDATORS = {
|
|
|
101
94
|
response: BlockTxsResponse
|
|
102
95
|
}
|
|
103
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* Map of sub-protocols to their expected response size calculators.
|
|
99
|
+
* These are used to validate that responses don't exceed expected sizes based on request parameters.
|
|
100
|
+
*/ export const subProtocolSizeCalculators = {
|
|
101
|
+
[ReqRespSubProtocol.TX]: calculateTxResponseSize,
|
|
102
|
+
[ReqRespSubProtocol.BLOCK_TXS]: calculateBlockTxsResponseSize,
|
|
103
|
+
[ReqRespSubProtocol.STATUS]: ()=>1,
|
|
104
|
+
[ReqRespSubProtocol.PING]: ()=>1,
|
|
105
|
+
[ReqRespSubProtocol.AUTH]: ()=>1,
|
|
106
|
+
[ReqRespSubProtocol.GOODBYE]: ()=>1
|
|
107
|
+
};
|
|
@@ -13,4 +13,4 @@ export declare class ReqRespMetrics {
|
|
|
13
13
|
recordRequestError(protocol: ReqRespSubProtocol): void;
|
|
14
14
|
recordResponseError(protocol: ReqRespSubProtocol): void;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBRXRGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELHFCQUFhLGNBQWM7SUFVdkIsUUFBUSxDQUFDLGVBQWUsRUFBRSxlQUFlO0lBVDNDLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQWdCO0lBQzdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQWdCO0lBRWpELE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQWdCO0lBQ3ZELE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQWdCO0lBRXRELFlBQ1csZUFBZSxFQUFFLGVBQWUsRUFDekMsSUFBSSxTQUFZLEVBaUNqQjtJQUVNLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsUUFFcEQ7SUFFTSxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLFFBRXhEO0lBRU0sa0JBQWtCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixRQUVyRDtJQUVNLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsUUFFdEQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,qBAAa,cAAc;IAUvB,QAAQ,CAAC,eAAe,EAAE,eAAe;IAT3C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IAEjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IAEtD,YACW,eAAe,EAAE,eAAe,EACzC,IAAI,SAAY,
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,qBAAa,cAAc;IAUvB,QAAQ,CAAC,eAAe,EAAE,eAAe;IAT3C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IAEjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IAEtD,YACW,eAAe,EAAE,eAAe,EACzC,IAAI,SAAY,EAiCjB;IAEM,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,QAEpD;IAEM,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,QAExD;IAEM,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,QAErD;IAEM,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,QAEtD;CACF"}
|
|
@@ -10,8 +10,9 @@ export declare class BitVector {
|
|
|
10
10
|
getLength(): number;
|
|
11
11
|
isSet(index: number): boolean;
|
|
12
12
|
/**
|
|
13
|
-
* Returns all indices which are set to true
|
|
14
|
-
*
|
|
13
|
+
* Returns all indices which are set to true.
|
|
14
|
+
* Ordered by index. No duplicates.
|
|
15
|
+
*/
|
|
15
16
|
getTrueIndices(): number[];
|
|
16
17
|
/**
|
|
17
18
|
* Returns true if no indices are set to true
|
|
@@ -31,4 +32,4 @@ export declare class BitVector {
|
|
|
31
32
|
static fromBuffer(buffer: Buffer | BufferReader): BitVector;
|
|
32
33
|
static byteLength(length: number): number;
|
|
33
34
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0dmVjdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9wcm90b2NvbHMvYmxvY2tfdHhzL2JpdHZlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBSTlFOztHQUVHO0FBQ0gscUJBQWEsU0FBUztJQUNwQixPQUFPLENBQUMsTUFBTSxDQUFTO0lBQ3ZCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFFdkIsWUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBR3pDO0lBU0QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBbUJ4RDtJQUVELFNBQVMsSUFBSSxNQUFNLENBRWxCO0lBU0QsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUU1QjtJQUVEOzs7T0FHRztJQUNILGNBQWMsSUFBSSxNQUFNLEVBQUUsQ0FFekI7SUFFRDs7U0FFSztJQUNMLE9BQU8sSUFBSSxPQUFPLENBRWpCO0lBRUQ7Ozs7U0FJSztJQUNMLFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQ7Ozs7U0FJSztJQUNMLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsU0FBUyxDQWExRDtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sVUFFL0I7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitvector.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/bitvector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAGzC;IASD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAmBxD;IAED,SAAS,IAAI,MAAM,CAElB;IASD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5B;IAED
|
|
1
|
+
{"version":3,"file":"bitvector.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/bitvector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAGzC;IASD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAmBxD;IAED,SAAS,IAAI,MAAM,CAElB;IASD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5B;IAED;;;OAGG;IACH,cAAc,IAAI,MAAM,EAAE,CAEzB;IAED;;SAEK;IACL,OAAO,IAAI,OAAO,CAEjB;IAED;;;;SAIK;IACL,QAAQ,IAAI,MAAM,CAEjB;IAED;;;;SAIK;IACL,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAa1D;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,UAE/B;CACF"}
|
|
@@ -44,8 +44,9 @@ import { MAX_TXS_PER_BLOCK } from '../../constants.js';
|
|
|
44
44
|
return index >= 0 && index < this.length && !!(this.buffer[Math.floor(index / 8)] & 1 << index % 8);
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
|
-
* Returns all indices which are set to true
|
|
48
|
-
*
|
|
47
|
+
* Returns all indices which are set to true.
|
|
48
|
+
* Ordered by index. No duplicates.
|
|
49
|
+
*/ getTrueIndices() {
|
|
49
50
|
return Array.from({
|
|
50
51
|
length: this.length
|
|
51
52
|
}, (_, i)=>i).filter((i)=>this.isSet(i));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
2
2
|
import type { AttestationPoolApi } from '../../../../mem_pools/attestation_pool/attestation_pool.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TxPoolV2 } from '../../../../mem_pools/tx_pool_v2/interfaces.js';
|
|
4
4
|
import type { ReqRespSubProtocolHandler } from '../../interface.js';
|
|
5
5
|
/**
|
|
6
6
|
* Handler for block txs requests
|
|
@@ -9,5 +9,5 @@ import type { ReqRespSubProtocolHandler } from '../../interface.js';
|
|
|
9
9
|
* @param txPool - the tx pool to fetch transactions from
|
|
10
10
|
* @returns the BlockTxs request handler
|
|
11
11
|
*/
|
|
12
|
-
export declare function reqRespBlockTxsHandler(attestationPool: AttestationPoolApi, archiver: L2BlockSource, txPool:
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
export declare function reqRespBlockTxsHandler(attestationPool: AttestationPoolApi, archiver: L2BlockSource, txPool: TxPoolV2): ReqRespSubProtocolHandler;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX2hhbmRsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLekQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNyRyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBS3BFOzs7Ozs7R0FNRztBQUNILHdCQUFnQixzQkFBc0IsQ0FDcEMsZUFBZSxFQUFFLGtCQUFrQixFQUNuQyxRQUFRLEVBQUUsYUFBYSxFQUN2QixNQUFNLEVBQUUsUUFBUSxHQUNmLHlCQUF5QixDQXdEM0IifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_txs_handler.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"block_txs_handler.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAKpE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,kBAAkB,EACnC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,QAAQ,GACf,yBAAyB,CAwD3B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TxArray } from '@aztec/stdlib/tx';
|
|
1
|
+
import { TxArray, TxHash } from '@aztec/stdlib/tx';
|
|
3
2
|
import { ReqRespStatus, ReqRespStatusError } from '../../status.js';
|
|
4
3
|
import { BitVector } from './bitvector.js';
|
|
5
4
|
import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
|
|
@@ -24,34 +23,38 @@ import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
|
|
|
24
23
|
cause: err
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
|
-
//
|
|
28
|
-
let
|
|
29
|
-
if
|
|
30
|
-
|
|
26
|
+
// In principle assume we haven't found the block. This is how that is signaled to the requester.
|
|
27
|
+
let availableIndicesBitVector = BitVector.init(0, []);
|
|
28
|
+
// We always try to service the explicitly requested tx hashes, even if we don't have the block.
|
|
29
|
+
const requestedTxsHashes = new Set(request.txHashes.map((h)=>h.toString()));
|
|
30
|
+
// First try attestation pool, then fall back to archiver.
|
|
31
|
+
let blockTxHashes = (await attestationPool.getBlockProposalByArchive(request.archiveRoot.toString()))?.txHashes;
|
|
32
|
+
if (!blockTxHashes) {
|
|
33
|
+
blockTxHashes = (await archiver.getBlock({
|
|
34
|
+
archive: request.archiveRoot
|
|
35
|
+
}))?.body.txEffects.map((effect)=>effect.txHash);
|
|
31
36
|
}
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
-
|
|
37
|
+
// If we have found the block,
|
|
38
|
+
if (blockTxHashes) {
|
|
39
|
+
// First confirm that we are talking about the same block (up to tx hashes and order).
|
|
40
|
+
// If we are not, then we can't:
|
|
41
|
+
// 1. Use the indices from the request to get the txs from the pool.
|
|
42
|
+
// 2. Respond to the peer with the txs we have using indices.
|
|
43
|
+
const blockTxHashesCommitment = BlockTxsRequest.computeBlockTxHashesCommitment(blockTxHashes);
|
|
44
|
+
if (blockTxHashesCommitment.equals(request.blockTxHashesCommitment)) {
|
|
45
|
+
// In that case, we can also get the available indices from the pool.
|
|
46
|
+
const txsAvailableInPool = await txPool.hasTxs(blockTxHashes);
|
|
47
|
+
// Map txs in the pool to their indices in the block
|
|
48
|
+
const availableIndices = txsAvailableInPool.map((hasTx, idx)=>hasTx ? idx : -1).filter((idx)=>idx !== -1);
|
|
49
|
+
availableIndicesBitVector = BitVector.init(blockTxHashes.length, availableIndices);
|
|
50
|
+
// We add the requested tx hashes (by index) to the list of tx hashes we are sending to the peer.
|
|
51
|
+
const requestedIndices = new Set(request.txIndices.getTrueIndices());
|
|
52
|
+
blockTxHashes.filter((_, idx)=>requestedIndices.has(idx)).forEach((h)=>requestedTxsHashes.add(h.toString()));
|
|
53
|
+
}
|
|
35
54
|
}
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter((tx)=>!!tx);
|
|
40
|
-
const response = new BlockTxsResponse(Fr.zero(), new TxArray(...responseTxs), BitVector.init(0, []));
|
|
41
|
-
return response.toBuffer();
|
|
42
|
-
}
|
|
43
|
-
// If we don't have this block and peer has not sent requested tx hashes
|
|
44
|
-
if (!txHashes) {
|
|
45
|
-
throw new ReqRespStatusError(ReqRespStatus.NOT_FOUND);
|
|
46
|
-
}
|
|
47
|
-
const txsAvailableInPool = await txPool.hasTxs(txHashes);
|
|
48
|
-
// Map txs in the pool to their indices in the block
|
|
49
|
-
const availableIndices = txsAvailableInPool.map((hasTx, idx)=>hasTx ? idx : -1).filter((idx)=>idx !== -1);
|
|
50
|
-
const responseBitVector = BitVector.init(txHashes.length, availableIndices);
|
|
51
|
-
const requestedIndices = new Set(request.txIndices.getTrueIndices());
|
|
52
|
-
requestedTxsHashes = txHashes.filter((_, idx)=>requestedIndices.has(idx));
|
|
53
|
-
const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter((tx)=>!!tx);
|
|
54
|
-
const response = new BlockTxsResponse(request.archiveRoot, new TxArray(...responseTxs), responseBitVector);
|
|
55
|
+
// Finally, get the txs from the pool and create the response.
|
|
56
|
+
const responseTxs = (await txPool.getTxsByHash(Array.from(requestedTxsHashes).map((h)=>TxHash.fromString(h)))).filter((tx)=>!!tx);
|
|
57
|
+
const response = new BlockTxsResponse(new TxArray(...responseTxs), availableIndicesBitVector);
|
|
55
58
|
return response.toBuffer();
|
|
56
59
|
};
|
|
57
60
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
1
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
4
|
import { TxArray, type TxHash, TxHashArray } from '@aztec/stdlib/tx';
|
|
@@ -12,9 +13,11 @@ export interface BlockTxsSource {
|
|
|
12
13
|
*/
|
|
13
14
|
export declare class BlockTxsRequest {
|
|
14
15
|
readonly archiveRoot: Fr;
|
|
15
|
-
readonly txHashes: TxHashArray;
|
|
16
16
|
readonly txIndices: BitVector;
|
|
17
|
-
|
|
17
|
+
readonly blockTxHashesCommitment: Buffer32;
|
|
18
|
+
readonly txHashes: TxHashArray;
|
|
19
|
+
constructor(archiveRoot: Fr, txIndices: BitVector, blockTxHashesCommitment: Buffer32, txHashes: TxHashArray);
|
|
20
|
+
static computeBlockTxHashesCommitment(blockTxHashes: TxHash[]): Buffer32;
|
|
18
21
|
/**
|
|
19
22
|
* Creates new BlockTxsRequest given a block txs source and missing tx hashes.
|
|
20
23
|
*
|
|
@@ -42,10 +45,14 @@ export declare class BlockTxsRequest {
|
|
|
42
45
|
* Response message containing requested transactions from a block
|
|
43
46
|
*/
|
|
44
47
|
export declare class BlockTxsResponse {
|
|
45
|
-
readonly archiveRoot: Fr;
|
|
46
48
|
readonly txs: TxArray;
|
|
47
49
|
readonly txIndices: BitVector;
|
|
48
|
-
constructor(
|
|
50
|
+
constructor(txs: TxArray, txIndices: BitVector);
|
|
51
|
+
/**
|
|
52
|
+
* Whether the response indicates that the peer has the block.
|
|
53
|
+
* @returns True if the peer has the block, false otherwise.
|
|
54
|
+
*/
|
|
55
|
+
peerHasBlock(): boolean;
|
|
49
56
|
/**
|
|
50
57
|
* Deserializes the BlockTxResponse object from a Buffer
|
|
51
58
|
* @param buffer - Buffer or BufferReader object to deserialize
|
|
@@ -54,11 +61,15 @@ export declare class BlockTxsResponse {
|
|
|
54
61
|
static fromBuffer(buffer: Buffer | BufferReader): BlockTxsResponse;
|
|
55
62
|
/**
|
|
56
63
|
* Serializes the BlockTxResponse object into a Buffer
|
|
57
|
-
* @dev: In current implementation, txIndices is serialized as Buffer of unknown length,
|
|
58
|
-
* thus we serialize it last
|
|
59
64
|
* @returns Buffer representation of the BlockTxResponse object
|
|
60
65
|
*/
|
|
61
66
|
toBuffer(): Buffer;
|
|
62
67
|
static empty(): BlockTxsResponse;
|
|
63
68
|
}
|
|
64
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Calculate the expected response size for a BLOCK_TXS request.
|
|
71
|
+
* @param requestBuffer - The serialized request buffer containing BlockTxsRequest
|
|
72
|
+
* @returns Expected response size in KB
|
|
73
|
+
*/
|
|
74
|
+
export declare function calculateBlockTxsResponseSize(requestBuffer: Buffer): number;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX3JlcXJlc3AuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX3JlcXJlc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLHdGQUF3RjtBQUN4RixNQUFNLFdBQVcsY0FBYztJQUM3QixRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbkIsT0FBTyxFQUFFLEVBQUUsQ0FBQztDQUNiO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxlQUFlO0lBR3hCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRTtJQUl4QixRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVM7SUFLN0IsUUFBUSxDQUFDLHVCQUF1QixFQUFFLFFBQVE7SUFJMUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXO0lBZmhDLFlBRVcsV0FBVyxFQUFFLEVBQUUsRUFJZixTQUFTLEVBQUUsU0FBUyxFQUtwQix1QkFBdUIsRUFBRSxRQUFRLEVBSWpDLFFBQVEsRUFBRSxXQUFXLEVBQzVCO0lBRUosTUFBTSxDQUFDLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBRXZFO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsTUFBTSxDQUFDLDBCQUEwQixDQUMvQixjQUFjLEVBQUUsY0FBYyxFQUM5QixlQUFlLEVBQUUsTUFBTSxFQUFFLEVBQ3pCLG1CQUFtQixVQUFRLEdBQzFCLGVBQWUsR0FBRyxTQUFTLENBcUI3QjtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGVBQWUsQ0FRaEU7SUFFRDs7O09BR0c7SUFDSCxRQUFRLElBQUksTUFBTSxDQU9qQjtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxnQkFBZ0I7SUFHekIsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPO0lBS3JCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUztJQVAvQixZQUVXLEdBQUcsRUFBRSxPQUFPLEVBS1osU0FBUyxFQUFFLFNBQVMsRUFDM0I7SUFFSjs7O09BR0c7SUFDSCxZQUFZLElBQUksT0FBTyxDQUV0QjtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGdCQUFnQixDQU1qRTtJQUVEOzs7T0FHRztJQUNILFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FFL0I7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsNkJBQTZCLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBUzNFIn0=
|
|
@@ -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;
|
|
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,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,wFAAwF;AACxF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,EAAE,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,eAAe;IAGxB,QAAQ,CAAC,WAAW,EAAE,EAAE;IAIxB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAK7B,QAAQ,CAAC,uBAAuB,EAAE,QAAQ;IAI1C,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAfhC,YAEW,WAAW,EAAE,EAAE,EAIf,SAAS,EAAE,SAAS,EAKpB,uBAAuB,EAAE,QAAQ,EAIjC,QAAQ,EAAE,WAAW,EAC5B;IAEJ,MAAM,CAAC,8BAA8B,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,QAAQ,CAEvE;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,0BAA0B,CAC/B,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,MAAM,EAAE,EACzB,mBAAmB,UAAQ,GAC1B,eAAe,GAAG,SAAS,CAqB7B;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAQhE;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAOjB;CACF;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAGzB,QAAQ,CAAC,GAAG,EAAE,OAAO;IAKrB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,YAEW,GAAG,EAAE,OAAO,EAKZ,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;OAGG;IACH,YAAY,IAAI,OAAO,CAEtB;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAMjE;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;CACF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAS3E"}
|
|
@@ -1,23 +1,36 @@
|
|
|
1
|
+
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
1
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
|
+
import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
|
|
3
5
|
import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
|
|
6
|
+
import { createHash } from 'node:crypto';
|
|
4
7
|
import { BitVector } from './bitvector.js';
|
|
5
8
|
/**
|
|
6
9
|
* Request message for requesting specific transactions from a block
|
|
7
10
|
*/ export class BlockTxsRequest {
|
|
8
11
|
archiveRoot;
|
|
9
|
-
txHashes;
|
|
10
12
|
txIndices;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
txIndices
|
|
13
|
+
blockTxHashesCommitment;
|
|
14
|
+
txHashes;
|
|
15
|
+
constructor(// Archive root after the proposed block is applied (proposal identifier).
|
|
16
|
+
archiveRoot, // BitVector indicating which txs from the block (proposal) we are requesting
|
|
17
|
+
// 1 means we want the tx, 0 means we don't.
|
|
18
|
+
// This will only return txs in the response if the peer has the block (proposal).
|
|
19
|
+
txIndices, // If we ask for txs via indices, the responder needs to be sure that we are talking about the same block.
|
|
20
|
+
// Unfortunately, the archive root is not enough, since it's possible for the peer to have seen a different
|
|
21
|
+
// block (proposal) with the same archive root but different txs. We include a commitment to the tx hashes
|
|
22
|
+
// so that the responder can verify this (for its own sake, and not be penalized).
|
|
23
|
+
blockTxHashesCommitment, // Explicit hashes of txs we are requesting (optional). The peer will try to serve these txs even if
|
|
24
|
+
// it doesn't have the block. If the requester lists txs from the block here, this serves as a fallback.
|
|
25
|
+
// Note: if a hash here is NOT part of the block (proposal), the peer can decide to return it or not.
|
|
26
|
+
txHashes){
|
|
18
27
|
this.archiveRoot = archiveRoot;
|
|
19
|
-
this.txHashes = txHashes;
|
|
20
28
|
this.txIndices = txIndices;
|
|
29
|
+
this.blockTxHashesCommitment = blockTxHashesCommitment;
|
|
30
|
+
this.txHashes = txHashes;
|
|
31
|
+
}
|
|
32
|
+
static computeBlockTxHashesCommitment(blockTxHashes) {
|
|
33
|
+
return Buffer32.fromBuffer(createHash('sha256').update(serializeToBuffer(blockTxHashes)).digest());
|
|
21
34
|
}
|
|
22
35
|
/**
|
|
23
36
|
* Creates new BlockTxsRequest given a block txs source and missing tx hashes.
|
|
@@ -40,7 +53,8 @@ import { BitVector } from './bitvector.js';
|
|
|
40
53
|
const missingIndices = blockTxsSource.txHashes.map((hash, idx)=>missingHashesSet.has(hash.toString()) ? idx : -1).filter((i)=>i != -1);
|
|
41
54
|
const requestBitVector = BitVector.init(blockTxsSource.txHashes.length, missingIndices);
|
|
42
55
|
const hashes = includeFullTxHashes ? new TxHashArray(...missingTxHashes) : new TxHashArray();
|
|
43
|
-
|
|
56
|
+
const commitment = BlockTxsRequest.computeBlockTxHashesCommitment(blockTxsSource.txHashes);
|
|
57
|
+
return new BlockTxsRequest(blockTxsSource.archive, requestBitVector, commitment, hashes);
|
|
44
58
|
}
|
|
45
59
|
/**
|
|
46
60
|
* Deserializes the BlockTxRequest object from a Buffer
|
|
@@ -49,9 +63,10 @@ import { BitVector } from './bitvector.js';
|
|
|
49
63
|
*/ static fromBuffer(buffer) {
|
|
50
64
|
const reader = BufferReader.asReader(buffer);
|
|
51
65
|
const archiveRoot = Fr.fromBuffer(reader);
|
|
52
|
-
const txHashes = TxHashArray.fromBuffer(reader);
|
|
53
66
|
const txIndices = BitVector.fromBuffer(reader);
|
|
54
|
-
|
|
67
|
+
const commitment = Buffer32.fromBuffer(reader);
|
|
68
|
+
const txHashes = TxHashArray.fromBuffer(reader);
|
|
69
|
+
return new BlockTxsRequest(archiveRoot, txIndices, commitment, txHashes);
|
|
55
70
|
}
|
|
56
71
|
/**
|
|
57
72
|
* Serializes the BlockTxRequest object into a Buffer
|
|
@@ -59,48 +74,66 @@ import { BitVector } from './bitvector.js';
|
|
|
59
74
|
*/ toBuffer() {
|
|
60
75
|
return serializeToBuffer([
|
|
61
76
|
this.archiveRoot,
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
77
|
+
this.txIndices.toBuffer(),
|
|
78
|
+
this.blockTxHashesCommitment.toBuffer(),
|
|
79
|
+
this.txHashes.toBuffer()
|
|
64
80
|
]);
|
|
65
81
|
}
|
|
66
82
|
}
|
|
67
83
|
/**
|
|
68
84
|
* Response message containing requested transactions from a block
|
|
69
85
|
*/ export class BlockTxsResponse {
|
|
70
|
-
archiveRoot;
|
|
71
86
|
txs;
|
|
72
87
|
txIndices;
|
|
73
|
-
constructor(
|
|
74
|
-
//
|
|
88
|
+
constructor(// List of transactions we requested and peer has.
|
|
89
|
+
txs, // BitVector indicating which txs from the proposal are available at the peer
|
|
90
|
+
// 1 means the tx is available, 0 means it is not.
|
|
91
|
+
// The vector should be empty to signal that the peer doesn't have the block.
|
|
92
|
+
// Otherwise, it should be a subset of the indices of the block tx hashes.
|
|
75
93
|
txIndices){
|
|
76
|
-
this.archiveRoot = archiveRoot;
|
|
77
94
|
this.txs = txs;
|
|
78
95
|
this.txIndices = txIndices;
|
|
79
96
|
}
|
|
80
97
|
/**
|
|
98
|
+
* Whether the response indicates that the peer has the block.
|
|
99
|
+
* @returns True if the peer has the block, false otherwise.
|
|
100
|
+
*/ peerHasBlock() {
|
|
101
|
+
return this.txIndices.getLength() > 0;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
81
104
|
* Deserializes the BlockTxResponse object from a Buffer
|
|
82
105
|
* @param buffer - Buffer or BufferReader object to deserialize
|
|
83
106
|
* @returns An instance of BlockTxResponse
|
|
84
107
|
*/ static fromBuffer(buffer) {
|
|
85
108
|
const reader = BufferReader.asReader(buffer);
|
|
86
|
-
const archiveRoot = Fr.fromBuffer(reader);
|
|
87
109
|
const txs = TxArray.fromBuffer(reader);
|
|
88
110
|
const txIndices = BitVector.fromBuffer(reader);
|
|
89
|
-
return new BlockTxsResponse(
|
|
111
|
+
return new BlockTxsResponse(txs, txIndices);
|
|
90
112
|
}
|
|
91
113
|
/**
|
|
92
114
|
* Serializes the BlockTxResponse object into a Buffer
|
|
93
|
-
* @dev: In current implementation, txIndices is serialized as Buffer of unknown length,
|
|
94
|
-
* thus we serialize it last
|
|
95
115
|
* @returns Buffer representation of the BlockTxResponse object
|
|
96
116
|
*/ toBuffer() {
|
|
97
117
|
return serializeToBuffer([
|
|
98
|
-
this.archiveRoot,
|
|
99
118
|
this.txs.toBuffer(),
|
|
100
119
|
this.txIndices.toBuffer()
|
|
101
120
|
]);
|
|
102
121
|
}
|
|
103
122
|
static empty() {
|
|
104
|
-
return new BlockTxsResponse(
|
|
123
|
+
return new BlockTxsResponse(new TxArray(), BitVector.init(0, []));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Calculate the expected response size for a BLOCK_TXS request.
|
|
128
|
+
* @param requestBuffer - The serialized request buffer containing BlockTxsRequest
|
|
129
|
+
* @returns Expected response size in KB
|
|
130
|
+
*/ export function calculateBlockTxsResponseSize(requestBuffer) {
|
|
131
|
+
try {
|
|
132
|
+
const request = BlockTxsRequest.fromBuffer(requestBuffer);
|
|
133
|
+
const requestedTxCount = request.txIndices.getTrueIndices().length;
|
|
134
|
+
return requestedTxCount * MAX_TX_SIZE_KB + 1; // +1 KB overhead for serialization
|
|
135
|
+
} catch {
|
|
136
|
+
// If we can't parse the request, fall back to allowing a single transaction response
|
|
137
|
+
return MAX_TX_SIZE_KB + 1;
|
|
105
138
|
}
|
|
106
139
|
}
|