@aztec/p2p 0.0.1-commit.b655e406 → 0.0.1-commit.d1f2d6c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/client/factory.d.ts +2 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +2 -3
- package/dest/client/index.d.ts +1 -1
- package/dest/client/interface.d.ts +18 -3
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +16 -37
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +464 -126
- package/dest/config.d.ts +62 -59
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +21 -14
- package/dest/enr/generate-enr.d.ts +1 -1
- package/dest/enr/index.d.ts +1 -1
- package/dest/errors/attestation-pool.error.d.ts +7 -0
- package/dest/errors/attestation-pool.error.d.ts.map +1 -0
- package/dest/errors/attestation-pool.error.js +12 -0
- package/dest/errors/reqresp.error.d.ts +1 -1
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +77 -36
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +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 +241 -266
- package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +24 -14
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +123 -95
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +18 -12
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +91 -108
- package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -10
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +17 -13
- package/dest/mem_pools/index.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts +9 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +36 -9
- package/dest/mem_pools/interface.d.ts +3 -4
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +33 -58
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
- package/dest/mem_pools/tx_pool/index.d.ts +1 -2
- package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/index.js +0 -1
- package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
- package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/priority.js +6 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -24
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -6
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +57 -24
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +71 -0
- package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
- package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/index.js +1 -0
- package/dest/msg_validators/clock_tolerance.d.ts +21 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +37 -0
- package/dest/msg_validators/index.d.ts +2 -2
- package/dest/msg_validators/index.d.ts.map +1 -1
- package/dest/msg_validators/index.js +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
- package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/index.js +3 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +2 -2
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.d.ts +4 -3
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +1 -1
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +8 -14
- package/dest/msg_validators/tx_validator/index.d.ts +2 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +1 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -1
- package/dest/msg_validators/tx_validator/size_validator.d.ts +6 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/size_validator.js +20 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
- package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.d.ts +1 -1
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/dummy_service.d.ts +6 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +3 -0
- package/dest/services/encoding.d.ts +1 -1
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +7 -6
- package/dest/services/gossipsub/scoring.d.ts +1 -1
- package/dest/services/index.d.ts +1 -1
- 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 +26 -72
- package/dest/services/libp2p/libp2p_service.d.ts +41 -80
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +899 -175
- package/dest/services/peer-manager/interface.d.ts +1 -1
- package/dest/services/peer-manager/metrics.d.ts +8 -1
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +24 -16
- package/dest/services/peer-manager/peer_manager.d.ts +2 -33
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +6 -12
- 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 +37 -2
- package/dest/services/reqresp/config.d.ts +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +1 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/constants.d.ts +12 -0
- package/dest/services/reqresp/constants.d.ts.map +1 -0
- package/dest/services/reqresp/constants.js +7 -0
- package/dest/services/reqresp/index.d.ts +1 -1
- package/dest/services/reqresp/interface.d.ts +2 -2
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +1 -1
- 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 +5 -21
- package/dest/services/reqresp/protocols/auth.d.ts +2 -2
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/auth.js +2 -2
- package/dest/services/reqresp/protocols/block.d.ts +1 -1
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +3 -2
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +7 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +4 -6
- 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 +1 -1
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.d.ts +1 -1
- package/dest/services/reqresp/protocols/ping.d.ts +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +6 -5
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +7 -3
- package/dest/services/reqresp/protocols/tx.d.ts +2 -3
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts +1 -41
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +402 -24
- package/dest/services/reqresp/status.d.ts +2 -2
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/service.d.ts +16 -3
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +1 -1
- package/dest/services/tx_collection/config.js +1 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +4 -9
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/index.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +4 -14
- package/dest/services/tx_collection/slow_tx_collection.d.ts +4 -5
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +2 -1
- package/dest/services/tx_collection/tx_collection.d.ts +7 -7
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.d.ts +1 -1
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_provider.d.ts +4 -2
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +11 -2
- package/dest/services/tx_provider_instrumentation.d.ts +5 -2
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +13 -13
- package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +1 -1
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +4 -4
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-tx-helpers.d.ts +2 -2
- package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -1
- package/dest/test-helpers/mock-tx-helpers.js +1 -1
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +39 -22
- package/dest/testbench/parse_log_file.d.ts +1 -1
- package/dest/testbench/testbench.d.ts +1 -1
- package/dest/testbench/worker_client_manager.d.ts +1 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +6 -1
- package/dest/types/index.d.ts +1 -1
- package/dest/util.d.ts +2 -1
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +11 -2
- package/dest/versioning.d.ts +1 -1
- package/package.json +19 -18
- package/src/client/factory.ts +5 -10
- package/src/client/interface.ts +20 -2
- package/src/client/p2p_client.ts +108 -155
- package/src/config.ts +30 -19
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +86 -35
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +243 -278
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +175 -111
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +147 -136
- package/src/mem_pools/attestation_pool/mocks.ts +21 -15
- package/src/mem_pools/instrumentation.ts +47 -10
- package/src/mem_pools/interface.ts +2 -4
- package/src/mem_pools/tx_pool/README.md +270 -0
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +367 -371
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
- package/src/mem_pools/tx_pool/index.ts +0 -1
- package/src/mem_pools/tx_pool/priority.ts +8 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +23 -17
- package/src/msg_validators/attestation_validator/attestation_validator.ts +45 -32
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +88 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/clock_tolerance.ts +51 -0
- package/src/msg_validators/index.ts +1 -1
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
- package/src/msg_validators/tx_validator/block_header_validator.ts +1 -1
- package/src/msg_validators/tx_validator/data_validator.ts +12 -4
- package/src/msg_validators/tx_validator/factory.ts +3 -2
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +8 -25
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +13 -5
- package/src/msg_validators/tx_validator/phases_validator.ts +3 -1
- package/src/msg_validators/tx_validator/size_validator.ts +18 -0
- package/src/msg_validators/tx_validator/test_utils.ts +1 -1
- package/src/msg_validators/tx_validator/timestamp_validator.ts +5 -2
- package/src/services/dummy_service.ts +6 -0
- package/src/services/encoding.ts +6 -5
- package/src/services/libp2p/instrumentation.ts +26 -71
- package/src/services/libp2p/libp2p_service.ts +580 -160
- package/src/services/peer-manager/metrics.ts +27 -16
- package/src/services/peer-manager/peer_manager.ts +7 -4
- package/src/services/peer-manager/peer_scoring.ts +42 -3
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +3 -1
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/interface.ts +1 -1
- package/src/services/reqresp/metrics.ts +7 -23
- package/src/services/reqresp/protocols/auth.ts +2 -2
- package/src/services/reqresp/protocols/block.ts +3 -2
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +9 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +1 -1
- package/src/services/reqresp/protocols/status.ts +16 -12
- package/src/services/reqresp/protocols/tx.ts +1 -2
- package/src/services/service.ts +19 -4
- package/src/services/tx_collection/config.ts +1 -1
- package/src/services/tx_collection/fast_tx_collection.ts +3 -2
- package/src/services/tx_collection/instrumentation.ts +4 -21
- package/src/services/tx_collection/slow_tx_collection.ts +5 -4
- package/src/services/tx_collection/tx_collection.ts +6 -5
- package/src/services/tx_provider.ts +19 -3
- package/src/services/tx_provider_instrumentation.ts +18 -14
- package/src/test-helpers/mock-pubsub.ts +1 -1
- package/src/test-helpers/mock-tx-helpers.ts +1 -1
- package/src/test-helpers/reqresp-nodes.ts +1 -1
- package/src/testbench/p2p_client_testbench_worker.ts +45 -22
- package/src/testbench/worker_client_manager.ts +6 -1
- package/src/util.ts +12 -2
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -70
- package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -81
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { compactArray } from '@aztec/foundation/collection';
|
|
2
3
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { elapsed } from '@aztec/foundation/timer';
|
|
@@ -55,7 +56,7 @@ export class TxProvider implements ITxProvider {
|
|
|
55
56
|
/** Gathers txs from the tx pool, proposal body, remote rpc nodes, and reqresp. */
|
|
56
57
|
public getTxsForBlockProposal(
|
|
57
58
|
blockProposal: BlockProposal,
|
|
58
|
-
blockNumber:
|
|
59
|
+
blockNumber: BlockNumber,
|
|
59
60
|
opts: { pinnedPeer: PeerId | undefined; deadline: Date },
|
|
60
61
|
): Promise<{ txs: Tx[]; missingTxs: TxHash[] }> {
|
|
61
62
|
return this.getOrderedTxsFromAllSources(
|
|
@@ -136,6 +137,7 @@ export class TxProvider implements ITxProvider {
|
|
|
136
137
|
);
|
|
137
138
|
|
|
138
139
|
if (missingTxHashes.size === 0) {
|
|
140
|
+
this.instrumentation.incTxsFromP2P(0, txHashes.length);
|
|
139
141
|
return { txsFromMempool };
|
|
140
142
|
}
|
|
141
143
|
|
|
@@ -154,24 +156,26 @@ export class TxProvider implements ITxProvider {
|
|
|
154
156
|
|
|
155
157
|
if (missingTxHashes.size === 0) {
|
|
156
158
|
await this.processProposalTxs(txsFromProposal);
|
|
159
|
+
this.instrumentation.incTxsFromP2P(0, txHashes.length);
|
|
157
160
|
return { txsFromMempool, txsFromProposal };
|
|
158
161
|
}
|
|
159
162
|
|
|
160
163
|
// Start tx collection from the network if needed, while we validate the txs taken from the proposal in parallel
|
|
161
164
|
const [txsFromNetwork] = await Promise.all([
|
|
162
|
-
this.
|
|
165
|
+
this.collectFromP2P(request, [...missingTxHashes], opts),
|
|
163
166
|
this.processProposalTxs(txsFromProposal),
|
|
164
167
|
] as const);
|
|
165
168
|
|
|
166
169
|
if (txsFromNetwork.length > 0) {
|
|
167
170
|
txsFromNetwork.forEach(tx => missingTxHashes.delete(tx.txHash.toString()));
|
|
168
|
-
this.instrumentation.incTxsFromP2P(txsFromNetwork.length);
|
|
169
171
|
this.log.debug(
|
|
170
172
|
`Retrieved ${txsFromNetwork.length} txs from network for block proposal (${missingTxHashes.size} pending)`,
|
|
171
173
|
{ ...blockInfo, missingTxHashes: [...missingTxHashes] },
|
|
172
174
|
);
|
|
173
175
|
}
|
|
174
176
|
|
|
177
|
+
this.instrumentation.incTxsFromP2P(txsFromNetwork.length, txHashes.length);
|
|
178
|
+
|
|
175
179
|
if (missingTxHashes.size === 0) {
|
|
176
180
|
return { txsFromNetwork, txsFromMempool, txsFromProposal };
|
|
177
181
|
}
|
|
@@ -199,6 +203,18 @@ export class TxProvider implements ITxProvider {
|
|
|
199
203
|
};
|
|
200
204
|
}
|
|
201
205
|
|
|
206
|
+
private async collectFromP2P(
|
|
207
|
+
input: FastCollectionRequestInput,
|
|
208
|
+
txHashes: TxHash[] | string[],
|
|
209
|
+
opts: { deadline: Date; pinnedPeer?: PeerId },
|
|
210
|
+
): Promise<Tx[]> {
|
|
211
|
+
const requestedAt = Date.now();
|
|
212
|
+
const result = await this.txCollection.collectFastFor(input, txHashes, opts);
|
|
213
|
+
const requestProcessedAt = Date.now();
|
|
214
|
+
this.instrumentation.recordTxsRequestDelay(requestProcessedAt - requestedAt);
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
|
|
202
218
|
private extractFromProposal(proposal: BlockProposal | undefined, missingTxHashes: string[]): Tx[] {
|
|
203
219
|
if (!proposal) {
|
|
204
220
|
return [];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Metrics, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
|
|
1
|
+
import { type Histogram, Metrics, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
|
|
2
2
|
|
|
3
3
|
export class TxProviderInstrumentation {
|
|
4
4
|
private txFromProposalCount: UpDownCounter;
|
|
@@ -6,24 +6,23 @@ export class TxProviderInstrumentation {
|
|
|
6
6
|
private txFromP2PCount: UpDownCounter;
|
|
7
7
|
private missingTxsCount: UpDownCounter;
|
|
8
8
|
|
|
9
|
+
private fractionOfTxsRequestedFromP2P: Histogram;
|
|
10
|
+
private txsRequestDelay: Histogram;
|
|
11
|
+
|
|
9
12
|
constructor(client: TelemetryClient, name: string) {
|
|
10
13
|
const meter = client.getMeter(name);
|
|
11
14
|
|
|
12
|
-
this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT);
|
|
16
|
+
|
|
17
|
+
this.txFromMempoolCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT);
|
|
18
|
+
|
|
19
|
+
this.txFromP2PCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT);
|
|
15
20
|
|
|
16
|
-
this.
|
|
17
|
-
description: 'The number of txs taken from the local mempool',
|
|
18
|
-
});
|
|
21
|
+
this.missingTxsCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_MISSING_TXS_COUNT);
|
|
19
22
|
|
|
20
|
-
this.
|
|
21
|
-
description: 'The number of txs taken from the p2p network',
|
|
22
|
-
});
|
|
23
|
+
this.fractionOfTxsRequestedFromP2P = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUESTED_FRACTION);
|
|
23
24
|
|
|
24
|
-
this.
|
|
25
|
-
description: 'The number of txs not found anywhere',
|
|
26
|
-
});
|
|
25
|
+
this.txsRequestDelay = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUEST_DELAY);
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
incTxsFromProposals(count: number) {
|
|
@@ -34,8 +33,13 @@ export class TxProviderInstrumentation {
|
|
|
34
33
|
this.txFromMempoolCount.add(count);
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
incTxsFromP2P(count: number) {
|
|
36
|
+
incTxsFromP2P(count: number, total: number) {
|
|
38
37
|
this.txFromP2PCount.add(count);
|
|
38
|
+
this.fractionOfTxsRequestedFromP2P.record(count / total);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
recordTxsRequestDelay(delay: number) {
|
|
42
|
+
this.txsRequestDelay.record(delay);
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
incMissingTxs(count: number) {
|
|
@@ -39,7 +39,7 @@ export function getMockPubSubP2PServiceFactory<T extends P2PClientType>(
|
|
|
39
39
|
peerId: PeerId,
|
|
40
40
|
deps: {
|
|
41
41
|
packageVersion: string;
|
|
42
|
-
mempools: MemPools
|
|
42
|
+
mempools: MemPools;
|
|
43
43
|
l2BlockSource: L2BlockSource & ContractDataSource;
|
|
44
44
|
epochCache: EpochCacheInterface;
|
|
45
45
|
proofVerifier: ClientProtocolCircuitVerifier;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
3
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
4
|
import { mockTx } from '@aztec/stdlib/testing';
|
|
@@ -112,7 +112,7 @@ export async function createTestLibP2PService<T extends P2PClientType>(
|
|
|
112
112
|
archiver: L2BlockSource & ContractDataSource,
|
|
113
113
|
worldStateSynchronizer: WorldStateSynchronizer,
|
|
114
114
|
epochCache: EpochCache,
|
|
115
|
-
mempools: MemPools
|
|
115
|
+
mempools: MemPools,
|
|
116
116
|
telemetry: TelemetryClient,
|
|
117
117
|
port: number = 0,
|
|
118
118
|
peerId?: PeerId,
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { MockL2BlockSource } from '@aztec/archiver/test';
|
|
7
7
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
8
|
-
import {
|
|
8
|
+
import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
9
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
9
10
|
import { createLogger } from '@aztec/foundation/log';
|
|
10
11
|
import { sleep } from '@aztec/foundation/sleep';
|
|
11
12
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
@@ -55,6 +56,7 @@ function mockTxPool(): TxPool {
|
|
|
55
56
|
hasTx: () => Promise.resolve(false),
|
|
56
57
|
updateConfig: () => {},
|
|
57
58
|
markTxsAsNonEvictable: () => Promise.resolve(),
|
|
59
|
+
clearNonEvictableTxs: () => Promise.resolve(),
|
|
58
60
|
cleanupDeletedMinedTxs: () => Promise.resolve(0),
|
|
59
61
|
};
|
|
60
62
|
return Object.assign(new EventEmitter(), pool);
|
|
@@ -63,34 +65,38 @@ function mockTxPool(): TxPool {
|
|
|
63
65
|
function mockAttestationPool(): AttestationPool {
|
|
64
66
|
return {
|
|
65
67
|
isEmpty: () => Promise.resolve(false),
|
|
66
|
-
addAttestations: () => Promise.resolve(),
|
|
67
|
-
deleteAttestations: () => Promise.resolve(),
|
|
68
|
-
deleteAttestationsOlderThan: () => Promise.resolve(),
|
|
69
|
-
deleteAttestationsForSlot: () => Promise.resolve(),
|
|
70
|
-
deleteAttestationsForSlotAndProposal: () => Promise.resolve(),
|
|
71
|
-
getAttestationsForSlot: () => Promise.resolve([]),
|
|
72
|
-
getAttestationsForSlotAndProposal: () => Promise.resolve([]),
|
|
73
68
|
addBlockProposal: () => Promise.resolve(),
|
|
74
69
|
getBlockProposal: () => Promise.resolve(undefined),
|
|
75
70
|
hasBlockProposal: () => Promise.resolve(false),
|
|
76
|
-
|
|
71
|
+
canAddProposal: () => Promise.resolve(true),
|
|
72
|
+
// Checkpoint attestation methods
|
|
73
|
+
addCheckpointProposal: () => Promise.resolve(),
|
|
74
|
+
getCheckpointProposal: () => Promise.resolve(undefined),
|
|
75
|
+
hasCheckpointProposal: () => Promise.resolve(false),
|
|
76
|
+
addCheckpointAttestations: () => Promise.resolve(),
|
|
77
|
+
getCheckpointAttestationsForSlot: () => Promise.resolve([]),
|
|
78
|
+
getCheckpointAttestationsForSlotAndProposal: () => Promise.resolve([]),
|
|
79
|
+
deleteCheckpointAttestationsOlderThan: () => Promise.resolve(),
|
|
80
|
+
hasReachedCheckpointProposalCap: () => Promise.resolve(false),
|
|
81
|
+
hasReachedCheckpointAttestationCap: () => Promise.resolve(false),
|
|
82
|
+
canAddCheckpointProposal: () => Promise.resolve(true),
|
|
83
|
+
canAddCheckpointAttestation: () => Promise.resolve(true),
|
|
84
|
+
hasCheckpointAttestation: () => Promise.resolve(false),
|
|
77
85
|
};
|
|
78
86
|
}
|
|
79
87
|
|
|
80
88
|
function mockEpochCache(): EpochCacheInterface {
|
|
81
89
|
return {
|
|
82
|
-
getCommittee: () => Promise.resolve({ committee: [], seed: 1n, epoch:
|
|
90
|
+
getCommittee: () => Promise.resolve({ committee: [], seed: 1n, epoch: EpochNumber.ZERO, isEscapeHatchOpen: false }),
|
|
83
91
|
getProposerIndexEncoding: () => '0x' as `0x${string}`,
|
|
84
|
-
getEpochAndSlotNow: () => ({ epoch:
|
|
92
|
+
getEpochAndSlotNow: () => ({ epoch: EpochNumber.ZERO, slot: SlotNumber.ZERO, ts: 0n, nowMs: 0n }),
|
|
85
93
|
computeProposerIndex: () => 0n,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}),
|
|
93
|
-
getEpochAndSlotInNextL1Slot: () => ({ epoch: 0n, slot: 0n, ts: 0n, now: 0n }),
|
|
94
|
+
getCurrentAndNextSlot: () => ({
|
|
95
|
+
currentSlot: SlotNumber.ZERO,
|
|
96
|
+
nextSlot: SlotNumber.ZERO,
|
|
97
|
+
}),
|
|
98
|
+
getProposerAttesterAddressInSlot: () => Promise.resolve(undefined),
|
|
99
|
+
getEpochAndSlotInNextL1Slot: () => ({ epoch: EpochNumber.ZERO, slot: SlotNumber.ZERO, ts: 0n, now: 0n }),
|
|
94
100
|
isInCommittee: () => Promise.resolve(false),
|
|
95
101
|
getRegisteredValidators: () => Promise.resolve([]),
|
|
96
102
|
filterInCommittee: () => Promise.resolve([]),
|
|
@@ -123,7 +129,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
123
129
|
peerDiscoveryService: PeerDiscoveryService,
|
|
124
130
|
reqresp: ReqResp,
|
|
125
131
|
peerManager: PeerManager,
|
|
126
|
-
mempools: MemPools
|
|
132
|
+
mempools: MemPools,
|
|
127
133
|
archiver: L2BlockSource & ContractDataSource,
|
|
128
134
|
epochCache: EpochCacheInterface,
|
|
129
135
|
proofVerifier: ClientProtocolCircuitVerifier,
|
|
@@ -185,9 +191,25 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
|
|
|
185
191
|
|
|
186
192
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
187
193
|
process.on('message', async msg => {
|
|
188
|
-
|
|
194
|
+
// Note: peerIdPrivateKey comes as a raw string (not SecretValue) because
|
|
195
|
+
// SecretValue's private fields can't be serialized via IPC
|
|
196
|
+
const {
|
|
197
|
+
type,
|
|
198
|
+
config: rawConfig,
|
|
199
|
+
clientIndex,
|
|
200
|
+
} = msg as {
|
|
201
|
+
type: string;
|
|
202
|
+
config: Omit<P2PConfig, 'peerIdPrivateKey'> & { peerIdPrivateKey?: string };
|
|
203
|
+
clientIndex: number;
|
|
204
|
+
};
|
|
189
205
|
try {
|
|
190
206
|
if (type === 'START') {
|
|
207
|
+
// Re-wrap the peerIdPrivateKey with SecretValue
|
|
208
|
+
const config: P2PConfig = {
|
|
209
|
+
...rawConfig,
|
|
210
|
+
peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined,
|
|
211
|
+
} as P2PConfig;
|
|
212
|
+
|
|
191
213
|
const txPool = mockTxPool();
|
|
192
214
|
const attestationPool = mockAttestationPool();
|
|
193
215
|
const epochCache = mockEpochCache();
|
|
@@ -220,14 +242,15 @@ process.on('message', async msg => {
|
|
|
220
242
|
);
|
|
221
243
|
|
|
222
244
|
// Create test service with validation disabled
|
|
245
|
+
// Note: Parameter order must match LibP2PService constructor
|
|
223
246
|
const testService = new TestLibP2PService(
|
|
224
247
|
P2PClientType.Full,
|
|
225
248
|
config,
|
|
226
249
|
(client as any).p2pService.node,
|
|
227
250
|
(client as any).p2pService.peerDiscoveryService,
|
|
228
|
-
(client as any).p2pService.mempools,
|
|
229
251
|
(client as any).p2pService.reqresp,
|
|
230
252
|
(client as any).p2pService.peerManager,
|
|
253
|
+
(client as any).p2pService.mempools,
|
|
231
254
|
(client as any).p2pService.archiver,
|
|
232
255
|
epochCache,
|
|
233
256
|
proofVerifier,
|
|
@@ -73,7 +73,12 @@ class WorkerClientManager {
|
|
|
73
73
|
clientIndex: number,
|
|
74
74
|
): [ChildProcess, Promise<void>] {
|
|
75
75
|
const childProcess = fork(workerPath);
|
|
76
|
-
|
|
76
|
+
// Extract the raw peerIdPrivateKey value since SecretValue can't be serialized via IPC
|
|
77
|
+
const serializedConfig = {
|
|
78
|
+
...config,
|
|
79
|
+
peerIdPrivateKey: config.peerIdPrivateKey?.getValue(),
|
|
80
|
+
};
|
|
81
|
+
childProcess.send({ type: 'START', config: serializedConfig, clientIndex });
|
|
77
82
|
|
|
78
83
|
// Handle unexpected child process exit
|
|
79
84
|
childProcess.on('exit', (code, signal) => {
|
package/src/util.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { createFromPrivKey } from '@libp2p/peer-id-factory';
|
|
|
12
12
|
import { resolve } from 'dns/promises';
|
|
13
13
|
import { promises as fs } from 'fs';
|
|
14
14
|
import type { Libp2p } from 'libp2p';
|
|
15
|
+
import net from 'net';
|
|
15
16
|
import path from 'path';
|
|
16
17
|
|
|
17
18
|
import type { P2PConfig } from './config.js';
|
|
@@ -56,9 +57,18 @@ export function convertToMultiaddr(address: string, port: number, protocol: 'tcp
|
|
|
56
57
|
* Queries the public IP address of the machine.
|
|
57
58
|
*/
|
|
58
59
|
export async function getPublicIp(): Promise<string> {
|
|
59
|
-
const resp = await fetch('
|
|
60
|
+
const resp = await fetch('https://checkip.amazonaws.com/');
|
|
60
61
|
const text = await resp.text();
|
|
61
|
-
|
|
62
|
+
const address = text.trim();
|
|
63
|
+
if (!isValidIpAddress(address)) {
|
|
64
|
+
throw new Error(`Received invalid IP address from checkip service: ${address}`);
|
|
65
|
+
}
|
|
66
|
+
return address;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function isValidIpAddress(address: string): boolean {
|
|
70
|
+
const netType = net.isIP(address);
|
|
71
|
+
return netType === 4;
|
|
62
72
|
}
|
|
63
73
|
|
|
64
74
|
export async function resolveAddressIfNecessary(address: string, port: string): Promise<string> {
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
2
|
-
import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
3
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
|
|
5
|
-
declare const InMemoryTxPool_base: new () => TypedEventEmitter<TxPoolEvents>;
|
|
6
|
-
/**
|
|
7
|
-
* In-memory implementation of the Transaction Pool.
|
|
8
|
-
*/
|
|
9
|
-
export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPool {
|
|
10
|
-
private log;
|
|
11
|
-
/**
|
|
12
|
-
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
13
|
-
*/
|
|
14
|
-
private txs;
|
|
15
|
-
private minedTxs;
|
|
16
|
-
private pendingTxs;
|
|
17
|
-
private deletedMinedTxHashes;
|
|
18
|
-
private blockToDeletedMinedTxHash;
|
|
19
|
-
private metrics;
|
|
20
|
-
/**
|
|
21
|
-
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
22
|
-
* @param log - A logger.
|
|
23
|
-
*/
|
|
24
|
-
constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
25
|
-
private countTx;
|
|
26
|
-
isEmpty(): Promise<boolean>;
|
|
27
|
-
markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
|
|
28
|
-
markMinedAsPending(txHashes: TxHash[]): Promise<void>;
|
|
29
|
-
getPendingTxHashes(): Promise<TxHash[]>;
|
|
30
|
-
getMinedTxHashes(): Promise<[TxHash, number][]>;
|
|
31
|
-
getPendingTxCount(): Promise<number>;
|
|
32
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
33
|
-
/**
|
|
34
|
-
* Checks if a transaction exists in the pool and returns it.
|
|
35
|
-
* @param txHash - The generated tx hash.
|
|
36
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
37
|
-
*/
|
|
38
|
-
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
39
|
-
getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
40
|
-
hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
|
|
41
|
-
hasTx(txHash: TxHash): Promise<boolean>;
|
|
42
|
-
getArchivedTxByHash(): Promise<Tx | undefined>;
|
|
43
|
-
/**
|
|
44
|
-
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
45
|
-
* @param txs - An array of txs to be added to the pool.
|
|
46
|
-
* @returns Empty promise.
|
|
47
|
-
*/
|
|
48
|
-
addTxs(txs: Tx[], opts?: {
|
|
49
|
-
source?: string;
|
|
50
|
-
}): Promise<number>;
|
|
51
|
-
/**
|
|
52
|
-
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
53
|
-
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
54
|
-
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
55
|
-
* @returns Empty promise.
|
|
56
|
-
*/
|
|
57
|
-
deleteTxs(txHashes: TxHash[], opts?: {
|
|
58
|
-
permanently?: boolean;
|
|
59
|
-
}): Promise<void>;
|
|
60
|
-
/**
|
|
61
|
-
* Gets all the transactions stored in the pool.
|
|
62
|
-
* @returns Array of tx objects in the order they were added to the pool.
|
|
63
|
-
*/
|
|
64
|
-
getAllTxs(): Promise<Tx[]>;
|
|
65
|
-
/**
|
|
66
|
-
* Gets the hashes of all transactions currently in the tx pool.
|
|
67
|
-
* @returns An array of transaction hashes found in the tx pool.
|
|
68
|
-
*/
|
|
69
|
-
getAllTxHashes(): Promise<TxHash[]>;
|
|
70
|
-
updateConfig(_config: TxPoolOptions): void;
|
|
71
|
-
markTxsAsNonEvictable(_: TxHash[]): Promise<void>;
|
|
72
|
-
/**
|
|
73
|
-
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
74
|
-
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
75
|
-
* @returns The number of transactions permanently deleted.
|
|
76
|
-
*/
|
|
77
|
-
cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
|
|
78
|
-
}
|
|
79
|
-
export {};
|
|
80
|
-
//# sourceMappingURL=memory_tx_pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;mCAKnB,UAAU,iBAAiB,CAAC,YAAY,CAAC;AAH9F;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA4D,YAAW,MAAM;IAkB7G,OAAO,CAAC,GAAG;IAjBb;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,yBAAyB,CAA2B;IAE5D,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBAED,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA8B;IAW3C,OAAO,CAAC,OAAO,CAOb;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAa7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAexF;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAK3D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAG7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIxC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtC,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;;;;OAKG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrF;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIjC;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1C,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE1C,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;;;OAIG;IACI,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BpE"}
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
3
|
-
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
import EventEmitter from 'node:events';
|
|
5
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
6
|
-
import { getPendingTxPriority } from './priority.js';
|
|
7
|
-
/**
|
|
8
|
-
* In-memory implementation of the Transaction Pool.
|
|
9
|
-
*/ export class InMemoryTxPool extends EventEmitter {
|
|
10
|
-
log;
|
|
11
|
-
/**
|
|
12
|
-
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
13
|
-
*/ txs;
|
|
14
|
-
minedTxs;
|
|
15
|
-
pendingTxs;
|
|
16
|
-
deletedMinedTxHashes;
|
|
17
|
-
blockToDeletedMinedTxHash;
|
|
18
|
-
metrics;
|
|
19
|
-
/**
|
|
20
|
-
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
21
|
-
* @param log - A logger.
|
|
22
|
-
*/ constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:tx_pool')){
|
|
23
|
-
super(), this.log = log, this.countTx = ()=>{
|
|
24
|
-
return Promise.resolve({
|
|
25
|
-
itemCount: {
|
|
26
|
-
mined: this.minedTxs.size,
|
|
27
|
-
pending: this.pendingTxs.size
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
this.txs = new Map();
|
|
32
|
-
this.minedTxs = new Map();
|
|
33
|
-
this.pendingTxs = new Set();
|
|
34
|
-
this.deletedMinedTxHashes = new Map();
|
|
35
|
-
this.blockToDeletedMinedTxHash = new Map();
|
|
36
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL, this.countTx);
|
|
37
|
-
}
|
|
38
|
-
countTx;
|
|
39
|
-
isEmpty() {
|
|
40
|
-
return Promise.resolve(this.txs.size === 0);
|
|
41
|
-
}
|
|
42
|
-
markAsMined(txHashes, blockHeader) {
|
|
43
|
-
const keys = txHashes.map((x)=>x.toBigInt());
|
|
44
|
-
for (const key of keys){
|
|
45
|
-
// If this tx was previously soft-deleted, remove it from the deleted sets
|
|
46
|
-
if (this.deletedMinedTxHashes.has(key)) {
|
|
47
|
-
const originalBlock = this.deletedMinedTxHashes.get(key);
|
|
48
|
-
this.deletedMinedTxHashes.delete(key);
|
|
49
|
-
// Remove from block-to-hash mapping
|
|
50
|
-
const txHashesForBlock = this.blockToDeletedMinedTxHash.get(originalBlock);
|
|
51
|
-
if (txHashesForBlock) {
|
|
52
|
-
txHashesForBlock.delete(key);
|
|
53
|
-
if (txHashesForBlock.size === 0) {
|
|
54
|
-
this.blockToDeletedMinedTxHash.delete(originalBlock);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
this.minedTxs.set(key, blockHeader.globalVariables.blockNumber);
|
|
59
|
-
this.pendingTxs.delete(key);
|
|
60
|
-
}
|
|
61
|
-
return Promise.resolve();
|
|
62
|
-
}
|
|
63
|
-
markMinedAsPending(txHashes) {
|
|
64
|
-
if (txHashes.length === 0) {
|
|
65
|
-
return Promise.resolve();
|
|
66
|
-
}
|
|
67
|
-
const keys = txHashes.map((x)=>x.toBigInt());
|
|
68
|
-
for (const key of keys){
|
|
69
|
-
this.minedTxs.delete(key);
|
|
70
|
-
// only add back to the pending set if we have the tx object
|
|
71
|
-
if (this.txs.has(key)) {
|
|
72
|
-
this.pendingTxs.add(key);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return Promise.resolve();
|
|
76
|
-
}
|
|
77
|
-
async getPendingTxHashes() {
|
|
78
|
-
const txs = (await this.getAllTxs()).sort((tx1, tx2)=>-getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)));
|
|
79
|
-
const txHashes = await Promise.all(txs.map((tx)=>tx.getTxHash()));
|
|
80
|
-
// No need to check deleted since pending txs are never soft-deleted
|
|
81
|
-
return txHashes.filter((txHash)=>{
|
|
82
|
-
const key = txHash.toBigInt();
|
|
83
|
-
return this.pendingTxs.has(key);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
getMinedTxHashes() {
|
|
87
|
-
return Promise.resolve(Array.from(this.minedTxs.entries()).map(([txHash, blockNumber])=>[
|
|
88
|
-
TxHash.fromBigInt(txHash),
|
|
89
|
-
blockNumber
|
|
90
|
-
]));
|
|
91
|
-
}
|
|
92
|
-
getPendingTxCount() {
|
|
93
|
-
// Soft-deleted transactions are always mined, never pending
|
|
94
|
-
return Promise.resolve(this.pendingTxs.size);
|
|
95
|
-
}
|
|
96
|
-
getTxStatus(txHash) {
|
|
97
|
-
const key = txHash.toBigInt();
|
|
98
|
-
if (this.deletedMinedTxHashes.has(key)) {
|
|
99
|
-
return Promise.resolve('deleted');
|
|
100
|
-
}
|
|
101
|
-
if (this.minedTxs.has(key)) {
|
|
102
|
-
return Promise.resolve('mined');
|
|
103
|
-
}
|
|
104
|
-
if (this.pendingTxs.has(key)) {
|
|
105
|
-
return Promise.resolve('pending');
|
|
106
|
-
}
|
|
107
|
-
return Promise.resolve(undefined);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Checks if a transaction exists in the pool and returns it.
|
|
111
|
-
* @param txHash - The generated tx hash.
|
|
112
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
113
|
-
*/ getTxByHash(txHash) {
|
|
114
|
-
const result = this.txs.get(txHash.toBigInt());
|
|
115
|
-
return Promise.resolve(result === undefined ? undefined : Tx.clone(result));
|
|
116
|
-
}
|
|
117
|
-
getTxsByHash(txHashes) {
|
|
118
|
-
return Promise.all(txHashes.map((txHash)=>this.getTxByHash(txHash)));
|
|
119
|
-
}
|
|
120
|
-
hasTxs(txHashes) {
|
|
121
|
-
return Promise.resolve(txHashes.map((txHash)=>this.txs.has(txHash.toBigInt())));
|
|
122
|
-
}
|
|
123
|
-
async hasTx(txHash) {
|
|
124
|
-
const result = await this.hasTxs([
|
|
125
|
-
txHash
|
|
126
|
-
]);
|
|
127
|
-
return result[0];
|
|
128
|
-
}
|
|
129
|
-
getArchivedTxByHash() {
|
|
130
|
-
return Promise.resolve(undefined);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
134
|
-
* @param txs - An array of txs to be added to the pool.
|
|
135
|
-
* @returns Empty promise.
|
|
136
|
-
*/ addTxs(txs, opts = {}) {
|
|
137
|
-
const added = [];
|
|
138
|
-
for (const tx of txs){
|
|
139
|
-
const txHash = tx.getTxHash();
|
|
140
|
-
this.log.verbose(`Adding tx ${txHash.toString()} to pool`, {
|
|
141
|
-
eventName: 'tx-added-to-pool',
|
|
142
|
-
...tx.getStats()
|
|
143
|
-
});
|
|
144
|
-
const key = txHash.toBigInt();
|
|
145
|
-
if (!this.txs.has(key)) {
|
|
146
|
-
added.push(tx);
|
|
147
|
-
this.txs.set(key, tx);
|
|
148
|
-
}
|
|
149
|
-
if (!this.minedTxs.has(key)) {
|
|
150
|
-
this.metrics.recordSize(tx);
|
|
151
|
-
this.pendingTxs.add(key);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (added.length > 0) {
|
|
155
|
-
this.emit('txs-added', {
|
|
156
|
-
...opts,
|
|
157
|
-
txs: added
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
return Promise.resolve(added.length);
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
164
|
-
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
165
|
-
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
166
|
-
* @returns Empty promise.
|
|
167
|
-
*/ deleteTxs(txHashes, opts) {
|
|
168
|
-
for (const txHash of txHashes){
|
|
169
|
-
const key = txHash.toBigInt();
|
|
170
|
-
if (this.txs.has(key)) {
|
|
171
|
-
if (this.minedTxs.has(key)) {
|
|
172
|
-
const blockNumber = this.minedTxs.get(key);
|
|
173
|
-
this.minedTxs.delete(key);
|
|
174
|
-
// Soft-delete mined transactions: remove from mined set but keep in storage
|
|
175
|
-
if (opts?.permanently) {
|
|
176
|
-
// Permanently delete mined transactions if specified
|
|
177
|
-
this.txs.delete(key);
|
|
178
|
-
} else {
|
|
179
|
-
this.deletedMinedTxHashes.set(key, blockNumber);
|
|
180
|
-
if (!this.blockToDeletedMinedTxHash.has(blockNumber)) {
|
|
181
|
-
this.blockToDeletedMinedTxHash.set(blockNumber, new Set());
|
|
182
|
-
}
|
|
183
|
-
this.blockToDeletedMinedTxHash.get(blockNumber).add(key);
|
|
184
|
-
}
|
|
185
|
-
} else {
|
|
186
|
-
// Permanently delete pending transactions
|
|
187
|
-
this.txs.delete(key);
|
|
188
|
-
this.pendingTxs.delete(key);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
return Promise.resolve();
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Gets all the transactions stored in the pool.
|
|
196
|
-
* @returns Array of tx objects in the order they were added to the pool.
|
|
197
|
-
*/ getAllTxs() {
|
|
198
|
-
return Promise.resolve(Array.from(this.txs.values()).map((x)=>Tx.clone(x)));
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Gets the hashes of all transactions currently in the tx pool.
|
|
202
|
-
* @returns An array of transaction hashes found in the tx pool.
|
|
203
|
-
*/ getAllTxHashes() {
|
|
204
|
-
return Promise.resolve(Array.from(this.txs.keys()).map((x)=>TxHash.fromBigInt(x)));
|
|
205
|
-
}
|
|
206
|
-
updateConfig(_config) {}
|
|
207
|
-
markTxsAsNonEvictable(_) {
|
|
208
|
-
return Promise.resolve();
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
212
|
-
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
213
|
-
* @returns The number of transactions permanently deleted.
|
|
214
|
-
*/ cleanupDeletedMinedTxs(blockNumber) {
|
|
215
|
-
let deletedCount = 0;
|
|
216
|
-
const blocksToDelete = [];
|
|
217
|
-
// Find all blocks up to the specified block number
|
|
218
|
-
for (const [block, txHashes] of this.blockToDeletedMinedTxHash.entries()){
|
|
219
|
-
if (block <= blockNumber) {
|
|
220
|
-
// Permanently delete all transactions from this block
|
|
221
|
-
for (const txHash of txHashes){
|
|
222
|
-
this.txs.delete(txHash);
|
|
223
|
-
this.deletedMinedTxHashes.delete(txHash);
|
|
224
|
-
deletedCount++;
|
|
225
|
-
}
|
|
226
|
-
blocksToDelete.push(block);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Clean up block-to-hash mapping
|
|
230
|
-
for (const block of blocksToDelete){
|
|
231
|
-
this.blockToDeletedMinedTxHash.delete(block);
|
|
232
|
-
}
|
|
233
|
-
if (deletedCount > 0) {
|
|
234
|
-
this.log.debug(`Permanently deleted ${deletedCount} deleted mined txs from blocks up to ${blockNumber}`);
|
|
235
|
-
}
|
|
236
|
-
return Promise.resolve(deletedCount);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
|
-
import { type BlockProposal, type P2PValidator, PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
3
|
-
export declare class BlockProposalValidator implements P2PValidator<BlockProposal> {
|
|
4
|
-
private epochCache;
|
|
5
|
-
private logger;
|
|
6
|
-
private txsPermitted;
|
|
7
|
-
constructor(epochCache: EpochCacheInterface, opts: {
|
|
8
|
-
txsPermitted: boolean;
|
|
9
|
-
});
|
|
10
|
-
validate(block: BlockProposal): Promise<PeerErrorSeverity | undefined>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=block_proposal_validator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"block_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/block_proposal_validator/block_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE7F,qBAAa,sBAAuB,YAAW,YAAY,CAAC,aAAa,CAAC;IACxE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAU;gBAElB,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE;IAMtE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAgE7E"}
|