chia-blockchain 2.5.4rc2__py3-none-any.whl → 2.5.5__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/blockchain/blockchain_test_utils.py +2 -3
- chia/_tests/blockchain/test_augmented_chain.py +2 -3
- chia/_tests/blockchain/test_blockchain.py +261 -44
- chia/_tests/blockchain/test_blockchain_transactions.py +4 -3
- chia/_tests/blockchain/test_build_chains.py +197 -1
- chia/_tests/blockchain/test_get_block_generator.py +1 -1
- chia/_tests/blockchain/test_lookup_fork_chain.py +1 -1
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +3 -4
- chia/_tests/clvm/test_message_conditions.py +2 -2
- chia/_tests/clvm/test_puzzle_compression.py +2 -3
- chia/_tests/clvm/test_puzzles.py +1 -2
- chia/_tests/clvm/test_singletons.py +2 -3
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +30 -25
- chia/_tests/cmds/test_dev_gh.py +1 -1
- chia/_tests/cmds/test_farm_cmd.py +1 -1
- chia/_tests/cmds/test_show.py +1 -2
- chia/_tests/cmds/wallet/test_did.py +101 -56
- chia/_tests/cmds/wallet/test_nft.py +109 -84
- chia/_tests/cmds/wallet/test_notifications.py +1 -1
- chia/_tests/cmds/wallet/test_offer.toffer +1 -1
- chia/_tests/cmds/wallet/test_vcs.py +8 -8
- chia/_tests/cmds/wallet/test_wallet.py +100 -46
- chia/_tests/conftest.py +31 -20
- chia/_tests/connection_utils.py +1 -1
- chia/_tests/core/consensus/stores/__init__.py +0 -0
- chia/_tests/core/consensus/stores/test_coin_store_protocol.py +40 -0
- chia/_tests/core/consensus/test_block_creation.py +2 -31
- chia/_tests/core/consensus/test_pot_iterations.py +38 -3
- chia/_tests/core/custom_types/test_proof_of_space.py +154 -26
- chia/_tests/core/custom_types/test_spend_bundle.py +2 -3
- chia/_tests/core/daemon/test_daemon.py +80 -0
- chia/_tests/core/data_layer/test_data_layer.py +1 -1
- chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
- chia/_tests/core/data_layer/test_data_rpc.py +14 -10
- chia/_tests/core/data_layer/test_data_store.py +5 -5
- chia/_tests/core/farmer/test_farmer_api.py +2 -2
- chia/_tests/core/full_node/full_sync/test_full_sync.py +446 -406
- chia/_tests/core/full_node/ram_db.py +3 -1
- chia/_tests/core/full_node/stores/test_block_store.py +28 -16
- chia/_tests/core/full_node/stores/test_coin_store.py +277 -185
- chia/_tests/core/full_node/stores/test_full_node_store.py +11 -4
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_address_manager.py +200 -27
- chia/_tests/core/full_node/test_block_height_map.py +2 -2
- chia/_tests/core/full_node/test_conditions.py +7 -6
- chia/_tests/core/full_node/test_full_node.py +456 -40
- chia/_tests/core/full_node/test_generator_tools.py +32 -2
- chia/_tests/core/full_node/test_hint_management.py +1 -1
- chia/_tests/core/full_node/test_node_load.py +20 -21
- chia/_tests/core/full_node/test_performance.py +3 -4
- chia/_tests/core/full_node/test_prev_tx_block.py +43 -0
- chia/_tests/core/full_node/test_subscriptions.py +1 -2
- chia/_tests/core/full_node/test_transactions.py +9 -5
- chia/_tests/core/full_node/test_tx_processing_queue.py +1 -2
- chia/_tests/core/large_block.py +1 -2
- chia/_tests/core/make_block_generator.py +3 -4
- chia/_tests/core/mempool/test_mempool.py +36 -86
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
- chia/_tests/core/mempool/test_mempool_item_queries.py +1 -3
- chia/_tests/core/mempool/test_mempool_manager.py +529 -69
- chia/_tests/core/mempool/test_mempool_performance.py +3 -2
- chia/_tests/core/mempool/test_singleton_fast_forward.py +61 -132
- chia/_tests/core/server/flood.py +1 -1
- chia/_tests/core/server/test_dos.py +1 -1
- chia/_tests/core/server/test_node_discovery.py +41 -27
- chia/_tests/core/server/test_rate_limits.py +1 -1
- chia/_tests/core/server/test_server.py +1 -1
- chia/_tests/core/services/test_services.py +5 -5
- chia/_tests/core/ssl/test_ssl.py +1 -1
- chia/_tests/core/test_cost_calculation.py +6 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_crawler_rpc.py +1 -1
- chia/_tests/core/test_db_conversion.py +3 -1
- chia/_tests/core/test_db_validation.py +5 -3
- chia/_tests/core/test_farmer_harvester_rpc.py +15 -15
- chia/_tests/core/test_filter.py +4 -1
- chia/_tests/core/test_full_node_rpc.py +99 -82
- chia/_tests/core/test_program.py +2 -2
- chia/_tests/core/util/test_block_cache.py +1 -1
- chia/_tests/core/util/test_keychain.py +2 -2
- chia/_tests/core/util/test_lockfile.py +1 -1
- chia/_tests/core/util/test_log_exceptions.py +5 -5
- chia/_tests/core/util/test_streamable.py +81 -22
- chia/_tests/db/test_db_wrapper.py +1 -3
- chia/_tests/environments/wallet.py +5 -5
- chia/_tests/farmer_harvester/test_farmer.py +9 -7
- chia/_tests/farmer_harvester/test_farmer_harvester.py +11 -4
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +15 -9
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -2
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +7 -5
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
- chia/_tests/generator/test_compression.py +1 -2
- chia/_tests/generator/test_rom.py +8 -4
- chia/_tests/plot_sync/test_plot_sync.py +3 -3
- chia/_tests/plot_sync/test_receiver.py +3 -3
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +3 -3
- chia/_tests/plot_sync/util.py +2 -2
- chia/_tests/pools/test_pool_cmdline.py +48 -21
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +2 -3
- chia/_tests/pools/test_pool_rpc.py +237 -105
- chia/_tests/pools/test_pool_wallet.py +11 -2
- chia/_tests/pools/test_wallet_pool_store.py +5 -4
- chia/_tests/rpc/test_rpc_client.py +1 -1
- chia/_tests/simulation/test_simulation.py +13 -8
- chia/_tests/simulation/test_simulator.py +2 -2
- chia/_tests/timelord/test_new_peak.py +191 -47
- chia/_tests/timelord/test_timelord.py +1 -1
- chia/_tests/tools/test_full_sync.py +0 -2
- chia/_tests/tools/test_run_block.py +3 -1
- chia/_tests/util/benchmark_cost.py +3 -3
- chia/_tests/util/benchmarks.py +2 -2
- chia/_tests/util/blockchain.py +11 -5
- chia/_tests/util/blockchain_mock.py +1 -4
- chia/_tests/util/coin_store.py +29 -0
- chia/_tests/util/constants.py +2 -18
- chia/_tests/util/full_sync.py +3 -3
- chia/_tests/util/generator_tools_testing.py +2 -3
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +33 -31
- chia/_tests/util/network_protocol_data.py +19 -17
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +3 -1
- chia/_tests/util/run_block.py +2 -2
- chia/_tests/util/setup_nodes.py +7 -7
- chia/_tests/util/spend_sim.py +47 -55
- chia/_tests/util/test_condition_tools.py +5 -4
- chia/_tests/util/test_config.py +2 -2
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +12 -14
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_paginator.py +4 -4
- chia/_tests/util/test_priority_mutex.py +2 -2
- chia/_tests/util/test_replace_str_to_bytes.py +15 -5
- chia/_tests/util/test_ssl_check.py +1 -1
- chia/_tests/util/test_testnet_overrides.py +13 -3
- chia/_tests/util/time_out_assert.py +4 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -2
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +352 -432
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +3 -6
- chia/_tests/wallet/cat_wallet/test_trades.py +53 -77
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -1
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +3 -3
- chia/_tests/wallet/clawback/test_clawback_metadata.py +4 -2
- chia/_tests/wallet/conftest.py +11 -12
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +11 -4
- chia/_tests/wallet/db_wallet/test_dl_offers.py +433 -130
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +3 -3
- chia/_tests/wallet/did_wallet/test_did.py +2132 -2000
- chia/_tests/wallet/nft_wallet/config.py +1 -1
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1610 -742
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +486 -907
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +4 -4
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +517 -294
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +133 -62
- chia/_tests/wallet/rpc/test_wallet_rpc.py +495 -265
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +10 -6
- chia/_tests/wallet/sync/test_wallet_sync.py +89 -60
- chia/_tests/wallet/test_clvm_casts.py +88 -0
- chia/_tests/wallet/test_coin_management.py +1 -1
- chia/_tests/wallet/test_coin_selection.py +1 -1
- chia/_tests/wallet/test_conditions.py +1 -1
- chia/_tests/wallet/test_new_wallet_protocol.py +13 -11
- chia/_tests/wallet/test_notifications.py +5 -3
- chia/_tests/wallet/test_sign_coin_spends.py +6 -6
- chia/_tests/wallet/test_signer_protocol.py +13 -12
- chia/_tests/wallet/test_singleton.py +1 -1
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +5 -7
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +108 -29
- chia/_tests/wallet/test_wallet_action_scope.py +9 -2
- chia/_tests/wallet/test_wallet_blockchain.py +2 -3
- chia/_tests/wallet/test_wallet_key_val_store.py +1 -2
- chia/_tests/wallet/test_wallet_node.py +2 -4
- chia/_tests/wallet/test_wallet_retry.py +4 -2
- chia/_tests/wallet/test_wallet_state_manager.py +191 -5
- chia/_tests/wallet/test_wallet_test_framework.py +1 -1
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +8 -8
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -12
- chia/_tests/wallet/wallet_block_tools.py +6 -6
- chia/_tests/weight_proof/test_weight_proof.py +10 -48
- chia/apis.py +1 -1
- chia/cmds/beta.py +1 -1
- chia/cmds/chia.py +9 -9
- chia/cmds/cmd_classes.py +12 -11
- chia/cmds/cmd_helpers.py +1 -1
- chia/cmds/cmds_util.py +12 -9
- chia/cmds/coin_funcs.py +2 -2
- chia/cmds/configure.py +2 -2
- chia/cmds/data.py +0 -2
- chia/cmds/data_funcs.py +1 -1
- chia/cmds/db_validate_func.py +1 -2
- chia/cmds/dev/__init__.py +0 -0
- chia/cmds/dev/data.py +273 -0
- chia/cmds/{gh.py → dev/gh.py} +5 -5
- chia/cmds/dev/main.py +22 -0
- chia/cmds/dev/mempool.py +78 -0
- chia/cmds/dev/mempool_funcs.py +63 -0
- chia/cmds/farm_funcs.py +5 -4
- chia/cmds/init_funcs.py +11 -11
- chia/cmds/keys.py +2 -2
- chia/cmds/keys_funcs.py +4 -4
- chia/cmds/netspace_funcs.py +1 -1
- chia/cmds/peer_funcs.py +2 -2
- chia/cmds/plotnft_funcs.py +72 -26
- chia/cmds/rpc.py +1 -1
- chia/cmds/show_funcs.py +5 -5
- chia/cmds/signer.py +8 -7
- chia/cmds/sim_funcs.py +8 -9
- chia/cmds/wallet.py +2 -2
- chia/cmds/wallet_funcs.py +165 -131
- chia/{util → consensus}/augmented_chain.py +1 -2
- chia/consensus/block_body_validation.py +54 -40
- chia/consensus/block_creation.py +42 -76
- chia/consensus/block_header_validation.py +32 -26
- chia/consensus/block_record.py +0 -3
- chia/consensus/blockchain.py +23 -32
- chia/consensus/blockchain_interface.py +1 -5
- chia/consensus/check_time_locks.py +57 -0
- chia/consensus/coin_store_protocol.py +151 -0
- chia/consensus/coinbase.py +0 -6
- chia/consensus/condition_costs.py +4 -0
- chia/{util → consensus}/condition_tools.py +4 -5
- chia/consensus/cost_calculator.py +1 -1
- chia/consensus/default_constants.py +32 -9
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +1 -2
- chia/consensus/find_fork_point.py +1 -3
- chia/consensus/full_block_to_block_record.py +1 -6
- chia/{util → consensus}/generator_tools.py +1 -3
- chia/consensus/get_block_challenge.py +30 -7
- chia/consensus/make_sub_epoch_summary.py +1 -5
- chia/consensus/multiprocess_validation.py +21 -20
- chia/consensus/pot_iterations.py +74 -13
- chia/{util → consensus}/prev_transaction_block.py +1 -1
- chia/consensus/vdf_info_computation.py +1 -3
- chia/daemon/keychain_proxy.py +5 -5
- chia/daemon/server.py +22 -5
- chia/data_layer/data_layer.py +92 -51
- chia/{rpc → data_layer}/data_layer_rpc_api.py +1 -1
- chia/{rpc → data_layer}/data_layer_rpc_util.py +3 -6
- chia/data_layer/data_layer_util.py +4 -6
- chia/data_layer/data_layer_wallet.py +42 -69
- chia/data_layer/dl_wallet_store.py +12 -6
- chia/data_layer/download_data.py +3 -3
- chia/data_layer/s3_plugin_service.py +0 -1
- chia/farmer/farmer.py +3 -4
- chia/farmer/farmer_api.py +11 -7
- chia/{rpc → farmer}/farmer_rpc_client.py +1 -1
- chia/full_node/block_height_map.py +7 -6
- chia/full_node/block_store.py +5 -7
- chia/full_node/bundle_tools.py +1 -2
- chia/full_node/coin_store.py +153 -124
- chia/{types → full_node}/eligible_coin_spends.py +39 -70
- chia/full_node/fee_estimator.py +1 -1
- chia/full_node/fee_estimator_interface.py +0 -8
- chia/full_node/fee_tracker.py +25 -25
- chia/full_node/full_node.py +70 -53
- chia/full_node/full_node_api.py +57 -40
- chia/{rpc → full_node}/full_node_rpc_api.py +87 -8
- chia/{rpc → full_node}/full_node_rpc_client.py +7 -6
- chia/full_node/full_node_store.py +23 -8
- chia/full_node/mempool.py +206 -53
- chia/full_node/mempool_check_conditions.py +20 -63
- chia/full_node/mempool_manager.py +47 -45
- chia/full_node/subscriptions.py +1 -3
- chia/full_node/tx_processing_queue.py +50 -3
- chia/full_node/weight_proof.py +46 -37
- chia/harvester/harvester.py +1 -1
- chia/harvester/harvester_api.py +22 -7
- chia/introducer/introducer.py +1 -1
- chia/introducer/introducer_api.py +1 -1
- chia/plot_sync/exceptions.py +1 -1
- chia/plot_sync/receiver.py +1 -1
- chia/plot_sync/sender.py +2 -2
- chia/pools/pool_puzzles.py +13 -18
- chia/pools/pool_wallet.py +23 -46
- chia/protocols/farmer_protocol.py +11 -3
- chia/protocols/full_node_protocol.py +1 -4
- chia/protocols/harvester_protocol.py +3 -3
- chia/protocols/pool_protocol.py +1 -2
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +1 -3
- chia/protocols/wallet_protocol.py +3 -3
- chia/rpc/rpc_client.py +7 -8
- chia/rpc/rpc_server.py +3 -3
- chia/rpc/util.py +3 -1
- chia/seeder/crawler.py +1 -1
- chia/seeder/crawler_api.py +1 -1
- chia/seeder/dns_server.py +2 -0
- chia/seeder/start_crawler.py +3 -3
- chia/server/address_manager.py +286 -38
- chia/server/address_manager_store.py +0 -215
- chia/{types → server}/aliases.py +7 -7
- chia/server/api_protocol.py +1 -1
- chia/server/chia_policy.py +1 -1
- chia/server/node_discovery.py +76 -113
- chia/server/rate_limits.py +1 -1
- chia/server/resolve_peer_info.py +43 -0
- chia/server/server.py +5 -5
- chia/server/start_data_layer.py +4 -4
- chia/server/start_farmer.py +5 -4
- chia/server/start_full_node.py +5 -4
- chia/server/start_harvester.py +7 -5
- chia/server/start_introducer.py +2 -2
- chia/server/start_service.py +1 -1
- chia/server/start_timelord.py +7 -5
- chia/server/start_wallet.py +7 -5
- chia/server/ws_connection.py +1 -1
- chia/simulator/add_blocks_in_batches.py +2 -2
- chia/simulator/block_tools.py +245 -201
- chia/simulator/full_node_simulator.py +38 -10
- chia/simulator/setup_services.py +12 -12
- chia/simulator/simulator_full_node_rpc_api.py +2 -2
- chia/simulator/simulator_full_node_rpc_client.py +2 -2
- chia/simulator/simulator_test_tools.py +2 -2
- chia/simulator/start_simulator.py +1 -1
- chia/simulator/wallet_tools.py +10 -18
- chia/ssl/create_ssl.py +1 -1
- chia/timelord/iters_from_block.py +14 -14
- chia/timelord/timelord.py +15 -11
- chia/timelord/timelord_api.py +14 -2
- chia/timelord/timelord_state.py +20 -14
- chia/types/blockchain_format/program.py +53 -10
- chia/types/blockchain_format/proof_of_space.py +73 -19
- chia/types/coin_spend.py +3 -56
- chia/types/generator_types.py +28 -0
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +12 -7
- chia/types/unfinished_header_block.py +1 -2
- chia/types/validation_state.py +1 -2
- chia/types/weight_proof.py +1 -3
- chia/util/action_scope.py +3 -3
- chia/util/block_cache.py +1 -2
- chia/util/byte_types.py +1 -1
- chia/util/casts.py +21 -0
- chia/util/config.py +0 -37
- chia/util/db_wrapper.py +8 -1
- chia/util/errors.py +3 -2
- chia/util/initial-config.yaml +21 -5
- chia/util/keychain.py +6 -7
- chia/util/keyring_wrapper.py +5 -5
- chia/util/limited_semaphore.py +1 -1
- chia/util/priority_mutex.py +1 -1
- chia/util/streamable.py +63 -5
- chia/util/task_timing.py +1 -1
- chia/util/virtual_project_analysis.py +1 -1
- chia/wallet/cat_wallet/cat_info.py +7 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +9 -5
- chia/wallet/cat_wallet/cat_utils.py +1 -1
- chia/wallet/cat_wallet/cat_wallet.py +44 -36
- chia/wallet/cat_wallet/lineage_store.py +7 -0
- chia/wallet/cat_wallet/r_cat_wallet.py +274 -0
- chia/wallet/conditions.py +5 -10
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -4
- chia/wallet/derivation_record.py +33 -0
- chia/wallet/derive_keys.py +3 -3
- chia/wallet/did_wallet/did_info.py +12 -3
- chia/wallet/did_wallet/did_wallet.py +132 -101
- chia/wallet/did_wallet/did_wallet_puzzles.py +9 -9
- chia/wallet/driver_protocol.py +3 -1
- chia/{types/spend_bundle.py → wallet/estimate_fees.py} +2 -7
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
- chia/wallet/nft_wallet/nft_wallet.py +69 -112
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +6 -4
- chia/wallet/nft_wallet/transfer_program_puzzle.py +4 -2
- chia/wallet/nft_wallet/uncurry_nft.py +4 -6
- chia/wallet/notification_manager.py +2 -3
- chia/wallet/outer_puzzles.py +7 -2
- chia/wallet/puzzle_drivers.py +1 -1
- chia/wallet/puzzles/clawback/drivers.py +5 -4
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -1
- chia/wallet/puzzles/singleton_top_layer.py +2 -1
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +2 -1
- chia/wallet/puzzles/tails.py +1 -3
- chia/wallet/signer_protocol.py +5 -6
- chia/wallet/singleton.py +5 -4
- chia/wallet/singleton_record.py +1 -1
- chia/wallet/trade_manager.py +18 -20
- chia/wallet/trade_record.py +3 -6
- chia/wallet/trading/offer.py +12 -13
- chia/wallet/uncurried_puzzle.py +2 -2
- chia/wallet/util/compute_additions.py +58 -0
- chia/wallet/util/compute_hints.py +3 -3
- chia/wallet/util/compute_memos.py +4 -4
- chia/wallet/util/curry_and_treehash.py +2 -1
- chia/wallet/util/debug_spend_bundle.py +1 -1
- chia/wallet/util/merkle_tree.py +1 -1
- chia/wallet/util/peer_request_cache.py +1 -2
- chia/wallet/util/tx_config.py +3 -8
- chia/wallet/util/wallet_sync_utils.py +10 -5
- chia/wallet/util/wallet_types.py +1 -0
- chia/wallet/vc_wallet/cr_cat_drivers.py +17 -18
- chia/wallet/vc_wallet/cr_cat_wallet.py +30 -28
- chia/wallet/vc_wallet/cr_outer_puzzle.py +5 -3
- chia/wallet/vc_wallet/vc_drivers.py +50 -8
- chia/wallet/vc_wallet/vc_store.py +3 -5
- chia/wallet/vc_wallet/vc_wallet.py +15 -22
- chia/wallet/wallet.py +36 -46
- chia/wallet/wallet_action_scope.py +73 -4
- chia/wallet/wallet_blockchain.py +1 -3
- chia/wallet/wallet_interested_store.py +1 -1
- chia/wallet/wallet_nft_store.py +3 -3
- chia/wallet/wallet_node.py +17 -16
- chia/wallet/wallet_node_api.py +4 -5
- chia/wallet/wallet_pool_store.py +1 -1
- chia/wallet/wallet_protocol.py +2 -0
- chia/wallet/wallet_puzzle_store.py +1 -1
- chia/{rpc → wallet}/wallet_request_types.py +670 -81
- chia/{rpc → wallet}/wallet_rpc_api.py +735 -766
- chia/{rpc → wallet}/wallet_rpc_client.py +268 -420
- chia/wallet/wallet_singleton_store.py +8 -7
- chia/wallet/wallet_spend_bundle.py +4 -3
- chia/wallet/wallet_state_manager.py +320 -191
- chia/wallet/wallet_weight_proof_handler.py +1 -2
- chia/wallet/wsm_apis.py +98 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/METADATA +7 -7
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/RECORD +443 -436
- mozilla-ca/cacert.pem +3 -165
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +0 -145
- chia/cmds/dev.py +0 -18
- chia/types/blockchain_format/slots.py +0 -9
- chia/types/blockchain_format/sub_epoch_summary.py +0 -5
- chia/types/end_of_slot_bundle.py +0 -5
- chia/types/full_block.py +0 -5
- chia/types/header_block.py +0 -5
- chia/types/spend_bundle_conditions.py +0 -7
- chia/types/transaction_queue_entry.py +0 -56
- chia/types/unfinished_block.py +0 -5
- /chia/cmds/{installers.py → dev/installers.py} +0 -0
- /chia/cmds/{sim.py → dev/sim.py} +0 -0
- /chia/{util → cmds}/dump_keyring.py +0 -0
- /chia/{full_node → consensus}/signage_point.py +0 -0
- /chia/{rpc → data_layer}/data_layer_rpc_client.py +0 -0
- /chia/{rpc → farmer}/farmer_rpc_api.py +0 -0
- /chia/{util → full_node}/full_block_utils.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_api.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_client.py +0 -0
- /chia/{full_node → protocols}/fee_estimate.py +0 -0
- /chia/{server → protocols}/outbound_message.py +0 -0
- /chia/{rpc → seeder}/crawler_rpc_api.py +0 -0
- /chia/{util → simulator}/vdf_prover.py +0 -0
- /chia/{util → ssl}/ssl_check.py +0 -0
- /chia/{rpc → timelord}/timelord_rpc_api.py +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/entry_points.txt +0 -0
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import re
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
|
-
from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey
|
|
6
|
+
from chia_rs import AugSchemeMPL, CoinSpend, G1Element, G2Element, PrivateKey
|
|
7
7
|
from chia_rs.sized_bytes import bytes32
|
|
8
8
|
from chia_rs.sized_ints import uint32, uint64
|
|
9
9
|
|
|
@@ -11,7 +11,7 @@ from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
|
11
11
|
from chia.types.blockchain_format.coin import Coin
|
|
12
12
|
from chia.types.blockchain_format.program import Program
|
|
13
13
|
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
14
|
-
from chia.types.coin_spend import
|
|
14
|
+
from chia.types.coin_spend import make_spend
|
|
15
15
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
16
16
|
from chia.util.db_wrapper import DBWrapper2, manage_connection
|
|
17
17
|
from chia.wallet.derivation_record import DerivationRecord
|
|
@@ -47,11 +47,11 @@ additional_data: bytes32 = bytes32(DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA)
|
|
|
47
47
|
|
|
48
48
|
coin: Coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
|
|
49
49
|
puzzle = SerializedProgram.from_bytes(b"\x01")
|
|
50
|
-
solution_h =
|
|
51
|
-
|
|
50
|
+
solution_h = Program.to(
|
|
51
|
+
[[ConditionOpcode.AGG_SIG_UNSAFE, pk1_h, msg1], [ConditionOpcode.AGG_SIG_ME, pk2_h_synth, msg2]]
|
|
52
52
|
)
|
|
53
|
-
solution_u =
|
|
54
|
-
|
|
53
|
+
solution_u = Program.to(
|
|
54
|
+
[[ConditionOpcode.AGG_SIG_UNSAFE, pk1_u, msg1], [ConditionOpcode.AGG_SIG_ME, pk2_u_synth, msg2]]
|
|
55
55
|
)
|
|
56
56
|
spend_h: CoinSpend = make_spend(
|
|
57
57
|
coin,
|
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
|
5
5
|
|
|
6
6
|
import click
|
|
7
7
|
import pytest
|
|
8
|
-
from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey
|
|
8
|
+
from chia_rs import AugSchemeMPL, CoinSpend, G1Element, G2Element, PrivateKey
|
|
9
9
|
from chia_rs.sized_bytes import bytes32
|
|
10
10
|
from chia_rs.sized_ints import uint64
|
|
11
11
|
from click.testing import CliRunner
|
|
@@ -26,17 +26,9 @@ from chia.cmds.signer import (
|
|
|
26
26
|
SPOut,
|
|
27
27
|
)
|
|
28
28
|
from chia.rpc.util import ALL_TRANSLATION_LAYERS
|
|
29
|
-
from chia.rpc.wallet_request_types import (
|
|
30
|
-
ApplySignatures,
|
|
31
|
-
ExecuteSigningInstructions,
|
|
32
|
-
GatherSigningInfo,
|
|
33
|
-
GatherSigningInfoResponse,
|
|
34
|
-
SubmitTransactions,
|
|
35
|
-
)
|
|
36
|
-
from chia.rpc.wallet_rpc_client import WalletRpcClient
|
|
37
29
|
from chia.types.blockchain_format.coin import Coin as ConsensusCoin
|
|
38
30
|
from chia.types.blockchain_format.program import Program
|
|
39
|
-
from chia.types.coin_spend import
|
|
31
|
+
from chia.types.coin_spend import make_spend
|
|
40
32
|
from chia.util.hash import std_hash
|
|
41
33
|
from chia.util.streamable import Streamable
|
|
42
34
|
from chia.wallet.conditions import AggSigMe
|
|
@@ -76,8 +68,15 @@ from chia.wallet.util.clvm_streamable import (
|
|
|
76
68
|
json_deserialize_with_clvm_streamable,
|
|
77
69
|
json_serialize_with_clvm_streamable,
|
|
78
70
|
)
|
|
79
|
-
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
80
71
|
from chia.wallet.wallet import Wallet
|
|
72
|
+
from chia.wallet.wallet_request_types import (
|
|
73
|
+
ApplySignatures,
|
|
74
|
+
ExecuteSigningInstructions,
|
|
75
|
+
GatherSigningInfo,
|
|
76
|
+
GatherSigningInfoResponse,
|
|
77
|
+
SubmitTransactions,
|
|
78
|
+
)
|
|
79
|
+
from chia.wallet.wallet_rpc_client import WalletRpcClient
|
|
81
80
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
82
81
|
from chia.wallet.wallet_state_manager import WalletStateManager
|
|
83
82
|
|
|
@@ -614,7 +613,9 @@ async def test_signer_commands(wallet_environments: WalletTestFramework) -> None
|
|
|
614
613
|
)
|
|
615
614
|
|
|
616
615
|
AMOUNT = uint64(1)
|
|
617
|
-
async with wallet_state_manager.new_action_scope(
|
|
616
|
+
async with wallet_state_manager.new_action_scope(
|
|
617
|
+
wallet_environments.tx_config, sign=False, push=False
|
|
618
|
+
) as action_scope:
|
|
618
619
|
await wallet.generate_signed_transaction([AMOUNT], [bytes32.zeros], action_scope)
|
|
619
620
|
[tx] = action_scope.side_effects.transactions
|
|
620
621
|
|
|
@@ -4,8 +4,8 @@ import pytest
|
|
|
4
4
|
from chia_rs.sized_bytes import bytes32
|
|
5
5
|
from clvm_tools import binutils
|
|
6
6
|
|
|
7
|
+
from chia.consensus.condition_tools import parse_sexp_to_conditions
|
|
7
8
|
from chia.types.blockchain_format.program import INFINITE_COST, Program
|
|
8
|
-
from chia.util.condition_tools import parse_sexp_to_conditions
|
|
9
9
|
from chia.wallet.conditions import AssertPuzzleAnnouncement
|
|
10
10
|
from chia.wallet.puzzles.singleton_top_layer import P2_SINGLETON_MOD, SINGLETON_MOD, SINGLETON_MOD_HASH
|
|
11
11
|
from chia.wallet.puzzles.singleton_top_layer import SINGLETON_LAUNCHER_HASH as LAUNCHER_PUZZLE_HASH
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import Any, Callable, Optional, TypeVar, cast, get_args, get_origin
|
|
5
5
|
|
|
6
|
-
from chia_rs import G1Element, G2Element
|
|
6
|
+
from chia_rs import CoinSpend, G1Element, G2Element
|
|
7
7
|
from chia_rs.sized_bytes import bytes32
|
|
8
8
|
from chia_rs.sized_ints import uint32, uint64
|
|
9
9
|
from clvm_tools import binutils
|
|
@@ -14,8 +14,7 @@ from chia.pools.pool_puzzles import POOL_MEMBER_MOD
|
|
|
14
14
|
from chia.pools.pool_puzzles import POOL_WAITING_ROOM_MOD as POOL_WAITINGROOM_MOD
|
|
15
15
|
from chia.types.blockchain_format.coin import Coin
|
|
16
16
|
from chia.types.blockchain_format.program import Program
|
|
17
|
-
from chia.types.
|
|
18
|
-
from chia.types.coin_spend import CoinSpend, compute_additions, make_spend
|
|
17
|
+
from chia.types.coin_spend import make_spend
|
|
19
18
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
20
19
|
from chia.wallet.conditions import AssertCoinAnnouncement
|
|
21
20
|
from chia.wallet.puzzles.singleton_top_layer import (
|
|
@@ -24,6 +23,7 @@ from chia.wallet.puzzles.singleton_top_layer import (
|
|
|
24
23
|
from chia.wallet.puzzles.singleton_top_layer import P2_SINGLETON_OR_DELAYED_MOD_HASH as P2_SINGLETON_MOD_HASH
|
|
25
24
|
from chia.wallet.puzzles.singleton_top_layer import SINGLETON_LAUNCHER, SINGLETON_MOD, SINGLETON_MOD_HASH
|
|
26
25
|
from chia.wallet.puzzles.singleton_top_layer import SINGLETON_LAUNCHER_HASH as LAUNCHER_PUZZLE_HASH
|
|
26
|
+
from chia.wallet.util.compute_additions import compute_additions
|
|
27
27
|
from chia.wallet.util.debug_spend_bundle import debug_spend_bundle
|
|
28
28
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
29
29
|
|
|
@@ -328,7 +328,7 @@ def launcher_conditions_and_spend_bundle(
|
|
|
328
328
|
launcher_amount=launcher_amount,
|
|
329
329
|
metadata=metadata,
|
|
330
330
|
)
|
|
331
|
-
coin_spend = make_spend(launcher_coin,
|
|
331
|
+
coin_spend = make_spend(launcher_coin, launcher_puzzle, solution)
|
|
332
332
|
spend_bundle = WalletSpendBundle([coin_spend], G2Element())
|
|
333
333
|
return launcher_id, expected_conditions, spend_bundle
|
|
334
334
|
|
|
@@ -387,9 +387,7 @@ def claim_p2_singleton(
|
|
|
387
387
|
singleton_inner_puzzle_hash=inner_puzzle_hash,
|
|
388
388
|
p2_singleton_coin_name=bytes32(p2_singleton_coin_name),
|
|
389
389
|
)
|
|
390
|
-
p2_singleton_coin_spend = make_spend(
|
|
391
|
-
p2_singleton_coin, SerializedProgram.from_program(p2_singleton_puzzle), p2_singleton_solution
|
|
392
|
-
)
|
|
390
|
+
p2_singleton_coin_spend = make_spend(p2_singleton_coin, p2_singleton_puzzle, p2_singleton_solution)
|
|
393
391
|
expected_p2_singleton_announcement = AssertCoinAnnouncement(
|
|
394
392
|
asserted_id=p2_singleton_coin_name, asserted_msg=b"$"
|
|
395
393
|
).msg_calc
|
chia/_tests/wallet/test_util.py
CHANGED
|
@@ -44,11 +44,11 @@ def test_compute_spend_hints_and_additions() -> None:
|
|
|
44
44
|
|
|
45
45
|
with pytest.raises(ValidationError):
|
|
46
46
|
compute_spend_hints_and_additions(
|
|
47
|
-
make_spend(parent_coin.coin, Program.to(1), Program.to([[51, bytes32.zeros, 0] for _ in range(
|
|
47
|
+
make_spend(parent_coin.coin, Program.to(1), Program.to([[51, bytes32.zeros, 0] for _ in range(10000)]))
|
|
48
48
|
)
|
|
49
49
|
with pytest.raises(ValidationError):
|
|
50
50
|
compute_spend_hints_and_additions(
|
|
51
|
-
make_spend(parent_coin.coin, Program.to(1), Program.to([[50, bytes48.zeros, b""] for _ in range(
|
|
51
|
+
make_spend(parent_coin.coin, Program.to(1), Program.to([[50, bytes48.zeros, b""] for _ in range(10000)]))
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
|
|
@@ -5,33 +5,33 @@ from pathlib import Path
|
|
|
5
5
|
from typing import Any, Optional
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
|
-
from chia_rs import AugSchemeMPL, G1Element, G2Element
|
|
8
|
+
from chia_rs import AugSchemeMPL, CoinSpend, G1Element, G2Element
|
|
9
9
|
from chia_rs.sized_bytes import bytes32
|
|
10
10
|
from chia_rs.sized_ints import uint16, uint32, uint64
|
|
11
11
|
|
|
12
12
|
from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
|
|
13
13
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
14
|
-
from chia.rpc.wallet_request_types import GetTransactionMemo
|
|
15
14
|
from chia.server.server import ChiaServer
|
|
16
15
|
from chia.simulator.block_tools import BlockTools
|
|
17
16
|
from chia.simulator.full_node_simulator import FullNodeSimulator
|
|
18
17
|
from chia.simulator.simulator_protocol import ReorgProtocol
|
|
19
18
|
from chia.types.blockchain_format.program import Program
|
|
20
|
-
from chia.types.coin_spend import CoinSpend, compute_additions
|
|
21
19
|
from chia.types.peer_info import PeerInfo
|
|
22
20
|
from chia.types.signing_mode import CHIP_0002_SIGN_MESSAGE_PREFIX
|
|
23
|
-
from chia.types.spend_bundle import estimate_fees
|
|
24
21
|
from chia.util.bech32m import encode_puzzle_hash
|
|
25
22
|
from chia.util.errors import Err
|
|
26
|
-
from chia.wallet.conditions import ConditionValidTimes
|
|
23
|
+
from chia.wallet.conditions import ConditionValidTimes
|
|
27
24
|
from chia.wallet.derive_keys import master_sk_to_wallet_sk
|
|
25
|
+
from chia.wallet.estimate_fees import estimate_fees
|
|
28
26
|
from chia.wallet.puzzles.clawback.metadata import AutoClaimSettings
|
|
29
27
|
from chia.wallet.transaction_record import TransactionRecord
|
|
28
|
+
from chia.wallet.util.compute_additions import compute_additions
|
|
30
29
|
from chia.wallet.util.query_filter import TransactionTypeFilter
|
|
31
30
|
from chia.wallet.util.transaction_type import TransactionType
|
|
32
31
|
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
33
32
|
from chia.wallet.util.wallet_types import CoinType
|
|
34
33
|
from chia.wallet.wallet_node import WalletNode, get_wallet_db_path
|
|
34
|
+
from chia.wallet.wallet_request_types import GetTransactionMemo
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class TestWalletSimulator:
|
|
@@ -187,10 +187,11 @@ class TestWalletSimulator:
|
|
|
187
187
|
wsm_1 = env_1.wallet_state_manager
|
|
188
188
|
|
|
189
189
|
tx_amount = 500
|
|
190
|
-
|
|
190
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
191
|
+
normal_puzhash = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
191
192
|
|
|
192
193
|
# Transfer to normal wallet
|
|
193
|
-
for _ in range(
|
|
194
|
+
for _ in range(number_of_coins):
|
|
194
195
|
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
195
196
|
await wallet.generate_signed_transaction(
|
|
196
197
|
[uint64(tx_amount)],
|
|
@@ -337,7 +338,9 @@ class TestWalletSimulator:
|
|
|
337
338
|
api_1 = env_2.rpc_api
|
|
338
339
|
|
|
339
340
|
tx_amount = 500
|
|
340
|
-
|
|
341
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
342
|
+
normal_puzhash = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
343
|
+
|
|
341
344
|
# Transfer to normal wallet
|
|
342
345
|
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
343
346
|
await wallet.generate_signed_transaction(
|
|
@@ -398,7 +401,11 @@ class TestWalletSimulator:
|
|
|
398
401
|
|
|
399
402
|
test_fee = 10
|
|
400
403
|
resp = await api_0.spend_clawback_coins(
|
|
401
|
-
{
|
|
404
|
+
{
|
|
405
|
+
"coin_ids": [normal_puzhash.hex(), merkle_coin.name().hex()],
|
|
406
|
+
"fee": test_fee,
|
|
407
|
+
**wallet_environments.tx_config.to_json_dict(),
|
|
408
|
+
}
|
|
402
409
|
)
|
|
403
410
|
assert resp["success"]
|
|
404
411
|
assert len(resp["transaction_ids"]) == 1
|
|
@@ -479,9 +486,9 @@ class TestWalletSimulator:
|
|
|
479
486
|
api_0 = env.rpc_api
|
|
480
487
|
|
|
481
488
|
tx_amount = 500
|
|
482
|
-
normal_puzhash = await wallet.get_new_puzzlehash()
|
|
483
489
|
# Transfer to normal wallet
|
|
484
490
|
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
491
|
+
normal_puzhash = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
|
|
485
492
|
await wallet.generate_signed_transaction(
|
|
486
493
|
[uint64(tx_amount)],
|
|
487
494
|
[normal_puzhash],
|
|
@@ -527,7 +534,11 @@ class TestWalletSimulator:
|
|
|
527
534
|
merkle_coin = tx.additions[0] if tx.additions[0].amount == tx_amount else tx.additions[1]
|
|
528
535
|
test_fee = 10
|
|
529
536
|
resp = await api_0.spend_clawback_coins(
|
|
530
|
-
{
|
|
537
|
+
{
|
|
538
|
+
"coin_ids": [merkle_coin.name().hex(), normal_puzhash.hex()],
|
|
539
|
+
"fee": test_fee,
|
|
540
|
+
**wallet_environments.tx_config.to_json_dict(),
|
|
541
|
+
}
|
|
531
542
|
)
|
|
532
543
|
assert resp["success"]
|
|
533
544
|
assert len(resp["transaction_ids"]) == 1
|
|
@@ -596,7 +607,8 @@ class TestWalletSimulator:
|
|
|
596
607
|
api_1 = env_2.rpc_api
|
|
597
608
|
|
|
598
609
|
tx_amount = 500
|
|
599
|
-
|
|
610
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
611
|
+
normal_puzhash = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
600
612
|
# Transfer to normal wallet
|
|
601
613
|
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
602
614
|
await wallet.generate_signed_transaction(
|
|
@@ -659,7 +671,11 @@ class TestWalletSimulator:
|
|
|
659
671
|
merkle_coin = tx.additions[0] if tx.additions[0].amount == tx_amount else tx.additions[1]
|
|
660
672
|
test_fee = 10
|
|
661
673
|
resp = await api_1.spend_clawback_coins(
|
|
662
|
-
{
|
|
674
|
+
{
|
|
675
|
+
"coin_ids": [merkle_coin.name().hex(), normal_puzhash.hex()],
|
|
676
|
+
"fee": test_fee,
|
|
677
|
+
**wallet_environments.tx_config.to_json_dict(),
|
|
678
|
+
}
|
|
663
679
|
)
|
|
664
680
|
assert resp["success"]
|
|
665
681
|
assert len(resp["transaction_ids"]) == 1
|
|
@@ -728,7 +744,8 @@ class TestWalletSimulator:
|
|
|
728
744
|
wallet_1 = env_2.xch_wallet
|
|
729
745
|
|
|
730
746
|
tx_amount = 500
|
|
731
|
-
|
|
747
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
748
|
+
normal_puzhash = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
732
749
|
# Transfer to normal wallet
|
|
733
750
|
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
734
751
|
await wallet.generate_signed_transaction(
|
|
@@ -976,8 +993,10 @@ class TestWalletSimulator:
|
|
|
976
993
|
wallet_2 = env_2.xch_wallet
|
|
977
994
|
api_1 = env_1.rpc_api
|
|
978
995
|
|
|
979
|
-
|
|
980
|
-
|
|
996
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
997
|
+
wallet_1_puzhash = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
998
|
+
async with wallet_2.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
999
|
+
wallet_2_puzhash = await action_scope.get_puzzle_hash(wallet_2.wallet_state_manager)
|
|
981
1000
|
|
|
982
1001
|
tx_amount = 500
|
|
983
1002
|
# Transfer to normal wallet
|
|
@@ -1332,10 +1351,14 @@ class TestWalletSimulator:
|
|
|
1332
1351
|
wallet_1 = env_1.xch_wallet
|
|
1333
1352
|
|
|
1334
1353
|
tx_amount = 10
|
|
1354
|
+
async with wallet_1.wallet_state_manager.new_action_scope(
|
|
1355
|
+
wallet_environments.tx_config, push=True
|
|
1356
|
+
) as action_scope:
|
|
1357
|
+
wallet_1_ph = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
1335
1358
|
async with wallet_0.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
1336
1359
|
await wallet_0.generate_signed_transaction(
|
|
1337
1360
|
[uint64(tx_amount)],
|
|
1338
|
-
[
|
|
1361
|
+
[wallet_1_ph],
|
|
1339
1362
|
action_scope,
|
|
1340
1363
|
uint64(0),
|
|
1341
1364
|
)
|
|
@@ -1378,10 +1401,12 @@ class TestWalletSimulator:
|
|
|
1378
1401
|
)
|
|
1379
1402
|
|
|
1380
1403
|
tx_amount = 5
|
|
1404
|
+
async with wallet_0.wallet_state_manager.new_action_scope(
|
|
1405
|
+
wallet_environments.tx_config, push=True
|
|
1406
|
+
) as action_scope:
|
|
1407
|
+
wallet_0_ph = await action_scope.get_puzzle_hash(wallet_0.wallet_state_manager)
|
|
1381
1408
|
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
1382
|
-
await wallet_1.generate_signed_transaction(
|
|
1383
|
-
[uint64(tx_amount)], [await wallet_0.get_puzzle_hash(False)], action_scope, uint64(0)
|
|
1384
|
-
)
|
|
1409
|
+
await wallet_1.generate_signed_transaction([uint64(tx_amount)], [wallet_0_ph], action_scope, uint64(0))
|
|
1385
1410
|
|
|
1386
1411
|
await wallet_environments.process_pending_states(
|
|
1387
1412
|
[
|
|
@@ -1435,10 +1460,14 @@ class TestWalletSimulator:
|
|
|
1435
1460
|
|
|
1436
1461
|
tx_amount = 1_750_000_000_000 # ensures we grab both coins
|
|
1437
1462
|
tx_fee = 10
|
|
1463
|
+
async with wallet_1.wallet_state_manager.new_action_scope(
|
|
1464
|
+
wallet_environments.tx_config, push=True
|
|
1465
|
+
) as action_scope:
|
|
1466
|
+
wallet_1_ph = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
1438
1467
|
async with wallet_0.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
1439
1468
|
await wallet_0.generate_signed_transaction(
|
|
1440
1469
|
[uint64(tx_amount)],
|
|
1441
|
-
[
|
|
1470
|
+
[wallet_1_ph],
|
|
1442
1471
|
action_scope,
|
|
1443
1472
|
uint64(tx_fee),
|
|
1444
1473
|
)
|
|
@@ -1501,7 +1530,8 @@ class TestWalletSimulator:
|
|
|
1501
1530
|
|
|
1502
1531
|
tx_amount = 1_750_000_000_000 # ensures we grab both coins
|
|
1503
1532
|
tx_fee = 10
|
|
1504
|
-
|
|
1533
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
1534
|
+
ph_2 = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
1505
1535
|
async with wallet_0.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
1506
1536
|
await wallet_0.generate_signed_transaction(
|
|
1507
1537
|
[uint64(tx_amount)], [ph_2], action_scope, uint64(tx_fee), memos=[[ph_2]]
|
|
@@ -1578,9 +1608,8 @@ class TestWalletSimulator:
|
|
|
1578
1608
|
env = wallet_environments.environments[0]
|
|
1579
1609
|
wallet = env.xch_wallet
|
|
1580
1610
|
|
|
1581
|
-
ph = await wallet.get_puzzle_hash(False)
|
|
1582
|
-
primaries = [CreateCoin(ph, uint64(1000000000 + i)) for i in range(int(wallet.max_send_quantity) + 1)]
|
|
1583
1611
|
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
1612
|
+
ph = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
|
|
1584
1613
|
await wallet.generate_signed_transaction(
|
|
1585
1614
|
[uint64(1)] + [uint64(1000000000 + i) for i in range(int(wallet.max_send_quantity) + 1)],
|
|
1586
1615
|
[ph] * (wallet.max_send_quantity + 2),
|
|
@@ -1608,7 +1637,7 @@ class TestWalletSimulator:
|
|
|
1608
1637
|
">=#max_send_amount": 1, # any amount increase
|
|
1609
1638
|
"<=#pending_change": -1, # any amount decrease
|
|
1610
1639
|
"pending_coin_removal_count": -1,
|
|
1611
|
-
"unspent_coin_count":
|
|
1640
|
+
"unspent_coin_count": wallet.max_send_quantity + 2,
|
|
1612
1641
|
}
|
|
1613
1642
|
},
|
|
1614
1643
|
),
|
|
@@ -1743,10 +1772,12 @@ class TestWalletSimulator:
|
|
|
1743
1772
|
assert reorg_height is not None
|
|
1744
1773
|
await full_node_api.farm_blocks_to_puzzlehash(count=3)
|
|
1745
1774
|
|
|
1775
|
+
async with wallet_2.wallet_state_manager.new_action_scope(
|
|
1776
|
+
wallet_environments.tx_config, push=True
|
|
1777
|
+
) as action_scope:
|
|
1778
|
+
wallet_2_ph = await action_scope.get_puzzle_hash(wallet_2.wallet_state_manager)
|
|
1746
1779
|
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
1747
|
-
await wallet.generate_signed_transaction(
|
|
1748
|
-
[uint64(tx_amount)], [await wallet_2.get_puzzle_hash(False)], action_scope, coins={coin}
|
|
1749
|
-
)
|
|
1780
|
+
await wallet.generate_signed_transaction([uint64(tx_amount)], [wallet_2_ph], action_scope, coins={coin})
|
|
1750
1781
|
|
|
1751
1782
|
await wallet_environments.process_pending_states(
|
|
1752
1783
|
[
|
|
@@ -1973,7 +2004,9 @@ class TestWalletSimulator:
|
|
|
1973
2004
|
|
|
1974
2005
|
# Test general string
|
|
1975
2006
|
message = "Hello World"
|
|
1976
|
-
|
|
2007
|
+
|
|
2008
|
+
async with env.wallet_state_manager.new_action_scope(wallet_environments.tx_config, push=True) as action_scope:
|
|
2009
|
+
ph = await action_scope.get_puzzle_hash(env.wallet_state_manager)
|
|
1977
2010
|
response = await api_0.sign_message_by_address({"address": encode_puzzle_hash(ph, "xch"), "message": message})
|
|
1978
2011
|
puzzle: Program = Program.to((CHIP_0002_SIGN_MESSAGE_PREFIX, message))
|
|
1979
2012
|
|
|
@@ -2084,6 +2117,52 @@ class TestWalletSimulator:
|
|
|
2084
2117
|
]
|
|
2085
2118
|
)
|
|
2086
2119
|
|
|
2120
|
+
@pytest.mark.parametrize(
|
|
2121
|
+
"wallet_environments",
|
|
2122
|
+
[{"num_environments": 1, "blocks_needed": [1], "reuse_puzhash": True, "trusted": True}],
|
|
2123
|
+
indirect=True,
|
|
2124
|
+
)
|
|
2125
|
+
@pytest.mark.limit_consensus_modes
|
|
2126
|
+
@pytest.mark.anyio
|
|
2127
|
+
async def test_forced_new_puzzle_hash(self, wallet_environments: WalletTestFramework) -> None:
|
|
2128
|
+
env = wallet_environments.environments[0]
|
|
2129
|
+
wallet = env.xch_wallet
|
|
2130
|
+
|
|
2131
|
+
with wallet_environments.new_puzzle_hashes_allowed():
|
|
2132
|
+
async with wallet.wallet_state_manager.new_action_scope(
|
|
2133
|
+
wallet_environments.tx_config, push=True
|
|
2134
|
+
) as action_scope:
|
|
2135
|
+
coins = await wallet.select_coins(uint64(1), action_scope)
|
|
2136
|
+
coin_list = list(coins)
|
|
2137
|
+
assert len(coin_list) == 1
|
|
2138
|
+
await wallet.generate_signed_transaction(
|
|
2139
|
+
[uint64(coin_list[0].amount / 2)],
|
|
2140
|
+
[coin_list[0].puzzle_hash],
|
|
2141
|
+
action_scope,
|
|
2142
|
+
coins=coins,
|
|
2143
|
+
)
|
|
2144
|
+
[tx] = action_scope.side_effects.transactions
|
|
2145
|
+
assert tx.spend_bundle is not None
|
|
2146
|
+
assert len(list(set(coin.puzzle_hash for coin in tx.spend_bundle.additions()))) == 2
|
|
2147
|
+
|
|
2148
|
+
@pytest.mark.parametrize(
|
|
2149
|
+
"wallet_environments",
|
|
2150
|
+
[{"num_environments": 1, "blocks_needed": [1], "reuse_puzhash": True, "trusted": True}],
|
|
2151
|
+
indirect=True,
|
|
2152
|
+
)
|
|
2153
|
+
@pytest.mark.limit_consensus_modes
|
|
2154
|
+
@pytest.mark.anyio
|
|
2155
|
+
async def test_puzzle_hashes_not_committed(self, wallet_environments: WalletTestFramework) -> None:
|
|
2156
|
+
env = wallet_environments.environments[0]
|
|
2157
|
+
wallet = env.xch_wallet
|
|
2158
|
+
|
|
2159
|
+
# Our framework
|
|
2160
|
+
async with wallet.wallet_state_manager.new_action_scope(
|
|
2161
|
+
wallet_environments.tx_config,
|
|
2162
|
+
push=False,
|
|
2163
|
+
) as action_scope:
|
|
2164
|
+
await action_scope.get_puzzle_hash(wallet.wallet_state_manager, override_reuse_puzhash_with=False)
|
|
2165
|
+
|
|
2087
2166
|
|
|
2088
2167
|
def test_get_wallet_db_path_v2_r1() -> None:
|
|
2089
2168
|
root_path: Path = Path("/x/y/z/.chia/mainnet").resolve()
|
|
@@ -4,7 +4,7 @@ from dataclasses import dataclass
|
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
|
-
from chia_rs import G2Element
|
|
7
|
+
from chia_rs import G2Element, Program
|
|
8
8
|
from chia_rs.sized_bytes import bytes32
|
|
9
9
|
from chia_rs.sized_ints import uint64
|
|
10
10
|
|
|
@@ -83,6 +83,7 @@ async def test_wallet_action_scope() -> None:
|
|
|
83
83
|
sign=True,
|
|
84
84
|
additional_signing_responses=[],
|
|
85
85
|
extra_spends=[],
|
|
86
|
+
puzzle_for_pk=lambda _: Program.to(1),
|
|
86
87
|
) as action_scope:
|
|
87
88
|
async with action_scope.use() as interface:
|
|
88
89
|
interface.side_effects.transactions = [STD_TX]
|
|
@@ -94,7 +95,13 @@ async def test_wallet_action_scope() -> None:
|
|
|
94
95
|
assert wsm.most_recent_call == ([STD_TX], True, False, True, [], [], [])
|
|
95
96
|
|
|
96
97
|
async with wsm.new_action_scope( # type: ignore[attr-defined]
|
|
97
|
-
DEFAULT_TX_CONFIG,
|
|
98
|
+
DEFAULT_TX_CONFIG,
|
|
99
|
+
push=False,
|
|
100
|
+
merge_spends=True,
|
|
101
|
+
sign=True,
|
|
102
|
+
additional_signing_responses=[],
|
|
103
|
+
extra_spends=[],
|
|
104
|
+
puzzle_for_pk=lambda _: Program.to(1),
|
|
98
105
|
) as action_scope:
|
|
99
106
|
async with action_scope.use() as interface:
|
|
100
107
|
interface.side_effects.transactions = []
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
+
from chia_rs import FullBlock, HeaderBlock
|
|
4
5
|
from chia_rs.sized_ints import uint8, uint32
|
|
5
6
|
|
|
6
7
|
from chia._tests.util.db_connection import DBConnection
|
|
7
8
|
from chia._tests.util.setup_nodes import OldSimulatorsAndWallets
|
|
8
9
|
from chia.consensus.blockchain import AddBlockResult
|
|
10
|
+
from chia.consensus.generator_tools import get_block_header
|
|
9
11
|
from chia.protocols import full_node_protocol
|
|
10
12
|
from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
11
13
|
from chia.types.blockchain_format.vdf import VDFProof
|
|
12
|
-
from chia.types.full_block import FullBlock
|
|
13
|
-
from chia.types.header_block import HeaderBlock
|
|
14
|
-
from chia.util.generator_tools import get_block_header
|
|
15
14
|
from chia.wallet.key_val_store import KeyValStore
|
|
16
15
|
from chia.wallet.wallet_blockchain import WalletBlockchain
|
|
17
16
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
+
from chia_rs import FullBlock, HeaderBlock
|
|
4
5
|
|
|
5
6
|
from chia._tests.util.db_connection import DBConnection
|
|
6
7
|
from chia.simulator.block_tools import BlockTools
|
|
7
|
-
from chia.types.full_block import FullBlock
|
|
8
|
-
from chia.types.header_block import HeaderBlock
|
|
9
8
|
from chia.wallet.key_val_store import KeyValStore
|
|
10
9
|
|
|
11
10
|
|
|
@@ -8,7 +8,7 @@ from pathlib import Path
|
|
|
8
8
|
from typing import Any, Optional
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
|
-
from chia_rs import G1Element, PrivateKey
|
|
11
|
+
from chia_rs import CoinState, FullBlock, G1Element, PrivateKey
|
|
12
12
|
from chia_rs.sized_bytes import bytes32
|
|
13
13
|
from chia_rs.sized_ints import uint8, uint32, uint64, uint128
|
|
14
14
|
|
|
@@ -16,14 +16,12 @@ from chia._tests.util.misc import CoinGenerator, patch_request_handler
|
|
|
16
16
|
from chia._tests.util.setup_nodes import OldSimulatorsAndWallets
|
|
17
17
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
18
18
|
from chia.protocols import wallet_protocol
|
|
19
|
+
from chia.protocols.outbound_message import Message, make_msg
|
|
19
20
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
20
|
-
from chia.protocols.wallet_protocol import CoinState
|
|
21
21
|
from chia.server.api_protocol import Self
|
|
22
|
-
from chia.server.outbound_message import Message, make_msg
|
|
23
22
|
from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
24
23
|
from chia.simulator.block_tools import test_constants
|
|
25
24
|
from chia.types.blockchain_format.coin import Coin
|
|
26
|
-
from chia.types.full_block import FullBlock
|
|
27
25
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
28
26
|
from chia.types.peer_info import PeerInfo
|
|
29
27
|
from chia.util.config import load_config
|
|
@@ -47,7 +47,8 @@ async def test_wallet_tx_retry(
|
|
|
47
47
|
wallet_node_1.config["tx_resend_timeout_secs"] = 5
|
|
48
48
|
wallet_server_1 = wallets[0][1]
|
|
49
49
|
wallet_1 = wallet_node_1.wallet_state_manager.main_wallet
|
|
50
|
-
|
|
50
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
51
|
+
reward_ph = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
51
52
|
|
|
52
53
|
await wallet_server_1.start_client(PeerInfo(self_hostname, server_1.get_port()), None)
|
|
53
54
|
|
|
@@ -74,7 +75,8 @@ async def test_wallet_tx_retry(
|
|
|
74
75
|
# Wait some time so wallet will retry
|
|
75
76
|
await asyncio.sleep(2)
|
|
76
77
|
|
|
77
|
-
|
|
78
|
+
async with wallet_1.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
79
|
+
our_ph = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
|
|
78
80
|
await farm_blocks(full_node_1, our_ph, 2)
|
|
79
81
|
|
|
80
82
|
# Wait for wallet to catch up
|