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/daemon/keychain_proxy.py
CHANGED
|
@@ -5,7 +5,7 @@ import logging
|
|
|
5
5
|
import ssl
|
|
6
6
|
import traceback
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Any, Literal,
|
|
8
|
+
from typing import Any, Literal, overload
|
|
9
9
|
|
|
10
10
|
from aiohttp import ClientConnectorError, ClientSession
|
|
11
11
|
from chia_rs import AugSchemeMPL, G1Element, PrivateKey
|
|
@@ -47,10 +47,10 @@ class KeychainProxy(DaemonProxy):
|
|
|
47
47
|
self,
|
|
48
48
|
log: logging.Logger,
|
|
49
49
|
uri: str = "",
|
|
50
|
-
ssl_context:
|
|
51
|
-
local_keychain:
|
|
52
|
-
user:
|
|
53
|
-
service:
|
|
50
|
+
ssl_context: ssl.SSLContext | None = None,
|
|
51
|
+
local_keychain: Keychain | None = None,
|
|
52
|
+
user: str | None = None,
|
|
53
|
+
service: str | None = None,
|
|
54
54
|
heartbeat: int = 300,
|
|
55
55
|
):
|
|
56
56
|
super().__init__(uri, ssl_context, heartbeat=heartbeat)
|
|
@@ -62,7 +62,7 @@ class KeychainProxy(DaemonProxy):
|
|
|
62
62
|
self.keychain_user = user
|
|
63
63
|
self.keychain_service = service
|
|
64
64
|
# these are used to track and close the keychain connection
|
|
65
|
-
self.keychain_connection_task:
|
|
65
|
+
self.keychain_connection_task: asyncio.Task[None] | None = None
|
|
66
66
|
self.shut_down: bool = False
|
|
67
67
|
self.connection_established: asyncio.Event = asyncio.Event()
|
|
68
68
|
|
|
@@ -175,26 +175,24 @@ class KeychainProxy(DaemonProxy):
|
|
|
175
175
|
async def add_key(self, mnemonic_or_pk: str) -> PrivateKey: ...
|
|
176
176
|
|
|
177
177
|
@overload
|
|
178
|
-
async def add_key(self, mnemonic_or_pk: str, label:
|
|
178
|
+
async def add_key(self, mnemonic_or_pk: str, label: str | None) -> PrivateKey: ...
|
|
179
179
|
|
|
180
180
|
@overload
|
|
181
|
-
async def add_key(self, mnemonic_or_pk: str, label:
|
|
181
|
+
async def add_key(self, mnemonic_or_pk: str, label: str | None, private: Literal[True]) -> PrivateKey: ...
|
|
182
182
|
|
|
183
183
|
@overload
|
|
184
|
-
async def add_key(self, mnemonic_or_pk: str, label:
|
|
184
|
+
async def add_key(self, mnemonic_or_pk: str, label: str | None, private: Literal[False]) -> G1Element: ...
|
|
185
185
|
|
|
186
186
|
@overload
|
|
187
|
-
async def add_key(
|
|
188
|
-
self, mnemonic_or_pk: str, label: Optional[str], private: bool
|
|
189
|
-
) -> Union[PrivateKey, G1Element]: ...
|
|
187
|
+
async def add_key(self, mnemonic_or_pk: str, label: str | None, private: bool) -> PrivateKey | G1Element: ...
|
|
190
188
|
|
|
191
189
|
async def add_key(
|
|
192
|
-
self, mnemonic_or_pk: str, label:
|
|
193
|
-
) ->
|
|
190
|
+
self, mnemonic_or_pk: str, label: str | None = None, private: bool = True
|
|
191
|
+
) -> PrivateKey | G1Element:
|
|
194
192
|
"""
|
|
195
193
|
Forwards to Keychain.add_key()
|
|
196
194
|
"""
|
|
197
|
-
key:
|
|
195
|
+
key: PrivateKey | G1Element
|
|
198
196
|
if self.use_local_keychain():
|
|
199
197
|
key = self.keychain.add_key(mnemonic_or_pk, label, private)
|
|
200
198
|
else:
|
|
@@ -290,11 +288,11 @@ class KeychainProxy(DaemonProxy):
|
|
|
290
288
|
|
|
291
289
|
return keys
|
|
292
290
|
|
|
293
|
-
async def get_first_private_key(self) ->
|
|
291
|
+
async def get_first_private_key(self) -> PrivateKey | None:
|
|
294
292
|
"""
|
|
295
293
|
Forwards to Keychain.get_first_private_key()
|
|
296
294
|
"""
|
|
297
|
-
key:
|
|
295
|
+
key: PrivateKey | None = None
|
|
298
296
|
if self.use_local_keychain():
|
|
299
297
|
sk_ent = self.keychain.get_first_private_key()
|
|
300
298
|
if sk_ent:
|
|
@@ -329,30 +327,26 @@ class KeychainProxy(DaemonProxy):
|
|
|
329
327
|
return key
|
|
330
328
|
|
|
331
329
|
@overload
|
|
332
|
-
async def get_key_for_fingerprint(self, fingerprint:
|
|
330
|
+
async def get_key_for_fingerprint(self, fingerprint: int | None) -> PrivateKey | None: ...
|
|
333
331
|
|
|
334
332
|
@overload
|
|
335
|
-
async def get_key_for_fingerprint(
|
|
336
|
-
self, fingerprint: Optional[int], private: Literal[True]
|
|
337
|
-
) -> Optional[PrivateKey]: ...
|
|
333
|
+
async def get_key_for_fingerprint(self, fingerprint: int | None, private: Literal[True]) -> PrivateKey | None: ...
|
|
338
334
|
|
|
339
335
|
@overload
|
|
340
|
-
async def get_key_for_fingerprint(
|
|
341
|
-
self, fingerprint: Optional[int], private: Literal[False]
|
|
342
|
-
) -> Optional[G1Element]: ...
|
|
336
|
+
async def get_key_for_fingerprint(self, fingerprint: int | None, private: Literal[False]) -> G1Element | None: ...
|
|
343
337
|
|
|
344
338
|
@overload
|
|
345
339
|
async def get_key_for_fingerprint(
|
|
346
|
-
self, fingerprint:
|
|
347
|
-
) ->
|
|
340
|
+
self, fingerprint: int | None, private: bool
|
|
341
|
+
) -> PrivateKey | G1Element | None: ...
|
|
348
342
|
|
|
349
343
|
async def get_key_for_fingerprint(
|
|
350
|
-
self, fingerprint:
|
|
351
|
-
) ->
|
|
344
|
+
self, fingerprint: int | None, private: bool = True
|
|
345
|
+
) -> PrivateKey | G1Element | None:
|
|
352
346
|
"""
|
|
353
347
|
Locates and returns a private key matching the provided fingerprint
|
|
354
348
|
"""
|
|
355
|
-
key:
|
|
349
|
+
key: PrivateKey | G1Element | None = None
|
|
356
350
|
if self.use_local_keychain():
|
|
357
351
|
keys = self.keychain.get_keys(include_secrets=private)
|
|
358
352
|
if len(keys) == 0:
|
|
@@ -404,11 +398,11 @@ class KeychainProxy(DaemonProxy):
|
|
|
404
398
|
|
|
405
399
|
return key
|
|
406
400
|
|
|
407
|
-
async def get_key(self, fingerprint: int, include_secrets: bool = False) ->
|
|
401
|
+
async def get_key(self, fingerprint: int, include_secrets: bool = False) -> KeyData | None:
|
|
408
402
|
"""
|
|
409
403
|
Locates and returns KeyData matching the provided fingerprint
|
|
410
404
|
"""
|
|
411
|
-
key_data:
|
|
405
|
+
key_data: KeyData | None = None
|
|
412
406
|
if self.use_local_keychain():
|
|
413
407
|
key_data = self.keychain.get_key(fingerprint, include_secrets)
|
|
414
408
|
else:
|
|
@@ -449,10 +443,10 @@ async def connect_to_keychain(
|
|
|
449
443
|
self_hostname: str,
|
|
450
444
|
daemon_port: int,
|
|
451
445
|
daemon_heartbeat: int,
|
|
452
|
-
ssl_context:
|
|
446
|
+
ssl_context: ssl.SSLContext | None,
|
|
453
447
|
log: logging.Logger,
|
|
454
|
-
user:
|
|
455
|
-
service:
|
|
448
|
+
user: str | None = None,
|
|
449
|
+
service: str | None = None,
|
|
456
450
|
) -> KeychainProxy:
|
|
457
451
|
"""
|
|
458
452
|
Connect to the local daemon.
|
|
@@ -475,9 +469,9 @@ async def connect_to_keychain(
|
|
|
475
469
|
async def connect_to_keychain_and_validate(
|
|
476
470
|
root_path: Path,
|
|
477
471
|
log: logging.Logger,
|
|
478
|
-
user:
|
|
479
|
-
service:
|
|
480
|
-
) ->
|
|
472
|
+
user: str | None = None,
|
|
473
|
+
service: str | None = None,
|
|
474
|
+
) -> KeychainProxy | None:
|
|
481
475
|
"""
|
|
482
476
|
Connect to the local daemon and do a ping to ensure that something is really
|
|
483
477
|
there and running.
|
chia/daemon/server.py
CHANGED
|
@@ -18,7 +18,7 @@ from contextlib import asynccontextmanager
|
|
|
18
18
|
from enum import Enum
|
|
19
19
|
from pathlib import Path
|
|
20
20
|
from types import FrameType
|
|
21
|
-
from typing import Any,
|
|
21
|
+
from typing import Any, TextIO
|
|
22
22
|
|
|
23
23
|
from chia_rs import G1Element
|
|
24
24
|
from chia_rs.sized_ints import uint32
|
|
@@ -141,7 +141,7 @@ class Command(Protocol):
|
|
|
141
141
|
async def __call__(self, websocket: WebSocketResponse, request: dict[str, Any]) -> dict[str, Any]: ...
|
|
142
142
|
|
|
143
143
|
|
|
144
|
-
def _get_keys_by_fingerprints(fingerprints:
|
|
144
|
+
def _get_keys_by_fingerprints(fingerprints: list[uint32] | None) -> tuple[list[KeyData], set[uint32]]:
|
|
145
145
|
all_keys = Keychain().get_keys(include_secrets=True)
|
|
146
146
|
missing_fingerprints = set()
|
|
147
147
|
|
|
@@ -189,41 +189,40 @@ class WebSocketServer:
|
|
|
189
189
|
self.services: dict[str, list[subprocess.Popen]] = dict()
|
|
190
190
|
self.plots_queue: list[dict] = []
|
|
191
191
|
self.connections: dict[str, set[WebSocketResponse]] = dict() # service name : {WebSocketResponse}
|
|
192
|
-
self.ping_job:
|
|
192
|
+
self.ping_job: asyncio.Task | None = None
|
|
193
193
|
self.net_config = load_config(root_path, "config.yaml")
|
|
194
194
|
self.self_hostname = self.net_config["self_hostname"]
|
|
195
195
|
self.daemon_port = self.net_config["daemon_port"]
|
|
196
196
|
self.daemon_max_message_size = self.net_config.get("daemon_max_message_size", 50 * 1000 * 1000)
|
|
197
197
|
self.heartbeat = self.net_config.get("daemon_heartbeat", 300)
|
|
198
|
-
self.webserver:
|
|
198
|
+
self.webserver: WebServer | None = None
|
|
199
199
|
self.ssl_context = ssl_context_for_server(ca_crt_path, ca_key_path, crt_path, key_path, log=self.log)
|
|
200
200
|
self.keychain_server = KeychainServer()
|
|
201
201
|
self.run_check_keys_on_unlock = run_check_keys_on_unlock
|
|
202
202
|
self.shutdown_event = asyncio.Event()
|
|
203
203
|
self.state_changed_msg_queue: asyncio.Queue[StatusMessage] = asyncio.Queue()
|
|
204
|
-
self.state_changed_task:
|
|
204
|
+
self.state_changed_task: asyncio.Task | None = None
|
|
205
205
|
|
|
206
206
|
@asynccontextmanager
|
|
207
207
|
async def run(self) -> AsyncIterator[None]:
|
|
208
208
|
self.log.info(f"Starting Daemon Server ({self.self_hostname}:{self.daemon_port})")
|
|
209
209
|
|
|
210
|
-
# Note: the minimum_version has been already set to
|
|
210
|
+
# Note: the minimum_version has been already set to TLSv1_3
|
|
211
211
|
# in ssl_context_for_server()
|
|
212
|
-
# Daemon is internal connections, so override to
|
|
213
|
-
if
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
ssl.OPENSSL_VERSION,
|
|
212
|
+
# Daemon is internal connections, so override to TLSv1_2 only if specified in the config
|
|
213
|
+
if self.net_config.get("daemon_allow_tls_1_2", False):
|
|
214
|
+
self.ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
|
|
215
|
+
self.ssl_context.set_ciphers(
|
|
216
|
+
"ECDHE-ECDSA-AES256-GCM-SHA384:"
|
|
217
|
+
"ECDHE-RSA-AES256-GCM-SHA384:"
|
|
218
|
+
"ECDHE-ECDSA-CHACHA20-POLY1305:"
|
|
219
|
+
"ECDHE-RSA-CHACHA20-POLY1305:"
|
|
220
|
+
"ECDHE-ECDSA-AES128-GCM-SHA256:"
|
|
221
|
+
"ECDHE-RSA-AES128-GCM-SHA256:"
|
|
222
|
+
"ECDHE-ECDSA-AES256-SHA384:"
|
|
223
|
+
"ECDHE-RSA-AES256-SHA384:"
|
|
224
|
+
"ECDHE-ECDSA-AES128-SHA256:"
|
|
225
|
+
"ECDHE-RSA-AES128-SHA256"
|
|
227
226
|
)
|
|
228
227
|
|
|
229
228
|
self.state_changed_task = create_referenced_task(self._process_state_changed_queue())
|
|
@@ -249,7 +248,7 @@ class WebSocketServer:
|
|
|
249
248
|
async def _accept_signal(
|
|
250
249
|
self,
|
|
251
250
|
signal_: signal.Signals,
|
|
252
|
-
stack_frame:
|
|
251
|
+
stack_frame: FrameType | None,
|
|
253
252
|
loop: asyncio.AbstractEventLoop,
|
|
254
253
|
) -> None:
|
|
255
254
|
self.log.info("Received signal %s (%s), shutting down.", signal_.name, signal_.value)
|
|
@@ -408,7 +407,7 @@ class WebSocketServer:
|
|
|
408
407
|
|
|
409
408
|
async def handle_message(
|
|
410
409
|
self, websocket: WebSocketResponse, message: WsRpcMessage
|
|
411
|
-
) ->
|
|
410
|
+
) -> tuple[str, set[WebSocketResponse]] | None:
|
|
412
411
|
"""
|
|
413
412
|
This function gets called when new message is received via websocket.
|
|
414
413
|
"""
|
|
@@ -519,8 +518,8 @@ class WebSocketServer:
|
|
|
519
518
|
|
|
520
519
|
async def unlock_keyring(self, websocket: WebSocketResponse, request: dict[str, Any]) -> dict[str, Any]:
|
|
521
520
|
success: bool = False
|
|
522
|
-
error:
|
|
523
|
-
key:
|
|
521
|
+
error: str | None = None
|
|
522
|
+
key: str | None = request.get("key", None)
|
|
524
523
|
if type(key) is not str:
|
|
525
524
|
return {"success": False, "error": "missing key"}
|
|
526
525
|
|
|
@@ -555,8 +554,8 @@ class WebSocketServer:
|
|
|
555
554
|
request: dict[str, Any],
|
|
556
555
|
) -> dict[str, Any]:
|
|
557
556
|
success: bool = False
|
|
558
|
-
error:
|
|
559
|
-
key:
|
|
557
|
+
error: str | None = None
|
|
558
|
+
key: str | None = request.get("key", None)
|
|
560
559
|
if type(key) is not str:
|
|
561
560
|
return {"success": False, "error": "missing key"}
|
|
562
561
|
|
|
@@ -572,10 +571,10 @@ class WebSocketServer:
|
|
|
572
571
|
|
|
573
572
|
async def set_keyring_passphrase(self, websocket: WebSocketResponse, request: dict[str, Any]) -> dict[str, Any]:
|
|
574
573
|
success: bool = False
|
|
575
|
-
error:
|
|
576
|
-
current_passphrase:
|
|
577
|
-
new_passphrase:
|
|
578
|
-
passphrase_hint:
|
|
574
|
+
error: str | None = None
|
|
575
|
+
current_passphrase: str | None = None
|
|
576
|
+
new_passphrase: str | None = None
|
|
577
|
+
passphrase_hint: str | None = request.get("passphrase_hint", None)
|
|
579
578
|
save_passphrase: bool = request.get("save_passphrase", False)
|
|
580
579
|
|
|
581
580
|
if using_default_passphrase():
|
|
@@ -616,8 +615,8 @@ class WebSocketServer:
|
|
|
616
615
|
|
|
617
616
|
async def remove_keyring_passphrase(self, websocket: WebSocketResponse, request: dict[str, Any]) -> dict[str, Any]:
|
|
618
617
|
success: bool = False
|
|
619
|
-
error:
|
|
620
|
-
current_passphrase:
|
|
618
|
+
error: str | None = None
|
|
619
|
+
current_passphrase: str | None = None
|
|
621
620
|
|
|
622
621
|
if not Keychain.has_master_passphrase():
|
|
623
622
|
return {"success": False, "error": "passphrase not set"}
|
chia/daemon/windows_signal.py
CHANGED
|
@@ -8,11 +8,12 @@ from __future__ import annotations
|
|
|
8
8
|
import os
|
|
9
9
|
import signal
|
|
10
10
|
import sys
|
|
11
|
+
from collections.abc import Callable
|
|
11
12
|
from types import FrameType
|
|
12
|
-
from typing import Any
|
|
13
|
+
from typing import Any
|
|
13
14
|
|
|
14
15
|
# https://github.com/python/typeshed/blob/fbddd2c4e2b746f1880399ed0cb31a44d6ede6ff/stdlib/signal.pyi
|
|
15
|
-
_HANDLER =
|
|
16
|
+
_HANDLER = Callable[[int, FrameType | None], Any] | int | signal.Handlers | None
|
|
16
17
|
|
|
17
18
|
if sys.platform != "win32" and sys.platform != "cygwin":
|
|
18
19
|
kill = os.kill
|
|
@@ -39,7 +40,7 @@ else:
|
|
|
39
40
|
event = threading.Event()
|
|
40
41
|
callable_handler = handler
|
|
41
42
|
|
|
42
|
-
def handler_set_event(signum: int, frame:
|
|
43
|
+
def handler_set_event(signum: int, frame: FrameType | None) -> Any:
|
|
43
44
|
event.set()
|
|
44
45
|
return callable_handler(signum, frame)
|
|
45
46
|
|