@aztec/p2p 0.0.1-commit.b655e406 → 0.0.1-commit.c31f2472
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bootstrap/bootstrap.d.ts +4 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +4 -4
- package/dest/client/factory.d.ts +2 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +8 -8
- package/dest/client/index.d.ts +1 -1
- package/dest/client/interface.d.ts +18 -3
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +16 -37
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +464 -126
- package/dest/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 +305 -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 +69 -60
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +23 -14
- package/dest/enr/generate-enr.d.ts +1 -1
- package/dest/enr/index.d.ts +1 -1
- package/dest/errors/attestation-pool.error.d.ts +7 -0
- package/dest/errors/attestation-pool.error.d.ts.map +1 -0
- package/dest/errors/attestation-pool.error.js +12 -0
- package/dest/errors/reqresp.error.d.ts +1 -1
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +77 -36
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +241 -266
- package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +24 -14
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +123 -95
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +18 -12
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +91 -108
- package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -10
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +17 -13
- package/dest/mem_pools/index.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts +9 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +37 -10
- package/dest/mem_pools/interface.d.ts +3 -4
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +33 -58
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
- package/dest/mem_pools/tx_pool/index.d.ts +1 -2
- package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/index.js +0 -1
- package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
- package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/priority.js +6 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -24
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -6
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +57 -24
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +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 +1 -1
- package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
- package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/index.js +3 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +2 -2
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +4 -3
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
- 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 +4 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +10 -4
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +22 -12
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
- package/dest/msg_validators/tx_validator/index.d.ts +2 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +1 -0
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +6 -4
- 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 +5 -3
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
- 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 +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 +2 -2
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.d.ts +1 -1
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +1 -1
- package/dest/services/dummy_service.d.ts +18 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +42 -0
- package/dest/services/encoding.d.ts +1 -1
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +7 -6
- package/dest/services/gossipsub/scoring.d.ts +1 -1
- package/dest/services/index.d.ts +1 -1
- package/dest/services/libp2p/instrumentation.d.ts +3 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +36 -71
- package/dest/services/libp2p/libp2p_service.d.ts +48 -81
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +926 -193
- package/dest/services/peer-manager/interface.d.ts +1 -1
- package/dest/services/peer-manager/metrics.d.ts +9 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +39 -16
- package/dest/services/peer-manager/peer_manager.d.ts +2 -33
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +6 -12
- package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +43 -2
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -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 +566 -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 +37 -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 +151 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -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 +139 -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 +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
- 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 +4 -2
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +1 -1
- package/dest/services/reqresp/metrics.d.ts +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 +2 -2
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/auth.js +2 -2
- package/dest/services/reqresp/protocols/block.d.ts +1 -1
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +3 -2
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +14 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +17 -7
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +34 -4
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.d.ts +1 -1
- package/dest/services/reqresp/protocols/ping.d.ts +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +6 -5
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +7 -3
- package/dest/services/reqresp/protocols/tx.d.ts +2 -3
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts +6 -41
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +460 -46
- 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 +19 -3
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +4 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +10 -2
- package/dest/services/tx_collection/fast_tx_collection.d.ts +9 -12
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +16 -5
- package/dest/services/tx_collection/index.d.ts +2 -1
- 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 +10 -13
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -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 +4 -5
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +2 -1
- package/dest/services/tx_collection/tx_collection.d.ts +10 -10
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +5 -5
- package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.d.ts +1 -1
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_provider.d.ts +4 -2
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +11 -2
- package/dest/services/tx_provider_instrumentation.d.ts +5 -2
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +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 +2 -2
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +4 -4
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-tx-helpers.d.ts +2 -2
- package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -1
- package/dest/test-helpers/mock-tx-helpers.js +1 -1
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/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 +156 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +296 -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 +218 -120
- 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 +51 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +226 -39
- package/dest/types/index.d.ts +1 -1
- package/dest/util.d.ts +2 -1
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +11 -2
- package/dest/versioning.d.ts +1 -1
- package/package.json +19 -18
- package/src/bootstrap/bootstrap.ts +7 -4
- package/src/client/factory.ts +11 -20
- package/src/client/interface.ts +20 -2
- package/src/client/p2p_client.ts +108 -155
- package/src/client/test/tx_proposal_collector/README.md +227 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
- package/src/config.ts +36 -20
- package/src/errors/attestation-pool.error.ts +13 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +86 -35
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +243 -278
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +175 -111
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +147 -136
- package/src/mem_pools/attestation_pool/mocks.ts +21 -15
- package/src/mem_pools/instrumentation.ts +48 -10
- package/src/mem_pools/interface.ts +2 -4
- package/src/mem_pools/tx_pool/README.md +270 -0
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +367 -371
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
- package/src/mem_pools/tx_pool/index.ts +0 -1
- package/src/mem_pools/tx_pool/priority.ts +8 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +23 -17
- package/src/msg_validators/attestation_validator/attestation_validator.ts +45 -32
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +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/proposal_validator/block_proposal_validator.ts +10 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
- package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
- package/src/msg_validators/tx_validator/block_header_validator.ts +8 -5
- package/src/msg_validators/tx_validator/data_validator.ts +18 -6
- package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
- package/src/msg_validators/tx_validator/factory.ts +67 -25
- package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +19 -8
- package/src/msg_validators/tx_validator/phases_validator.ts +8 -4
- 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 +11 -5
- package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
- package/src/services/discv5/discV5_service.ts +1 -1
- package/src/services/dummy_service.ts +51 -0
- package/src/services/encoding.ts +6 -5
- package/src/services/libp2p/instrumentation.ts +39 -71
- package/src/services/libp2p/libp2p_service.ts +628 -194
- package/src/services/peer-manager/metrics.ts +44 -16
- package/src/services/peer-manager/peer_manager.ts +7 -4
- package/src/services/peer-manager/peer_scoring.ts +45 -3
- package/src/services/reqresp/batch-tx-requester/README.md +305 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
- 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 +4 -1
- package/src/services/reqresp/metrics.ts +36 -27
- package/src/services/reqresp/protocols/auth.ts +2 -2
- package/src/services/reqresp/protocols/block.ts +3 -2
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +16 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -5
- package/src/services/reqresp/protocols/status.ts +16 -12
- package/src/services/reqresp/protocols/tx.ts +1 -2
- package/src/services/reqresp/reqresp.ts +66 -19
- package/src/services/service.ts +23 -4
- package/src/services/tx_collection/config.ts +16 -2
- package/src/services/tx_collection/fast_tx_collection.ts +39 -15
- package/src/services/tx_collection/index.ts +5 -0
- package/src/services/tx_collection/instrumentation.ts +5 -13
- package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
- package/src/services/tx_collection/slow_tx_collection.ts +5 -4
- package/src/services/tx_collection/tx_collection.ts +10 -9
- package/src/services/tx_provider.ts +19 -3
- package/src/services/tx_provider_instrumentation.ts +24 -14
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/mock-pubsub.ts +1 -1
- package/src/test-helpers/mock-tx-helpers.ts +1 -1
- package/src/test-helpers/reqresp-nodes.ts +1 -1
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +372 -0
- package/src/testbench/p2p_client_testbench_worker.ts +338 -116
- package/src/testbench/worker_client_manager.ts +304 -42
- package/src/util.ts +12 -2
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -70
- package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -81
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
|
@@ -1,242 +1,178 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { mockAttestation } from './mocks.js';
|
|
1
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
5
|
+
import { makeBlockHeader, makeBlockProposal, makeCheckpointHeader, makeCheckpointProposal } from '@aztec/stdlib/testing';
|
|
6
|
+
import { MAX_PROPOSALS_PER_SLOT } from './kv_attestation_pool.js';
|
|
7
|
+
import { mockCheckpointAttestation } from './mocks.js';
|
|
9
8
|
const NUMBER_OF_SIGNERS_PER_TEST = 4;
|
|
10
9
|
export function describeAttestationPool(getAttestationPool) {
|
|
11
10
|
let ap;
|
|
12
11
|
let signers;
|
|
13
|
-
// Check that metrics are recorded correctly
|
|
14
|
-
let metricsMock;
|
|
15
12
|
beforeEach(()=>{
|
|
16
13
|
ap = getAttestationPool();
|
|
17
14
|
signers = Array.from({
|
|
18
15
|
length: NUMBER_OF_SIGNERS_PER_TEST
|
|
19
16
|
}, ()=>Secp256k1Signer.random());
|
|
20
|
-
metricsMock = mock();
|
|
21
|
-
// Can i overwrite this like this??
|
|
22
|
-
ap.metrics = metricsMock;
|
|
23
17
|
});
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
return signers.map((signer)=>
|
|
18
|
+
const createCheckpointAttestationsForSlot = (slotNumber, archive)=>{
|
|
19
|
+
const archiveToUse = archive ?? Fr.random();
|
|
20
|
+
return signers.map((signer)=>mockCheckpointAttestation(signer, slotNumber, archiveToUse));
|
|
27
21
|
};
|
|
28
|
-
const
|
|
29
|
-
const header =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return new BlockProposalClass(payload, signature, txHashes);
|
|
22
|
+
const mockBlockProposalForPool = (signer, slotNumber, archive = Fr.random())=>{
|
|
23
|
+
const header = makeBlockHeader(1, {
|
|
24
|
+
slotNumber: SlotNumber(slotNumber)
|
|
25
|
+
});
|
|
26
|
+
return makeBlockProposal({
|
|
27
|
+
signer,
|
|
28
|
+
blockHeader: header,
|
|
29
|
+
archiveRoot: archive
|
|
30
|
+
});
|
|
38
31
|
};
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
const
|
|
32
|
+
// Compare checkpoint attestations buffers
|
|
33
|
+
// Using array containing as the kv store does not respect insertion order
|
|
34
|
+
const compareCheckpointAttestations = (a1, a2)=>{
|
|
42
35
|
const a1Buffer = a1.map((attestation)=>attestation.toBuffer());
|
|
43
36
|
const a2Buffer = a2.map((attestation)=>attestation.toBuffer());
|
|
44
37
|
expect(a1Buffer.length).toBe(a2Buffer.length);
|
|
45
38
|
expect(a1Buffer).toEqual(expect.arrayContaining(a2Buffer));
|
|
46
39
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
await ap.addAttestations([
|
|
107
|
-
attestations[0]
|
|
108
|
-
]);
|
|
109
|
-
expect(await ap.getAttestationsForSlotAndProposal(BigInt(slotNumber), archive.toString())).toHaveLength(1);
|
|
110
|
-
});
|
|
111
|
-
it('should store attestations by differing slot', async ()=>{
|
|
112
|
-
const slotNumbers = [
|
|
113
|
-
1,
|
|
114
|
-
2,
|
|
115
|
-
3,
|
|
116
|
-
4
|
|
117
|
-
];
|
|
118
|
-
const attestations = signers.map((signer, i)=>mockAttestation(signer, slotNumbers[i]));
|
|
119
|
-
await ap.addAttestations(attestations);
|
|
120
|
-
for (const attestation of attestations){
|
|
121
|
-
const slot = attestation.payload.header.slotNumber;
|
|
122
|
-
const archive = attestation.archive.toString();
|
|
123
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot.toBigInt(), archive);
|
|
124
|
-
expect(retreivedAttestations.length).toBe(1);
|
|
125
|
-
expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer());
|
|
126
|
-
expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
it('should store attestations by differing slot and archive', async ()=>{
|
|
130
|
-
const slotNumbers = [
|
|
131
|
-
1,
|
|
132
|
-
1,
|
|
133
|
-
2,
|
|
134
|
-
3
|
|
135
|
-
];
|
|
136
|
-
const archives = [
|
|
137
|
-
Fr.random(),
|
|
138
|
-
Fr.random(),
|
|
139
|
-
Fr.random(),
|
|
140
|
-
Fr.random()
|
|
141
|
-
];
|
|
142
|
-
const attestations = signers.map((signer, i)=>mockAttestation(signer, slotNumbers[i], archives[i]));
|
|
143
|
-
await ap.addAttestations(attestations);
|
|
144
|
-
for (const attestation of attestations){
|
|
145
|
-
const slot = attestation.payload.header.slotNumber;
|
|
146
|
-
const proposalId = attestation.archive.toString();
|
|
147
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot.toBigInt(), proposalId);
|
|
40
|
+
describe('CheckpointAttestation', ()=>{
|
|
41
|
+
it('should add attestations to pool', async ()=>{
|
|
42
|
+
const slotNumber = 420;
|
|
43
|
+
const archive = Fr.random();
|
|
44
|
+
const attestations = signers.slice(0, -1).map((signer)=>mockCheckpointAttestation(signer, slotNumber, archive));
|
|
45
|
+
await ap.addCheckpointAttestations(attestations);
|
|
46
|
+
const retrievedAttestations = await ap.getCheckpointAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
47
|
+
expect(retrievedAttestations.length).toBe(attestations.length);
|
|
48
|
+
compareCheckpointAttestations(retrievedAttestations, attestations);
|
|
49
|
+
// Check hasCheckpointAttestation for added attestations
|
|
50
|
+
for (const attestation of attestations){
|
|
51
|
+
expect(await ap.hasCheckpointAttestation(attestation)).toBe(true);
|
|
52
|
+
}
|
|
53
|
+
const retrievedAttestationsForSlot = await ap.getCheckpointAttestationsForSlot(SlotNumber(slotNumber));
|
|
54
|
+
expect(retrievedAttestationsForSlot.length).toBe(attestations.length);
|
|
55
|
+
compareCheckpointAttestations(retrievedAttestationsForSlot, attestations);
|
|
56
|
+
// Add another one
|
|
57
|
+
const newAttestation = mockCheckpointAttestation(signers[NUMBER_OF_SIGNERS_PER_TEST - 1], slotNumber, archive);
|
|
58
|
+
await ap.addCheckpointAttestations([
|
|
59
|
+
newAttestation
|
|
60
|
+
]);
|
|
61
|
+
const retrievedAttestationsAfterAdd = await ap.getCheckpointAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
62
|
+
expect(retrievedAttestationsAfterAdd.length).toBe(attestations.length + 1);
|
|
63
|
+
compareCheckpointAttestations(retrievedAttestationsAfterAdd, [
|
|
64
|
+
...attestations,
|
|
65
|
+
newAttestation
|
|
66
|
+
]);
|
|
67
|
+
expect(await ap.hasCheckpointAttestation(newAttestation)).toBe(true);
|
|
68
|
+
const retrievedAttestationsForSlotAfterAdd = await ap.getCheckpointAttestationsForSlot(SlotNumber(slotNumber));
|
|
69
|
+
expect(retrievedAttestationsForSlotAfterAdd.length).toBe(attestations.length + 1);
|
|
70
|
+
compareCheckpointAttestations(retrievedAttestationsForSlotAfterAdd, [
|
|
71
|
+
...attestations,
|
|
72
|
+
newAttestation
|
|
73
|
+
]);
|
|
74
|
+
// Delete by slot
|
|
75
|
+
await ap.deleteCheckpointAttestationsOlderThan(SlotNumber(slotNumber + 1));
|
|
76
|
+
const retreivedAttestationsAfterDelete = await ap.getCheckpointAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
77
|
+
expect(retreivedAttestationsAfterDelete.length).toBe(0);
|
|
78
|
+
// Check hasCheckpointAttestation after deletion
|
|
79
|
+
for (const attestation of attestations){
|
|
80
|
+
expect(await ap.hasCheckpointAttestation(attestation)).toBe(false);
|
|
81
|
+
}
|
|
82
|
+
expect(await ap.hasCheckpointAttestation(newAttestation)).toBe(false);
|
|
83
|
+
});
|
|
84
|
+
it('should handle duplicate proposals in a slot', async ()=>{
|
|
85
|
+
const slotNumber = 420;
|
|
86
|
+
const archive = Fr.random();
|
|
87
|
+
const header = CheckpointHeader.random({
|
|
88
|
+
slotNumber: SlotNumber(slotNumber)
|
|
89
|
+
});
|
|
90
|
+
// Use the same signer and header for all attestations
|
|
91
|
+
const attestations = [];
|
|
92
|
+
const signer = signers[0];
|
|
93
|
+
for(let i = 0; i < NUMBER_OF_SIGNERS_PER_TEST; i++){
|
|
94
|
+
attestations.push(mockCheckpointAttestation(signer, slotNumber, archive, header));
|
|
95
|
+
}
|
|
96
|
+
// Add them to store and check we end up with only one
|
|
97
|
+
await ap.addCheckpointAttestations(attestations);
|
|
98
|
+
const retreivedAttestations = await ap.getCheckpointAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
148
99
|
expect(retreivedAttestations.length).toBe(1);
|
|
149
|
-
expect(retreivedAttestations[0].toBuffer()).toEqual(
|
|
150
|
-
expect(retreivedAttestations[0].
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
const attestations = (await Promise.all(slotNumbers.map((slotNumber)=>createAttestationsForSlot(slotNumber)))).flat();
|
|
220
|
-
const proposalId = attestations[0].archive.toString();
|
|
221
|
-
await ap.addAttestations(attestations);
|
|
222
|
-
const attestationsForSlot1 = await ap.getAttestationsForSlotAndProposal(BigInt(1), proposalId);
|
|
223
|
-
expect(attestationsForSlot1.length).toBe(signers.length);
|
|
224
|
-
const deleteAttestationsSpy = jest.spyOn(ap, 'deleteAttestationsForSlot');
|
|
225
|
-
await ap.deleteAttestationsOlderThan(BigInt(73));
|
|
226
|
-
const attestationsForSlot1AfterDelete = await ap.getAttestationsForSlotAndProposal(BigInt(1), proposalId);
|
|
227
|
-
expect(attestationsForSlot1AfterDelete.length).toBe(0);
|
|
228
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledTimes(5);
|
|
229
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(BigInt(1));
|
|
230
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(BigInt(2));
|
|
231
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(BigInt(3));
|
|
232
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(BigInt(69));
|
|
233
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(BigInt(72));
|
|
100
|
+
expect(retreivedAttestations[0].toBuffer()).toEqual(attestations[0].toBuffer());
|
|
101
|
+
expect(retreivedAttestations[0].getSender()?.toString()).toEqual(signer.address.toString());
|
|
102
|
+
// Try adding them on another operation and check they are still not duplicated
|
|
103
|
+
await ap.addCheckpointAttestations([
|
|
104
|
+
attestations[0]
|
|
105
|
+
]);
|
|
106
|
+
expect(await ap.getCheckpointAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString())).toHaveLength(1);
|
|
107
|
+
});
|
|
108
|
+
it('should store attestations by differing slot', async ()=>{
|
|
109
|
+
const slotNumbers = [
|
|
110
|
+
1,
|
|
111
|
+
2,
|
|
112
|
+
3,
|
|
113
|
+
4
|
|
114
|
+
];
|
|
115
|
+
const attestations = signers.map((signer, i)=>mockCheckpointAttestation(signer, slotNumbers[i]));
|
|
116
|
+
await ap.addCheckpointAttestations(attestations);
|
|
117
|
+
for (const attestation of attestations){
|
|
118
|
+
const slot = attestation.payload.header.slotNumber;
|
|
119
|
+
const archive = attestation.archive.toString();
|
|
120
|
+
const retreivedAttestations = await ap.getCheckpointAttestationsForSlotAndProposal(slot, archive);
|
|
121
|
+
expect(retreivedAttestations.length).toBe(1);
|
|
122
|
+
expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer());
|
|
123
|
+
expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
it('should store attestations by differing slot and archive', async ()=>{
|
|
127
|
+
const slotNumbers = [
|
|
128
|
+
1,
|
|
129
|
+
1,
|
|
130
|
+
2,
|
|
131
|
+
3
|
|
132
|
+
];
|
|
133
|
+
const archives = [
|
|
134
|
+
Fr.random(),
|
|
135
|
+
Fr.random(),
|
|
136
|
+
Fr.random(),
|
|
137
|
+
Fr.random()
|
|
138
|
+
];
|
|
139
|
+
const attestations = signers.map((signer, i)=>mockCheckpointAttestation(signer, slotNumbers[i], archives[i]));
|
|
140
|
+
await ap.addCheckpointAttestations(attestations);
|
|
141
|
+
for (const attestation of attestations){
|
|
142
|
+
const slot = attestation.payload.header.slotNumber;
|
|
143
|
+
const proposalId = attestation.archive.toString();
|
|
144
|
+
const retreivedAttestations = await ap.getCheckpointAttestationsForSlotAndProposal(slot, proposalId);
|
|
145
|
+
expect(retreivedAttestations.length).toBe(1);
|
|
146
|
+
expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer());
|
|
147
|
+
expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
it('should delete attestations older than a given slot', async ()=>{
|
|
151
|
+
const slotNumbers = [
|
|
152
|
+
1,
|
|
153
|
+
2,
|
|
154
|
+
3,
|
|
155
|
+
69,
|
|
156
|
+
72,
|
|
157
|
+
74,
|
|
158
|
+
88,
|
|
159
|
+
420
|
|
160
|
+
];
|
|
161
|
+
const attestations = (await Promise.all(slotNumbers.map((slotNumber)=>createCheckpointAttestationsForSlot(slotNumber)))).flat();
|
|
162
|
+
const proposalId = attestations[0].archive.toString();
|
|
163
|
+
await ap.addCheckpointAttestations(attestations);
|
|
164
|
+
const attestationsForSlot1 = await ap.getCheckpointAttestationsForSlotAndProposal(SlotNumber(1), proposalId);
|
|
165
|
+
expect(attestationsForSlot1.length).toBe(signers.length);
|
|
166
|
+
await ap.deleteCheckpointAttestationsOlderThan(SlotNumber(73));
|
|
167
|
+
const attestationsForSlot1AfterDelete = await ap.getCheckpointAttestationsForSlotAndProposal(SlotNumber(1), proposalId);
|
|
168
|
+
expect(attestationsForSlot1AfterDelete.length).toBe(0);
|
|
169
|
+
});
|
|
234
170
|
});
|
|
235
171
|
describe('BlockProposal in attestation pool', ()=>{
|
|
236
172
|
it('should add and retrieve block proposal', async ()=>{
|
|
237
173
|
const slotNumber = 420;
|
|
238
174
|
const archive = Fr.random();
|
|
239
|
-
const proposal =
|
|
175
|
+
const proposal = await mockBlockProposalForPool(signers[0], slotNumber, archive);
|
|
240
176
|
const proposalId = proposal.archive.toString();
|
|
241
177
|
await ap.addBlockProposal(proposal);
|
|
242
178
|
const retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
@@ -256,11 +192,11 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
256
192
|
it('should update block proposal if added twice with same id', async ()=>{
|
|
257
193
|
const slotNumber = 420;
|
|
258
194
|
const archive = Fr.random();
|
|
259
|
-
const proposal1 =
|
|
195
|
+
const proposal1 = await mockBlockProposalForPool(signers[0], slotNumber, archive);
|
|
260
196
|
const proposalId = proposal1.archive.toString();
|
|
261
197
|
await ap.addBlockProposal(proposal1);
|
|
262
198
|
// Create a new proposal with same archive but different signer
|
|
263
|
-
const proposal2 =
|
|
199
|
+
const proposal2 = await mockBlockProposalForPool(signers[1], slotNumber, archive);
|
|
264
200
|
await ap.addBlockProposal(proposal2);
|
|
265
201
|
const retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
266
202
|
expect(retrievedProposal).toBeDefined();
|
|
@@ -270,8 +206,8 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
270
206
|
});
|
|
271
207
|
it('should handle block proposals with different slots and same archive', async ()=>{
|
|
272
208
|
const archive = Fr.random();
|
|
273
|
-
const proposal1 =
|
|
274
|
-
const proposal2 =
|
|
209
|
+
const proposal1 = await mockBlockProposalForPool(signers[0], 100, archive);
|
|
210
|
+
const proposal2 = await mockBlockProposalForPool(signers[1], 200, archive);
|
|
275
211
|
const proposalId = archive.toString();
|
|
276
212
|
await ap.addBlockProposal(proposal1);
|
|
277
213
|
await ap.addBlockProposal(proposal2);
|
|
@@ -279,67 +215,106 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
279
215
|
const retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
280
216
|
expect(retrievedProposal).toBeDefined();
|
|
281
217
|
expect(retrievedProposal.toBuffer()).toEqual(proposal2.toBuffer());
|
|
282
|
-
expect(retrievedProposal.slotNumber
|
|
218
|
+
expect(retrievedProposal.slotNumber).toBe(SlotNumber(200));
|
|
283
219
|
});
|
|
284
|
-
|
|
220
|
+
});
|
|
221
|
+
describe('CheckpointProposal in attestation pool', ()=>{
|
|
222
|
+
const mockCheckpointProposalForPool = (signer, slotNumber, archive = Fr.random())=>{
|
|
223
|
+
const checkpointHeader = makeCheckpointHeader(1, {
|
|
224
|
+
slotNumber: SlotNumber(slotNumber)
|
|
225
|
+
});
|
|
226
|
+
const blockHeader = makeBlockHeader(1);
|
|
227
|
+
return makeCheckpointProposal({
|
|
228
|
+
signer,
|
|
229
|
+
checkpointHeader,
|
|
230
|
+
archiveRoot: archive,
|
|
231
|
+
lastBlock: {
|
|
232
|
+
blockHeader
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
it('should add and retrieve checkpoint proposal as core (without lastBlock)', async ()=>{
|
|
285
237
|
const slotNumber = 420;
|
|
286
238
|
const archive = Fr.random();
|
|
287
|
-
const proposal =
|
|
239
|
+
const proposal = await mockCheckpointProposalForPool(signers[0], slotNumber, archive);
|
|
288
240
|
const proposalId = proposal.archive.toString();
|
|
289
|
-
|
|
290
|
-
await ap.
|
|
291
|
-
const attestations = signers.map((signer)=>mockAttestation(signer, slotNumber, archive));
|
|
292
|
-
await ap.addAttestations(attestations);
|
|
293
|
-
// Verify proposal exists
|
|
294
|
-
let retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
241
|
+
await ap.addCheckpointProposal(proposal);
|
|
242
|
+
const retrievedProposal = await ap.getCheckpointProposal(proposalId);
|
|
295
243
|
expect(retrievedProposal).toBeDefined();
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
expect(retrievedProposal).toBeUndefined();
|
|
302
|
-
expect(await ap.hasBlockProposal(proposalId)).toBe(false);
|
|
244
|
+
// Should return core version (without lastBlock)
|
|
245
|
+
expect(retrievedProposal.toBuffer()).toEqual(proposal.toCore().toBuffer());
|
|
246
|
+
// Check hasCheckpointProposal with both id and object
|
|
247
|
+
expect(await ap.hasCheckpointProposal(proposalId)).toBe(true);
|
|
248
|
+
expect(await ap.hasCheckpointProposal(proposal)).toBe(true);
|
|
303
249
|
});
|
|
304
|
-
it('should
|
|
250
|
+
it('should extract and store block proposal when adding checkpoint proposal with lastBlock', async ()=>{
|
|
305
251
|
const slotNumber = 420;
|
|
306
252
|
const archive = Fr.random();
|
|
307
|
-
const proposal =
|
|
253
|
+
const proposal = await mockCheckpointProposalForPool(signers[0], slotNumber, archive);
|
|
308
254
|
const proposalId = proposal.archive.toString();
|
|
309
|
-
//
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
319
|
-
expect(retrievedProposal).toBeUndefined();
|
|
320
|
-
expect(await ap.hasBlockProposal(proposal)).toBe(false);
|
|
255
|
+
// Verify the proposal has a lastBlock
|
|
256
|
+
const expectedBlockProposal = proposal.getBlockProposal();
|
|
257
|
+
expect(expectedBlockProposal).toBeDefined();
|
|
258
|
+
await ap.addCheckpointProposal(proposal);
|
|
259
|
+
// The block proposal should be stored separately and retrievable
|
|
260
|
+
const retrievedBlockProposal = await ap.getBlockProposal(proposalId);
|
|
261
|
+
expect(retrievedBlockProposal).toBeDefined();
|
|
262
|
+
expect(retrievedBlockProposal.archive.toString()).toBe(archive.toString());
|
|
263
|
+
expect(retrievedBlockProposal.blockHeader.toBuffer()).toEqual(expectedBlockProposal.blockHeader.toBuffer());
|
|
321
264
|
});
|
|
322
|
-
it('should
|
|
265
|
+
it('should not store block proposal when checkpoint proposal has no lastBlock', async ()=>{
|
|
323
266
|
const slotNumber = 420;
|
|
324
267
|
const archive = Fr.random();
|
|
325
|
-
const
|
|
268
|
+
const checkpointHeader = makeCheckpointHeader(1, {
|
|
269
|
+
slotNumber: SlotNumber(slotNumber)
|
|
270
|
+
});
|
|
271
|
+
// Create a checkpoint proposal WITHOUT lastBlock
|
|
272
|
+
const proposal = await makeCheckpointProposal({
|
|
273
|
+
signer: signers[0],
|
|
274
|
+
checkpointHeader,
|
|
275
|
+
archiveRoot: archive
|
|
276
|
+
});
|
|
326
277
|
const proposalId = proposal.archive.toString();
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
278
|
+
await ap.addCheckpointProposal(proposal);
|
|
279
|
+
// The checkpoint proposal should be stored
|
|
280
|
+
const retrievedCheckpointProposal = await ap.getCheckpointProposal(proposalId);
|
|
281
|
+
expect(retrievedCheckpointProposal).toBeDefined();
|
|
282
|
+
// But no block proposal should be stored (archive key won't have a block proposal)
|
|
283
|
+
const retrievedBlockProposal = await ap.getBlockProposal(proposalId);
|
|
284
|
+
expect(retrievedBlockProposal).toBeUndefined();
|
|
285
|
+
});
|
|
286
|
+
it('should return undefined for non-existent checkpoint proposal', async ()=>{
|
|
287
|
+
const nonExistentId = Fr.random().toString();
|
|
288
|
+
const retrievedProposal = await ap.getCheckpointProposal(nonExistentId);
|
|
289
|
+
expect(retrievedProposal).toBeUndefined();
|
|
290
|
+
// Check hasCheckpointProposal returns false for non-existent proposal
|
|
291
|
+
expect(await ap.hasCheckpointProposal(nonExistentId)).toBe(false);
|
|
292
|
+
});
|
|
293
|
+
it('should update checkpoint proposal if added twice with same id', async ()=>{
|
|
294
|
+
const slotNumber = 420;
|
|
295
|
+
const archive = Fr.random();
|
|
296
|
+
const proposal1 = await mockCheckpointProposalForPool(signers[0], slotNumber, archive);
|
|
297
|
+
const proposalId = proposal1.archive.toString();
|
|
298
|
+
await ap.addCheckpointProposal(proposal1);
|
|
299
|
+
// Create a new proposal with same archive but different signer
|
|
300
|
+
const proposal2 = await mockCheckpointProposalForPool(signers[1], slotNumber, archive);
|
|
301
|
+
await ap.addCheckpointProposal(proposal2);
|
|
302
|
+
const retrievedProposal = await ap.getCheckpointProposal(proposalId);
|
|
335
303
|
expect(retrievedProposal).toBeDefined();
|
|
336
|
-
|
|
337
|
-
expect(
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
304
|
+
// Should have the second proposal (as core)
|
|
305
|
+
expect(retrievedProposal.toBuffer()).toEqual(proposal2.toCore().toBuffer());
|
|
306
|
+
expect(retrievedProposal.getSender()?.toString()).toBe(signers[1].address.toString());
|
|
307
|
+
});
|
|
308
|
+
it('should throw ProposalSlotCapExceededError when exceeding capacity', async ()=>{
|
|
309
|
+
const slotNumber = 420;
|
|
310
|
+
// Add MAX_PROPOSALS_PER_SLOT proposals
|
|
311
|
+
for(let i = 0; i < MAX_PROPOSALS_PER_SLOT; i++){
|
|
312
|
+
const proposal = await mockCheckpointProposalForPool(signers[i % NUMBER_OF_SIGNERS_PER_TEST], slotNumber);
|
|
313
|
+
await ap.addCheckpointProposal(proposal);
|
|
342
314
|
}
|
|
315
|
+
// The next proposal should throw
|
|
316
|
+
const extraProposal = await mockCheckpointProposalForPool(signers[0], slotNumber);
|
|
317
|
+
await expect(ap.addCheckpointProposal(extraProposal)).rejects.toThrow('Maximum checkpoint proposals per slot');
|
|
343
318
|
});
|
|
344
319
|
});
|
|
345
320
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './attestation_pool.js';
|
|
2
2
|
export * from './memory_attestation_pool.js';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsOEJBQThCLENBQUMifQ==
|