chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.5.8rc1__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/__init__.py +8 -4
- chia/_tests/blockchain/blockchain_test_utils.py +6 -8
- chia/_tests/blockchain/test_augmented_chain.py +4 -4
- chia/_tests/blockchain/test_blockchain.py +165 -190
- chia/_tests/blockchain/test_build_chains.py +2 -4
- chia/_tests/blockchain/test_get_block_generator.py +2 -3
- chia/_tests/clvm/coin_store.py +4 -7
- chia/_tests/clvm/test_clvm_step.py +4 -4
- chia/_tests/clvm/test_puzzle_compression.py +2 -1
- chia/_tests/clvm/test_puzzle_drivers.py +2 -2
- chia/_tests/clvm/test_singletons.py +2 -4
- chia/_tests/clvm/test_spend_sim.py +2 -2
- chia/_tests/cmds/cmd_test_utils.py +27 -45
- chia/_tests/cmds/test_cmd_framework.py +6 -6
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_show.py +4 -4
- chia/_tests/cmds/test_tx_config_args.py +1 -2
- chia/_tests/cmds/testing_classes.py +4 -5
- chia/_tests/cmds/wallet/test_did.py +24 -27
- chia/_tests/cmds/wallet/test_nft.py +12 -10
- chia/_tests/cmds/wallet/test_vcs.py +11 -12
- chia/_tests/cmds/wallet/test_wallet.py +134 -89
- chia/_tests/conftest.py +59 -30
- chia/_tests/connection_utils.py +2 -2
- chia/_tests/core/cmds/test_beta.py +4 -4
- chia/_tests/core/cmds/test_keys.py +2 -3
- chia/_tests/core/cmds/test_wallet.py +15 -15
- chia/_tests/core/consensus/test_pot_iterations.py +19 -73
- chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
- chia/_tests/core/daemon/test_daemon.py +11 -11
- chia/_tests/core/data_layer/conftest.py +2 -2
- chia/_tests/core/data_layer/test_data_rpc.py +28 -14
- chia/_tests/core/data_layer/test_data_store.py +10 -10
- chia/_tests/core/data_layer/util.py +11 -11
- chia/_tests/core/farmer/test_farmer_api.py +2 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
- chia/_tests/core/full_node/stores/test_block_store.py +5 -4
- chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
- chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +3 -4
- chia/_tests/core/full_node/test_conditions.py +21 -23
- chia/_tests/core/full_node/test_full_node.py +225 -62
- chia/_tests/core/full_node/test_hint_management.py +2 -4
- chia/_tests/core/full_node/test_performance.py +0 -1
- chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
- chia/_tests/core/full_node/test_transactions.py +1 -2
- chia/_tests/core/full_node/test_tx_processing_queue.py +109 -25
- chia/_tests/core/mempool/test_mempool.py +29 -37
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
- chia/_tests/core/mempool/test_mempool_manager.py +963 -839
- chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
- chia/_tests/core/server/serve.py +7 -7
- chia/_tests/core/server/test_dos.py +1 -2
- chia/_tests/core/server/test_event_loop.py +12 -4
- chia/_tests/core/server/test_loop.py +7 -8
- chia/_tests/core/server/test_rate_limits.py +9 -8
- chia/_tests/core/server/test_server.py +61 -1
- chia/_tests/core/services/test_services.py +2 -2
- chia/_tests/core/ssl/test_ssl.py +2 -2
- chia/_tests/core/test_cost_calculation.py +2 -6
- chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
- chia/_tests/core/test_filter.py +0 -1
- chia/_tests/core/test_full_node_rpc.py +2 -2
- chia/_tests/core/test_merkle_set.py +1 -2
- chia/_tests/core/test_seeder.py +4 -4
- chia/_tests/core/util/test_config.py +4 -4
- chia/_tests/core/util/test_jsonify.py +2 -2
- chia/_tests/core/util/test_keychain.py +3 -3
- chia/_tests/core/util/test_lockfile.py +2 -1
- chia/_tests/core/util/test_log_exceptions.py +1 -2
- chia/_tests/core/util/test_streamable.py +17 -17
- chia/_tests/db/test_db_wrapper.py +3 -2
- chia/_tests/environments/wallet.py +14 -14
- chia/_tests/ether.py +4 -3
- chia/_tests/farmer_harvester/test_farmer.py +41 -24
- chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
- chia/_tests/harvester/test_harvester_api.py +11 -4
- chia/_tests/plot_sync/test_plot_sync.py +13 -11
- chia/_tests/plot_sync/test_receiver.py +11 -10
- chia/_tests/plot_sync/test_sync_simulated.py +2 -2
- chia/_tests/plot_sync/util.py +1 -2
- chia/_tests/plotting/test_plot_manager.py +7 -6
- chia/_tests/plotting/test_prover.py +30 -38
- chia/_tests/pools/test_pool_cmdline.py +4 -6
- chia/_tests/pools/test_pool_rpc.py +203 -61
- chia/_tests/pools/test_pool_wallet.py +3 -3
- chia/_tests/pools/test_wallet_pool_store.py +1 -4
- chia/_tests/process_junit.py +2 -2
- chia/_tests/rpc/test_rpc_client.py +4 -4
- chia/_tests/rpc/test_rpc_server.py +3 -3
- chia/_tests/simulation/test_simulation.py +12 -25
- chia/_tests/solver/test_solver_service.py +13 -4
- chia/_tests/testconfig.py +2 -2
- chia/_tests/timelord/test_new_peak.py +22 -11
- chia/_tests/tools/test_run_block.py +0 -2
- chia/_tests/tools/test_virtual_project.py +2 -1
- chia/_tests/util/benchmarks.py +1 -0
- chia/_tests/util/blockchain.py +38 -36
- chia/_tests/util/blockchain_mock.py +11 -11
- chia/_tests/util/build_network_protocol_files.py +2 -1
- chia/_tests/util/coin_store.py +2 -1
- chia/_tests/util/config.py +1 -1
- chia/_tests/util/db_connection.py +2 -3
- chia/_tests/util/full_sync.py +9 -11
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/get_name_puzzle_conditions.py +2 -0
- chia/_tests/util/misc.py +24 -24
- chia/_tests/util/network_protocol_data.py +20 -3
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +292 -3
- chia/_tests/util/setup_nodes.py +62 -47
- chia/_tests/util/spend_sim.py +57 -57
- chia/_tests/util/test_async_pool.py +2 -3
- chia/_tests/util/test_chia_version.py +1 -3
- chia/_tests/util/test_config.py +3 -3
- chia/_tests/util/test_full_block_utils.py +6 -3
- chia/_tests/util/test_limited_semaphore.py +1 -2
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_network.py +1 -2
- chia/_tests/util/test_priority_mutex.py +3 -3
- chia/_tests/util/test_recursive_replace.py +5 -6
- chia/_tests/util/test_replace_str_to_bytes.py +8 -10
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/time_out_assert.py +2 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
- chia/_tests/wallet/conftest.py +6 -6
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
- chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
- chia/_tests/wallet/did_wallet/test_did.py +16 -6
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
- chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
- chia/_tests/wallet/sync/test_wallet_sync.py +43 -47
- chia/_tests/wallet/test_clvm_streamable.py +2 -3
- chia/_tests/wallet/test_coin_management.py +2 -2
- chia/_tests/wallet/test_conditions.py +45 -51
- chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
- chia/_tests/wallet/test_new_wallet_protocol.py +4 -6
- chia/_tests/wallet/test_notifications.py +14 -14
- chia/_tests/wallet/test_signer_protocol.py +5 -5
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
- chia/_tests/wallet/test_transaction_store.py +20 -20
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +380 -228
- chia/_tests/wallet/test_wallet_action_scope.py +4 -4
- chia/_tests/wallet/test_wallet_blockchain.py +12 -12
- chia/_tests/wallet/test_wallet_coin_store.py +3 -4
- chia/_tests/wallet/test_wallet_node.py +14 -14
- chia/_tests/wallet/test_wallet_test_framework.py +2 -1
- chia/_tests/wallet/test_wallet_utils.py +2 -3
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
- chia/_tests/wallet/wallet_block_tools.py +12 -11
- chia/_tests/weight_proof/config.py +1 -0
- chia/_tests/weight_proof/test_weight_proof.py +5 -4
- chia/apis/__init__.py +21 -0
- chia/apis/farmer_stub.py +102 -0
- chia/apis/full_node_stub.py +372 -0
- chia/apis/harvester_stub.py +57 -0
- chia/apis/introducer_stub.py +35 -0
- chia/apis/solver_stub.py +30 -0
- chia/apis/stub_protocol_registry.py +21 -0
- chia/apis/timelord_stub.py +39 -0
- chia/apis/wallet_stub.py +161 -0
- chia/cmds/beta.py +3 -4
- chia/cmds/beta_funcs.py +4 -3
- chia/cmds/check_wallet_db.py +4 -4
- chia/cmds/chia.py +1 -2
- chia/cmds/cmd_classes.py +11 -13
- chia/cmds/cmd_helpers.py +11 -11
- chia/cmds/cmds_util.py +15 -15
- chia/cmds/coin_funcs.py +6 -7
- chia/cmds/coins.py +2 -3
- chia/cmds/configure.py +1 -2
- chia/cmds/data.py +42 -42
- chia/cmds/data_funcs.py +81 -81
- chia/cmds/db.py +4 -5
- 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/data.py +4 -4
- chia/cmds/dev/gh.py +5 -5
- chia/cmds/dev/installers.py +2 -3
- chia/cmds/dev/mempool.py +3 -4
- chia/cmds/dev/mempool_funcs.py +4 -4
- chia/cmds/dev/sim.py +8 -8
- chia/cmds/dump_keyring.py +3 -3
- chia/cmds/farm.py +6 -8
- chia/cmds/farm_funcs.py +25 -24
- chia/cmds/init_funcs.py +4 -4
- chia/cmds/keys.py +16 -18
- chia/cmds/keys_funcs.py +36 -36
- chia/cmds/netspace.py +1 -3
- chia/cmds/netspace_funcs.py +1 -2
- chia/cmds/options.py +3 -2
- chia/cmds/param_types.py +17 -16
- chia/cmds/passphrase.py +6 -7
- chia/cmds/passphrase_funcs.py +11 -13
- chia/cmds/peer.py +1 -3
- chia/cmds/peer_funcs.py +3 -3
- chia/cmds/plotnft.py +6 -7
- chia/cmds/plotnft_funcs.py +37 -26
- chia/cmds/rpc.py +3 -3
- chia/cmds/show.py +3 -5
- chia/cmds/show_funcs.py +9 -9
- chia/cmds/sim_funcs.py +25 -26
- chia/cmds/solver.py +1 -3
- chia/cmds/solver_funcs.py +1 -2
- chia/cmds/start_funcs.py +2 -2
- chia/cmds/wallet.py +76 -81
- chia/cmds/wallet_funcs.py +206 -177
- chia/consensus/augmented_chain.py +6 -6
- chia/consensus/block_body_validation.py +19 -15
- chia/consensus/block_creation.py +25 -21
- chia/consensus/block_header_validation.py +27 -13
- chia/consensus/block_height_map.py +3 -6
- chia/consensus/block_height_map_protocol.py +2 -2
- chia/consensus/block_record.py +2 -4
- chia/consensus/blockchain.py +58 -40
- chia/consensus/blockchain_interface.py +7 -7
- chia/consensus/coin_store_protocol.py +5 -6
- chia/consensus/condition_tools.py +4 -4
- chia/consensus/cost_calculator.py +2 -3
- chia/consensus/default_constants.py +16 -13
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +3 -5
- chia/consensus/find_fork_point.py +2 -4
- chia/consensus/full_block_to_block_record.py +11 -13
- chia/consensus/generator_tools.py +2 -3
- chia/consensus/get_block_challenge.py +42 -26
- chia/consensus/get_block_generator.py +2 -3
- chia/consensus/make_sub_epoch_summary.py +8 -7
- chia/consensus/multiprocess_validation.py +31 -20
- chia/consensus/pos_quality.py +6 -23
- chia/consensus/pot_iterations.py +17 -44
- chia/consensus/signage_point.py +4 -5
- chia/consensus/vdf_info_computation.py +2 -4
- chia/daemon/client.py +8 -8
- chia/daemon/keychain_proxy.py +31 -37
- chia/daemon/server.py +32 -33
- chia/daemon/windows_signal.py +4 -3
- chia/data_layer/data_layer.py +86 -77
- chia/data_layer/data_layer_rpc_api.py +9 -9
- chia/data_layer/data_layer_rpc_client.py +13 -15
- chia/data_layer/data_layer_server.py +3 -3
- chia/data_layer/data_layer_util.py +14 -14
- chia/data_layer/data_layer_wallet.py +94 -101
- chia/data_layer/data_store.py +50 -50
- chia/data_layer/dl_wallet_store.py +9 -12
- chia/data_layer/download_data.py +8 -9
- chia/data_layer/s3_plugin_service.py +5 -9
- chia/data_layer/start_data_layer.py +5 -5
- chia/farmer/farmer.py +31 -31
- chia/farmer/farmer_api.py +45 -33
- chia/farmer/farmer_rpc_api.py +5 -4
- chia/farmer/farmer_rpc_client.py +6 -6
- chia/farmer/start_farmer.py +6 -6
- chia/full_node/block_store.py +13 -16
- chia/full_node/check_fork_next_block.py +1 -2
- chia/full_node/coin_store.py +15 -16
- chia/full_node/eligible_coin_spends.py +3 -3
- chia/full_node/fee_estimate_store.py +2 -3
- chia/full_node/fee_tracker.py +1 -2
- chia/full_node/full_block_utils.py +4 -4
- chia/full_node/full_node.py +238 -224
- chia/full_node/full_node_api.py +193 -150
- chia/full_node/full_node_rpc_api.py +53 -31
- chia/full_node/full_node_rpc_client.py +18 -19
- chia/full_node/full_node_store.py +45 -43
- chia/full_node/hint_management.py +2 -2
- chia/full_node/mempool.py +17 -19
- chia/full_node/mempool_manager.py +89 -42
- chia/full_node/pending_tx_cache.py +2 -3
- chia/full_node/start_full_node.py +5 -5
- chia/full_node/sync_store.py +3 -4
- chia/full_node/tx_processing_queue.py +34 -13
- chia/full_node/weight_proof.py +61 -48
- chia/harvester/harvester.py +25 -24
- chia/harvester/harvester_api.py +61 -38
- chia/harvester/harvester_rpc_api.py +10 -10
- chia/harvester/start_harvester.py +4 -4
- chia/introducer/introducer.py +3 -3
- chia/introducer/introducer_api.py +6 -4
- chia/introducer/start_introducer.py +4 -4
- chia/legacy/keyring.py +3 -3
- chia/plot_sync/delta.py +1 -2
- chia/plot_sync/receiver.py +20 -17
- chia/plot_sync/sender.py +15 -10
- chia/plotters/bladebit.py +7 -7
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +4 -4
- chia/plotters/plotters.py +4 -4
- chia/plotters/plotters_util.py +3 -3
- chia/plotting/cache.py +20 -14
- chia/plotting/check_plots.py +26 -35
- chia/plotting/create_plots.py +22 -23
- chia/plotting/manager.py +21 -14
- chia/plotting/prover.py +59 -42
- chia/plotting/util.py +16 -16
- chia/pools/pool_config.py +2 -1
- chia/pools/pool_puzzles.py +11 -12
- chia/pools/pool_wallet.py +34 -57
- chia/pools/pool_wallet_info.py +39 -10
- chia/protocols/farmer_protocol.py +8 -9
- chia/protocols/fee_estimate.py +3 -4
- chia/protocols/full_node_protocol.py +3 -4
- chia/protocols/harvester_protocol.py +27 -15
- chia/protocols/outbound_message.py +3 -3
- chia/protocols/pool_protocol.py +8 -9
- chia/protocols/shared_protocol.py +1 -2
- chia/protocols/solver_protocol.py +9 -2
- chia/protocols/timelord_protocol.py +4 -7
- chia/protocols/wallet_protocol.py +11 -12
- chia/rpc/rpc_client.py +9 -9
- chia/rpc/rpc_server.py +17 -17
- chia/rpc/util.py +2 -2
- chia/seeder/crawler.py +8 -8
- chia/seeder/crawler_api.py +21 -27
- chia/seeder/crawler_rpc_api.py +2 -2
- chia/seeder/dns_server.py +21 -21
- chia/seeder/start_crawler.py +4 -4
- chia/server/address_manager.py +15 -16
- chia/server/api_protocol.py +11 -11
- chia/server/chia_policy.py +46 -26
- chia/server/introducer_peers.py +2 -3
- chia/server/node_discovery.py +19 -19
- chia/server/rate_limit_numbers.py +4 -5
- chia/server/rate_limits.py +4 -4
- chia/server/resolve_peer_info.py +4 -4
- chia/server/server.py +49 -52
- chia/server/signal_handlers.py +6 -6
- chia/server/start_service.py +17 -17
- chia/server/upnp.py +4 -6
- chia/server/ws_connection.py +52 -37
- chia/simulator/add_blocks_in_batches.py +1 -3
- chia/simulator/block_tools.py +312 -200
- chia/simulator/full_node_simulator.py +56 -35
- chia/simulator/keyring.py +2 -3
- chia/simulator/setup_services.py +15 -15
- chia/simulator/simulator_full_node_rpc_api.py +1 -2
- chia/simulator/simulator_full_node_rpc_client.py +1 -2
- chia/simulator/simulator_protocol.py +1 -2
- chia/simulator/simulator_test_tools.py +3 -3
- chia/simulator/start_simulator.py +7 -7
- chia/simulator/wallet_tools.py +10 -10
- chia/solver/solver.py +10 -10
- chia/solver/solver_api.py +10 -8
- chia/solver/solver_rpc_api.py +2 -2
- chia/solver/start_solver.py +4 -4
- chia/ssl/cacert.pem +148 -90
- chia/ssl/chia_ca.crt +14 -10
- chia/ssl/chia_ca_old.crt +19 -0
- chia/ssl/create_ssl.py +4 -4
- chia/ssl/renewedselfsignedca.conf +4 -0
- chia/ssl/ssl_check.py +1 -2
- chia/timelord/iters_from_block.py +1 -4
- chia/timelord/start_timelord.py +4 -4
- chia/timelord/timelord.py +44 -40
- chia/timelord/timelord_api.py +6 -4
- chia/timelord/timelord_launcher.py +2 -2
- chia/timelord/timelord_rpc_api.py +2 -2
- chia/timelord/timelord_state.py +11 -12
- chia/types/block_protocol.py +1 -3
- chia/types/blockchain_format/coin.py +1 -3
- chia/types/blockchain_format/program.py +11 -8
- chia/types/blockchain_format/proof_of_space.py +123 -76
- chia/types/blockchain_format/tree_hash.py +3 -3
- chia/types/blockchain_format/vdf.py +1 -2
- chia/types/coin_spend.py +3 -3
- chia/types/mempool_item.py +5 -5
- chia/types/mempool_submission_status.py +2 -3
- chia/types/peer_info.py +1 -2
- chia/types/unfinished_header_block.py +3 -4
- chia/types/validation_state.py +1 -2
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +5 -5
- chia/util/bech32m.py +1 -2
- chia/util/beta_metrics.py +2 -2
- chia/util/block_cache.py +4 -4
- chia/util/chia_logging.py +2 -2
- chia/util/chia_version.py +1 -2
- chia/util/config.py +15 -16
- chia/util/db_wrapper.py +26 -27
- chia/util/default_root.py +1 -2
- chia/util/errors.py +3 -3
- chia/util/file_keyring.py +14 -14
- chia/util/files.py +2 -3
- chia/util/hash.py +4 -4
- chia/util/initial-config.yaml +3 -5
- chia/util/inline_executor.py +2 -1
- chia/util/ip_address.py +1 -2
- chia/util/keychain.py +25 -27
- chia/util/keyring_wrapper.py +18 -19
- chia/util/lock.py +3 -4
- chia/util/log_exceptions.py +1 -2
- chia/util/lru_cache.py +2 -2
- chia/util/network.py +6 -6
- chia/util/path.py +2 -3
- chia/util/priority_mutex.py +2 -2
- chia/util/profiler.py +1 -2
- chia/util/safe_cancel_task.py +1 -2
- chia/util/streamable.py +22 -8
- chia/util/task_referencer.py +1 -1
- chia/util/timing.py +3 -3
- chia/util/virtual_project_analysis.py +6 -5
- chia/util/ws_message.py +2 -2
- chia/wallet/cat_wallet/cat_info.py +3 -4
- chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
- chia/wallet/cat_wallet/cat_utils.py +3 -4
- chia/wallet/cat_wallet/cat_wallet.py +61 -83
- chia/wallet/cat_wallet/lineage_store.py +3 -4
- chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
- chia/wallet/coin_selection.py +9 -10
- chia/wallet/conditions.py +120 -105
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
- chia/wallet/derivation_record.py +1 -2
- chia/wallet/derive_keys.py +2 -4
- chia/wallet/did_wallet/did_info.py +10 -11
- chia/wallet/did_wallet/did_wallet.py +36 -82
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
- chia/wallet/driver_protocol.py +5 -7
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
- chia/wallet/nft_wallet/nft_info.py +8 -9
- chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
- chia/wallet/nft_wallet/nft_wallet.py +79 -116
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
- chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
- chia/wallet/nft_wallet/uncurry_nft.py +10 -11
- chia/wallet/notification_manager.py +3 -3
- chia/wallet/notification_store.py +44 -61
- chia/wallet/outer_puzzles.py +6 -7
- chia/wallet/puzzle_drivers.py +34 -6
- chia/wallet/puzzles/clawback/drivers.py +6 -6
- chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
- chia/wallet/puzzles/load_clvm.py +1 -1
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
- chia/wallet/puzzles/singleton_top_layer.py +2 -3
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
- chia/wallet/puzzles/tails.py +3 -3
- chia/wallet/singleton.py +5 -7
- chia/wallet/singleton_record.py +3 -3
- chia/wallet/start_wallet.py +5 -5
- chia/wallet/trade_manager.py +37 -58
- chia/wallet/trade_record.py +4 -4
- chia/wallet/trading/offer.py +59 -46
- chia/wallet/trading/trade_store.py +8 -9
- chia/wallet/transaction_record.py +8 -8
- chia/wallet/uncurried_puzzle.py +1 -2
- chia/wallet/util/clvm_streamable.py +12 -12
- chia/wallet/util/compute_hints.py +4 -5
- chia/wallet/util/curry_and_treehash.py +1 -2
- chia/wallet/util/merkle_tree.py +2 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/wallet/util/signing.py +85 -0
- chia/wallet/util/tx_config.py +15 -6
- chia/wallet/util/wallet_sync_utils.py +14 -16
- chia/wallet/util/wallet_types.py +2 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
- chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
- chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
- chia/wallet/vc_wallet/vc_drivers.py +27 -27
- chia/wallet/vc_wallet/vc_store.py +5 -6
- chia/wallet/vc_wallet/vc_wallet.py +33 -61
- chia/wallet/wallet.py +50 -78
- chia/wallet/wallet_action_scope.py +11 -11
- chia/wallet/wallet_blockchain.py +12 -12
- chia/wallet/wallet_coin_record.py +12 -6
- chia/wallet/wallet_coin_store.py +24 -25
- chia/wallet/wallet_interested_store.py +3 -5
- chia/wallet/wallet_nft_store.py +10 -11
- chia/wallet/wallet_node.py +53 -61
- chia/wallet/wallet_node_api.py +5 -3
- chia/wallet/wallet_protocol.py +23 -23
- chia/wallet/wallet_puzzle_store.py +15 -18
- chia/wallet/wallet_request_types.py +778 -114
- chia/wallet/wallet_retry_store.py +1 -3
- chia/wallet/wallet_rpc_api.py +572 -909
- chia/wallet/wallet_rpc_client.py +87 -279
- chia/wallet/wallet_singleton_store.py +3 -4
- chia/wallet/wallet_state_manager.py +332 -106
- chia/wallet/wallet_transaction_store.py +11 -14
- chia/wallet/wallet_user_store.py +4 -6
- chia/wallet/wallet_weight_proof_handler.py +4 -4
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/RECORD +507 -516
- chia/apis.py +0 -21
- chia/consensus/check_time_locks.py +0 -57
- chia/data_layer/puzzles/__init__.py +0 -0
- chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
- chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
- chia/types/coin_record.py +0 -44
- chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
chia/cmds/param_types.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from collections.abc import Callable
|
|
3
4
|
from dataclasses import dataclass
|
|
4
5
|
from decimal import Decimal, InvalidOperation
|
|
5
|
-
from typing import Any
|
|
6
|
+
from typing import Any
|
|
6
7
|
|
|
7
8
|
import click
|
|
8
9
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -20,9 +21,9 @@ one_decimal_mojo = Decimal("1e-12")
|
|
|
20
21
|
|
|
21
22
|
def validate_uint64(
|
|
22
23
|
value: str,
|
|
23
|
-
fail_func: Callable[[str,
|
|
24
|
-
param:
|
|
25
|
-
ctx:
|
|
24
|
+
fail_func: Callable[[str, click.Parameter | None, click.Context | None], None],
|
|
25
|
+
param: click.Parameter | None,
|
|
26
|
+
ctx: click.Context | None,
|
|
26
27
|
) -> uint64:
|
|
27
28
|
try:
|
|
28
29
|
d_value = Decimal(value)
|
|
@@ -41,9 +42,9 @@ def validate_uint64(
|
|
|
41
42
|
|
|
42
43
|
def validate_decimal_xch(
|
|
43
44
|
value: str,
|
|
44
|
-
fail_func: Callable[[str,
|
|
45
|
-
param:
|
|
46
|
-
ctx:
|
|
45
|
+
fail_func: Callable[[str, click.Parameter | None, click.Context | None], None],
|
|
46
|
+
param: click.Parameter | None,
|
|
47
|
+
ctx: click.Context | None,
|
|
47
48
|
) -> Decimal:
|
|
48
49
|
try:
|
|
49
50
|
d_value = Decimal(value)
|
|
@@ -64,7 +65,7 @@ class TransactionFeeParamType(click.ParamType):
|
|
|
64
65
|
name: str = "XCH" # type name for cli, TODO: Change once the mojo flag is implemented
|
|
65
66
|
value_limit: Decimal = Decimal("0.5")
|
|
66
67
|
|
|
67
|
-
def convert(self, value: Any, param:
|
|
68
|
+
def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> uint64:
|
|
68
69
|
# suggested by click, but we are not using it to avoid possible misinterpretation of units.
|
|
69
70
|
# if isinstance(value, uint64):
|
|
70
71
|
# return value
|
|
@@ -89,11 +90,11 @@ class CliAmount:
|
|
|
89
90
|
"""
|
|
90
91
|
|
|
91
92
|
mojos: bool
|
|
92
|
-
amount:
|
|
93
|
+
amount: uint64 | Decimal | None # uint64 if mojos, Decimal if not, None if default value is none
|
|
93
94
|
|
|
94
95
|
def convert_amount_with_default(
|
|
95
|
-
self, mojo_per_unit: int, default_value:
|
|
96
|
-
) ->
|
|
96
|
+
self, mojo_per_unit: int, default_value: uint64 | None = uint64(0)
|
|
97
|
+
) -> uint64 | None:
|
|
97
98
|
if self.amount is None: # if the value is set to none, return the default value
|
|
98
99
|
return default_value
|
|
99
100
|
return self.convert_amount(mojo_per_unit)
|
|
@@ -122,7 +123,7 @@ class AmountParamType(click.ParamType):
|
|
|
122
123
|
|
|
123
124
|
name: str = "XCH" # type name for cli, TODO: Change once the mojo flag is implemented
|
|
124
125
|
|
|
125
|
-
def convert(self, value: Any, param:
|
|
126
|
+
def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> CliAmount:
|
|
126
127
|
# suggested by click, but being left in as mojos flag makes default misrepresentation less likely.
|
|
127
128
|
if isinstance(value, CliAmount):
|
|
128
129
|
return value
|
|
@@ -164,7 +165,7 @@ class AddressParamType(click.ParamType):
|
|
|
164
165
|
|
|
165
166
|
name: str = "Address" # type name for cli
|
|
166
167
|
|
|
167
|
-
def convert(self, value: Any, param:
|
|
168
|
+
def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> CliAddress:
|
|
168
169
|
# suggested by click, but not really used so removed to make unexpected types more obvious.
|
|
169
170
|
# if isinstance(value, CliAddress):
|
|
170
171
|
# return value
|
|
@@ -176,7 +177,7 @@ class AddressParamType(click.ParamType):
|
|
|
176
177
|
addr_type: AddressType = AddressType.XCH
|
|
177
178
|
|
|
178
179
|
# attempt to get cached prefix
|
|
179
|
-
expected_prefix:
|
|
180
|
+
expected_prefix: str | None = None
|
|
180
181
|
root_path = DEFAULT_ROOT_PATH
|
|
181
182
|
|
|
182
183
|
if ctx is not None:
|
|
@@ -208,7 +209,7 @@ class Bytes32ParamType(click.ParamType):
|
|
|
208
209
|
|
|
209
210
|
name: str = "HexString" # type name for cli
|
|
210
211
|
|
|
211
|
-
def convert(self, value: Any, param:
|
|
212
|
+
def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> bytes32:
|
|
212
213
|
# suggested by click but deemed not necessary due to unnecessary complexity.
|
|
213
214
|
# if isinstance(value, bytes32):
|
|
214
215
|
# return value
|
|
@@ -227,7 +228,7 @@ class Uint64ParamType(click.ParamType):
|
|
|
227
228
|
|
|
228
229
|
name: str = uint64.__name__ # type name for cli
|
|
229
230
|
|
|
230
|
-
def convert(self, value: Any, param:
|
|
231
|
+
def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> uint64:
|
|
231
232
|
if isinstance(value, uint64): # required by click
|
|
232
233
|
return value
|
|
233
234
|
if not isinstance(value, str):
|
chia/cmds/passphrase.py
CHANGED
|
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import sys
|
|
5
5
|
from io import TextIOWrapper
|
|
6
|
-
from typing import Optional
|
|
7
6
|
|
|
8
7
|
import click
|
|
9
8
|
|
|
@@ -31,9 +30,9 @@ def passphrase_cmd() -> None:
|
|
|
31
30
|
@click.pass_context
|
|
32
31
|
def set_cmd(
|
|
33
32
|
ctx: click.Context,
|
|
34
|
-
passphrase_file:
|
|
35
|
-
current_passphrase_file:
|
|
36
|
-
hint:
|
|
33
|
+
passphrase_file: TextIOWrapper | None,
|
|
34
|
+
current_passphrase_file: TextIOWrapper | None,
|
|
35
|
+
hint: str | None,
|
|
37
36
|
) -> None:
|
|
38
37
|
from chia.cmds.passphrase_funcs import (
|
|
39
38
|
async_update_daemon_passphrase_cache_if_running,
|
|
@@ -43,7 +42,7 @@ def set_cmd(
|
|
|
43
42
|
)
|
|
44
43
|
|
|
45
44
|
success: bool = False
|
|
46
|
-
current_passphrase:
|
|
45
|
+
current_passphrase: str | None = None
|
|
47
46
|
if current_passphrase_file is not None:
|
|
48
47
|
current_passphrase = read_passphrase_from_file(current_passphrase_file)
|
|
49
48
|
|
|
@@ -86,14 +85,14 @@ def set_cmd(
|
|
|
86
85
|
"--current-passphrase-file", type=click.File("r"), help="File or descriptor to read the current passphrase from"
|
|
87
86
|
)
|
|
88
87
|
@click.pass_context
|
|
89
|
-
def remove_cmd(ctx: click.Context, current_passphrase_file:
|
|
88
|
+
def remove_cmd(ctx: click.Context, current_passphrase_file: TextIOWrapper | None) -> None:
|
|
90
89
|
from chia.cmds.passphrase_funcs import (
|
|
91
90
|
async_update_daemon_passphrase_cache_if_running,
|
|
92
91
|
read_passphrase_from_file,
|
|
93
92
|
remove_passphrase,
|
|
94
93
|
)
|
|
95
94
|
|
|
96
|
-
current_passphrase:
|
|
95
|
+
current_passphrase: str | None = None
|
|
97
96
|
if current_passphrase_file is not None:
|
|
98
97
|
current_passphrase = read_passphrase_from_file(current_passphrase_file)
|
|
99
98
|
|
chia/cmds/passphrase_funcs.py
CHANGED
|
@@ -5,7 +5,7 @@ import sys
|
|
|
5
5
|
from getpass import getpass
|
|
6
6
|
from io import TextIOWrapper
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
9
9
|
|
|
10
10
|
import click
|
|
11
11
|
import colorama
|
|
@@ -24,9 +24,7 @@ SAVE_MASTER_PASSPHRASE_WARNING = (
|
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
def verify_passphrase_meets_requirements(
|
|
28
|
-
new_passphrase: str, confirmation_passphrase: str
|
|
29
|
-
) -> tuple[bool, Optional[str]]:
|
|
27
|
+
def verify_passphrase_meets_requirements(new_passphrase: str, confirmation_passphrase: str) -> tuple[bool, str | None]:
|
|
30
28
|
match = new_passphrase == confirmation_passphrase
|
|
31
29
|
min_length = Keychain.minimum_passphrase_length()
|
|
32
30
|
meets_len_requirement = len(new_passphrase) >= min_length
|
|
@@ -46,8 +44,8 @@ def prompt_to_save_passphrase() -> bool:
|
|
|
46
44
|
|
|
47
45
|
try:
|
|
48
46
|
if supports_os_passphrase_storage():
|
|
49
|
-
location:
|
|
50
|
-
warning:
|
|
47
|
+
location: str | None = None
|
|
48
|
+
warning: str | None = None
|
|
51
49
|
|
|
52
50
|
if sys.platform == "darwin":
|
|
53
51
|
location = "macOS Keychain"
|
|
@@ -113,7 +111,7 @@ def initialize_passphrase() -> None:
|
|
|
113
111
|
# We'll rely on Keyring initialization to leverage the cached passphrase for
|
|
114
112
|
# bootstrapping the keyring encryption process
|
|
115
113
|
print("Setting keyring passphrase")
|
|
116
|
-
passphrase:
|
|
114
|
+
passphrase: str | None = None
|
|
117
115
|
# save_passphrase indicates whether the passphrase should be saved in the
|
|
118
116
|
# macOS Keychain or Windows Credential Manager
|
|
119
117
|
save_passphrase: bool = False
|
|
@@ -127,7 +125,7 @@ def initialize_passphrase() -> None:
|
|
|
127
125
|
Keychain.set_master_passphrase(current_passphrase=None, new_passphrase=passphrase, save_passphrase=save_passphrase)
|
|
128
126
|
|
|
129
127
|
|
|
130
|
-
def set_or_update_passphrase(passphrase:
|
|
128
|
+
def set_or_update_passphrase(passphrase: str | None, current_passphrase: str | None, hint: str | None) -> bool:
|
|
131
129
|
# Prompt for the current passphrase, if necessary
|
|
132
130
|
if Keychain.has_master_passphrase():
|
|
133
131
|
# Try the default passphrase first
|
|
@@ -142,7 +140,7 @@ def set_or_update_passphrase(passphrase: Optional[str], current_passphrase: Opti
|
|
|
142
140
|
sys.exit(1)
|
|
143
141
|
|
|
144
142
|
success: bool = False
|
|
145
|
-
new_passphrase:
|
|
143
|
+
new_passphrase: str | None = passphrase
|
|
146
144
|
save_passphrase: bool = False
|
|
147
145
|
|
|
148
146
|
try:
|
|
@@ -167,7 +165,7 @@ def set_or_update_passphrase(passphrase: Optional[str], current_passphrase: Opti
|
|
|
167
165
|
return success
|
|
168
166
|
|
|
169
167
|
|
|
170
|
-
def remove_passphrase(current_passphrase:
|
|
168
|
+
def remove_passphrase(current_passphrase: str | None) -> bool:
|
|
171
169
|
"""
|
|
172
170
|
Removes the user's keyring passphrase. The keyring will be re-encrypted to the default passphrase.
|
|
173
171
|
"""
|
|
@@ -204,7 +202,7 @@ def cache_passphrase(passphrase: str) -> None:
|
|
|
204
202
|
Keychain.set_cached_master_passphrase(passphrase)
|
|
205
203
|
|
|
206
204
|
|
|
207
|
-
def get_current_passphrase() ->
|
|
205
|
+
def get_current_passphrase() -> str | None:
|
|
208
206
|
if not Keychain.has_master_passphrase():
|
|
209
207
|
return None
|
|
210
208
|
|
|
@@ -240,12 +238,12 @@ def display_passphrase_hint() -> None:
|
|
|
240
238
|
print("Passphrase hint is not set")
|
|
241
239
|
|
|
242
240
|
|
|
243
|
-
def update_passphrase_hint(hint:
|
|
241
|
+
def update_passphrase_hint(hint: str | None = None) -> bool:
|
|
244
242
|
updated: bool = False
|
|
245
243
|
if Keychain.has_master_passphrase() is False or using_default_passphrase():
|
|
246
244
|
print("Updating the passphrase hint requires that a passphrase has been set")
|
|
247
245
|
else:
|
|
248
|
-
current_passphrase:
|
|
246
|
+
current_passphrase: str | None = get_current_passphrase()
|
|
249
247
|
if current_passphrase is None:
|
|
250
248
|
print("Keyring is not passphrase-protected")
|
|
251
249
|
else:
|
chia/cmds/peer.py
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
import click
|
|
6
4
|
|
|
7
5
|
from chia.cmds.cmd_classes import ChiaCliContext
|
|
@@ -31,7 +29,7 @@ from chia.cmds.peer_funcs import peer_async
|
|
|
31
29
|
@click.pass_context
|
|
32
30
|
def peer_cmd(
|
|
33
31
|
ctx: click.Context,
|
|
34
|
-
rpc_port:
|
|
32
|
+
rpc_port: int | None,
|
|
35
33
|
connections: bool,
|
|
36
34
|
add_connection: str,
|
|
37
35
|
remove_connection: str,
|
chia/cmds/peer_funcs.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
|
|
5
5
|
|
|
6
6
|
from chia.cmds.cmds_util import NODE_TYPES, get_any_service_client
|
|
7
7
|
from chia.rpc.rpc_client import RpcClient
|
|
@@ -20,7 +20,7 @@ async def add_node_connection(rpc_client: RpcClient, add_connection: str) -> Non
|
|
|
20
20
|
except Exception:
|
|
21
21
|
print(f"Failed to connect to {host}:{port}")
|
|
22
22
|
except ValueError:
|
|
23
|
-
print("Enter a valid IP and port in the following format: 10.5.4.3:
|
|
23
|
+
print("Enter a valid IP and port in the following format: 10.5.4.3:8444 or [2606:f6c0:80:5::a]:8444")
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
async def remove_node_connection(rpc_client: RpcClient, remove_connection: str) -> None:
|
|
@@ -107,7 +107,7 @@ async def print_connections(rpc_client: RpcClient, trusted_peers: dict[str, Any]
|
|
|
107
107
|
|
|
108
108
|
async def peer_async(
|
|
109
109
|
node_type: str,
|
|
110
|
-
rpc_port:
|
|
110
|
+
rpc_port: int | None,
|
|
111
111
|
root_path: Path,
|
|
112
112
|
show_connections: bool,
|
|
113
113
|
add_connection: str,
|
chia/cmds/plotnft.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import field
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
import click
|
|
7
6
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -33,7 +32,7 @@ def plotnft_cmd(ctx: click.Context) -> None:
|
|
|
33
32
|
class ShowPlotNFTCMD:
|
|
34
33
|
rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
|
|
35
34
|
context: ChiaCliContext = field(default_factory=ChiaCliContext)
|
|
36
|
-
id:
|
|
35
|
+
id: int | None = option(
|
|
37
36
|
"-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
|
|
38
37
|
)
|
|
39
38
|
|
|
@@ -77,7 +76,7 @@ class GetLoginLinkCMD:
|
|
|
77
76
|
)
|
|
78
77
|
class CreatePlotNFTCMD:
|
|
79
78
|
rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
|
|
80
|
-
pool_url:
|
|
79
|
+
pool_url: str | None = option("-u", "--pool-url", help="HTTPS host:port of the pool to join", required=False)
|
|
81
80
|
state: str = option(
|
|
82
81
|
"-s",
|
|
83
82
|
"--state",
|
|
@@ -135,7 +134,7 @@ class JoinPlotNFTCMD:
|
|
|
135
134
|
required=True,
|
|
136
135
|
)
|
|
137
136
|
dont_prompt: bool = option("-y", "--yes", help="No prompts", is_flag=True)
|
|
138
|
-
id:
|
|
137
|
+
id: int | None = option(
|
|
139
138
|
"-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
|
|
140
139
|
)
|
|
141
140
|
|
|
@@ -171,7 +170,7 @@ class LeavePlotNFTCMD:
|
|
|
171
170
|
show_default=True,
|
|
172
171
|
required=True,
|
|
173
172
|
)
|
|
174
|
-
id:
|
|
173
|
+
id: int | None = option(
|
|
175
174
|
"-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
|
|
176
175
|
)
|
|
177
176
|
|
|
@@ -195,7 +194,7 @@ class LeavePlotNFTCMD:
|
|
|
195
194
|
)
|
|
196
195
|
class InspectPlotNFTCMD:
|
|
197
196
|
rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
|
|
198
|
-
id:
|
|
197
|
+
id: int | None = option(
|
|
199
198
|
"-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
|
|
200
199
|
)
|
|
201
200
|
|
|
@@ -215,7 +214,7 @@ class InspectPlotNFTCMD:
|
|
|
215
214
|
)
|
|
216
215
|
class ClaimPlotNFTCMD:
|
|
217
216
|
rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
|
|
218
|
-
id:
|
|
217
|
+
id: int | None = option(
|
|
219
218
|
"-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
|
|
220
219
|
)
|
|
221
220
|
fee: uint64 = option(
|
chia/cmds/plotnft_funcs.py
CHANGED
|
@@ -4,11 +4,11 @@ import asyncio
|
|
|
4
4
|
import functools
|
|
5
5
|
import json
|
|
6
6
|
import time
|
|
7
|
-
from collections.abc import Awaitable
|
|
7
|
+
from collections.abc import Awaitable, Callable
|
|
8
8
|
from dataclasses import replace
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from pprint import pprint
|
|
11
|
-
from typing import Any
|
|
11
|
+
from typing import Any
|
|
12
12
|
|
|
13
13
|
import aiohttp
|
|
14
14
|
import click
|
|
@@ -30,7 +30,7 @@ from chia.pools.pool_config import (
|
|
|
30
30
|
load_pool_config,
|
|
31
31
|
update_pool_config,
|
|
32
32
|
)
|
|
33
|
-
from chia.pools.pool_wallet_info import PoolSingletonState, PoolWalletInfo
|
|
33
|
+
from chia.pools.pool_wallet_info import NewPoolWalletInitialTargetState, PoolSingletonState, PoolWalletInfo
|
|
34
34
|
from chia.protocols.pool_protocol import POOL_PROTOCOL_VERSION
|
|
35
35
|
from chia.rpc.rpc_client import ResponseFailureError
|
|
36
36
|
from chia.server.server import ssl_context_for_root
|
|
@@ -38,11 +38,12 @@ from chia.ssl.create_ssl import get_mozilla_ca_crt
|
|
|
38
38
|
from chia.util.bech32m import encode_puzzle_hash
|
|
39
39
|
from chia.util.default_root import DEFAULT_ROOT_PATH
|
|
40
40
|
from chia.util.errors import CliRpcConnectionError
|
|
41
|
-
from chia.wallet.transaction_record import TransactionRecord
|
|
42
41
|
from chia.wallet.util.address_type import AddressType
|
|
43
42
|
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
44
43
|
from chia.wallet.util.wallet_types import WalletType
|
|
45
44
|
from chia.wallet.wallet_request_types import (
|
|
45
|
+
CreateNewWallet,
|
|
46
|
+
CreateNewWalletType,
|
|
46
47
|
GetTransaction,
|
|
47
48
|
GetWalletBalance,
|
|
48
49
|
GetWallets,
|
|
@@ -51,6 +52,7 @@ from chia.wallet.wallet_request_types import (
|
|
|
51
52
|
PWSelfPool,
|
|
52
53
|
PWStatus,
|
|
53
54
|
TransactionEndpointResponse,
|
|
55
|
+
WalletCreationMode,
|
|
54
56
|
WalletInfoResponse,
|
|
55
57
|
)
|
|
56
58
|
from chia.wallet.wallet_rpc_client import WalletRpcClient
|
|
@@ -81,17 +83,17 @@ async def create_pool_args(pool_url: str) -> dict[str, Any]:
|
|
|
81
83
|
|
|
82
84
|
async def create(
|
|
83
85
|
wallet_info: WalletClientInfo,
|
|
84
|
-
pool_url:
|
|
86
|
+
pool_url: str | None,
|
|
85
87
|
state: str,
|
|
86
88
|
fee: uint64,
|
|
87
89
|
*,
|
|
88
90
|
prompt: bool,
|
|
89
91
|
) -> None:
|
|
90
|
-
target_puzzle_hash:
|
|
92
|
+
target_puzzle_hash: bytes32 | None
|
|
91
93
|
# Could use initial_pool_state_from_dict to simplify
|
|
92
94
|
if state == "SELF_POOLING":
|
|
93
95
|
pool_url = None
|
|
94
|
-
relative_lock_height =
|
|
96
|
+
relative_lock_height = None
|
|
95
97
|
target_puzzle_hash = None # wallet will fill this in
|
|
96
98
|
elif state == "FARMING_TO_POOL":
|
|
97
99
|
enforce_https = wallet_info.config["selected_network"] == "mainnet"
|
|
@@ -110,22 +112,31 @@ async def create(
|
|
|
110
112
|
cli_confirm("Confirm (y/n): ", "Aborting.")
|
|
111
113
|
|
|
112
114
|
try:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
create_response = await wallet_info.client.create_new_wallet(
|
|
116
|
+
CreateNewWallet(
|
|
117
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
118
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
119
|
+
target_puzzle_hash=target_puzzle_hash,
|
|
120
|
+
state=state,
|
|
121
|
+
pool_url=pool_url,
|
|
122
|
+
relative_lock_height=relative_lock_height,
|
|
123
|
+
),
|
|
124
|
+
mode=WalletCreationMode.NEW,
|
|
125
|
+
fee=fee,
|
|
126
|
+
push=True,
|
|
127
|
+
),
|
|
128
|
+
DEFAULT_TX_CONFIG,
|
|
121
129
|
)
|
|
130
|
+
assert create_response.transaction is not None # mypy doesn't know about __post_init__
|
|
122
131
|
start = time.time()
|
|
123
132
|
while time.time() - start < 10:
|
|
124
133
|
await asyncio.sleep(0.1)
|
|
125
|
-
tx = (
|
|
134
|
+
tx = (
|
|
135
|
+
await wallet_info.client.get_transaction(GetTransaction(create_response.transaction.name))
|
|
136
|
+
).transaction
|
|
126
137
|
if len(tx.sent_to) > 0:
|
|
127
138
|
print(transaction_submitted_msg(tx))
|
|
128
|
-
print(transaction_status_msg(wallet_info.fingerprint,
|
|
139
|
+
print(transaction_status_msg(wallet_info.fingerprint, create_response.transaction.name))
|
|
129
140
|
return None
|
|
130
141
|
except Exception as e:
|
|
131
142
|
raise CliRpcConnectionError(
|
|
@@ -138,7 +149,7 @@ async def pprint_pool_wallet_state(
|
|
|
138
149
|
wallet_id: int,
|
|
139
150
|
pool_wallet_info: PoolWalletInfo,
|
|
140
151
|
address_prefix: str,
|
|
141
|
-
pool_state_dict:
|
|
152
|
+
pool_state_dict: dict[str, Any] | None,
|
|
142
153
|
) -> None:
|
|
143
154
|
print(f"Wallet ID: {wallet_id}")
|
|
144
155
|
if pool_wallet_info.current.state == PoolSingletonState.LEAVING_POOL.value and pool_wallet_info.target is None:
|
|
@@ -222,7 +233,7 @@ async def pprint_all_pool_wallet_state(
|
|
|
222
233
|
async def show(
|
|
223
234
|
wallet_info: WalletClientInfo,
|
|
224
235
|
root_path: Path,
|
|
225
|
-
wallet_id_passed_in:
|
|
236
|
+
wallet_id_passed_in: int | None,
|
|
226
237
|
) -> None:
|
|
227
238
|
summaries_response = await wallet_info.client.get_wallets(GetWallets())
|
|
228
239
|
config = wallet_info.config
|
|
@@ -261,7 +272,7 @@ async def show(
|
|
|
261
272
|
|
|
262
273
|
async def get_login_link(launcher_id: bytes32, root_path: Path) -> None:
|
|
263
274
|
async with get_any_service_client(FarmerRpcClient, root_path=root_path) as (farmer_client, _):
|
|
264
|
-
login_link:
|
|
275
|
+
login_link: str | None = await farmer_client.get_pool_login_link(launcher_id)
|
|
265
276
|
if login_link is None:
|
|
266
277
|
raise CliRpcConnectionError("Was not able to get login link.")
|
|
267
278
|
else:
|
|
@@ -298,7 +309,7 @@ async def submit_tx_with_confirmation(
|
|
|
298
309
|
print(f"Error performing operation on Plot NFT -f {fingerprint} wallet id: {wallet_id}: {e}")
|
|
299
310
|
|
|
300
311
|
|
|
301
|
-
async def wallet_id_lookup_and_check(wallet_client: WalletRpcClient, wallet_id:
|
|
312
|
+
async def wallet_id_lookup_and_check(wallet_client: WalletRpcClient, wallet_id: int | None) -> int:
|
|
302
313
|
selected_wallet_id: int
|
|
303
314
|
|
|
304
315
|
# absent network errors, this should not fail with an error
|
|
@@ -326,7 +337,7 @@ async def join_pool(
|
|
|
326
337
|
wallet_info: WalletClientInfo,
|
|
327
338
|
pool_url: str,
|
|
328
339
|
fee: uint64,
|
|
329
|
-
wallet_id:
|
|
340
|
+
wallet_id: int | None,
|
|
330
341
|
prompt: bool,
|
|
331
342
|
) -> None:
|
|
332
343
|
selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
|
|
@@ -389,7 +400,7 @@ async def join_pool(
|
|
|
389
400
|
)
|
|
390
401
|
|
|
391
402
|
|
|
392
|
-
async def self_pool(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id:
|
|
403
|
+
async def self_pool(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: int | None, prompt: bool) -> None:
|
|
393
404
|
selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
|
|
394
405
|
msg = (
|
|
395
406
|
"Will start self-farming with Plot NFT on wallet id "
|
|
@@ -405,7 +416,7 @@ async def self_pool(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: Op
|
|
|
405
416
|
)
|
|
406
417
|
|
|
407
418
|
|
|
408
|
-
async def inspect_cmd(wallet_info: WalletClientInfo, wallet_id:
|
|
419
|
+
async def inspect_cmd(wallet_info: WalletClientInfo, wallet_id: int | None) -> None:
|
|
409
420
|
selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
|
|
410
421
|
res = await wallet_info.client.pw_status(PWStatus(uint32(selected_wallet_id)))
|
|
411
422
|
print(
|
|
@@ -420,7 +431,7 @@ async def inspect_cmd(wallet_info: WalletClientInfo, wallet_id: Optional[int]) -
|
|
|
420
431
|
)
|
|
421
432
|
|
|
422
433
|
|
|
423
|
-
async def claim_cmd(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id:
|
|
434
|
+
async def claim_cmd(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: int | None) -> None:
|
|
424
435
|
selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
|
|
425
436
|
msg = f"\nWill claim rewards for wallet ID: {selected_wallet_id}."
|
|
426
437
|
func = functools.partial(
|
|
@@ -435,7 +446,7 @@ async def claim_cmd(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: Op
|
|
|
435
446
|
await submit_tx_with_confirmation(msg, False, func, wallet_info.client, wallet_info.fingerprint, selected_wallet_id)
|
|
436
447
|
|
|
437
448
|
|
|
438
|
-
async def change_payout_instructions(launcher_id: bytes32, address: CliAddress, root_path:
|
|
449
|
+
async def change_payout_instructions(launcher_id: bytes32, address: CliAddress, root_path: Path | None) -> None:
|
|
439
450
|
new_pool_configs: list[PoolWalletConfig] = []
|
|
440
451
|
id_found = False
|
|
441
452
|
puzzle_hash = address.validate_address_type_get_ph(AddressType.XCH)
|
chia/cmds/rpc.py
CHANGED
|
@@ -4,7 +4,7 @@ import asyncio
|
|
|
4
4
|
import json
|
|
5
5
|
import sys
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Any,
|
|
7
|
+
from typing import Any, TextIO
|
|
8
8
|
|
|
9
9
|
import click
|
|
10
10
|
from aiohttp import ClientResponseError
|
|
@@ -184,8 +184,8 @@ def create_commands() -> None:
|
|
|
184
184
|
def rpc_client_cmd(
|
|
185
185
|
ctx: click.Context,
|
|
186
186
|
endpoint: str,
|
|
187
|
-
request:
|
|
188
|
-
json_file:
|
|
187
|
+
request: str | None,
|
|
188
|
+
json_file: TextIO | None,
|
|
189
189
|
service: str = service,
|
|
190
190
|
) -> None:
|
|
191
191
|
root_path: Path = ChiaCliContext.set_default(ctx).root_path
|
chia/cmds/show.py
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
import click
|
|
6
4
|
|
|
7
5
|
from chia.cmds.cmd_classes import ChiaCliContext
|
|
@@ -39,14 +37,14 @@ from chia.cmds.show_funcs import show_async
|
|
|
39
37
|
@click.pass_context
|
|
40
38
|
def show_cmd(
|
|
41
39
|
ctx: click.Context,
|
|
42
|
-
rpc_port:
|
|
43
|
-
wallet_rpc_port:
|
|
40
|
+
rpc_port: int | None,
|
|
41
|
+
wallet_rpc_port: int | None,
|
|
44
42
|
fee: bool,
|
|
45
43
|
state: bool,
|
|
46
44
|
connections: bool,
|
|
47
45
|
add_connection: str,
|
|
48
46
|
remove_connection: str,
|
|
49
|
-
block_header_hash_by_height:
|
|
47
|
+
block_header_hash_by_height: int | None,
|
|
50
48
|
block_by_header_hash: str,
|
|
51
49
|
) -> None:
|
|
52
50
|
import asyncio
|
chia/cmds/show_funcs.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
|
|
7
7
|
from chia_rs.sized_bytes import bytes32
|
|
8
8
|
|
|
@@ -21,7 +21,7 @@ async def print_blockchain_state(node_client: FullNodeRpcClient, config: dict[st
|
|
|
21
21
|
if blockchain_state is None:
|
|
22
22
|
print("There is no blockchain found yet. Try again shortly")
|
|
23
23
|
return True
|
|
24
|
-
peak:
|
|
24
|
+
peak: BlockRecord | None = blockchain_state["peak"]
|
|
25
25
|
node_id = blockchain_state["node_id"]
|
|
26
26
|
difficulty = blockchain_state["difficulty"]
|
|
27
27
|
sub_slot_iters = blockchain_state["sub_slot_iters"]
|
|
@@ -104,8 +104,8 @@ async def print_block_from_hash(
|
|
|
104
104
|
|
|
105
105
|
from chia.util.bech32m import encode_puzzle_hash
|
|
106
106
|
|
|
107
|
-
block:
|
|
108
|
-
full_block:
|
|
107
|
+
block: BlockRecord | None = await node_client.get_block_record(bytes32.from_hexstr(block_by_header_hash))
|
|
108
|
+
full_block: FullBlock | None = await node_client.get_block(bytes32.from_hexstr(block_by_header_hash))
|
|
109
109
|
# Would like to have a verbose flag for this
|
|
110
110
|
if block is not None:
|
|
111
111
|
assert full_block is not None
|
|
@@ -123,7 +123,7 @@ async def print_block_from_hash(
|
|
|
123
123
|
)
|
|
124
124
|
block_time_string = time.strftime("%a %b %d %Y %T %Z", block_time)
|
|
125
125
|
cost = str(full_block.transactions_info.cost)
|
|
126
|
-
tx_filter_hash:
|
|
126
|
+
tx_filter_hash: str | bytes32 = "Not a transaction block"
|
|
127
127
|
if full_block.foliage_transaction_block:
|
|
128
128
|
tx_filter_hash = full_block.foliage_transaction_block.filter_hash
|
|
129
129
|
fees: Any = block.fees
|
|
@@ -152,8 +152,8 @@ async def print_block_from_hash(
|
|
|
152
152
|
f"Total VDF Iterations {block.total_iters}\n"
|
|
153
153
|
f"Is a Transaction Block?{block.is_transaction_block}\n"
|
|
154
154
|
f"Deficit {block.deficit}\n"
|
|
155
|
-
f"PoSpace 'k' Size (v1) {full_block.reward_chain_block.proof_of_space.
|
|
156
|
-
f"PoSpace
|
|
155
|
+
f"PoSpace 'k' Size (v1) {full_block.reward_chain_block.proof_of_space.param().size_v1}\n"
|
|
156
|
+
f"PoSpace strength (v2) {full_block.reward_chain_block.proof_of_space.param().strength_v2}\n"
|
|
157
157
|
f"Plot Public Key 0x{full_block.reward_chain_block.proof_of_space.plot_public_key}\n"
|
|
158
158
|
f"Pool Public Key {pool_pk}\n"
|
|
159
159
|
f"Tx Filter Hash {tx_filter_hash}\n"
|
|
@@ -191,11 +191,11 @@ async def print_fee_info(node_client: FullNodeRpcClient) -> None:
|
|
|
191
191
|
|
|
192
192
|
|
|
193
193
|
async def show_async(
|
|
194
|
-
rpc_port:
|
|
194
|
+
rpc_port: int | None,
|
|
195
195
|
root_path: Path,
|
|
196
196
|
print_fee_info_flag: bool,
|
|
197
197
|
print_state: bool,
|
|
198
|
-
block_header_hash_by_height:
|
|
198
|
+
block_header_hash_by_height: int | None,
|
|
199
199
|
block_by_header_hash: str,
|
|
200
200
|
) -> None:
|
|
201
201
|
from chia.cmds.cmds_util import get_any_service_client
|