@aztec/p2p 0.0.1-commit.d431d1c → 0.0.1-commit.db765a8
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 +10 -10
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +45 -18
- package/dest/client/interface.d.ts +46 -33
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +41 -51
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +156 -200
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
- package/dest/config.d.ts +42 -15
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +46 -37
- 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 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
- 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 +2 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +2 -2
- package/dest/mem_pools/index.d.ts +3 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- package/dest/mem_pools/instrumentation.d.ts +4 -2
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +18 -16
- package/dest/mem_pools/interface.d.ts +5 -5
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -3
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +3 -2
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +3 -2
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +8 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -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 +73 -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 +211 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +119 -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 +193 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +354 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -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 +164 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +908 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +40 -9
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
- 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/proposal_validator/block_proposal_validator.d.ts +2 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +5 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +56 -15
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +4 -3
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +232 -11
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
- package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +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 -10
- 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/archive_cache.js +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/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 +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 +118 -5
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +228 -57
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +59 -3
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +76 -38
- 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 +3 -2
- 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/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 +4 -3
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +28 -27
- package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
- package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/size_validator.js +4 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -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 +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/data_store.js +10 -6
- package/dest/services/discv5/discV5_service.js +1 -1
- package/dest/services/dummy_service.d.ts +24 -4
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +46 -1
- package/dest/services/encoding.d.ts +3 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +11 -10
- package/dest/services/gossipsub/index.d.ts +3 -0
- package/dest/services/gossipsub/index.d.ts.map +1 -0
- package/dest/services/gossipsub/index.js +2 -0
- package/dest/services/gossipsub/scoring.d.ts +21 -3
- package/dest/services/gossipsub/scoring.d.ts.map +1 -1
- package/dest/services/gossipsub/scoring.js +24 -7
- package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +346 -0
- package/dest/services/index.d.ts +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 +1 -1
- package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
- package/dest/services/libp2p/instrumentation.js +14 -3
- package/dest/services/libp2p/libp2p_service.d.ts +101 -43
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +463 -366
- package/dest/services/peer-manager/metrics.d.ts +4 -2
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/metrics.js +26 -5
- package/dest/services/peer-manager/peer_manager.d.ts +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +2 -1
- package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +33 -4
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -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 +539 -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 +46 -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 +34 -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 +130 -0
- package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +60 -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 +173 -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/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 -1
- 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/interface.d.ts +14 -3
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +17 -3
- 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 -5
- 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 +5 -0
- 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 +27 -9
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
- package/dest/services/reqresp/protocols/tx.d.ts +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +20 -0
- package/dest/services/reqresp/reqresp.d.ts +6 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +71 -27
- package/dest/services/service.d.ts +42 -3
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +22 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +55 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +71 -44
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +90 -0
- package/dest/services/tx_collection/index.d.ts +3 -1
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +2 -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 -2
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
- package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +60 -26
- package/dest/services/tx_collection/tx_collection.d.ts +29 -16
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +79 -7
- package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +26 -29
- package/dest/services/tx_collection/tx_source.d.ts +8 -3
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +19 -2
- package/dest/services/tx_file_store/config.d.ts +16 -0
- package/dest/services/tx_file_store/config.d.ts.map +1 -0
- package/dest/services/tx_file_store/config.js +22 -0
- package/dest/services/tx_file_store/index.d.ts +4 -0
- package/dest/services/tx_file_store/index.d.ts.map +1 -0
- package/dest/services/tx_file_store/index.js +3 -0
- package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
- package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_file_store/instrumentation.js +29 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
- package/dest/services/tx_file_store/tx_file_store.js +152 -0
- package/dest/services/tx_provider.d.ts +6 -6
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +9 -8
- package/dest/services/tx_provider_instrumentation.d.ts +1 -1
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
- package/dest/services/tx_provider_instrumentation.js +5 -5
- 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-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 +1 -2
- package/dest/test-helpers/mock-pubsub.d.ts +30 -4
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +105 -4
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +4 -3
- package/dest/test-helpers/test_tx_provider.d.ts +40 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +41 -0
- package/dest/test-helpers/testbench-utils.d.ts +163 -0
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
- package/dest/test-helpers/testbench-utils.js +366 -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 +219 -137
- 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 -44
- package/dest/util.d.ts +2 -2
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/bootstrap/bootstrap.ts +7 -4
- package/src/client/factory.ts +83 -36
- package/src/client/interface.ts +56 -34
- package/src/client/p2p_client.ts +196 -251
- package/src/client/test/tx_proposal_collector/README.md +227 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
- package/src/config.ts +81 -43
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +497 -91
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +2 -1
- package/src/mem_pools/index.ts +4 -1
- package/src/mem_pools/instrumentation.ts +19 -14
- package/src/mem_pools/interface.ts +4 -4
- package/src/mem_pools/tx_pool/README.md +1 -1
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +2 -2
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +2 -1
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +2 -1
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +10 -7
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
- package/src/mem_pools/tx_pool_v2/README.md +275 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -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 +90 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -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 +242 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +297 -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 +444 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +226 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1088 -0
- package/src/msg_validators/attestation_validator/attestation_validator.ts +25 -13
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -10
- package/src/msg_validators/clock_tolerance.ts +51 -0
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +1 -1
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +1 -1
- package/src/msg_validators/proposal_validator/proposal_validator.ts +36 -15
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +197 -15
- package/src/msg_validators/tx_validator/README.md +115 -0
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +27 -13
- package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
- package/src/msg_validators/tx_validator/data_validator.ts +6 -2
- package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
- package/src/msg_validators/tx_validator/factory.ts +372 -55
- package/src/msg_validators/tx_validator/gas_validator.ts +98 -29
- package/src/msg_validators/tx_validator/index.ts +1 -0
- package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
- package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +30 -32
- package/src/msg_validators/tx_validator/size_validator.ts +6 -2
- package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
- 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/data_store.ts +10 -7
- package/src/services/discv5/discV5_service.ts +1 -1
- package/src/services/dummy_service.ts +59 -2
- package/src/services/encoding.ts +9 -9
- package/src/services/gossipsub/README.md +641 -0
- package/src/services/gossipsub/index.ts +2 -0
- package/src/services/gossipsub/scoring.ts +29 -5
- package/src/services/gossipsub/topic_score_params.ts +487 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/instrumentation.ts +15 -2
- package/src/services/libp2p/libp2p_service.ts +514 -398
- package/src/services/peer-manager/metrics.ts +28 -4
- package/src/services/peer-manager/peer_manager.ts +2 -1
- package/src/services/peer-manager/peer_scoring.ts +29 -1
- package/src/services/reqresp/batch-tx-requester/README.md +305 -0
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +678 -0
- package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
- package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
- package/src/services/reqresp/batch-tx-requester/peer_collection.ts +244 -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 +16 -0
- package/src/services/reqresp/interface.ts +31 -3
- package/src/services/reqresp/metrics.ts +34 -9
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +82 -23
- package/src/services/service.ts +55 -2
- package/src/services/tx_collection/config.ts +83 -1
- package/src/services/tx_collection/fast_tx_collection.ts +93 -47
- package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
- package/src/services/tx_collection/file_store_tx_source.ts +117 -0
- package/src/services/tx_collection/index.ts +6 -0
- package/src/services/tx_collection/instrumentation.ts +17 -2
- package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
- package/src/services/tx_collection/slow_tx_collection.ts +68 -35
- package/src/services/tx_collection/tx_collection.ts +121 -24
- package/src/services/tx_collection/tx_collection_sink.ts +30 -34
- package/src/services/tx_collection/tx_source.ts +22 -3
- package/src/services/tx_file_store/config.ts +37 -0
- package/src/services/tx_file_store/index.ts +3 -0
- package/src/services/tx_file_store/instrumentation.ts +36 -0
- package/src/services/tx_file_store/tx_file_store.ts +175 -0
- package/src/services/tx_provider.ts +12 -11
- package/src/services/tx_provider_instrumentation.ts +11 -5
- package/src/test-helpers/index.ts +2 -0
- package/src/test-helpers/make-test-p2p-clients.ts +3 -5
- package/src/test-helpers/mock-pubsub.ts +146 -9
- package/src/test-helpers/reqresp-nodes.ts +4 -6
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/test-helpers/testbench-utils.ts +430 -0
- package/src/testbench/p2p_client_testbench_worker.ts +333 -131
- package/src/testbench/worker_client_manager.ts +304 -47
- package/src/util.ts +7 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
- 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 -218
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
- 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 -180
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { NoCommitteeError } from '@aztec/ethereum/contracts';
|
|
1
2
|
import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
3
|
+
import { jest } from '@jest/globals';
|
|
2
4
|
export function sharedProposalValidatorTests(params) {
|
|
3
5
|
const { validatorFactory, makeProposal, makeHeader, getSigner, getAddress, getSlot, getTxHashes, epochCacheMock } = params;
|
|
4
6
|
describe('shared proposal validation logic', ()=>{
|
|
5
7
|
let epochCache;
|
|
6
8
|
let validator;
|
|
9
|
+
const previousSlot = getSlot(99);
|
|
7
10
|
const currentSlot = getSlot(100);
|
|
8
11
|
const nextSlot = getSlot(101);
|
|
9
|
-
function mockGetProposer(currentProposer, nextProposer) {
|
|
12
|
+
function mockGetProposer(currentProposer, nextProposer, previousProposer) {
|
|
10
13
|
epochCache.getProposerAttesterAddressInSlot.mockImplementation((slot)=>{
|
|
11
14
|
if (slot === currentSlot) {
|
|
12
15
|
return Promise.resolve(currentProposer);
|
|
@@ -14,6 +17,9 @@ export function sharedProposalValidatorTests(params) {
|
|
|
14
17
|
if (slot === nextSlot) {
|
|
15
18
|
return Promise.resolve(nextProposer);
|
|
16
19
|
}
|
|
20
|
+
if (slot === previousSlot && previousProposer) {
|
|
21
|
+
return Promise.resolve(previousProposer);
|
|
22
|
+
}
|
|
17
23
|
throw new Error('Unexpected argument');
|
|
18
24
|
});
|
|
19
25
|
}
|
|
@@ -27,18 +33,68 @@ export function sharedProposalValidatorTests(params) {
|
|
|
27
33
|
nextSlot: nextSlot
|
|
28
34
|
});
|
|
29
35
|
});
|
|
30
|
-
it('returns high tolerance error if slot number is not current or next slot', async ()=>{
|
|
36
|
+
it('returns high tolerance error if slot number is not current or next slot (outside clock tolerance)', async ()=>{
|
|
31
37
|
const header = makeHeader(1, 99, 99);
|
|
32
38
|
const mockProposal = await makeProposal({
|
|
33
39
|
blockHeader: header,
|
|
34
40
|
lastBlockHeader: header
|
|
35
41
|
});
|
|
42
|
+
// Mock getEpochAndSlotNow to return time OUTSIDE clock tolerance (1000ms elapsed)
|
|
43
|
+
epochCache.getEpochAndSlotNow.mockReturnValue({
|
|
44
|
+
epoch: 1,
|
|
45
|
+
slot: currentSlot,
|
|
46
|
+
ts: 1000n,
|
|
47
|
+
nowMs: 1001000n
|
|
48
|
+
});
|
|
36
49
|
epochCache.getProposerAttesterAddressInSlot.mockResolvedValue(getAddress());
|
|
37
50
|
const result = await validator.validate(mockProposal);
|
|
38
|
-
expect(result).
|
|
51
|
+
expect(result).toEqual({
|
|
52
|
+
result: 'reject',
|
|
53
|
+
severity: PeerErrorSeverity.HighToleranceError
|
|
54
|
+
});
|
|
39
55
|
// Should not try to resolve proposers if base validation fails
|
|
40
56
|
expect(epochCache.getProposerAttesterAddressInSlot).not.toHaveBeenCalled();
|
|
41
57
|
});
|
|
58
|
+
it('returns ignore if previous slot proposal is within clock tolerance', async ()=>{
|
|
59
|
+
const previousProposer = getSigner();
|
|
60
|
+
const header = makeHeader(1, 99, 99);
|
|
61
|
+
const mockProposal = await makeProposal({
|
|
62
|
+
blockHeader: header,
|
|
63
|
+
lastBlockHeader: header,
|
|
64
|
+
signer: previousProposer
|
|
65
|
+
});
|
|
66
|
+
// Mock getEpochAndSlotNow to return time WITHIN clock tolerance (100ms elapsed)
|
|
67
|
+
epochCache.getEpochAndSlotNow.mockReturnValue({
|
|
68
|
+
epoch: 1,
|
|
69
|
+
slot: currentSlot,
|
|
70
|
+
ts: 1000n,
|
|
71
|
+
nowMs: 1000100n
|
|
72
|
+
});
|
|
73
|
+
mockGetProposer(getAddress(), getAddress(), getAddress(previousProposer));
|
|
74
|
+
const result = await validator.validate(mockProposal);
|
|
75
|
+
expect(result).toEqual({
|
|
76
|
+
result: 'ignore'
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
it('returns mid tolerance error if proposal has invalid signature', async ()=>{
|
|
80
|
+
const currentProposer = getSigner();
|
|
81
|
+
const header = makeHeader(1, 100, 100);
|
|
82
|
+
const mockProposal = await makeProposal({
|
|
83
|
+
blockHeader: header,
|
|
84
|
+
lastBlockHeader: header,
|
|
85
|
+
signer: currentProposer
|
|
86
|
+
});
|
|
87
|
+
// Override getSender to return undefined (invalid signature)
|
|
88
|
+
jest.spyOn(mockProposal, 'getSender').mockReturnValue(undefined);
|
|
89
|
+
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
90
|
+
const result = await validator.validate(mockProposal);
|
|
91
|
+
expect(result).toEqual({
|
|
92
|
+
result: 'reject',
|
|
93
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
94
|
+
});
|
|
95
|
+
// Should not try to resolve proposer if signature is invalid
|
|
96
|
+
expect(epochCache.getProposerAttesterAddressInSlot).not.toHaveBeenCalled();
|
|
97
|
+
});
|
|
42
98
|
it('returns mid tolerance error if proposer is not current proposer for current slot', async ()=>{
|
|
43
99
|
const currentProposer = getSigner();
|
|
44
100
|
const nextProposer = getSigner();
|
|
@@ -51,7 +107,10 @@ export function sharedProposalValidatorTests(params) {
|
|
|
51
107
|
});
|
|
52
108
|
mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
|
|
53
109
|
const result = await validator.validate(mockProposal);
|
|
54
|
-
expect(result).
|
|
110
|
+
expect(result).toEqual({
|
|
111
|
+
result: 'reject',
|
|
112
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
113
|
+
});
|
|
55
114
|
});
|
|
56
115
|
it('returns mid tolerance error if proposer is not next proposer for next slot', async ()=>{
|
|
57
116
|
const currentProposer = getSigner();
|
|
@@ -65,7 +124,10 @@ export function sharedProposalValidatorTests(params) {
|
|
|
65
124
|
});
|
|
66
125
|
mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
|
|
67
126
|
const result = await validator.validate(mockProposal);
|
|
68
|
-
expect(result).
|
|
127
|
+
expect(result).toEqual({
|
|
128
|
+
result: 'reject',
|
|
129
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
130
|
+
});
|
|
69
131
|
});
|
|
70
132
|
it('returns mid tolerance error if proposer is current proposer but proposal is for next slot', async ()=>{
|
|
71
133
|
const currentProposer = getSigner();
|
|
@@ -78,7 +140,39 @@ export function sharedProposalValidatorTests(params) {
|
|
|
78
140
|
});
|
|
79
141
|
mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
|
|
80
142
|
const result = await validator.validate(mockProposal);
|
|
81
|
-
expect(result).
|
|
143
|
+
expect(result).toEqual({
|
|
144
|
+
result: 'reject',
|
|
145
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
it('accepts proposal when proposer is undefined (open committee)', async ()=>{
|
|
149
|
+
const currentProposer = getSigner();
|
|
150
|
+
const header = makeHeader(1, 100, 100);
|
|
151
|
+
const mockProposal = await makeProposal({
|
|
152
|
+
blockHeader: header,
|
|
153
|
+
lastBlockHeader: header,
|
|
154
|
+
signer: currentProposer
|
|
155
|
+
});
|
|
156
|
+
epochCache.getProposerAttesterAddressInSlot.mockResolvedValue(undefined);
|
|
157
|
+
const result = await validator.validate(mockProposal);
|
|
158
|
+
expect(result).toEqual({
|
|
159
|
+
result: 'accept'
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
it('returns low tolerance error when getProposerAttesterAddressInSlot throws NoCommitteeError', async ()=>{
|
|
163
|
+
const currentProposer = getSigner();
|
|
164
|
+
const header = makeHeader(1, 100, 100);
|
|
165
|
+
const mockProposal = await makeProposal({
|
|
166
|
+
blockHeader: header,
|
|
167
|
+
lastBlockHeader: header,
|
|
168
|
+
signer: currentProposer
|
|
169
|
+
});
|
|
170
|
+
epochCache.getProposerAttesterAddressInSlot.mockRejectedValue(new NoCommitteeError());
|
|
171
|
+
const result = await validator.validate(mockProposal);
|
|
172
|
+
expect(result).toEqual({
|
|
173
|
+
result: 'reject',
|
|
174
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
175
|
+
});
|
|
82
176
|
});
|
|
83
177
|
it('returns undefined if proposal is valid for current slot and proposer', async ()=>{
|
|
84
178
|
const currentProposer = getSigner();
|
|
@@ -91,7 +185,9 @@ export function sharedProposalValidatorTests(params) {
|
|
|
91
185
|
});
|
|
92
186
|
mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
|
|
93
187
|
const result = await validator.validate(mockProposal);
|
|
94
|
-
expect(result).
|
|
188
|
+
expect(result).toEqual({
|
|
189
|
+
result: 'accept'
|
|
190
|
+
});
|
|
95
191
|
});
|
|
96
192
|
it('returns undefined if proposal is valid for next slot and proposer', async ()=>{
|
|
97
193
|
const currentProposer = getSigner();
|
|
@@ -104,7 +200,9 @@ export function sharedProposalValidatorTests(params) {
|
|
|
104
200
|
});
|
|
105
201
|
mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
|
|
106
202
|
const result = await validator.validate(mockProposal);
|
|
107
|
-
expect(result).
|
|
203
|
+
expect(result).toEqual({
|
|
204
|
+
result: 'accept'
|
|
205
|
+
});
|
|
108
206
|
});
|
|
109
207
|
describe('transaction permission validation', ()=>{
|
|
110
208
|
it('returns mid tolerance error if txs not permitted and proposal contains txHashes', async ()=>{
|
|
@@ -121,7 +219,10 @@ export function sharedProposalValidatorTests(params) {
|
|
|
121
219
|
});
|
|
122
220
|
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
123
221
|
const result = await validatorWithTxsDisabled.validate(mockProposal);
|
|
124
|
-
expect(result).
|
|
222
|
+
expect(result).toEqual({
|
|
223
|
+
result: 'reject',
|
|
224
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
225
|
+
});
|
|
125
226
|
});
|
|
126
227
|
it('returns undefined if txs not permitted but proposal has no txHashes', async ()=>{
|
|
127
228
|
const currentProposer = getSigner();
|
|
@@ -137,7 +238,9 @@ export function sharedProposalValidatorTests(params) {
|
|
|
137
238
|
});
|
|
138
239
|
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
139
240
|
const result = await validatorWithTxsDisabled.validate(mockProposal);
|
|
140
|
-
expect(result).
|
|
241
|
+
expect(result).toEqual({
|
|
242
|
+
result: 'accept'
|
|
243
|
+
});
|
|
141
244
|
});
|
|
142
245
|
it('returns undefined if txs permitted and proposal contains txHashes', async ()=>{
|
|
143
246
|
const currentProposer = getSigner();
|
|
@@ -150,7 +253,125 @@ export function sharedProposalValidatorTests(params) {
|
|
|
150
253
|
});
|
|
151
254
|
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
152
255
|
const result = await validator.validate(mockProposal);
|
|
153
|
-
expect(result).
|
|
256
|
+
expect(result).toEqual({
|
|
257
|
+
result: 'accept'
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
describe('embedded tx validation', ()=>{
|
|
262
|
+
it('returns mid tolerance error if embedded txs are not listed in txHashes', async ()=>{
|
|
263
|
+
const currentProposer = getSigner();
|
|
264
|
+
const txHashes = getTxHashes(2);
|
|
265
|
+
const header = makeHeader(1, 100, 100);
|
|
266
|
+
const mockProposal = await makeProposal({
|
|
267
|
+
blockHeader: header,
|
|
268
|
+
lastBlockHeader: header,
|
|
269
|
+
signer: currentProposer,
|
|
270
|
+
txHashes
|
|
271
|
+
});
|
|
272
|
+
// Create a fake tx whose hash is NOT in txHashes
|
|
273
|
+
const fakeTxHash = getTxHashes(1)[0];
|
|
274
|
+
const fakeTx = {
|
|
275
|
+
getTxHash: ()=>fakeTxHash,
|
|
276
|
+
validateTxHash: ()=>Promise.resolve(true)
|
|
277
|
+
};
|
|
278
|
+
Object.defineProperty(mockProposal, 'txs', {
|
|
279
|
+
get: ()=>[
|
|
280
|
+
fakeTx
|
|
281
|
+
],
|
|
282
|
+
configurable: true
|
|
283
|
+
});
|
|
284
|
+
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
285
|
+
const result = await validator.validate(mockProposal);
|
|
286
|
+
expect(result).toEqual({
|
|
287
|
+
result: 'reject',
|
|
288
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
it('returns low tolerance error if embedded tx has invalid tx hash', async ()=>{
|
|
292
|
+
const currentProposer = getSigner();
|
|
293
|
+
const txHashes = getTxHashes(2);
|
|
294
|
+
const header = makeHeader(1, 100, 100);
|
|
295
|
+
const mockProposal = await makeProposal({
|
|
296
|
+
blockHeader: header,
|
|
297
|
+
lastBlockHeader: header,
|
|
298
|
+
signer: currentProposer,
|
|
299
|
+
txHashes
|
|
300
|
+
});
|
|
301
|
+
// Create a fake tx whose hash IS in txHashes but validateTxHash returns false
|
|
302
|
+
const fakeTx = {
|
|
303
|
+
getTxHash: ()=>txHashes[0],
|
|
304
|
+
validateTxHash: ()=>Promise.resolve(false)
|
|
305
|
+
};
|
|
306
|
+
Object.defineProperty(mockProposal, 'txs', {
|
|
307
|
+
get: ()=>[
|
|
308
|
+
fakeTx
|
|
309
|
+
],
|
|
310
|
+
configurable: true
|
|
311
|
+
});
|
|
312
|
+
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
313
|
+
const result = await validator.validate(mockProposal);
|
|
314
|
+
expect(result).toEqual({
|
|
315
|
+
result: 'reject',
|
|
316
|
+
severity: PeerErrorSeverity.LowToleranceError
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
describe('maxTxsPerBlock validation', ()=>{
|
|
321
|
+
it('rejects proposal when txHashes exceed maxTxsPerBlock', async ()=>{
|
|
322
|
+
const validatorWithMaxTxs = validatorFactory(epochCache, {
|
|
323
|
+
txsPermitted: true,
|
|
324
|
+
maxTxsPerBlock: 2
|
|
325
|
+
});
|
|
326
|
+
const currentProposer = getSigner();
|
|
327
|
+
const header = makeHeader(1, 100, 100);
|
|
328
|
+
const mockProposal = await makeProposal({
|
|
329
|
+
blockHeader: header,
|
|
330
|
+
lastBlockHeader: header,
|
|
331
|
+
signer: currentProposer,
|
|
332
|
+
txHashes: getTxHashes(3)
|
|
333
|
+
});
|
|
334
|
+
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
335
|
+
const result = await validatorWithMaxTxs.validate(mockProposal);
|
|
336
|
+
expect(result).toEqual({
|
|
337
|
+
result: 'reject',
|
|
338
|
+
severity: PeerErrorSeverity.MidToleranceError
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
it('accepts proposal when txHashes count equals maxTxsPerBlock', async ()=>{
|
|
342
|
+
const validatorWithMaxTxs = validatorFactory(epochCache, {
|
|
343
|
+
txsPermitted: true,
|
|
344
|
+
maxTxsPerBlock: 2
|
|
345
|
+
});
|
|
346
|
+
const currentProposer = getSigner();
|
|
347
|
+
const header = makeHeader(1, 100, 100);
|
|
348
|
+
const mockProposal = await makeProposal({
|
|
349
|
+
blockHeader: header,
|
|
350
|
+
lastBlockHeader: header,
|
|
351
|
+
signer: currentProposer,
|
|
352
|
+
txHashes: getTxHashes(2)
|
|
353
|
+
});
|
|
354
|
+
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
355
|
+
const result = await validatorWithMaxTxs.validate(mockProposal);
|
|
356
|
+
expect(result).toEqual({
|
|
357
|
+
result: 'accept'
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
it('accepts proposal when maxTxsPerBlock is not set (unlimited)', async ()=>{
|
|
361
|
+
// Default validator has no maxTxsPerBlock
|
|
362
|
+
const currentProposer = getSigner();
|
|
363
|
+
const header = makeHeader(1, 100, 100);
|
|
364
|
+
const mockProposal = await makeProposal({
|
|
365
|
+
blockHeader: header,
|
|
366
|
+
lastBlockHeader: header,
|
|
367
|
+
signer: currentProposer,
|
|
368
|
+
txHashes: getTxHashes(10)
|
|
369
|
+
});
|
|
370
|
+
mockGetProposer(getAddress(currentProposer), getAddress());
|
|
371
|
+
const result = await validator.validate(mockProposal);
|
|
372
|
+
expect(result).toEqual({
|
|
373
|
+
result: 'accept'
|
|
374
|
+
});
|
|
154
375
|
});
|
|
155
376
|
});
|
|
156
377
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare class AggregateTxValidator<T
|
|
3
|
-
|
|
1
|
+
import type { TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
|
|
2
|
+
export declare class AggregateTxValidator<T> implements TxValidator<T> {
|
|
3
|
+
readonly validators: TxValidator<T>[];
|
|
4
4
|
constructor(...validators: TxValidator<T>[]);
|
|
5
5
|
validateTx(tx: T): Promise<TxValidationResult>;
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hZ2dyZWdhdGVfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhFLHFCQUFhLG9CQUFvQixDQUFDLENBQUMsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQU0xQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWtCbkQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate_tx_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/aggregate_tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"aggregate_tx_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/aggregate_tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAExE,qBAAa,oBAAoB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,YAAY,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAM1C;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkBnD;CACF"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export class AggregateTxValidator {
|
|
2
|
-
|
|
2
|
+
validators;
|
|
3
3
|
constructor(...validators){
|
|
4
4
|
if (validators.length === 0) {
|
|
5
5
|
throw new Error('At least one validator must be provided');
|
|
6
6
|
}
|
|
7
|
-
this
|
|
7
|
+
this.validators = validators;
|
|
8
8
|
}
|
|
9
9
|
async validateTx(tx) {
|
|
10
10
|
const aggregate = {
|
|
11
11
|
result: 'valid',
|
|
12
12
|
reason: []
|
|
13
13
|
};
|
|
14
|
-
for (const validator of this
|
|
14
|
+
for (const validator of this.validators){
|
|
15
15
|
const result = await validator.validateTx(tx);
|
|
16
16
|
if (result.result === 'invalid') {
|
|
17
17
|
aggregate.result = 'invalid';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
/** Returns the default list of functions allowed to run in the setup phase of a transaction. */
|
|
2
3
|
export declare function getDefaultAllowedSetupFunctions(): Promise<AllowedElement[]>;
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZF9wdWJsaWNfc2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvYWxsb3dlZF9wdWJsaWNfc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJdEUsZ0dBQWdHO0FBQ2hHLHdCQUFzQiwrQkFBK0IsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0F1Q2pGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowed_public_setup.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/allowed_public_setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"allowed_public_setup.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/allowed_public_setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,gGAAgG;AAChG,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAuCjF"}
|
|
@@ -1,25 +1,40 @@
|
|
|
1
|
-
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
2
1
|
import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
3
2
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
3
|
+
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
4
|
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
5
|
-
let defaultAllowedSetupFunctions
|
|
6
|
-
export async function getDefaultAllowedSetupFunctions() {
|
|
5
|
+
let defaultAllowedSetupFunctions;
|
|
6
|
+
/** Returns the default list of functions allowed to run in the setup phase of a transaction. */ export async function getDefaultAllowedSetupFunctions() {
|
|
7
7
|
if (defaultAllowedSetupFunctions === undefined) {
|
|
8
|
+
const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
|
|
9
|
+
const setAuthorizedInternalSelector = await FunctionSelector.fromSignature('_set_authorized((Field),Field,bool)');
|
|
10
|
+
const setAuthorizedSelector = await FunctionSelector.fromSignature('set_authorized(Field,bool)');
|
|
11
|
+
const increaseBalanceSelector = await FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
|
|
12
|
+
const transferInPublicSelector = await FunctionSelector.fromSignature('transfer_in_public((Field),(Field),u128,Field)');
|
|
8
13
|
defaultAllowedSetupFunctions = [
|
|
9
|
-
// needed for authwit support
|
|
14
|
+
// AuthRegistry: needed for authwit support via private path (set_authorized_private enqueues _set_authorized)
|
|
10
15
|
{
|
|
11
|
-
address: ProtocolContractAddress.AuthRegistry
|
|
16
|
+
address: ProtocolContractAddress.AuthRegistry,
|
|
17
|
+
selector: setAuthorizedInternalSelector
|
|
12
18
|
},
|
|
13
|
-
// needed for
|
|
19
|
+
// AuthRegistry: needed for authwit support via public path (PublicFeePaymentMethod calls set_authorized directly)
|
|
14
20
|
{
|
|
15
|
-
address: ProtocolContractAddress.
|
|
21
|
+
address: ProtocolContractAddress.AuthRegistry,
|
|
22
|
+
selector: setAuthorizedSelector
|
|
16
23
|
},
|
|
17
|
-
// needed for
|
|
24
|
+
// FeeJuice: needed for claiming on the same tx as a spend (claim_and_end_setup enqueues this)
|
|
18
25
|
{
|
|
19
|
-
|
|
26
|
+
address: ProtocolContractAddress.FeeJuice,
|
|
27
|
+
selector: increaseBalanceSelector
|
|
20
28
|
},
|
|
29
|
+
// Token: needed for private transfers via FPC (transfer_to_public enqueues this)
|
|
21
30
|
{
|
|
22
|
-
classId:
|
|
31
|
+
classId: tokenClassId,
|
|
32
|
+
selector: increaseBalanceSelector
|
|
33
|
+
},
|
|
34
|
+
// Token: needed for public transfers via FPC (fee_entrypoint_public enqueues this)
|
|
35
|
+
{
|
|
36
|
+
classId: tokenClassId,
|
|
37
|
+
selector: transferInPublicSelector
|
|
23
38
|
}
|
|
24
39
|
];
|
|
25
40
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
1
|
import type { ArchiveSource } from '@aztec/p2p';
|
|
2
|
+
import type { BlockHash } from '@aztec/stdlib/block';
|
|
3
3
|
import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
/**
|
|
5
5
|
* Implements an archive source by checking a DB and an in-memory collection.
|
|
@@ -9,6 +9,6 @@ export declare class ArchiveCache implements ArchiveSource {
|
|
|
9
9
|
private db;
|
|
10
10
|
archives: Map<string, bigint>;
|
|
11
11
|
constructor(db: MerkleTreeReadOperations);
|
|
12
|
-
getArchiveIndices(archives:
|
|
12
|
+
getArchiveIndices(archives: BlockHash[]): Promise<(bigint | undefined)[]>;
|
|
13
13
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZV9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hcmNoaXZlX2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2hGOzs7R0FHRztBQUNILHFCQUFhLFlBQWEsWUFBVyxhQUFhO0lBR3BDLE9BQU8sQ0FBQyxFQUFFO0lBRnRCLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTlCLFlBQW9CLEVBQUUsRUFBRSx3QkFBd0IsRUFFL0M7SUFFWSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FVckY7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive_cache.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/archive_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"archive_cache.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/archive_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,YAAa,YAAW,aAAa;IAGpC,OAAO,CAAC,EAAE;IAFtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,YAAoB,EAAE,EAAE,wBAAwB,EAE/C;IAEY,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAUrF;CACF"}
|
|
@@ -10,7 +10,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
10
10
|
this.archives = new Map();
|
|
11
11
|
}
|
|
12
12
|
async getArchiveIndices(archives) {
|
|
13
|
-
const toCheckDb = archives.filter((n)=>!this.archives.has(n.toString()));
|
|
13
|
+
const toCheckDb = archives.filter((n)=>!this.archives.has(n.toString())).map((n)=>n.toFr());
|
|
14
14
|
const dbHits = await this.db.findLeafIndices(MerkleTreeId.ARCHIVE, toCheckDb);
|
|
15
15
|
dbHits.forEach((x, index)=>{
|
|
16
16
|
if (x !== undefined) {
|
|
@@ -1,11 +1,25 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import
|
|
1
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
2
|
+
import type { BlockHash } from '@aztec/stdlib/block';
|
|
3
|
+
import { type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
|
|
3
4
|
export interface ArchiveSource {
|
|
4
|
-
getArchiveIndices: (archives:
|
|
5
|
+
getArchiveIndices: (archives: BlockHash[]) => Promise<(bigint | undefined)[]>;
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
+
/** Structural interface for block header validation. */
|
|
8
|
+
export interface HasBlockHeaderData {
|
|
9
|
+
txHash: {
|
|
10
|
+
toString(): string;
|
|
11
|
+
};
|
|
12
|
+
data: {
|
|
13
|
+
constants: {
|
|
14
|
+
anchorBlockHeader: {
|
|
15
|
+
hash(): Promise<BlockHash>;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare class BlockHeaderTxValidator<T extends HasBlockHeaderData> implements TxValidator<T> {
|
|
7
21
|
#private;
|
|
8
|
-
constructor(archiveSource: ArchiveSource);
|
|
22
|
+
constructor(archiveSource: ArchiveSource, bindings?: LoggerBindings);
|
|
9
23
|
validateTx(tx: T): Promise<TxValidationResult>;
|
|
10
24
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfaGVhZGVyX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9ibG9ja19oZWFkZXJfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQXlCLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRyxNQUFNLFdBQVcsYUFBYTtJQUM1QixpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQy9FO0FBRUQsd0RBQXdEO0FBQ3hELE1BQU0sV0FBVyxrQkFBa0I7SUFDakMsTUFBTSxFQUFFO1FBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDL0IsSUFBSSxFQUFFO1FBQ0osU0FBUyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUU7Z0JBQ2pCLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCxxQkFBYSxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsa0JBQWtCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUl6RixZQUFZLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUdsRTtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQU9uRDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_header_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/block_header_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"block_header_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/block_header_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAyB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,iBAAiB,EAAE;gBACjB,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;aAC5B,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIzF,YAAY,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGlE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOnD;CACF"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { TX_ERROR_BLOCK_HEADER } from '@aztec/stdlib/tx';
|
|
3
3
|
export class BlockHeaderTxValidator {
|
|
4
|
-
#log
|
|
4
|
+
#log;
|
|
5
5
|
#archiveSource;
|
|
6
|
-
constructor(archiveSource){
|
|
6
|
+
constructor(archiveSource, bindings){
|
|
7
7
|
this.#archiveSource = archiveSource;
|
|
8
|
+
this.#log = createLogger('p2p:tx_validator:tx_block_header', bindings);
|
|
8
9
|
}
|
|
9
10
|
async validateTx(tx) {
|
|
10
11
|
const [index] = await this.#archiveSource.getArchiveIndices([
|
|
11
12
|
await tx.data.constants.anchorBlockHeader.hash()
|
|
12
13
|
]);
|
|
13
14
|
if (index === undefined) {
|
|
14
|
-
this.#log.verbose(`Rejecting tx ${
|
|
15
|
+
this.#log.verbose(`Rejecting tx ${tx.txHash} for referencing an unknown block header`);
|
|
15
16
|
return {
|
|
16
17
|
result: 'invalid',
|
|
17
18
|
reason: [
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
1
2
|
import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
|
|
2
3
|
export declare class DataTxValidator implements TxValidator<Tx> {
|
|
3
4
|
#private;
|
|
5
|
+
constructor(bindings?: LoggerBindings);
|
|
4
6
|
validateTx(tx: Tx): Promise<TxValidationResult>;
|
|
5
7
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZGF0YV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFTTCxFQUFFLEVBQ0YsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIscUJBQWEsZUFBZ0IsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdyRCxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FNcEQ7Q0FtR0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EASL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGrD,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAMpD;CAmGF"}
|
|
@@ -3,7 +3,10 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
3
3
|
import { computeCalldataHash } from '@aztec/stdlib/hash';
|
|
4
4
|
import { TX_ERROR_CALLDATA_COUNT_MISMATCH, TX_ERROR_CALLDATA_COUNT_TOO_LARGE, TX_ERROR_CONTRACT_CLASS_LOGS, TX_ERROR_CONTRACT_CLASS_LOG_COUNT, TX_ERROR_CONTRACT_CLASS_LOG_LENGTH, TX_ERROR_CONTRACT_CLASS_LOG_SORTING, TX_ERROR_INCORRECT_CALLDATA, TX_ERROR_INCORRECT_HASH, Tx } from '@aztec/stdlib/tx';
|
|
5
5
|
export class DataTxValidator {
|
|
6
|
-
#log
|
|
6
|
+
#log;
|
|
7
|
+
constructor(bindings){
|
|
8
|
+
this.#log = createLogger('p2p:tx_validator:tx_data', bindings);
|
|
9
|
+
}
|
|
7
10
|
async validateTx(tx) {
|
|
8
11
|
const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx);
|
|
9
12
|
return reason ? {
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
3
|
+
import { type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
|
|
2
4
|
export interface NullifierSource {
|
|
3
5
|
nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
|
|
4
6
|
}
|
|
5
|
-
|
|
7
|
+
/** Structural interface for double-spend validation. */
|
|
8
|
+
export interface HasNullifierData {
|
|
9
|
+
txHash: {
|
|
10
|
+
toString(): string;
|
|
11
|
+
};
|
|
12
|
+
data: {
|
|
13
|
+
getNonEmptyNullifiers(): Fr[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare class DoubleSpendTxValidator<T extends HasNullifierData> implements TxValidator<T> {
|
|
6
17
|
#private;
|
|
7
|
-
constructor(nullifierSource: NullifierSource);
|
|
18
|
+
constructor(nullifierSource: NullifierSource, bindings?: LoggerBindings);
|
|
8
19
|
validateTx(tx: T): Promise<TxValidationResult>;
|
|
9
20
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlX3NwZW5kX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9kb3VibGVfc3BlbmRfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBR0wsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsTUFBTSxXQUFXLGVBQWU7SUFDOUIsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0NBQy9EO0FBRUQsd0RBQXdEO0FBQ3hELE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsTUFBTSxFQUFFO1FBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDL0IsSUFBSSxFQUFFO1FBQUUscUJBQXFCLElBQUksRUFBRSxFQUFFLENBQUE7S0FBRSxDQUFDO0NBQ3pDO0FBRUQscUJBQWEsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLGdCQUFnQixDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQzs7SUFJdkYsWUFBWSxlQUFlLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHdEU7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FnQm5EO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QAAE,qBAAqB,IAAI,EAAE,EAAE,CAAA;KAAE,CAAC;CACzC;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,gBAAgB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIvF,YAAY,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGtE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgBnD;CACF"}
|