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
|
@@ -19,7 +19,7 @@ from chia._tests.environments.wallet import (
|
|
|
19
19
|
from chia._tests.util.time_out_assert import time_out_assert, time_out_assert_not_none
|
|
20
20
|
from chia.simulator.simulator_protocol import ReorgProtocol
|
|
21
21
|
from chia.types.blockchain_format.coin import Coin, coin_as_list
|
|
22
|
-
from chia.types.blockchain_format.program import
|
|
22
|
+
from chia.types.blockchain_format.program import Program
|
|
23
23
|
from chia.types.coin_spend import make_spend
|
|
24
24
|
from chia.util.bech32m import encode_puzzle_hash
|
|
25
25
|
from chia.util.db_wrapper import DBWrapper2
|
|
@@ -82,7 +82,9 @@ async def mint_cat(
|
|
|
82
82
|
1,
|
|
83
83
|
[
|
|
84
84
|
CreateCoin(wrapped_inner_puzzle_hash, amount, memos=[inner_puzzle_hash]).to_program(),
|
|
85
|
-
UnknownCondition(
|
|
85
|
+
UnknownCondition(
|
|
86
|
+
opcode=Program.to(51), args=[Program.NIL, Program.to(-113), tail, Program.NIL]
|
|
87
|
+
).to_program(),
|
|
86
88
|
],
|
|
87
89
|
)
|
|
88
90
|
)
|
|
@@ -112,14 +114,14 @@ async def mint_cat(
|
|
|
112
114
|
cat_addition,
|
|
113
115
|
tail_hash,
|
|
114
116
|
eve_inner_puzzle,
|
|
115
|
-
NIL,
|
|
117
|
+
Program.NIL,
|
|
116
118
|
)
|
|
117
119
|
],
|
|
118
120
|
)
|
|
119
121
|
)
|
|
120
122
|
|
|
121
123
|
cat_wallet = await wallet_type.get_or_create_wallet_for_cat(
|
|
122
|
-
environment.wallet_state_manager, environment.xch_wallet, tail_hash
|
|
124
|
+
environment.wallet_state_manager, environment.xch_wallet, tail_hash, *extra_args
|
|
123
125
|
)
|
|
124
126
|
|
|
125
127
|
await wallet_environments.process_pending_states(
|
|
@@ -575,7 +577,7 @@ async def test_get_wallet_for_asset_id(wallet_environments: WalletTestFramework,
|
|
|
575
577
|
|
|
576
578
|
# Test that the a default CAT will initialize correctly
|
|
577
579
|
asset = DEFAULT_CATS[next(iter(DEFAULT_CATS))]
|
|
578
|
-
asset_id = asset["asset_id"]
|
|
580
|
+
asset_id = bytes32.from_hexstr(asset["asset_id"])
|
|
579
581
|
if wallet_type is RCATWallet:
|
|
580
582
|
extra_args: Any = (bytes32.zeros,)
|
|
581
583
|
else:
|
|
@@ -1087,7 +1089,9 @@ async def test_cat_max_amount_send(wallet_environments: WalletTestFramework, wal
|
|
|
1087
1089
|
for i in range(1, 50):
|
|
1088
1090
|
amounts.append(uint64(i))
|
|
1089
1091
|
puzzle_hashes.append(cat_2_hash)
|
|
1090
|
-
spent_coin = (
|
|
1092
|
+
spent_coin = next(
|
|
1093
|
+
iter(await cat_wallet.wallet_state_manager.get_spendable_coins_for_wallet(cat_wallet.id()))
|
|
1094
|
+
).coin
|
|
1091
1095
|
await cat_wallet.generate_signed_transaction(amounts, puzzle_hashes, action_scope, coins={spent_coin})
|
|
1092
1096
|
|
|
1093
1097
|
await wallet_environments.process_pending_states(
|
|
@@ -1118,7 +1122,7 @@ async def test_cat_max_amount_send(wallet_environments: WalletTestFramework, wal
|
|
|
1118
1122
|
)
|
|
1119
1123
|
|
|
1120
1124
|
async def check_all_there() -> bool:
|
|
1121
|
-
spendable = await cat_wallet.
|
|
1125
|
+
spendable = await cat_wallet.wallet_state_manager.get_spendable_coins_for_wallet(cat_wallet.id())
|
|
1122
1126
|
spendable_name_set = set()
|
|
1123
1127
|
for record in spendable:
|
|
1124
1128
|
spendable_name_set.add(record.coin.name())
|
|
@@ -1411,7 +1415,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
|
|
|
1411
1415
|
if wallet_type is RCATWallet:
|
|
1412
1416
|
inner_puzhash = create_revocation_layer(bytes32.zeros, inner_puzhash).get_tree_hash()
|
|
1413
1417
|
puzzlehash_unhardened = construct_cat_puzzle(
|
|
1414
|
-
CAT_MOD, Program.
|
|
1418
|
+
CAT_MOD, Program.NIL.get_tree_hash(), inner_puzhash
|
|
1415
1419
|
).get_tree_hash_precalc(inner_puzhash)
|
|
1416
1420
|
change_derivation = DerivationRecord(
|
|
1417
1421
|
uint32(0), puzzlehash_unhardened, pubkey_unhardened, WalletType.CAT, uint32(2), False
|
|
@@ -1422,7 +1426,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
|
|
|
1422
1426
|
our_puzzle = await action_scope.get_puzzle(wallet.wallet_state_manager)
|
|
1423
1427
|
cat_puzzle = construct_cat_puzzle(
|
|
1424
1428
|
CAT_MOD,
|
|
1425
|
-
Program.
|
|
1429
|
+
Program.NIL.get_tree_hash(),
|
|
1426
1430
|
Program.to(1),
|
|
1427
1431
|
)
|
|
1428
1432
|
addr = encode_puzzle_hash(cat_puzzle.get_tree_hash(), "txch")
|
|
@@ -1451,7 +1455,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
|
|
|
1451
1455
|
cat_coin = next(c for c in spend_bundle.additions() if c.amount == cat_amount_0)
|
|
1452
1456
|
next_coin = Coin(
|
|
1453
1457
|
cat_coin.name(),
|
|
1454
|
-
construct_cat_puzzle(CAT_MOD, Program.
|
|
1458
|
+
construct_cat_puzzle(CAT_MOD, Program.NIL.get_tree_hash(), our_puzzle).get_tree_hash(),
|
|
1455
1459
|
cat_amount_0,
|
|
1456
1460
|
)
|
|
1457
1461
|
eve_spend, _ = await wsm.sign_bundle(
|
|
@@ -1478,7 +1482,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
|
|
|
1478
1482
|
),
|
|
1479
1483
|
make_spend(
|
|
1480
1484
|
next_coin,
|
|
1481
|
-
construct_cat_puzzle(CAT_MOD, Program.
|
|
1485
|
+
construct_cat_puzzle(CAT_MOD, Program.NIL.get_tree_hash(), our_puzzle),
|
|
1482
1486
|
Program.to(
|
|
1483
1487
|
[
|
|
1484
1488
|
[
|
|
@@ -1647,7 +1651,9 @@ async def test_cat_melt_balance(wallet_environments: WalletTestFramework) -> Non
|
|
|
1647
1651
|
# Let's test that continuing to melt this CAT results in the correct balance changes
|
|
1648
1652
|
for _ in range(5):
|
|
1649
1653
|
tx_amount -= 1
|
|
1650
|
-
new_coin = (
|
|
1654
|
+
new_coin = next(
|
|
1655
|
+
iter(await cat_wallet.wallet_state_manager.get_spendable_coins_for_wallet(cat_wallet.id()))
|
|
1656
|
+
).coin
|
|
1651
1657
|
new_spend = unsigned_spend_bundle_for_spendable_cats(
|
|
1652
1658
|
CAT_MOD,
|
|
1653
1659
|
[
|
|
@@ -1660,7 +1666,7 @@ async def test_cat_melt_balance(wallet_environments: WalletTestFramework) -> Non
|
|
|
1660
1666
|
conditions=(
|
|
1661
1667
|
UnknownCondition(
|
|
1662
1668
|
opcode=Program.to(51),
|
|
1663
|
-
args=[Program.
|
|
1669
|
+
args=[Program.NIL, Program.to(-113), Program.to(ACS_TAIL), Program.NIL],
|
|
1664
1670
|
),
|
|
1665
1671
|
),
|
|
1666
1672
|
),
|
|
@@ -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
|
from chia_rs import G2Element
|
|
@@ -43,8 +43,8 @@ def str_to_cat_hash(tail_str: str) -> bytes32:
|
|
|
43
43
|
|
|
44
44
|
# This method takes a dictionary of strings mapping to amounts and generates the appropriate CAT/XCH coins
|
|
45
45
|
async def generate_coins(
|
|
46
|
-
sim: SpendSim, sim_client: SimClient, requested_coins: dict[
|
|
47
|
-
) -> dict[
|
|
46
|
+
sim: SpendSim, sim_client: SimClient, requested_coins: dict[str | None, list[int]]
|
|
47
|
+
) -> dict[str | None, list[Coin]]:
|
|
48
48
|
await sim.farm_block(acs_ph)
|
|
49
49
|
parent_coin = next(cr.coin for cr in await sim_client.get_coin_records_by_puzzle_hash(acs_ph))
|
|
50
50
|
|
|
@@ -85,7 +85,7 @@ async def generate_coins(
|
|
|
85
85
|
await sim.farm_block()
|
|
86
86
|
|
|
87
87
|
# Search for all of the coins and put them into a dictionary
|
|
88
|
-
coin_dict: dict[
|
|
88
|
+
coin_dict: dict[str | None, list[Coin]] = {}
|
|
89
89
|
for tail_str, _ in requested_coins.items():
|
|
90
90
|
if tail_str:
|
|
91
91
|
tail_hash = str_to_tail_hash(tail_str)
|
|
@@ -113,7 +113,7 @@ def generate_secure_bundle(
|
|
|
113
113
|
selected_coins: list[Coin],
|
|
114
114
|
announcements: list[AssertPuzzleAnnouncement],
|
|
115
115
|
offered_amount: uint64,
|
|
116
|
-
tail_str:
|
|
116
|
+
tail_str: str | None = None,
|
|
117
117
|
) -> WalletSpendBundle:
|
|
118
118
|
announcement_assertions = [a.to_program() for a in announcements]
|
|
119
119
|
selected_coin_amount = sum(c.amount for c in selected_coins)
|
|
@@ -173,10 +173,10 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
|
|
|
173
173
|
{"type": AssetType.CAT.value, "tail": "0x" + str_to_tail_hash("blue").hex()}
|
|
174
174
|
),
|
|
175
175
|
}
|
|
176
|
-
|
|
176
|
+
driver_dict_as_summary = {key.hex(): value for key, value in driver_dict.items()}
|
|
177
177
|
|
|
178
178
|
# Create an XCH Offer for RED
|
|
179
|
-
chia_requested_payments: dict[
|
|
179
|
+
chia_requested_payments: dict[bytes32 | None, list[CreateCoin]] = {
|
|
180
180
|
str_to_tail_hash("red"): [
|
|
181
181
|
CreateCoin(acs_ph, uint64(100), [b"memo"]),
|
|
182
182
|
CreateCoin(acs_ph, uint64(200), [b"memo"]),
|
|
@@ -191,7 +191,7 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
|
|
|
191
191
|
# Create a RED Offer for XCH
|
|
192
192
|
red_coins_1 = red_coins[0:1]
|
|
193
193
|
red_coins_2 = red_coins[1:]
|
|
194
|
-
red_requested_payments: dict[
|
|
194
|
+
red_requested_payments: dict[bytes32 | None, list[CreateCoin]] = {
|
|
195
195
|
None: [CreateCoin(acs_ph, uint64(300), [b"red memo"]), CreateCoin(acs_ph, uint64(350), [b"red memo"])]
|
|
196
196
|
}
|
|
197
197
|
red_notarized_payments = Offer.notarize_payments(red_requested_payments, red_coins_1)
|
|
@@ -202,7 +202,7 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
|
|
|
202
202
|
red_offer = Offer(red_notarized_payments, red_secured_bundle, driver_dict)
|
|
203
203
|
assert not red_offer.is_valid()
|
|
204
204
|
|
|
205
|
-
red_requested_payments_2: dict[
|
|
205
|
+
red_requested_payments_2: dict[bytes32 | None, list[CreateCoin]] = {
|
|
206
206
|
None: [CreateCoin(acs_ph, uint64(50), [b"red memo"])]
|
|
207
207
|
}
|
|
208
208
|
red_notarized_payments_2 = Offer.notarize_payments(red_requested_payments_2, red_coins_2)
|
|
@@ -220,7 +220,7 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
|
|
|
220
220
|
assert new_offer.is_valid()
|
|
221
221
|
|
|
222
222
|
# Create yet another offer of BLUE for XCH and RED
|
|
223
|
-
blue_requested_payments: dict[
|
|
223
|
+
blue_requested_payments: dict[bytes32 | None, list[CreateCoin]] = {
|
|
224
224
|
None: [CreateCoin(acs_ph, uint64(200), [b"blue memo"])],
|
|
225
225
|
str_to_tail_hash("red"): [CreateCoin(acs_ph, uint64(50), [b"blue memo"])],
|
|
226
226
|
}
|
|
@@ -239,9 +239,9 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
|
|
|
239
239
|
}
|
|
240
240
|
assert new_offer.get_requested_amounts() == {None: 900, str_to_tail_hash("red"): 350}
|
|
241
241
|
assert new_offer.summary() == (
|
|
242
|
-
{"xch": 1000, str_to_tail_hash("red").hex(): 350, str_to_tail_hash("blue").hex(): 2000},
|
|
243
|
-
{"xch": 900, str_to_tail_hash("red").hex(): 350},
|
|
244
|
-
|
|
242
|
+
{"xch": "1000", str_to_tail_hash("red").hex(): "350", str_to_tail_hash("blue").hex(): "2000"},
|
|
243
|
+
{"xch": "900", str_to_tail_hash("red").hex(): "350"},
|
|
244
|
+
driver_dict_as_summary,
|
|
245
245
|
ConditionValidTimes(),
|
|
246
246
|
)
|
|
247
247
|
assert new_offer.get_pending_amounts() == {
|
|
@@ -28,7 +28,7 @@ from chia.wallet.outer_puzzles import AssetType
|
|
|
28
28
|
from chia.wallet.puzzle_drivers import PuzzleInfo
|
|
29
29
|
from chia.wallet.trade_manager import TradeManager
|
|
30
30
|
from chia.wallet.trade_record import TradeRecord
|
|
31
|
-
from chia.wallet.trading.offer import Offer,
|
|
31
|
+
from chia.wallet.trading.offer import Offer, OfferSpecification
|
|
32
32
|
from chia.wallet.trading.trade_status import TradeStatus
|
|
33
33
|
from chia.wallet.transaction_record import TransactionRecord
|
|
34
34
|
from chia.wallet.util.transaction_type import TransactionType
|
|
@@ -36,7 +36,14 @@ from chia.wallet.vc_wallet.cr_cat_drivers import ProofsChecker
|
|
|
36
36
|
from chia.wallet.vc_wallet.cr_cat_wallet import CRCATWallet
|
|
37
37
|
from chia.wallet.vc_wallet.vc_store import VCProofs
|
|
38
38
|
from chia.wallet.wallet_node import WalletNode
|
|
39
|
-
from chia.wallet.wallet_request_types import
|
|
39
|
+
from chia.wallet.wallet_request_types import (
|
|
40
|
+
CRCATApprovePending,
|
|
41
|
+
VCAddProofs,
|
|
42
|
+
VCGetList,
|
|
43
|
+
VCGetProofsForRoot,
|
|
44
|
+
VCMint,
|
|
45
|
+
VCSpend,
|
|
46
|
+
)
|
|
40
47
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
41
48
|
|
|
42
49
|
|
|
@@ -119,7 +126,7 @@ async def test_cat_trades(
|
|
|
119
126
|
|
|
120
127
|
trusted = len(wallet_node_maker.config["trusted_peers"]) > 0
|
|
121
128
|
|
|
122
|
-
# Because making/taking CR-CATs is
|
|
129
|
+
# Because making/taking CR-CATs is asymmetrical, approving the hacked together aggregation test will fail
|
|
123
130
|
# The taker is "making" offers that it is approving with a VC which multiple actual makers would never do
|
|
124
131
|
# This is really a test of CATOuterPuzzle anyways and is not correlated with any of our params
|
|
125
132
|
test_aggregation = not credential_restricted and not wallet_environments.tx_config.reuse_puzhash and trusted
|
|
@@ -173,7 +180,7 @@ async def test_cat_trades(
|
|
|
173
180
|
cat_wallet_maker: CATWallet = await CRCATWallet.get_or_create_wallet_for_cat(
|
|
174
181
|
wallet_node_maker.wallet_state_manager,
|
|
175
182
|
wallet_maker,
|
|
176
|
-
tail_maker.get_tree_hash()
|
|
183
|
+
tail_maker.get_tree_hash(),
|
|
177
184
|
None,
|
|
178
185
|
authorized_providers,
|
|
179
186
|
proofs_checker_maker,
|
|
@@ -181,7 +188,7 @@ async def test_cat_trades(
|
|
|
181
188
|
new_cat_wallet_taker: CATWallet = await CRCATWallet.get_or_create_wallet_for_cat(
|
|
182
189
|
wallet_node_taker.wallet_state_manager,
|
|
183
190
|
wallet_taker,
|
|
184
|
-
tail_taker.get_tree_hash()
|
|
191
|
+
tail_taker.get_tree_hash(),
|
|
185
192
|
None,
|
|
186
193
|
authorized_providers,
|
|
187
194
|
proofs_checker_taker,
|
|
@@ -415,29 +422,29 @@ async def test_cat_trades(
|
|
|
415
422
|
await env_maker.check_balances()
|
|
416
423
|
|
|
417
424
|
# Create the trade parameters
|
|
418
|
-
chia_for_cat:
|
|
425
|
+
chia_for_cat: OfferSpecification = {
|
|
419
426
|
wallet_maker.id(): -1,
|
|
420
|
-
|
|
427
|
+
new_cat_wallet_maker.get_asset_id(): 2, # This is the CAT that the taker made
|
|
421
428
|
}
|
|
422
|
-
cat_for_chia:
|
|
429
|
+
cat_for_chia: OfferSpecification = {
|
|
423
430
|
wallet_maker.id(): 3,
|
|
424
431
|
cat_wallet_maker.id(): -4, # The taker has no knowledge of this CAT yet
|
|
425
432
|
}
|
|
426
|
-
cat_for_cat:
|
|
427
|
-
|
|
433
|
+
cat_for_cat: OfferSpecification = {
|
|
434
|
+
cat_wallet_maker.get_asset_id(): -5,
|
|
428
435
|
new_cat_wallet_maker.id(): 6,
|
|
429
436
|
}
|
|
430
|
-
chia_for_multiple_cat:
|
|
437
|
+
chia_for_multiple_cat: OfferSpecification = {
|
|
431
438
|
wallet_maker.id(): -7,
|
|
432
439
|
cat_wallet_maker.id(): 8,
|
|
433
440
|
new_cat_wallet_maker.id(): 9,
|
|
434
441
|
}
|
|
435
|
-
multiple_cat_for_chia:
|
|
442
|
+
multiple_cat_for_chia: OfferSpecification = {
|
|
436
443
|
wallet_maker.id(): 10,
|
|
437
444
|
cat_wallet_maker.id(): -11,
|
|
438
445
|
new_cat_wallet_maker.id(): -12,
|
|
439
446
|
}
|
|
440
|
-
chia_and_cat_for_cat:
|
|
447
|
+
chia_and_cat_for_cat: OfferSpecification = {
|
|
441
448
|
wallet_maker.id(): -13,
|
|
442
449
|
cat_wallet_maker.id(): -14,
|
|
443
450
|
new_cat_wallet_maker.id(): 15,
|
|
@@ -445,10 +452,10 @@ async def test_cat_trades(
|
|
|
445
452
|
|
|
446
453
|
driver_dict: dict[bytes32, PuzzleInfo] = {}
|
|
447
454
|
for wallet in (cat_wallet_maker, new_cat_wallet_maker):
|
|
448
|
-
asset_id
|
|
455
|
+
asset_id = wallet.get_asset_id()
|
|
449
456
|
driver_item: dict[str, Any] = {
|
|
450
457
|
"type": AssetType.CAT.value,
|
|
451
|
-
"tail": "0x" + asset_id,
|
|
458
|
+
"tail": "0x" + asset_id.hex(),
|
|
452
459
|
}
|
|
453
460
|
if credential_restricted:
|
|
454
461
|
driver_item["also"] = {
|
|
@@ -460,7 +467,7 @@ async def test_cat_trades(
|
|
|
460
467
|
else proofs_checker_taker.as_program()
|
|
461
468
|
),
|
|
462
469
|
}
|
|
463
|
-
driver_dict[
|
|
470
|
+
driver_dict[asset_id] = PuzzleInfo(driver_item)
|
|
464
471
|
|
|
465
472
|
trade_manager_maker = env_maker.wallet_state_manager.trade_manager
|
|
466
473
|
trade_manager_taker = env_taker.wallet_state_manager.trade_manager
|
|
@@ -559,7 +566,7 @@ async def test_cat_trades(
|
|
|
559
566
|
"pending_coin_removal_count": 1,
|
|
560
567
|
"<=#spendable_balance": -2,
|
|
561
568
|
"<=#max_send_amount": -2,
|
|
562
|
-
# Unconfirmed balance doesn't change because
|
|
569
|
+
# Unconfirmed balance doesn't change because receiving 1 XCH and spending 1 in fee
|
|
563
570
|
"unconfirmed_wallet_balance": 0,
|
|
564
571
|
">=#pending_change": 1, # any amount increase
|
|
565
572
|
},
|
|
@@ -586,7 +593,7 @@ async def test_cat_trades(
|
|
|
586
593
|
"unspent_coin_count": 1,
|
|
587
594
|
">#spendable_balance": 0,
|
|
588
595
|
">#max_send_amount": 0,
|
|
589
|
-
# Confirmed balance doesn't change because
|
|
596
|
+
# Confirmed balance doesn't change because receiving 1 XCH and spending 1 in fee
|
|
590
597
|
"confirmed_wallet_balance": 0,
|
|
591
598
|
"<=#pending_change": 1, # any amount decrease
|
|
592
599
|
},
|
|
@@ -613,8 +620,7 @@ async def test_cat_trades(
|
|
|
613
620
|
|
|
614
621
|
if credential_restricted:
|
|
615
622
|
await client_maker.crcat_approve_pending(
|
|
616
|
-
new_cat_wallet_maker.id(),
|
|
617
|
-
uint64(2),
|
|
623
|
+
CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(2), push=True),
|
|
618
624
|
wallet_environments.tx_config,
|
|
619
625
|
)
|
|
620
626
|
|
|
@@ -953,8 +959,7 @@ async def test_cat_trades(
|
|
|
953
959
|
|
|
954
960
|
if credential_restricted:
|
|
955
961
|
await client_maker.crcat_approve_pending(
|
|
956
|
-
new_cat_wallet_maker.id(),
|
|
957
|
-
uint64(6),
|
|
962
|
+
CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(6), push=True),
|
|
958
963
|
wallet_environments.tx_config,
|
|
959
964
|
)
|
|
960
965
|
|
|
@@ -1191,8 +1196,7 @@ async def test_cat_trades(
|
|
|
1191
1196
|
|
|
1192
1197
|
if credential_restricted:
|
|
1193
1198
|
await client_maker.crcat_approve_pending(
|
|
1194
|
-
cat_wallet_maker.id(),
|
|
1195
|
-
uint64(8),
|
|
1199
|
+
CRCATApprovePending(wallet_id=cat_wallet_maker.id(), min_amount_to_claim=uint64(8), push=True),
|
|
1196
1200
|
wallet_environments.tx_config,
|
|
1197
1201
|
)
|
|
1198
1202
|
|
|
@@ -1238,8 +1242,7 @@ async def test_cat_trades(
|
|
|
1238
1242
|
)
|
|
1239
1243
|
|
|
1240
1244
|
await client_maker.crcat_approve_pending(
|
|
1241
|
-
new_cat_wallet_maker.id(),
|
|
1242
|
-
uint64(9),
|
|
1245
|
+
CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(9), push=True),
|
|
1243
1246
|
wallet_environments.tx_config,
|
|
1244
1247
|
)
|
|
1245
1248
|
|
|
@@ -1561,8 +1564,7 @@ async def test_cat_trades(
|
|
|
1561
1564
|
|
|
1562
1565
|
if credential_restricted:
|
|
1563
1566
|
await client_maker.crcat_approve_pending(
|
|
1564
|
-
new_cat_wallet_maker.id(),
|
|
1565
|
-
uint64(15),
|
|
1567
|
+
CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(15), push=True),
|
|
1566
1568
|
wallet_environments.tx_config,
|
|
1567
1569
|
)
|
|
1568
1570
|
|
|
@@ -1673,12 +1675,12 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework, wall
|
|
|
1673
1675
|
]
|
|
1674
1676
|
)
|
|
1675
1677
|
|
|
1676
|
-
cat_for_chia:
|
|
1678
|
+
cat_for_chia: OfferSpecification = {
|
|
1677
1679
|
env_maker.wallet_aliases["xch"]: 1,
|
|
1678
1680
|
env_maker.wallet_aliases["cat"]: -2,
|
|
1679
1681
|
}
|
|
1680
1682
|
|
|
1681
|
-
chia_for_cat:
|
|
1683
|
+
chia_for_cat: OfferSpecification = {
|
|
1682
1684
|
env_maker.wallet_aliases["xch"]: -3,
|
|
1683
1685
|
env_maker.wallet_aliases["cat"]: 4,
|
|
1684
1686
|
}
|
|
@@ -1805,7 +1807,7 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework, wall
|
|
|
1805
1807
|
# This take should fail since we have no CATs to fulfill it with
|
|
1806
1808
|
with pytest.raises(
|
|
1807
1809
|
ValueError,
|
|
1808
|
-
match=f"Do not have a wallet for asset ID: {cat_wallet_maker.get_asset_id()} to fulfill offer",
|
|
1810
|
+
match=f"Do not have a wallet for asset ID: {cat_wallet_maker.get_asset_id().hex()} to fulfill offer",
|
|
1809
1811
|
):
|
|
1810
1812
|
async with env_taker.wallet_state_manager.new_action_scope(
|
|
1811
1813
|
wallet_environments.tx_config, push=False
|
|
@@ -1846,7 +1848,7 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework, wall
|
|
|
1846
1848
|
await time_out_assert(15, get_trade_and_status, TradeStatus.CANCELLED, trade_manager_maker, trade_make)
|
|
1847
1849
|
|
|
1848
1850
|
# Now let's test the case where two coins need to be spent in order to cancel
|
|
1849
|
-
chia_and_cat_for_something:
|
|
1851
|
+
chia_and_cat_for_something: OfferSpecification = {
|
|
1850
1852
|
env_maker.wallet_aliases["xch"]: -5,
|
|
1851
1853
|
env_maker.wallet_aliases["cat"]: -6,
|
|
1852
1854
|
bytes32.zeros: 1, # Doesn't matter
|
|
@@ -1991,7 +1993,7 @@ async def test_trade_conflict(wallet_environments: WalletTestFramework, wallet_t
|
|
|
1991
1993
|
]
|
|
1992
1994
|
)
|
|
1993
1995
|
|
|
1994
|
-
cat_for_chia:
|
|
1996
|
+
cat_for_chia: OfferSpecification = {
|
|
1995
1997
|
env_maker.wallet_aliases["xch"]: 1000,
|
|
1996
1998
|
env_maker.wallet_aliases["cat"]: -4,
|
|
1997
1999
|
}
|
|
@@ -2182,7 +2184,7 @@ async def test_trade_bad_spend(wallet_environments: WalletTestFramework, wallet_
|
|
|
2182
2184
|
]
|
|
2183
2185
|
)
|
|
2184
2186
|
|
|
2185
|
-
cat_for_chia:
|
|
2187
|
+
cat_for_chia: OfferSpecification = {
|
|
2186
2188
|
env_maker.wallet_aliases["xch"]: 1000,
|
|
2187
2189
|
env_maker.wallet_aliases["cat"]: -4,
|
|
2188
2190
|
}
|
|
@@ -2304,7 +2306,7 @@ async def test_trade_high_fee(wallet_environments: WalletTestFramework, wallet_t
|
|
|
2304
2306
|
]
|
|
2305
2307
|
)
|
|
2306
2308
|
|
|
2307
|
-
cat_for_chia:
|
|
2309
|
+
cat_for_chia: OfferSpecification = {
|
|
2308
2310
|
env_maker.wallet_aliases["xch"]: 1000,
|
|
2309
2311
|
env_maker.wallet_aliases["cat"]: -4,
|
|
2310
2312
|
}
|
|
@@ -2449,15 +2451,15 @@ async def test_aggregated_trade_state(wallet_environments: WalletTestFramework,
|
|
|
2449
2451
|
]
|
|
2450
2452
|
)
|
|
2451
2453
|
|
|
2452
|
-
cat_for_chia:
|
|
2454
|
+
cat_for_chia: OfferSpecification = {
|
|
2453
2455
|
env_maker.wallet_aliases["xch"]: 2,
|
|
2454
2456
|
env_maker.wallet_aliases["cat"]: -2,
|
|
2455
2457
|
}
|
|
2456
|
-
chia_for_cat:
|
|
2458
|
+
chia_for_cat: OfferSpecification = {
|
|
2457
2459
|
env_maker.wallet_aliases["xch"]: -1,
|
|
2458
2460
|
env_maker.wallet_aliases["cat"]: 1,
|
|
2459
2461
|
}
|
|
2460
|
-
combined_summary:
|
|
2462
|
+
combined_summary: OfferSpecification = {
|
|
2461
2463
|
env_maker.wallet_aliases["xch"]: cat_for_chia[env_maker.wallet_aliases["xch"]]
|
|
2462
2464
|
+ chia_for_cat[env_maker.wallet_aliases["xch"]],
|
|
2463
2465
|
env_maker.wallet_aliases["cat"]: cat_for_chia[env_maker.wallet_aliases["cat"]]
|
|
@@ -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
|
|
7
5
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -48,8 +46,8 @@ async def do_spend(
|
|
|
48
46
|
sim: SpendSim,
|
|
49
47
|
sim_client: SimClient,
|
|
50
48
|
spend_bundle: WalletSpendBundle,
|
|
51
|
-
expected_result: tuple[MempoolInclusionStatus,
|
|
52
|
-
cost_logger:
|
|
49
|
+
expected_result: tuple[MempoolInclusionStatus, Err | None],
|
|
50
|
+
cost_logger: CostLogger | None = None,
|
|
53
51
|
cost_log_msg: str = "",
|
|
54
52
|
) -> int:
|
|
55
53
|
if cost_logger is not None:
|
chia/_tests/wallet/conftest.py
CHANGED
|
@@ -2,10 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import unittest
|
|
5
|
-
from collections.abc import AsyncIterator, Awaitable
|
|
5
|
+
from collections.abc import AsyncIterator, Awaitable, Callable
|
|
6
6
|
from contextlib import AsyncExitStack
|
|
7
7
|
from dataclasses import replace
|
|
8
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
11
|
from chia_rs import (
|
|
@@ -34,7 +34,7 @@ from chia.wallet.wallet_state_manager import WalletStateManager
|
|
|
34
34
|
@pytest.fixture(scope="function", autouse=True)
|
|
35
35
|
def block_is_current_at(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
36
36
|
def make_new_synced(func: Callable[..., Awaitable[bool]]) -> Any:
|
|
37
|
-
async def mocked_synced(self: Any, block_is_current_at:
|
|
37
|
+
async def mocked_synced(self: Any, block_is_current_at: uint64 | None = uint64(0)) -> bool:
|
|
38
38
|
return await func(self, block_is_current_at)
|
|
39
39
|
|
|
40
40
|
return mocked_synced
|
|
@@ -83,11 +83,11 @@ async def ignore_block_validation(
|
|
|
83
83
|
return new_create
|
|
84
84
|
|
|
85
85
|
def run_block(
|
|
86
|
-
block: FullBlock, prev_generators: list[bytes], constants: ConsensusConstants
|
|
87
|
-
) -> tuple[
|
|
86
|
+
block: FullBlock, prev_generators: list[bytes], prev_tx_height: uint32, constants: ConsensusConstants
|
|
87
|
+
) -> tuple[int | None, SpendBundleConditions | None]:
|
|
88
88
|
assert block.transactions_generator is not None
|
|
89
89
|
assert block.transactions_info is not None
|
|
90
|
-
flags = get_flags_for_height_and_constants(
|
|
90
|
+
flags = get_flags_for_height_and_constants(prev_tx_height, constants) | DONT_VALIDATE_SIGNATURE
|
|
91
91
|
if block.height >= constants.HARD_FORK_HEIGHT:
|
|
92
92
|
run_block = run_block_generator2
|
|
93
93
|
else:
|
|
@@ -8,7 +8,7 @@ from chia_rs.sized_ints import uint64
|
|
|
8
8
|
|
|
9
9
|
from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
|
|
10
10
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
11
|
-
from chia.data_layer.data_layer_wallet import DataLayerWallet
|
|
11
|
+
from chia.data_layer.data_layer_wallet import DataLayerSummary, DataLayerWallet, SingletonDependencies, SingletonSummary
|
|
12
12
|
from chia.wallet.puzzle_drivers import Solver
|
|
13
13
|
from chia.wallet.trade_record import TradeRecord
|
|
14
14
|
from chia.wallet.trading.offer import Offer
|
|
@@ -179,20 +179,20 @@ async def test_dl_offers(wallet_environments: WalletTestFramework) -> None:
|
|
|
179
179
|
assert success is True
|
|
180
180
|
assert offer_maker is not None
|
|
181
181
|
|
|
182
|
-
assert await trade_manager_taker.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
182
|
+
assert await trade_manager_taker.get_dl_offer_summary(Offer.from_bytes(offer_maker.offer)) == DataLayerSummary(
|
|
183
|
+
offered=[
|
|
184
|
+
SingletonSummary(
|
|
185
|
+
launcher_id=launcher_id_maker,
|
|
186
|
+
new_root=maker_root,
|
|
187
|
+
dependencies=[
|
|
188
|
+
SingletonDependencies(
|
|
189
|
+
launcher_id=launcher_id_taker,
|
|
190
|
+
values_to_prove=[taker_branch],
|
|
191
|
+
)
|
|
192
192
|
],
|
|
193
|
-
|
|
193
|
+
)
|
|
194
194
|
]
|
|
195
|
-
|
|
195
|
+
)
|
|
196
196
|
|
|
197
197
|
[_maker_offer], signing_response = await wsm_maker.sign_offers([Offer.from_bytes(offer_maker.offer)])
|
|
198
198
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -231,30 +231,30 @@ async def test_dl_offers(wallet_environments: WalletTestFramework) -> None:
|
|
|
231
231
|
)
|
|
232
232
|
assert offer_taker is not None
|
|
233
233
|
|
|
234
|
-
assert await trade_manager_maker.
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
234
|
+
assert await trade_manager_maker.get_dl_offer_summary(Offer.from_bytes(offer_taker.offer)) == DataLayerSummary(
|
|
235
|
+
offered=[
|
|
236
|
+
SingletonSummary(
|
|
237
|
+
launcher_id=launcher_id_maker,
|
|
238
|
+
new_root=maker_root,
|
|
239
|
+
dependencies=[
|
|
240
|
+
SingletonDependencies(
|
|
241
|
+
launcher_id=launcher_id_taker,
|
|
242
|
+
values_to_prove=[taker_branch],
|
|
243
|
+
)
|
|
244
244
|
],
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
245
|
+
),
|
|
246
|
+
SingletonSummary(
|
|
247
|
+
launcher_id=launcher_id_taker,
|
|
248
|
+
new_root=taker_root,
|
|
249
|
+
dependencies=[
|
|
250
|
+
SingletonDependencies(
|
|
251
|
+
launcher_id=launcher_id_maker,
|
|
252
|
+
values_to_prove=[maker_branch],
|
|
253
|
+
),
|
|
254
254
|
],
|
|
255
|
-
|
|
255
|
+
),
|
|
256
256
|
]
|
|
257
|
-
|
|
257
|
+
)
|
|
258
258
|
|
|
259
259
|
await wallet_environments.process_pending_states(
|
|
260
260
|
[
|
|
@@ -34,7 +34,14 @@ from chia.wallet.util.wallet_types import WalletType
|
|
|
34
34
|
from chia.wallet.wallet import Wallet
|
|
35
35
|
from chia.wallet.wallet_action_scope import WalletActionScope
|
|
36
36
|
from chia.wallet.wallet_node import WalletNode
|
|
37
|
-
from chia.wallet.wallet_request_types import
|
|
37
|
+
from chia.wallet.wallet_request_types import (
|
|
38
|
+
CreateNewWallet,
|
|
39
|
+
CreateNewWalletType,
|
|
40
|
+
DIDFindLostDID,
|
|
41
|
+
DIDGetCurrentCoinInfo,
|
|
42
|
+
DIDGetInfo,
|
|
43
|
+
DIDType,
|
|
44
|
+
)
|
|
38
45
|
from chia.wallet.wallet_rpc_api import WalletRpcApi
|
|
39
46
|
|
|
40
47
|
|
|
@@ -284,11 +291,14 @@ async def test_creation_from_backup_file(wallet_environments: WalletTestFramewor
|
|
|
284
291
|
backup_data = did_wallet_1.create_backup()
|
|
285
292
|
|
|
286
293
|
# Wallet2 recovers DIDWallet2 to a new set of keys
|
|
287
|
-
await env_2.rpc_client.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
294
|
+
await env_2.rpc_client.create_new_wallet(
|
|
295
|
+
CreateNewWallet(
|
|
296
|
+
wallet_type=CreateNewWalletType.DID_WALLET,
|
|
297
|
+
did_type=DIDType.RECOVERY,
|
|
298
|
+
backup_data=backup_data,
|
|
299
|
+
push=True,
|
|
300
|
+
),
|
|
301
|
+
wallet_environments.tx_config,
|
|
292
302
|
)
|
|
293
303
|
did_wallet_2 = env_2.wallet_state_manager.get_wallet(id=uint32(2), required_type=DIDWallet)
|
|
294
304
|
current_coin_info_response = await env_0.rpc_client.did_get_current_coin_info(
|