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
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
from chia_rs import Coin, ConsensusConstants, FullBlock, additions_and_removals, get_flags_for_height_and_constants
|
|
7
5
|
from chia_rs.sized_ints import uint64
|
|
@@ -102,8 +100,8 @@ def validate_chain(
|
|
|
102
100
|
normalized_to_identity_icc_eos: bool = False,
|
|
103
101
|
normalized_to_identity_cc_sp: bool = False,
|
|
104
102
|
normalized_to_identity_cc_ip: bool = False,
|
|
105
|
-
block_list_input:
|
|
106
|
-
time_per_block:
|
|
103
|
+
block_list_input: list[FullBlock] | None = None,
|
|
104
|
+
time_per_block: float | None = None,
|
|
107
105
|
dummy_block_references: bool = False,
|
|
108
106
|
include_transactions: bool = False,
|
|
109
107
|
) -> None:
|
|
@@ -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
|
import pytest
|
|
7
6
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -16,14 +15,14 @@ from chia.util.casts import int_to_bytes
|
|
|
16
15
|
@dataclass(frozen=True)
|
|
17
16
|
class BR:
|
|
18
17
|
prev_header_hash: bytes32
|
|
19
|
-
transactions_generator:
|
|
18
|
+
transactions_generator: SerializedProgram | None
|
|
20
19
|
transactions_generator_ref_list: list[uint32]
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
@dataclass(frozen=True)
|
|
24
23
|
class FB:
|
|
25
24
|
prev_header_hash: bytes32
|
|
26
|
-
transactions_generator:
|
|
25
|
+
transactions_generator: SerializedProgram | None
|
|
27
26
|
height: uint32
|
|
28
27
|
|
|
29
28
|
|
chia/_tests/clvm/coin_store.py
CHANGED
|
@@ -2,19 +2,16 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from collections import defaultdict
|
|
4
4
|
from collections.abc import Iterator
|
|
5
|
-
from dataclasses import dataclass
|
|
6
|
-
from typing import Optional
|
|
5
|
+
from dataclasses import dataclass
|
|
7
6
|
|
|
8
|
-
from chia_rs import ConsensusConstants, SpendBundle
|
|
7
|
+
from chia_rs import CoinRecord, ConsensusConstants, SpendBundle, check_time_locks
|
|
9
8
|
from chia_rs.sized_bytes import bytes32
|
|
10
9
|
from chia_rs.sized_ints import uint32, uint64
|
|
11
10
|
|
|
12
11
|
from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
|
|
13
|
-
from chia.consensus.check_time_locks import check_time_locks
|
|
14
12
|
from chia.consensus.cost_calculator import NPCResult
|
|
15
13
|
from chia.full_node.bundle_tools import simple_solution_generator
|
|
16
14
|
from chia.types.blockchain_format.coin import Coin
|
|
17
|
-
from chia.types.coin_record import CoinRecord
|
|
18
15
|
from chia.util.errors import Err
|
|
19
16
|
|
|
20
17
|
MAX_COST = 11000000000
|
|
@@ -115,7 +112,7 @@ class CoinStore:
|
|
|
115
112
|
for spent_coin in removals:
|
|
116
113
|
coin_name = spent_coin.name()
|
|
117
114
|
coin_record = self._db[coin_name]
|
|
118
|
-
self._db[coin_name] = replace(
|
|
115
|
+
self._db[coin_name] = coin_record.replace(spent_block_index=now.height)
|
|
119
116
|
return additions, spend_bundle.coin_spends
|
|
120
117
|
|
|
121
118
|
def coins_for_puzzle_hash(self, puzzle_hash: bytes32) -> Iterator[Coin]:
|
|
@@ -145,5 +142,5 @@ class CoinStore:
|
|
|
145
142
|
)
|
|
146
143
|
self._ph_index[coin.puzzle_hash].append(name)
|
|
147
144
|
|
|
148
|
-
def coin_record(self, coin_id: bytes32) ->
|
|
145
|
+
def coin_record(self, coin_id: bytes32) -> CoinRecord | None:
|
|
149
146
|
return self._db.get(coin_id)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from chialisp import start_clvm_program
|
|
6
6
|
|
|
7
7
|
factorial = (
|
|
8
8
|
"ff02ffff01ff02ff02ffff04ff02ffff04ff05ff80808080ffff04ffff01ff02"
|
|
@@ -17,8 +17,8 @@ factorial_sym = {factorial_function_hash: "factorial"}
|
|
|
17
17
|
def test_simple_program_run() -> None:
|
|
18
18
|
p = start_clvm_program(factorial, "ff0580", factorial_sym)
|
|
19
19
|
|
|
20
|
-
last:
|
|
21
|
-
location:
|
|
20
|
+
last: Any | None = None
|
|
21
|
+
location: Any | None = None
|
|
22
22
|
|
|
23
23
|
while not p.is_ended():
|
|
24
24
|
step_result = p.step()
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
+
from collections.abc import Callable
|
|
4
5
|
from dataclasses import dataclass
|
|
5
|
-
from typing import
|
|
6
|
+
from typing import SupportsBytes
|
|
6
7
|
|
|
7
8
|
import pytest
|
|
8
9
|
from chia_rs import CoinSpend, G1Element, G2Element, SpendBundle
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
6
|
|
|
@@ -35,7 +35,7 @@ def test_puzzle_info() -> None:
|
|
|
35
35
|
assert solver == Solver(capitalize_bytes)
|
|
36
36
|
assert puzzle_info == PuzzleInfo(capitalize_bytes)
|
|
37
37
|
|
|
38
|
-
obj:
|
|
38
|
+
obj: PuzzleInfo | Solver
|
|
39
39
|
for obj in (puzzle_info, solver):
|
|
40
40
|
assert obj["string"] == "hello"
|
|
41
41
|
assert obj["bytes"] == bytes.fromhex("cafef00d")
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
from chia_rs import AugSchemeMPL, CoinSpend, G1Element, G2Element, PrivateKey, SpendBundle
|
|
7
5
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -54,9 +52,9 @@ async def make_and_spend_bundle(
|
|
|
54
52
|
coin: Coin,
|
|
55
53
|
delegated_puzzle: Program,
|
|
56
54
|
coinsols: list[CoinSpend],
|
|
57
|
-
ex_error:
|
|
55
|
+
ex_error: Err | None = None,
|
|
58
56
|
fail_msg: str = "",
|
|
59
|
-
cost_logger:
|
|
57
|
+
cost_logger: CostLogger | None = None,
|
|
60
58
|
cost_log_msg: str = "",
|
|
61
59
|
):
|
|
62
60
|
signature: G2Element = sign_delegated_puz(delegated_puzzle, coin)
|
|
@@ -73,8 +73,8 @@ async def test_all_endpoints():
|
|
|
73
73
|
assert len(coin_records) == 2
|
|
74
74
|
coin_records = await sim_client.get_coin_records_by_hint(non_existent_hint)
|
|
75
75
|
assert len(coin_records) == 0
|
|
76
|
-
coin_records = await sim_client.get_coin_records_by_puzzle_hash(acs.get_tree_hash())
|
|
77
|
-
next_coin = coin_records
|
|
76
|
+
coin_records = await sim_client.get_coin_records_by_puzzle_hash(acs.get_tree_hash(), include_spent_coins=False)
|
|
77
|
+
next_coin = next(cr.coin for cr in coin_records if cr.coin.amount >= 2)
|
|
78
78
|
height = sim.get_height()
|
|
79
79
|
acs_hint_next_coin = make_spend(
|
|
80
80
|
next_coin,
|
|
@@ -5,7 +5,7 @@ from collections.abc import AsyncIterator, Iterable
|
|
|
5
5
|
from contextlib import asynccontextmanager
|
|
6
6
|
from dataclasses import dataclass, field
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Any,
|
|
8
|
+
from typing import Any, cast
|
|
9
9
|
|
|
10
10
|
from chia_rs import BlockRecord, Coin, G1Element, G2Element
|
|
11
11
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -25,7 +25,7 @@ from chia.simulator.simulator_full_node_rpc_client import SimulatorFullNodeRpcCl
|
|
|
25
25
|
from chia.types.signing_mode import SigningMode
|
|
26
26
|
from chia.util.bech32m import encode_puzzle_hash
|
|
27
27
|
from chia.util.config import load_config
|
|
28
|
-
from chia.wallet.conditions import ConditionValidTimes
|
|
28
|
+
from chia.wallet.conditions import Condition, ConditionValidTimes
|
|
29
29
|
from chia.wallet.nft_wallet.nft_info import NFTInfo
|
|
30
30
|
from chia.wallet.nft_wallet.nft_wallet import NFTWallet
|
|
31
31
|
from chia.wallet.transaction_record import TransactionRecord
|
|
@@ -37,6 +37,9 @@ from chia.wallet.wallet_request_types import (
|
|
|
37
37
|
CATAssetIDToNameResponse,
|
|
38
38
|
CATGetName,
|
|
39
39
|
CATGetNameResponse,
|
|
40
|
+
CreateNewWallet,
|
|
41
|
+
CreateNewWalletResponse,
|
|
42
|
+
CreateNewWalletType,
|
|
40
43
|
GetSyncStatusResponse,
|
|
41
44
|
GetTransaction,
|
|
42
45
|
GetTransactionResponse,
|
|
@@ -46,7 +49,6 @@ from chia.wallet.wallet_request_types import (
|
|
|
46
49
|
NFTCalculateRoyaltiesResponse,
|
|
47
50
|
NFTGetInfo,
|
|
48
51
|
NFTGetInfoResponse,
|
|
49
|
-
SendTransactionMultiResponse,
|
|
50
52
|
SignMessageByAddress,
|
|
51
53
|
SignMessageByAddressResponse,
|
|
52
54
|
SignMessageByID,
|
|
@@ -59,15 +61,15 @@ from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
|
59
61
|
# Any functions that are the same for every command being tested should be below.
|
|
60
62
|
# Functions that are specific to a command should be in the test file for that command.
|
|
61
63
|
|
|
62
|
-
logType = dict[str,
|
|
64
|
+
logType = dict[str, list[tuple[Any, ...]] | None]
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
@dataclass
|
|
66
68
|
class TestRpcClient:
|
|
67
69
|
client_type: type[RpcClient]
|
|
68
|
-
rpc_port:
|
|
69
|
-
root_path:
|
|
70
|
-
config:
|
|
70
|
+
rpc_port: uint16 | None = None
|
|
71
|
+
root_path: Path | None = None
|
|
72
|
+
config: dict[str, Any] | None = None
|
|
71
73
|
create_called: bool = field(init=False, default=False)
|
|
72
74
|
rpc_log: dict[str, list[tuple[Any, ...]]] = field(init=False, default_factory=dict)
|
|
73
75
|
|
|
@@ -235,42 +237,22 @@ class TestWalletRpcClient(TestRpcClient):
|
|
|
235
237
|
)
|
|
236
238
|
)
|
|
237
239
|
|
|
238
|
-
async def
|
|
240
|
+
async def create_new_wallet(
|
|
239
241
|
self,
|
|
240
|
-
|
|
241
|
-
additions: list[dict[str, object]],
|
|
242
|
+
request: CreateNewWallet,
|
|
242
243
|
tx_config: TXConfig,
|
|
243
|
-
|
|
244
|
-
fee: uint64 = uint64(0),
|
|
245
|
-
push: bool = True,
|
|
244
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
246
245
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
247
|
-
) ->
|
|
248
|
-
self.add_to_log("
|
|
249
|
-
|
|
250
|
-
return SendTransactionMultiResponse(
|
|
246
|
+
) -> CreateNewWalletResponse:
|
|
247
|
+
self.add_to_log("create_new_wallet", (request, tx_config, extra_conditions, timelock_info))
|
|
248
|
+
return CreateNewWalletResponse(
|
|
251
249
|
[STD_UTX],
|
|
252
250
|
[STD_TX],
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
amount=uint64(12345678),
|
|
259
|
-
fee_amount=uint64(1234567),
|
|
260
|
-
confirmed=False,
|
|
261
|
-
sent=uint32(0),
|
|
262
|
-
spend_bundle=WalletSpendBundle([], G2Element()),
|
|
263
|
-
additions=[Coin(bytes32([1] * 32), bytes32([2] * 32), uint64(12345678))],
|
|
264
|
-
removals=[Coin(bytes32([2] * 32), bytes32([4] * 32), uint64(12345678))],
|
|
265
|
-
wallet_id=uint32(1),
|
|
266
|
-
sent_to=[("aaaaa", uint8(1), None)],
|
|
267
|
-
trade_id=None,
|
|
268
|
-
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
269
|
-
name=name,
|
|
270
|
-
memos={bytes32([3] * 32): [bytes([4] * 32)]},
|
|
271
|
-
valid_times=ConditionValidTimes(),
|
|
272
|
-
),
|
|
273
|
-
name,
|
|
251
|
+
type=(
|
|
252
|
+
WalletType.NFT if request.wallet_type == CreateNewWalletType.NFT_WALLET else WalletType.DECENTRALIZED_ID
|
|
253
|
+
).name,
|
|
254
|
+
wallet_id=uint32(4 if request.wallet_type == CreateNewWalletType.NFT_WALLET else 3),
|
|
255
|
+
my_did="did:chia:1qgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpq4msw0c",
|
|
274
256
|
)
|
|
275
257
|
|
|
276
258
|
|
|
@@ -280,8 +262,8 @@ class TestFullNodeRpcClient(TestRpcClient):
|
|
|
280
262
|
|
|
281
263
|
async def get_fee_estimate(
|
|
282
264
|
self,
|
|
283
|
-
target_times:
|
|
284
|
-
cost:
|
|
265
|
+
target_times: list[int] | None,
|
|
266
|
+
cost: int | None,
|
|
285
267
|
) -> dict[str, Any]:
|
|
286
268
|
return {}
|
|
287
269
|
|
|
@@ -313,11 +295,11 @@ class TestFullNodeRpcClient(TestRpcClient):
|
|
|
313
295
|
self.add_to_log("get_blockchain_state", ())
|
|
314
296
|
return response
|
|
315
297
|
|
|
316
|
-
async def get_block_record_by_height(self, height: int) ->
|
|
298
|
+
async def get_block_record_by_height(self, height: int) -> BlockRecord | None:
|
|
317
299
|
self.add_to_log("get_block_record_by_height", (height,))
|
|
318
300
|
return cast(BlockRecord, create_test_block_record(height=uint32(height)))
|
|
319
301
|
|
|
320
|
-
async def get_block_record(self, header_hash: bytes32) ->
|
|
302
|
+
async def get_block_record(self, header_hash: bytes32) -> BlockRecord | None:
|
|
321
303
|
self.add_to_log("get_block_record", (header_hash,))
|
|
322
304
|
return cast(BlockRecord, create_test_block_record(header_hash=header_hash))
|
|
323
305
|
|
|
@@ -374,7 +356,7 @@ def create_service_and_wallet_client_generators(test_rpc_clients: TestRpcClients
|
|
|
374
356
|
async def test_get_any_service_client(
|
|
375
357
|
client_type: type[_T_RpcClient],
|
|
376
358
|
root_path: Path,
|
|
377
|
-
rpc_port:
|
|
359
|
+
rpc_port: int | None = None,
|
|
378
360
|
consume_errors: bool = True,
|
|
379
361
|
use_ssl: bool = True,
|
|
380
362
|
) -> AsyncIterator[tuple[_T_RpcClient, dict[str, Any]]]:
|
|
@@ -402,8 +384,8 @@ def create_service_and_wallet_client_generators(test_rpc_clients: TestRpcClients
|
|
|
402
384
|
@asynccontextmanager
|
|
403
385
|
async def test_get_wallet_client(
|
|
404
386
|
root_path: Path = default_root,
|
|
405
|
-
wallet_rpc_port:
|
|
406
|
-
fingerprint:
|
|
387
|
+
wallet_rpc_port: int | None = None,
|
|
388
|
+
fingerprint: int | None = None,
|
|
407
389
|
) -> AsyncIterator[tuple[WalletRpcClient, int, dict[str, Any]]]:
|
|
408
390
|
async with test_get_any_service_client(WalletRpcClient, root_path, wallet_rpc_port) as (wallet_client, config):
|
|
409
391
|
wallet_client.fingerprint = fingerprint # type: ignore
|
|
@@ -5,7 +5,7 @@ import textwrap
|
|
|
5
5
|
from collections.abc import Sequence
|
|
6
6
|
from dataclasses import asdict
|
|
7
7
|
from decimal import Decimal
|
|
8
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
9
9
|
|
|
10
10
|
import click
|
|
11
11
|
import pytest
|
|
@@ -32,7 +32,7 @@ from chia.wallet.transaction_record import TransactionRecord
|
|
|
32
32
|
from chia.wallet.util.tx_config import CoinSelectionConfig, TXConfig
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
def check_click_parsing(cmd: ChiaCommand, *args: str, context:
|
|
35
|
+
def check_click_parsing(cmd: ChiaCommand, *args: str, context: ChiaCliContext | None = None) -> None:
|
|
36
36
|
@click.group()
|
|
37
37
|
def _cmd() -> None:
|
|
38
38
|
pass
|
|
@@ -232,7 +232,7 @@ def test_typing() -> None:
|
|
|
232
232
|
# Test optional
|
|
233
233
|
@chia_command(group=cmd, name="temp_cmd_optional", short_help="blah", help="n/a")
|
|
234
234
|
class TempCMDOptional:
|
|
235
|
-
optional:
|
|
235
|
+
optional: int | None = option("--optional", required=False)
|
|
236
236
|
|
|
237
237
|
def run(self) -> None: ...
|
|
238
238
|
|
|
@@ -244,7 +244,7 @@ def test_typing() -> None:
|
|
|
244
244
|
|
|
245
245
|
@chia_command(group=cmd, name="temp_cmd_optional_bad", short_help="blah", help="n/a")
|
|
246
246
|
class TempCMDOptionalBad2:
|
|
247
|
-
optional:
|
|
247
|
+
optional: int | None = option("--optional", required=True)
|
|
248
248
|
|
|
249
249
|
def run(self) -> None: ...
|
|
250
250
|
|
|
@@ -252,13 +252,13 @@ def test_typing() -> None:
|
|
|
252
252
|
|
|
253
253
|
@chia_command(group=cmd, name="temp_cmd_optional_bad", short_help="blah", help="n/a")
|
|
254
254
|
class TempCMDOptionalBad3:
|
|
255
|
-
optional:
|
|
255
|
+
optional: int | None = option("--optional", default="string", required=False)
|
|
256
256
|
|
|
257
257
|
def run(self) -> None: ...
|
|
258
258
|
|
|
259
259
|
@chia_command(group=cmd, name="temp_cmd_optional_fine", short_help="blah", help="n/a")
|
|
260
260
|
class TempCMDOptionalBad4:
|
|
261
|
-
optional:
|
|
261
|
+
optional: int | None = option("--optional", default=None, required=False)
|
|
262
262
|
|
|
263
263
|
def run(self) -> None: ...
|
|
264
264
|
|
chia/_tests/cmds/test_daemon.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import sys
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
from _pytest.capture import CaptureFixture
|
|
@@ -33,10 +33,10 @@ async def test_daemon(
|
|
|
33
33
|
|
|
34
34
|
class DummyKeychain:
|
|
35
35
|
@staticmethod
|
|
36
|
-
def get_cached_master_passphrase() ->
|
|
36
|
+
def get_cached_master_passphrase() -> str | None:
|
|
37
37
|
return None
|
|
38
38
|
|
|
39
|
-
def get_current_passphrase() ->
|
|
39
|
+
def get_current_passphrase() -> str | None:
|
|
40
40
|
return "a-passphrase"
|
|
41
41
|
|
|
42
42
|
mocker.patch("chia.cmds.start_funcs.connect_to_daemon_and_validate", side_effect=connect_to_daemon_and_validate)
|
chia/_tests/cmds/test_show.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
|
|
7
7
|
from chia_rs import FoliageTransactionBlock, FullBlock
|
|
8
8
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -16,7 +16,7 @@ from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
|
16
16
|
|
|
17
17
|
@dataclass
|
|
18
18
|
class ShowFullNodeRpcClient(TestFullNodeRpcClient):
|
|
19
|
-
async def get_fee_estimate(self, target_times:
|
|
19
|
+
async def get_fee_estimate(self, target_times: list[int] | None, cost: int | None) -> dict[str, Any]:
|
|
20
20
|
self.add_to_log("get_fee_estimate", (target_times, cost))
|
|
21
21
|
response: dict[str, Any] = {
|
|
22
22
|
"current_fee_rate": 0,
|
|
@@ -38,7 +38,7 @@ class ShowFullNodeRpcClient(TestFullNodeRpcClient):
|
|
|
38
38
|
}
|
|
39
39
|
return response
|
|
40
40
|
|
|
41
|
-
async def get_block(self, header_hash: bytes32) ->
|
|
41
|
+
async def get_block(self, header_hash: bytes32) -> FullBlock | None:
|
|
42
42
|
# we return a block with the height matching the header hash
|
|
43
43
|
self.add_to_log("get_block", (header_hash,))
|
|
44
44
|
height = hash_to_height(header_hash)
|
|
@@ -106,7 +106,7 @@ def test_chia_show(capsys: object, get_test_cli_clients: tuple[TestRpcClients, P
|
|
|
106
106
|
"Is a Transaction Block?True",
|
|
107
107
|
]
|
|
108
108
|
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
|
|
109
|
-
expected_calls: dict[str,
|
|
109
|
+
expected_calls: dict[str, list[tuple[Any, ...]] | None] = { # name of rpc: (args)
|
|
110
110
|
"get_blockchain_state": None,
|
|
111
111
|
"get_block_record": [(height_hash(height),) for height in [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 10]],
|
|
112
112
|
"get_block_record_by_height": [(10,)],
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from collections.abc import Sequence
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
6
|
import click
|
|
8
7
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -102,7 +101,7 @@ def test_tx_config_args() -> None:
|
|
|
102
101
|
max_coin_amount: CliAmount,
|
|
103
102
|
coins_to_exclude: Sequence[bytes32],
|
|
104
103
|
amounts_to_exclude: Sequence[CliAmount],
|
|
105
|
-
reuse:
|
|
104
|
+
reuse: bool | None,
|
|
106
105
|
) -> None:
|
|
107
106
|
print(
|
|
108
107
|
CMDTXConfigLoader(
|
|
@@ -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.sized_bytes import bytes32
|
|
7
6
|
from chia_rs.sized_ints import uint8, uint32, uint64
|
|
@@ -17,10 +16,10 @@ class TestBlockRecord:
|
|
|
17
16
|
|
|
18
17
|
header_hash: bytes32
|
|
19
18
|
height: uint32
|
|
20
|
-
timestamp:
|
|
19
|
+
timestamp: uint64 | None
|
|
21
20
|
prev_transaction_block_height: uint32
|
|
22
|
-
prev_transaction_block_hash:
|
|
23
|
-
prev_hash:
|
|
21
|
+
prev_transaction_block_hash: bytes32 | None
|
|
22
|
+
prev_hash: bytes32 | None
|
|
24
23
|
weight: uint64 = uint64(10000)
|
|
25
24
|
fees: uint64 = uint64(5000)
|
|
26
25
|
farmer_puzzle_hash: bytes32 = bytes32([1] * 32)
|
|
@@ -43,7 +42,7 @@ def hash_to_height(int_bytes: bytes32) -> int:
|
|
|
43
42
|
|
|
44
43
|
|
|
45
44
|
def create_test_block_record(
|
|
46
|
-
*, height: uint32 = uint32(11), timestamp: uint64 = uint64(10040), header_hash:
|
|
45
|
+
*, height: uint32 = uint32(11), timestamp: uint64 = uint64(10040), header_hash: bytes32 | None = None
|
|
47
46
|
) -> TestBlockRecord:
|
|
48
47
|
if header_hash is None:
|
|
49
48
|
header_hash = height_hash(height)
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
|
-
from typing import Optional, Union
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
from chia_rs import G2Element
|
|
@@ -10,7 +9,7 @@ from chia_rs.sized_ints import uint16, uint32, uint64
|
|
|
10
9
|
|
|
11
10
|
from chia._tests.cmds.cmd_test_utils import TestRpcClients, TestWalletRpcClient, logType, run_cli_command_and_assert
|
|
12
11
|
from chia._tests.cmds.wallet.test_consts import FINGERPRINT_ARG, STD_TX, STD_UTX, get_bytes32
|
|
13
|
-
from chia.types.blockchain_format.program import
|
|
12
|
+
from chia.types.blockchain_format.program import Program
|
|
14
13
|
from chia.types.signing_mode import SigningMode
|
|
15
14
|
from chia.util.bech32m import encode_puzzle_hash
|
|
16
15
|
from chia.wallet.conditions import Condition, ConditionValidTimes, CreateCoinAnnouncement, CreatePuzzleAnnouncement
|
|
@@ -18,6 +17,8 @@ from chia.wallet.did_wallet.did_info import did_recovery_is_nil
|
|
|
18
17
|
from chia.wallet.util.curry_and_treehash import NIL_TREEHASH
|
|
19
18
|
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
|
|
20
19
|
from chia.wallet.wallet_request_types import (
|
|
20
|
+
CreateNewWallet,
|
|
21
|
+
CreateNewWalletType,
|
|
21
22
|
DIDFindLostDID,
|
|
22
23
|
DIDFindLostDIDResponse,
|
|
23
24
|
DIDGetDID,
|
|
@@ -30,6 +31,7 @@ from chia.wallet.wallet_request_types import (
|
|
|
30
31
|
DIDSetWalletNameResponse,
|
|
31
32
|
DIDTransferDID,
|
|
32
33
|
DIDTransferDIDResponse,
|
|
34
|
+
DIDType,
|
|
33
35
|
DIDUpdateMetadata,
|
|
34
36
|
DIDUpdateMetadataResponse,
|
|
35
37
|
)
|
|
@@ -42,7 +44,7 @@ test_condition_valid_times: ConditionValidTimes = ConditionValidTimes(min_time=u
|
|
|
42
44
|
argnames=["program", "result"],
|
|
43
45
|
argvalues=[
|
|
44
46
|
(Program.to(NIL_TREEHASH), True),
|
|
45
|
-
(NIL, True),
|
|
47
|
+
(Program.NIL, True),
|
|
46
48
|
(Program.to(bytes32([1] * 32)), False),
|
|
47
49
|
],
|
|
48
50
|
)
|
|
@@ -55,27 +57,7 @@ def test_did_recovery_is_nil(program: Program, result: bool) -> None:
|
|
|
55
57
|
def test_did_create(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
56
58
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
class DidCreateRpcClient(TestWalletRpcClient):
|
|
60
|
-
async def create_new_did_wallet(
|
|
61
|
-
self,
|
|
62
|
-
amount: int,
|
|
63
|
-
tx_config: TXConfig,
|
|
64
|
-
fee: int = 0,
|
|
65
|
-
name: Optional[str] = "DID Wallet",
|
|
66
|
-
backup_ids: Optional[list[str]] = None,
|
|
67
|
-
required_num: int = 0,
|
|
68
|
-
push: bool = True,
|
|
69
|
-
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
70
|
-
) -> dict[str, Union[str, int]]:
|
|
71
|
-
if backup_ids is None:
|
|
72
|
-
backup_ids = []
|
|
73
|
-
self.add_to_log(
|
|
74
|
-
"create_new_did_wallet", (amount, tx_config, fee, name, backup_ids, required_num, push, timelock_info)
|
|
75
|
-
)
|
|
76
|
-
return {"wallet_id": 3, "my_did": "did:chia:testdid123456"}
|
|
77
|
-
|
|
78
|
-
inst_rpc_client = DidCreateRpcClient()
|
|
60
|
+
inst_rpc_client = TestWalletRpcClient()
|
|
79
61
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
80
62
|
command_args = [
|
|
81
63
|
"wallet",
|
|
@@ -93,12 +75,27 @@ def test_did_create(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
|
|
|
93
75
|
# these are various things that should be in the output
|
|
94
76
|
assert_list = [
|
|
95
77
|
"Successfully created a DID wallet with name test and id 3 on key 123456",
|
|
96
|
-
|
|
78
|
+
(
|
|
79
|
+
"Successfully created a DID did:chia:1qgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpq4msw0c"
|
|
80
|
+
" in the newly created DID wallet"
|
|
81
|
+
),
|
|
97
82
|
]
|
|
98
83
|
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
|
|
99
84
|
expected_calls: logType = {
|
|
100
|
-
"
|
|
101
|
-
(
|
|
85
|
+
"create_new_wallet": [
|
|
86
|
+
(
|
|
87
|
+
CreateNewWallet(
|
|
88
|
+
wallet_type=CreateNewWalletType.DID_WALLET,
|
|
89
|
+
did_type=DIDType.NEW,
|
|
90
|
+
amount=uint64(3),
|
|
91
|
+
wallet_name="test",
|
|
92
|
+
fee=uint64(100_000_000_000),
|
|
93
|
+
push=True,
|
|
94
|
+
),
|
|
95
|
+
DEFAULT_TX_CONFIG,
|
|
96
|
+
tuple(),
|
|
97
|
+
test_condition_valid_times,
|
|
98
|
+
)
|
|
102
99
|
],
|
|
103
100
|
}
|
|
104
101
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
|
-
from typing import Any, Optional
|
|
5
4
|
|
|
6
5
|
from chia_rs import G2Element
|
|
7
6
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -15,6 +14,8 @@ from chia.wallet.conditions import Condition, ConditionValidTimes
|
|
|
15
14
|
from chia.wallet.nft_wallet.nft_info import NFTInfo
|
|
16
15
|
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
|
|
17
16
|
from chia.wallet.wallet_request_types import (
|
|
17
|
+
CreateNewWallet,
|
|
18
|
+
CreateNewWalletType,
|
|
18
19
|
NFTAddURI,
|
|
19
20
|
NFTAddURIResponse,
|
|
20
21
|
NFTGetNFTs,
|
|
@@ -38,21 +39,22 @@ test_condition_valid_times: ConditionValidTimes = ConditionValidTimes(min_time=u
|
|
|
38
39
|
def test_nft_create(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
39
40
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
async def create_new_nft_wallet(self, did_id: str, name: Optional[str] = None) -> dict[str, Any]:
|
|
44
|
-
self.add_to_log("create_new_nft_wallet", (did_id, name))
|
|
45
|
-
return {"wallet_id": 4}
|
|
46
|
-
|
|
47
|
-
inst_rpc_client = NFTCreateRpcClient()
|
|
48
|
-
did_id = encode_puzzle_hash(get_bytes32(2), "did:chia:")
|
|
42
|
+
inst_rpc_client = TestWalletRpcClient()
|
|
43
|
+
did_id = "did:chia:1qgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpq4msw0c"
|
|
49
44
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
50
45
|
command_args = ["wallet", "nft", "create", FINGERPRINT_ARG, "-ntest", "--did-id", did_id]
|
|
51
46
|
# these are various things that should be in the output
|
|
52
47
|
assert_list = [f"Successfully created an NFT wallet with id 4 on key {FINGERPRINT}"]
|
|
53
48
|
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
|
|
54
49
|
expected_calls: logType = {
|
|
55
|
-
"
|
|
50
|
+
"create_new_wallet": [
|
|
51
|
+
(
|
|
52
|
+
CreateNewWallet(wallet_type=CreateNewWalletType.NFT_WALLET, name="test", did_id=did_id, push=True),
|
|
53
|
+
DEFAULT_TX_CONFIG,
|
|
54
|
+
tuple(),
|
|
55
|
+
ConditionValidTimes(),
|
|
56
|
+
)
|
|
57
|
+
],
|
|
56
58
|
}
|
|
57
59
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
58
60
|
|