@aztec/p2p 0.0.0-test.0 → 0.0.1-commit.001888fc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -3
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +26 -13
- package/dest/client/factory.d.ts +21 -11
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +101 -26
- package/dest/client/index.d.ts +2 -1
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +1 -0
- package/dest/client/interface.d.ts +183 -0
- package/dest/client/interface.d.ts.map +1 -0
- package/dest/client/interface.js +9 -0
- package/dest/client/p2p_client.d.ts +93 -221
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +760 -289
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
- package/dest/config.d.ts +192 -126
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +240 -36
- package/dest/enr/generate-enr.d.ts +11 -3
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +27 -5
- 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/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 +5 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +125 -30
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +564 -173
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -11
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +19 -21
- package/dest/mem_pools/index.d.ts +3 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- package/dest/mem_pools/instrumentation.d.ts +18 -12
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +58 -41
- package/dest/mem_pools/interface.d.ts +6 -7
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +75 -16
- 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 +493 -142
- 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 +123 -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 +8 -3
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
- 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 +279 -46
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
- package/dest/mem_pools/tx_pool_v2/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 +47 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/index.js +5 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +215 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +134 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +216 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +923 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +79 -10
- 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 +76 -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 +10 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +11 -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 +14 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +11 -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 +20 -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 +18 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +116 -0
- 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 +3 -3
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +4 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +31 -0
- 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.d.ts +14 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +7 -6
- package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +60 -87
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -6
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +24 -29
- package/dest/msg_validators/tx_validator/factory.d.ts +148 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +265 -0
- 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 +24 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +76 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +177 -0
- package/dest/msg_validators/tx_validator/index.d.ts +11 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +10 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -5
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +40 -21
- 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 +35 -0
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +141 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/size_validator.js +23 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
- package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/test_utils.js +22 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +30 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +8 -7
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +10 -6
- package/dest/services/discv5/discV5_service.d.ts +10 -9
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +64 -37
- package/dest/services/dummy_service.d.ts +74 -11
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +136 -5
- package/dest/services/encoding.d.ts +26 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +82 -12
- package/dest/services/gossipsub/index.d.ts +3 -0
- package/dest/services/gossipsub/index.d.ts.map +1 -0
- package/dest/services/gossipsub/index.js +2 -0
- package/dest/services/gossipsub/scoring.d.ts +21 -3
- package/dest/services/gossipsub/scoring.d.ts.map +1 -1
- package/dest/services/gossipsub/scoring.js +24 -7
- package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +346 -0
- package/dest/services/index.d.ts +6 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +5 -0
- package/dest/services/libp2p/instrumentation.d.ts +20 -0
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
- package/dest/services/libp2p/instrumentation.js +122 -0
- package/dest/services/libp2p/libp2p_service.d.ts +165 -101
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +1478 -350
- package/dest/services/peer-manager/interface.d.ts +23 -0
- package/dest/services/peer-manager/interface.d.ts.map +1 -0
- package/dest/services/peer-manager/interface.js +1 -0
- package/dest/services/peer-manager/metrics.d.ts +14 -3
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +50 -12
- package/dest/services/peer-manager/peer_manager.d.ts +103 -23
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +552 -82
- 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 +68 -4
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +54 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +556 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
- package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +48 -0
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
- package/dest/services/reqresp/config.d.ts +11 -9
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +18 -4
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +23 -4
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +73 -10
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +32 -17
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +154 -84
- 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 +3 -2
- package/dest/services/reqresp/index.d.ts.map +1 -1
- package/dest/services/reqresp/index.js +2 -1
- package/dest/services/reqresp/interface.d.ts +84 -24
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +60 -27
- package/dest/services/reqresp/metrics.d.ts +6 -5
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +17 -21
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +6 -1
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +30 -6
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +34 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +87 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +13 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +57 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +70 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +121 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
- package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +7 -7
- package/dest/services/reqresp/protocols/index.d.ts +3 -1
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -0
- package/dest/services/reqresp/protocols/ping.d.ts +1 -3
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +40 -7
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +76 -5
- package/dest/services/reqresp/protocols/tx.d.ts +20 -4
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +54 -6
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
- 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 +21 -1
- package/dest/services/reqresp/reqresp.d.ts +29 -66
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +762 -249
- package/dest/services/reqresp/status.d.ts +10 -4
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +9 -2
- package/dest/services/service.d.ts +76 -20
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +46 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +112 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +54 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +327 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -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 +167 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -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 +90 -0
- package/dest/services/tx_collection/index.d.ts +5 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +4 -0
- package/dest/services/tx_collection/instrumentation.d.ts +10 -0
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_collection/instrumentation.js +32 -0
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
- package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +57 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +211 -0
- package/dest/services/tx_collection/tx_collection.d.ts +123 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +200 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +40 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +108 -0
- package/dest/services/tx_collection/tx_source.d.ts +23 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +48 -0
- package/dest/services/tx_file_store/config.d.ts +16 -0
- package/dest/services/tx_file_store/config.d.ts.map +1 -0
- package/dest/services/tx_file_store/config.js +22 -0
- package/dest/services/tx_file_store/index.d.ts +4 -0
- package/dest/services/tx_file_store/index.d.ts.map +1 -0
- package/dest/services/tx_file_store/index.js +3 -0
- package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
- package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_file_store/instrumentation.js +29 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
- package/dest/services/tx_file_store/tx_file_store.js +152 -0
- package/dest/services/tx_provider.d.ts +51 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +220 -0
- package/dest/services/tx_provider_instrumentation.d.ts +16 -0
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/tx_provider_instrumentation.js +34 -0
- 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 +4 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +3 -0
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- package/dest/test-helpers/make-enrs.d.ts.map +1 -1
- package/dest/test-helpers/make-enrs.js +4 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts +35 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +86 -17
- package/dest/test-helpers/mock-pubsub.d.ts +85 -0
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
- package/dest/test-helpers/mock-pubsub.js +231 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
- package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
- package/dest/test-helpers/mock-tx-helpers.js +19 -0
- package/dest/test-helpers/reqresp-nodes.d.ts +15 -12
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +63 -28
- package/dest/test-helpers/test_tx_provider.d.ts +40 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +41 -0
- package/dest/test-helpers/testbench-utils.d.ts +163 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +367 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +261 -91
- package/dest/testbench/parse_log_file.d.ts +1 -1
- package/dest/testbench/parse_log_file.js +4 -4
- package/dest/testbench/testbench.d.ts +1 -1
- package/dest/testbench/testbench.js +4 -4
- package/dest/testbench/worker_client_manager.d.ts +53 -11
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +237 -54
- package/dest/types/index.d.ts +4 -2
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +2 -0
- package/dest/util.d.ts +25 -17
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +75 -69
- package/dest/versioning.d.ts +4 -4
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +8 -3
- package/package.json +32 -27
- package/src/bootstrap/bootstrap.ts +34 -15
- package/src/client/factory.ts +215 -58
- package/src/client/index.ts +1 -0
- package/src/client/interface.ts +235 -0
- package/src/client/p2p_client.ts +474 -457
- package/src/client/test/tx_proposal_collector/README.md +227 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
- package/src/config.ts +409 -135
- package/src/enr/generate-enr.ts +39 -6
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +5 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +530 -29
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +692 -201
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +25 -17
- package/src/mem_pools/index.ts +4 -1
- package/src/mem_pools/instrumentation.ts +75 -47
- package/src/mem_pools/interface.ts +5 -7
- package/src/mem_pools/tx_pool/README.md +270 -0
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +580 -143
- 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 +163 -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 +10 -3
- package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +228 -37
- package/src/mem_pools/tx_pool_v2/README.md +283 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
- package/src/mem_pools/tx_pool_v2/index.ts +12 -0
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +247 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +337 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1105 -0
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +72 -14
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -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/msg_seen_validator/msg_seen_validator.ts +36 -0
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +20 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +115 -0
- package/src/msg_validators/tx_validator/README.md +119 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +30 -0
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
- package/src/msg_validators/tx_validator/block_header_validator.ts +23 -10
- package/src/msg_validators/tx_validator/data_validator.ts +95 -71
- package/src/msg_validators/tx_validator/double_spend_validator.ts +31 -23
- package/src/msg_validators/tx_validator/factory.ts +460 -0
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +219 -0
- package/src/msg_validators/tx_validator/index.ts +10 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +80 -24
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +173 -0
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/test_utils.ts +43 -0
- package/src/msg_validators/tx_validator/timestamp_validator.ts +57 -0
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +22 -0
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +14 -8
- package/src/services/data_store.ts +10 -7
- package/src/services/discv5/discV5_service.ts +85 -39
- package/src/services/dummy_service.ts +210 -9
- package/src/services/encoding.ts +87 -11
- package/src/services/gossipsub/README.md +641 -0
- package/src/services/gossipsub/index.ts +2 -0
- package/src/services/gossipsub/scoring.ts +29 -5
- package/src/services/gossipsub/topic_score_params.ts +487 -0
- package/src/services/index.ts +5 -0
- package/src/services/libp2p/instrumentation.ts +126 -0
- package/src/services/libp2p/libp2p_service.ts +1335 -402
- package/src/services/peer-manager/interface.ts +29 -0
- package/src/services/peer-manager/metrics.ts +62 -12
- package/src/services/peer-manager/peer_manager.ts +658 -80
- package/src/services/peer-manager/peer_scoring.ts +70 -3
- package/src/services/reqresp/README.md +229 -0
- package/src/services/reqresp/batch-tx-requester/README.md +305 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +698 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +55 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
- package/src/services/reqresp/config.ts +26 -9
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +77 -10
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +166 -95
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +120 -37
- package/src/services/reqresp/metrics.ts +40 -28
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +26 -4
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +106 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +76 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +144 -0
- package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
- package/src/services/reqresp/protocols/goodbye.ts +9 -7
- package/src/services/reqresp/protocols/index.ts +2 -0
- package/src/services/reqresp/protocols/status.ts +121 -5
- package/src/services/reqresp/protocols/tx.ts +58 -8
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
- package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
- package/src/services/reqresp/reqresp.ts +462 -272
- package/src/services/reqresp/status.ts +12 -3
- package/src/services/service.ts +114 -22
- package/src/services/tx_collection/config.ts +166 -0
- package/src/services/tx_collection/fast_tx_collection.ts +387 -0
- package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
- package/src/services/tx_collection/file_store_tx_source.ts +117 -0
- package/src/services/tx_collection/index.ts +8 -0
- package/src/services/tx_collection/instrumentation.ts +41 -0
- package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
- package/src/services/tx_collection/slow_tx_collection.ts +266 -0
- package/src/services/tx_collection/tx_collection.ts +313 -0
- package/src/services/tx_collection/tx_collection_sink.ts +125 -0
- package/src/services/tx_collection/tx_source.ts +56 -0
- package/src/services/tx_file_store/config.ts +37 -0
- package/src/services/tx_file_store/index.ts +3 -0
- package/src/services/tx_file_store/instrumentation.ts +36 -0
- package/src/services/tx_file_store/tx_file_store.ts +175 -0
- package/src/services/tx_provider.ts +233 -0
- package/src/services/tx_provider_instrumentation.ts +54 -0
- package/src/test-helpers/index.ts +3 -0
- package/src/test-helpers/make-enrs.ts +4 -5
- package/src/test-helpers/make-test-p2p-clients.ts +114 -26
- package/src/test-helpers/mock-pubsub.ts +325 -0
- package/src/test-helpers/mock-tx-helpers.ts +24 -0
- package/src/test-helpers/reqresp-nodes.ts +91 -42
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +431 -0
- package/src/testbench/p2p_client_testbench_worker.ts +442 -93
- package/src/testbench/parse_log_file.ts +4 -4
- package/src/testbench/testbench.ts +4 -4
- package/src/testbench/worker_client_manager.ts +323 -59
- package/src/types/index.ts +2 -0
- package/src/util.ts +112 -92
- package/src/versioning.ts +11 -4
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -22
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -112
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -17
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -129
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
- 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 -141
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
- 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 -21
- 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/attestation_pool/kv_attestation_pool.ts +0 -159
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -161
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
2
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
import type { TxPool } from './tx_pool.js';
|
|
4
|
-
/**
|
|
5
|
-
* In-memory implementation of the Transaction Pool.
|
|
6
|
-
*/
|
|
7
|
-
export declare class InMemoryTxPool implements TxPool {
|
|
8
|
-
private log;
|
|
9
|
-
/**
|
|
10
|
-
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
11
|
-
*/
|
|
12
|
-
private txs;
|
|
13
|
-
private minedTxs;
|
|
14
|
-
private pendingTxs;
|
|
15
|
-
private metrics;
|
|
16
|
-
/**
|
|
17
|
-
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
18
|
-
* @param log - A logger.
|
|
19
|
-
*/
|
|
20
|
-
constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
21
|
-
markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void>;
|
|
22
|
-
markMinedAsPending(txHashes: TxHash[]): Promise<void>;
|
|
23
|
-
getPendingTxHashes(): Promise<TxHash[]>;
|
|
24
|
-
getMinedTxHashes(): Promise<[TxHash, number][]>;
|
|
25
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
26
|
-
/**
|
|
27
|
-
* Checks if a transaction exists in the pool and returns it.
|
|
28
|
-
* @param txHash - The generated tx hash.
|
|
29
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
30
|
-
*/
|
|
31
|
-
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
32
|
-
getArchivedTxByHash(): Promise<Tx | undefined>;
|
|
33
|
-
/**
|
|
34
|
-
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
35
|
-
* @param txs - An array of txs to be added to the pool.
|
|
36
|
-
* @returns Empty promise.
|
|
37
|
-
*/
|
|
38
|
-
addTxs(txs: Tx[]): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
41
|
-
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
42
|
-
* @returns The number of transactions that was deleted from the pool.
|
|
43
|
-
*/
|
|
44
|
-
deleteTxs(txHashes: TxHash[]): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Gets all the transactions stored in the pool.
|
|
47
|
-
* @returns Array of tx objects in the order they were added to the pool.
|
|
48
|
-
*/
|
|
49
|
-
getAllTxs(): Promise<Tx[]>;
|
|
50
|
-
/**
|
|
51
|
-
* Gets the hashes of all transactions currently in the tx pool.
|
|
52
|
-
* @returns An array of transaction hashes found in the tx pool.
|
|
53
|
-
*/
|
|
54
|
-
getAllTxHashes(): Promise<TxHash[]>;
|
|
55
|
-
}
|
|
56
|
-
//# 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":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM;IAcoB,OAAO,CAAC,GAAG;IAb1E;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBACS,SAAS,GAAE,eAAsC,EAAU,GAAG,yCAA8B;IAOjG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAW5E;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKpD,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD;;;;OAIG;IACU,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIjC;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAG3C"}
|
|
@@ -1,141 +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 { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
5
|
-
import { getPendingTxPriority } from './priority.js';
|
|
6
|
-
/**
|
|
7
|
-
* In-memory implementation of the Transaction Pool.
|
|
8
|
-
*/ export class InMemoryTxPool {
|
|
9
|
-
log;
|
|
10
|
-
/**
|
|
11
|
-
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
12
|
-
*/ txs;
|
|
13
|
-
minedTxs;
|
|
14
|
-
pendingTxs;
|
|
15
|
-
metrics;
|
|
16
|
-
/**
|
|
17
|
-
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
18
|
-
* @param log - A logger.
|
|
19
|
-
*/ constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:tx_pool')){
|
|
20
|
-
this.log = log;
|
|
21
|
-
this.txs = new Map();
|
|
22
|
-
this.minedTxs = new Map();
|
|
23
|
-
this.pendingTxs = new Set();
|
|
24
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL);
|
|
25
|
-
}
|
|
26
|
-
markAsMined(txHashes, blockNumber) {
|
|
27
|
-
const keys = txHashes.map((x)=>x.toBigInt());
|
|
28
|
-
for (const key of keys){
|
|
29
|
-
this.minedTxs.set(key, blockNumber);
|
|
30
|
-
this.pendingTxs.delete(key);
|
|
31
|
-
}
|
|
32
|
-
this.metrics.recordRemovedObjects(txHashes.length, 'pending');
|
|
33
|
-
this.metrics.recordAddedObjects(txHashes.length, 'mined');
|
|
34
|
-
return Promise.resolve();
|
|
35
|
-
}
|
|
36
|
-
markMinedAsPending(txHashes) {
|
|
37
|
-
if (txHashes.length === 0) {
|
|
38
|
-
return Promise.resolve();
|
|
39
|
-
}
|
|
40
|
-
const keys = txHashes.map((x)=>x.toBigInt());
|
|
41
|
-
let deleted = 0;
|
|
42
|
-
let added = 0;
|
|
43
|
-
for (const key of keys){
|
|
44
|
-
if (this.minedTxs.delete(key)) {
|
|
45
|
-
deleted++;
|
|
46
|
-
}
|
|
47
|
-
// only add back to the pending set if we have the tx object
|
|
48
|
-
if (this.txs.has(key)) {
|
|
49
|
-
added++;
|
|
50
|
-
this.pendingTxs.add(key);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
this.metrics.recordRemovedObjects(deleted, 'mined');
|
|
54
|
-
this.metrics.recordAddedObjects(added, 'pending');
|
|
55
|
-
return Promise.resolve();
|
|
56
|
-
}
|
|
57
|
-
async getPendingTxHashes() {
|
|
58
|
-
const txs = (await this.getAllTxs()).sort((tx1, tx2)=>-getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)));
|
|
59
|
-
const txHashes = await Promise.all(txs.map((tx)=>tx.getTxHash()));
|
|
60
|
-
return txHashes.filter((txHash)=>this.pendingTxs.has(txHash.toBigInt()));
|
|
61
|
-
}
|
|
62
|
-
getMinedTxHashes() {
|
|
63
|
-
return Promise.resolve(Array.from(this.minedTxs.entries()).map(([txHash, blockNumber])=>[
|
|
64
|
-
TxHash.fromBigInt(txHash),
|
|
65
|
-
blockNumber
|
|
66
|
-
]));
|
|
67
|
-
}
|
|
68
|
-
getTxStatus(txHash) {
|
|
69
|
-
const key = txHash.toBigInt();
|
|
70
|
-
if (this.pendingTxs.has(key)) {
|
|
71
|
-
return Promise.resolve('pending');
|
|
72
|
-
}
|
|
73
|
-
if (this.minedTxs.has(key)) {
|
|
74
|
-
return Promise.resolve('mined');
|
|
75
|
-
}
|
|
76
|
-
return Promise.resolve(undefined);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Checks if a transaction exists in the pool and returns it.
|
|
80
|
-
* @param txHash - The generated tx hash.
|
|
81
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
82
|
-
*/ getTxByHash(txHash) {
|
|
83
|
-
const result = this.txs.get(txHash.toBigInt());
|
|
84
|
-
return Promise.resolve(result === undefined ? undefined : Tx.clone(result));
|
|
85
|
-
}
|
|
86
|
-
getArchivedTxByHash() {
|
|
87
|
-
return Promise.resolve(undefined);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
91
|
-
* @param txs - An array of txs to be added to the pool.
|
|
92
|
-
* @returns Empty promise.
|
|
93
|
-
*/ async addTxs(txs) {
|
|
94
|
-
let pending = 0;
|
|
95
|
-
for (const tx of txs){
|
|
96
|
-
const txHash = await tx.getTxHash();
|
|
97
|
-
this.log.verbose(`Adding tx ${txHash.toString()} to pool`, {
|
|
98
|
-
eventName: 'tx-added-to-pool',
|
|
99
|
-
...await tx.getStats()
|
|
100
|
-
});
|
|
101
|
-
const key = txHash.toBigInt();
|
|
102
|
-
this.txs.set(key, tx);
|
|
103
|
-
if (!this.minedTxs.has(key)) {
|
|
104
|
-
pending++;
|
|
105
|
-
this.metrics.recordSize(tx);
|
|
106
|
-
this.pendingTxs.add(key);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
this.metrics.recordAddedObjects(pending, 'pending');
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
114
|
-
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
115
|
-
* @returns The number of transactions that was deleted from the pool.
|
|
116
|
-
*/ deleteTxs(txHashes) {
|
|
117
|
-
let deletedMined = 0;
|
|
118
|
-
let deletedPending = 0;
|
|
119
|
-
for (const txHash of txHashes){
|
|
120
|
-
const key = txHash.toBigInt();
|
|
121
|
-
this.txs.delete(key);
|
|
122
|
-
deletedPending += this.pendingTxs.delete(key) ? 1 : 0;
|
|
123
|
-
deletedMined += this.minedTxs.delete(key) ? 1 : 0;
|
|
124
|
-
}
|
|
125
|
-
this.metrics.recordRemovedObjects(deletedPending, 'pending');
|
|
126
|
-
this.metrics.recordRemovedObjects(deletedMined, 'mined');
|
|
127
|
-
return Promise.resolve();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Gets all the transactions stored in the pool.
|
|
131
|
-
* @returns Array of tx objects in the order they were added to the pool.
|
|
132
|
-
*/ getAllTxs() {
|
|
133
|
-
return Promise.resolve(Array.from(this.txs.values()).map((x)=>Tx.clone(x)));
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Gets the hashes of all transactions currently in the tx pool.
|
|
137
|
-
* @returns An array of transaction hashes found in the tx pool.
|
|
138
|
-
*/ getAllTxHashes() {
|
|
139
|
-
return Promise.resolve(Array.from(this.txs.keys()).map((x)=>TxHash.fromBigInt(x)));
|
|
140
|
-
}
|
|
141
|
-
}
|
|
@@ -1,8 +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
|
-
constructor(epochCache: EpochCacheInterface);
|
|
6
|
-
validate(block: BlockProposal): Promise<PeerErrorSeverity | undefined>;
|
|
7
|
-
}
|
|
8
|
-
//# 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;AAC9D,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;gBAE5B,UAAU,EAAE,mBAAmB;IAIrC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAkB7E"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
2
|
-
export class BlockProposalValidator {
|
|
3
|
-
epochCache;
|
|
4
|
-
constructor(epochCache){
|
|
5
|
-
this.epochCache = epochCache;
|
|
6
|
-
}
|
|
7
|
-
async validate(block) {
|
|
8
|
-
const { currentProposer, nextProposer, currentSlot, nextSlot } = await this.epochCache.getProposerInCurrentOrNextSlot();
|
|
9
|
-
// Check that the attestation is for the current or next slot
|
|
10
|
-
const slotNumberBigInt = block.payload.header.globalVariables.slotNumber.toBigInt();
|
|
11
|
-
if (slotNumberBigInt !== currentSlot && slotNumberBigInt !== nextSlot) {
|
|
12
|
-
return PeerErrorSeverity.HighToleranceError;
|
|
13
|
-
}
|
|
14
|
-
// Check that the block proposal is from the current or next proposer
|
|
15
|
-
const proposer = await block.getSender();
|
|
16
|
-
if (!proposer.equals(currentProposer) && !proposer.equals(nextProposer)) {
|
|
17
|
-
return PeerErrorSeverity.HighToleranceError;
|
|
18
|
-
}
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/block_proposal_validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './block_proposal_validator.js';
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { toArray } from '@aztec/foundation/iterable';
|
|
3
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
-
import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
|
|
5
|
-
import { BlockAttestation } from '@aztec/stdlib/p2p';
|
|
6
|
-
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
|
-
|
|
8
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
9
|
-
import type { AttestationPool } from './attestation_pool.js';
|
|
10
|
-
|
|
11
|
-
export class KvAttestationPool implements AttestationPool {
|
|
12
|
-
private metrics: PoolInstrumentation<BlockAttestation>;
|
|
13
|
-
|
|
14
|
-
private attestations: AztecAsyncMap<string, Buffer>;
|
|
15
|
-
private proposalsForSlot: AztecAsyncMultiMap<string, string>;
|
|
16
|
-
private attestationsForProposal: AztecAsyncMultiMap<string, string>;
|
|
17
|
-
|
|
18
|
-
constructor(
|
|
19
|
-
private store: AztecAsyncKVStore,
|
|
20
|
-
telemetry: TelemetryClient = getTelemetryClient(),
|
|
21
|
-
private log = createLogger('aztec:attestation_pool'),
|
|
22
|
-
) {
|
|
23
|
-
this.attestations = store.openMap('attestations');
|
|
24
|
-
this.proposalsForSlot = store.openMultiMap('proposals_for_slot');
|
|
25
|
-
this.attestationsForProposal = store.openMultiMap('attestations_for_proposal');
|
|
26
|
-
|
|
27
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
private getProposalKey(slot: number | bigint | Fr | string, proposalId: Fr | string | Buffer): string {
|
|
31
|
-
const slotStr = typeof slot === 'string' ? slot : new Fr(slot).toString();
|
|
32
|
-
const proposalIdStr =
|
|
33
|
-
typeof proposalId === 'string'
|
|
34
|
-
? proposalId
|
|
35
|
-
: Buffer.isBuffer(proposalId)
|
|
36
|
-
? Fr.fromBuffer(proposalId).toString()
|
|
37
|
-
: proposalId.toString();
|
|
38
|
-
|
|
39
|
-
return `${slotStr}-${proposalIdStr}`;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
private getAttestationKey(slot: number | bigint | Fr | string, proposalId: Fr | string, address: string): string {
|
|
43
|
-
return `${this.getProposalKey(slot, proposalId)}-${address}`;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public async addAttestations(attestations: BlockAttestation[]): Promise<void> {
|
|
47
|
-
await this.store.transactionAsync(async () => {
|
|
48
|
-
for (const attestation of attestations) {
|
|
49
|
-
const slotNumber = attestation.payload.header.globalVariables.slotNumber;
|
|
50
|
-
const proposalId = attestation.archive;
|
|
51
|
-
const address = (await attestation.getSender()).toString();
|
|
52
|
-
|
|
53
|
-
await this.attestations.set(this.getAttestationKey(slotNumber, proposalId, address), attestation.toBuffer());
|
|
54
|
-
|
|
55
|
-
await this.proposalsForSlot.set(slotNumber.toString(), proposalId.toString());
|
|
56
|
-
await this.attestationsForProposal.set(
|
|
57
|
-
this.getProposalKey(slotNumber, proposalId),
|
|
58
|
-
this.getAttestationKey(slotNumber, proposalId, address),
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
this.metrics.recordAddedObjects(attestations.length);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public async getAttestationsForSlot(slot: bigint, proposalId: string): Promise<BlockAttestation[]> {
|
|
69
|
-
const attestationIds = await toArray(
|
|
70
|
-
this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)),
|
|
71
|
-
);
|
|
72
|
-
const attestations: BlockAttestation[] = [];
|
|
73
|
-
|
|
74
|
-
// alternatively iterate this.attestaions starting from slot-proposal-EthAddress.zero
|
|
75
|
-
for (const id of attestationIds) {
|
|
76
|
-
const buf = await this.attestations.getAsync(id);
|
|
77
|
-
|
|
78
|
-
if (!buf) {
|
|
79
|
-
// this should not happen unless we lost writes
|
|
80
|
-
throw new Error('Attestation not found ' + id);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const attestation = BlockAttestation.fromBuffer(buf);
|
|
84
|
-
attestations.push(attestation);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return attestations;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
public async deleteAttestationsOlderThan(oldestSlot: bigint): Promise<void> {
|
|
91
|
-
const olderThan = await toArray(this.proposalsForSlot.keysAsync({ end: new Fr(oldestSlot).toString() }));
|
|
92
|
-
for (const oldSlot of olderThan) {
|
|
93
|
-
await this.deleteAttestationsForSlot(BigInt(oldSlot));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public async deleteAttestationsForSlot(slot: bigint): Promise<void> {
|
|
98
|
-
const slotFr = new Fr(slot);
|
|
99
|
-
let numberOfAttestations = 0;
|
|
100
|
-
await this.store.transactionAsync(async () => {
|
|
101
|
-
const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slotFr.toString()));
|
|
102
|
-
for (const proposalId of proposalIds) {
|
|
103
|
-
const attestations = await toArray(
|
|
104
|
-
this.attestationsForProposal.getValuesAsync(this.getProposalKey(slotFr, proposalId)),
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
numberOfAttestations += attestations.length;
|
|
108
|
-
for (const attestation of attestations) {
|
|
109
|
-
await this.attestations.delete(attestation);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
await this.attestationsForProposal.delete(this.getProposalKey(slotFr, proposalId));
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
|
|
117
|
-
this.metrics.recordRemovedObjects(numberOfAttestations);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
public async deleteAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<void> {
|
|
121
|
-
let numberOfAttestations = 0;
|
|
122
|
-
await this.store.transactionAsync(async () => {
|
|
123
|
-
const slotString = new Fr(slot).toString();
|
|
124
|
-
const attestations = await toArray(
|
|
125
|
-
this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)),
|
|
126
|
-
);
|
|
127
|
-
|
|
128
|
-
numberOfAttestations += attestations.length;
|
|
129
|
-
for (const attestation of attestations) {
|
|
130
|
-
await this.attestations.delete(attestation);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
await this.proposalsForSlot.deleteValue(slotString, proposalId);
|
|
134
|
-
await this.attestationsForProposal.delete(this.getProposalKey(slotString, proposalId));
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
|
|
138
|
-
this.metrics.recordRemovedObjects(numberOfAttestations);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public async deleteAttestations(attestations: BlockAttestation[]): Promise<void> {
|
|
142
|
-
await this.store.transactionAsync(async () => {
|
|
143
|
-
for (const attestation of attestations) {
|
|
144
|
-
const slotNumber = attestation.payload.header.globalVariables.slotNumber;
|
|
145
|
-
const proposalId = attestation.archive;
|
|
146
|
-
const address = (await attestation.getSender()).toString();
|
|
147
|
-
|
|
148
|
-
await this.attestations.delete(this.getAttestationKey(slotNumber, proposalId, address));
|
|
149
|
-
await this.attestationsForProposal.deleteValue(
|
|
150
|
-
this.getProposalKey(slotNumber, proposalId),
|
|
151
|
-
this.getAttestationKey(slotNumber, proposalId, address),
|
|
152
|
-
);
|
|
153
|
-
|
|
154
|
-
this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
this.metrics.recordRemovedObjects(attestations.length);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import type { BlockAttestation } from '@aztec/stdlib/p2p';
|
|
3
|
-
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
|
|
5
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
6
|
-
import type { AttestationPool } from './attestation_pool.js';
|
|
7
|
-
|
|
8
|
-
export class InMemoryAttestationPool implements AttestationPool {
|
|
9
|
-
private metrics: PoolInstrumentation<BlockAttestation>;
|
|
10
|
-
|
|
11
|
-
private attestations: Map</*slot=*/ bigint, Map</*proposalId*/ string, Map</*address=*/ string, BlockAttestation>>>;
|
|
12
|
-
|
|
13
|
-
constructor(telemetry: TelemetryClient = getTelemetryClient(), private log = createLogger('p2p:attestation_pool')) {
|
|
14
|
-
this.attestations = new Map();
|
|
15
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public getAttestationsForSlot(slot: bigint, proposalId: string): Promise<BlockAttestation[]> {
|
|
19
|
-
const slotAttestationMap = this.attestations.get(slot);
|
|
20
|
-
if (slotAttestationMap) {
|
|
21
|
-
const proposalAttestationMap = slotAttestationMap.get(proposalId);
|
|
22
|
-
if (proposalAttestationMap) {
|
|
23
|
-
return Promise.resolve(Array.from(proposalAttestationMap.values()));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return Promise.resolve([]);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public async addAttestations(attestations: BlockAttestation[]): Promise<void> {
|
|
30
|
-
for (const attestation of attestations) {
|
|
31
|
-
// Perf: order and group by slot before insertion
|
|
32
|
-
const slotNumber = attestation.payload.header.globalVariables.slotNumber;
|
|
33
|
-
|
|
34
|
-
const proposalId = attestation.archive.toString();
|
|
35
|
-
const address = await attestation.getSender();
|
|
36
|
-
|
|
37
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
|
|
38
|
-
const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
|
|
39
|
-
proposalAttestationMap.set(address.toString(), attestation);
|
|
40
|
-
|
|
41
|
-
this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// TODO: set these to pending or something ????
|
|
45
|
-
this.metrics.recordAddedObjects(attestations.length);
|
|
46
|
-
return Promise.resolve();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
#getNumberOfAttestationsInSlot(slot: bigint): number {
|
|
50
|
-
let total = 0;
|
|
51
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
|
|
52
|
-
|
|
53
|
-
if (slotAttestationMap) {
|
|
54
|
-
for (const proposalAttestationMap of slotAttestationMap.values() ?? []) {
|
|
55
|
-
total += proposalAttestationMap.size;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return total;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public async deleteAttestationsOlderThan(oldestSlot: bigint): Promise<void> {
|
|
62
|
-
const olderThan = [];
|
|
63
|
-
|
|
64
|
-
// Entries are iterated in insertion order, so we can break as soon as we find a slot that is older than the oldestSlot.
|
|
65
|
-
// Note: this will only prune correctly if attestations are added in order of rising slot, it is important that we do not allow
|
|
66
|
-
// insertion of attestations that are old. #(https://github.com/AztecProtocol/aztec-packages/issues/10322)
|
|
67
|
-
const slots = this.attestations.keys();
|
|
68
|
-
for (const slot of slots) {
|
|
69
|
-
if (slot < oldestSlot) {
|
|
70
|
-
olderThan.push(slot);
|
|
71
|
-
} else {
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
for (const oldSlot of olderThan) {
|
|
77
|
-
await this.deleteAttestationsForSlot(oldSlot);
|
|
78
|
-
}
|
|
79
|
-
return Promise.resolve();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
public deleteAttestationsForSlot(slot: bigint): Promise<void> {
|
|
83
|
-
// We count the number of attestations we are removing
|
|
84
|
-
const numberOfAttestations = this.#getNumberOfAttestationsInSlot(slot);
|
|
85
|
-
|
|
86
|
-
this.attestations.delete(slot);
|
|
87
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
|
|
88
|
-
|
|
89
|
-
this.metrics.recordRemovedObjects(numberOfAttestations);
|
|
90
|
-
return Promise.resolve();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public deleteAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<void> {
|
|
94
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
|
|
95
|
-
if (slotAttestationMap) {
|
|
96
|
-
if (slotAttestationMap.has(proposalId)) {
|
|
97
|
-
const numberOfAttestations = slotAttestationMap.get(proposalId)?.size ?? 0;
|
|
98
|
-
|
|
99
|
-
slotAttestationMap.delete(proposalId);
|
|
100
|
-
|
|
101
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
|
|
102
|
-
this.metrics.recordRemovedObjects(numberOfAttestations);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return Promise.resolve();
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
public async deleteAttestations(attestations: BlockAttestation[]): Promise<void> {
|
|
109
|
-
for (const attestation of attestations) {
|
|
110
|
-
const slotNumber = attestation.payload.header.globalVariables.slotNumber;
|
|
111
|
-
const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
|
|
112
|
-
if (slotAttestationMap) {
|
|
113
|
-
const proposalId = attestation.archive.toString();
|
|
114
|
-
const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
|
|
115
|
-
if (proposalAttestationMap) {
|
|
116
|
-
const address = await attestation.getSender();
|
|
117
|
-
proposalAttestationMap.delete(address.toString());
|
|
118
|
-
this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
this.metrics.recordRemovedObjects(attestations.length);
|
|
123
|
-
return Promise.resolve();
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Get Slot or Default
|
|
129
|
-
*
|
|
130
|
-
* Fetch the slot mapping, if it does not exist, then create a mapping and return it
|
|
131
|
-
* @param map - The map to fetch from
|
|
132
|
-
* @param slot - The slot to fetch
|
|
133
|
-
* @returns The slot mapping
|
|
134
|
-
*/
|
|
135
|
-
function getSlotOrDefault(
|
|
136
|
-
map: Map<bigint, Map<string, Map<string, BlockAttestation>>>,
|
|
137
|
-
slot: bigint,
|
|
138
|
-
): Map<string, Map<string, BlockAttestation>> {
|
|
139
|
-
if (!map.has(slot)) {
|
|
140
|
-
map.set(slot, new Map<string, Map<string, BlockAttestation>>());
|
|
141
|
-
}
|
|
142
|
-
return map.get(slot)!;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Get Proposal or Default
|
|
147
|
-
*
|
|
148
|
-
* Fetch the proposal mapping, if it does not exist, then create a mapping and return it
|
|
149
|
-
* @param map - The map to fetch from
|
|
150
|
-
* @param proposalId - The proposal id to fetch
|
|
151
|
-
* @returns The proposal mapping
|
|
152
|
-
*/
|
|
153
|
-
function getProposalOrDefault(
|
|
154
|
-
map: Map<string, Map<string, BlockAttestation>>,
|
|
155
|
-
proposalId: string,
|
|
156
|
-
): Map<string, BlockAttestation> {
|
|
157
|
-
if (!map.has(proposalId)) {
|
|
158
|
-
map.set(proposalId, new Map<string, BlockAttestation>());
|
|
159
|
-
}
|
|
160
|
-
return map.get(proposalId)!;
|
|
161
|
-
}
|