chia-blockchain 2.5.7rc3__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 +12 -7
- 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 +16 -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.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
- {chia_blockchain-2.5.7rc3.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.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
- {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
chia/pools/pool_wallet_info.py
CHANGED
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from enum import IntEnum
|
|
5
|
-
from typing import Any, Optional
|
|
6
5
|
|
|
7
6
|
from chia_rs import G1Element
|
|
8
7
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -57,26 +56,56 @@ class PoolState(Streamable):
|
|
|
57
56
|
target_puzzle_hash: bytes32 # TODO: rename target_puzzle_hash -> pay_to_address
|
|
58
57
|
# owner_pubkey is set by the wallet, once
|
|
59
58
|
owner_pubkey: G1Element
|
|
60
|
-
pool_url:
|
|
59
|
+
pool_url: str | None
|
|
61
60
|
relative_lock_height: uint32
|
|
62
61
|
|
|
63
62
|
|
|
63
|
+
@streamable
|
|
64
|
+
@dataclass(frozen=True)
|
|
65
|
+
class NewPoolWalletInitialTargetState(Streamable):
|
|
66
|
+
state: str # must map to name of PoolSingletonState Enum
|
|
67
|
+
# only when state == "FARMING_TO_POOL"
|
|
68
|
+
target_puzzle_hash: bytes32 | None = None
|
|
69
|
+
pool_url: str | None = None
|
|
70
|
+
relative_lock_height: uint32 | None = None
|
|
71
|
+
|
|
72
|
+
def __post_init__(self) -> None:
|
|
73
|
+
if self.state not in {member.name for member in PoolSingletonState}:
|
|
74
|
+
raise ValueError(f"Invalid pool wallet initial state: {self.state}")
|
|
75
|
+
if PoolSingletonState[self.state] == PoolSingletonState.FARMING_TO_POOL:
|
|
76
|
+
if self.target_puzzle_hash is None:
|
|
77
|
+
raise ValueError("target_puzzle_hash must be set when state is FARMING_TO_POOL")
|
|
78
|
+
if self.pool_url is None:
|
|
79
|
+
raise ValueError("pool_url must be set when state is FARMING_TO_POOL")
|
|
80
|
+
if self.relative_lock_height is None:
|
|
81
|
+
raise ValueError("relative_lock_height must be set when state is FARMING_TO_POOL")
|
|
82
|
+
else:
|
|
83
|
+
if self.target_puzzle_hash is not None:
|
|
84
|
+
raise ValueError("target_puzzle_hash is only valid for FARMING_TO_POOL")
|
|
85
|
+
if self.pool_url is not None:
|
|
86
|
+
raise ValueError("pool_url is only valid for FARMING_TO_POOL")
|
|
87
|
+
if self.relative_lock_height is not None:
|
|
88
|
+
raise ValueError("relative_lock_height is only valid for FARMING_TO_POOL")
|
|
89
|
+
|
|
90
|
+
super().__post_init__()
|
|
91
|
+
|
|
92
|
+
|
|
64
93
|
def initial_pool_state_from_dict(
|
|
65
|
-
|
|
94
|
+
initial_state: NewPoolWalletInitialTargetState,
|
|
66
95
|
owner_pubkey: G1Element,
|
|
67
96
|
owner_puzzle_hash: bytes32,
|
|
68
97
|
) -> PoolState:
|
|
69
|
-
|
|
70
|
-
singleton_state: PoolSingletonState = PoolSingletonState[state_str]
|
|
98
|
+
singleton_state: PoolSingletonState = PoolSingletonState[initial_state.state]
|
|
71
99
|
|
|
72
100
|
if singleton_state == SELF_POOLING:
|
|
73
101
|
target_puzzle_hash = owner_puzzle_hash
|
|
74
102
|
pool_url: str = ""
|
|
75
103
|
relative_lock_height = uint32(0)
|
|
76
104
|
elif singleton_state == FARMING_TO_POOL:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
105
|
+
# mypy doesn't know about our __post_init__
|
|
106
|
+
target_puzzle_hash = initial_state.target_puzzle_hash # type: ignore[assignment]
|
|
107
|
+
pool_url = initial_state.pool_url # type: ignore[assignment]
|
|
108
|
+
relative_lock_height = initial_state.relative_lock_height # type: ignore[assignment]
|
|
80
109
|
else:
|
|
81
110
|
raise ValueError("Initial state must be SELF_POOLING or FARMING_TO_POOL")
|
|
82
111
|
|
|
@@ -89,7 +118,7 @@ def create_pool_state(
|
|
|
89
118
|
state: PoolSingletonState,
|
|
90
119
|
target_puzzle_hash: bytes32,
|
|
91
120
|
owner_pubkey: G1Element,
|
|
92
|
-
pool_url:
|
|
121
|
+
pool_url: str | None,
|
|
93
122
|
relative_lock_height: uint32,
|
|
94
123
|
) -> PoolState:
|
|
95
124
|
if state not in {s.value for s in PoolSingletonState}:
|
|
@@ -110,7 +139,7 @@ class PoolWalletInfo(Streamable):
|
|
|
110
139
|
"""
|
|
111
140
|
|
|
112
141
|
current: PoolState
|
|
113
|
-
target:
|
|
142
|
+
target: PoolState | None
|
|
114
143
|
launcher_coin: Coin
|
|
115
144
|
launcher_id: bytes32
|
|
116
145
|
p2_singleton_puzzle_hash: bytes32
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from chia_rs import (
|
|
7
6
|
ChallengeChainSubSlot,
|
|
@@ -42,8 +41,8 @@ class SPVDFSourceData(Streamable):
|
|
|
42
41
|
@streamable
|
|
43
42
|
@dataclass(frozen=True)
|
|
44
43
|
class SignagePointSourceData(Streamable):
|
|
45
|
-
sub_slot_data:
|
|
46
|
-
vdf_data:
|
|
44
|
+
sub_slot_data: SPSubSlotSourceData | None = None
|
|
45
|
+
vdf_data: SPVDFSourceData | None = None
|
|
47
46
|
|
|
48
47
|
|
|
49
48
|
@streamable
|
|
@@ -57,7 +56,7 @@ class NewSignagePoint(Streamable):
|
|
|
57
56
|
signage_point_index: uint8
|
|
58
57
|
peak_height: uint32
|
|
59
58
|
last_tx_height: uint32
|
|
60
|
-
sp_source_data:
|
|
59
|
+
sp_source_data: SignagePointSourceData | None = None
|
|
61
60
|
|
|
62
61
|
|
|
63
62
|
@streamable
|
|
@@ -71,8 +70,8 @@ class DeclareProofOfSpace(Streamable):
|
|
|
71
70
|
challenge_chain_sp_signature: G2Element
|
|
72
71
|
reward_chain_sp_signature: G2Element
|
|
73
72
|
farmer_puzzle_hash: bytes32
|
|
74
|
-
pool_target:
|
|
75
|
-
pool_signature:
|
|
73
|
+
pool_target: PoolTarget | None
|
|
74
|
+
pool_signature: G2Element | None
|
|
76
75
|
include_signature_source_data: bool = False
|
|
77
76
|
|
|
78
77
|
|
|
@@ -82,9 +81,9 @@ class RequestSignedValues(Streamable):
|
|
|
82
81
|
quality_string: bytes32
|
|
83
82
|
foliage_block_data_hash: bytes32
|
|
84
83
|
foliage_transaction_block_hash: bytes32
|
|
85
|
-
foliage_block_data:
|
|
86
|
-
foliage_transaction_block_data:
|
|
87
|
-
rc_block_unfinished:
|
|
84
|
+
foliage_block_data: FoliageBlockData | None = None
|
|
85
|
+
foliage_transaction_block_data: FoliageTransactionBlock | None = None
|
|
86
|
+
rc_block_unfinished: RewardChainBlockUnfinished | None = None
|
|
88
87
|
|
|
89
88
|
|
|
90
89
|
@streamable
|
chia/protocols/fee_estimate.py
CHANGED
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import math
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
6
|
from chia_rs.sized_ints import uint64
|
|
8
7
|
|
|
@@ -23,14 +22,14 @@ class FeeEstimate(Streamable):
|
|
|
23
22
|
estimated_fee_rate: expressed in mojo per 1 clvm_cost. `estimated_fee` can be zero.
|
|
24
23
|
"""
|
|
25
24
|
|
|
26
|
-
error:
|
|
25
|
+
error: str | None
|
|
27
26
|
time_target: uint64 # unix time stamp in seconds
|
|
28
27
|
estimated_fee_rate: FeeRate # Mojos per clvm cost
|
|
29
28
|
|
|
30
29
|
|
|
31
30
|
@dataclass(frozen=True)
|
|
32
31
|
class FeeEstimateV2:
|
|
33
|
-
error:
|
|
32
|
+
error: str | None
|
|
34
33
|
time_target: uint64 # unix time stamp in seconds
|
|
35
34
|
estimated_fee_rate: FeeRateV2 # Mojos per clvm cost
|
|
36
35
|
|
|
@@ -51,5 +50,5 @@ class FeeEstimateGroup(Streamable):
|
|
|
51
50
|
Estimates are expressed in mojos / 1 clvm_cost.
|
|
52
51
|
"""
|
|
53
52
|
|
|
54
|
-
error:
|
|
53
|
+
error: str | None
|
|
55
54
|
estimates: list[FeeEstimate]
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from chia_rs import EndOfSubSlotBundle, FullBlock, SpendBundle, UnfinishedBlock
|
|
7
6
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -120,14 +119,14 @@ class RequestUnfinishedBlock(Streamable):
|
|
|
120
119
|
@dataclass(frozen=True)
|
|
121
120
|
class NewUnfinishedBlock2(Streamable):
|
|
122
121
|
unfinished_reward_hash: bytes32
|
|
123
|
-
foliage_hash:
|
|
122
|
+
foliage_hash: bytes32 | None
|
|
124
123
|
|
|
125
124
|
|
|
126
125
|
@streamable
|
|
127
126
|
@dataclass(frozen=True)
|
|
128
127
|
class RequestUnfinishedBlock2(Streamable):
|
|
129
128
|
unfinished_reward_hash: bytes32
|
|
130
|
-
foliage_hash:
|
|
129
|
+
foliage_hash: bytes32 | None
|
|
131
130
|
|
|
132
131
|
|
|
133
132
|
@streamable
|
|
@@ -139,7 +138,7 @@ class RespondUnfinishedBlock(Streamable):
|
|
|
139
138
|
@streamable
|
|
140
139
|
@dataclass(frozen=True)
|
|
141
140
|
class NewSignagePointOrEndOfSubSlot(Streamable):
|
|
142
|
-
prev_challenge_hash:
|
|
141
|
+
prev_challenge_hash: bytes32 | None
|
|
143
142
|
challenge_hash: bytes32
|
|
144
143
|
index_from_challenge: uint8
|
|
145
144
|
last_rc_infusion: bytes32
|
|
@@ -2,9 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from enum import IntEnum
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
|
-
from chia_rs import G1Element, G2Element, ProofOfSpace, RewardChainBlockUnfinished
|
|
6
|
+
from chia_rs import G1Element, G2Element, PartialProof, PlotParam, ProofOfSpace, RewardChainBlockUnfinished
|
|
8
7
|
from chia_rs.sized_bytes import bytes32
|
|
9
8
|
from chia_rs.sized_ints import int16, uint8, uint32, uint64
|
|
10
9
|
|
|
@@ -73,8 +72,8 @@ class NewProofOfSpace(Streamable):
|
|
|
73
72
|
proof: ProofOfSpace
|
|
74
73
|
signage_point_index: uint8
|
|
75
74
|
include_source_signature_data: bool
|
|
76
|
-
farmer_reward_address_override:
|
|
77
|
-
fee_info:
|
|
75
|
+
farmer_reward_address_override: bytes32 | None
|
|
76
|
+
fee_info: ProofOfSpaceFeeInfo | None
|
|
78
77
|
|
|
79
78
|
|
|
80
79
|
@streamable
|
|
@@ -83,11 +82,13 @@ class PartialProofsData(Streamable):
|
|
|
83
82
|
challenge_hash: bytes32
|
|
84
83
|
sp_hash: bytes32
|
|
85
84
|
plot_identifier: str
|
|
86
|
-
partial_proofs: list[
|
|
85
|
+
partial_proofs: list[PartialProof] # 16 * k bits blobs instead of 32-byte quality strings
|
|
87
86
|
signage_point_index: uint8
|
|
88
87
|
plot_size: uint8
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
strength: uint8
|
|
89
|
+
plot_id: bytes32
|
|
90
|
+
pool_public_key: G1Element | None
|
|
91
|
+
pool_contract_puzzle_hash: bytes32 | None
|
|
91
92
|
plot_public_key: G1Element
|
|
92
93
|
|
|
93
94
|
|
|
@@ -119,8 +120,8 @@ class RequestSignatures(Streamable):
|
|
|
119
120
|
sp_hash: bytes32
|
|
120
121
|
messages: list[bytes32]
|
|
121
122
|
# This, and rc_block_unfinished are only set when using a third-party harvester (see CHIP-22)
|
|
122
|
-
message_data:
|
|
123
|
-
rc_block_unfinished:
|
|
123
|
+
message_data: list[SignatureRequestSourceData | None] | None
|
|
124
|
+
rc_block_unfinished: RewardChainBlockUnfinished | None
|
|
124
125
|
|
|
125
126
|
|
|
126
127
|
@streamable
|
|
@@ -133,21 +134,32 @@ class RespondSignatures(Streamable):
|
|
|
133
134
|
farmer_pk: G1Element
|
|
134
135
|
message_signatures: list[tuple[bytes32, G2Element]]
|
|
135
136
|
include_source_signature_data: bool
|
|
136
|
-
farmer_reward_address_override:
|
|
137
|
+
farmer_reward_address_override: bytes32 | None
|
|
137
138
|
|
|
138
139
|
|
|
139
140
|
@streamable
|
|
140
141
|
@dataclass(frozen=True)
|
|
141
142
|
class Plot(Streamable):
|
|
142
143
|
filename: str
|
|
144
|
+
# for backwards compatibility with previous harvester (e.g. DrPlotter)
|
|
145
|
+
# this field is either k-size (for v1 plots) or strength (for v2 plots).
|
|
146
|
+
# the most significant bit is set for v2 plots
|
|
147
|
+
# TODO: after the phase-out, v1 harvester won't be relevant anymore and we
|
|
148
|
+
# can clean this up with a new protocol version
|
|
143
149
|
size: uint8
|
|
144
150
|
plot_id: bytes32
|
|
145
|
-
pool_public_key:
|
|
146
|
-
pool_contract_puzzle_hash:
|
|
151
|
+
pool_public_key: G1Element | None
|
|
152
|
+
pool_contract_puzzle_hash: bytes32 | None
|
|
147
153
|
plot_public_key: G1Element
|
|
148
154
|
file_size: uint64
|
|
149
155
|
time_modified: uint64
|
|
150
|
-
compression_level:
|
|
156
|
+
compression_level: uint8 | None
|
|
157
|
+
|
|
158
|
+
def param(self) -> PlotParam:
|
|
159
|
+
if (self.size & 0x80) != 0:
|
|
160
|
+
return PlotParam.make_v2(self.size & 0x7F)
|
|
161
|
+
else:
|
|
162
|
+
return PlotParam.make_v1(self.size)
|
|
151
163
|
|
|
152
164
|
|
|
153
165
|
@streamable
|
|
@@ -226,7 +238,7 @@ class PlotSyncDone(Streamable):
|
|
|
226
238
|
class PlotSyncError(Streamable):
|
|
227
239
|
code: int16
|
|
228
240
|
message: str
|
|
229
|
-
expected_identifier:
|
|
241
|
+
expected_identifier: PlotSyncIdentifier | None
|
|
230
242
|
|
|
231
243
|
def __str__(self) -> str:
|
|
232
244
|
return f"PlotSyncError: code {self.code}, count {self.message}, expected_identifier {self.expected_identifier}"
|
|
@@ -237,7 +249,7 @@ class PlotSyncError(Streamable):
|
|
|
237
249
|
class PlotSyncResponse(Streamable):
|
|
238
250
|
identifier: PlotSyncIdentifier
|
|
239
251
|
message_type: int16
|
|
240
|
-
error:
|
|
252
|
+
error: PlotSyncError | None
|
|
241
253
|
|
|
242
254
|
def __str__(self) -> str:
|
|
243
255
|
return f"PlotSyncResponse: identifier {self.identifier}, message_type {self.message_type}, error {self.error}"
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from enum import IntEnum
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import SupportsBytes
|
|
6
6
|
|
|
7
7
|
from chia_rs.sized_ints import uint8, uint16
|
|
8
8
|
|
|
@@ -26,10 +26,10 @@ class NodeType(IntEnum):
|
|
|
26
26
|
class Message(Streamable):
|
|
27
27
|
type: uint8 # one of ProtocolMessageTypes
|
|
28
28
|
# message id
|
|
29
|
-
id:
|
|
29
|
+
id: uint16 | None
|
|
30
30
|
# Message data for that type
|
|
31
31
|
data: bytes
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
def make_msg(msg_type: ProtocolMessageTypes, data:
|
|
34
|
+
def make_msg(msg_type: ProtocolMessageTypes, data: bytes | SupportsBytes) -> Message:
|
|
35
35
|
return Message(uint8(msg_type.value), None, bytes(data))
|
chia/protocols/pool_protocol.py
CHANGED
|
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|
|
3
3
|
import time
|
|
4
4
|
from dataclasses import dataclass
|
|
5
5
|
from enum import Enum
|
|
6
|
-
from typing import Optional
|
|
7
6
|
|
|
8
7
|
from chia_rs import G1Element, G2Element, ProofOfSpace
|
|
9
8
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -109,7 +108,7 @@ class PostFarmerPayload(Streamable):
|
|
|
109
108
|
authentication_token: uint64
|
|
110
109
|
authentication_public_key: G1Element
|
|
111
110
|
payout_instructions: str
|
|
112
|
-
suggested_difficulty:
|
|
111
|
+
suggested_difficulty: uint64 | None
|
|
113
112
|
|
|
114
113
|
|
|
115
114
|
@streamable
|
|
@@ -134,9 +133,9 @@ class PostFarmerResponse(Streamable):
|
|
|
134
133
|
class PutFarmerPayload(Streamable):
|
|
135
134
|
launcher_id: bytes32
|
|
136
135
|
authentication_token: uint64
|
|
137
|
-
authentication_public_key:
|
|
138
|
-
payout_instructions:
|
|
139
|
-
suggested_difficulty:
|
|
136
|
+
authentication_public_key: G1Element | None
|
|
137
|
+
payout_instructions: str | None
|
|
138
|
+
suggested_difficulty: uint64 | None
|
|
140
139
|
|
|
141
140
|
|
|
142
141
|
@streamable
|
|
@@ -150,9 +149,9 @@ class PutFarmerRequest(Streamable):
|
|
|
150
149
|
@streamable
|
|
151
150
|
@dataclass(frozen=True)
|
|
152
151
|
class PutFarmerResponse(Streamable):
|
|
153
|
-
authentication_public_key:
|
|
154
|
-
payout_instructions:
|
|
155
|
-
suggested_difficulty:
|
|
152
|
+
authentication_public_key: bool | None
|
|
153
|
+
payout_instructions: bool | None
|
|
154
|
+
suggested_difficulty: bool | None
|
|
156
155
|
|
|
157
156
|
|
|
158
157
|
# Misc
|
|
@@ -163,7 +162,7 @@ class PutFarmerResponse(Streamable):
|
|
|
163
162
|
@dataclass(frozen=True)
|
|
164
163
|
class ErrorResponse(Streamable):
|
|
165
164
|
error_code: uint16
|
|
166
|
-
error_message:
|
|
165
|
+
error_message: str | None
|
|
167
166
|
|
|
168
167
|
|
|
169
168
|
# Get the current authentication token according to "Farmer authentication" in SPECIFICATION.md
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from enum import IntEnum
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
6
|
from chia_rs.sized_ints import int16, uint8, uint16
|
|
8
7
|
|
|
@@ -86,4 +85,4 @@ class Handshake(Streamable):
|
|
|
86
85
|
class Error(Streamable):
|
|
87
86
|
code: int16 # Err
|
|
88
87
|
message: str
|
|
89
|
-
data:
|
|
88
|
+
data: bytes | None = None
|
|
@@ -2,17 +2,24 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
|
|
5
|
+
from chia_rs import PartialProof
|
|
6
|
+
from chia_rs.sized_bytes import bytes32
|
|
7
|
+
from chia_rs.sized_ints import uint8
|
|
8
|
+
|
|
5
9
|
from chia.util.streamable import Streamable, streamable
|
|
6
10
|
|
|
7
11
|
|
|
8
12
|
@streamable
|
|
9
13
|
@dataclass(frozen=True)
|
|
10
14
|
class SolverInfo(Streamable):
|
|
11
|
-
partial_proof:
|
|
15
|
+
partial_proof: PartialProof
|
|
16
|
+
plot_id: bytes32
|
|
17
|
+
strength: uint8
|
|
18
|
+
size: uint8 # k-size
|
|
12
19
|
|
|
13
20
|
|
|
14
21
|
@streamable
|
|
15
22
|
@dataclass(frozen=True)
|
|
16
23
|
class SolverResponse(Streamable):
|
|
17
|
-
partial_proof:
|
|
24
|
+
partial_proof: PartialProof
|
|
18
25
|
proof: bytes
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from chia_rs import EndOfSubSlotBundle, Foliage, RewardChainBlock, RewardChainBlockUnfinished, SubEpochSummary
|
|
7
6
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -23,9 +22,7 @@ class NewPeakTimelord(Streamable):
|
|
|
23
22
|
difficulty: uint64
|
|
24
23
|
deficit: uint8
|
|
25
24
|
sub_slot_iters: uint64 # SSi in the slot where NewPeak has been infused
|
|
26
|
-
sub_epoch_summary:
|
|
27
|
-
SubEpochSummary
|
|
28
|
-
] # If NewPeak is the last slot in epoch, the next slot should include this
|
|
25
|
+
sub_epoch_summary: SubEpochSummary | None # If NewPeak is the last slot in epoch, the next slot should include this
|
|
29
26
|
previous_reward_challenges: list[tuple[bytes32, uint128]]
|
|
30
27
|
last_challenge_sb_or_eos_total_iters: uint128
|
|
31
28
|
passes_ses_height_but_not_yet_included: bool
|
|
@@ -38,7 +35,7 @@ class NewUnfinishedBlockTimelord(Streamable):
|
|
|
38
35
|
difficulty: uint64
|
|
39
36
|
sub_slot_iters: uint64 # SSi in the slot where block is infused
|
|
40
37
|
foliage: Foliage # Reward chain foliage data
|
|
41
|
-
sub_epoch_summary:
|
|
38
|
+
sub_epoch_summary: SubEpochSummary | None # If this is the last slot in epoch, the next slot should include this
|
|
42
39
|
# This is the last thing infused in the reward chain before this signage point.
|
|
43
40
|
# The challenge that the SP reward chain VDF is based off of, or in the case of sp index 0, the previous infusion
|
|
44
41
|
rc_prev: bytes32
|
|
@@ -52,8 +49,8 @@ class NewInfusionPointVDF(Streamable):
|
|
|
52
49
|
challenge_chain_ip_proof: VDFProof
|
|
53
50
|
reward_chain_ip_vdf: VDFInfo
|
|
54
51
|
reward_chain_ip_proof: VDFProof
|
|
55
|
-
infused_challenge_chain_ip_vdf:
|
|
56
|
-
infused_challenge_chain_ip_proof:
|
|
52
|
+
infused_challenge_chain_ip_vdf: VDFInfo | None
|
|
53
|
+
infused_challenge_chain_ip_proof: VDFProof | None
|
|
57
54
|
|
|
58
55
|
|
|
59
56
|
@streamable
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from enum import IntEnum
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
6
|
import chia_rs
|
|
8
7
|
from chia_rs import HeaderBlock, SpendBundle
|
|
@@ -65,7 +64,7 @@ class SendTransaction(Streamable):
|
|
|
65
64
|
class TransactionAck(Streamable):
|
|
66
65
|
txid: bytes32
|
|
67
66
|
status: uint8 # MempoolInclusionStatus
|
|
68
|
-
error:
|
|
67
|
+
error: str | None
|
|
69
68
|
|
|
70
69
|
|
|
71
70
|
@streamable
|
|
@@ -100,7 +99,7 @@ class RejectHeaderRequest(Streamable):
|
|
|
100
99
|
class RequestRemovals(Streamable):
|
|
101
100
|
height: uint32
|
|
102
101
|
header_hash: bytes32
|
|
103
|
-
coin_names:
|
|
102
|
+
coin_names: list[bytes32] | None
|
|
104
103
|
|
|
105
104
|
|
|
106
105
|
@streamable
|
|
@@ -108,8 +107,8 @@ class RequestRemovals(Streamable):
|
|
|
108
107
|
class RespondRemovals(Streamable):
|
|
109
108
|
height: uint32
|
|
110
109
|
header_hash: bytes32
|
|
111
|
-
coins: list[tuple[bytes32,
|
|
112
|
-
proofs:
|
|
110
|
+
coins: list[tuple[bytes32, Coin | None]]
|
|
111
|
+
proofs: list[tuple[bytes32, bytes]] | None
|
|
113
112
|
|
|
114
113
|
|
|
115
114
|
@streamable
|
|
@@ -123,8 +122,8 @@ class RejectRemovalsRequest(Streamable):
|
|
|
123
122
|
@dataclass(frozen=True)
|
|
124
123
|
class RequestAdditions(Streamable):
|
|
125
124
|
height: uint32
|
|
126
|
-
header_hash:
|
|
127
|
-
puzzle_hashes:
|
|
125
|
+
header_hash: bytes32 | None
|
|
126
|
+
puzzle_hashes: list[bytes32] | None
|
|
128
127
|
|
|
129
128
|
|
|
130
129
|
@streamable
|
|
@@ -133,7 +132,7 @@ class RespondAdditions(Streamable):
|
|
|
133
132
|
height: uint32
|
|
134
133
|
header_hash: bytes32
|
|
135
134
|
coins: list[tuple[bytes32, list[Coin]]]
|
|
136
|
-
proofs:
|
|
135
|
+
proofs: list[tuple[bytes32, bytes, bytes | None]] | None
|
|
137
136
|
|
|
138
137
|
|
|
139
138
|
@streamable
|
|
@@ -282,7 +281,7 @@ class RespondFeeEstimates(Streamable):
|
|
|
282
281
|
@streamable
|
|
283
282
|
@dataclass(frozen=True)
|
|
284
283
|
class RequestRemovePuzzleSubscriptions(Streamable):
|
|
285
|
-
puzzle_hashes:
|
|
284
|
+
puzzle_hashes: list[bytes32] | None
|
|
286
285
|
|
|
287
286
|
|
|
288
287
|
@streamable
|
|
@@ -294,7 +293,7 @@ class RespondRemovePuzzleSubscriptions(Streamable):
|
|
|
294
293
|
@streamable
|
|
295
294
|
@dataclass(frozen=True)
|
|
296
295
|
class RequestRemoveCoinSubscriptions(Streamable):
|
|
297
|
-
coin_ids:
|
|
296
|
+
coin_ids: list[bytes32] | None
|
|
298
297
|
|
|
299
298
|
|
|
300
299
|
@streamable
|
|
@@ -316,7 +315,7 @@ class CoinStateFilters(Streamable):
|
|
|
316
315
|
@dataclass(frozen=True)
|
|
317
316
|
class RequestPuzzleState(Streamable):
|
|
318
317
|
puzzle_hashes: list[bytes32]
|
|
319
|
-
previous_height:
|
|
318
|
+
previous_height: uint32 | None
|
|
320
319
|
header_hash: bytes32
|
|
321
320
|
filters: CoinStateFilters
|
|
322
321
|
subscribe_when_finished: bool
|
|
@@ -342,7 +341,7 @@ class RejectPuzzleState(Streamable):
|
|
|
342
341
|
@dataclass(frozen=True)
|
|
343
342
|
class RequestCoinState(Streamable):
|
|
344
343
|
coin_ids: list[bytes32]
|
|
345
|
-
previous_height:
|
|
344
|
+
previous_height: uint32 | None
|
|
346
345
|
header_hash: bytes32
|
|
347
346
|
subscribe: bool
|
|
348
347
|
|
chia/rpc/rpc_client.py
CHANGED
|
@@ -7,7 +7,7 @@ from contextlib import asynccontextmanager
|
|
|
7
7
|
from dataclasses import dataclass
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
from ssl import SSLContext
|
|
10
|
-
from typing import Any
|
|
10
|
+
from typing import Any
|
|
11
11
|
|
|
12
12
|
import aiohttp
|
|
13
13
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -42,23 +42,23 @@ class RpcClient:
|
|
|
42
42
|
|
|
43
43
|
url: str
|
|
44
44
|
session: aiohttp.ClientSession
|
|
45
|
-
ssl_context:
|
|
45
|
+
ssl_context: SSLContext | None
|
|
46
46
|
hostname: str
|
|
47
47
|
port: uint16
|
|
48
|
-
closing_task:
|
|
48
|
+
closing_task: asyncio.Task | None = None
|
|
49
49
|
|
|
50
50
|
@classmethod
|
|
51
51
|
async def create(
|
|
52
52
|
cls,
|
|
53
53
|
self_hostname: str,
|
|
54
54
|
port: uint16,
|
|
55
|
-
root_path:
|
|
56
|
-
net_config:
|
|
55
|
+
root_path: Path | None,
|
|
56
|
+
net_config: dict[str, Any] | None,
|
|
57
57
|
) -> Self:
|
|
58
58
|
if (root_path is not None) != (net_config is not None):
|
|
59
59
|
raise ValueError("Either both or neither of root_path and net_config must be provided")
|
|
60
60
|
|
|
61
|
-
ssl_context:
|
|
61
|
+
ssl_context: SSLContext | None
|
|
62
62
|
if root_path is None:
|
|
63
63
|
scheme = "http"
|
|
64
64
|
ssl_context = None
|
|
@@ -91,8 +91,8 @@ class RpcClient:
|
|
|
91
91
|
cls,
|
|
92
92
|
self_hostname: str,
|
|
93
93
|
port: uint16,
|
|
94
|
-
root_path:
|
|
95
|
-
net_config:
|
|
94
|
+
root_path: Path | None = None,
|
|
95
|
+
net_config: dict[str, Any] | None = None,
|
|
96
96
|
) -> AsyncIterator[Self]:
|
|
97
97
|
self = await cls.create(
|
|
98
98
|
self_hostname=self_hostname,
|
|
@@ -116,7 +116,7 @@ class RpcClient:
|
|
|
116
116
|
raise ResponseFailureError(res_json)
|
|
117
117
|
return res_json
|
|
118
118
|
|
|
119
|
-
async def get_connections(self, node_type:
|
|
119
|
+
async def get_connections(self, node_type: NodeType | None = None) -> list[dict]:
|
|
120
120
|
request = {}
|
|
121
121
|
if node_type is not None:
|
|
122
122
|
request["node_type"] = node_type.value
|