chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.6.0rc2__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_blockchain_transactions.py +5 -2
- 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 +66 -31
- 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 +273 -70
- chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
- 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 +198 -30
- chia/_tests/core/mempool/test_mempool.py +54 -50
- 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 +988 -854
- 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 +9 -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 +63 -60
- 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 +17 -17
- 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 +16 -15
- 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 +374 -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 +19 -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 +50 -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 +239 -223
- chia/full_node/full_node_api.py +197 -152
- chia/full_node/full_node_rpc_api.py +34 -32
- chia/full_node/full_node_rpc_client.py +18 -19
- chia/full_node/full_node_store.py +45 -43
- chia/full_node/hard_fork_utils.py +44 -0
- 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 +120 -36
- 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 +4 -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 +24 -10
- 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 +142 -106
- 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.6.0rc2.dist-info}/METADATA +6 -5
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
- 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.6.0rc2.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
chia/cmds/dump_keyring.py
CHANGED
|
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
import os
|
|
6
6
|
from io import TextIOWrapper
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Any,
|
|
8
|
+
from typing import Any, cast
|
|
9
9
|
|
|
10
10
|
import click
|
|
11
11
|
import colorama
|
|
@@ -48,8 +48,8 @@ def get_passphrase_prompt(keyring_file: str) -> str:
|
|
|
48
48
|
)
|
|
49
49
|
@click.option("--passphrase-file", type=click.File("r"), help="File or descriptor to read the passphrase from")
|
|
50
50
|
@click.option("--pretty-print", is_flag=True, default=False)
|
|
51
|
-
def dump(keyring_file: str, full_payload: bool, passphrase_file:
|
|
52
|
-
saved_passphrase:
|
|
51
|
+
def dump(keyring_file: str, full_payload: bool, passphrase_file: TextIOWrapper | None, pretty_print: bool) -> None:
|
|
52
|
+
saved_passphrase: str | None = KeyringWrapper.get_shared_instance().get_master_passphrase_from_credential_store()
|
|
53
53
|
passphrase: str = saved_passphrase or DEFAULT_PASSPHRASE_IF_NO_MASTER_PASSPHRASE
|
|
54
54
|
prompt: str = get_passphrase_prompt(keyring_file)
|
|
55
55
|
|
chia/cmds/farm.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
|
|
@@ -59,10 +57,10 @@ def farm_cmd() -> None:
|
|
|
59
57
|
@click.pass_context
|
|
60
58
|
def summary_cmd(
|
|
61
59
|
ctx: click.Context,
|
|
62
|
-
rpc_port:
|
|
63
|
-
wallet_rpc_port:
|
|
64
|
-
harvester_rpc_port:
|
|
65
|
-
farmer_rpc_port:
|
|
60
|
+
rpc_port: int | None,
|
|
61
|
+
wallet_rpc_port: int | None,
|
|
62
|
+
harvester_rpc_port: int | None,
|
|
63
|
+
farmer_rpc_port: int | None,
|
|
66
64
|
include_pool_rewards: bool,
|
|
67
65
|
) -> None:
|
|
68
66
|
import asyncio
|
|
@@ -99,7 +97,7 @@ def summary_cmd(
|
|
|
99
97
|
show_default=True,
|
|
100
98
|
)
|
|
101
99
|
@click.pass_context
|
|
102
|
-
def challenges_cmd(ctx: click.Context, farmer_rpc_port:
|
|
100
|
+
def challenges_cmd(ctx: click.Context, farmer_rpc_port: int | None, limit: int) -> None:
|
|
103
101
|
import asyncio
|
|
104
102
|
|
|
105
103
|
from chia.cmds.farm_funcs import challenges
|
|
@@ -120,7 +118,7 @@ def challenges_cmd(ctx: click.Context, farmer_rpc_port: Optional[int], limit: in
|
|
|
120
118
|
@click.pass_context
|
|
121
119
|
def connect_solver_cmd(
|
|
122
120
|
ctx: click.Context,
|
|
123
|
-
farmer_rpc_port:
|
|
121
|
+
farmer_rpc_port: int | None,
|
|
124
122
|
solver_address: str,
|
|
125
123
|
) -> None:
|
|
126
124
|
import asyncio
|
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
|
|
7
7
|
|
|
8
8
|
from chia_rs import BlockRecord
|
|
9
9
|
|
|
@@ -14,26 +14,27 @@ from chia.full_node.full_node_rpc_client import FullNodeRpcClient
|
|
|
14
14
|
from chia.util.config import lock_and_load_config, save_config
|
|
15
15
|
from chia.util.errors import CliRpcConnectionError
|
|
16
16
|
from chia.util.network import is_localhost
|
|
17
|
+
from chia.wallet.wallet_request_types import GetFarmedAmount, GetFarmedAmountResponse
|
|
17
18
|
from chia.wallet.wallet_rpc_client import WalletRpcClient
|
|
18
19
|
|
|
19
20
|
SECONDS_PER_BLOCK = (24 * 3600) / 4608
|
|
20
21
|
|
|
21
22
|
|
|
22
|
-
async def get_harvesters_summary(farmer_rpc_port:
|
|
23
|
+
async def get_harvesters_summary(farmer_rpc_port: int | None, root_path: Path) -> dict[str, Any] | None:
|
|
23
24
|
async with get_any_service_client(FarmerRpcClient, root_path, farmer_rpc_port) as (farmer_client, _):
|
|
24
25
|
return await farmer_client.get_harvesters_summary()
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
async def get_blockchain_state(rpc_port:
|
|
28
|
+
async def get_blockchain_state(rpc_port: int | None, root_path: Path) -> dict[str, Any] | None:
|
|
28
29
|
async with get_any_service_client(FullNodeRpcClient, root_path, rpc_port) as (client, _):
|
|
29
30
|
return await client.get_blockchain_state()
|
|
30
31
|
|
|
31
32
|
|
|
32
|
-
async def get_average_block_time(rpc_port:
|
|
33
|
+
async def get_average_block_time(rpc_port: int | None, root_path: Path) -> float:
|
|
33
34
|
async with get_any_service_client(FullNodeRpcClient, root_path, rpc_port) as (client, _):
|
|
34
35
|
blocks_to_compare = 500
|
|
35
36
|
blockchain_state = await client.get_blockchain_state()
|
|
36
|
-
curr:
|
|
37
|
+
curr: BlockRecord | None = blockchain_state["peak"]
|
|
37
38
|
if curr is None or curr.height < (blocks_to_compare + 100):
|
|
38
39
|
return SECONDS_PER_BLOCK
|
|
39
40
|
while curr is not None and curr.height > 0 and not curr.is_transaction_block:
|
|
@@ -51,20 +52,20 @@ async def get_average_block_time(rpc_port: Optional[int], root_path: Path) -> fl
|
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
async def get_wallets_stats(
|
|
54
|
-
wallet_rpc_port:
|
|
55
|
+
wallet_rpc_port: int | None,
|
|
55
56
|
root_path: Path,
|
|
56
57
|
include_pool_rewards: bool,
|
|
57
|
-
) ->
|
|
58
|
+
) -> GetFarmedAmountResponse | None:
|
|
58
59
|
async with get_any_service_client(WalletRpcClient, root_path, wallet_rpc_port) as (wallet_client, _):
|
|
59
|
-
return await wallet_client.get_farmed_amount(include_pool_rewards)
|
|
60
|
+
return await wallet_client.get_farmed_amount(GetFarmedAmount(include_pool_rewards))
|
|
60
61
|
|
|
61
62
|
|
|
62
|
-
async def get_challenges(root_path: Path, farmer_rpc_port:
|
|
63
|
+
async def get_challenges(root_path: Path, farmer_rpc_port: int | None) -> list[dict[str, Any]] | None:
|
|
63
64
|
async with get_any_service_client(FarmerRpcClient, root_path, farmer_rpc_port) as (farmer_client, _):
|
|
64
65
|
return await farmer_client.get_signage_points()
|
|
65
66
|
|
|
66
67
|
|
|
67
|
-
async def challenges(root_path: Path, farmer_rpc_port:
|
|
68
|
+
async def challenges(root_path: Path, farmer_rpc_port: int | None, limit: int) -> None:
|
|
68
69
|
signage_points = await get_challenges(root_path, farmer_rpc_port)
|
|
69
70
|
if signage_points is None:
|
|
70
71
|
return None
|
|
@@ -81,10 +82,10 @@ async def challenges(root_path: Path, farmer_rpc_port: Optional[int], limit: int
|
|
|
81
82
|
|
|
82
83
|
|
|
83
84
|
async def summary(
|
|
84
|
-
rpc_port:
|
|
85
|
-
wallet_rpc_port:
|
|
86
|
-
harvester_rpc_port:
|
|
87
|
-
farmer_rpc_port:
|
|
85
|
+
rpc_port: int | None,
|
|
86
|
+
wallet_rpc_port: int | None,
|
|
87
|
+
harvester_rpc_port: int | None,
|
|
88
|
+
farmer_rpc_port: int | None,
|
|
88
89
|
include_pool_rewards: bool,
|
|
89
90
|
root_path: Path,
|
|
90
91
|
) -> None:
|
|
@@ -124,23 +125,23 @@ async def summary(
|
|
|
124
125
|
print("Farming")
|
|
125
126
|
|
|
126
127
|
if amounts is not None:
|
|
127
|
-
print(f"Total chia farmed: {amounts
|
|
128
|
-
print(f"User transaction fees: {amounts
|
|
128
|
+
print(f"Total chia farmed: {amounts.farmed_amount / units['chia']}")
|
|
129
|
+
print(f"User transaction fees: {amounts.fee_amount / units['chia']}")
|
|
129
130
|
if include_pool_rewards:
|
|
130
|
-
print(f"Farmer rewards: {amounts
|
|
131
|
-
print(f"Pool rewards: {amounts
|
|
132
|
-
print(f"Total rewards: {(amounts
|
|
131
|
+
print(f"Farmer rewards: {amounts.farmer_reward_amount / units['chia']}")
|
|
132
|
+
print(f"Pool rewards: {amounts.pool_reward_amount / units['chia']}")
|
|
133
|
+
print(f"Total rewards: {(amounts.farmer_reward_amount + amounts.pool_reward_amount) / units['chia']}")
|
|
133
134
|
if blockchain_state is not None and blockchain_state["peak"] is not None:
|
|
134
135
|
peak_height = blockchain_state["peak"].height
|
|
135
|
-
blocks_since_last_farm = peak_height - amounts
|
|
136
|
-
print(f"Current/Last height farmed: {peak_height}/{amounts
|
|
136
|
+
blocks_since_last_farm = peak_height - amounts.last_height_farmed
|
|
137
|
+
print(f"Current/Last height farmed: {peak_height}/{amounts.last_height_farmed}")
|
|
137
138
|
print(f"Blocks since last farmed: {blocks_since_last_farm}")
|
|
138
139
|
print(
|
|
139
140
|
f"Time since last farmed: {format_minutes(int((blocks_since_last_farm * SECONDS_PER_BLOCK) / 60))}"
|
|
140
141
|
)
|
|
141
142
|
else:
|
|
142
|
-
print(f"Block rewards: {(amounts
|
|
143
|
-
print(f"Last height farmed: {amounts
|
|
143
|
+
print(f"Block rewards: {(amounts.farmer_reward_amount + amounts.pool_reward_amount) / units['chia']}")
|
|
144
|
+
print(f"Last height farmed: {amounts.last_height_farmed}")
|
|
144
145
|
|
|
145
146
|
class PlotStats:
|
|
146
147
|
total_plot_size = 0
|
|
@@ -220,7 +221,7 @@ async def summary(
|
|
|
220
221
|
print("Note: log into your key using 'chia wallet show' to see rewards for each key")
|
|
221
222
|
|
|
222
223
|
|
|
223
|
-
async def solver_connect(root_path: Path, farmer_rpc_port:
|
|
224
|
+
async def solver_connect(root_path: Path, farmer_rpc_port: int | None, solver_address: str) -> None:
|
|
224
225
|
from chia.util.network import parse_host_port
|
|
225
226
|
|
|
226
227
|
try:
|
chia/cmds/init_funcs.py
CHANGED
|
@@ -4,7 +4,7 @@ import os
|
|
|
4
4
|
import shutil
|
|
5
5
|
import sqlite3
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Any
|
|
7
|
+
from typing import Any
|
|
8
8
|
|
|
9
9
|
import yaml
|
|
10
10
|
|
|
@@ -61,7 +61,7 @@ def dict_add_new_default(updated: dict[str, Any], default: dict[str, Any], do_no
|
|
|
61
61
|
updated[k] = v
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
def check_keys(new_root: Path, keychain:
|
|
64
|
+
def check_keys(new_root: Path, keychain: Keychain | None = None) -> None:
|
|
65
65
|
if keychain is None:
|
|
66
66
|
keychain = Keychain()
|
|
67
67
|
all_sks = keychain.get_all_private_keys()
|
|
@@ -216,12 +216,12 @@ def copy_cert_files(cert_path: Path, new_path: Path) -> None:
|
|
|
216
216
|
|
|
217
217
|
|
|
218
218
|
def init(
|
|
219
|
-
create_certs:
|
|
219
|
+
create_certs: Path | None,
|
|
220
220
|
root_path: Path,
|
|
221
221
|
fix_ssl_permissions: bool = False,
|
|
222
222
|
testnet: bool = False,
|
|
223
223
|
v1_db: bool = False,
|
|
224
|
-
) ->
|
|
224
|
+
) -> int | None:
|
|
225
225
|
if create_certs is not None:
|
|
226
226
|
if root_path.exists():
|
|
227
227
|
if os.path.isdir(create_certs):
|
chia/cmds/keys.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
|
from chia_rs import PrivateKey
|
|
7
5
|
|
|
@@ -28,7 +26,7 @@ def keys_cmd(ctx: click.Context) -> None:
|
|
|
28
26
|
required=False,
|
|
29
27
|
)
|
|
30
28
|
@click.pass_context
|
|
31
|
-
def generate_cmd(ctx: click.Context, label:
|
|
29
|
+
def generate_cmd(ctx: click.Context, label: str | None) -> None:
|
|
32
30
|
from chia.cmds.init_funcs import check_keys
|
|
33
31
|
from chia.cmds.keys_funcs import generate_and_add
|
|
34
32
|
|
|
@@ -71,8 +69,8 @@ def show_cmd(
|
|
|
71
69
|
show_mnemonic_seed: bool,
|
|
72
70
|
non_observer_derivation: bool,
|
|
73
71
|
json: bool,
|
|
74
|
-
fingerprint:
|
|
75
|
-
bech32m_prefix:
|
|
72
|
+
fingerprint: int | None,
|
|
73
|
+
bech32m_prefix: str | None,
|
|
76
74
|
) -> None:
|
|
77
75
|
from chia.cmds.keys_funcs import show_keys
|
|
78
76
|
|
|
@@ -104,7 +102,7 @@ def show_cmd(
|
|
|
104
102
|
required=False,
|
|
105
103
|
)
|
|
106
104
|
@click.pass_context
|
|
107
|
-
def add_cmd(ctx: click.Context, filename: str, label:
|
|
105
|
+
def add_cmd(ctx: click.Context, filename: str, label: str | None) -> None:
|
|
108
106
|
from chia.cmds.init_funcs import check_keys
|
|
109
107
|
from chia.cmds.keys_funcs import query_and_add_key_info
|
|
110
108
|
|
|
@@ -207,7 +205,7 @@ def generate_and_print_cmd() -> None:
|
|
|
207
205
|
is_flag=True,
|
|
208
206
|
)
|
|
209
207
|
def sign_cmd(
|
|
210
|
-
message: str, fingerprint:
|
|
208
|
+
message: str, fingerprint: int | None, filename: str | None, hd_path: str, as_bytes: bool, json: bool
|
|
211
209
|
) -> None:
|
|
212
210
|
from chia.cmds.keys_funcs import resolve_derivation_master_key, sign
|
|
213
211
|
|
|
@@ -280,7 +278,7 @@ def verify_cmd(message: str, public_key: str, signature: str, as_bytes: bool, js
|
|
|
280
278
|
required=False,
|
|
281
279
|
)
|
|
282
280
|
@click.pass_context
|
|
283
|
-
def derive_cmd(ctx: click.Context, fingerprint:
|
|
281
|
+
def derive_cmd(ctx: click.Context, fingerprint: int | None, filename: str | None) -> None:
|
|
284
282
|
context = ChiaCliContext.set_default(ctx)
|
|
285
283
|
context.keys_fingerprint = fingerprint
|
|
286
284
|
context.keys_filename = filename
|
|
@@ -332,16 +330,16 @@ def search_cmd(
|
|
|
332
330
|
non_observer_derivation: bool,
|
|
333
331
|
show_progress: bool,
|
|
334
332
|
search_type: tuple[str, ...],
|
|
335
|
-
derive_from_hd_path:
|
|
336
|
-
prefix:
|
|
333
|
+
derive_from_hd_path: str | None,
|
|
334
|
+
prefix: str | None,
|
|
337
335
|
) -> None:
|
|
338
336
|
import sys
|
|
339
337
|
|
|
340
338
|
from chia.cmds.keys_funcs import resolve_derivation_master_key, search_derive
|
|
341
339
|
|
|
342
340
|
context = ChiaCliContext.set_default(ctx)
|
|
343
|
-
fingerprint:
|
|
344
|
-
filename:
|
|
341
|
+
fingerprint: int | None = context.keys_fingerprint
|
|
342
|
+
filename: str | None = context.keys_filename
|
|
345
343
|
|
|
346
344
|
# Specifying the master key is optional for the search command. If not specified, we'll search all keys.
|
|
347
345
|
resolved_sk = None
|
|
@@ -371,8 +369,8 @@ class ResolutionError(Exception):
|
|
|
371
369
|
|
|
372
370
|
|
|
373
371
|
def _resolve_fingerprint_and_sk(
|
|
374
|
-
filename:
|
|
375
|
-
) -> tuple[
|
|
372
|
+
filename: str | None, fingerprint: int | None, non_observer_derivation: bool
|
|
373
|
+
) -> tuple[int | None, PrivateKey | None]:
|
|
376
374
|
from chia.cmds.keys_funcs import resolve_derivation_master_key
|
|
377
375
|
|
|
378
376
|
reolved_fp, resolved_sk = resolve_derivation_master_key(filename if filename is not None else fingerprint)
|
|
@@ -412,7 +410,7 @@ def _resolve_fingerprint_and_sk(
|
|
|
412
410
|
)
|
|
413
411
|
@click.pass_context
|
|
414
412
|
def wallet_address_cmd(
|
|
415
|
-
ctx: click.Context, index: int, count: int, prefix:
|
|
413
|
+
ctx: click.Context, index: int, count: int, prefix: str | None, non_observer_derivation: bool, show_hd_path: bool
|
|
416
414
|
) -> None:
|
|
417
415
|
from chia.cmds.keys_funcs import derive_wallet_address
|
|
418
416
|
|
|
@@ -488,14 +486,14 @@ def wallet_address_cmd(
|
|
|
488
486
|
@click.pass_context
|
|
489
487
|
def child_key_cmd(
|
|
490
488
|
ctx: click.Context,
|
|
491
|
-
key_type:
|
|
492
|
-
derive_from_hd_path:
|
|
489
|
+
key_type: str | None,
|
|
490
|
+
derive_from_hd_path: str | None,
|
|
493
491
|
index: int,
|
|
494
492
|
count: int,
|
|
495
493
|
non_observer_derivation: bool,
|
|
496
494
|
show_private_keys: bool,
|
|
497
495
|
show_hd_path: bool,
|
|
498
|
-
bech32m_prefix:
|
|
496
|
+
bech32m_prefix: str | None,
|
|
499
497
|
) -> None:
|
|
500
498
|
from chia.cmds.keys_funcs import derive_child_key
|
|
501
499
|
|
chia/cmds/keys_funcs.py
CHANGED
|
@@ -5,7 +5,7 @@ import os
|
|
|
5
5
|
import sys
|
|
6
6
|
from enum import Enum
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
9
9
|
|
|
10
10
|
from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey
|
|
11
11
|
from chia_rs.sized_ints import uint32
|
|
@@ -58,7 +58,7 @@ def generate_and_print() -> str:
|
|
|
58
58
|
return mnemonic
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
def generate_and_add(label:
|
|
61
|
+
def generate_and_add(label: str | None) -> None:
|
|
62
62
|
"""
|
|
63
63
|
Generates a seed for a private key, prints the mnemonic to the terminal, and adds the key to the keyring.
|
|
64
64
|
"""
|
|
@@ -67,7 +67,7 @@ def generate_and_add(label: Optional[str]) -> None:
|
|
|
67
67
|
query_and_add_key_info(mnemonic_or_pk=generate_mnemonic(), label=label)
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
def query_and_add_key_info(mnemonic_or_pk:
|
|
70
|
+
def query_and_add_key_info(mnemonic_or_pk: str | None, label: str | None = None) -> None:
|
|
71
71
|
unlock_keyring()
|
|
72
72
|
if mnemonic_or_pk is None:
|
|
73
73
|
mnemonic_or_pk = input("Enter the mnemonic/observer key you want to use: ")
|
|
@@ -78,7 +78,7 @@ def query_and_add_key_info(mnemonic_or_pk: Optional[str], label: Optional[str] =
|
|
|
78
78
|
add_key_info(mnemonic_or_pk, label)
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
def add_key_info(mnemonic_or_pk: str, label:
|
|
81
|
+
def add_key_info(mnemonic_or_pk: str, label: str | None) -> None:
|
|
82
82
|
"""
|
|
83
83
|
Add a private key seed or public key to the keyring, with the given mnemonic and an optional label.
|
|
84
84
|
"""
|
|
@@ -136,7 +136,7 @@ def delete_key_label(fingerprint: int) -> None:
|
|
|
136
136
|
sys.exit(f"Error: {e}")
|
|
137
137
|
|
|
138
138
|
|
|
139
|
-
def format_pk_bech32_maybe(prefix:
|
|
139
|
+
def format_pk_bech32_maybe(prefix: str | None, pubkey: str) -> str:
|
|
140
140
|
return pubkey if prefix is None else bech32_encode(prefix, convertbits(list(bytes.fromhex(pubkey)), 8, 5))
|
|
141
141
|
|
|
142
142
|
|
|
@@ -145,8 +145,8 @@ def show_keys(
|
|
|
145
145
|
show_mnemonic: bool,
|
|
146
146
|
non_observer_derivation: bool,
|
|
147
147
|
json_output: bool,
|
|
148
|
-
fingerprint:
|
|
149
|
-
bech32m_prefix:
|
|
148
|
+
fingerprint: int | None,
|
|
149
|
+
bech32m_prefix: str | None,
|
|
150
150
|
) -> None:
|
|
151
151
|
"""
|
|
152
152
|
Prints all keys and mnemonics (if available).
|
|
@@ -190,7 +190,7 @@ def show_keys(
|
|
|
190
190
|
|
|
191
191
|
if non_observer_derivation:
|
|
192
192
|
if sk is None:
|
|
193
|
-
first_wallet_pk:
|
|
193
|
+
first_wallet_pk: G1Element | None = None
|
|
194
194
|
else:
|
|
195
195
|
first_wallet_pk = master_sk_to_wallet_sk(sk, uint32(0)).get_g1()
|
|
196
196
|
else:
|
|
@@ -250,8 +250,8 @@ def delete(fingerprint: int) -> None:
|
|
|
250
250
|
|
|
251
251
|
|
|
252
252
|
def derive_pk_and_sk_from_hd_path(
|
|
253
|
-
master_pk: G1Element, hd_path_root: str, master_sk:
|
|
254
|
-
) -> tuple[G1Element,
|
|
253
|
+
master_pk: G1Element, hd_path_root: str, master_sk: PrivateKey | None = None
|
|
254
|
+
) -> tuple[G1Element, PrivateKey | None, str]:
|
|
255
255
|
"""
|
|
256
256
|
Derive a private key from the provided HD path. Takes a master key and HD path as input,
|
|
257
257
|
and returns the derived key and the HD path that was used to derive it.
|
|
@@ -290,7 +290,7 @@ def derive_pk_and_sk_from_hd_path(
|
|
|
290
290
|
|
|
291
291
|
# Derive keys along the path
|
|
292
292
|
if master_sk is not None:
|
|
293
|
-
current_sk:
|
|
293
|
+
current_sk: PrivateKey | None = master_sk
|
|
294
294
|
assert current_sk is not None
|
|
295
295
|
for current_index, derivation_type in index_and_derivation_types:
|
|
296
296
|
if derivation_type == DerivationType.NONOBSERVER:
|
|
@@ -359,10 +359,10 @@ def _clear_line_part(n: int) -> None:
|
|
|
359
359
|
|
|
360
360
|
def _search_derived(
|
|
361
361
|
current_pk: G1Element,
|
|
362
|
-
current_sk:
|
|
362
|
+
current_sk: PrivateKey | None,
|
|
363
363
|
search_terms: tuple[str, ...],
|
|
364
364
|
path: str,
|
|
365
|
-
path_indices:
|
|
365
|
+
path_indices: list[int] | None,
|
|
366
366
|
limit: int,
|
|
367
367
|
non_observer_derivation: bool,
|
|
368
368
|
show_progress: bool,
|
|
@@ -417,7 +417,7 @@ def _search_derived(
|
|
|
417
417
|
else:
|
|
418
418
|
child_sk = None
|
|
419
419
|
|
|
420
|
-
address:
|
|
420
|
+
address: str | None = None
|
|
421
421
|
|
|
422
422
|
if search_address:
|
|
423
423
|
# Generate a wallet address using the standard p2_delegated_puzzle_or_hidden_puzzle puzzle
|
|
@@ -427,7 +427,7 @@ def _search_derived(
|
|
|
427
427
|
|
|
428
428
|
for term in remaining_search_terms:
|
|
429
429
|
found_item: Any = None
|
|
430
|
-
found_item_type:
|
|
430
|
+
found_item_type: DerivedSearchResultType | None = None
|
|
431
431
|
|
|
432
432
|
if search_private_key and term in str(child_sk):
|
|
433
433
|
assert child_sk is not None # semantics above guarantee this
|
|
@@ -478,15 +478,15 @@ def _search_derived(
|
|
|
478
478
|
|
|
479
479
|
def search_derive(
|
|
480
480
|
root_path: Path,
|
|
481
|
-
fingerprint:
|
|
481
|
+
fingerprint: int | None,
|
|
482
482
|
search_terms: tuple[str, ...],
|
|
483
483
|
limit: int,
|
|
484
484
|
non_observer_derivation: bool,
|
|
485
485
|
show_progress: bool,
|
|
486
486
|
search_types: tuple[str, ...],
|
|
487
|
-
derive_from_hd_path:
|
|
488
|
-
prefix:
|
|
489
|
-
private_key:
|
|
487
|
+
derive_from_hd_path: str | None,
|
|
488
|
+
prefix: str | None,
|
|
489
|
+
private_key: PrivateKey | None,
|
|
490
490
|
) -> bool:
|
|
491
491
|
"""
|
|
492
492
|
Searches for items derived from the provided private key, or if not specified,
|
|
@@ -513,7 +513,7 @@ def search_derive(
|
|
|
513
513
|
|
|
514
514
|
if fingerprint is None and private_key is None:
|
|
515
515
|
public_keys: list[G1Element] = Keychain().get_all_public_keys()
|
|
516
|
-
private_keys: list[
|
|
516
|
+
private_keys: list[PrivateKey | None] = [
|
|
517
517
|
data.private_key if data.secrets is not None else None for data in Keychain().get_keys(include_secrets=True)
|
|
518
518
|
]
|
|
519
519
|
elif fingerprint is None:
|
|
@@ -643,13 +643,13 @@ def search_derive(
|
|
|
643
643
|
|
|
644
644
|
def derive_wallet_address(
|
|
645
645
|
root_path: Path,
|
|
646
|
-
fingerprint:
|
|
646
|
+
fingerprint: int | None,
|
|
647
647
|
index: int,
|
|
648
648
|
count: int,
|
|
649
|
-
prefix:
|
|
649
|
+
prefix: str | None,
|
|
650
650
|
non_observer_derivation: bool,
|
|
651
651
|
show_hd_path: bool,
|
|
652
|
-
private_key:
|
|
652
|
+
private_key: PrivateKey | None,
|
|
653
653
|
) -> None:
|
|
654
654
|
"""
|
|
655
655
|
Generate wallet addresses using keys derived from the provided private key.
|
|
@@ -700,16 +700,16 @@ def private_key_string_repr(private_key: PrivateKey) -> str:
|
|
|
700
700
|
|
|
701
701
|
|
|
702
702
|
def derive_child_key(
|
|
703
|
-
fingerprint:
|
|
704
|
-
key_type:
|
|
705
|
-
derive_from_hd_path:
|
|
703
|
+
fingerprint: int | None,
|
|
704
|
+
key_type: str | None,
|
|
705
|
+
derive_from_hd_path: str | None,
|
|
706
706
|
index: int,
|
|
707
707
|
count: int,
|
|
708
708
|
non_observer_derivation: bool,
|
|
709
709
|
show_private_keys: bool,
|
|
710
710
|
show_hd_path: bool,
|
|
711
|
-
private_key:
|
|
712
|
-
bech32m_prefix:
|
|
711
|
+
private_key: PrivateKey | None,
|
|
712
|
+
bech32m_prefix: str | None,
|
|
713
713
|
) -> None:
|
|
714
714
|
"""
|
|
715
715
|
Derive child keys from the provided master key.
|
|
@@ -719,7 +719,7 @@ def derive_child_key(
|
|
|
719
719
|
if fingerprint is not None:
|
|
720
720
|
key_data: KeyData = Keychain().get_key(fingerprint, include_secrets=True)
|
|
721
721
|
current_pk: G1Element = key_data.public_key
|
|
722
|
-
current_sk:
|
|
722
|
+
current_sk: PrivateKey | None = key_data.private_key if key_data.secrets is not None else None
|
|
723
723
|
else:
|
|
724
724
|
assert private_key is not None
|
|
725
725
|
current_pk = private_key.get_g1()
|
|
@@ -776,7 +776,7 @@ def derive_child_key(
|
|
|
776
776
|
hd_path: str = (
|
|
777
777
|
" (" + hd_path_root + str(i) + ("n" if non_observer_derivation else "") + ")" if show_hd_path else ""
|
|
778
778
|
)
|
|
779
|
-
key_type_str:
|
|
779
|
+
key_type_str: str | None
|
|
780
780
|
|
|
781
781
|
if key_type is not None:
|
|
782
782
|
key_type_str = key_type.capitalize()
|
|
@@ -788,7 +788,7 @@ def derive_child_key(
|
|
|
788
788
|
print(f"{key_type_str} private key {i}{hd_path}: {private_key_string_repr(sk)}")
|
|
789
789
|
|
|
790
790
|
|
|
791
|
-
def private_key_for_fingerprint(fingerprint: int) ->
|
|
791
|
+
def private_key_for_fingerprint(fingerprint: int) -> PrivateKey | None:
|
|
792
792
|
unlock_keyring()
|
|
793
793
|
private_keys = Keychain().get_all_private_keys()
|
|
794
794
|
|
|
@@ -798,7 +798,7 @@ def private_key_for_fingerprint(fingerprint: int) -> Optional[PrivateKey]:
|
|
|
798
798
|
return None
|
|
799
799
|
|
|
800
800
|
|
|
801
|
-
def prompt_for_fingerprint() ->
|
|
801
|
+
def prompt_for_fingerprint() -> int | None:
|
|
802
802
|
fingerprints: list[int] = [pk.get_fingerprint() for pk in Keychain().get_all_public_keys()]
|
|
803
803
|
while True:
|
|
804
804
|
print("Choose key:")
|
|
@@ -822,8 +822,8 @@ def prompt_for_fingerprint() -> Optional[int]:
|
|
|
822
822
|
|
|
823
823
|
|
|
824
824
|
def get_private_key_with_fingerprint_or_prompt(
|
|
825
|
-
fingerprint:
|
|
826
|
-
) -> tuple[
|
|
825
|
+
fingerprint: int | None,
|
|
826
|
+
) -> tuple[int | None, PrivateKey | None]:
|
|
827
827
|
"""
|
|
828
828
|
Get a private key with the specified fingerprint. If fingerprint is not
|
|
829
829
|
specified, prompt the user to select a key.
|
|
@@ -848,8 +848,8 @@ def private_key_from_mnemonic_seed_file(filename: Path) -> PrivateKey:
|
|
|
848
848
|
|
|
849
849
|
|
|
850
850
|
def resolve_derivation_master_key(
|
|
851
|
-
fingerprint_or_filename:
|
|
852
|
-
) -> tuple[
|
|
851
|
+
fingerprint_or_filename: int | str | Path | None,
|
|
852
|
+
) -> tuple[int | None, PrivateKey | None]:
|
|
853
853
|
"""
|
|
854
854
|
Given a key fingerprint of file containing a mnemonic seed, return the private key.
|
|
855
855
|
"""
|
chia/cmds/netspace.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,7 +37,7 @@ from chia.cmds.cmd_classes import ChiaCliContext
|
|
|
39
37
|
default="",
|
|
40
38
|
)
|
|
41
39
|
@click.pass_context
|
|
42
|
-
def netspace_cmd(ctx: click.Context, rpc_port:
|
|
40
|
+
def netspace_cmd(ctx: click.Context, rpc_port: int | None, delta_block_height: str, start: str) -> None:
|
|
43
41
|
"""
|
|
44
42
|
Calculates the estimated space on the network given two block header hashes.
|
|
45
43
|
"""
|
chia/cmds/netspace_funcs.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from chia_rs.sized_bytes import bytes32
|
|
7
6
|
|
|
@@ -9,7 +8,7 @@ from chia.cmds.cmds_util import format_bytes, get_any_service_client
|
|
|
9
8
|
from chia.full_node.full_node_rpc_client import FullNodeRpcClient
|
|
10
9
|
|
|
11
10
|
|
|
12
|
-
async def netstorge_async(root_path: Path, rpc_port:
|
|
11
|
+
async def netstorge_async(root_path: Path, rpc_port: int | None, delta_block_height: str, start: str) -> None:
|
|
13
12
|
"""
|
|
14
13
|
Calculates the estimated space on the network given two block header hashes.
|
|
15
14
|
"""
|
chia/cmds/options.py
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from typing import Any, TypeVar
|
|
4
5
|
|
|
5
6
|
import click
|
|
6
7
|
|
|
7
8
|
from chia.cmds.param_types import TransactionFeeParamType
|
|
8
9
|
|
|
9
|
-
FC = TypeVar("FC", bound=
|
|
10
|
+
FC = TypeVar("FC", bound=Callable[..., Any] | click.Command)
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def create_fingerprint(required: bool = False) -> Callable[[FC], FC]:
|