chia-blockchain 2.5.4rc1__py3-none-any.whl → 2.5.5__py3-none-any.whl
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.
- chia/_tests/blockchain/blockchain_test_utils.py +2 -3
- chia/_tests/blockchain/test_augmented_chain.py +2 -3
- chia/_tests/blockchain/test_blockchain.py +261 -44
- chia/_tests/blockchain/test_blockchain_transactions.py +4 -3
- chia/_tests/blockchain/test_build_chains.py +197 -1
- chia/_tests/blockchain/test_get_block_generator.py +1 -1
- chia/_tests/blockchain/test_lookup_fork_chain.py +1 -1
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +3 -4
- chia/_tests/clvm/test_message_conditions.py +2 -2
- chia/_tests/clvm/test_puzzle_compression.py +2 -3
- chia/_tests/clvm/test_puzzles.py +1 -2
- chia/_tests/clvm/test_singletons.py +2 -3
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +30 -25
- chia/_tests/cmds/test_dev_gh.py +1 -1
- chia/_tests/cmds/test_farm_cmd.py +1 -1
- chia/_tests/cmds/test_show.py +1 -2
- chia/_tests/cmds/wallet/test_did.py +101 -56
- chia/_tests/cmds/wallet/test_nft.py +109 -84
- chia/_tests/cmds/wallet/test_notifications.py +1 -1
- chia/_tests/cmds/wallet/test_offer.toffer +1 -1
- chia/_tests/cmds/wallet/test_vcs.py +8 -8
- chia/_tests/cmds/wallet/test_wallet.py +100 -46
- chia/_tests/conftest.py +31 -20
- chia/_tests/connection_utils.py +1 -1
- chia/_tests/core/consensus/stores/__init__.py +0 -0
- chia/_tests/core/consensus/stores/test_coin_store_protocol.py +40 -0
- chia/_tests/core/consensus/test_block_creation.py +2 -31
- chia/_tests/core/consensus/test_pot_iterations.py +38 -3
- chia/_tests/core/custom_types/test_proof_of_space.py +154 -26
- chia/_tests/core/custom_types/test_spend_bundle.py +2 -3
- chia/_tests/core/daemon/test_daemon.py +80 -0
- chia/_tests/core/data_layer/test_data_layer.py +1 -1
- chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
- chia/_tests/core/data_layer/test_data_rpc.py +14 -10
- chia/_tests/core/data_layer/test_data_store.py +5 -5
- chia/_tests/core/farmer/test_farmer_api.py +2 -2
- chia/_tests/core/full_node/full_sync/test_full_sync.py +446 -406
- chia/_tests/core/full_node/ram_db.py +3 -1
- chia/_tests/core/full_node/stores/test_block_store.py +28 -16
- chia/_tests/core/full_node/stores/test_coin_store.py +277 -185
- chia/_tests/core/full_node/stores/test_full_node_store.py +11 -4
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_address_manager.py +200 -27
- chia/_tests/core/full_node/test_block_height_map.py +2 -2
- chia/_tests/core/full_node/test_conditions.py +7 -6
- chia/_tests/core/full_node/test_full_node.py +456 -40
- chia/_tests/core/full_node/test_generator_tools.py +32 -2
- chia/_tests/core/full_node/test_hint_management.py +1 -1
- chia/_tests/core/full_node/test_node_load.py +20 -21
- chia/_tests/core/full_node/test_performance.py +3 -4
- chia/_tests/core/full_node/test_prev_tx_block.py +43 -0
- chia/_tests/core/full_node/test_subscriptions.py +1 -2
- chia/_tests/core/full_node/test_transactions.py +9 -5
- chia/_tests/core/full_node/test_tx_processing_queue.py +1 -2
- chia/_tests/core/large_block.py +1 -2
- chia/_tests/core/make_block_generator.py +3 -4
- chia/_tests/core/mempool/test_mempool.py +36 -86
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
- chia/_tests/core/mempool/test_mempool_item_queries.py +1 -3
- chia/_tests/core/mempool/test_mempool_manager.py +529 -69
- chia/_tests/core/mempool/test_mempool_performance.py +3 -2
- chia/_tests/core/mempool/test_singleton_fast_forward.py +61 -132
- chia/_tests/core/server/flood.py +1 -1
- chia/_tests/core/server/test_dos.py +1 -1
- chia/_tests/core/server/test_node_discovery.py +41 -27
- chia/_tests/core/server/test_rate_limits.py +1 -1
- chia/_tests/core/server/test_server.py +1 -1
- chia/_tests/core/services/test_services.py +5 -5
- chia/_tests/core/ssl/test_ssl.py +1 -1
- chia/_tests/core/test_cost_calculation.py +6 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_crawler_rpc.py +1 -1
- chia/_tests/core/test_db_conversion.py +3 -1
- chia/_tests/core/test_db_validation.py +5 -3
- chia/_tests/core/test_farmer_harvester_rpc.py +15 -15
- chia/_tests/core/test_filter.py +4 -1
- chia/_tests/core/test_full_node_rpc.py +99 -82
- chia/_tests/core/test_program.py +2 -2
- chia/_tests/core/util/test_block_cache.py +1 -1
- chia/_tests/core/util/test_keychain.py +2 -2
- chia/_tests/core/util/test_lockfile.py +1 -1
- chia/_tests/core/util/test_log_exceptions.py +5 -5
- chia/_tests/core/util/test_streamable.py +81 -22
- chia/_tests/db/test_db_wrapper.py +1 -3
- chia/_tests/environments/wallet.py +5 -5
- chia/_tests/farmer_harvester/test_farmer.py +9 -7
- chia/_tests/farmer_harvester/test_farmer_harvester.py +11 -4
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +15 -9
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -2
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +7 -5
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
- chia/_tests/generator/test_compression.py +1 -2
- chia/_tests/generator/test_rom.py +8 -4
- chia/_tests/plot_sync/test_plot_sync.py +3 -3
- chia/_tests/plot_sync/test_receiver.py +3 -3
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +3 -3
- chia/_tests/plot_sync/util.py +2 -2
- chia/_tests/pools/test_pool_cmdline.py +48 -21
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +2 -3
- chia/_tests/pools/test_pool_rpc.py +237 -105
- chia/_tests/pools/test_pool_wallet.py +11 -2
- chia/_tests/pools/test_wallet_pool_store.py +5 -4
- chia/_tests/rpc/test_rpc_client.py +1 -1
- chia/_tests/simulation/test_simulation.py +13 -8
- chia/_tests/simulation/test_simulator.py +2 -2
- chia/_tests/timelord/test_new_peak.py +191 -47
- chia/_tests/timelord/test_timelord.py +1 -1
- chia/_tests/tools/test_full_sync.py +0 -2
- chia/_tests/tools/test_run_block.py +3 -1
- chia/_tests/util/benchmark_cost.py +3 -3
- chia/_tests/util/benchmarks.py +2 -2
- chia/_tests/util/blockchain.py +11 -5
- chia/_tests/util/blockchain_mock.py +1 -4
- chia/_tests/util/coin_store.py +29 -0
- chia/_tests/util/constants.py +2 -18
- chia/_tests/util/full_sync.py +3 -3
- chia/_tests/util/generator_tools_testing.py +2 -3
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +33 -31
- chia/_tests/util/network_protocol_data.py +19 -17
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +3 -1
- chia/_tests/util/run_block.py +2 -2
- chia/_tests/util/setup_nodes.py +7 -7
- chia/_tests/util/spend_sim.py +47 -55
- chia/_tests/util/test_condition_tools.py +5 -4
- chia/_tests/util/test_config.py +2 -2
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +12 -14
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_paginator.py +4 -4
- chia/_tests/util/test_priority_mutex.py +2 -2
- chia/_tests/util/test_replace_str_to_bytes.py +15 -5
- chia/_tests/util/test_ssl_check.py +1 -1
- chia/_tests/util/test_testnet_overrides.py +13 -3
- chia/_tests/util/time_out_assert.py +4 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -2
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +352 -432
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +3 -6
- chia/_tests/wallet/cat_wallet/test_trades.py +53 -77
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -1
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +3 -3
- chia/_tests/wallet/clawback/test_clawback_metadata.py +4 -2
- chia/_tests/wallet/conftest.py +11 -12
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +11 -4
- chia/_tests/wallet/db_wallet/test_dl_offers.py +433 -130
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +3 -3
- chia/_tests/wallet/did_wallet/test_did.py +2132 -2000
- chia/_tests/wallet/nft_wallet/config.py +1 -1
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1610 -742
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +486 -907
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +4 -4
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +517 -294
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +133 -62
- chia/_tests/wallet/rpc/test_wallet_rpc.py +495 -265
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +10 -6
- chia/_tests/wallet/sync/test_wallet_sync.py +89 -60
- chia/_tests/wallet/test_clvm_casts.py +88 -0
- chia/_tests/wallet/test_coin_management.py +1 -1
- chia/_tests/wallet/test_coin_selection.py +1 -1
- chia/_tests/wallet/test_conditions.py +1 -1
- chia/_tests/wallet/test_new_wallet_protocol.py +13 -11
- chia/_tests/wallet/test_notifications.py +5 -3
- chia/_tests/wallet/test_sign_coin_spends.py +6 -6
- chia/_tests/wallet/test_signer_protocol.py +13 -12
- chia/_tests/wallet/test_singleton.py +1 -1
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +5 -7
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +108 -29
- chia/_tests/wallet/test_wallet_action_scope.py +9 -2
- chia/_tests/wallet/test_wallet_blockchain.py +2 -3
- chia/_tests/wallet/test_wallet_key_val_store.py +1 -2
- chia/_tests/wallet/test_wallet_node.py +2 -4
- chia/_tests/wallet/test_wallet_retry.py +4 -2
- chia/_tests/wallet/test_wallet_state_manager.py +191 -5
- chia/_tests/wallet/test_wallet_test_framework.py +1 -1
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +8 -8
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -12
- chia/_tests/wallet/wallet_block_tools.py +6 -6
- chia/_tests/weight_proof/test_weight_proof.py +10 -48
- chia/apis.py +1 -1
- chia/cmds/beta.py +1 -1
- chia/cmds/chia.py +9 -9
- chia/cmds/cmd_classes.py +12 -11
- chia/cmds/cmd_helpers.py +1 -1
- chia/cmds/cmds_util.py +12 -9
- chia/cmds/coin_funcs.py +2 -2
- chia/cmds/configure.py +2 -2
- chia/cmds/data.py +0 -2
- chia/cmds/data_funcs.py +1 -1
- chia/cmds/db_validate_func.py +1 -2
- chia/cmds/dev/__init__.py +0 -0
- chia/cmds/dev/data.py +273 -0
- chia/cmds/{gh.py → dev/gh.py} +5 -5
- chia/cmds/dev/main.py +22 -0
- chia/cmds/dev/mempool.py +78 -0
- chia/cmds/dev/mempool_funcs.py +63 -0
- chia/cmds/farm_funcs.py +5 -4
- chia/cmds/init_funcs.py +11 -11
- chia/cmds/keys.py +2 -2
- chia/cmds/keys_funcs.py +4 -4
- chia/cmds/netspace_funcs.py +1 -1
- chia/cmds/peer_funcs.py +2 -2
- chia/cmds/plotnft_funcs.py +72 -26
- chia/cmds/rpc.py +1 -1
- chia/cmds/show_funcs.py +5 -5
- chia/cmds/signer.py +8 -7
- chia/cmds/sim_funcs.py +8 -9
- chia/cmds/wallet.py +2 -2
- chia/cmds/wallet_funcs.py +165 -131
- chia/{util → consensus}/augmented_chain.py +1 -2
- chia/consensus/block_body_validation.py +54 -40
- chia/consensus/block_creation.py +42 -76
- chia/consensus/block_header_validation.py +32 -26
- chia/consensus/block_record.py +0 -3
- chia/consensus/blockchain.py +23 -32
- chia/consensus/blockchain_interface.py +1 -5
- chia/consensus/check_time_locks.py +57 -0
- chia/consensus/coin_store_protocol.py +151 -0
- chia/consensus/coinbase.py +0 -6
- chia/consensus/condition_costs.py +4 -0
- chia/{util → consensus}/condition_tools.py +4 -5
- chia/consensus/cost_calculator.py +1 -1
- chia/consensus/default_constants.py +32 -9
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +1 -2
- chia/consensus/find_fork_point.py +1 -3
- chia/consensus/full_block_to_block_record.py +1 -6
- chia/{util → consensus}/generator_tools.py +1 -3
- chia/consensus/get_block_challenge.py +30 -7
- chia/consensus/make_sub_epoch_summary.py +1 -5
- chia/consensus/multiprocess_validation.py +21 -20
- chia/consensus/pot_iterations.py +74 -13
- chia/{util → consensus}/prev_transaction_block.py +1 -1
- chia/consensus/vdf_info_computation.py +1 -3
- chia/daemon/keychain_proxy.py +5 -5
- chia/daemon/server.py +22 -5
- chia/data_layer/data_layer.py +92 -51
- chia/{rpc → data_layer}/data_layer_rpc_api.py +1 -1
- chia/{rpc → data_layer}/data_layer_rpc_util.py +3 -6
- chia/data_layer/data_layer_util.py +4 -6
- chia/data_layer/data_layer_wallet.py +42 -69
- chia/data_layer/dl_wallet_store.py +12 -6
- chia/data_layer/download_data.py +3 -3
- chia/data_layer/s3_plugin_service.py +0 -1
- chia/farmer/farmer.py +3 -4
- chia/farmer/farmer_api.py +11 -7
- chia/{rpc → farmer}/farmer_rpc_client.py +1 -1
- chia/full_node/block_height_map.py +7 -6
- chia/full_node/block_store.py +5 -7
- chia/full_node/bundle_tools.py +1 -2
- chia/full_node/coin_store.py +153 -124
- chia/{types → full_node}/eligible_coin_spends.py +39 -70
- chia/full_node/fee_estimator.py +1 -1
- chia/full_node/fee_estimator_interface.py +0 -8
- chia/full_node/fee_tracker.py +25 -25
- chia/full_node/full_node.py +70 -53
- chia/full_node/full_node_api.py +57 -40
- chia/{rpc → full_node}/full_node_rpc_api.py +87 -8
- chia/{rpc → full_node}/full_node_rpc_client.py +7 -6
- chia/full_node/full_node_store.py +23 -8
- chia/full_node/mempool.py +206 -53
- chia/full_node/mempool_check_conditions.py +20 -63
- chia/full_node/mempool_manager.py +53 -47
- chia/full_node/subscriptions.py +1 -3
- chia/full_node/tx_processing_queue.py +50 -3
- chia/full_node/weight_proof.py +46 -37
- chia/harvester/harvester.py +1 -1
- chia/harvester/harvester_api.py +22 -7
- chia/introducer/introducer.py +1 -1
- chia/introducer/introducer_api.py +1 -1
- chia/plot_sync/exceptions.py +1 -1
- chia/plot_sync/receiver.py +1 -1
- chia/plot_sync/sender.py +2 -2
- chia/pools/pool_puzzles.py +13 -18
- chia/pools/pool_wallet.py +23 -46
- chia/protocols/farmer_protocol.py +11 -3
- chia/protocols/full_node_protocol.py +1 -4
- chia/protocols/harvester_protocol.py +3 -3
- chia/protocols/pool_protocol.py +1 -2
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +1 -3
- chia/protocols/wallet_protocol.py +3 -3
- chia/rpc/rpc_client.py +7 -8
- chia/rpc/rpc_server.py +3 -3
- chia/rpc/util.py +3 -1
- chia/seeder/crawler.py +1 -1
- chia/seeder/crawler_api.py +1 -1
- chia/seeder/dns_server.py +2 -0
- chia/seeder/start_crawler.py +3 -3
- chia/server/address_manager.py +286 -38
- chia/server/address_manager_store.py +0 -215
- chia/{types → server}/aliases.py +7 -7
- chia/server/api_protocol.py +1 -1
- chia/server/chia_policy.py +1 -1
- chia/server/node_discovery.py +76 -113
- chia/server/rate_limits.py +1 -1
- chia/server/resolve_peer_info.py +43 -0
- chia/server/server.py +5 -5
- chia/server/start_data_layer.py +4 -4
- chia/server/start_farmer.py +5 -4
- chia/server/start_full_node.py +5 -4
- chia/server/start_harvester.py +7 -5
- chia/server/start_introducer.py +2 -2
- chia/server/start_service.py +1 -1
- chia/server/start_timelord.py +7 -5
- chia/server/start_wallet.py +7 -5
- chia/server/ws_connection.py +1 -1
- chia/simulator/add_blocks_in_batches.py +2 -2
- chia/simulator/block_tools.py +245 -201
- chia/simulator/full_node_simulator.py +38 -10
- chia/simulator/setup_services.py +12 -12
- chia/simulator/simulator_full_node_rpc_api.py +2 -2
- chia/simulator/simulator_full_node_rpc_client.py +2 -2
- chia/simulator/simulator_test_tools.py +2 -2
- chia/simulator/start_simulator.py +1 -1
- chia/simulator/wallet_tools.py +10 -18
- chia/ssl/create_ssl.py +1 -1
- chia/timelord/iters_from_block.py +14 -14
- chia/timelord/timelord.py +15 -11
- chia/timelord/timelord_api.py +14 -2
- chia/timelord/timelord_state.py +20 -14
- chia/types/blockchain_format/program.py +53 -10
- chia/types/blockchain_format/proof_of_space.py +73 -19
- chia/types/coin_spend.py +3 -56
- chia/types/generator_types.py +28 -0
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +12 -7
- chia/types/unfinished_header_block.py +1 -2
- chia/types/validation_state.py +1 -2
- chia/types/weight_proof.py +1 -3
- chia/util/action_scope.py +3 -3
- chia/util/block_cache.py +1 -2
- chia/util/byte_types.py +1 -1
- chia/util/casts.py +21 -0
- chia/util/config.py +0 -37
- chia/util/db_wrapper.py +8 -1
- chia/util/errors.py +3 -2
- chia/util/initial-config.yaml +21 -5
- chia/util/keychain.py +6 -7
- chia/util/keyring_wrapper.py +5 -5
- chia/util/limited_semaphore.py +1 -1
- chia/util/priority_mutex.py +1 -1
- chia/util/streamable.py +63 -5
- chia/util/task_timing.py +1 -1
- chia/util/virtual_project_analysis.py +1 -1
- chia/wallet/cat_wallet/cat_info.py +7 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +9 -5
- chia/wallet/cat_wallet/cat_utils.py +1 -1
- chia/wallet/cat_wallet/cat_wallet.py +44 -36
- chia/wallet/cat_wallet/lineage_store.py +7 -0
- chia/wallet/cat_wallet/r_cat_wallet.py +274 -0
- chia/wallet/conditions.py +5 -10
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -4
- chia/wallet/derivation_record.py +33 -0
- chia/wallet/derive_keys.py +3 -3
- chia/wallet/did_wallet/did_info.py +12 -3
- chia/wallet/did_wallet/did_wallet.py +132 -101
- chia/wallet/did_wallet/did_wallet_puzzles.py +9 -9
- chia/wallet/driver_protocol.py +3 -1
- chia/{types/spend_bundle.py → wallet/estimate_fees.py} +2 -7
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
- chia/wallet/nft_wallet/nft_wallet.py +69 -112
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +6 -4
- chia/wallet/nft_wallet/transfer_program_puzzle.py +4 -2
- chia/wallet/nft_wallet/uncurry_nft.py +4 -6
- chia/wallet/notification_manager.py +2 -3
- chia/wallet/outer_puzzles.py +7 -2
- chia/wallet/puzzle_drivers.py +1 -1
- chia/wallet/puzzles/clawback/drivers.py +5 -4
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -1
- chia/wallet/puzzles/singleton_top_layer.py +2 -1
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +2 -1
- chia/wallet/puzzles/tails.py +1 -3
- chia/wallet/signer_protocol.py +5 -6
- chia/wallet/singleton.py +5 -4
- chia/wallet/singleton_record.py +1 -1
- chia/wallet/trade_manager.py +18 -20
- chia/wallet/trade_record.py +3 -6
- chia/wallet/trading/offer.py +12 -13
- chia/wallet/uncurried_puzzle.py +2 -2
- chia/wallet/util/compute_additions.py +58 -0
- chia/wallet/util/compute_hints.py +3 -3
- chia/wallet/util/compute_memos.py +4 -4
- chia/wallet/util/curry_and_treehash.py +2 -1
- chia/wallet/util/debug_spend_bundle.py +1 -1
- chia/wallet/util/merkle_tree.py +1 -1
- chia/wallet/util/peer_request_cache.py +1 -2
- chia/wallet/util/tx_config.py +3 -8
- chia/wallet/util/wallet_sync_utils.py +10 -5
- chia/wallet/util/wallet_types.py +1 -0
- chia/wallet/vc_wallet/cr_cat_drivers.py +17 -18
- chia/wallet/vc_wallet/cr_cat_wallet.py +30 -28
- chia/wallet/vc_wallet/cr_outer_puzzle.py +5 -3
- chia/wallet/vc_wallet/vc_drivers.py +50 -8
- chia/wallet/vc_wallet/vc_store.py +3 -5
- chia/wallet/vc_wallet/vc_wallet.py +15 -22
- chia/wallet/wallet.py +36 -46
- chia/wallet/wallet_action_scope.py +73 -4
- chia/wallet/wallet_blockchain.py +1 -3
- chia/wallet/wallet_interested_store.py +1 -1
- chia/wallet/wallet_nft_store.py +3 -3
- chia/wallet/wallet_node.py +17 -16
- chia/wallet/wallet_node_api.py +4 -5
- chia/wallet/wallet_pool_store.py +1 -1
- chia/wallet/wallet_protocol.py +2 -0
- chia/wallet/wallet_puzzle_store.py +1 -1
- chia/{rpc → wallet}/wallet_request_types.py +670 -81
- chia/{rpc → wallet}/wallet_rpc_api.py +735 -766
- chia/{rpc → wallet}/wallet_rpc_client.py +268 -420
- chia/wallet/wallet_singleton_store.py +8 -7
- chia/wallet/wallet_spend_bundle.py +4 -3
- chia/wallet/wallet_state_manager.py +320 -191
- chia/wallet/wallet_weight_proof_handler.py +1 -2
- chia/wallet/wsm_apis.py +98 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/METADATA +7 -7
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/RECORD +443 -436
- mozilla-ca/cacert.pem +3 -165
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +0 -145
- chia/cmds/dev.py +0 -18
- chia/types/blockchain_format/slots.py +0 -9
- chia/types/blockchain_format/sub_epoch_summary.py +0 -5
- chia/types/end_of_slot_bundle.py +0 -5
- chia/types/full_block.py +0 -5
- chia/types/header_block.py +0 -5
- chia/types/spend_bundle_conditions.py +0 -7
- chia/types/transaction_queue_entry.py +0 -56
- chia/types/unfinished_block.py +0 -5
- /chia/cmds/{installers.py → dev/installers.py} +0 -0
- /chia/cmds/{sim.py → dev/sim.py} +0 -0
- /chia/{util → cmds}/dump_keyring.py +0 -0
- /chia/{full_node → consensus}/signage_point.py +0 -0
- /chia/{rpc → data_layer}/data_layer_rpc_client.py +0 -0
- /chia/{rpc → farmer}/farmer_rpc_api.py +0 -0
- /chia/{util → full_node}/full_block_utils.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_api.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_client.py +0 -0
- /chia/{full_node → protocols}/fee_estimate.py +0 -0
- /chia/{server → protocols}/outbound_message.py +0 -0
- /chia/{rpc → seeder}/crawler_rpc_api.py +0 -0
- /chia/{util → simulator}/vdf_prover.py +0 -0
- /chia/{util → ssl}/ssl_check.py +0 -0
- /chia/{rpc → timelord}/timelord_rpc_api.py +0 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/entry_points.txt +0 -0
chia/server/chia_policy.py
CHANGED
chia/server/node_discovery.py
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
+
import contextlib
|
|
4
5
|
import math
|
|
5
6
|
import random
|
|
6
7
|
import time
|
|
7
8
|
import traceback
|
|
9
|
+
from collections.abc import AsyncIterator
|
|
10
|
+
from dataclasses import dataclass, field
|
|
8
11
|
from logging import Logger
|
|
9
12
|
from pathlib import Path
|
|
10
13
|
from random import Random
|
|
11
|
-
from secrets import randbits
|
|
12
14
|
from typing import Any, Optional
|
|
13
15
|
|
|
14
16
|
import dns.asyncresolver
|
|
@@ -16,13 +18,13 @@ from chia_rs.sized_ints import uint16, uint64
|
|
|
16
18
|
|
|
17
19
|
from chia.protocols.full_node_protocol import RequestPeers, RespondPeers
|
|
18
20
|
from chia.protocols.introducer_protocol import RequestPeersIntroducer
|
|
21
|
+
from chia.protocols.outbound_message import Message, NodeType, make_msg
|
|
19
22
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
20
23
|
from chia.server.address_manager import AddressManager, ExtendedPeerInfo
|
|
21
|
-
from chia.server.address_manager_store import AddressManagerStore
|
|
22
|
-
from chia.server.outbound_message import Message, NodeType, make_msg
|
|
23
24
|
from chia.server.server import ChiaServer
|
|
24
25
|
from chia.server.ws_connection import WSChiaConnection
|
|
25
26
|
from chia.types.peer_info import PeerInfo, TimestampedPeerInfo, UnresolvedPeerInfo
|
|
27
|
+
from chia.util.files import write_file_async
|
|
26
28
|
from chia.util.hash import std_hash
|
|
27
29
|
from chia.util.ip_address import IPAddress
|
|
28
30
|
from chia.util.network import resolve
|
|
@@ -40,59 +42,52 @@ NETWORK_ID_DEFAULT_PORTS = {
|
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
|
|
45
|
+
@dataclass
|
|
43
46
|
class FullNodeDiscovery:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
self.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
self.received_count_from_peers: dict[str, Any] = {}
|
|
78
|
-
self.lock = asyncio.Lock()
|
|
79
|
-
self.connect_peers_task: Optional[asyncio.Task[None]] = None
|
|
80
|
-
self.serialize_task: Optional[asyncio.Task[None]] = None
|
|
81
|
-
self.cleanup_task: Optional[asyncio.Task[None]] = None
|
|
82
|
-
self.initial_wait: int = 0
|
|
47
|
+
server: ChiaServer
|
|
48
|
+
target_outbound_count: int
|
|
49
|
+
peers_file_path: Path
|
|
50
|
+
dns_servers: list[str]
|
|
51
|
+
peer_connect_interval: int
|
|
52
|
+
selected_network: str
|
|
53
|
+
log: Logger
|
|
54
|
+
introducer_info: Optional[dict[str, Any]] = None
|
|
55
|
+
default_port: Optional[int] = None
|
|
56
|
+
resolver: Optional[dns.asyncresolver.Resolver] = field(default=None)
|
|
57
|
+
enable_private_networks: bool = field(default=False)
|
|
58
|
+
is_closed: bool = field(default=False)
|
|
59
|
+
legacy_peer_db_migrated: bool = field(default=False)
|
|
60
|
+
relay_queue: Optional[asyncio.Queue[tuple[TimestampedPeerInfo, int]]] = field(default=None)
|
|
61
|
+
address_manager: Optional[AddressManager] = field(default=None)
|
|
62
|
+
connection_time_pretest: dict[str, Any] = field(default_factory=dict)
|
|
63
|
+
received_count_from_peers: dict[str, Any] = field(default_factory=dict)
|
|
64
|
+
lock: asyncio.Lock = field(default_factory=asyncio.Lock)
|
|
65
|
+
connect_peers_task: Optional[asyncio.Task[None]] = field(default=None)
|
|
66
|
+
serialize_task: Optional[asyncio.Task[None]] = field(default=None)
|
|
67
|
+
cleanup_task: Optional[asyncio.Task[None]] = field(default=None)
|
|
68
|
+
initial_wait: int = field(default=0)
|
|
69
|
+
pending_outbound_connections: set[str] = field(default_factory=set)
|
|
70
|
+
pending_tasks: set[asyncio.Task[None]] = field(default_factory=set)
|
|
71
|
+
introducer_info_obj: Optional[UnresolvedPeerInfo] = field(default=None)
|
|
72
|
+
|
|
73
|
+
def __post_init__(self) -> None:
|
|
74
|
+
random.shuffle(self.dns_servers) # Don't always start with the same DNS server
|
|
75
|
+
|
|
76
|
+
if self.introducer_info is not None:
|
|
77
|
+
self.introducer_info_obj = UnresolvedPeerInfo(self.introducer_info["host"], self.introducer_info["port"])
|
|
78
|
+
self.enable_private_networks = self.introducer_info.get("enable_private_networks", False)
|
|
79
|
+
|
|
83
80
|
try:
|
|
84
|
-
self.resolver
|
|
81
|
+
self.resolver = dns.asyncresolver.Resolver()
|
|
85
82
|
except Exception:
|
|
86
83
|
self.resolver = None
|
|
87
84
|
self.log.exception("Error initializing asyncresolver")
|
|
88
|
-
|
|
89
|
-
self.
|
|
90
|
-
|
|
91
|
-
if default_port is None and selected_network in NETWORK_ID_DEFAULT_PORTS:
|
|
92
|
-
self.default_port = NETWORK_ID_DEFAULT_PORTS[selected_network]
|
|
85
|
+
|
|
86
|
+
if self.default_port is None and self.selected_network in NETWORK_ID_DEFAULT_PORTS:
|
|
87
|
+
self.default_port = NETWORK_ID_DEFAULT_PORTS[self.selected_network]
|
|
93
88
|
|
|
94
89
|
async def initialize_address_manager(self) -> None:
|
|
95
|
-
self.address_manager = await
|
|
90
|
+
self.address_manager = await AddressManager.create_address_manager(self.peers_file_path)
|
|
96
91
|
if self.enable_private_networks:
|
|
97
92
|
self.address_manager.make_private_subnets_valid()
|
|
98
93
|
self.server.set_received_message_callback(self.update_peer_timestamp_on_message)
|
|
@@ -175,7 +170,7 @@ class FullNodeDiscovery:
|
|
|
175
170
|
)
|
|
176
171
|
|
|
177
172
|
async def _introducer_client(self) -> None:
|
|
178
|
-
if self.
|
|
173
|
+
if self.introducer_info_obj is None:
|
|
179
174
|
return None
|
|
180
175
|
|
|
181
176
|
async def on_connect(peer: WSChiaConnection) -> None:
|
|
@@ -183,7 +178,8 @@ class FullNodeDiscovery:
|
|
|
183
178
|
await peer.send_message(msg)
|
|
184
179
|
|
|
185
180
|
await self.server.start_client(
|
|
186
|
-
PeerInfo(await resolve(self.
|
|
181
|
+
PeerInfo(await resolve(self.introducer_info_obj.host, prefer_ipv6=False), self.introducer_info_obj.port),
|
|
182
|
+
on_connect,
|
|
187
183
|
)
|
|
188
184
|
|
|
189
185
|
async def _query_dns(self, dns_address: str) -> None:
|
|
@@ -418,7 +414,8 @@ class FullNodeDiscovery:
|
|
|
418
414
|
serialize_interval = random.randint(15 * 60, 30 * 60)
|
|
419
415
|
await asyncio.sleep(serialize_interval)
|
|
420
416
|
async with self.address_manager.lock:
|
|
421
|
-
|
|
417
|
+
serialised_bytes = self.address_manager.serialize_bytes()
|
|
418
|
+
await write_file_async(self.peers_file_path, serialised_bytes, file_mode=0o644)
|
|
422
419
|
|
|
423
420
|
async def _periodically_cleanup(self) -> None:
|
|
424
421
|
while not self.is_closed:
|
|
@@ -490,47 +487,33 @@ class FullNodeDiscovery:
|
|
|
490
487
|
await self.address_manager.add_to_new_table(peers_adjusted_timestamp, None, 0)
|
|
491
488
|
|
|
492
489
|
|
|
490
|
+
@dataclass
|
|
493
491
|
class FullNodePeers(FullNodeDiscovery):
|
|
494
|
-
self_advertise_task: Optional[asyncio.Task[None]] = None
|
|
495
|
-
address_relay_task: Optional[asyncio.Task[None]] = None
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
server: ChiaServer,
|
|
500
|
-
target_outbound_count: int,
|
|
501
|
-
peers_file_path: Path,
|
|
502
|
-
introducer_info: dict[str, Any],
|
|
503
|
-
dns_servers: list[str],
|
|
504
|
-
peer_connect_interval: int,
|
|
505
|
-
selected_network: str,
|
|
506
|
-
default_port: Optional[int],
|
|
507
|
-
log: Logger,
|
|
508
|
-
) -> None:
|
|
509
|
-
super().__init__(
|
|
510
|
-
server,
|
|
511
|
-
target_outbound_count,
|
|
512
|
-
peers_file_path,
|
|
513
|
-
introducer_info,
|
|
514
|
-
dns_servers,
|
|
515
|
-
peer_connect_interval,
|
|
516
|
-
selected_network,
|
|
517
|
-
default_port,
|
|
518
|
-
log,
|
|
519
|
-
)
|
|
520
|
-
self.relay_queue = asyncio.Queue()
|
|
521
|
-
self.neighbour_known_peers: dict[PeerInfo, set[str]] = {}
|
|
522
|
-
self.key = randbits(256)
|
|
492
|
+
self_advertise_task: Optional[asyncio.Task[None]] = field(default=None)
|
|
493
|
+
address_relay_task: Optional[asyncio.Task[None]] = field(default=None)
|
|
494
|
+
relay_queue: asyncio.Queue[tuple[TimestampedPeerInfo, int]] = field(default_factory=asyncio.Queue)
|
|
495
|
+
neighbour_known_peers: dict[PeerInfo, set[str]] = field(default_factory=dict)
|
|
496
|
+
key: int = field(default_factory=lambda: random.getrandbits(256))
|
|
523
497
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
self.self_advertise_task = create_referenced_task(self._periodically_self_advertise_and_clean_data())
|
|
527
|
-
self.address_relay_task = create_referenced_task(self._address_relay())
|
|
528
|
-
await self.start_tasks()
|
|
498
|
+
def __post_init__(self) -> None:
|
|
499
|
+
super().__post_init__()
|
|
529
500
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
501
|
+
@contextlib.asynccontextmanager
|
|
502
|
+
async def manage(self) -> AsyncIterator[None]:
|
|
503
|
+
try:
|
|
504
|
+
self.log.info("Initialising Full Node peers discovery.")
|
|
505
|
+
await self.initialize_address_manager()
|
|
506
|
+
self.self_advertise_task = create_referenced_task(self._periodically_self_advertise_and_clean_data())
|
|
507
|
+
self.address_relay_task = create_referenced_task(self._address_relay())
|
|
508
|
+
await self.start_tasks()
|
|
509
|
+
self.log.info("Successfully initialised Full Node peers discovery.")
|
|
510
|
+
yield
|
|
511
|
+
finally:
|
|
512
|
+
self.log.info("Closing Full Node peers discovery.")
|
|
513
|
+
await self._close_common()
|
|
514
|
+
cancel_task_safe(self.self_advertise_task, self.log)
|
|
515
|
+
cancel_task_safe(self.address_relay_task, self.log)
|
|
516
|
+
self.log.info("Successfully closed Full Node peers discovery.")
|
|
534
517
|
|
|
535
518
|
async def _periodically_self_advertise_and_clean_data(self) -> None:
|
|
536
519
|
while not self.is_closed:
|
|
@@ -673,30 +656,10 @@ class FullNodePeers(FullNodeDiscovery):
|
|
|
673
656
|
self.log.error(f"Traceback: {traceback.format_exc()}")
|
|
674
657
|
|
|
675
658
|
|
|
659
|
+
@dataclass
|
|
676
660
|
class WalletPeers(FullNodeDiscovery):
|
|
677
|
-
def
|
|
678
|
-
|
|
679
|
-
server: ChiaServer,
|
|
680
|
-
target_outbound_count: int,
|
|
681
|
-
peers_file_path: Path,
|
|
682
|
-
introducer_info: dict[str, Any],
|
|
683
|
-
dns_servers: list[str],
|
|
684
|
-
peer_connect_interval: int,
|
|
685
|
-
selected_network: str,
|
|
686
|
-
default_port: Optional[int],
|
|
687
|
-
log: Logger,
|
|
688
|
-
) -> None:
|
|
689
|
-
super().__init__(
|
|
690
|
-
server,
|
|
691
|
-
target_outbound_count,
|
|
692
|
-
peers_file_path,
|
|
693
|
-
introducer_info,
|
|
694
|
-
dns_servers,
|
|
695
|
-
peer_connect_interval,
|
|
696
|
-
selected_network,
|
|
697
|
-
default_port,
|
|
698
|
-
log,
|
|
699
|
-
)
|
|
661
|
+
def __post_init__(self) -> None:
|
|
662
|
+
super().__post_init__()
|
|
700
663
|
|
|
701
664
|
async def start(self) -> None:
|
|
702
665
|
self.initial_wait = 1
|
chia/server/rate_limits.py
CHANGED
|
@@ -6,9 +6,9 @@ import time
|
|
|
6
6
|
from collections import Counter
|
|
7
7
|
from typing import Optional
|
|
8
8
|
|
|
9
|
+
from chia.protocols.outbound_message import Message
|
|
9
10
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
10
11
|
from chia.protocols.shared_protocol import Capability
|
|
11
|
-
from chia.server.outbound_message import Message
|
|
12
12
|
from chia.server.rate_limit_numbers import RLSettings, Unlimited, get_rate_limits_to_use
|
|
13
13
|
|
|
14
14
|
log = logging.getLogger(__name__)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import Any, Optional
|
|
5
|
+
|
|
6
|
+
from chia.protocols.outbound_message import NodeType
|
|
7
|
+
from chia.types.peer_info import UnresolvedPeerInfo
|
|
8
|
+
|
|
9
|
+
log = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
PEER_INFO_MAPPING: dict[NodeType, str] = {
|
|
12
|
+
NodeType.FULL_NODE: "full_node_peer",
|
|
13
|
+
NodeType.FARMER: "farmer_peer",
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_unresolved_peer_infos(service_config: dict[str, Any], peer_type: NodeType) -> set[UnresolvedPeerInfo]:
|
|
18
|
+
peer_info_key = PEER_INFO_MAPPING[peer_type]
|
|
19
|
+
peer_infos: list[dict[str, Any]] = service_config.get(f"{peer_info_key}s", [])
|
|
20
|
+
peer_info: Optional[dict[str, Any]] = service_config.get(peer_info_key)
|
|
21
|
+
if peer_info is not None:
|
|
22
|
+
peer_infos.append(peer_info)
|
|
23
|
+
|
|
24
|
+
return {UnresolvedPeerInfo(host=peer["host"], port=peer["port"]) for peer in peer_infos}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def set_peer_info(
|
|
28
|
+
service_config: dict[str, Any],
|
|
29
|
+
peer_type: NodeType,
|
|
30
|
+
peer_host: Optional[str] = None,
|
|
31
|
+
peer_port: Optional[int] = None,
|
|
32
|
+
) -> None:
|
|
33
|
+
peer_info_key = PEER_INFO_MAPPING[peer_type]
|
|
34
|
+
if peer_info_key in service_config:
|
|
35
|
+
if peer_host is not None:
|
|
36
|
+
service_config[peer_info_key]["host"] = peer_host
|
|
37
|
+
if peer_port is not None:
|
|
38
|
+
service_config[peer_info_key]["port"] = peer_port
|
|
39
|
+
elif f"{peer_info_key}s" in service_config and len(service_config[f"{peer_info_key}s"]) > 0:
|
|
40
|
+
if peer_host is not None:
|
|
41
|
+
service_config[f"{peer_info_key}s"][0]["host"] = peer_host
|
|
42
|
+
if peer_port is not None:
|
|
43
|
+
service_config[f"{peer_info_key}s"][0]["port"] = peer_port
|
chia/server/server.py
CHANGED
|
@@ -27,18 +27,18 @@ from cryptography.hazmat.backends import default_backend
|
|
|
27
27
|
from cryptography.hazmat.primitives import hashes, serialization
|
|
28
28
|
from typing_extensions import final
|
|
29
29
|
|
|
30
|
+
from chia.protocols.outbound_message import Message, NodeType
|
|
30
31
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
31
32
|
from chia.protocols.protocol_state_machine import message_requires_reply
|
|
32
33
|
from chia.protocols.protocol_timing import INVALID_PROTOCOL_BAN_SECONDS
|
|
33
34
|
from chia.server.api_protocol import ApiProtocol
|
|
34
35
|
from chia.server.introducer_peers import IntroducerPeers
|
|
35
|
-
from chia.server.outbound_message import Message, NodeType
|
|
36
36
|
from chia.server.ssl_context import private_ssl_paths, public_ssl_paths
|
|
37
37
|
from chia.server.ws_connection import ConnectionCallback, WSChiaConnection
|
|
38
|
+
from chia.ssl.ssl_check import verify_ssl_certs_and_keys
|
|
38
39
|
from chia.types.peer_info import PeerInfo
|
|
39
40
|
from chia.util.errors import Err, ProtocolError
|
|
40
41
|
from chia.util.network import WebServer, is_in_network, is_localhost, is_trusted_peer
|
|
41
|
-
from chia.util.ssl_check import verify_ssl_certs_and_keys
|
|
42
42
|
from chia.util.streamable import Streamable
|
|
43
43
|
from chia.util.task_referencer import create_referenced_task
|
|
44
44
|
|
|
@@ -57,7 +57,7 @@ def ssl_context_for_server(
|
|
|
57
57
|
if check_permissions:
|
|
58
58
|
verify_ssl_certs_and_keys([ca_cert, cert_path], [ca_key, key_path], log)
|
|
59
59
|
|
|
60
|
-
ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.CLIENT_AUTH, cafile=str(ca_cert))
|
|
60
|
+
ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.CLIENT_AUTH, cafile=str(ca_cert)) # noqa: S323
|
|
61
61
|
ssl_context.check_hostname = False
|
|
62
62
|
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
|
|
63
63
|
ssl_context.set_ciphers(
|
|
@@ -99,7 +99,7 @@ def ssl_context_for_client(
|
|
|
99
99
|
if check_permissions:
|
|
100
100
|
verify_ssl_certs_and_keys([ca_cert, cert_path], [ca_key, key_path], log)
|
|
101
101
|
|
|
102
|
-
ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.SERVER_AUTH, cafile=str(ca_cert))
|
|
102
|
+
ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.SERVER_AUTH, cafile=str(ca_cert)) # noqa: S323
|
|
103
103
|
ssl_context.check_hostname = False
|
|
104
104
|
ssl_context.load_cert_chain(certfile=str(cert_path), keyfile=str(key_path))
|
|
105
105
|
ssl_context.verify_mode = ssl.CERT_REQUIRED
|
|
@@ -142,7 +142,7 @@ class ChiaServer:
|
|
|
142
142
|
connection_close_task: Optional[asyncio.Task[None]] = None
|
|
143
143
|
received_message_callback: Optional[ConnectionCallback] = None
|
|
144
144
|
banned_peers: dict[str, float] = field(default_factory=dict)
|
|
145
|
-
invalid_protocol_ban_seconds = INVALID_PROTOCOL_BAN_SECONDS
|
|
145
|
+
invalid_protocol_ban_seconds: int = INVALID_PROTOCOL_BAN_SECONDS
|
|
146
146
|
|
|
147
147
|
@classmethod
|
|
148
148
|
def create(
|
chia/server/start_data_layer.py
CHANGED
|
@@ -11,19 +11,19 @@ from chia_rs.sized_ints import uint16
|
|
|
11
11
|
from chia.apis import ApiProtocolRegistry
|
|
12
12
|
from chia.data_layer.data_layer import DataLayer
|
|
13
13
|
from chia.data_layer.data_layer_api import DataLayerAPI
|
|
14
|
+
from chia.data_layer.data_layer_rpc_api import DataLayerRpcApi
|
|
14
15
|
from chia.data_layer.data_layer_util import PluginRemote
|
|
15
16
|
from chia.data_layer.util.plugin import load_plugin_configurations
|
|
16
|
-
from chia.
|
|
17
|
-
from chia.
|
|
18
|
-
from chia.server.outbound_message import NodeType
|
|
17
|
+
from chia.protocols.outbound_message import NodeType
|
|
18
|
+
from chia.server.aliases import DataLayerService, WalletService
|
|
19
19
|
from chia.server.signal_handlers import SignalHandlers
|
|
20
20
|
from chia.server.start_service import RpcInfo, Service, async_run
|
|
21
21
|
from chia.ssl.create_ssl import create_all_ssl
|
|
22
|
-
from chia.types.aliases import DataLayerService, WalletService
|
|
23
22
|
from chia.util.chia_logging import initialize_logging
|
|
24
23
|
from chia.util.config import load_config, load_config_cli
|
|
25
24
|
from chia.util.default_root import resolve_root_path
|
|
26
25
|
from chia.util.task_timing import maybe_manage_task_instrumentation
|
|
26
|
+
from chia.wallet.wallet_rpc_client import WalletRpcClient
|
|
27
27
|
|
|
28
28
|
# See: https://bugs.python.org/issue29288
|
|
29
29
|
"".encode("idna")
|
chia/server/start_farmer.py
CHANGED
|
@@ -12,13 +12,14 @@ from chia.consensus.constants import replace_str_to_bytes
|
|
|
12
12
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
|
|
13
13
|
from chia.farmer.farmer import Farmer
|
|
14
14
|
from chia.farmer.farmer_api import FarmerAPI
|
|
15
|
-
from chia.
|
|
16
|
-
from chia.
|
|
15
|
+
from chia.farmer.farmer_rpc_api import FarmerRpcApi
|
|
16
|
+
from chia.protocols.outbound_message import NodeType
|
|
17
|
+
from chia.server.aliases import FarmerService
|
|
18
|
+
from chia.server.resolve_peer_info import get_unresolved_peer_infos
|
|
17
19
|
from chia.server.signal_handlers import SignalHandlers
|
|
18
20
|
from chia.server.start_service import RpcInfo, Service, async_run
|
|
19
|
-
from chia.types.aliases import FarmerService
|
|
20
21
|
from chia.util.chia_logging import initialize_service_logging
|
|
21
|
-
from chia.util.config import
|
|
22
|
+
from chia.util.config import load_config, load_config_cli
|
|
22
23
|
from chia.util.default_root import resolve_root_path
|
|
23
24
|
from chia.util.keychain import Keychain
|
|
24
25
|
from chia.util.task_timing import maybe_manage_task_instrumentation
|
chia/server/start_full_node.py
CHANGED
|
@@ -14,13 +14,14 @@ from chia.consensus.constants import replace_str_to_bytes
|
|
|
14
14
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
|
|
15
15
|
from chia.full_node.full_node import FullNode
|
|
16
16
|
from chia.full_node.full_node_api import FullNodeAPI
|
|
17
|
-
from chia.
|
|
18
|
-
from chia.
|
|
17
|
+
from chia.full_node.full_node_rpc_api import FullNodeRpcApi
|
|
18
|
+
from chia.protocols.outbound_message import NodeType
|
|
19
|
+
from chia.server.aliases import FullNodeService
|
|
20
|
+
from chia.server.resolve_peer_info import get_unresolved_peer_infos
|
|
19
21
|
from chia.server.signal_handlers import SignalHandlers
|
|
20
22
|
from chia.server.start_service import RpcInfo, Service, async_run
|
|
21
|
-
from chia.types.aliases import FullNodeService
|
|
22
23
|
from chia.util.chia_logging import initialize_service_logging
|
|
23
|
-
from chia.util.config import
|
|
24
|
+
from chia.util.config import load_config, load_config_cli
|
|
24
25
|
from chia.util.default_root import resolve_root_path
|
|
25
26
|
from chia.util.task_timing import maybe_manage_task_instrumentation
|
|
26
27
|
|
chia/server/start_harvester.py
CHANGED
|
@@ -9,17 +9,18 @@ from chia_rs import ConsensusConstants
|
|
|
9
9
|
|
|
10
10
|
from chia.apis import ApiProtocolRegistry
|
|
11
11
|
from chia.consensus.constants import replace_str_to_bytes
|
|
12
|
-
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
12
|
+
from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
|
|
13
13
|
from chia.harvester.harvester import Harvester
|
|
14
14
|
from chia.harvester.harvester_api import HarvesterAPI
|
|
15
|
-
from chia.
|
|
16
|
-
from chia.
|
|
15
|
+
from chia.harvester.harvester_rpc_api import HarvesterRpcApi
|
|
16
|
+
from chia.protocols.outbound_message import NodeType
|
|
17
|
+
from chia.server.aliases import HarvesterService
|
|
18
|
+
from chia.server.resolve_peer_info import get_unresolved_peer_infos
|
|
17
19
|
from chia.server.signal_handlers import SignalHandlers
|
|
18
20
|
from chia.server.start_service import RpcInfo, Service, async_run
|
|
19
|
-
from chia.types.aliases import HarvesterService
|
|
20
21
|
from chia.types.peer_info import UnresolvedPeerInfo
|
|
21
22
|
from chia.util.chia_logging import initialize_service_logging
|
|
22
|
-
from chia.util.config import
|
|
23
|
+
from chia.util.config import load_config, load_config_cli
|
|
23
24
|
from chia.util.default_root import resolve_root_path
|
|
24
25
|
from chia.util.task_timing import maybe_manage_task_instrumentation
|
|
25
26
|
|
|
@@ -40,6 +41,7 @@ def create_harvester_service(
|
|
|
40
41
|
|
|
41
42
|
network_id = service_config["selected_network"]
|
|
42
43
|
overrides = service_config["network_overrides"]["constants"][network_id]
|
|
44
|
+
update_testnet_overrides(network_id, overrides)
|
|
43
45
|
updated_constants = replace_str_to_bytes(consensus_constants, **overrides)
|
|
44
46
|
|
|
45
47
|
node = Harvester(root_path, service_config, updated_constants)
|
chia/server/start_introducer.py
CHANGED
|
@@ -8,10 +8,10 @@ from typing import Any, Optional
|
|
|
8
8
|
from chia.apis import ApiProtocolRegistry
|
|
9
9
|
from chia.introducer.introducer import Introducer
|
|
10
10
|
from chia.introducer.introducer_api import IntroducerAPI
|
|
11
|
-
from chia.
|
|
11
|
+
from chia.protocols.outbound_message import NodeType
|
|
12
|
+
from chia.server.aliases import IntroducerService
|
|
12
13
|
from chia.server.signal_handlers import SignalHandlers
|
|
13
14
|
from chia.server.start_service import Service, async_run
|
|
14
|
-
from chia.types.aliases import IntroducerService
|
|
15
15
|
from chia.util.chia_logging import initialize_service_logging
|
|
16
16
|
from chia.util.config import load_config, load_config_cli
|
|
17
17
|
from chia.util.default_root import resolve_root_path
|
chia/server/start_service.py
CHANGED
|
@@ -14,11 +14,11 @@ from typing import Any, Callable, Generic, Optional, TypeVar, cast
|
|
|
14
14
|
from chia_rs.sized_ints import uint16
|
|
15
15
|
|
|
16
16
|
from chia.daemon.server import service_launch_lock_path
|
|
17
|
+
from chia.protocols.outbound_message import NodeType
|
|
17
18
|
from chia.protocols.shared_protocol import default_capabilities
|
|
18
19
|
from chia.rpc.rpc_server import RpcApiProtocol, RpcServer, RpcServiceProtocol, start_rpc_server
|
|
19
20
|
from chia.server.api_protocol import ApiProtocol
|
|
20
21
|
from chia.server.chia_policy import set_chia_policy
|
|
21
|
-
from chia.server.outbound_message import NodeType
|
|
22
22
|
from chia.server.server import ChiaServer
|
|
23
23
|
from chia.server.signal_handlers import SignalHandlers
|
|
24
24
|
from chia.server.ssl_context import chia_ssl_ca_paths, private_ssl_ca_paths
|
chia/server/start_timelord.py
CHANGED
|
@@ -9,16 +9,17 @@ from chia_rs import ConsensusConstants
|
|
|
9
9
|
|
|
10
10
|
from chia.apis import ApiProtocolRegistry
|
|
11
11
|
from chia.consensus.constants import replace_str_to_bytes
|
|
12
|
-
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
13
|
-
from chia.
|
|
14
|
-
from chia.server.
|
|
12
|
+
from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
|
|
13
|
+
from chia.protocols.outbound_message import NodeType
|
|
14
|
+
from chia.server.aliases import TimelordService
|
|
15
|
+
from chia.server.resolve_peer_info import get_unresolved_peer_infos
|
|
15
16
|
from chia.server.signal_handlers import SignalHandlers
|
|
16
17
|
from chia.server.start_service import RpcInfo, Service, async_run
|
|
17
18
|
from chia.timelord.timelord import Timelord
|
|
18
19
|
from chia.timelord.timelord_api import TimelordAPI
|
|
19
|
-
from chia.
|
|
20
|
+
from chia.timelord.timelord_rpc_api import TimelordRpcApi
|
|
20
21
|
from chia.util.chia_logging import initialize_service_logging
|
|
21
|
-
from chia.util.config import
|
|
22
|
+
from chia.util.config import load_config, load_config_cli
|
|
22
23
|
from chia.util.default_root import resolve_root_path
|
|
23
24
|
from chia.util.task_timing import maybe_manage_task_instrumentation
|
|
24
25
|
|
|
@@ -38,6 +39,7 @@ def create_timelord_service(
|
|
|
38
39
|
|
|
39
40
|
network_id = service_config["selected_network"]
|
|
40
41
|
overrides = service_config["network_overrides"]["constants"][network_id]
|
|
42
|
+
update_testnet_overrides(network_id, overrides)
|
|
41
43
|
updated_constants = replace_str_to_bytes(consensus_constants, **overrides)
|
|
42
44
|
|
|
43
45
|
node = Timelord(root_path, service_config, updated_constants)
|
chia/server/start_wallet.py
CHANGED
|
@@ -10,14 +10,14 @@ from chia_rs import ConsensusConstants
|
|
|
10
10
|
|
|
11
11
|
from chia.apis import ApiProtocolRegistry
|
|
12
12
|
from chia.consensus.constants import replace_str_to_bytes
|
|
13
|
-
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
14
|
-
from chia.
|
|
15
|
-
from chia.server.
|
|
13
|
+
from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
|
|
14
|
+
from chia.protocols.outbound_message import NodeType
|
|
15
|
+
from chia.server.aliases import WalletService
|
|
16
|
+
from chia.server.resolve_peer_info import get_unresolved_peer_infos
|
|
16
17
|
from chia.server.signal_handlers import SignalHandlers
|
|
17
18
|
from chia.server.start_service import RpcInfo, Service, async_run
|
|
18
|
-
from chia.types.aliases import WalletService
|
|
19
19
|
from chia.util.chia_logging import initialize_service_logging
|
|
20
|
-
from chia.util.config import
|
|
20
|
+
from chia.util.config import load_config, load_config_cli
|
|
21
21
|
from chia.util.default_root import resolve_root_path
|
|
22
22
|
from chia.util.keychain import Keychain
|
|
23
23
|
from chia.util.task_timing import maybe_manage_task_instrumentation
|
|
@@ -25,6 +25,7 @@ from chia.wallet.wallet_node import WalletNode
|
|
|
25
25
|
|
|
26
26
|
# See: https://bugs.python.org/issue29288
|
|
27
27
|
from chia.wallet.wallet_node_api import WalletNodeAPI
|
|
28
|
+
from chia.wallet.wallet_rpc_api import WalletRpcApi
|
|
28
29
|
|
|
29
30
|
"".encode("idna")
|
|
30
31
|
|
|
@@ -42,6 +43,7 @@ def create_wallet_service(
|
|
|
42
43
|
|
|
43
44
|
network_id = service_config["selected_network"]
|
|
44
45
|
overrides = service_config["network_overrides"]["constants"][network_id]
|
|
46
|
+
update_testnet_overrides(network_id, overrides)
|
|
45
47
|
updated_constants = replace_str_to_bytes(consensus_constants, **overrides)
|
|
46
48
|
service_config.setdefault("short_sync_blocks_behind_threshold", 20)
|
|
47
49
|
|
chia/server/ws_connection.py
CHANGED
|
@@ -18,6 +18,7 @@ from packaging.version import Version
|
|
|
18
18
|
from typing_extensions import Protocol, final
|
|
19
19
|
|
|
20
20
|
from chia import __version__
|
|
21
|
+
from chia.protocols.outbound_message import Message, NodeType, make_msg
|
|
21
22
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
22
23
|
from chia.protocols.protocol_state_machine import message_response_ok
|
|
23
24
|
from chia.protocols.protocol_timing import (
|
|
@@ -29,7 +30,6 @@ from chia.protocols.protocol_timing import (
|
|
|
29
30
|
from chia.protocols.shared_protocol import Capability, Error, Handshake, protocol_version
|
|
30
31
|
from chia.server.api_protocol import ApiMetadata, ApiProtocol
|
|
31
32
|
from chia.server.capabilities import known_active_capabilities
|
|
32
|
-
from chia.server.outbound_message import Message, NodeType, make_msg
|
|
33
33
|
from chia.server.rate_limits import RateLimiter
|
|
34
34
|
from chia.types.peer_info import PeerInfo
|
|
35
35
|
from chia.util.errors import ApiError, ConsensusError, Err, ProtocolError, TimestampError
|
|
@@ -2,15 +2,15 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Optional
|
|
4
4
|
|
|
5
|
+
from chia_rs import FullBlock
|
|
5
6
|
from chia_rs.sized_ints import uint32
|
|
6
7
|
|
|
8
|
+
from chia.consensus.augmented_chain import AugmentedBlockchain
|
|
7
9
|
from chia.consensus.block_body_validation import ForkInfo
|
|
8
10
|
from chia.consensus.difficulty_adjustment import get_next_sub_slot_iters_and_difficulty
|
|
9
11
|
from chia.full_node.full_node import FullNode, PeakPostProcessingResult
|
|
10
|
-
from chia.types.full_block import FullBlock
|
|
11
12
|
from chia.types.peer_info import PeerInfo
|
|
12
13
|
from chia.types.validation_state import ValidationState
|
|
13
|
-
from chia.util.augmented_chain import AugmentedBlockchain
|
|
14
14
|
from chia.util.batches import to_batches
|
|
15
15
|
|
|
16
16
|
|