@aztec/p2p 5.0.0-private.20260319 → 5.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +22 -6
- package/dest/client/factory.d.ts +4 -3
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +33 -24
- package/dest/client/interface.d.ts +43 -11
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +33 -19
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +100 -44
- package/dest/config.d.ts +137 -107
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +64 -23
- package/dest/errors/p2p-service.error.d.ts +9 -0
- package/dest/errors/p2p-service.error.d.ts.map +1 -0
- package/dest/errors/p2p-service.error.js +10 -0
- package/dest/errors/reqresp.error.d.ts +1 -20
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +0 -21
- package/dest/index.d.ts +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +98 -56
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +265 -196
- 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 +175 -59
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +6 -4
- package/dest/mem_pools/index.d.ts +1 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.d.ts +1 -1
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +17 -1
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +1 -5
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +1 -7
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +6 -6
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +22 -5
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -2
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +7 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +10 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +8 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +7 -4
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +8 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +153 -111
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +38 -16
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +8 -3
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +2 -2
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +8 -3
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +8 -2
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +25 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +77 -14
- 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/aggregate_tx_validator.js +8 -15
- package/dest/msg_validators/tx_validator/allowed_public_setup.js +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +36 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +14 -15
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/factory.js +36 -17
- package/dest/msg_validators/tx_validator/gas_validator.d.ts +47 -10
- package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/gas_validator.js +65 -48
- package/dest/msg_validators/tx_validator/index.d.ts +3 -1
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/index.js +2 -0
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
- 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 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +5 -5
- package/dest/services/discv5/discV5_service.d.ts +13 -2
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +119 -23
- package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
- package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
- package/dest/services/discv5/persisted_enr_store.js +145 -0
- package/dest/services/dummy_service.d.ts +15 -15
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +15 -16
- package/dest/services/encoding.d.ts +8 -8
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +11 -15
- package/dest/services/gossipsub/topic_score_params.d.ts +6 -12
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +4 -14
- 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 +14 -0
- package/dest/services/libp2p/libp2p_service.d.ts +44 -39
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +383 -278
- package/dest/services/peer-manager/peer_manager.d.ts +20 -3
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +79 -23
- package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +102 -13
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +1 -8
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +38 -44
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +8 -5
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
- package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
- package/dest/services/reqresp/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/interface.d.ts +16 -18
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +10 -20
- package/dest/services/reqresp/metrics.d.ts +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.js +0 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
- 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 +31 -28
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +12 -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 +42 -24
- package/dest/services/reqresp/protocols/index.d.ts +1 -2
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +0 -1
- package/dest/services/reqresp/protocols/tx.d.ts +1 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +1 -3
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
- package/dest/services/reqresp/reqresp.d.ts +7 -29
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +26 -207
- package/dest/services/service.d.ts +25 -12
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +2 -23
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +2 -55
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
- package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +39 -29
- package/dest/services/tx_collection/index.d.ts +2 -3
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +0 -1
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +0 -2
- package/dest/services/tx_collection/tx_collection.d.ts +35 -51
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +275 -119
- package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +2 -2
- package/dest/services/tx_collection/tx_source.d.ts +6 -5
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +13 -8
- package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +4 -14
- package/dest/services/tx_provider.d.ts +3 -1
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +3 -0
- package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +5 -2
- package/dest/test-helpers/mock-pubsub.d.ts +23 -9
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +44 -44
- package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +16 -18
- package/dest/test-helpers/test_tx_provider.d.ts +3 -1
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
- package/dest/test-helpers/test_tx_provider.js +3 -0
- package/dest/test-helpers/testbench-utils.d.ts +14 -14
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +25 -13
- package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +102 -41
- package/dest/testbench/worker_client_manager.d.ts +10 -6
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +51 -9
- package/dest/util.d.ts +11 -6
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +35 -14
- package/dest/versioning.d.ts +3 -6
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +3 -24
- package/package.json +16 -16
- package/src/bootstrap/bootstrap.ts +17 -3
- package/src/client/factory.ts +52 -24
- package/src/client/interface.ts +38 -17
- package/src/client/p2p_client.ts +118 -76
- package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
- package/src/config.ts +130 -31
- package/src/errors/p2p-service.error.ts +11 -0
- package/src/errors/reqresp.error.ts +0 -25
- package/src/index.ts +0 -1
- package/src/mem_pools/attestation_pool/attestation_pool.ts +319 -238
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +198 -62
- package/src/mem_pools/attestation_pool/mocks.ts +13 -8
- package/src/mem_pools/index.ts +0 -3
- package/src/mem_pools/instrumentation.ts +5 -1
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +1 -9
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +7 -7
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +1 -1
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
- package/src/mem_pools/tx_pool_v2/interfaces.ts +18 -4
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +20 -8
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +12 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +8 -4
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +163 -117
- package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -15
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +15 -7
- package/src/msg_validators/proposal_validator/README.md +1 -1
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +15 -3
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -3
- package/src/msg_validators/proposal_validator/proposal_validator.ts +89 -11
- package/src/msg_validators/tx_validator/README.md +13 -3
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
- package/src/msg_validators/tx_validator/allowed_public_setup.ts +3 -3
- package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
- package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
- package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
- package/src/msg_validators/tx_validator/data_validator.ts +44 -1
- package/src/msg_validators/tx_validator/factory.ts +44 -20
- package/src/msg_validators/tx_validator/gas_validator.ts +99 -54
- package/src/msg_validators/tx_validator/index.ts +2 -0
- package/src/msg_validators/tx_validator/phases_validator.ts +3 -3
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
- package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
- package/src/services/data_store.ts +5 -13
- package/src/services/discv5/discV5_service.ts +126 -14
- package/src/services/discv5/persisted_enr_store.ts +158 -0
- package/src/services/dummy_service.ts +20 -39
- package/src/services/encoding.ts +11 -21
- package/src/services/gossipsub/README.md +33 -11
- package/src/services/gossipsub/topic_score_params.ts +9 -18
- package/src/services/libp2p/instrumentation.ts +14 -0
- package/src/services/libp2p/libp2p_service.ts +436 -311
- package/src/services/peer-manager/peer_manager.ts +86 -22
- package/src/services/peer-manager/peer_scoring.ts +102 -8
- package/src/services/reqresp/README.md +0 -14
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +42 -52
- package/src/services/reqresp/batch-tx-requester/interface.ts +11 -4
- package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
- package/src/services/reqresp/config.ts +2 -2
- package/src/services/reqresp/interface.ts +21 -47
- package/src/services/reqresp/metrics.ts +0 -1
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -30
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -20
- package/src/services/reqresp/protocols/index.ts +0 -1
- package/src/services/reqresp/protocols/tx.ts +1 -3
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
- package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
- package/src/services/reqresp/reqresp.ts +29 -252
- package/src/services/service.ts +31 -28
- package/src/services/tx_collection/config.ts +3 -80
- package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
- package/src/services/tx_collection/file_store_tx_source.ts +43 -31
- package/src/services/tx_collection/index.ts +1 -6
- package/src/services/tx_collection/instrumentation.ts +1 -7
- package/src/services/tx_collection/tx_collection.ts +330 -173
- package/src/services/tx_collection/tx_collection_sink.ts +2 -2
- package/src/services/tx_collection/tx_source.ts +10 -8
- package/src/services/tx_file_store/tx_file_store.ts +5 -17
- package/src/services/tx_provider.ts +5 -0
- package/src/test-helpers/make-test-p2p-clients.ts +3 -0
- package/src/test-helpers/mock-pubsub.ts +46 -60
- package/src/test-helpers/reqresp-nodes.ts +12 -22
- package/src/test-helpers/test_tx_provider.ts +5 -0
- package/src/test-helpers/testbench-utils.ts +31 -26
- package/src/testbench/p2p_client_testbench_worker.ts +110 -55
- package/src/testbench/worker_client_manager.ts +59 -20
- package/src/util.ts +32 -17
- package/src/versioning.ts +3 -33
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
- package/dest/mem_pools/tx_pool/index.d.ts +0 -3
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.js +0 -2
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.js +0 -15
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
- package/dest/msg_validators/clock_tolerance.d.ts +0 -21
- package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
- package/dest/msg_validators/clock_tolerance.js +0 -38
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
- package/dest/services/reqresp/protocols/block.d.ts +0 -9
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.js +0 -32
- package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/fast_tx_collection.js +0 -311
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
- package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
- package/dest/services/tx_collection/slow_tx_collection.js +0 -211
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -344
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
- package/src/mem_pools/tx_pool/README.md +0 -270
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
- package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
- package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
- package/src/mem_pools/tx_pool/index.ts +0 -2
- package/src/mem_pools/tx_pool/priority.ts +0 -20
- package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
- package/src/msg_validators/clock_tolerance.ts +0 -52
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
- package/src/services/reqresp/protocols/block.ts +0 -37
- package/src/services/tx_collection/fast_tx_collection.ts +0 -361
- package/src/services/tx_collection/proposal_tx_collector.ts +0 -108
- package/src/services/tx_collection/slow_tx_collection.ts +0 -266
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dest/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, percentageConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
|
|
1
|
+
import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper, percentageConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -9,26 +9,22 @@ import { p2pReqRespConfigMappings } from './services/reqresp/config.js';
|
|
|
9
9
|
import { txCollectionConfigMappings } from './services/tx_collection/config.js';
|
|
10
10
|
import { txFileStoreConfigMappings } from './services/tx_file_store/config.js';
|
|
11
11
|
export const DEFAULT_P2P_PORT = 40400;
|
|
12
|
+
/** Default endpoints used to discover this machine's public IPv4 when `queryForIp` is enabled. */ export const DEFAULT_PUBLIC_IP_SERVICES = [
|
|
13
|
+
'https://api.ipify.org/',
|
|
14
|
+
'https://checkip.amazonaws.com/',
|
|
15
|
+
'https://ifconfig.me/ip',
|
|
16
|
+
'https://icanhazip.com/'
|
|
17
|
+
];
|
|
12
18
|
export const p2pConfigMappings = {
|
|
13
19
|
validateMaxTxsPerBlock: {
|
|
14
20
|
env: 'VALIDATOR_MAX_TX_PER_BLOCK',
|
|
15
21
|
description: 'Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set.',
|
|
16
|
-
|
|
22
|
+
...optionalNumberConfigHelper()
|
|
17
23
|
},
|
|
18
24
|
validateMaxTxsPerCheckpoint: {
|
|
19
25
|
env: 'VALIDATOR_MAX_TX_PER_CHECKPOINT',
|
|
20
26
|
description: 'Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set.',
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
validateMaxL2BlockGas: {
|
|
24
|
-
env: 'VALIDATOR_MAX_L2_BLOCK_GAS',
|
|
25
|
-
description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.',
|
|
26
|
-
parseEnv: (val)=>val ? parseInt(val, 10) : undefined
|
|
27
|
-
},
|
|
28
|
-
validateMaxDABlockGas: {
|
|
29
|
-
env: 'VALIDATOR_MAX_DA_BLOCK_GAS',
|
|
30
|
-
description: 'Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected.',
|
|
31
|
-
parseEnv: (val)=>val ? parseInt(val, 10) : undefined
|
|
27
|
+
...optionalNumberConfigHelper()
|
|
32
28
|
},
|
|
33
29
|
p2pEnabled: {
|
|
34
30
|
env: 'P2P_ENABLED',
|
|
@@ -45,11 +41,6 @@ export const p2pConfigMappings = {
|
|
|
45
41
|
description: 'The frequency in which to check for new L2 blocks.',
|
|
46
42
|
...numberConfigHelper(100)
|
|
47
43
|
},
|
|
48
|
-
slotCheckIntervalMS: {
|
|
49
|
-
env: 'P2P_SLOT_CHECK_INTERVAL_MS',
|
|
50
|
-
description: 'The frequency in which to check for new L2 slots.',
|
|
51
|
-
...numberConfigHelper(1000)
|
|
52
|
-
},
|
|
53
44
|
debugDisableColocationPenalty: {
|
|
54
45
|
env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
|
|
55
46
|
description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
|
|
@@ -123,6 +114,12 @@ export const p2pConfigMappings = {
|
|
|
123
114
|
description: 'If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.',
|
|
124
115
|
...booleanConfigHelper()
|
|
125
116
|
},
|
|
117
|
+
publicIpServices: {
|
|
118
|
+
env: 'P2P_PUBLIC_IP_SERVICES',
|
|
119
|
+
parseEnv: (val)=>val.split(',').map((s)=>s.trim()).filter(Boolean),
|
|
120
|
+
description: 'Comma-separated HTTPS URLs that return plain-text public IPv4. Used when P2P_QUERY_FOR_IP is true and P2P_IP is unset. Tried in order until one succeeds.',
|
|
121
|
+
defaultValue: DEFAULT_PUBLIC_IP_SERVICES
|
|
122
|
+
},
|
|
126
123
|
gossipsubInterval: {
|
|
127
124
|
env: 'P2P_GOSSIPSUB_INTERVAL_MS',
|
|
128
125
|
description: 'The interval of the gossipsub heartbeat to perform maintenance tasks.',
|
|
@@ -156,7 +153,7 @@ export const p2pConfigMappings = {
|
|
|
156
153
|
gossipsubMcacheLength: {
|
|
157
154
|
env: 'P2P_GOSSIPSUB_MCACHE_LENGTH',
|
|
158
155
|
description: 'The number of gossipsub interval message cache windows to keep.',
|
|
159
|
-
...numberConfigHelper(
|
|
156
|
+
...numberConfigHelper(12)
|
|
160
157
|
},
|
|
161
158
|
gossipsubMcacheGossip: {
|
|
162
159
|
env: 'P2P_GOSSIPSUB_MCACHE_GOSSIP',
|
|
@@ -168,6 +165,11 @@ export const p2pConfigMappings = {
|
|
|
168
165
|
description: 'How long to keep message IDs in the seen cache.',
|
|
169
166
|
...numberConfigHelper(20 * 60 * 1000)
|
|
170
167
|
},
|
|
168
|
+
maxGossipClockDisparityMs: {
|
|
169
|
+
env: 'P2P_MAX_GOSSIP_CLOCK_DISPARITY_MS',
|
|
170
|
+
description: 'Maximum clock-disparity tolerance (ms) applied to both ends of proposal/attestation gossip receive windows.',
|
|
171
|
+
...numberConfigHelper(500)
|
|
172
|
+
},
|
|
171
173
|
gossipsubTxTopicWeight: {
|
|
172
174
|
env: 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT',
|
|
173
175
|
description: 'The weight of the tx topic for the gossipsub protocol.',
|
|
@@ -193,6 +195,11 @@ export const p2pConfigMappings = {
|
|
|
193
195
|
50
|
|
194
196
|
]
|
|
195
197
|
},
|
|
198
|
+
peerBanDurationSeconds: {
|
|
199
|
+
env: 'P2P_PEER_BAN_DURATION_SECONDS',
|
|
200
|
+
description: 'How long (in seconds) a peer is banned for once its score drops below the ban threshold.',
|
|
201
|
+
...numberConfigHelper(24 * 60 * 60)
|
|
202
|
+
},
|
|
196
203
|
doubleSpendSeverePeerPenaltyWindow: {
|
|
197
204
|
env: 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW',
|
|
198
205
|
description: 'The "age" (in L2 blocks) of a tx after which we heavily penalize a peer for sending it.',
|
|
@@ -228,7 +235,7 @@ export const p2pConfigMappings = {
|
|
|
228
235
|
},
|
|
229
236
|
p2pStoreMapSizeKb: {
|
|
230
237
|
env: 'P2P_STORE_MAP_SIZE_KB',
|
|
231
|
-
|
|
238
|
+
...optionalNumberConfigHelper(),
|
|
232
239
|
description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.'
|
|
233
240
|
},
|
|
234
241
|
txPublicSetupAllowListExtend: {
|
|
@@ -249,6 +256,11 @@ export const p2pConfigMappings = {
|
|
|
249
256
|
description: 'The number of messages to keep in the seen message cache',
|
|
250
257
|
...numberConfigHelper(100_000)
|
|
251
258
|
},
|
|
259
|
+
txValidationCacheSize: {
|
|
260
|
+
env: 'P2P_TX_VALIDATION_CACHE_SIZE',
|
|
261
|
+
description: 'Maximum number of items to keep in the tx validation LRU cache.',
|
|
262
|
+
...numberConfigHelper(5_000)
|
|
263
|
+
},
|
|
252
264
|
p2pDisableStatusHandshake: {
|
|
253
265
|
env: 'P2P_DISABLE_STATUS_HANDSHAKE',
|
|
254
266
|
description: 'True to disable the status handshake on peer connected.',
|
|
@@ -293,17 +305,45 @@ export const p2pConfigMappings = {
|
|
|
293
305
|
description: 'Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only).',
|
|
294
306
|
...booleanConfigHelper(false)
|
|
295
307
|
},
|
|
308
|
+
skipIncomingProposals: {
|
|
309
|
+
description: 'Drop incoming block and checkpoint proposals at the libp2p dispatch layer (for testing only)',
|
|
310
|
+
...booleanConfigHelper(false)
|
|
311
|
+
},
|
|
312
|
+
skipProposalSlotValidation: {
|
|
313
|
+
description: 'Accept proposal gossip regardless of slot timing (for testing only)',
|
|
314
|
+
...booleanConfigHelper(false)
|
|
315
|
+
},
|
|
316
|
+
skipCheckpointProposalValidation: {
|
|
317
|
+
description: 'Skip checkpoint proposal validation and always attest, broadcasting the attestation before processing the embedded last block',
|
|
318
|
+
...booleanConfigHelper(false)
|
|
319
|
+
},
|
|
296
320
|
minTxPoolAgeMs: {
|
|
297
321
|
env: 'P2P_MIN_TX_POOL_AGE_MS',
|
|
298
322
|
description: 'Minimum age (ms) a transaction must have been in the pool before it is eligible for block building.',
|
|
299
323
|
...numberConfigHelper(2_000)
|
|
300
324
|
},
|
|
325
|
+
slashDataWithholdingToleranceSlots: {
|
|
326
|
+
env: 'SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS',
|
|
327
|
+
description: 'L2 slots to wait after a checkpoint slot before declaring its txs missing. Drives both the data-withholding slasher check and the missing-tx collection deadline.',
|
|
328
|
+
...numberConfigHelper(3)
|
|
329
|
+
},
|
|
330
|
+
p2pMissingTxCollectionDeadlineSlots: {
|
|
331
|
+
env: 'P2P_MISSING_TX_COLLECTION_DEADLINE_SLOTS',
|
|
332
|
+
description: 'Optional deadline (in L2 slots after the block slot) for collecting missing txs for unproven mined blocks. Clamped up to the data-withholding tolerance window so collection never gives up before the slash verdict.',
|
|
333
|
+
...optionalNumberConfigHelper()
|
|
334
|
+
},
|
|
301
335
|
priceBumpPercentage: {
|
|
302
336
|
env: 'P2P_RPC_PRICE_BUMP_PERCENTAGE',
|
|
303
337
|
description: 'Minimum percentage fee increase required to replace an existing tx via RPC. Even at 0%, replacement still requires paying at least 1 unit more.',
|
|
304
338
|
...bigintConfigHelper(10n)
|
|
305
339
|
},
|
|
306
|
-
...sharedSequencerConfigMappings,
|
|
340
|
+
...pickConfigMappings(sharedSequencerConfigMappings, [
|
|
341
|
+
'expectedBlockProposalsPerSlot',
|
|
342
|
+
'maxTxsPerBlock',
|
|
343
|
+
'checkpointProposalSyncGraceSeconds',
|
|
344
|
+
'maxBlocksPerCheckpoint',
|
|
345
|
+
'blockDurationMs'
|
|
346
|
+
]),
|
|
307
347
|
...p2pReqRespConfigMappings,
|
|
308
348
|
...batchTxRequesterConfigMappings,
|
|
309
349
|
...chainConfigMappings,
|
|
@@ -330,7 +370,8 @@ const bootnodeConfigKeys = [
|
|
|
330
370
|
'dataStoreMapSizeKb',
|
|
331
371
|
'bootstrapNodes',
|
|
332
372
|
'l1ChainId',
|
|
333
|
-
'queryForIp'
|
|
373
|
+
'queryForIp',
|
|
374
|
+
'publicIpServices'
|
|
334
375
|
];
|
|
335
376
|
export const bootnodeConfigMappings = pickConfigMappings({
|
|
336
377
|
...p2pConfigMappings,
|
|
@@ -389,7 +430,7 @@ export const bootnodeConfigMappings = pickConfigMappings({
|
|
|
389
430
|
const flags = flagsString ? parseFlags(flagsString, trimmed) : {};
|
|
390
431
|
if (typeString === 'I') {
|
|
391
432
|
entries.push({
|
|
392
|
-
address: AztecAddress.
|
|
433
|
+
address: AztecAddress.fromStringUnsafe(identifierString),
|
|
393
434
|
selector,
|
|
394
435
|
...flags
|
|
395
436
|
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Checkpoint Proposal Received Callback Not Registered Error
|
|
2
|
+
*
|
|
3
|
+
* Error triggered if the allNodesCheckpointReceivedCallback is not registered
|
|
4
|
+
* @category Errors
|
|
5
|
+
*/
|
|
6
|
+
export declare class CheckpointProposalReceivedCallbackNotRegisteredError extends Error {
|
|
7
|
+
constructor();
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwLXNlcnZpY2UuZXJyb3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvcDJwLXNlcnZpY2UuZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILHFCQUFhLG9EQUFxRCxTQUFRLEtBQUs7SUFDN0UsY0FHQztDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2p-service.error.d.ts","sourceRoot":"","sources":["../../src/errors/p2p-service.error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,oDAAqD,SAAQ,KAAK;IAC7E,cAGC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Checkpoint Proposal Received Callback Not Registered Error
|
|
2
|
+
*
|
|
3
|
+
* Error triggered if the allNodesCheckpointReceivedCallback is not registered
|
|
4
|
+
* @category Errors
|
|
5
|
+
*/ export class CheckpointProposalReceivedCallbackNotRegisteredError extends Error {
|
|
6
|
+
constructor(){
|
|
7
|
+
super('FATAL (allNodesCheckpointReceivedCallback): All nodes should register a checkpoint proposal handler');
|
|
8
|
+
this.name = 'CheckpointProposalReceivedCallbackNotRegisteredError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -6,23 +6,4 @@
|
|
|
6
6
|
export declare class IndividualReqRespTimeoutError extends Error {
|
|
7
7
|
constructor();
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
* This error will be thrown when a req resp request times out regardless of the peer.
|
|
12
|
-
* @category Errors
|
|
13
|
-
*/
|
|
14
|
-
export declare class CollectiveReqRespTimeoutError extends Error {
|
|
15
|
-
constructor();
|
|
16
|
-
}
|
|
17
|
-
/** Invalid response error
|
|
18
|
-
*
|
|
19
|
-
* This error will be thrown when a response is received that is not valid.
|
|
20
|
-
*
|
|
21
|
-
* This error does not need to be punished as message validators will handle punishing invalid
|
|
22
|
-
* requests
|
|
23
|
-
* @category Errors
|
|
24
|
-
*/
|
|
25
|
-
export declare class InvalidResponseError extends Error {
|
|
26
|
-
constructor();
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC5lcnJvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9yZXFyZXNwLmVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSxLQUFLO0lBQ3RELGNBRUM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSxLQUFLO0lBQ3RELGNBRUM7Q0FDRjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSxvQkFBcUIsU0FBUSxLQUFLO0lBQzdDLGNBRUM7Q0FDRiJ9
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC5lcnJvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9yZXFyZXNwLmVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSxLQUFLO0lBQ3RELGNBRUM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqresp.error.d.ts","sourceRoot":"","sources":["../../src/errors/reqresp.error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,cAEC;CACF
|
|
1
|
+
{"version":3,"file":"reqresp.error.d.ts","sourceRoot":"","sources":["../../src/errors/reqresp.error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,cAEC;CACF"}
|
|
@@ -7,24 +7,3 @@
|
|
|
7
7
|
super(`Request to peer timed out`);
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
/** Collective request timeout error
|
|
11
|
-
*
|
|
12
|
-
* This error will be thrown when a req resp request times out regardless of the peer.
|
|
13
|
-
* @category Errors
|
|
14
|
-
*/ export class CollectiveReqRespTimeoutError extends Error {
|
|
15
|
-
constructor(){
|
|
16
|
-
super(`Request to all peers timed out`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/** Invalid response error
|
|
20
|
-
*
|
|
21
|
-
* This error will be thrown when a response is received that is not valid.
|
|
22
|
-
*
|
|
23
|
-
* This error does not need to be punished as message validators will handle punishing invalid
|
|
24
|
-
* requests
|
|
25
|
-
* @category Errors
|
|
26
|
-
*/ export class InvalidResponseError extends Error {
|
|
27
|
-
constructor(){
|
|
28
|
-
super(`Invalid response received`);
|
|
29
|
-
}
|
|
30
|
-
}
|
package/dest/index.d.ts
CHANGED
|
@@ -5,8 +5,7 @@ export * from './client/index.js';
|
|
|
5
5
|
export * from './enr/index.js';
|
|
6
6
|
export * from './config.js';
|
|
7
7
|
export * from './mem_pools/attestation_pool/index.js';
|
|
8
|
-
export * from './mem_pools/tx_pool/index.js';
|
|
9
8
|
export * from './mem_pools/tx_pool_v2/index.js';
|
|
10
9
|
export * from './msg_validators/index.js';
|
|
11
10
|
export * from './services/index.js';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQyJ9
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,uCAAuC,CAAC;AACtD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC"}
|
package/dest/index.js
CHANGED
|
@@ -4,7 +4,6 @@ export * from './client/index.js';
|
|
|
4
4
|
export * from './enr/index.js';
|
|
5
5
|
export * from './config.js';
|
|
6
6
|
export * from './mem_pools/attestation_pool/index.js';
|
|
7
|
-
export * from './mem_pools/tx_pool/index.js';
|
|
8
7
|
export * from './mem_pools/tx_pool_v2/index.js';
|
|
9
8
|
export * from './msg_validators/index.js';
|
|
10
9
|
export * from './services/index.js';
|
|
@@ -1,91 +1,123 @@
|
|
|
1
|
-
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
|
+
import type { CheckpointProposalHash, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
3
|
import { BlockProposal, CheckpointAttestation, type CheckpointProposalCore } from '@aztec/stdlib/p2p';
|
|
4
4
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
5
|
/** Result of trying to add an item (proposal or attestation) to the pool */
|
|
6
6
|
export type TryAddResult = {
|
|
7
|
-
/** Whether the item was
|
|
7
|
+
/** Whether the item was accepted into pool state. False when it already existed, was invalid, or hit a cap. */
|
|
8
8
|
added: boolean;
|
|
9
|
-
/** Whether the exact
|
|
9
|
+
/** Whether the exact signed payload (matched by payload hash) already existed in the pool. */
|
|
10
10
|
alreadyExists: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* - tryAddBlockProposal:
|
|
13
|
-
* - tryAddCheckpointProposal:
|
|
14
|
-
* - tryAddCheckpointAttestation:
|
|
11
|
+
/** Number of distinct signed-payload hashes seen for the position. Meaning varies by method:
|
|
12
|
+
* - tryAddBlockProposal: distinct payload hashes at (slot, indexWithinCheckpoint)
|
|
13
|
+
* - tryAddCheckpointProposal: distinct payload hashes at slot
|
|
14
|
+
* - tryAddCheckpointAttestation: distinct payload hashes by this signer for this slot */
|
|
15
15
|
count: number;
|
|
16
16
|
};
|
|
17
|
+
export type ProposalsForSlot = {
|
|
18
|
+
blockProposals: BlockProposal[];
|
|
19
|
+
checkpointProposals: CheckpointProposalCore[];
|
|
20
|
+
};
|
|
17
21
|
export declare const MAX_CHECKPOINT_PROPOSALS_PER_SLOT = 2;
|
|
18
22
|
export declare const MAX_BLOCK_PROPOSALS_PER_POSITION = 2;
|
|
19
23
|
/** Maximum attestations a single signer can make per slot before being rejected. */
|
|
20
24
|
export declare const MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER = 2;
|
|
21
25
|
/** Public API interface for attestation pools. Used for typing mocks and test implementations. */
|
|
22
|
-
export type AttestationPoolApi = Pick<AttestationPool, 'tryAddBlockProposal' | '
|
|
26
|
+
export type AttestationPoolApi = Pick<AttestationPool, 'tryAddBlockProposal' | 'getBlockProposalByArchive' | 'getProposalsForSlot' | 'tryAddCheckpointProposal' | 'getCheckpointProposal' | 'hasCheckpointProposalForSlot' | 'addOwnCheckpointAttestations' | 'tryAddCheckpointAttestation' | 'deleteOlderThan' | 'getCheckpointAttestationsForSlot' | 'getCheckpointAttestationsForSlotAndProposal' | 'hasBlockProposalsForSlot' | 'isEmpty'>;
|
|
23
27
|
/**
|
|
24
28
|
* Pool for storing attestations and proposals collected by a validator.
|
|
25
29
|
*
|
|
26
30
|
* Attestations and proposals observed via the p2p network are stored for requests
|
|
27
31
|
* from the validator to produce a block, or to serve to other peers.
|
|
32
|
+
*
|
|
33
|
+
* Equivocation detection: distinct *signed payload hashes* arriving at the same
|
|
34
|
+
* position are tracked in the matching index multimap so the equivocation count
|
|
35
|
+
* reaches 2 even when archive collides on `feeAssetPriceModifier` variants.
|
|
36
|
+
* Proposal bytes are retained per accepted payload hash, up to the same equivocation
|
|
37
|
+
* caps, for slashing watchers that need signed P2P proposals.
|
|
28
38
|
*/
|
|
29
39
|
export declare class AttestationPool {
|
|
30
40
|
private store;
|
|
31
41
|
private log;
|
|
32
42
|
private metrics;
|
|
33
|
-
private
|
|
34
|
-
private
|
|
35
|
-
private
|
|
36
|
-
private
|
|
37
|
-
private
|
|
38
|
-
private
|
|
43
|
+
private attestationPerSlotAndSigner;
|
|
44
|
+
private attestationHashesPerSlotAndSigner;
|
|
45
|
+
private checkpointProposalsPerSlotAndHash;
|
|
46
|
+
private checkpointProposalHashesPerSlot;
|
|
47
|
+
private blockProposalsPerSlotIndexAndHash;
|
|
48
|
+
private blockProposalHashesPerSlotAndIndex;
|
|
49
|
+
private blockProposalKeysPerArchive;
|
|
39
50
|
constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
40
51
|
private poolStats;
|
|
41
52
|
/** Returns whether the pool is empty. */
|
|
42
53
|
isEmpty(): Promise<boolean>;
|
|
43
|
-
private getProposalKey;
|
|
44
|
-
private getAttestationKey;
|
|
45
|
-
/** Returns range bounds for querying all attestations for a given slot. */
|
|
46
|
-
private getAttestationKeyRangeForSlot;
|
|
47
|
-
/** Returns range bounds for querying all attestations for a given (slot, proposalId). */
|
|
48
|
-
private getAttestationKeyRangeForProposal;
|
|
49
|
-
/** Creates a key for the per-signer-per-slot attestation index. Uses padded slot for lexicographic ordering. */
|
|
50
|
-
private getSlotSignerKey;
|
|
51
54
|
/** Number of bits reserved for indexWithinCheckpoint in position keys. */
|
|
52
55
|
private static readonly INDEX_BITS;
|
|
53
56
|
/** Maximum indexWithinCheckpoint value (2^10 - 1 = 1023). */
|
|
54
57
|
private static readonly MAX_INDEX;
|
|
55
|
-
/**
|
|
58
|
+
/** Decimal digits used to left-pad slot numbers in string keys.
|
|
59
|
+
* 10 digits ≈ 3500 years at 36 s/slot, leaving ample headroom. */
|
|
60
|
+
private static readonly SLOT_PAD_DIGITS;
|
|
61
|
+
/** Fixed-width decimal slot string for use in composite string keys. */
|
|
62
|
+
private slotPaddedKey;
|
|
63
|
+
/** Fixed-width decimal index string for use in composite string keys. */
|
|
64
|
+
private indexPaddedKey;
|
|
65
|
+
/** Key for retained block proposals. */
|
|
66
|
+
private getBlockProposalKey;
|
|
67
|
+
/** Range bounds for all retained block proposals in a slot. */
|
|
68
|
+
private getBlockProposalKeyRangeForSlot;
|
|
69
|
+
/** Key for retained checkpoint proposals. */
|
|
70
|
+
private getCheckpointProposalKey;
|
|
71
|
+
/** Range bounds for all retained checkpoint proposals in a slot. */
|
|
72
|
+
private getCheckpointProposalKeyRangeForSlot;
|
|
73
|
+
/** Key for the per-(slot, signer) attestation main store and equivocation index. */
|
|
74
|
+
private getSlotSignerKey;
|
|
75
|
+
/**
|
|
76
|
+
* Returns range bounds for querying all attestations for a given slot.
|
|
77
|
+
* Fixed-width padding ensures the slot prefix sorts cleanly, so using the next
|
|
78
|
+
* slot's prefix as the upper bound captures exactly the current slot's entries.
|
|
79
|
+
*/
|
|
80
|
+
private getAttestationKeyRangeForSlot;
|
|
81
|
+
/** Creates a position key for block proposals: slot * 1024 + indexWithinCheckpoint.
|
|
82
|
+
* Uses multiplication instead of bit-shift to avoid 32-bit signed integer overflow
|
|
83
|
+
* (bit-shift overflows after slot ~2^21, roughly 278 days of uptime). */
|
|
56
84
|
private getBlockPositionKey;
|
|
85
|
+
private multimapHasValue;
|
|
57
86
|
/**
|
|
58
87
|
* Attempts to add a block proposal to the pool.
|
|
59
88
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* -
|
|
63
|
-
*
|
|
89
|
+
* - Detects duplicates by signed-payload hash (not archive); a re-broadcast of the
|
|
90
|
+
* exact same signed payload returns `alreadyExists: true`.
|
|
91
|
+
* - Distinct payload hashes at the same `(slot, indexWithinCheckpoint)` are tracked
|
|
92
|
+
* in the equivocation index and retained up to the cap.
|
|
64
93
|
*
|
|
65
94
|
* @param blockProposal - The block proposal to add
|
|
66
95
|
* @returns Result indicating whether the proposal was added and duplicate detection info
|
|
67
96
|
*/
|
|
68
97
|
tryAddBlockProposal(blockProposal: BlockProposal): Promise<TryAddResult>;
|
|
69
|
-
/** Gets the count of block proposals for a given position (slot, indexWithinCheckpoint). */
|
|
70
|
-
private getBlockProposalCountForPosition;
|
|
71
|
-
private addBlockProposal;
|
|
72
98
|
/**
|
|
73
|
-
* Get block proposal by
|
|
99
|
+
* Get block proposal by archive root.
|
|
74
100
|
*
|
|
75
|
-
*
|
|
101
|
+
* Resolves the archive root through the archive index and returns the first
|
|
102
|
+
* retained proposal for that archive. This lookup is used by block-txs req/resp,
|
|
103
|
+
* where any retained proposal for the requested archive gives the tx hash list.
|
|
76
104
|
*
|
|
77
|
-
* @
|
|
105
|
+
* @param archiveRoot - The archive root to look up
|
|
106
|
+
* @return The block proposal if it exists and its archive matches, otherwise undefined.
|
|
78
107
|
*/
|
|
79
|
-
|
|
108
|
+
getBlockProposalByArchive(archiveRoot: string): Promise<BlockProposal | undefined>;
|
|
109
|
+
/** Returns retained signed proposals for a slot. */
|
|
110
|
+
getProposalsForSlot(slot: SlotNumber): Promise<ProposalsForSlot>;
|
|
80
111
|
/** Checks if any block proposals exist for a given slot (at index 0). */
|
|
81
112
|
hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
|
|
82
113
|
/**
|
|
83
114
|
* Attempts to add a checkpoint proposal to the pool.
|
|
84
115
|
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* -
|
|
88
|
-
*
|
|
116
|
+
* - Detects duplicates by signed-payload hash (not archive); a re-broadcast of the
|
|
117
|
+
* exact same signed payload returns `alreadyExists: true`.
|
|
118
|
+
* - Distinct payload hashes at the same slot are tracked in the equivocation index.
|
|
119
|
+
* Distinct payload bytes are retained up to the same cap so slashing watchers
|
|
120
|
+
* can recover signed proposals.
|
|
89
121
|
*
|
|
90
122
|
* Note: This method only handles the CheckpointProposalCore. If the original
|
|
91
123
|
* CheckpointProposal contains a lastBlock, the caller should extract it via
|
|
@@ -95,37 +127,46 @@ export declare class AttestationPool {
|
|
|
95
127
|
* @returns Result indicating whether the proposal was added and duplicate detection info
|
|
96
128
|
*/
|
|
97
129
|
tryAddCheckpointProposal(proposal: CheckpointProposalCore): Promise<TryAddResult>;
|
|
98
|
-
private addCheckpointProposal;
|
|
99
130
|
/**
|
|
100
|
-
* Get checkpoint proposal
|
|
131
|
+
* Get a retained checkpoint proposal stored for the given slot.
|
|
132
|
+
* If multiple proposals were retained for an equivocation, returns the lowest
|
|
133
|
+
* payload hash deterministically.
|
|
101
134
|
*
|
|
102
135
|
* Returns a CheckpointProposalCore (without lastBlock info) since the lastBlock
|
|
103
136
|
* is extracted and stored separately as a BlockProposal when added.
|
|
104
137
|
*
|
|
105
|
-
* @param
|
|
106
|
-
* @return The checkpoint proposal core if
|
|
138
|
+
* @param slot - The slot to look up
|
|
139
|
+
* @return The checkpoint proposal core if one is stored, otherwise undefined.
|
|
107
140
|
*/
|
|
108
|
-
getCheckpointProposal(
|
|
141
|
+
getCheckpointProposal(slot: SlotNumber): Promise<CheckpointProposalCore | undefined>;
|
|
142
|
+
/** Returns whether any checkpoint proposal is retained for the given slot. */
|
|
143
|
+
hasCheckpointProposalForSlot(slot: SlotNumber): Promise<boolean>;
|
|
109
144
|
/**
|
|
110
145
|
* Adds own checkpoint attestations to the pool.
|
|
111
|
-
* Skips
|
|
146
|
+
* Skips per-signer cap and equivocation tracking; the caller is trusted.
|
|
147
|
+
* Each (slot, signer) gets a single stored attestation; later additions overwrite.
|
|
112
148
|
*/
|
|
113
149
|
addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
|
|
114
150
|
/**
|
|
115
151
|
* Get all checkpoint attestations for a given slot.
|
|
116
152
|
*
|
|
153
|
+
* Returns one attestation per (slot, signer) — the first seen for each signer.
|
|
154
|
+
* Later equivocating attestations from the same signer are tracked in the index
|
|
155
|
+
* but their bytes are not retained.
|
|
156
|
+
*
|
|
117
157
|
* @param slot - The slot to query
|
|
118
158
|
* @return CheckpointAttestations
|
|
119
159
|
*/
|
|
120
160
|
getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
|
|
121
161
|
/**
|
|
122
|
-
* Get checkpoint attestations for slot
|
|
162
|
+
* Get checkpoint attestations for a slot whose signed payload matches the given
|
|
163
|
+
* proposal payload hash.
|
|
123
164
|
*
|
|
124
165
|
* @param slot - The slot to query
|
|
125
|
-
* @param
|
|
126
|
-
* @return CheckpointAttestations
|
|
166
|
+
* @param proposalPayloadHash - Hex-encoded keccak256 of the target proposal's signed payload
|
|
167
|
+
* @return CheckpointAttestations whose `getPayloadHash()` matches `proposalPayloadHash`
|
|
127
168
|
*/
|
|
128
|
-
getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber,
|
|
169
|
+
getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalPayloadHash: CheckpointProposalHash): Promise<CheckpointAttestation[]>;
|
|
129
170
|
/**
|
|
130
171
|
* Delete all pool data (attestations, proposals) older than the given slot.
|
|
131
172
|
*
|
|
@@ -135,18 +176,19 @@ export declare class AttestationPool {
|
|
|
135
176
|
/**
|
|
136
177
|
* Attempts to add a checkpoint attestation to the pool.
|
|
137
178
|
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* -
|
|
141
|
-
*
|
|
179
|
+
* - Detects duplicates by signed-payload hash (not archive); a re-broadcast of the
|
|
180
|
+
* exact same signed payload from the same signer returns `alreadyExists: true`.
|
|
181
|
+
* - Distinct payload hashes from the same (slot, signer) are tracked in the
|
|
182
|
+
* equivocation index. The first one's bytes are stored; later distinct hashes
|
|
183
|
+
* bump `count` so libp2p can fire its duplicate callback.
|
|
142
184
|
*
|
|
143
185
|
* @param attestation - The checkpoint attestation to add
|
|
144
|
-
* @returns Result indicating whether the attestation was added, existence info,
|
|
145
|
-
*
|
|
186
|
+
* @returns Result indicating whether the attestation was added, existence info,
|
|
187
|
+
* and number of distinct payload hashes by this signer for this slot
|
|
188
|
+
* (for equivocation detection).
|
|
146
189
|
*/
|
|
147
190
|
tryAddCheckpointAttestation(attestation: CheckpointAttestation): Promise<TryAddResult>;
|
|
148
|
-
private getSignerAttestationCountForSlot;
|
|
149
191
|
}
|
|
150
192
|
/** Creates an AttestationPool backed by a temporary store for testing. */
|
|
151
193
|
export declare function createTestAttestationPool(telemetry?: TelemetryClient): Promise<AttestationPool>;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQXFCLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzdHLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEVBRXJCLEtBQUssc0JBQXNCLEVBQzVCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBSW5GLDRFQUE0RTtBQUM1RSxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQ3pCLCtHQUErRztJQUMvRyxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ2YsOEZBQThGO0lBQzlGLGFBQWEsRUFBRSxPQUFPLENBQUM7SUFDdkI7Ozs4RkFHMEY7SUFDMUYsS0FBSyxFQUFFLE1BQU0sQ0FBQztDQUNmLENBQUM7QUFFRixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLENBQUM7Q0FDL0MsQ0FBQztBQUVGLGVBQU8sTUFBTSxpQ0FBaUMsSUFBSSxDQUFDO0FBQ25ELGVBQU8sTUFBTSxnQ0FBZ0MsSUFBSSxDQUFDO0FBQ2xELG9GQUFvRjtBQUNwRixlQUFPLE1BQU0sb0NBQW9DLElBQUksQ0FBQztBQUV0RCxrR0FBa0c7QUFDbEcsTUFBTSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FDbkMsZUFBZSxFQUNiLHFCQUFxQixHQUNyQiwyQkFBMkIsR0FDM0IscUJBQXFCLEdBQ3JCLDBCQUEwQixHQUMxQix1QkFBdUIsR0FDdkIs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"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"}
|