@aztec/p2p 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -3
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +26 -10
- package/dest/client/factory.d.ts +13 -12
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +70 -21
- package/dest/client/index.d.ts +1 -1
- package/dest/client/interface.d.ts +104 -39
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +76 -92
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +685 -344
- package/dest/config.d.ts +175 -87
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +180 -59
- 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/p2p-service.error.d.ts +9 -0
- package/dest/errors/p2p-service.error.d.ts.map +1 -0
- package/dest/errors/p2p-service.error.js +10 -0
- package/dest/errors/reqresp.error.d.ts +9 -16
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +10 -17
- package/dest/errors/tx-pool.error.d.ts +8 -0
- package/dest/errors/tx-pool.error.d.ts.map +1 -0
- package/dest/errors/tx-pool.error.js +9 -0
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +156 -57
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +518 -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 +694 -294
- 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 -10
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +19 -13
- package/dest/mem_pools/index.d.ts +3 -3
- 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 +16 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +58 -10
- 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_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 +39 -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 +97 -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 +11 -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 +12 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +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 +243 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +11 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -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 +223 -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 +122 -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 +368 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +68 -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 +178 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +91 -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 +1013 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +15 -7
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +82 -26
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +24 -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 +75 -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/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 +16 -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 +16 -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 +26 -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 +40 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +186 -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 +11 -18
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- 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 +4 -3
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +4 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +40 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
- package/dest/msg_validators/tx_validator/factory.d.ts +138 -6
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +268 -58
- 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 +105 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +146 -67
- package/dest/msg_validators/tx_validator/index.d.ts +6 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +5 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
- 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 +24 -3
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +78 -28
- 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 +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 +23 -5
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +4 -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 +4 -2
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +14 -10
- package/dest/services/discv5/discV5_service.d.ts +13 -2
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +120 -24
- package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
- package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
- package/dest/services/discv5/persisted_enr_store.js +145 -0
- package/dest/services/dummy_service.d.ts +40 -16
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +61 -14
- package/dest/services/encoding.d.ts +24 -7
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +48 -30
- 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 +167 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +336 -0
- package/dest/services/index.d.ts +2 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +1 -0
- package/dest/services/libp2p/instrumentation.d.ts +5 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +49 -70
- package/dest/services/libp2p/libp2p_service.d.ts +127 -110
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +1385 -447
- package/dest/services/peer-manager/interface.d.ts +1 -1
- package/dest/services/peer-manager/metrics.d.ts +11 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +45 -16
- package/dest/services/peer-manager/peer_manager.d.ts +21 -35
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +89 -38
- package/dest/services/peer-manager/peer_scoring.d.ts +39 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +168 -15
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +44 -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 +534 -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 +50 -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 +11 -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 +7 -0
- package/dest/services/reqresp/config.d.ts +15 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +11 -0
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
- 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 +27 -18
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +23 -19
- package/dest/services/reqresp/metrics.d.ts +6 -5
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +16 -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_txs/bitvector.d.ts +8 -3
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +15 -2
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +35 -14
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +37 -11
- 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 +85 -21
- 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 -2
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +0 -1
- package/dest/services/reqresp/protocols/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 +8 -3
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +21 -3
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -5
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -13
- package/dest/services/reqresp/reqresp.d.ts +12 -69
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +480 -200
- 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 +78 -13
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +11 -11
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +28 -27
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +100 -0
- package/dest/services/tx_collection/index.d.ts +3 -2
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -0
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +9 -13
- package/dest/services/tx_collection/request_tracker.d.ts +53 -0
- package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/request_tracker.js +84 -0
- package/dest/services/tx_collection/tx_collection.d.ts +51 -57
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +298 -70
- package/dest/services/tx_collection/tx_collection_sink.d.ts +20 -10
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +28 -31
- package/dest/services/tx_collection/tx_source.d.ts +13 -7
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +29 -7
- package/dest/services/tx_file_store/config.d.ts +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 +46 -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 +142 -0
- package/dest/services/tx_provider.d.ts +9 -5
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +23 -10
- 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 +14 -14
- 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 +3 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +2 -0
- package/dest/test-helpers/make-enrs.d.ts +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +5 -3
- package/dest/test-helpers/mock-pubsub.d.ts +48 -8
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +115 -14
- 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 +5 -7
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +19 -20
- package/dest/test-helpers/test_tx_provider.d.ts +42 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +44 -0
- package/dest/test-helpers/testbench-utils.d.ts +164 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +400 -0
- package/dest/testbench/p2p_client_testbench_worker.d.ts +26 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +289 -128
- 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 +57 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +277 -44
- package/dest/types/index.d.ts +1 -1
- package/dest/util.d.ts +14 -8
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +41 -11
- package/dest/versioning.d.ts +3 -6
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +3 -24
- package/package.json +21 -20
- package/src/bootstrap/bootstrap.ts +24 -7
- package/src/client/factory.ts +141 -46
- package/src/client/interface.ts +114 -47
- package/src/client/p2p_client.ts +356 -424
- package/src/client/test/p2p_client.batch_tx_requester.bench.README.md +197 -0
- package/src/config.ts +316 -67
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +13 -19
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +598 -56
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +796 -316
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +29 -17
- package/src/mem_pools/index.ts +2 -2
- package/src/mem_pools/instrumentation.ts +58 -10
- package/src/mem_pools/interface.ts +5 -7
- 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 +112 -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 +28 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +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 +274 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -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 +465 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +252 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1215 -0
- package/src/msg_validators/attestation_validator/README.md +49 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +78 -33
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +102 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/index.ts +1 -1
- package/src/msg_validators/proposal_validator/README.md +123 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +32 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +49 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +198 -0
- package/src/msg_validators/tx_validator/README.md +129 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
- package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +2 -2
- package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
- package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +62 -7
- package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
- package/src/msg_validators/tx_validator/factory.ts +433 -58
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +206 -76
- package/src/msg_validators/tx_validator/index.ts +5 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +31 -12
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +90 -31
- package/src/msg_validators/tx_validator/size_validator.ts +22 -0
- package/src/msg_validators/tx_validator/test_utils.ts +1 -1
- package/src/msg_validators/tx_validator/timestamp_validator.ts +30 -19
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +10 -3
- package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
- package/src/services/data_store.ts +14 -19
- package/src/services/discv5/discV5_service.ts +127 -15
- package/src/services/discv5/persisted_enr_store.ts +158 -0
- package/src/services/dummy_service.ts +82 -38
- package/src/services/encoding.ts +46 -29
- package/src/services/gossipsub/README.md +663 -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 +478 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/instrumentation.ts +54 -72
- package/src/services/libp2p/libp2p_service.ts +1152 -497
- package/src/services/peer-manager/metrics.ts +51 -16
- package/src/services/peer-manager/peer_manager.ts +98 -29
- package/src/services/peer-manager/peer_scoring.ts +170 -9
- package/src/services/reqresp/README.md +194 -0
- package/src/services/reqresp/batch-tx-requester/README.md +344 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +660 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +61 -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 +24 -0
- package/src/services/reqresp/config.ts +19 -2
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
- package/src/services/reqresp/constants.ts +14 -0
- package/src/services/reqresp/interface.ts +48 -46
- package/src/services/reqresp/metrics.ts +35 -27
- package/src/services/reqresp/protocols/auth.ts +2 -2
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +19 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +44 -17
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +109 -17
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/status.ts +16 -12
- package/src/services/reqresp/protocols/tx.ts +24 -5
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
- package/src/services/reqresp/reqresp.ts +107 -223
- package/src/services/service.ts +102 -31
- package/src/services/tx_collection/config.ts +42 -37
- package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
- package/src/services/tx_collection/file_store_tx_source.ts +129 -0
- package/src/services/tx_collection/index.ts +2 -1
- package/src/services/tx_collection/instrumentation.ts +5 -13
- package/src/services/tx_collection/request_tracker.ts +127 -0
- package/src/services/tx_collection/tx_collection.ts +368 -115
- package/src/services/tx_collection/tx_collection_sink.ts +32 -36
- package/src/services/tx_collection/tx_source.ts +29 -8
- package/src/services/tx_file_store/config.ts +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 +163 -0
- package/src/services/tx_provider.ts +34 -12
- package/src/services/tx_provider_instrumentation.ts +24 -14
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/make-test-p2p-clients.ts +7 -6
- package/src/test-helpers/mock-pubsub.ts +138 -15
- package/src/test-helpers/mock-tx-helpers.ts +1 -1
- package/src/test-helpers/reqresp-nodes.ts +18 -30
- package/src/test-helpers/test_tx_provider.ts +69 -0
- package/src/test-helpers/testbench-utils.ts +465 -0
- package/src/testbench/p2p_client_testbench_worker.ts +406 -127
- package/src/testbench/worker_client_manager.ts +355 -46
- package/src/util.ts +47 -16
- package/src/versioning.ts +3 -33
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -30
- 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 -190
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -25
- 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 -197
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -150
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -617
- package/dest/mem_pools/tx_pool/index.d.ts +0 -4
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -3
- 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/mem_pools/tx_pool/priority.d.ts +0 -8
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -10
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -122
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -394
- 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/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -92
- package/dest/services/reqresp/protocols/block.d.ts +0 -9
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.js +0 -31
- package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -56
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/fast_tx_collection.js +0 -300
- package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -54
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/slow_tx_collection.js +0 -176
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -256
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -253
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -750
- package/src/mem_pools/tx_pool/index.ts +0 -3
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
- package/src/mem_pools/tx_pool/priority.ts +0 -13
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -135
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -313
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -81
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -100
- package/src/services/reqresp/protocols/block.ts +0 -36
- package/src/services/tx_collection/fast_tx_collection.ts +0 -340
- package/src/services/tx_collection/slow_tx_collection.ts +0 -232
package/src/versioning.ts
CHANGED
|
@@ -1,33 +1,21 @@
|
|
|
1
|
-
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
1
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
2
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
3
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
5
|
-
import {
|
|
6
|
-
type ComponentsVersions,
|
|
7
|
-
checkCompressedComponentVersion,
|
|
8
|
-
compressComponentVersions,
|
|
9
|
-
getComponentsVersionsFromConfig,
|
|
10
|
-
} from '@aztec/stdlib/versioning';
|
|
4
|
+
import { compressComponentVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
|
|
11
5
|
|
|
12
6
|
import type { SignableENR } from '@nethermindeth/enr';
|
|
13
|
-
import xxhashFactory from 'xxhash-wasm';
|
|
14
7
|
|
|
15
8
|
import { AZTEC_ENR_CLIENT_VERSION_KEY, AZTEC_ENR_KEY } from './types/index.js';
|
|
16
9
|
|
|
17
|
-
const USE_XX_HASH = false; // Enable to reduce the size of the ENR record for production
|
|
18
|
-
const XX_HASH_LEN = 8;
|
|
19
|
-
const xxhash = await xxhashFactory();
|
|
20
|
-
|
|
21
10
|
/** Returns the component versions based on config and this build. */
|
|
22
11
|
export function getVersions(config: ChainConfig) {
|
|
23
12
|
return getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot());
|
|
24
13
|
}
|
|
25
14
|
|
|
26
15
|
/** Sets the aztec key on the ENR record with versioning info. */
|
|
27
|
-
export function setAztecEnrKey(enr: SignableENR, config: ChainConfig
|
|
16
|
+
export function setAztecEnrKey(enr: SignableENR, config: ChainConfig) {
|
|
28
17
|
const versions = getVersions(config);
|
|
29
|
-
|
|
30
|
-
enr.set(AZTEC_ENR_KEY, value);
|
|
18
|
+
enr.set(AZTEC_ENR_KEY, Buffer.from(compressComponentVersions(versions)));
|
|
31
19
|
return versions;
|
|
32
20
|
}
|
|
33
21
|
|
|
@@ -37,21 +25,3 @@ export function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: str
|
|
|
37
25
|
enr.set(AZTEC_ENR_CLIENT_VERSION_KEY, Buffer.from(clientVersion));
|
|
38
26
|
}
|
|
39
27
|
}
|
|
40
|
-
|
|
41
|
-
/** Checks the given value from an ENR record against the expected versions. */
|
|
42
|
-
export function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions) {
|
|
43
|
-
if (enrValue.length === XX_HASH_LEN) {
|
|
44
|
-
const expected = versionsToEnrValue(expectedVersions, true);
|
|
45
|
-
if (!Buffer.from(enrValue).equals(expected)) {
|
|
46
|
-
throw new Error(`Expected ENR version ${expected.toString('hex')} but received ${enrValue.toString('hex')}`);
|
|
47
|
-
}
|
|
48
|
-
} else {
|
|
49
|
-
const actual = Buffer.from(enrValue).toString();
|
|
50
|
-
checkCompressedComponentVersion(actual, expectedVersions);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function versionsToEnrValue(versions: ComponentsVersions, useXxHash: boolean) {
|
|
55
|
-
const compressed = compressComponentVersions(versions);
|
|
56
|
-
return useXxHash ? toBufferBE(xxhash.h64(compressed), XX_HASH_LEN) : Buffer.from(compressed);
|
|
57
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
|
-
import { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
|
|
3
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
import type { AttestationPool } from './attestation_pool.js';
|
|
5
|
-
export declare class KvAttestationPool implements AttestationPool {
|
|
6
|
-
private store;
|
|
7
|
-
private log;
|
|
8
|
-
private metrics;
|
|
9
|
-
private attestations;
|
|
10
|
-
private proposals;
|
|
11
|
-
private proposalsForSlot;
|
|
12
|
-
private attestationsForProposal;
|
|
13
|
-
constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
14
|
-
private poolStats;
|
|
15
|
-
isEmpty(): Promise<boolean>;
|
|
16
|
-
private getProposalKey;
|
|
17
|
-
private getAttestationKey;
|
|
18
|
-
addAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
19
|
-
getAttestationsForSlot(slot: bigint): Promise<BlockAttestation[]>;
|
|
20
|
-
getAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<BlockAttestation[]>;
|
|
21
|
-
deleteAttestationsOlderThan(oldestSlot: bigint): Promise<void>;
|
|
22
|
-
deleteAttestationsForSlot(slot: bigint): Promise<void>;
|
|
23
|
-
deleteAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<void>;
|
|
24
|
-
deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
25
|
-
hasAttestation(attestation: BlockAttestation): Promise<boolean>;
|
|
26
|
-
getBlockProposal(id: string): Promise<BlockProposal | undefined>;
|
|
27
|
-
hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
|
|
28
|
-
addBlockProposal(blockProposal: BlockProposal): Promise<void>;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=kv_attestation_pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kv_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/kv_attestation_pool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,iBAAkB,YAAW,eAAe;IAYrD,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,SAAS,CAGf;IACF,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,uBAAuB,CAAqC;gBAG1D,KAAK,EAAE,iBAAiB,EAChC,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAyC;IAUtD,OAAO,CAAC,SAAS,CAIf;IAEW,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAOxC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIZ,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAYjE,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsBhG,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtD,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrF,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnE,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB/D,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAahE,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxE,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAM3E"}
|
|
@@ -1,190 +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 { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
|
|
5
|
-
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
6
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
7
|
-
export class KvAttestationPool {
|
|
8
|
-
store;
|
|
9
|
-
log;
|
|
10
|
-
metrics;
|
|
11
|
-
attestations;
|
|
12
|
-
proposals;
|
|
13
|
-
proposalsForSlot;
|
|
14
|
-
attestationsForProposal;
|
|
15
|
-
constructor(store, telemetry = getTelemetryClient(), log = createLogger('aztec:attestation_pool')){
|
|
16
|
-
this.store = store;
|
|
17
|
-
this.log = log;
|
|
18
|
-
this.poolStats = async ()=>{
|
|
19
|
-
return {
|
|
20
|
-
itemCount: await this.attestations.sizeAsync()
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
this.attestations = store.openMap('attestations');
|
|
24
|
-
this.proposals = store.openMap('proposals');
|
|
25
|
-
this.proposalsForSlot = store.openMultiMap('proposals_for_slot');
|
|
26
|
-
this.attestationsForProposal = store.openMultiMap('attestations_for_proposal');
|
|
27
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
|
|
28
|
-
}
|
|
29
|
-
poolStats;
|
|
30
|
-
async isEmpty() {
|
|
31
|
-
for await (const _ of this.attestations.entriesAsync()){
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
getProposalKey(slot, proposalId) {
|
|
37
|
-
const slotStr = typeof slot === 'string' ? slot : new Fr(slot).toString();
|
|
38
|
-
const proposalIdStr = typeof proposalId === 'string' ? proposalId : Buffer.isBuffer(proposalId) ? Fr.fromBuffer(proposalId).toString() : proposalId.toString();
|
|
39
|
-
return `${slotStr}-${proposalIdStr}`;
|
|
40
|
-
}
|
|
41
|
-
getAttestationKey(slot, proposalId, address) {
|
|
42
|
-
return `${this.getProposalKey(slot, proposalId)}-${address}`;
|
|
43
|
-
}
|
|
44
|
-
async addAttestations(attestations) {
|
|
45
|
-
await this.store.transactionAsync(async ()=>{
|
|
46
|
-
for (const attestation of attestations){
|
|
47
|
-
const slotNumber = attestation.payload.header.slotNumber;
|
|
48
|
-
const proposalId = attestation.archive;
|
|
49
|
-
const sender = attestation.getSender();
|
|
50
|
-
// Skip attestations with invalid signatures
|
|
51
|
-
if (!sender) {
|
|
52
|
-
this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber.toBigInt()}`, {
|
|
53
|
-
signature: attestation.signature.toString(),
|
|
54
|
-
slotNumber,
|
|
55
|
-
proposalId
|
|
56
|
-
});
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
const address = sender.toString();
|
|
60
|
-
await this.attestations.set(this.getAttestationKey(slotNumber, proposalId, address), attestation.toBuffer());
|
|
61
|
-
await this.proposalsForSlot.set(slotNumber.toString(), proposalId.toString());
|
|
62
|
-
await this.attestationsForProposal.set(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
|
|
63
|
-
this.log.verbose(`Added attestation for slot ${slotNumber.toBigInt()} from ${address}`, {
|
|
64
|
-
signature: attestation.signature.toString(),
|
|
65
|
-
slotNumber,
|
|
66
|
-
address,
|
|
67
|
-
proposalId
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
async getAttestationsForSlot(slot) {
|
|
73
|
-
const slotFr = new Fr(slot);
|
|
74
|
-
const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slotFr.toString()));
|
|
75
|
-
const attestations = [];
|
|
76
|
-
for (const proposalId of proposalIds){
|
|
77
|
-
attestations.push(...await this.getAttestationsForSlotAndProposal(slot, proposalId));
|
|
78
|
-
}
|
|
79
|
-
return attestations;
|
|
80
|
-
}
|
|
81
|
-
async getAttestationsForSlotAndProposal(slot, proposalId) {
|
|
82
|
-
const attestationIds = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
|
|
83
|
-
const attestations = [];
|
|
84
|
-
// alternatively iterate this.attestaions starting from slot-proposal-EthAddress.zero
|
|
85
|
-
for (const id of attestationIds){
|
|
86
|
-
const buf = await this.attestations.getAsync(id);
|
|
87
|
-
if (!buf) {
|
|
88
|
-
// this should not happen unless we lost writes
|
|
89
|
-
throw new Error('Attestation not found ' + id);
|
|
90
|
-
}
|
|
91
|
-
const attestation = BlockAttestation.fromBuffer(buf);
|
|
92
|
-
attestations.push(attestation);
|
|
93
|
-
}
|
|
94
|
-
return attestations;
|
|
95
|
-
}
|
|
96
|
-
async deleteAttestationsOlderThan(oldestSlot) {
|
|
97
|
-
const olderThan = await toArray(this.proposalsForSlot.keysAsync({
|
|
98
|
-
end: new Fr(oldestSlot).toString()
|
|
99
|
-
}));
|
|
100
|
-
for (const oldSlot of olderThan){
|
|
101
|
-
await this.deleteAttestationsForSlot(BigInt(oldSlot));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async deleteAttestationsForSlot(slot) {
|
|
105
|
-
const slotFr = new Fr(slot);
|
|
106
|
-
let numberOfAttestations = 0;
|
|
107
|
-
await this.store.transactionAsync(async ()=>{
|
|
108
|
-
const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slotFr.toString()));
|
|
109
|
-
for (const proposalId of proposalIds){
|
|
110
|
-
const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slotFr, proposalId)));
|
|
111
|
-
numberOfAttestations += attestations.length;
|
|
112
|
-
for (const attestation of attestations){
|
|
113
|
-
await this.attestations.delete(attestation);
|
|
114
|
-
}
|
|
115
|
-
await this.proposals.delete(proposalId);
|
|
116
|
-
await this.attestationsForProposal.delete(this.getProposalKey(slotFr, proposalId));
|
|
117
|
-
}
|
|
118
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
async deleteAttestationsForSlotAndProposal(slot, proposalId) {
|
|
122
|
-
let numberOfAttestations = 0;
|
|
123
|
-
await this.store.transactionAsync(async ()=>{
|
|
124
|
-
const slotString = new Fr(slot).toString();
|
|
125
|
-
const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
|
|
126
|
-
numberOfAttestations += attestations.length;
|
|
127
|
-
for (const attestation of attestations){
|
|
128
|
-
await this.attestations.delete(attestation);
|
|
129
|
-
}
|
|
130
|
-
await this.proposals.delete(proposalId);
|
|
131
|
-
await this.proposalsForSlot.deleteValue(slotString, proposalId);
|
|
132
|
-
await this.attestationsForProposal.delete(this.getProposalKey(slotString, proposalId));
|
|
133
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
async deleteAttestations(attestations) {
|
|
137
|
-
await this.store.transactionAsync(async ()=>{
|
|
138
|
-
for (const attestation of attestations){
|
|
139
|
-
const slotNumber = attestation.payload.header.slotNumber;
|
|
140
|
-
const proposalId = attestation.archive;
|
|
141
|
-
const sender = attestation.getSender();
|
|
142
|
-
// Skip attestations with invalid signatures
|
|
143
|
-
if (!sender) {
|
|
144
|
-
this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber.toBigInt()}`);
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
const address = sender.toString();
|
|
148
|
-
const key = this.getAttestationKey(slotNumber, proposalId, address);
|
|
149
|
-
if (await this.attestations.hasAsync(key)) {
|
|
150
|
-
await this.attestations.delete(key);
|
|
151
|
-
}
|
|
152
|
-
await this.attestationsForProposal.deleteValue(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
|
|
153
|
-
this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
async hasAttestation(attestation) {
|
|
158
|
-
const slotNumber = attestation.payload.header.slotNumber;
|
|
159
|
-
const proposalId = attestation.archive;
|
|
160
|
-
const sender = attestation.getSender();
|
|
161
|
-
// Attestations with invalid signatures are never in the pool
|
|
162
|
-
if (!sender) {
|
|
163
|
-
return false;
|
|
164
|
-
}
|
|
165
|
-
const address = sender.toString();
|
|
166
|
-
const key = this.getAttestationKey(slotNumber, proposalId, address);
|
|
167
|
-
return await this.attestations.hasAsync(key);
|
|
168
|
-
}
|
|
169
|
-
async getBlockProposal(id) {
|
|
170
|
-
const buffer = await this.proposals.getAsync(id);
|
|
171
|
-
try {
|
|
172
|
-
if (buffer && buffer.length > 0) {
|
|
173
|
-
return BlockProposal.fromBuffer(buffer);
|
|
174
|
-
}
|
|
175
|
-
} catch {
|
|
176
|
-
return Promise.resolve(undefined);
|
|
177
|
-
}
|
|
178
|
-
return Promise.resolve(undefined);
|
|
179
|
-
}
|
|
180
|
-
async hasBlockProposal(idOrProposal) {
|
|
181
|
-
const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.payload.archive.toString();
|
|
182
|
-
return await this.proposals.hasAsync(id);
|
|
183
|
-
}
|
|
184
|
-
async addBlockProposal(blockProposal) {
|
|
185
|
-
await this.store.transactionAsync(async ()=>{
|
|
186
|
-
await this.proposalsForSlot.set(blockProposal.slotNumber.toString(), blockProposal.archive.toString());
|
|
187
|
-
await this.proposals.set(blockProposal.payload.archive.toString(), blockProposal.toBuffer());
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
|
|
2
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
import type { AttestationPool } from './attestation_pool.js';
|
|
4
|
-
export declare class InMemoryAttestationPool implements AttestationPool {
|
|
5
|
-
#private;
|
|
6
|
-
private log;
|
|
7
|
-
private metrics;
|
|
8
|
-
private attestations;
|
|
9
|
-
private proposals;
|
|
10
|
-
constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
11
|
-
private poolStats;
|
|
12
|
-
isEmpty(): Promise<boolean>;
|
|
13
|
-
getAttestationsForSlot(slot: bigint): Promise<BlockAttestation[]>;
|
|
14
|
-
getAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<BlockAttestation[]>;
|
|
15
|
-
addAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
16
|
-
deleteAttestationsOlderThan(oldestSlot: bigint): Promise<void>;
|
|
17
|
-
deleteAttestationsForSlot(slot: bigint): Promise<void>;
|
|
18
|
-
deleteAttestationsForSlotAndProposal(slot: bigint, proposalId: string): Promise<void>;
|
|
19
|
-
deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
20
|
-
hasAttestation(attestation: BlockAttestation): Promise<boolean>;
|
|
21
|
-
addBlockProposal(blockProposal: BlockProposal): Promise<void>;
|
|
22
|
-
getBlockProposal(id: string): Promise<BlockProposal | undefined>;
|
|
23
|
-
hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=memory_attestation_pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/memory_attestation_pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,uBAAwB,YAAW,eAAe;;IAQ3D,OAAO,CAAC,GAAG;IAPb,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,YAAY,CAAgG;IACpH,OAAO,CAAC,SAAS,CAA6B;gBAG5C,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAuC;IAOpD,OAAO,CAAC,SAAS,CAIf;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQjE,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAWhG,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C1D,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpE,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtD,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrF,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnE,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB/D,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAIhE,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAIhF"}
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
4
|
-
export class InMemoryAttestationPool {
|
|
5
|
-
log;
|
|
6
|
-
metrics;
|
|
7
|
-
attestations;
|
|
8
|
-
proposals;
|
|
9
|
-
constructor(telemetry = getTelemetryClient(), log = createLogger('p2p:attestation_pool')){
|
|
10
|
-
this.log = log;
|
|
11
|
-
this.poolStats = ()=>{
|
|
12
|
-
return Promise.resolve({
|
|
13
|
-
itemCount: this.attestations.size
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
this.attestations = new Map();
|
|
17
|
-
this.proposals = new Map();
|
|
18
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
|
|
19
|
-
}
|
|
20
|
-
poolStats;
|
|
21
|
-
isEmpty() {
|
|
22
|
-
return Promise.resolve(this.attestations.size === 0);
|
|
23
|
-
}
|
|
24
|
-
getAttestationsForSlot(slot) {
|
|
25
|
-
return Promise.resolve(Array.from(this.attestations.get(slot)?.values() ?? []).flatMap((proposalAttestationMap)=>Array.from(proposalAttestationMap.values())));
|
|
26
|
-
}
|
|
27
|
-
getAttestationsForSlotAndProposal(slot, proposalId) {
|
|
28
|
-
const slotAttestationMap = this.attestations.get(slot);
|
|
29
|
-
if (slotAttestationMap) {
|
|
30
|
-
const proposalAttestationMap = slotAttestationMap.get(proposalId);
|
|
31
|
-
if (proposalAttestationMap) {
|
|
32
|
-
return Promise.resolve(Array.from(proposalAttestationMap.values()));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return Promise.resolve([]);
|
|
36
|
-
}
|
|
37
|
-
addAttestations(attestations) {
|
|
38
|
-
for (const attestation of attestations){
|
|
39
|
-
// Perf: order and group by slot before insertion
|
|
40
|
-
const slotNumber = attestation.payload.header.slotNumber;
|
|
41
|
-
const proposalId = attestation.archive.toString();
|
|
42
|
-
const sender = attestation.getSender();
|
|
43
|
-
// Skip attestations with invalid signatures
|
|
44
|
-
if (!sender) {
|
|
45
|
-
this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber.toBigInt()}`, {
|
|
46
|
-
signature: attestation.signature.toString(),
|
|
47
|
-
slotNumber,
|
|
48
|
-
proposalId
|
|
49
|
-
});
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
|
|
53
|
-
const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
|
|
54
|
-
proposalAttestationMap.set(sender.toString(), attestation);
|
|
55
|
-
this.log.verbose(`Added attestation for slot ${slotNumber.toBigInt()} from ${sender}`, {
|
|
56
|
-
signature: attestation.signature.toString(),
|
|
57
|
-
slotNumber,
|
|
58
|
-
address: sender,
|
|
59
|
-
proposalId
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
return Promise.resolve();
|
|
63
|
-
}
|
|
64
|
-
#getNumberOfAttestationsInSlot(slot) {
|
|
65
|
-
let total = 0;
|
|
66
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
|
|
67
|
-
if (slotAttestationMap) {
|
|
68
|
-
for (const proposalAttestationMap of slotAttestationMap.values() ?? []){
|
|
69
|
-
total += proposalAttestationMap.size;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return total;
|
|
73
|
-
}
|
|
74
|
-
async deleteAttestationsOlderThan(oldestSlot) {
|
|
75
|
-
const olderThan = [];
|
|
76
|
-
// Entries are iterated in insertion order, so we can break as soon as we find a slot that is older than the oldestSlot.
|
|
77
|
-
// Note: this will only prune correctly if attestations are added in order of rising slot, it is important that we do not allow
|
|
78
|
-
// insertion of attestations that are old. #(https://github.com/AztecProtocol/aztec-packages/issues/10322)
|
|
79
|
-
const slots = this.attestations.keys();
|
|
80
|
-
for (const slot of slots){
|
|
81
|
-
if (slot < oldestSlot) {
|
|
82
|
-
olderThan.push(slot);
|
|
83
|
-
} else {
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
for (const oldSlot of olderThan){
|
|
88
|
-
await this.deleteAttestationsForSlot(oldSlot);
|
|
89
|
-
}
|
|
90
|
-
return Promise.resolve();
|
|
91
|
-
}
|
|
92
|
-
deleteAttestationsForSlot(slot) {
|
|
93
|
-
// We count the number of attestations we are removing
|
|
94
|
-
const numberOfAttestations = this.#getNumberOfAttestationsInSlot(slot);
|
|
95
|
-
const proposalIdsToDelete = this.attestations.get(slot)?.keys();
|
|
96
|
-
let proposalIdsToDeleteCount = 0;
|
|
97
|
-
proposalIdsToDelete?.forEach((proposalId)=>{
|
|
98
|
-
this.proposals.delete(proposalId);
|
|
99
|
-
proposalIdsToDeleteCount++;
|
|
100
|
-
});
|
|
101
|
-
this.attestations.delete(slot);
|
|
102
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations and ${proposalIdsToDeleteCount} proposals for slot ${slot}`);
|
|
103
|
-
return Promise.resolve();
|
|
104
|
-
}
|
|
105
|
-
deleteAttestationsForSlotAndProposal(slot, proposalId) {
|
|
106
|
-
const slotAttestationMap = getSlotOrDefault(this.attestations, slot);
|
|
107
|
-
if (slotAttestationMap) {
|
|
108
|
-
if (slotAttestationMap.has(proposalId)) {
|
|
109
|
-
const numberOfAttestations = slotAttestationMap.get(proposalId)?.size ?? 0;
|
|
110
|
-
slotAttestationMap.delete(proposalId);
|
|
111
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
this.proposals.delete(proposalId);
|
|
115
|
-
return Promise.resolve();
|
|
116
|
-
}
|
|
117
|
-
deleteAttestations(attestations) {
|
|
118
|
-
for (const attestation of attestations){
|
|
119
|
-
const slotNumber = attestation.payload.header.slotNumber;
|
|
120
|
-
const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
|
|
121
|
-
if (slotAttestationMap) {
|
|
122
|
-
const proposalId = attestation.archive.toString();
|
|
123
|
-
const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
|
|
124
|
-
if (proposalAttestationMap) {
|
|
125
|
-
const sender = attestation.getSender();
|
|
126
|
-
// Skip attestations with invalid signatures
|
|
127
|
-
if (!sender) {
|
|
128
|
-
this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber.toBigInt()}`);
|
|
129
|
-
continue;
|
|
130
|
-
}
|
|
131
|
-
proposalAttestationMap.delete(sender.toString());
|
|
132
|
-
this.log.debug(`Deleted attestation for slot ${slotNumber} from ${sender}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return Promise.resolve();
|
|
137
|
-
}
|
|
138
|
-
hasAttestation(attestation) {
|
|
139
|
-
const slotNumber = attestation.payload.header.slotNumber;
|
|
140
|
-
const proposalId = attestation.archive.toString();
|
|
141
|
-
const sender = attestation.getSender();
|
|
142
|
-
// Attestations with invalid signatures are never in the pool
|
|
143
|
-
if (!sender) {
|
|
144
|
-
return Promise.resolve(false);
|
|
145
|
-
}
|
|
146
|
-
const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
|
|
147
|
-
if (!slotAttestationMap) {
|
|
148
|
-
return Promise.resolve(false);
|
|
149
|
-
}
|
|
150
|
-
const proposalAttestationMap = slotAttestationMap.get(proposalId);
|
|
151
|
-
if (!proposalAttestationMap) {
|
|
152
|
-
return Promise.resolve(false);
|
|
153
|
-
}
|
|
154
|
-
return Promise.resolve(proposalAttestationMap.has(sender.toString()));
|
|
155
|
-
}
|
|
156
|
-
addBlockProposal(blockProposal) {
|
|
157
|
-
// We initialize slot-proposal mapping if it does not exist
|
|
158
|
-
// This is important to ensure we can delete this proposal if there were not attestations for it
|
|
159
|
-
const slotProposalMapping = getSlotOrDefault(this.attestations, blockProposal.slotNumber.toBigInt());
|
|
160
|
-
slotProposalMapping.set(blockProposal.payload.archive.toString(), new Map());
|
|
161
|
-
this.proposals.set(blockProposal.payload.archive.toString(), blockProposal);
|
|
162
|
-
return Promise.resolve();
|
|
163
|
-
}
|
|
164
|
-
getBlockProposal(id) {
|
|
165
|
-
return Promise.resolve(this.proposals.get(id));
|
|
166
|
-
}
|
|
167
|
-
hasBlockProposal(idOrProposal) {
|
|
168
|
-
const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.payload.archive.toString();
|
|
169
|
-
return Promise.resolve(this.proposals.has(id));
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Get Slot or Default
|
|
174
|
-
*
|
|
175
|
-
* Fetch the slot mapping, if it does not exist, then create a mapping and return it
|
|
176
|
-
* @param map - The map to fetch from
|
|
177
|
-
* @param slot - The slot to fetch
|
|
178
|
-
* @returns The slot mapping
|
|
179
|
-
*/ function getSlotOrDefault(map, slot) {
|
|
180
|
-
if (!map.has(slot)) {
|
|
181
|
-
map.set(slot, new Map());
|
|
182
|
-
}
|
|
183
|
-
return map.get(slot);
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Get Proposal or Default
|
|
187
|
-
*
|
|
188
|
-
* Fetch the proposal mapping, if it does not exist, then create a mapping and return it
|
|
189
|
-
* @param map - The map to fetch from
|
|
190
|
-
* @param proposalId - The proposal id to fetch
|
|
191
|
-
* @returns The proposal mapping
|
|
192
|
-
*/ function getProposalOrDefault(map, proposalId) {
|
|
193
|
-
if (!map.has(proposalId)) {
|
|
194
|
-
map.set(proposalId, new Map());
|
|
195
|
-
}
|
|
196
|
-
return map.get(proposalId);
|
|
197
|
-
}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
-
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
3
|
-
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
4
|
-
import type { MerkleTreeReadOperations, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
5
|
-
import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
6
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
7
|
-
import { ArchiveCache } from '../../msg_validators/tx_validator/archive_cache.js';
|
|
8
|
-
import { GasTxValidator } from '../../msg_validators/tx_validator/gas_validator.js';
|
|
9
|
-
import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
|
|
10
|
-
declare const AztecKVTxPool_base: new () => TypedEventEmitter<TxPoolEvents>;
|
|
11
|
-
/**
|
|
12
|
-
* KV implementation of the Transaction Pool.
|
|
13
|
-
*/
|
|
14
|
-
export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool {
|
|
15
|
-
#private;
|
|
16
|
-
/** The tx evicion logic will kick after pool size is greater than maxTxPoolSize * txPoolOverflowFactor */
|
|
17
|
-
txPoolOverflowFactor: number;
|
|
18
|
-
/**
|
|
19
|
-
* Class constructor for KV TxPool. Initiates our transaction pool as an AztecMap.
|
|
20
|
-
* @param store - A KV store for live txs in the pool.
|
|
21
|
-
* @param archive - A KV store for archived txs.
|
|
22
|
-
* @param telemetry - A telemetry client.
|
|
23
|
-
* @param archivedTxLimit - The number of txs to archive.
|
|
24
|
-
* @param log - A logger.
|
|
25
|
-
*/
|
|
26
|
-
constructor(store: AztecAsyncKVStore, archive: AztecAsyncKVStore, worldStateSynchronizer: WorldStateSynchronizer, telemetry?: TelemetryClient, config?: TxPoolOptions, log?: Logger);
|
|
27
|
-
private countTxs;
|
|
28
|
-
isEmpty(): Promise<boolean>;
|
|
29
|
-
/**
|
|
30
|
-
* Marks transactions as mined in a block and updates the pool state accordingly.
|
|
31
|
-
* Removes the transactions from the pending set and adds them to the mined set.
|
|
32
|
-
* Also evicts any transactions that become invalid after the block is mined.
|
|
33
|
-
* @param txHashes - Array of transaction hashes that were mined
|
|
34
|
-
* @param blockHeader - The header of the block the transactions were mined in
|
|
35
|
-
*/
|
|
36
|
-
markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
|
|
37
|
-
markMinedAsPending(txHashes: TxHash[]): Promise<void>;
|
|
38
|
-
getPendingTxHashes(): Promise<TxHash[]>;
|
|
39
|
-
getMinedTxHashes(): Promise<[TxHash, number][]>;
|
|
40
|
-
getPendingTxCount(): Promise<number>;
|
|
41
|
-
getMinedTxCount(): Promise<number>;
|
|
42
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
43
|
-
/**
|
|
44
|
-
* Checks if a transaction exists in the pool and returns it.
|
|
45
|
-
* @param txHash - The generated tx hash.
|
|
46
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
47
|
-
*/
|
|
48
|
-
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
49
|
-
getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
50
|
-
hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
|
|
51
|
-
hasTx(txHash: TxHash): Promise<boolean>;
|
|
52
|
-
/**
|
|
53
|
-
* Checks if an archived tx exists and returns it.
|
|
54
|
-
* @param txHash - The tx hash.
|
|
55
|
-
* @returns The transaction metadata, if found, 'undefined' otherwise.
|
|
56
|
-
*/
|
|
57
|
-
getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
58
|
-
/**
|
|
59
|
-
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
60
|
-
* @param txs - An array of txs to be added to the pool.
|
|
61
|
-
* @returns Empty promise.
|
|
62
|
-
*/
|
|
63
|
-
addTxs(txs: Tx[], opts?: {
|
|
64
|
-
source?: string;
|
|
65
|
-
}): Promise<number>;
|
|
66
|
-
/**
|
|
67
|
-
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
68
|
-
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
69
|
-
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
70
|
-
* @returns Empty promise.
|
|
71
|
-
*/
|
|
72
|
-
deleteTxs(txHashes: TxHash[], opts?: {
|
|
73
|
-
eviction?: boolean;
|
|
74
|
-
permanently?: boolean;
|
|
75
|
-
}): Promise<void>;
|
|
76
|
-
/**
|
|
77
|
-
* Gets all the transactions stored in the pool.
|
|
78
|
-
* @returns Array of tx objects in the order they were added to the pool.
|
|
79
|
-
*/
|
|
80
|
-
getAllTxs(): Promise<Tx[]>;
|
|
81
|
-
/**
|
|
82
|
-
* Gets the hashes of all transactions currently in the tx pool.
|
|
83
|
-
* @returns An array of transaction hashes found in the tx pool.
|
|
84
|
-
*/
|
|
85
|
-
getAllTxHashes(): Promise<TxHash[]>;
|
|
86
|
-
updateConfig({ maxTxPoolSize, txPoolOverflowFactor, archivedTxLimit }: TxPoolOptions): void;
|
|
87
|
-
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
88
|
-
/**
|
|
89
|
-
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
90
|
-
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
91
|
-
* @returns The number of transactions permanently deleted.
|
|
92
|
-
*/
|
|
93
|
-
cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
|
|
94
|
-
/**
|
|
95
|
-
* Creates a GasTxValidator instance.
|
|
96
|
-
* @param db - DB for the validator to use
|
|
97
|
-
* @returns A GasTxValidator instance
|
|
98
|
-
*/
|
|
99
|
-
protected createGasTxValidator(db: MerkleTreeReadOperations): GasTxValidator;
|
|
100
|
-
/**
|
|
101
|
-
* Creates an ArchiveCache instance.
|
|
102
|
-
* @param db - DB for the cache to use
|
|
103
|
-
* @returns An ArchiveCache instance
|
|
104
|
-
*/
|
|
105
|
-
protected createArchiveCache(db: MerkleTreeReadOperations): ArchiveCache;
|
|
106
|
-
/**
|
|
107
|
-
* Checks if a cached transaction exists in the in-memory pending tx pool and returns it.
|
|
108
|
-
* Otherwise, it checks the tx pool, updates the pending tx pool, and returns the tx.
|
|
109
|
-
* @param txHash - The generated tx hash.
|
|
110
|
-
* @returns The transaction, if found, 'undefined' otherwise.
|
|
111
|
-
*/
|
|
112
|
-
private getPendingTxByHash;
|
|
113
|
-
/**
|
|
114
|
-
* Archives a list of txs for future reference. The number of archived txs is limited by the specified archivedTxLimit.
|
|
115
|
-
* @param txs - The list of transactions to archive.
|
|
116
|
-
* @returns Empty promise.
|
|
117
|
-
*/
|
|
118
|
-
private archiveTxs;
|
|
119
|
-
/**
|
|
120
|
-
* Evicts pending txs with the lowest priority fees from the pool to accomodate the max tx count and cumulative max tx size
|
|
121
|
-
* after new txs are added.
|
|
122
|
-
*
|
|
123
|
-
* @param newTxHashes - The tx hashes of the new txs added to the pool.
|
|
124
|
-
* @returns The total number of txs evicted from the pool and the number of new txs that were evicted.
|
|
125
|
-
*/
|
|
126
|
-
private evictLowPriorityTxs;
|
|
127
|
-
/**
|
|
128
|
-
* Evicts invalid pending txs from the pool after a txs from a block are mined.
|
|
129
|
-
* Eviction criteria includes:
|
|
130
|
-
* - txs with nullifiers that are already included in the mined block
|
|
131
|
-
* - txs with an insufficient fee payer balance
|
|
132
|
-
* - txs with an expiration timestamp lower than that of the mined block
|
|
133
|
-
*
|
|
134
|
-
* @param minedTxHashes - The tx hashes of the txs mined in the block.
|
|
135
|
-
* @param blockHeader - The header of the mined block.
|
|
136
|
-
* @returns The total number of txs evicted from the pool.
|
|
137
|
-
*/
|
|
138
|
-
private evictInvalidTxsAfterMining;
|
|
139
|
-
/**
|
|
140
|
-
* Evicts pending txs that no longer have valid archive roots or fee payer balances from the pool after a reorg.
|
|
141
|
-
*
|
|
142
|
-
* @param txHashes - The tx hashes of the txs that were moved from mined to pending.
|
|
143
|
-
* @returns The total number of txs evicted from the pool.
|
|
144
|
-
*/
|
|
145
|
-
private evictInvalidTxsAfterReorg;
|
|
146
|
-
private addPendingTxIndices;
|
|
147
|
-
private removePendingTxIndices;
|
|
148
|
-
}
|
|
149
|
-
export {};
|
|
150
|
-
//# sourceMappingURL=aztec_kv_tx_pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAA0D,MAAM,iBAAiB,CAAC;AAGjH,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAIxG,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAKnF,OAAO,EAAE,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AAGpF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;kCAKpB,UAAU,iBAAiB,CAAC,YAAY,CAAC;AAH7F;;GAEG;AACH,qBAAa,aAAc,SAAQ,kBAA4D,YAAW,MAAM;;IAS9G,0GAA0G;IAC1G,oBAAoB,EAAE,MAAM,CAAK;IAgDjC;;;;;;;OAOG;gBAED,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,iBAAiB,EAC1B,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,GAAE,eAAsC,EACjD,MAAM,GAAE,aAAkB,EAC1B,GAAG,SAA8B;IA4BnC,OAAO,CAAC,QAAQ,CASd;IAEW,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAMxC;;;;;;OAMG;IACU,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CxE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrD,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvC,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAK/C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAmB9F;;;;OAIG;IACU,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;IAK7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI9C,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7C;;;;OAIG;IACU,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKzE;;;;OAIG;IACU,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAwC/E;;;;;OAKG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD7G;;;OAGG;IACU,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAKvC;;;OAGG;IACU,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzC,YAAY,CAAC,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,EAAE,aAAa,GAAG,IAAI;IA0B3F,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D;;;;OAIG;IACU,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmCzE;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,wBAAwB,GAAG,cAAc;IAI5E;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,EAAE,EAAE,wBAAwB,GAAG,YAAY;IAIxE;;;;;OAKG;YACW,kBAAkB;IAoBhC;;;;OAIG;YACW,UAAU;IA2CxB;;;;;;OAMG;YACW,mBAAmB;IA8CjC;;;;;;;;;;OAUG;YACW,0BAA0B;IA4DxC;;;;;OAKG;YACW,yBAAyB;YAqCzB,mBAAmB;YAMnB,sBAAsB;CAMrC"}
|