chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__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/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc2.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
chia/cmds/data.py
CHANGED
|
@@ -2,8 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
|
+
from collections.abc import Coroutine, Sequence
|
|
5
6
|
from pathlib import Path
|
|
6
|
-
from typing import Any, Callable,
|
|
7
|
+
from typing import Any, Callable, Optional, TypeVar, Union
|
|
7
8
|
|
|
8
9
|
import click
|
|
9
10
|
|
|
@@ -20,7 +21,7 @@ logger = logging.getLogger(__name__)
|
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
# TODO: this is more general and should be part of refactoring the overall CLI code duplication
|
|
23
|
-
def run(coro: Coroutine[Any, Any, Optional[
|
|
24
|
+
def run(coro: Coroutine[Any, Any, Optional[dict[str, Any]]]) -> None:
|
|
24
25
|
import asyncio
|
|
25
26
|
|
|
26
27
|
response = asyncio.run(coro)
|
|
@@ -344,7 +345,7 @@ def get_root(
|
|
|
344
345
|
@options.create_fingerprint()
|
|
345
346
|
def subscribe(
|
|
346
347
|
id: bytes32,
|
|
347
|
-
urls:
|
|
348
|
+
urls: list[str],
|
|
348
349
|
data_rpc_port: int,
|
|
349
350
|
fingerprint: Optional[int],
|
|
350
351
|
) -> None:
|
|
@@ -360,7 +361,7 @@ def subscribe(
|
|
|
360
361
|
@options.create_fingerprint()
|
|
361
362
|
def remove_subscription(
|
|
362
363
|
id: bytes32,
|
|
363
|
-
urls:
|
|
364
|
+
urls: list[str],
|
|
364
365
|
data_rpc_port: int,
|
|
365
366
|
fingerprint: Optional[int],
|
|
366
367
|
) -> None:
|
|
@@ -492,7 +493,7 @@ def add_missing_files(
|
|
|
492
493
|
def add_mirror(
|
|
493
494
|
id: bytes32,
|
|
494
495
|
amount: int,
|
|
495
|
-
urls:
|
|
496
|
+
urls: list[str],
|
|
496
497
|
fee: Optional[uint64],
|
|
497
498
|
data_rpc_port: int,
|
|
498
499
|
fingerprint: Optional[int],
|
|
@@ -674,7 +675,7 @@ def wallet_log_in(
|
|
|
674
675
|
@options.create_fingerprint()
|
|
675
676
|
def get_proof(
|
|
676
677
|
id: bytes32,
|
|
677
|
-
key_strings:
|
|
678
|
+
key_strings: list[str],
|
|
678
679
|
data_rpc_port: int,
|
|
679
680
|
fingerprint: Optional[int],
|
|
680
681
|
) -> None:
|
chia/cmds/data_funcs.py
CHANGED
|
@@ -2,20 +2,24 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import json
|
|
5
|
+
from collections.abc import AsyncIterator
|
|
5
6
|
from pathlib import Path
|
|
6
|
-
from typing import Any,
|
|
7
|
+
from typing import Any, Optional
|
|
7
8
|
|
|
8
9
|
from chia.cmds.cmds_util import get_any_service_client
|
|
9
10
|
from chia.rpc.data_layer_rpc_client import DataLayerRpcClient
|
|
10
11
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
11
12
|
from chia.util.byte_types import hexstr_to_bytes
|
|
13
|
+
from chia.util.default_root import resolve_root_path
|
|
12
14
|
from chia.util.ints import uint64
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
@contextlib.asynccontextmanager
|
|
16
18
|
async def get_client(
|
|
17
19
|
rpc_port: Optional[int], fingerprint: Optional[int] = None, root_path: Optional[Path] = None
|
|
18
|
-
) -> AsyncIterator[
|
|
20
|
+
) -> AsyncIterator[tuple[DataLayerRpcClient, dict[str, Any]]]:
|
|
21
|
+
root_path = resolve_root_path(override=root_path)
|
|
22
|
+
|
|
19
23
|
async with get_any_service_client(
|
|
20
24
|
client_type=DataLayerRpcClient,
|
|
21
25
|
rpc_port=rpc_port,
|
|
@@ -31,7 +35,7 @@ async def wallet_log_in_cmd(
|
|
|
31
35
|
fingerprint: int,
|
|
32
36
|
root_path: Optional[Path] = None,
|
|
33
37
|
) -> None:
|
|
34
|
-
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path)
|
|
38
|
+
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path):
|
|
35
39
|
pass
|
|
36
40
|
|
|
37
41
|
|
|
@@ -63,12 +67,12 @@ async def get_value_cmd(
|
|
|
63
67
|
async def update_data_store_cmd(
|
|
64
68
|
rpc_port: Optional[int],
|
|
65
69
|
store_id: bytes32,
|
|
66
|
-
changelist:
|
|
70
|
+
changelist: list[dict[str, str]],
|
|
67
71
|
fee: Optional[uint64],
|
|
68
72
|
fingerprint: Optional[int],
|
|
69
73
|
submit_on_chain: bool,
|
|
70
74
|
root_path: Optional[Path] = None,
|
|
71
|
-
) ->
|
|
75
|
+
) -> dict[str, Any]:
|
|
72
76
|
res = dict()
|
|
73
77
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
74
78
|
res = await client.update_data_store(
|
|
@@ -84,12 +88,12 @@ async def update_data_store_cmd(
|
|
|
84
88
|
|
|
85
89
|
async def update_multiple_stores_cmd(
|
|
86
90
|
rpc_port: Optional[int],
|
|
87
|
-
store_updates:
|
|
91
|
+
store_updates: list[dict[str, str]],
|
|
88
92
|
fee: Optional[uint64],
|
|
89
93
|
fingerprint: Optional[int],
|
|
90
94
|
submit_on_chain: bool,
|
|
91
95
|
root_path: Optional[Path] = None,
|
|
92
|
-
) ->
|
|
96
|
+
) -> dict[str, Any]:
|
|
93
97
|
res = dict()
|
|
94
98
|
|
|
95
99
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
@@ -109,7 +113,7 @@ async def submit_pending_root_cmd(
|
|
|
109
113
|
fee: Optional[uint64],
|
|
110
114
|
fingerprint: Optional[int],
|
|
111
115
|
root_path: Optional[Path] = None,
|
|
112
|
-
) ->
|
|
116
|
+
) -> dict[str, Any]:
|
|
113
117
|
res = dict()
|
|
114
118
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
115
119
|
res = await client.submit_pending_root(
|
|
@@ -126,7 +130,7 @@ async def submit_all_pending_roots_cmd(
|
|
|
126
130
|
fee: Optional[uint64],
|
|
127
131
|
fingerprint: Optional[int],
|
|
128
132
|
root_path: Optional[Path] = None,
|
|
129
|
-
) ->
|
|
133
|
+
) -> dict[str, Any]:
|
|
130
134
|
res = dict()
|
|
131
135
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
132
136
|
res = await client.submit_all_pending_roots(fee=fee)
|
|
@@ -144,7 +148,7 @@ async def get_keys_cmd(
|
|
|
144
148
|
page: Optional[int],
|
|
145
149
|
max_page_size: Optional[int],
|
|
146
150
|
root_path: Optional[Path] = None,
|
|
147
|
-
) ->
|
|
151
|
+
) -> dict[str, Any]:
|
|
148
152
|
res = dict()
|
|
149
153
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
150
154
|
res = await client.get_keys(store_id=store_id, root_hash=root_hash, page=page, max_page_size=max_page_size)
|
|
@@ -162,7 +166,7 @@ async def get_keys_values_cmd(
|
|
|
162
166
|
page: Optional[int],
|
|
163
167
|
max_page_size: Optional[int],
|
|
164
168
|
root_path: Optional[Path] = None,
|
|
165
|
-
) ->
|
|
169
|
+
) -> dict[str, Any]:
|
|
166
170
|
res = dict()
|
|
167
171
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
168
172
|
res = await client.get_keys_values(
|
|
@@ -186,7 +190,7 @@ async def get_root_cmd(
|
|
|
186
190
|
async def subscribe_cmd(
|
|
187
191
|
rpc_port: Optional[int],
|
|
188
192
|
store_id: bytes32,
|
|
189
|
-
urls:
|
|
193
|
+
urls: list[str],
|
|
190
194
|
fingerprint: Optional[int],
|
|
191
195
|
) -> None:
|
|
192
196
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint) as (client, _):
|
|
@@ -208,7 +212,7 @@ async def unsubscribe_cmd(
|
|
|
208
212
|
async def remove_subscriptions_cmd(
|
|
209
213
|
rpc_port: Optional[int],
|
|
210
214
|
store_id: bytes32,
|
|
211
|
-
urls:
|
|
215
|
+
urls: list[str],
|
|
212
216
|
fingerprint: Optional[int],
|
|
213
217
|
) -> None:
|
|
214
218
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint) as (client, _):
|
|
@@ -225,7 +229,7 @@ async def get_kv_diff_cmd(
|
|
|
225
229
|
page: Optional[int],
|
|
226
230
|
max_page_size: Optional[int],
|
|
227
231
|
root_path: Optional[Path] = None,
|
|
228
|
-
) ->
|
|
232
|
+
) -> dict[str, Any]:
|
|
229
233
|
res = dict()
|
|
230
234
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
231
235
|
res = await client.get_kv_diff(
|
|
@@ -248,7 +252,7 @@ async def get_root_history_cmd(
|
|
|
248
252
|
|
|
249
253
|
async def add_missing_files_cmd(
|
|
250
254
|
rpc_port: Optional[int],
|
|
251
|
-
ids: Optional[
|
|
255
|
+
ids: Optional[list[bytes32]],
|
|
252
256
|
overwrite: bool,
|
|
253
257
|
foldername: Optional[Path],
|
|
254
258
|
fingerprint: Optional[int],
|
|
@@ -265,7 +269,7 @@ async def add_missing_files_cmd(
|
|
|
265
269
|
async def add_mirror_cmd(
|
|
266
270
|
rpc_port: Optional[int],
|
|
267
271
|
store_id: bytes32,
|
|
268
|
-
urls:
|
|
272
|
+
urls: list[str],
|
|
269
273
|
amount: int,
|
|
270
274
|
fee: Optional[uint64],
|
|
271
275
|
fingerprint: Optional[int],
|
|
@@ -343,7 +347,8 @@ async def clear_pending_roots(
|
|
|
343
347
|
rpc_port: Optional[int],
|
|
344
348
|
root_path: Optional[Path] = None,
|
|
345
349
|
fingerprint: Optional[int] = None,
|
|
346
|
-
) ->
|
|
350
|
+
) -> dict[str, Any]:
|
|
351
|
+
result = dict()
|
|
347
352
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
348
353
|
result = await client.clear_pending_roots(store_id=store_id)
|
|
349
354
|
print(json.dumps(result, indent=2, sort_keys=True))
|
|
@@ -353,11 +358,11 @@ async def clear_pending_roots(
|
|
|
353
358
|
|
|
354
359
|
async def get_proof_cmd(
|
|
355
360
|
store_id: bytes32,
|
|
356
|
-
key_strings:
|
|
361
|
+
key_strings: list[str],
|
|
357
362
|
rpc_port: Optional[int],
|
|
358
363
|
root_path: Optional[Path] = None,
|
|
359
364
|
fingerprint: Optional[int] = None,
|
|
360
|
-
) ->
|
|
365
|
+
) -> dict[str, Any]:
|
|
361
366
|
result = dict()
|
|
362
367
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
363
368
|
result = await client.get_proof(store_id=store_id, keys=[hexstr_to_bytes(key) for key in key_strings])
|
|
@@ -367,11 +372,11 @@ async def get_proof_cmd(
|
|
|
367
372
|
|
|
368
373
|
|
|
369
374
|
async def verify_proof_cmd(
|
|
370
|
-
proof:
|
|
375
|
+
proof: dict[str, Any],
|
|
371
376
|
rpc_port: Optional[int],
|
|
372
377
|
root_path: Optional[Path] = None,
|
|
373
378
|
fingerprint: Optional[int] = None,
|
|
374
|
-
) ->
|
|
379
|
+
) -> dict[str, Any]:
|
|
375
380
|
result = dict()
|
|
376
381
|
async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
|
|
377
382
|
result = await client.verify_proof(proof=proof)
|
chia/cmds/db.py
CHANGED
|
@@ -5,6 +5,7 @@ from typing import Optional
|
|
|
5
5
|
|
|
6
6
|
import click
|
|
7
7
|
|
|
8
|
+
from chia.cmds.cmd_classes import ChiaCliContext
|
|
8
9
|
from chia.cmds.db_backup_func import db_backup_func
|
|
9
10
|
from chia.cmds.db_upgrade_func import db_upgrade_func
|
|
10
11
|
from chia.cmds.db_validate_func import db_validate_func
|
|
@@ -41,7 +42,7 @@ def db_upgrade_cmd(
|
|
|
41
42
|
) -> None:
|
|
42
43
|
try:
|
|
43
44
|
db_upgrade_func(
|
|
44
|
-
|
|
45
|
+
ChiaCliContext.set_default(ctx).root_path,
|
|
45
46
|
None if in_db_path is None else Path(in_db_path),
|
|
46
47
|
None if out_db_path is None else Path(out_db_path),
|
|
47
48
|
no_update_config=no_update_config,
|
|
@@ -63,7 +64,7 @@ def db_upgrade_cmd(
|
|
|
63
64
|
def db_validate_cmd(ctx: click.Context, in_db_path: Optional[str], validate_blocks: bool) -> None:
|
|
64
65
|
try:
|
|
65
66
|
db_validate_func(
|
|
66
|
-
|
|
67
|
+
ChiaCliContext.set_default(ctx).root_path,
|
|
67
68
|
None if in_db_path is None else Path(in_db_path),
|
|
68
69
|
validate_blocks=validate_blocks,
|
|
69
70
|
)
|
|
@@ -78,7 +79,7 @@ def db_validate_cmd(ctx: click.Context, in_db_path: Optional[str], validate_bloc
|
|
|
78
79
|
def db_backup_cmd(ctx: click.Context, db_backup_file: Optional[str], no_indexes: bool) -> None:
|
|
79
80
|
try:
|
|
80
81
|
db_backup_func(
|
|
81
|
-
|
|
82
|
+
ChiaCliContext.set_default(ctx).root_path,
|
|
82
83
|
None if db_backup_file is None else Path(db_backup_file),
|
|
83
84
|
no_indexes=no_indexes,
|
|
84
85
|
)
|
chia/cmds/db_backup_func.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
|
-
from typing import Any,
|
|
4
|
+
from typing import Any, Optional
|
|
5
5
|
|
|
6
6
|
from chia.util.config import load_config
|
|
7
7
|
from chia.util.path import path_from_root
|
|
@@ -13,7 +13,7 @@ def db_backup_func(
|
|
|
13
13
|
*,
|
|
14
14
|
no_indexes: bool,
|
|
15
15
|
) -> None:
|
|
16
|
-
config:
|
|
16
|
+
config: dict[str, Any] = load_config(root_path, "config.yaml")["full_node"]
|
|
17
17
|
selected_network: str = config["selected_network"]
|
|
18
18
|
db_pattern: str = config["database_path"]
|
|
19
19
|
db_path_replaced: str = db_pattern.replace("CHALLENGE", selected_network)
|
chia/cmds/db_upgrade_func.py
CHANGED
|
@@ -10,7 +10,7 @@ import textwrap
|
|
|
10
10
|
from contextlib import closing
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from time import monotonic
|
|
13
|
-
from typing import Any,
|
|
13
|
+
from typing import Any, Optional
|
|
14
14
|
|
|
15
15
|
import zstd
|
|
16
16
|
|
|
@@ -33,7 +33,7 @@ def db_upgrade_func(
|
|
|
33
33
|
) -> None:
|
|
34
34
|
update_config: bool = in_db_path is None and out_db_path is None and not no_update_config
|
|
35
35
|
|
|
36
|
-
config:
|
|
36
|
+
config: dict[str, Any]
|
|
37
37
|
selected_network: str
|
|
38
38
|
db_pattern: str
|
|
39
39
|
if in_db_path is None or out_db_path is None:
|
|
@@ -183,7 +183,7 @@ def convert_v1_to_v2(in_path: Path, out_path: Path) -> None:
|
|
|
183
183
|
parameter_limit = get_host_parameter_limit()
|
|
184
184
|
start_time = monotonic()
|
|
185
185
|
block_start_time = start_time
|
|
186
|
-
rowids:
|
|
186
|
+
rowids: list[int] = []
|
|
187
187
|
small_batch_size = BATCH_SIZE <= parameter_limit
|
|
188
188
|
small_chain = peak_height <= parameter_limit
|
|
189
189
|
current_header_hash = peak_hash
|
chia/cmds/db_validate_func.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
|
-
from typing import Any,
|
|
4
|
+
from typing import Any, Optional
|
|
5
5
|
|
|
6
6
|
from chia.consensus.block_record import BlockRecord
|
|
7
7
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
@@ -18,7 +18,7 @@ def db_validate_func(
|
|
|
18
18
|
validate_blocks: bool,
|
|
19
19
|
) -> None:
|
|
20
20
|
if in_db_path is None:
|
|
21
|
-
config:
|
|
21
|
+
config: dict[str, Any] = load_config(root_path, "config.yaml")["full_node"]
|
|
22
22
|
selected_network: str = config["selected_network"]
|
|
23
23
|
db_pattern: str = config["database_path"]
|
|
24
24
|
db_path_replaced: str = db_pattern.replace("CHALLENGE", selected_network)
|
chia/cmds/dev.py
CHANGED
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import click
|
|
4
4
|
|
|
5
|
+
from chia.cmds.gh import gh_group
|
|
5
6
|
from chia.cmds.installers import installers_group
|
|
6
7
|
from chia.cmds.sim import sim_cmd
|
|
7
8
|
|
|
@@ -14,3 +15,4 @@ def dev_cmd(ctx: click.Context) -> None:
|
|
|
14
15
|
|
|
15
16
|
dev_cmd.add_command(sim_cmd)
|
|
16
17
|
dev_cmd.add_command(installers_group)
|
|
18
|
+
dev_cmd.add_command(gh_group)
|
chia/cmds/farm.py
CHANGED
|
@@ -4,6 +4,8 @@ from typing import Optional
|
|
|
4
4
|
|
|
5
5
|
import click
|
|
6
6
|
|
|
7
|
+
from chia.cmds.cmd_classes import ChiaCliContext
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
@click.group("farm", help="Manage your farm")
|
|
9
11
|
def farm_cmd() -> None:
|
|
@@ -49,7 +51,9 @@ def farm_cmd() -> None:
|
|
|
49
51
|
default=None,
|
|
50
52
|
show_default=True,
|
|
51
53
|
)
|
|
54
|
+
@click.pass_context
|
|
52
55
|
def summary_cmd(
|
|
56
|
+
ctx: click.Context,
|
|
53
57
|
rpc_port: Optional[int],
|
|
54
58
|
wallet_rpc_port: Optional[int],
|
|
55
59
|
harvester_rpc_port: Optional[int],
|
|
@@ -57,9 +61,17 @@ def summary_cmd(
|
|
|
57
61
|
) -> None:
|
|
58
62
|
import asyncio
|
|
59
63
|
|
|
60
|
-
from .farm_funcs import summary
|
|
64
|
+
from chia.cmds.farm_funcs import summary
|
|
61
65
|
|
|
62
|
-
asyncio.run(
|
|
66
|
+
asyncio.run(
|
|
67
|
+
summary(
|
|
68
|
+
rpc_port,
|
|
69
|
+
wallet_rpc_port,
|
|
70
|
+
harvester_rpc_port,
|
|
71
|
+
farmer_rpc_port,
|
|
72
|
+
root_path=ChiaCliContext.set_default(ctx).root_path,
|
|
73
|
+
)
|
|
74
|
+
)
|
|
63
75
|
|
|
64
76
|
|
|
65
77
|
@farm_cmd.command("challenges", help="Show the latest challenges")
|
|
@@ -79,9 +91,10 @@ def summary_cmd(
|
|
|
79
91
|
default=20,
|
|
80
92
|
show_default=True,
|
|
81
93
|
)
|
|
82
|
-
|
|
94
|
+
@click.pass_context
|
|
95
|
+
def challenges_cmd(ctx: click.Context, farmer_rpc_port: Optional[int], limit: int) -> None:
|
|
83
96
|
import asyncio
|
|
84
97
|
|
|
85
|
-
from .farm_funcs import challenges
|
|
98
|
+
from chia.cmds.farm_funcs import challenges
|
|
86
99
|
|
|
87
|
-
asyncio.run(challenges(farmer_rpc_port, limit))
|
|
100
|
+
asyncio.run(challenges(ChiaCliContext.set_default(ctx).root_path, farmer_rpc_port, limit))
|
chia/cmds/farm_funcs.py
CHANGED
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import sys
|
|
4
4
|
import traceback
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import Any,
|
|
6
|
+
from typing import Any, Optional
|
|
7
7
|
|
|
8
8
|
from chia.cmds.cmds_util import format_bytes, format_minutes, get_any_service_client
|
|
9
9
|
from chia.cmds.units import units
|
|
@@ -11,29 +11,24 @@ from chia.consensus.block_record import BlockRecord
|
|
|
11
11
|
from chia.rpc.farmer_rpc_client import FarmerRpcClient
|
|
12
12
|
from chia.rpc.full_node_rpc_client import FullNodeRpcClient
|
|
13
13
|
from chia.rpc.wallet_rpc_client import WalletRpcClient
|
|
14
|
-
from chia.util.default_root import DEFAULT_ROOT_PATH
|
|
15
14
|
from chia.util.errors import CliRpcConnectionError
|
|
16
15
|
from chia.util.network import is_localhost
|
|
17
16
|
|
|
18
17
|
SECONDS_PER_BLOCK = (24 * 3600) / 4608
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
async def get_harvesters_summary(
|
|
22
|
-
|
|
23
|
-
) -> Optional[Dict[str, Any]]:
|
|
24
|
-
async with get_any_service_client(FarmerRpcClient, farmer_rpc_port, root_path) as (farmer_client, _):
|
|
20
|
+
async def get_harvesters_summary(farmer_rpc_port: Optional[int], root_path: Path) -> Optional[dict[str, Any]]:
|
|
21
|
+
async with get_any_service_client(FarmerRpcClient, root_path, farmer_rpc_port) as (farmer_client, _):
|
|
25
22
|
return await farmer_client.get_harvesters_summary()
|
|
26
23
|
|
|
27
24
|
|
|
28
|
-
async def get_blockchain_state(
|
|
29
|
-
|
|
30
|
-
) -> Optional[Dict[str, Any]]:
|
|
31
|
-
async with get_any_service_client(FullNodeRpcClient, rpc_port, root_path) as (client, _):
|
|
25
|
+
async def get_blockchain_state(rpc_port: Optional[int], root_path: Path) -> Optional[dict[str, Any]]:
|
|
26
|
+
async with get_any_service_client(FullNodeRpcClient, root_path, rpc_port) as (client, _):
|
|
32
27
|
return await client.get_blockchain_state()
|
|
33
28
|
|
|
34
29
|
|
|
35
|
-
async def get_average_block_time(rpc_port: Optional[int], root_path: Path
|
|
36
|
-
async with get_any_service_client(FullNodeRpcClient,
|
|
30
|
+
async def get_average_block_time(rpc_port: Optional[int], root_path: Path) -> float:
|
|
31
|
+
async with get_any_service_client(FullNodeRpcClient, root_path, rpc_port) as (client, _):
|
|
37
32
|
blocks_to_compare = 500
|
|
38
33
|
blockchain_state = await client.get_blockchain_state()
|
|
39
34
|
curr: Optional[BlockRecord] = blockchain_state["peak"]
|
|
@@ -53,20 +48,18 @@ async def get_average_block_time(rpc_port: Optional[int], root_path: Path = DEFA
|
|
|
53
48
|
return (curr.timestamp - past_curr.timestamp) / (curr.height - past_curr.height)
|
|
54
49
|
|
|
55
50
|
|
|
56
|
-
async def get_wallets_stats(
|
|
57
|
-
|
|
58
|
-
) -> Optional[Dict[str, Any]]:
|
|
59
|
-
async with get_any_service_client(WalletRpcClient, wallet_rpc_port, root_path) as (wallet_client, _):
|
|
51
|
+
async def get_wallets_stats(wallet_rpc_port: Optional[int], root_path: Path) -> Optional[dict[str, Any]]:
|
|
52
|
+
async with get_any_service_client(WalletRpcClient, root_path, wallet_rpc_port) as (wallet_client, _):
|
|
60
53
|
return await wallet_client.get_farmed_amount()
|
|
61
54
|
|
|
62
55
|
|
|
63
|
-
async def get_challenges(farmer_rpc_port: Optional[int]) -> Optional[
|
|
64
|
-
async with get_any_service_client(FarmerRpcClient, farmer_rpc_port) as (farmer_client, _):
|
|
56
|
+
async def get_challenges(root_path: Path, farmer_rpc_port: Optional[int]) -> Optional[list[dict[str, Any]]]:
|
|
57
|
+
async with get_any_service_client(FarmerRpcClient, root_path, farmer_rpc_port) as (farmer_client, _):
|
|
65
58
|
return await farmer_client.get_signage_points()
|
|
66
59
|
|
|
67
60
|
|
|
68
|
-
async def challenges(farmer_rpc_port: Optional[int], limit: int) -> None:
|
|
69
|
-
signage_points = await get_challenges(farmer_rpc_port)
|
|
61
|
+
async def challenges(root_path: Path, farmer_rpc_port: Optional[int], limit: int) -> None:
|
|
62
|
+
signage_points = await get_challenges(root_path, farmer_rpc_port)
|
|
70
63
|
if signage_points is None:
|
|
71
64
|
return None
|
|
72
65
|
|
|
@@ -86,7 +79,7 @@ async def summary(
|
|
|
86
79
|
wallet_rpc_port: Optional[int],
|
|
87
80
|
harvester_rpc_port: Optional[int],
|
|
88
81
|
farmer_rpc_port: Optional[int],
|
|
89
|
-
root_path: Path
|
|
82
|
+
root_path: Path,
|
|
90
83
|
) -> None:
|
|
91
84
|
harvesters_summary = await get_harvesters_summary(farmer_rpc_port, root_path)
|
|
92
85
|
blockchain_state = None
|
|
@@ -135,8 +128,8 @@ async def summary(
|
|
|
135
128
|
total_plots = 0
|
|
136
129
|
|
|
137
130
|
if harvesters_summary is not None:
|
|
138
|
-
harvesters_local:
|
|
139
|
-
harvesters_remote:
|
|
131
|
+
harvesters_local: dict[str, dict[str, Any]] = {}
|
|
132
|
+
harvesters_remote: dict[str, dict[str, Any]] = {}
|
|
140
133
|
for harvester in harvesters_summary["harvesters"]:
|
|
141
134
|
ip = harvester["connection"]["host"]
|
|
142
135
|
if is_localhost(ip):
|
|
@@ -146,7 +139,7 @@ async def summary(
|
|
|
146
139
|
harvesters_remote[ip] = {}
|
|
147
140
|
harvesters_remote[ip][harvester["connection"]["node_id"]] = harvester
|
|
148
141
|
|
|
149
|
-
def process_harvesters(harvester_peers_in:
|
|
142
|
+
def process_harvesters(harvester_peers_in: dict[str, dict[str, Any]]) -> None:
|
|
150
143
|
for harvester_peer_id, harvester_dict in harvester_peers_in.items():
|
|
151
144
|
syncing = harvester_dict["syncing"]
|
|
152
145
|
if syncing is not None and syncing["initial"]:
|