chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__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/_tests/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- 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.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc1.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
|
@@ -3,7 +3,8 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import logging
|
|
5
5
|
import random
|
|
6
|
-
from
|
|
6
|
+
from collections.abc import Coroutine
|
|
7
|
+
from typing import Any, Callable, Optional
|
|
7
8
|
|
|
8
9
|
import pytest
|
|
9
10
|
|
|
@@ -173,7 +174,7 @@ async def test_nft_offer_sell_nft(
|
|
|
173
174
|
assert not mempool_not_empty(full_node_api)
|
|
174
175
|
peer = wallet_node_taker.get_full_node_peer()
|
|
175
176
|
|
|
176
|
-
[
|
|
177
|
+
[_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
|
|
177
178
|
[Offer.from_bytes(trade_make.offer)]
|
|
178
179
|
)
|
|
179
180
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -313,7 +314,7 @@ async def test_nft_offer_request_nft(
|
|
|
313
314
|
taker_fee = 1
|
|
314
315
|
|
|
315
316
|
peer = wallet_node_taker.get_full_node_peer()
|
|
316
|
-
[
|
|
317
|
+
[_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
|
|
317
318
|
[Offer.from_bytes(trade_make.offer)]
|
|
318
319
|
)
|
|
319
320
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -411,7 +412,7 @@ async def test_nft_offer_sell_did_to_did(
|
|
|
411
412
|
20, full_node_api.full_node.mempool_manager.get_spendbundle, tx.spend_bundle.name()
|
|
412
413
|
)
|
|
413
414
|
|
|
414
|
-
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32
|
|
415
|
+
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
|
|
415
416
|
await full_node_api.wait_for_wallets_synced(wallet_nodes=[wallet_node_maker, wallet_node_taker], timeout=20)
|
|
416
417
|
|
|
417
418
|
await time_out_assert(20, get_nft_count, 1, nft_wallet_maker)
|
|
@@ -458,7 +459,7 @@ async def test_nft_offer_sell_did_to_did(
|
|
|
458
459
|
taker_fee = 1
|
|
459
460
|
|
|
460
461
|
peer = wallet_node_taker.get_full_node_peer()
|
|
461
|
-
[
|
|
462
|
+
[_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
|
|
462
463
|
[Offer.from_bytes(trade_make.offer)]
|
|
463
464
|
)
|
|
464
465
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -642,7 +643,7 @@ async def test_nft_offer_sell_nft_for_cat(
|
|
|
642
643
|
taker_fee = 1
|
|
643
644
|
|
|
644
645
|
peer = wallet_node_taker.get_full_node_peer()
|
|
645
|
-
[
|
|
646
|
+
[_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
|
|
646
647
|
[Offer.from_bytes(trade_make.offer)]
|
|
647
648
|
)
|
|
648
649
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -831,7 +832,7 @@ async def test_nft_offer_request_nft_for_cat(
|
|
|
831
832
|
taker_fee = 1
|
|
832
833
|
|
|
833
834
|
peer = wallet_node_taker.get_full_node_peer()
|
|
834
|
-
[
|
|
835
|
+
[_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
|
|
835
836
|
[Offer.from_bytes(trade_make.offer)]
|
|
836
837
|
)
|
|
837
838
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -954,7 +955,7 @@ async def test_nft_offer_sell_cancel(
|
|
|
954
955
|
offer_did_nft_for_xch = {nft_to_offer_asset_id: -1, wallet_maker.id(): xch_requested}
|
|
955
956
|
|
|
956
957
|
async with trade_manager_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=False) as action_scope:
|
|
957
|
-
|
|
958
|
+
_success, trade_make, _error = await trade_manager_maker.create_offer_for_ids(
|
|
958
959
|
offer_did_nft_for_xch, action_scope, {}, fee=maker_fee
|
|
959
960
|
)
|
|
960
961
|
|
|
@@ -1067,7 +1068,7 @@ async def test_nft_offer_sell_cancel_in_batch(
|
|
|
1067
1068
|
offer_did_nft_for_xch = {nft_to_offer_asset_id: -1, wallet_maker.id(): xch_requested}
|
|
1068
1069
|
|
|
1069
1070
|
async with trade_manager_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=False) as action_scope:
|
|
1070
|
-
|
|
1071
|
+
_success, trade_make, _error = await trade_manager_maker.create_offer_for_ids(
|
|
1071
1072
|
offer_did_nft_for_xch, action_scope, {}, fee=maker_fee
|
|
1072
1073
|
)
|
|
1073
1074
|
|
|
@@ -1083,7 +1084,7 @@ async def test_nft_offer_sell_cancel_in_batch(
|
|
|
1083
1084
|
await full_node_api.process_transaction_records(records=action_scope.side_effects.transactions)
|
|
1084
1085
|
|
|
1085
1086
|
for i in range(1, num_blocks):
|
|
1086
|
-
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32
|
|
1087
|
+
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
|
|
1087
1088
|
|
|
1088
1089
|
await time_out_assert(15, get_trade_and_status, TradeStatus.CANCELLED, trade_manager_maker, trade_make)
|
|
1089
1090
|
|
|
@@ -1104,7 +1105,7 @@ async def test_complex_nft_offer(
|
|
|
1104
1105
|
self_hostname: str,
|
|
1105
1106
|
two_wallet_nodes: Any,
|
|
1106
1107
|
trusted: Any,
|
|
1107
|
-
royalty_pts:
|
|
1108
|
+
royalty_pts: tuple[int, int, int],
|
|
1108
1109
|
seeded_random: random.Random,
|
|
1109
1110
|
) -> None:
|
|
1110
1111
|
"""
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import contextlib
|
|
3
4
|
import random
|
|
4
5
|
from typing import Any
|
|
5
6
|
|
|
@@ -203,42 +204,49 @@ async def test_nft_mint_from_did_rpc(
|
|
|
203
204
|
assert wallet_services[0].rpc_server is not None
|
|
204
205
|
assert full_node_service.rpc_server is not None
|
|
205
206
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
207
|
+
async with contextlib.AsyncExitStack() as exit_stack:
|
|
208
|
+
client = await exit_stack.enter_async_context(
|
|
209
|
+
WalletRpcClient.create_as_context(
|
|
210
|
+
self_hostname,
|
|
211
|
+
wallet_services[0].rpc_server.listen_port,
|
|
212
|
+
wallet_services[0].root_path,
|
|
213
|
+
wallet_services[0].config,
|
|
214
|
+
)
|
|
215
|
+
)
|
|
216
|
+
client_node = await exit_stack.enter_async_context(
|
|
217
|
+
FullNodeRpcClient.create_as_context(
|
|
218
|
+
self_hostname,
|
|
219
|
+
full_node_service.rpc_server.listen_port,
|
|
220
|
+
full_node_service.root_path,
|
|
221
|
+
full_node_service.config,
|
|
222
|
+
)
|
|
219
223
|
)
|
|
220
|
-
await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
|
|
221
224
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
+
async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
226
|
+
did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
|
|
227
|
+
wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
|
|
228
|
+
)
|
|
229
|
+
await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
|
|
225
230
|
|
|
226
|
-
|
|
227
|
-
|
|
231
|
+
await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
|
|
232
|
+
await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
|
|
233
|
+
await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
|
|
228
234
|
|
|
229
|
-
|
|
235
|
+
hex_did_id = did_wallet_maker.get_my_DID()
|
|
236
|
+
hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
|
|
230
237
|
|
|
231
|
-
|
|
232
|
-
dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
|
|
233
|
-
)
|
|
234
|
-
assert isinstance(nft_wallet_maker, dict)
|
|
235
|
-
assert nft_wallet_maker.get("success")
|
|
238
|
+
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
|
|
236
239
|
|
|
237
|
-
|
|
240
|
+
nft_wallet_maker = await api_maker.create_new_wallet(
|
|
241
|
+
dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
|
|
242
|
+
)
|
|
243
|
+
assert isinstance(nft_wallet_maker, dict)
|
|
244
|
+
assert nft_wallet_maker.get("success")
|
|
238
245
|
|
|
239
|
-
|
|
246
|
+
nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
|
|
247
|
+
|
|
248
|
+
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
|
|
240
249
|
|
|
241
|
-
try:
|
|
242
250
|
n = 10
|
|
243
251
|
metadata_list = [
|
|
244
252
|
{
|
|
@@ -291,8 +299,10 @@ async def test_nft_mint_from_did_rpc(
|
|
|
291
299
|
tx_config=DEFAULT_TX_CONFIG,
|
|
292
300
|
)
|
|
293
301
|
sb = resp.spend_bundle
|
|
294
|
-
did_lineage_parent =
|
|
295
|
-
did_coin =
|
|
302
|
+
did_lineage_parent = next(cn for cn in sb.removals() if cn.name() == did_coin.name()).parent_coin_info.hex()
|
|
303
|
+
did_coin = next(
|
|
304
|
+
cn for cn in sb.additions() if (cn.parent_coin_info == did_coin.name()) and (cn.amount == 1)
|
|
305
|
+
)
|
|
296
306
|
spends.append(sb)
|
|
297
307
|
xch_adds = [c for c in sb.additions() if c.puzzle_hash == funding_coin.puzzle_hash]
|
|
298
308
|
assert len(xch_adds) == 1
|
|
@@ -327,11 +337,6 @@ async def test_nft_mint_from_did_rpc(
|
|
|
327
337
|
assert meta_dict["edition_number"] == nft.edition_number
|
|
328
338
|
assert meta_dict["edition_total"] == nft.edition_total
|
|
329
339
|
assert nft.launcher_id in nft_ids
|
|
330
|
-
finally:
|
|
331
|
-
client.close()
|
|
332
|
-
client_node.close()
|
|
333
|
-
await client.await_closed()
|
|
334
|
-
await client_node.await_closed()
|
|
335
340
|
|
|
336
341
|
|
|
337
342
|
@pytest.mark.parametrize(
|
|
@@ -391,41 +396,49 @@ async def test_nft_mint_from_did_rpc_no_royalties(
|
|
|
391
396
|
assert wallet_services[0].rpc_server is not None
|
|
392
397
|
assert full_node_service.rpc_server is not None
|
|
393
398
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
399
|
+
async with contextlib.AsyncExitStack() as exit_stack:
|
|
400
|
+
client = await exit_stack.enter_async_context(
|
|
401
|
+
WalletRpcClient.create_as_context(
|
|
402
|
+
self_hostname,
|
|
403
|
+
wallet_services[0].rpc_server.listen_port,
|
|
404
|
+
wallet_services[0].root_path,
|
|
405
|
+
wallet_services[0].config,
|
|
406
|
+
)
|
|
407
|
+
)
|
|
408
|
+
client_node = await exit_stack.enter_async_context(
|
|
409
|
+
FullNodeRpcClient.create_as_context(
|
|
410
|
+
self_hostname,
|
|
411
|
+
full_node_service.rpc_server.listen_port,
|
|
412
|
+
full_node_service.root_path,
|
|
413
|
+
full_node_service.config,
|
|
414
|
+
)
|
|
407
415
|
)
|
|
408
|
-
await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
|
|
409
416
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
417
|
+
async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
418
|
+
did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
|
|
419
|
+
wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
|
|
420
|
+
)
|
|
421
|
+
await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
|
|
413
422
|
|
|
414
|
-
|
|
415
|
-
|
|
423
|
+
await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
|
|
424
|
+
await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
|
|
425
|
+
await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
|
|
416
426
|
|
|
417
|
-
|
|
427
|
+
hex_did_id = did_wallet_maker.get_my_DID()
|
|
428
|
+
hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
|
|
418
429
|
|
|
419
|
-
|
|
420
|
-
dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
|
|
421
|
-
)
|
|
422
|
-
assert isinstance(nft_wallet_maker, dict)
|
|
423
|
-
assert nft_wallet_maker.get("success")
|
|
430
|
+
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
|
|
424
431
|
|
|
425
|
-
|
|
432
|
+
nft_wallet_maker = await api_maker.create_new_wallet(
|
|
433
|
+
dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
|
|
434
|
+
)
|
|
435
|
+
assert isinstance(nft_wallet_maker, dict)
|
|
436
|
+
assert nft_wallet_maker.get("success")
|
|
437
|
+
|
|
438
|
+
nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
|
|
439
|
+
|
|
440
|
+
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
|
|
426
441
|
|
|
427
|
-
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
|
|
428
|
-
try:
|
|
429
442
|
n = 10
|
|
430
443
|
metadata_list = [
|
|
431
444
|
{
|
|
@@ -476,8 +489,10 @@ async def test_nft_mint_from_did_rpc_no_royalties(
|
|
|
476
489
|
tx_config=DEFAULT_TX_CONFIG,
|
|
477
490
|
)
|
|
478
491
|
sb = resp.spend_bundle
|
|
479
|
-
did_lineage_parent =
|
|
480
|
-
did_coin =
|
|
492
|
+
did_lineage_parent = next(cn for cn in sb.removals() if cn.name() == did_coin.name()).parent_coin_info.hex()
|
|
493
|
+
did_coin = next(
|
|
494
|
+
cn for cn in sb.additions() if (cn.parent_coin_info == did_coin.name()) and (cn.amount == 1)
|
|
495
|
+
)
|
|
481
496
|
spends.append(sb)
|
|
482
497
|
xch_adds = [c for c in sb.additions() if c.puzzle_hash == funding_coin.puzzle_hash]
|
|
483
498
|
assert len(xch_adds) == 1
|
|
@@ -495,12 +510,6 @@ async def test_nft_mint_from_did_rpc_no_royalties(
|
|
|
495
510
|
|
|
496
511
|
await time_out_assert(60, get_taker_nfts, n)
|
|
497
512
|
|
|
498
|
-
finally:
|
|
499
|
-
client.close()
|
|
500
|
-
client_node.close()
|
|
501
|
-
await client.await_closed()
|
|
502
|
-
await client_node.await_closed()
|
|
503
|
-
|
|
504
513
|
|
|
505
514
|
@pytest.mark.parametrize(
|
|
506
515
|
"trusted",
|
|
@@ -783,42 +792,49 @@ async def test_nft_mint_from_xch_rpc(
|
|
|
783
792
|
assert wallet_services[0].rpc_server is not None
|
|
784
793
|
assert full_node_service.rpc_server is not None
|
|
785
794
|
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
795
|
+
async with contextlib.AsyncExitStack() as exit_stack:
|
|
796
|
+
client = await exit_stack.enter_async_context(
|
|
797
|
+
WalletRpcClient.create_as_context(
|
|
798
|
+
self_hostname,
|
|
799
|
+
wallet_services[0].rpc_server.listen_port,
|
|
800
|
+
wallet_services[0].root_path,
|
|
801
|
+
wallet_services[0].config,
|
|
802
|
+
)
|
|
803
|
+
)
|
|
804
|
+
client_node = await exit_stack.enter_async_context(
|
|
805
|
+
FullNodeRpcClient.create_as_context(
|
|
806
|
+
self_hostname,
|
|
807
|
+
full_node_service.rpc_server.listen_port,
|
|
808
|
+
full_node_service.root_path,
|
|
809
|
+
full_node_service.config,
|
|
810
|
+
)
|
|
799
811
|
)
|
|
800
|
-
await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
|
|
801
812
|
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
813
|
+
async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
814
|
+
did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
|
|
815
|
+
wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
|
|
816
|
+
)
|
|
817
|
+
await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
|
|
805
818
|
|
|
806
|
-
|
|
807
|
-
|
|
819
|
+
await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
|
|
820
|
+
await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
|
|
821
|
+
await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
|
|
808
822
|
|
|
809
|
-
|
|
823
|
+
hex_did_id = did_wallet_maker.get_my_DID()
|
|
824
|
+
hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
|
|
810
825
|
|
|
811
|
-
|
|
812
|
-
dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
|
|
813
|
-
)
|
|
814
|
-
assert isinstance(nft_wallet_maker, dict)
|
|
815
|
-
assert nft_wallet_maker.get("success")
|
|
826
|
+
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
|
|
816
827
|
|
|
817
|
-
|
|
828
|
+
nft_wallet_maker = await api_maker.create_new_wallet(
|
|
829
|
+
dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
|
|
830
|
+
)
|
|
831
|
+
assert isinstance(nft_wallet_maker, dict)
|
|
832
|
+
assert nft_wallet_maker.get("success")
|
|
818
833
|
|
|
819
|
-
|
|
834
|
+
nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
|
|
835
|
+
|
|
836
|
+
await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
|
|
820
837
|
|
|
821
|
-
try:
|
|
822
838
|
n = 10
|
|
823
839
|
metadata_list = [
|
|
824
840
|
{
|
|
@@ -898,12 +914,6 @@ async def test_nft_mint_from_xch_rpc(
|
|
|
898
914
|
assert meta_dict["edition_number"] == nft.edition_number
|
|
899
915
|
assert meta_dict["edition_total"] == nft.edition_total
|
|
900
916
|
|
|
901
|
-
finally:
|
|
902
|
-
client.close()
|
|
903
|
-
client_node.close()
|
|
904
|
-
await client.await_closed()
|
|
905
|
-
await client_node.await_closed()
|
|
906
|
-
|
|
907
917
|
|
|
908
918
|
@pytest.mark.parametrize(
|
|
909
919
|
"trusted",
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import itertools
|
|
4
|
-
from typing import List
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
from chia_rs import G2Element
|
|
8
7
|
|
|
9
|
-
from chia.
|
|
8
|
+
from chia._tests.util.spend_sim import CostLogger, sim_and_client
|
|
10
9
|
from chia.types.blockchain_format.program import Program
|
|
11
10
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
12
11
|
from chia.types.coin_spend import make_spend
|
|
@@ -68,13 +67,13 @@ async def test_state_layer(cost_logger: CostLogger, metadata_updater: str) -> No
|
|
|
68
67
|
await sim.farm_block()
|
|
69
68
|
|
|
70
69
|
if metadata_updater == "default":
|
|
71
|
-
metadata_updater_solutions:
|
|
70
|
+
metadata_updater_solutions: list[Program] = [
|
|
72
71
|
Program.to((b"u", "update")),
|
|
73
72
|
Program.to((b"lu", "update")),
|
|
74
73
|
Program.to((b"mu", "update")),
|
|
75
74
|
Program.to((b"foo", "update")),
|
|
76
75
|
]
|
|
77
|
-
expected_metadatas:
|
|
76
|
+
expected_metadatas: list[Program] = [
|
|
78
77
|
metadata_to_program(
|
|
79
78
|
{
|
|
80
79
|
b"u": ["update", "hey hey"],
|
|
@@ -140,7 +139,7 @@ async def test_state_layer(cost_logger: CostLogger, metadata_updater: str) -> No
|
|
|
140
139
|
@pytest.mark.anyio
|
|
141
140
|
async def test_ownership_layer(cost_logger: CostLogger) -> None:
|
|
142
141
|
async with sim_and_client() as (sim, sim_client):
|
|
143
|
-
TARGET_OWNER = bytes32
|
|
142
|
+
TARGET_OWNER = bytes32.zeros
|
|
144
143
|
TARGET_TP = Program.to([8]) # (x)
|
|
145
144
|
# (a (i 11 (q 4 19 (c 43 (q ()))) (q 8)) 1) or
|
|
146
145
|
# (mod (_ _ solution) (if solution (list (f solution) (f (r solution)) ()) (x)))
|
|
@@ -192,7 +191,7 @@ async def test_ownership_layer(cost_logger: CostLogger) -> None:
|
|
|
192
191
|
[
|
|
193
192
|
[51, ACS_PH, 1],
|
|
194
193
|
[-10, TARGET_OWNER, TARGET_TP],
|
|
195
|
-
[62, b"\xad\x4c" + bytes32
|
|
194
|
+
[62, b"\xad\x4c" + bytes32.zeros],
|
|
196
195
|
]
|
|
197
196
|
]
|
|
198
197
|
),
|
|
@@ -252,7 +251,7 @@ async def test_default_transfer_program(cost_logger: CostLogger) -> None:
|
|
|
252
251
|
# Now make the ownership coin
|
|
253
252
|
FAKE_SINGLETON_MOD = Program.to([2, 5, 11]) # (a 5 11) | (mod (_ INNER_PUZ inner_sol) (a INNER_PUZ inner_sol))
|
|
254
253
|
FAKE_CAT_MOD = Program.to([2, 11, 23]) # (a 11 23) or (mod (_ _ INNER_PUZ inner_sol) (a INNER_PUZ inner_sol))
|
|
255
|
-
FAKE_LAUNCHER_ID = bytes32
|
|
254
|
+
FAKE_LAUNCHER_ID = bytes32.zeros
|
|
256
255
|
FAKE_TAIL = bytes32([2] * 32)
|
|
257
256
|
FAKE_SINGLETON_STRUCT = Program.to((FAKE_SINGLETON_MOD.get_tree_hash(), (FAKE_LAUNCHER_ID, FAKE_LAUNCHER_ID)))
|
|
258
257
|
FAKE_SINGLETON = FAKE_SINGLETON_MOD.curry(FAKE_SINGLETON_STRUCT, ACS)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
|
-
from typing import Any,
|
|
4
|
+
from typing import Any, Optional
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
7
|
|
|
@@ -123,7 +123,7 @@ async def test_nft_offer_with_fee(
|
|
|
123
123
|
nft_to_offer = coins_maker[0]
|
|
124
124
|
nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
|
|
125
125
|
nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
|
|
126
|
-
driver_dict:
|
|
126
|
+
driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
|
|
127
127
|
|
|
128
128
|
xch_request = 100
|
|
129
129
|
maker_fee = uint64(10)
|
|
@@ -145,7 +145,7 @@ async def test_nft_offer_with_fee(
|
|
|
145
145
|
|
|
146
146
|
taker_fee = uint64(1)
|
|
147
147
|
|
|
148
|
-
[
|
|
148
|
+
[_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
|
|
149
149
|
[Offer.from_bytes(trade_make.offer)]
|
|
150
150
|
)
|
|
151
151
|
peer = wallet_node_1.get_full_node_peer()
|
|
@@ -205,7 +205,7 @@ async def test_nft_offer_with_fee(
|
|
|
205
205
|
nft_to_buy = coins_taker[0]
|
|
206
206
|
nft_to_buy_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_buy.full_puzzle))
|
|
207
207
|
nft_to_buy_asset_id: bytes32 = create_asset_id(nft_to_buy_info) # type: ignore
|
|
208
|
-
driver_dict_to_buy:
|
|
208
|
+
driver_dict_to_buy: dict[bytes32, Optional[PuzzleInfo]] = {nft_to_buy_asset_id: nft_to_buy_info}
|
|
209
209
|
|
|
210
210
|
xch_offered = 1000
|
|
211
211
|
maker_fee = uint64(10)
|
|
@@ -221,7 +221,7 @@ async def test_nft_offer_with_fee(
|
|
|
221
221
|
|
|
222
222
|
taker_fee = uint64(1)
|
|
223
223
|
|
|
224
|
-
[
|
|
224
|
+
[_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
|
|
225
225
|
[Offer.from_bytes(trade_make.offer)]
|
|
226
226
|
)
|
|
227
227
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -327,7 +327,7 @@ async def test_nft_offer_cancellations(
|
|
|
327
327
|
nft_to_offer = coins_maker[0]
|
|
328
328
|
nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
|
|
329
329
|
nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
|
|
330
|
-
driver_dict:
|
|
330
|
+
driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
|
|
331
331
|
|
|
332
332
|
xch_request = 100
|
|
333
333
|
maker_fee = uint64(10)
|
|
@@ -472,7 +472,7 @@ async def test_nft_offer_with_metadata_update(
|
|
|
472
472
|
nft_to_offer = coins_maker[0]
|
|
473
473
|
nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
|
|
474
474
|
nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
|
|
475
|
-
driver_dict:
|
|
475
|
+
driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
|
|
476
476
|
|
|
477
477
|
xch_request = 100
|
|
478
478
|
maker_fee = uint64(10)
|
|
@@ -488,7 +488,7 @@ async def test_nft_offer_with_metadata_update(
|
|
|
488
488
|
|
|
489
489
|
taker_fee = uint64(1)
|
|
490
490
|
|
|
491
|
-
[
|
|
491
|
+
[_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
|
|
492
492
|
[Offer.from_bytes(trade_make.offer)]
|
|
493
493
|
)
|
|
494
494
|
peer = wallet_node_1.get_full_node_peer()
|
|
@@ -643,7 +643,7 @@ async def test_nft_offer_nft_for_cat(
|
|
|
643
643
|
nft_to_offer = coins_maker[0]
|
|
644
644
|
nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
|
|
645
645
|
nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
|
|
646
|
-
driver_dict:
|
|
646
|
+
driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
|
|
647
647
|
|
|
648
648
|
maker_fee = uint64(10)
|
|
649
649
|
taker_cat_offered = 2500
|
|
@@ -665,7 +665,7 @@ async def test_nft_offer_nft_for_cat(
|
|
|
665
665
|
|
|
666
666
|
taker_fee = uint64(1)
|
|
667
667
|
|
|
668
|
-
[
|
|
668
|
+
[_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
|
|
669
669
|
[Offer.from_bytes(trade_make.offer)]
|
|
670
670
|
)
|
|
671
671
|
peer = wallet_node_1.get_full_node_peer()
|
|
@@ -732,7 +732,7 @@ async def test_nft_offer_nft_for_cat(
|
|
|
732
732
|
nft_to_buy_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_buy.full_puzzle))
|
|
733
733
|
nft_to_buy_asset_id: bytes32 = create_asset_id(nft_to_buy_info) # type: ignore
|
|
734
734
|
|
|
735
|
-
driver_dict_to_buy:
|
|
735
|
+
driver_dict_to_buy: dict[bytes32, Optional[PuzzleInfo]] = {
|
|
736
736
|
nft_to_buy_asset_id: nft_to_buy_info,
|
|
737
737
|
}
|
|
738
738
|
|
|
@@ -753,7 +753,7 @@ async def test_nft_offer_nft_for_cat(
|
|
|
753
753
|
|
|
754
754
|
taker_fee = uint64(1)
|
|
755
755
|
|
|
756
|
-
[
|
|
756
|
+
[_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
|
|
757
757
|
[Offer.from_bytes(trade_make.offer)]
|
|
758
758
|
)
|
|
759
759
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
@@ -889,7 +889,7 @@ async def test_nft_offer_nft_for_nft(
|
|
|
889
889
|
nft_to_take_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_take.full_puzzle))
|
|
890
890
|
nft_to_take_asset_id: bytes32 = create_asset_id(nft_to_take_info) # type: ignore
|
|
891
891
|
|
|
892
|
-
driver_dict:
|
|
892
|
+
driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {
|
|
893
893
|
nft_to_offer_asset_id: nft_to_offer_info,
|
|
894
894
|
nft_to_take_asset_id: nft_to_take_info,
|
|
895
895
|
}
|
|
@@ -907,7 +907,7 @@ async def test_nft_offer_nft_for_nft(
|
|
|
907
907
|
|
|
908
908
|
taker_fee = uint64(1)
|
|
909
909
|
|
|
910
|
-
[
|
|
910
|
+
[_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
|
|
911
911
|
[Offer.from_bytes(trade_make.offer)]
|
|
912
912
|
)
|
|
913
913
|
peer = wallet_node_1.get_full_node_peer()
|
|
@@ -1064,7 +1064,7 @@ async def test_nft_offer_nft0_and_xch_for_cat(
|
|
|
1064
1064
|
nft_to_offer = coins_maker[0]
|
|
1065
1065
|
nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
|
|
1066
1066
|
nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
|
|
1067
|
-
driver_dict:
|
|
1067
|
+
driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
|
|
1068
1068
|
|
|
1069
1069
|
maker_fee = uint64(10)
|
|
1070
1070
|
maker_xch_offered = 1000
|
|
@@ -1160,7 +1160,7 @@ async def test_nft_offer_nft0_and_xch_for_cat(
|
|
|
1160
1160
|
nft_to_buy_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_buy.full_puzzle))
|
|
1161
1161
|
nft_to_buy_asset_id: bytes32 = create_asset_id(nft_to_buy_info) # type: ignore
|
|
1162
1162
|
|
|
1163
|
-
driver_dict_to_buy:
|
|
1163
|
+
driver_dict_to_buy: dict[bytes32, Optional[PuzzleInfo]] = {
|
|
1164
1164
|
nft_to_buy_asset_id: nft_to_buy_info,
|
|
1165
1165
|
}
|
|
1166
1166
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
|
-
from typing import Optional
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from chia._tests.core.make_block_generator import int_to_public_key
|
|
7
7
|
from chia.types.blockchain_format.program import Program
|
|
@@ -104,7 +104,7 @@ def test_nft_transfer_puzzle_hashes(seeded_random: random.Random) -> None:
|
|
|
104
104
|
assert expected_ph == calculated_ph
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
def make_a_new_solution() ->
|
|
107
|
+
def make_a_new_solution() -> tuple[Program, Program]:
|
|
108
108
|
destination = int_to_public_key(2)
|
|
109
109
|
p2_puzzle = puzzle_for_pk(destination)
|
|
110
110
|
puzhash = p2_puzzle.get_tree_hash()
|
|
@@ -116,7 +116,7 @@ def make_a_new_solution() -> Tuple[Program, Program]:
|
|
|
116
116
|
return p2_puzzle, solution
|
|
117
117
|
|
|
118
118
|
|
|
119
|
-
def make_a_new_ownership_layer_puzzle() ->
|
|
119
|
+
def make_a_new_ownership_layer_puzzle() -> tuple[Program, Program]:
|
|
120
120
|
pubkey = int_to_public_key(1)
|
|
121
121
|
innerpuz = puzzle_for_pk(pubkey)
|
|
122
122
|
old_did = Program.to("test_2").get_tree_hash()
|