chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.6.0rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/__init__.py +8 -4
- chia/_tests/blockchain/blockchain_test_utils.py +6 -8
- chia/_tests/blockchain/test_augmented_chain.py +4 -4
- chia/_tests/blockchain/test_blockchain.py +165 -190
- chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
- chia/_tests/blockchain/test_build_chains.py +2 -4
- chia/_tests/blockchain/test_get_block_generator.py +2 -3
- chia/_tests/clvm/coin_store.py +4 -7
- chia/_tests/clvm/test_clvm_step.py +4 -4
- chia/_tests/clvm/test_puzzle_compression.py +2 -1
- chia/_tests/clvm/test_puzzle_drivers.py +2 -2
- chia/_tests/clvm/test_singletons.py +2 -4
- chia/_tests/clvm/test_spend_sim.py +2 -2
- chia/_tests/cmds/cmd_test_utils.py +27 -45
- chia/_tests/cmds/test_cmd_framework.py +6 -6
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_show.py +4 -4
- chia/_tests/cmds/test_tx_config_args.py +1 -2
- chia/_tests/cmds/testing_classes.py +4 -5
- chia/_tests/cmds/wallet/test_did.py +24 -27
- chia/_tests/cmds/wallet/test_nft.py +12 -10
- chia/_tests/cmds/wallet/test_vcs.py +11 -12
- chia/_tests/cmds/wallet/test_wallet.py +134 -89
- chia/_tests/conftest.py +66 -31
- chia/_tests/connection_utils.py +2 -2
- chia/_tests/core/cmds/test_beta.py +4 -4
- chia/_tests/core/cmds/test_keys.py +2 -3
- chia/_tests/core/cmds/test_wallet.py +15 -15
- chia/_tests/core/consensus/test_pot_iterations.py +19 -73
- chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
- chia/_tests/core/daemon/test_daemon.py +11 -11
- chia/_tests/core/data_layer/conftest.py +2 -2
- chia/_tests/core/data_layer/test_data_rpc.py +28 -14
- chia/_tests/core/data_layer/test_data_store.py +10 -10
- chia/_tests/core/data_layer/util.py +11 -11
- chia/_tests/core/farmer/test_farmer_api.py +2 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
- chia/_tests/core/full_node/stores/test_block_store.py +5 -4
- chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
- chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +3 -4
- chia/_tests/core/full_node/test_conditions.py +21 -23
- chia/_tests/core/full_node/test_full_node.py +273 -70
- chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
- chia/_tests/core/full_node/test_hint_management.py +2 -4
- chia/_tests/core/full_node/test_performance.py +0 -1
- chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
- chia/_tests/core/full_node/test_transactions.py +1 -2
- chia/_tests/core/full_node/test_tx_processing_queue.py +198 -30
- chia/_tests/core/mempool/test_mempool.py +54 -50
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
- chia/_tests/core/mempool/test_mempool_manager.py +988 -854
- chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
- chia/_tests/core/server/serve.py +7 -7
- chia/_tests/core/server/test_dos.py +1 -2
- chia/_tests/core/server/test_event_loop.py +12 -4
- chia/_tests/core/server/test_loop.py +7 -8
- chia/_tests/core/server/test_rate_limits.py +9 -8
- chia/_tests/core/server/test_server.py +61 -1
- chia/_tests/core/services/test_services.py +2 -2
- chia/_tests/core/ssl/test_ssl.py +2 -2
- chia/_tests/core/test_cost_calculation.py +2 -6
- chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
- chia/_tests/core/test_filter.py +0 -1
- chia/_tests/core/test_full_node_rpc.py +2 -2
- chia/_tests/core/test_merkle_set.py +1 -2
- chia/_tests/core/test_seeder.py +4 -4
- chia/_tests/core/util/test_config.py +4 -4
- chia/_tests/core/util/test_jsonify.py +2 -2
- chia/_tests/core/util/test_keychain.py +3 -3
- chia/_tests/core/util/test_lockfile.py +2 -1
- chia/_tests/core/util/test_log_exceptions.py +1 -2
- chia/_tests/core/util/test_streamable.py +17 -17
- chia/_tests/db/test_db_wrapper.py +3 -2
- chia/_tests/environments/wallet.py +14 -14
- chia/_tests/ether.py +4 -3
- chia/_tests/farmer_harvester/test_farmer.py +41 -24
- chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
- chia/_tests/harvester/test_harvester_api.py +11 -4
- chia/_tests/plot_sync/test_plot_sync.py +13 -11
- chia/_tests/plot_sync/test_receiver.py +11 -10
- chia/_tests/plot_sync/test_sync_simulated.py +2 -2
- chia/_tests/plot_sync/util.py +1 -2
- chia/_tests/plotting/test_plot_manager.py +7 -6
- chia/_tests/plotting/test_prover.py +30 -38
- chia/_tests/pools/test_pool_cmdline.py +4 -6
- chia/_tests/pools/test_pool_rpc.py +203 -61
- chia/_tests/pools/test_pool_wallet.py +3 -3
- chia/_tests/pools/test_wallet_pool_store.py +1 -4
- chia/_tests/process_junit.py +2 -2
- chia/_tests/rpc/test_rpc_client.py +4 -4
- chia/_tests/rpc/test_rpc_server.py +3 -3
- chia/_tests/simulation/test_simulation.py +12 -25
- chia/_tests/solver/test_solver_service.py +13 -4
- chia/_tests/testconfig.py +2 -2
- chia/_tests/timelord/test_new_peak.py +22 -11
- chia/_tests/tools/test_run_block.py +0 -2
- chia/_tests/tools/test_virtual_project.py +2 -1
- chia/_tests/util/benchmarks.py +1 -0
- chia/_tests/util/blockchain.py +38 -36
- chia/_tests/util/blockchain_mock.py +11 -11
- chia/_tests/util/build_network_protocol_files.py +2 -1
- chia/_tests/util/coin_store.py +2 -1
- chia/_tests/util/config.py +1 -1
- chia/_tests/util/db_connection.py +2 -3
- chia/_tests/util/full_sync.py +9 -11
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/get_name_puzzle_conditions.py +2 -0
- chia/_tests/util/misc.py +24 -24
- chia/_tests/util/network_protocol_data.py +20 -3
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +292 -3
- chia/_tests/util/setup_nodes.py +62 -47
- chia/_tests/util/spend_sim.py +57 -57
- chia/_tests/util/test_async_pool.py +2 -3
- chia/_tests/util/test_chia_version.py +1 -3
- chia/_tests/util/test_config.py +3 -3
- chia/_tests/util/test_full_block_utils.py +6 -3
- chia/_tests/util/test_limited_semaphore.py +1 -2
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_network.py +1 -2
- chia/_tests/util/test_priority_mutex.py +3 -3
- chia/_tests/util/test_recursive_replace.py +5 -6
- chia/_tests/util/test_replace_str_to_bytes.py +9 -10
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/time_out_assert.py +2 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
- chia/_tests/wallet/conftest.py +6 -6
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
- chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
- chia/_tests/wallet/did_wallet/test_did.py +16 -6
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
- chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
- chia/_tests/wallet/sync/test_wallet_sync.py +63 -60
- chia/_tests/wallet/test_clvm_streamable.py +2 -3
- chia/_tests/wallet/test_coin_management.py +2 -2
- chia/_tests/wallet/test_conditions.py +45 -51
- chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
- chia/_tests/wallet/test_new_wallet_protocol.py +17 -17
- chia/_tests/wallet/test_notifications.py +14 -14
- chia/_tests/wallet/test_signer_protocol.py +5 -5
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
- chia/_tests/wallet/test_transaction_store.py +20 -20
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +380 -228
- chia/_tests/wallet/test_wallet_action_scope.py +4 -4
- chia/_tests/wallet/test_wallet_blockchain.py +12 -12
- chia/_tests/wallet/test_wallet_coin_store.py +3 -4
- chia/_tests/wallet/test_wallet_node.py +16 -15
- chia/_tests/wallet/test_wallet_test_framework.py +2 -1
- chia/_tests/wallet/test_wallet_utils.py +2 -3
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
- chia/_tests/wallet/wallet_block_tools.py +12 -11
- chia/_tests/weight_proof/config.py +1 -0
- chia/_tests/weight_proof/test_weight_proof.py +5 -4
- chia/apis/__init__.py +21 -0
- chia/apis/farmer_stub.py +102 -0
- chia/apis/full_node_stub.py +374 -0
- chia/apis/harvester_stub.py +57 -0
- chia/apis/introducer_stub.py +35 -0
- chia/apis/solver_stub.py +30 -0
- chia/apis/stub_protocol_registry.py +21 -0
- chia/apis/timelord_stub.py +39 -0
- chia/apis/wallet_stub.py +161 -0
- chia/cmds/beta.py +3 -4
- chia/cmds/beta_funcs.py +4 -3
- chia/cmds/check_wallet_db.py +4 -4
- chia/cmds/chia.py +1 -2
- chia/cmds/cmd_classes.py +11 -13
- chia/cmds/cmd_helpers.py +11 -11
- chia/cmds/cmds_util.py +15 -15
- chia/cmds/coin_funcs.py +6 -7
- chia/cmds/coins.py +2 -3
- chia/cmds/configure.py +1 -2
- chia/cmds/data.py +42 -42
- chia/cmds/data_funcs.py +81 -81
- chia/cmds/db.py +4 -5
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev/data.py +4 -4
- chia/cmds/dev/gh.py +5 -5
- chia/cmds/dev/installers.py +2 -3
- chia/cmds/dev/mempool.py +3 -4
- chia/cmds/dev/mempool_funcs.py +4 -4
- chia/cmds/dev/sim.py +8 -8
- chia/cmds/dump_keyring.py +3 -3
- chia/cmds/farm.py +6 -8
- chia/cmds/farm_funcs.py +25 -24
- chia/cmds/init_funcs.py +4 -4
- chia/cmds/keys.py +16 -18
- chia/cmds/keys_funcs.py +36 -36
- chia/cmds/netspace.py +1 -3
- chia/cmds/netspace_funcs.py +1 -2
- chia/cmds/options.py +3 -2
- chia/cmds/param_types.py +17 -16
- chia/cmds/passphrase.py +6 -7
- chia/cmds/passphrase_funcs.py +11 -13
- chia/cmds/peer.py +1 -3
- chia/cmds/peer_funcs.py +3 -3
- chia/cmds/plotnft.py +6 -7
- chia/cmds/plotnft_funcs.py +37 -26
- chia/cmds/rpc.py +3 -3
- chia/cmds/show.py +3 -5
- chia/cmds/show_funcs.py +9 -9
- chia/cmds/sim_funcs.py +25 -26
- chia/cmds/solver.py +1 -3
- chia/cmds/solver_funcs.py +1 -2
- chia/cmds/start_funcs.py +2 -2
- chia/cmds/wallet.py +76 -81
- chia/cmds/wallet_funcs.py +206 -177
- chia/consensus/augmented_chain.py +6 -6
- chia/consensus/block_body_validation.py +19 -15
- chia/consensus/block_creation.py +25 -21
- chia/consensus/block_header_validation.py +27 -13
- chia/consensus/block_height_map.py +3 -6
- chia/consensus/block_height_map_protocol.py +2 -2
- chia/consensus/block_record.py +2 -4
- chia/consensus/blockchain.py +58 -40
- chia/consensus/blockchain_interface.py +7 -7
- chia/consensus/coin_store_protocol.py +5 -6
- chia/consensus/condition_tools.py +4 -4
- chia/consensus/cost_calculator.py +2 -3
- chia/consensus/default_constants.py +19 -13
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +3 -5
- chia/consensus/find_fork_point.py +2 -4
- chia/consensus/full_block_to_block_record.py +11 -13
- chia/consensus/generator_tools.py +2 -3
- chia/consensus/get_block_challenge.py +50 -26
- chia/consensus/get_block_generator.py +2 -3
- chia/consensus/make_sub_epoch_summary.py +8 -7
- chia/consensus/multiprocess_validation.py +31 -20
- chia/consensus/pos_quality.py +6 -23
- chia/consensus/pot_iterations.py +17 -44
- chia/consensus/signage_point.py +4 -5
- chia/consensus/vdf_info_computation.py +2 -4
- chia/daemon/client.py +8 -8
- chia/daemon/keychain_proxy.py +31 -37
- chia/daemon/server.py +32 -33
- chia/daemon/windows_signal.py +4 -3
- chia/data_layer/data_layer.py +86 -77
- chia/data_layer/data_layer_rpc_api.py +9 -9
- chia/data_layer/data_layer_rpc_client.py +13 -15
- chia/data_layer/data_layer_server.py +3 -3
- chia/data_layer/data_layer_util.py +14 -14
- chia/data_layer/data_layer_wallet.py +94 -101
- chia/data_layer/data_store.py +50 -50
- chia/data_layer/dl_wallet_store.py +9 -12
- chia/data_layer/download_data.py +8 -9
- chia/data_layer/s3_plugin_service.py +5 -9
- chia/data_layer/start_data_layer.py +5 -5
- chia/farmer/farmer.py +31 -31
- chia/farmer/farmer_api.py +45 -33
- chia/farmer/farmer_rpc_api.py +5 -4
- chia/farmer/farmer_rpc_client.py +6 -6
- chia/farmer/start_farmer.py +6 -6
- chia/full_node/block_store.py +13 -16
- chia/full_node/check_fork_next_block.py +1 -2
- chia/full_node/coin_store.py +15 -16
- chia/full_node/eligible_coin_spends.py +3 -3
- chia/full_node/fee_estimate_store.py +2 -3
- chia/full_node/fee_tracker.py +1 -2
- chia/full_node/full_block_utils.py +4 -4
- chia/full_node/full_node.py +239 -223
- chia/full_node/full_node_api.py +197 -152
- chia/full_node/full_node_rpc_api.py +34 -32
- chia/full_node/full_node_rpc_client.py +18 -19
- chia/full_node/full_node_store.py +45 -43
- chia/full_node/hard_fork_utils.py +44 -0
- chia/full_node/hint_management.py +2 -2
- chia/full_node/mempool.py +17 -19
- chia/full_node/mempool_manager.py +89 -42
- chia/full_node/pending_tx_cache.py +2 -3
- chia/full_node/start_full_node.py +5 -5
- chia/full_node/sync_store.py +3 -4
- chia/full_node/tx_processing_queue.py +120 -36
- chia/full_node/weight_proof.py +61 -48
- chia/harvester/harvester.py +25 -24
- chia/harvester/harvester_api.py +61 -38
- chia/harvester/harvester_rpc_api.py +10 -10
- chia/harvester/start_harvester.py +4 -4
- chia/introducer/introducer.py +3 -3
- chia/introducer/introducer_api.py +6 -4
- chia/introducer/start_introducer.py +4 -4
- chia/legacy/keyring.py +3 -3
- chia/plot_sync/delta.py +1 -2
- chia/plot_sync/receiver.py +20 -17
- chia/plot_sync/sender.py +15 -10
- chia/plotters/bladebit.py +7 -7
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +4 -4
- chia/plotters/plotters.py +4 -4
- chia/plotters/plotters_util.py +3 -3
- chia/plotting/cache.py +20 -14
- chia/plotting/check_plots.py +26 -35
- chia/plotting/create_plots.py +22 -23
- chia/plotting/manager.py +21 -14
- chia/plotting/prover.py +59 -42
- chia/plotting/util.py +16 -16
- chia/pools/pool_config.py +2 -1
- chia/pools/pool_puzzles.py +11 -12
- chia/pools/pool_wallet.py +34 -57
- chia/pools/pool_wallet_info.py +39 -10
- chia/protocols/farmer_protocol.py +8 -9
- chia/protocols/fee_estimate.py +3 -4
- chia/protocols/full_node_protocol.py +3 -4
- chia/protocols/harvester_protocol.py +27 -15
- chia/protocols/outbound_message.py +3 -3
- chia/protocols/pool_protocol.py +8 -9
- chia/protocols/shared_protocol.py +1 -2
- chia/protocols/solver_protocol.py +9 -2
- chia/protocols/timelord_protocol.py +4 -7
- chia/protocols/wallet_protocol.py +11 -12
- chia/rpc/rpc_client.py +9 -9
- chia/rpc/rpc_server.py +17 -17
- chia/rpc/util.py +2 -2
- chia/seeder/crawler.py +8 -8
- chia/seeder/crawler_api.py +21 -27
- chia/seeder/crawler_rpc_api.py +2 -2
- chia/seeder/dns_server.py +21 -21
- chia/seeder/start_crawler.py +4 -4
- chia/server/address_manager.py +15 -16
- chia/server/api_protocol.py +11 -11
- chia/server/chia_policy.py +46 -26
- chia/server/introducer_peers.py +2 -3
- chia/server/node_discovery.py +19 -19
- chia/server/rate_limit_numbers.py +4 -5
- chia/server/rate_limits.py +4 -4
- chia/server/resolve_peer_info.py +4 -4
- chia/server/server.py +49 -52
- chia/server/signal_handlers.py +6 -6
- chia/server/start_service.py +17 -17
- chia/server/upnp.py +4 -6
- chia/server/ws_connection.py +52 -37
- chia/simulator/add_blocks_in_batches.py +1 -3
- chia/simulator/block_tools.py +312 -200
- chia/simulator/full_node_simulator.py +56 -35
- chia/simulator/keyring.py +2 -3
- chia/simulator/setup_services.py +15 -15
- chia/simulator/simulator_full_node_rpc_api.py +1 -2
- chia/simulator/simulator_full_node_rpc_client.py +1 -2
- chia/simulator/simulator_protocol.py +1 -2
- chia/simulator/simulator_test_tools.py +3 -3
- chia/simulator/start_simulator.py +7 -7
- chia/simulator/wallet_tools.py +10 -10
- chia/solver/solver.py +10 -10
- chia/solver/solver_api.py +10 -8
- chia/solver/solver_rpc_api.py +2 -2
- chia/solver/start_solver.py +4 -4
- chia/ssl/cacert.pem +148 -90
- chia/ssl/chia_ca.crt +14 -10
- chia/ssl/chia_ca_old.crt +19 -0
- chia/ssl/create_ssl.py +4 -4
- chia/ssl/renewedselfsignedca.conf +4 -0
- chia/ssl/ssl_check.py +1 -2
- chia/timelord/iters_from_block.py +1 -4
- chia/timelord/start_timelord.py +4 -4
- chia/timelord/timelord.py +44 -40
- chia/timelord/timelord_api.py +6 -4
- chia/timelord/timelord_launcher.py +2 -2
- chia/timelord/timelord_rpc_api.py +2 -2
- chia/timelord/timelord_state.py +11 -12
- chia/types/block_protocol.py +1 -3
- chia/types/blockchain_format/coin.py +1 -3
- chia/types/blockchain_format/program.py +11 -8
- chia/types/blockchain_format/proof_of_space.py +123 -76
- chia/types/blockchain_format/tree_hash.py +3 -3
- chia/types/blockchain_format/vdf.py +1 -2
- chia/types/coin_spend.py +3 -3
- chia/types/mempool_item.py +5 -5
- chia/types/mempool_submission_status.py +2 -3
- chia/types/peer_info.py +1 -2
- chia/types/unfinished_header_block.py +3 -4
- chia/types/validation_state.py +1 -2
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +5 -5
- chia/util/bech32m.py +1 -2
- chia/util/beta_metrics.py +2 -2
- chia/util/block_cache.py +4 -4
- chia/util/chia_logging.py +2 -2
- chia/util/chia_version.py +1 -2
- chia/util/config.py +15 -16
- chia/util/db_wrapper.py +26 -27
- chia/util/default_root.py +1 -2
- chia/util/errors.py +3 -3
- chia/util/file_keyring.py +14 -14
- chia/util/files.py +2 -3
- chia/util/hash.py +4 -4
- chia/util/initial-config.yaml +4 -5
- chia/util/inline_executor.py +2 -1
- chia/util/ip_address.py +1 -2
- chia/util/keychain.py +25 -27
- chia/util/keyring_wrapper.py +18 -19
- chia/util/lock.py +3 -4
- chia/util/log_exceptions.py +1 -2
- chia/util/lru_cache.py +2 -2
- chia/util/network.py +6 -6
- chia/util/path.py +2 -3
- chia/util/priority_mutex.py +2 -2
- chia/util/profiler.py +1 -2
- chia/util/safe_cancel_task.py +1 -2
- chia/util/streamable.py +24 -10
- chia/util/task_referencer.py +1 -1
- chia/util/timing.py +3 -3
- chia/util/virtual_project_analysis.py +6 -5
- chia/util/ws_message.py +2 -2
- chia/wallet/cat_wallet/cat_info.py +3 -4
- chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
- chia/wallet/cat_wallet/cat_utils.py +3 -4
- chia/wallet/cat_wallet/cat_wallet.py +61 -83
- chia/wallet/cat_wallet/lineage_store.py +3 -4
- chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
- chia/wallet/coin_selection.py +9 -10
- chia/wallet/conditions.py +142 -106
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
- chia/wallet/derivation_record.py +1 -2
- chia/wallet/derive_keys.py +2 -4
- chia/wallet/did_wallet/did_info.py +10 -11
- chia/wallet/did_wallet/did_wallet.py +36 -82
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
- chia/wallet/driver_protocol.py +5 -7
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
- chia/wallet/nft_wallet/nft_info.py +8 -9
- chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
- chia/wallet/nft_wallet/nft_wallet.py +79 -116
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
- chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
- chia/wallet/nft_wallet/uncurry_nft.py +10 -11
- chia/wallet/notification_manager.py +3 -3
- chia/wallet/notification_store.py +44 -61
- chia/wallet/outer_puzzles.py +6 -7
- chia/wallet/puzzle_drivers.py +34 -6
- chia/wallet/puzzles/clawback/drivers.py +6 -6
- chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
- chia/wallet/puzzles/load_clvm.py +1 -1
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
- chia/wallet/puzzles/singleton_top_layer.py +2 -3
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
- chia/wallet/puzzles/tails.py +3 -3
- chia/wallet/singleton.py +5 -7
- chia/wallet/singleton_record.py +3 -3
- chia/wallet/start_wallet.py +5 -5
- chia/wallet/trade_manager.py +37 -58
- chia/wallet/trade_record.py +4 -4
- chia/wallet/trading/offer.py +59 -46
- chia/wallet/trading/trade_store.py +8 -9
- chia/wallet/transaction_record.py +8 -8
- chia/wallet/uncurried_puzzle.py +1 -2
- chia/wallet/util/clvm_streamable.py +12 -12
- chia/wallet/util/compute_hints.py +4 -5
- chia/wallet/util/curry_and_treehash.py +1 -2
- chia/wallet/util/merkle_tree.py +2 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/wallet/util/signing.py +85 -0
- chia/wallet/util/tx_config.py +15 -6
- chia/wallet/util/wallet_sync_utils.py +14 -16
- chia/wallet/util/wallet_types.py +2 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
- chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
- chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
- chia/wallet/vc_wallet/vc_drivers.py +27 -27
- chia/wallet/vc_wallet/vc_store.py +5 -6
- chia/wallet/vc_wallet/vc_wallet.py +33 -61
- chia/wallet/wallet.py +50 -78
- chia/wallet/wallet_action_scope.py +11 -11
- chia/wallet/wallet_blockchain.py +12 -12
- chia/wallet/wallet_coin_record.py +12 -6
- chia/wallet/wallet_coin_store.py +24 -25
- chia/wallet/wallet_interested_store.py +3 -5
- chia/wallet/wallet_nft_store.py +10 -11
- chia/wallet/wallet_node.py +53 -61
- chia/wallet/wallet_node_api.py +5 -3
- chia/wallet/wallet_protocol.py +23 -23
- chia/wallet/wallet_puzzle_store.py +15 -18
- chia/wallet/wallet_request_types.py +778 -114
- chia/wallet/wallet_retry_store.py +1 -3
- chia/wallet/wallet_rpc_api.py +572 -909
- chia/wallet/wallet_rpc_client.py +87 -279
- chia/wallet/wallet_singleton_store.py +3 -4
- chia/wallet/wallet_state_manager.py +332 -106
- chia/wallet/wallet_transaction_store.py +11 -14
- chia/wallet/wallet_user_store.py +4 -6
- chia/wallet/wallet_weight_proof_handler.py +4 -4
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +6 -5
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
- chia/apis.py +0 -21
- chia/consensus/check_time_locks.py +0 -57
- chia/data_layer/puzzles/__init__.py +0 -0
- chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
- chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
- chia/types/coin_record.py +0 -44
- chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
|
@@ -8,7 +8,7 @@ from collections.abc import AsyncIterator
|
|
|
8
8
|
from dataclasses import dataclass
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from shutil import rmtree
|
|
11
|
-
from typing import Any
|
|
11
|
+
from typing import Any
|
|
12
12
|
|
|
13
13
|
import pytest
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ from pytest_mock import MockerFixture
|
|
|
22
22
|
from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
|
|
23
23
|
from chia._tests.util.setup_nodes import setup_simulators_and_wallets_service
|
|
24
24
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
25
|
-
from chia.pools.pool_wallet_info import PoolSingletonState, PoolWalletInfo
|
|
25
|
+
from chia.pools.pool_wallet_info import NewPoolWalletInitialTargetState, PoolSingletonState, PoolWalletInfo
|
|
26
26
|
from chia.rpc.rpc_client import ResponseFailureError
|
|
27
27
|
from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
28
28
|
from chia.simulator.block_tools import BlockTools, get_plot_dir
|
|
@@ -41,6 +41,8 @@ from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
|
41
41
|
from chia.wallet.util.wallet_types import WalletType
|
|
42
42
|
from chia.wallet.wallet_node import WalletNode
|
|
43
43
|
from chia.wallet.wallet_request_types import (
|
|
44
|
+
CreateNewWallet,
|
|
45
|
+
CreateNewWalletType,
|
|
44
46
|
DeleteUnconfirmedTransactions,
|
|
45
47
|
GetTransactions,
|
|
46
48
|
GetWalletBalance,
|
|
@@ -50,6 +52,7 @@ from chia.wallet.wallet_request_types import (
|
|
|
50
52
|
PWSelfPool,
|
|
51
53
|
PWStatus,
|
|
52
54
|
SendTransaction,
|
|
55
|
+
WalletCreationMode,
|
|
53
56
|
)
|
|
54
57
|
from chia.wallet.wallet_rpc_client import WalletRpcClient
|
|
55
58
|
from chia.wallet.wallet_service import WalletService
|
|
@@ -211,7 +214,7 @@ async def process_plotnft_create(
|
|
|
211
214
|
) -> int:
|
|
212
215
|
wallet_rpc: WalletRpcClient = wallet_test_framework.environments[0].rpc_client
|
|
213
216
|
|
|
214
|
-
pre_block_balance_updates: dict[
|
|
217
|
+
pre_block_balance_updates: dict[int | str, dict[str, int]] = {
|
|
215
218
|
1: {
|
|
216
219
|
"confirmed_wallet_balance": 0,
|
|
217
220
|
"unconfirmed_wallet_balance": -1,
|
|
@@ -222,7 +225,7 @@ async def process_plotnft_create(
|
|
|
222
225
|
}
|
|
223
226
|
}
|
|
224
227
|
|
|
225
|
-
post_block_balance_updates: dict[
|
|
228
|
+
post_block_balance_updates: dict[int | str, dict[str, int]] = {
|
|
226
229
|
1: {
|
|
227
230
|
"confirmed_wallet_balance": -1,
|
|
228
231
|
"unconfirmed_wallet_balance": 0,
|
|
@@ -269,14 +272,20 @@ async def create_new_plotnft(
|
|
|
269
272
|
async with wallet_state_manager.new_action_scope(wallet_test_framework.tx_config, push=True) as action_scope:
|
|
270
273
|
our_ph = await action_scope.get_puzzle_hash(wallet_state_manager)
|
|
271
274
|
|
|
272
|
-
await wallet_rpc.
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
275
|
+
await wallet_rpc.create_new_wallet(
|
|
276
|
+
CreateNewWallet(
|
|
277
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
278
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
279
|
+
target_puzzle_hash=None if self_pool else our_ph,
|
|
280
|
+
state="SELF_POOLING" if self_pool else "FARMING_TO_POOL",
|
|
281
|
+
pool_url=None if self_pool else "http://pool.example.com",
|
|
282
|
+
relative_lock_height=None if self_pool else LOCK_HEIGHT,
|
|
283
|
+
),
|
|
284
|
+
mode=WalletCreationMode.NEW,
|
|
285
|
+
fee=uint64(0),
|
|
286
|
+
push=True,
|
|
287
|
+
),
|
|
288
|
+
wallet_test_framework.tx_config,
|
|
280
289
|
)
|
|
281
290
|
|
|
282
291
|
return await process_plotnft_create(
|
|
@@ -297,15 +306,22 @@ class TestPoolWalletRpc:
|
|
|
297
306
|
client, wallet_node, full_node_api, _total_block_rewards, _ = one_wallet_node_and_rpc
|
|
298
307
|
wallet = wallet_node.wallet_state_manager.main_wallet
|
|
299
308
|
|
|
300
|
-
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
301
|
-
our_ph = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
|
|
302
309
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
303
310
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET.value)))
|
|
304
311
|
assert len(summaries_response.wallets) == 0
|
|
305
|
-
|
|
306
|
-
|
|
312
|
+
create_response = await client.create_new_wallet(
|
|
313
|
+
CreateNewWallet(
|
|
314
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
315
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
316
|
+
state="SELF_POOLING",
|
|
317
|
+
),
|
|
318
|
+
mode=WalletCreationMode.NEW,
|
|
319
|
+
fee=fee,
|
|
320
|
+
push=True,
|
|
321
|
+
),
|
|
322
|
+
DEFAULT_TX_CONFIG,
|
|
307
323
|
)
|
|
308
|
-
await full_node_api.process_transaction_records(records=
|
|
324
|
+
await full_node_api.process_transaction_records(records=create_response.transactions)
|
|
309
325
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=30)
|
|
310
326
|
|
|
311
327
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET.value)))
|
|
@@ -334,7 +350,7 @@ class TestPoolWalletRpc:
|
|
|
334
350
|
)
|
|
335
351
|
# It can be one of multiple launcher IDs, due to selecting a different coin
|
|
336
352
|
launcher_id = None
|
|
337
|
-
for addition in
|
|
353
|
+
for addition in create_response.transactions[0].additions:
|
|
338
354
|
if addition.puzzle_hash == SINGLETON_LAUNCHER_HASH:
|
|
339
355
|
launcher_id = addition.name()
|
|
340
356
|
break
|
|
@@ -357,10 +373,22 @@ class TestPoolWalletRpc:
|
|
|
357
373
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
|
|
358
374
|
assert len(summaries_response.wallets) == 0
|
|
359
375
|
|
|
360
|
-
|
|
361
|
-
|
|
376
|
+
create_response = await client.create_new_wallet(
|
|
377
|
+
CreateNewWallet(
|
|
378
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
379
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
380
|
+
target_puzzle_hash=our_ph,
|
|
381
|
+
state="FARMING_TO_POOL",
|
|
382
|
+
pool_url="http://pool.example.com",
|
|
383
|
+
relative_lock_height=uint32(10),
|
|
384
|
+
),
|
|
385
|
+
mode=WalletCreationMode.NEW,
|
|
386
|
+
fee=fee,
|
|
387
|
+
push=True,
|
|
388
|
+
),
|
|
389
|
+
DEFAULT_TX_CONFIG,
|
|
362
390
|
)
|
|
363
|
-
await full_node_api.process_transaction_records(records=
|
|
391
|
+
await full_node_api.process_transaction_records(records=create_response.transactions)
|
|
364
392
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
365
393
|
|
|
366
394
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
|
|
@@ -389,7 +417,7 @@ class TestPoolWalletRpc:
|
|
|
389
417
|
)
|
|
390
418
|
# It can be one of multiple launcher IDs, due to selecting a different coin
|
|
391
419
|
launcher_id = None
|
|
392
|
-
for addition in
|
|
420
|
+
for addition in create_response.transactions[0].additions:
|
|
393
421
|
if addition.puzzle_hash == SINGLETON_LAUNCHER_HASH:
|
|
394
422
|
launcher_id = addition.name()
|
|
395
423
|
break
|
|
@@ -415,15 +443,38 @@ class TestPoolWalletRpc:
|
|
|
415
443
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
|
|
416
444
|
assert len(summaries_response.wallets) == 0
|
|
417
445
|
|
|
418
|
-
|
|
419
|
-
|
|
446
|
+
create_response_1 = await client.create_new_wallet(
|
|
447
|
+
CreateNewWallet(
|
|
448
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
449
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
450
|
+
state="SELF_POOLING",
|
|
451
|
+
),
|
|
452
|
+
mode=WalletCreationMode.NEW,
|
|
453
|
+
fee=fee,
|
|
454
|
+
push=True,
|
|
455
|
+
),
|
|
456
|
+
DEFAULT_TX_CONFIG,
|
|
420
457
|
)
|
|
421
458
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
422
|
-
|
|
423
|
-
|
|
459
|
+
create_response_2 = await client.create_new_wallet(
|
|
460
|
+
CreateNewWallet(
|
|
461
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
462
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
463
|
+
target_puzzle_hash=our_ph_1,
|
|
464
|
+
state="FARMING_TO_POOL",
|
|
465
|
+
pool_url=self_hostname,
|
|
466
|
+
relative_lock_height=uint32(12),
|
|
467
|
+
),
|
|
468
|
+
mode=WalletCreationMode.NEW,
|
|
469
|
+
fee=fee,
|
|
470
|
+
push=True,
|
|
471
|
+
),
|
|
472
|
+
DEFAULT_TX_CONFIG,
|
|
424
473
|
)
|
|
425
474
|
|
|
426
|
-
await full_node_api.process_transaction_records(
|
|
475
|
+
await full_node_api.process_transaction_records(
|
|
476
|
+
records=[*create_response_1.transactions, *create_response_2.transactions]
|
|
477
|
+
)
|
|
427
478
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
428
479
|
|
|
429
480
|
async def pw_created(check_wallet_id: int) -> bool:
|
|
@@ -471,10 +522,19 @@ class TestPoolWalletRpc:
|
|
|
471
522
|
|
|
472
523
|
for i in range(5):
|
|
473
524
|
await time_out_assert(10, mempool_empty)
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
525
|
+
create_cat_res = await client.create_new_wallet(
|
|
526
|
+
CreateNewWallet(
|
|
527
|
+
wallet_type=CreateNewWalletType.CAT_WALLET,
|
|
528
|
+
mode=WalletCreationMode.NEW,
|
|
529
|
+
amount=uint64(20),
|
|
530
|
+
test=True,
|
|
531
|
+
push=True,
|
|
532
|
+
),
|
|
533
|
+
tx_config=DEFAULT_TX_CONFIG,
|
|
534
|
+
)
|
|
535
|
+
cat_0_id = create_cat_res.wallet_id
|
|
536
|
+
asset_id = create_cat_res.asset_id
|
|
537
|
+
assert asset_id is not None # mypy doesn't know about __post_init__
|
|
478
538
|
assert len(asset_id) > 0
|
|
479
539
|
await full_node_api.process_all_wallet_transactions(wallet=wallet)
|
|
480
540
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
@@ -486,10 +546,22 @@ class TestPoolWalletRpc:
|
|
|
486
546
|
if not trusted:
|
|
487
547
|
for i in range(22):
|
|
488
548
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
489
|
-
|
|
490
|
-
|
|
549
|
+
create_response = await client.create_new_wallet(
|
|
550
|
+
CreateNewWallet(
|
|
551
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
552
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
553
|
+
target_puzzle_hash=our_ph_1,
|
|
554
|
+
state="FARMING_TO_POOL",
|
|
555
|
+
pool_url=self_hostname,
|
|
556
|
+
relative_lock_height=uint32(5),
|
|
557
|
+
),
|
|
558
|
+
mode=WalletCreationMode.NEW,
|
|
559
|
+
fee=fee,
|
|
560
|
+
push=True,
|
|
561
|
+
),
|
|
562
|
+
DEFAULT_TX_CONFIG,
|
|
491
563
|
)
|
|
492
|
-
await full_node_api.process_transaction_records(records=
|
|
564
|
+
await full_node_api.process_transaction_records(records=create_response.transactions)
|
|
493
565
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
494
566
|
|
|
495
567
|
full_config = load_config(wallet.wallet_state_manager.root_path, "config.yaml")
|
|
@@ -524,10 +596,19 @@ class TestPoolWalletRpc:
|
|
|
524
596
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
|
|
525
597
|
assert len(summaries_response.wallets) == 0
|
|
526
598
|
|
|
527
|
-
|
|
528
|
-
|
|
599
|
+
create_response = await client.create_new_wallet(
|
|
600
|
+
CreateNewWallet(
|
|
601
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
602
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
603
|
+
state="SELF_POOLING",
|
|
604
|
+
),
|
|
605
|
+
mode=WalletCreationMode.NEW,
|
|
606
|
+
fee=fee,
|
|
607
|
+
push=True,
|
|
608
|
+
),
|
|
609
|
+
DEFAULT_TX_CONFIG,
|
|
529
610
|
)
|
|
530
|
-
await full_node_api.process_transaction_records(records=
|
|
611
|
+
await full_node_api.process_transaction_records(records=create_response.transactions)
|
|
531
612
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
532
613
|
status: PoolWalletInfo = (await client.pw_status(PWStatus(uint32(2)))).state
|
|
533
614
|
|
|
@@ -633,10 +714,19 @@ class TestPoolWalletRpc:
|
|
|
633
714
|
assert len(summaries_response.wallets) == 0
|
|
634
715
|
|
|
635
716
|
main_expected_confirmed_balance = total_block_rewards
|
|
636
|
-
|
|
637
|
-
|
|
717
|
+
create_response = await client.create_new_wallet(
|
|
718
|
+
CreateNewWallet(
|
|
719
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
720
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
721
|
+
state="SELF_POOLING",
|
|
722
|
+
),
|
|
723
|
+
mode=WalletCreationMode.NEW,
|
|
724
|
+
fee=fee,
|
|
725
|
+
push=True,
|
|
726
|
+
),
|
|
727
|
+
DEFAULT_TX_CONFIG,
|
|
638
728
|
)
|
|
639
|
-
await full_node_api.process_transaction_records(records=
|
|
729
|
+
await full_node_api.process_transaction_records(records=create_response.transactions)
|
|
640
730
|
main_expected_confirmed_balance -= fee
|
|
641
731
|
main_expected_confirmed_balance -= 1
|
|
642
732
|
pool_expected_confirmed_balance = 0
|
|
@@ -708,10 +798,22 @@ class TestPoolWalletRpc:
|
|
|
708
798
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
709
799
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
|
|
710
800
|
assert len(summaries_response.wallets) == 0
|
|
711
|
-
|
|
712
|
-
|
|
801
|
+
create_response = await client.create_new_wallet(
|
|
802
|
+
CreateNewWallet(
|
|
803
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
804
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
805
|
+
target_puzzle_hash=our_ph,
|
|
806
|
+
state="FARMING_TO_POOL",
|
|
807
|
+
pool_url="http://123.45.67.89",
|
|
808
|
+
relative_lock_height=uint32(10),
|
|
809
|
+
),
|
|
810
|
+
mode=WalletCreationMode.NEW,
|
|
811
|
+
fee=fee,
|
|
812
|
+
push=True,
|
|
813
|
+
),
|
|
814
|
+
DEFAULT_TX_CONFIG,
|
|
713
815
|
)
|
|
714
|
-
await full_node_api.process_transaction_records(records=
|
|
816
|
+
await full_node_api.process_transaction_records(records=create_response.transactions)
|
|
715
817
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
716
818
|
main_expected_confirmed_balance -= 1
|
|
717
819
|
main_expected_confirmed_balance -= fee
|
|
@@ -827,7 +929,7 @@ class TestPoolWalletRpc:
|
|
|
827
929
|
if fee != 0:
|
|
828
930
|
pytest.skip("need to fix this test for non-zero fees")
|
|
829
931
|
|
|
830
|
-
full_node_api, wallet_node,
|
|
932
|
+
full_node_api, wallet_node, _our_ph, _total_block_rewards, client = setup
|
|
831
933
|
pool_ph = bytes32.zeros
|
|
832
934
|
|
|
833
935
|
assert wallet_node._wallet_state_manager is not None
|
|
@@ -835,20 +937,39 @@ class TestPoolWalletRpc:
|
|
|
835
937
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
|
|
836
938
|
assert len(summaries_response.wallets) == 0
|
|
837
939
|
|
|
838
|
-
|
|
839
|
-
|
|
940
|
+
create_response_1 = await client.create_new_wallet(
|
|
941
|
+
CreateNewWallet(
|
|
942
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
943
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
944
|
+
state="SELF_POOLING",
|
|
945
|
+
),
|
|
946
|
+
mode=WalletCreationMode.NEW,
|
|
947
|
+
fee=fee,
|
|
948
|
+
push=True,
|
|
949
|
+
),
|
|
950
|
+
DEFAULT_TX_CONFIG,
|
|
840
951
|
)
|
|
841
|
-
await full_node_api.wait_transaction_records_entered_mempool(records=
|
|
842
|
-
|
|
843
|
-
|
|
952
|
+
await full_node_api.wait_transaction_records_entered_mempool(records=create_response_1.transactions)
|
|
953
|
+
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
954
|
+
create_response_2 = await client.create_new_wallet(
|
|
955
|
+
CreateNewWallet(
|
|
956
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
957
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
958
|
+
state="SELF_POOLING",
|
|
959
|
+
),
|
|
960
|
+
mode=WalletCreationMode.NEW,
|
|
961
|
+
fee=fee,
|
|
962
|
+
push=True,
|
|
963
|
+
),
|
|
964
|
+
DEFAULT_TX_CONFIG,
|
|
844
965
|
)
|
|
845
966
|
|
|
846
|
-
for r in
|
|
847
|
-
assert r not in
|
|
967
|
+
for r in create_response_1.transactions[0].removals:
|
|
968
|
+
assert r not in create_response_2.transactions[0].removals
|
|
848
969
|
|
|
849
|
-
await full_node_api.process_transaction_records(records=
|
|
970
|
+
await full_node_api.process_transaction_records(records=create_response_2.transactions)
|
|
850
971
|
|
|
851
|
-
assert not full_node_api.txs_in_mempool(txs=
|
|
972
|
+
assert not full_node_api.txs_in_mempool(txs=create_response_1.transactions)
|
|
852
973
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
853
974
|
|
|
854
975
|
summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
|
|
@@ -927,14 +1048,23 @@ class TestPoolWalletRpc:
|
|
|
927
1048
|
|
|
928
1049
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
929
1050
|
|
|
930
|
-
|
|
931
|
-
|
|
1051
|
+
create_response = await client.create_new_wallet(
|
|
1052
|
+
CreateNewWallet(
|
|
1053
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
1054
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
1055
|
+
state="SELF_POOLING",
|
|
1056
|
+
),
|
|
1057
|
+
mode=WalletCreationMode.NEW,
|
|
1058
|
+
fee=fee,
|
|
1059
|
+
push=True,
|
|
1060
|
+
),
|
|
1061
|
+
DEFAULT_TX_CONFIG,
|
|
932
1062
|
)
|
|
933
1063
|
|
|
934
|
-
await full_node_api.wait_transaction_records_entered_mempool(records=
|
|
1064
|
+
await full_node_api.wait_transaction_records_entered_mempool(records=create_response.transactions)
|
|
935
1065
|
|
|
936
1066
|
await full_node_api.farm_blocks_to_puzzlehash(count=6, farm_to=our_ph, guarantee_transaction_blocks=True)
|
|
937
|
-
assert not full_node_api.txs_in_mempool(txs=
|
|
1067
|
+
assert not full_node_api.txs_in_mempool(txs=create_response.transactions)
|
|
938
1068
|
|
|
939
1069
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
940
1070
|
|
|
@@ -1119,14 +1249,26 @@ class TestPoolWalletRpc:
|
|
|
1119
1249
|
|
|
1120
1250
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
1121
1251
|
|
|
1122
|
-
|
|
1123
|
-
|
|
1252
|
+
create_response = await client.create_new_wallet(
|
|
1253
|
+
CreateNewWallet(
|
|
1254
|
+
wallet_type=CreateNewWalletType.POOL_WALLET,
|
|
1255
|
+
initial_target_state=NewPoolWalletInitialTargetState(
|
|
1256
|
+
target_puzzle_hash=pool_a_ph,
|
|
1257
|
+
state="FARMING_TO_POOL",
|
|
1258
|
+
pool_url="https://pool-a.org",
|
|
1259
|
+
relative_lock_height=uint32(5),
|
|
1260
|
+
),
|
|
1261
|
+
mode=WalletCreationMode.NEW,
|
|
1262
|
+
fee=uint64(0),
|
|
1263
|
+
push=True,
|
|
1264
|
+
),
|
|
1265
|
+
DEFAULT_TX_CONFIG,
|
|
1124
1266
|
)
|
|
1125
1267
|
|
|
1126
|
-
await full_node_api.wait_transaction_records_entered_mempool(records=
|
|
1268
|
+
await full_node_api.wait_transaction_records_entered_mempool(records=create_response.transactions)
|
|
1127
1269
|
|
|
1128
1270
|
await full_node_api.farm_blocks_to_puzzlehash(count=6, farm_to=our_ph, guarantee_transaction_blocks=True)
|
|
1129
|
-
assert not full_node_api.txs_in_mempool(txs=
|
|
1271
|
+
assert not full_node_api.txs_in_mempool(txs=create_response.transactions)
|
|
1130
1272
|
|
|
1131
1273
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
|
|
1132
1274
|
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass, field
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Any,
|
|
5
|
+
from typing import Any, cast
|
|
6
6
|
from unittest.mock import MagicMock
|
|
7
7
|
|
|
8
8
|
import pytest
|
|
@@ -27,7 +27,7 @@ class MockStandardWallet:
|
|
|
27
27
|
|
|
28
28
|
@dataclass
|
|
29
29
|
class MockWalletStateManager:
|
|
30
|
-
root_path:
|
|
30
|
+
root_path: Path | None = None
|
|
31
31
|
config: dict[str, Any] = field(default_factory=dict)
|
|
32
32
|
|
|
33
33
|
|
|
@@ -43,7 +43,7 @@ class MockPoolWalletConfig:
|
|
|
43
43
|
|
|
44
44
|
@dataclass
|
|
45
45
|
class MockPoolState:
|
|
46
|
-
pool_url:
|
|
46
|
+
pool_url: str | None
|
|
47
47
|
target_puzzle_hash: bytes32
|
|
48
48
|
owner_pubkey: G1Element
|
|
49
49
|
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
from chia_rs import CoinSpend
|
|
@@ -18,9 +17,7 @@ from chia.wallet.util.compute_additions import compute_additions
|
|
|
18
17
|
from chia.wallet.wallet_pool_store import WalletPoolStore
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
def make_child_solution(
|
|
22
|
-
coin_spend: Optional[CoinSpend], new_coin: Optional[Coin], seeded_random: random.Random
|
|
23
|
-
) -> CoinSpend:
|
|
20
|
+
def make_child_solution(coin_spend: CoinSpend | None, new_coin: Coin | None, seeded_random: random.Random) -> CoinSpend:
|
|
24
21
|
new_puzzle_hash: bytes32 = bytes32.random(seeded_random)
|
|
25
22
|
solution = "()"
|
|
26
23
|
puzzle = f"(q . ((51 0x{new_puzzle_hash.hex()} 1)))"
|
chia/_tests/process_junit.py
CHANGED
|
@@ -7,7 +7,7 @@ from collections import defaultdict
|
|
|
7
7
|
from dataclasses import dataclass, field
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
from statistics import StatisticsError, mean, stdev
|
|
10
|
-
from typing import Any,
|
|
10
|
+
from typing import Any, TextIO, final
|
|
11
11
|
|
|
12
12
|
import click
|
|
13
13
|
import lxml.etree
|
|
@@ -126,7 +126,7 @@ def main(
|
|
|
126
126
|
percent_margin: int,
|
|
127
127
|
randomoji: bool,
|
|
128
128
|
tag: str,
|
|
129
|
-
result_count_limit:
|
|
129
|
+
result_count_limit: int | None,
|
|
130
130
|
) -> None:
|
|
131
131
|
data_type = supported_data_types_by_tag[tag]
|
|
132
132
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from collections.abc import AsyncIterator, Awaitable
|
|
3
|
+
from collections.abc import AsyncIterator, Awaitable, Callable
|
|
4
4
|
from dataclasses import dataclass
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import Any
|
|
6
|
+
from typing import Any
|
|
7
7
|
|
|
8
8
|
import pytest
|
|
9
9
|
from chia_rs.sized_ints import uint16
|
|
@@ -31,8 +31,8 @@ client_fetch_methods = [
|
|
|
31
31
|
@dataclass
|
|
32
32
|
class InvalidCreateCase:
|
|
33
33
|
id: str
|
|
34
|
-
root_path:
|
|
35
|
-
net_config:
|
|
34
|
+
root_path: Path | None = None
|
|
35
|
+
net_config: dict[str, Any] | None = None
|
|
36
36
|
marks: Marks = ()
|
|
37
37
|
|
|
38
38
|
|
|
@@ -7,7 +7,7 @@ import ssl
|
|
|
7
7
|
import sys
|
|
8
8
|
from collections.abc import AsyncIterator
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import TYPE_CHECKING, Any, ClassVar,
|
|
10
|
+
from typing import TYPE_CHECKING, Any, ClassVar, cast
|
|
11
11
|
|
|
12
12
|
import aiohttp
|
|
13
13
|
import pytest
|
|
@@ -42,7 +42,7 @@ class TestRpcApi:
|
|
|
42
42
|
service: RpcServiceProtocol
|
|
43
43
|
service_name: str = service_name
|
|
44
44
|
|
|
45
|
-
async def _state_changed(self, change: str, change_data:
|
|
45
|
+
async def _state_changed(self, change: str, change_data: dict[str, Any] | None = None) -> list[WsRpcMessage]:
|
|
46
46
|
# just here to satisfy the complete protocol
|
|
47
47
|
return [] # pragma: no cover
|
|
48
48
|
|
|
@@ -73,7 +73,7 @@ class Client:
|
|
|
73
73
|
async with aiohttp.ClientSession() as session:
|
|
74
74
|
yield cls(session=session, ssl_context=ssl_context, url=url)
|
|
75
75
|
|
|
76
|
-
async def request(self, endpoint: str, json:
|
|
76
|
+
async def request(self, endpoint: str, json: dict[str, Any] | None = None) -> dict[str, Any]:
|
|
77
77
|
if json is None:
|
|
78
78
|
json = {}
|
|
79
79
|
|
|
@@ -12,8 +12,9 @@ import dns.rdtypes.IN.AAAA
|
|
|
12
12
|
import pytest
|
|
13
13
|
from chia_rs import BlockRecord
|
|
14
14
|
from chia_rs.sized_bytes import bytes32
|
|
15
|
-
from chia_rs.sized_ints import
|
|
15
|
+
from chia_rs.sized_ints import uint16, uint32, uint64
|
|
16
16
|
|
|
17
|
+
from chia._tests.conftest import test_constants_modified
|
|
17
18
|
from chia._tests.core.node_height import node_height_at_least
|
|
18
19
|
from chia._tests.util.setup_nodes import FullSystem, OldSimulatorsAndWallets
|
|
19
20
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
@@ -24,7 +25,7 @@ from chia.full_node.full_node import FullNode
|
|
|
24
25
|
from chia.full_node.full_node_api import FullNodeAPI
|
|
25
26
|
from chia.protocols.outbound_message import NodeType
|
|
26
27
|
from chia.server.server import ChiaServer
|
|
27
|
-
from chia.simulator.block_tools import BlockTools, create_block_tools_async
|
|
28
|
+
from chia.simulator.block_tools import BlockTools, create_block_tools_async
|
|
28
29
|
from chia.simulator.full_node_simulator import FullNodeSimulator
|
|
29
30
|
from chia.simulator.keyring import TempKeyring
|
|
30
31
|
from chia.simulator.setup_services import setup_full_node
|
|
@@ -36,20 +37,6 @@ from chia.wallet.wallet_node import WalletNode
|
|
|
36
37
|
|
|
37
38
|
chiapos_version = importlib.metadata.version("chiapos")
|
|
38
39
|
|
|
39
|
-
test_constants_modified = test_constants.replace(
|
|
40
|
-
DIFFICULTY_STARTING=uint64(2**8),
|
|
41
|
-
DISCRIMINANT_SIZE_BITS=uint16(1024),
|
|
42
|
-
SUB_EPOCH_BLOCKS=uint32(140),
|
|
43
|
-
WEIGHT_PROOF_THRESHOLD=uint8(2),
|
|
44
|
-
WEIGHT_PROOF_RECENT_BLOCKS=uint32(350),
|
|
45
|
-
MAX_SUB_SLOT_BLOCKS=uint32(50),
|
|
46
|
-
NUM_SPS_SUB_SLOT=uint8(32), # Must be a power of 2
|
|
47
|
-
EPOCH_BLOCKS=uint32(280),
|
|
48
|
-
SUB_SLOT_ITERS_STARTING=uint64(2**20),
|
|
49
|
-
NUMBER_ZERO_BITS_PLOT_FILTER_V1=uint8(5),
|
|
50
|
-
NUMBER_ZERO_BITS_PLOT_FILTER_V2=uint8(5),
|
|
51
|
-
)
|
|
52
|
-
|
|
53
40
|
|
|
54
41
|
# TODO: Ideally, the db_version should be the (parameterized) db_version
|
|
55
42
|
# fixture, to test all versions of the database schema. This doesn't work
|
|
@@ -58,15 +45,15 @@ test_constants_modified = test_constants.replace(
|
|
|
58
45
|
@pytest.fixture(scope="function")
|
|
59
46
|
async def extra_node(self_hostname) -> AsyncIterator[FullNodeAPI | FullNodeSimulator]:
|
|
60
47
|
with TempKeyring() as keychain:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
48
|
+
async with create_block_tools_async(constants=test_constants_modified, keychain=keychain) as b_tools:
|
|
49
|
+
async with setup_full_node(
|
|
50
|
+
test_constants_modified,
|
|
51
|
+
"blockchain_test_3.db",
|
|
52
|
+
self_hostname,
|
|
53
|
+
b_tools,
|
|
54
|
+
db_version=2,
|
|
55
|
+
) as service:
|
|
56
|
+
yield service._api
|
|
70
57
|
|
|
71
58
|
|
|
72
59
|
class FakeDNSResolver:
|
|
@@ -4,7 +4,9 @@ from pathlib import Path
|
|
|
4
4
|
from unittest.mock import patch
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
|
-
from chia_rs import ConsensusConstants
|
|
7
|
+
from chia_rs import ConsensusConstants, PartialProof
|
|
8
|
+
from chia_rs.sized_bytes import bytes32
|
|
9
|
+
from chia_rs.sized_ints import uint8, uint64
|
|
8
10
|
|
|
9
11
|
from chia.protocols.outbound_message import Message
|
|
10
12
|
from chia.protocols.solver_protocol import SolverInfo
|
|
@@ -16,12 +18,19 @@ from chia.simulator.setup_services import setup_solver
|
|
|
16
18
|
@pytest.mark.anyio
|
|
17
19
|
async def test_solver_api_methods(blockchain_constants: ConsensusConstants, tmp_path: Path) -> None:
|
|
18
20
|
with TempKeyring(populate=True) as keychain:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
async with (
|
|
22
|
+
create_block_tools_async(constants=blockchain_constants, keychain=keychain) as bt,
|
|
23
|
+
setup_solver(tmp_path, bt, blockchain_constants) as solver_service,
|
|
24
|
+
):
|
|
21
25
|
solver = solver_service._node
|
|
22
26
|
solver_api = solver_service._api
|
|
23
27
|
assert solver_api.ready() is True
|
|
24
|
-
test_info = SolverInfo(
|
|
28
|
+
test_info = SolverInfo(
|
|
29
|
+
PartialProof([uint64(256)] * 64),
|
|
30
|
+
plot_id=bytes32.fromhex("abababababababababababababababababababababababababababababababab"),
|
|
31
|
+
strength=uint8(5),
|
|
32
|
+
size=uint8(28),
|
|
33
|
+
)
|
|
25
34
|
expected_proof = b"test_proof_data_12345"
|
|
26
35
|
with patch.object(solver, "solve", return_value=expected_proof):
|
|
27
36
|
api_result = await solver_api.solve(test_info)
|
chia/_tests/testconfig.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Literal
|
|
3
|
+
from typing import Literal
|
|
4
4
|
|
|
5
5
|
# Defaults are conservative.
|
|
6
|
-
parallel:
|
|
6
|
+
parallel: bool | int | Literal["auto"] = True
|
|
7
7
|
checkout_blocks_and_plots = False
|
|
8
8
|
install_timelord = False
|
|
9
9
|
# NOTE: do not use until the hangs are fixed
|