chia-blockchain 2.5.4rc1__py3-none-any.whl → 2.5.5rc1__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 +421 -69
- chia/_tests/core/mempool/test_mempool_performance.py +3 -2
- chia/_tests/core/mempool/test_singleton_fast_forward.py +60 -131
- 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 +305 -184
- 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 +143 -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 +32 -42
- 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 +273 -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.4rc1.dist-info → chia_blockchain-2.5.5rc1.dist-info}/METADATA +7 -7
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5rc1.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.4rc1.dist-info → chia_blockchain-2.5.5rc1.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5rc1.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5rc1.dist-info}/entry_points.txt +0 -0
|
@@ -6,6 +6,7 @@ import pytest
|
|
|
6
6
|
from chia_rs.sized_bytes import bytes32
|
|
7
7
|
from chia_rs.sized_ints import uint64
|
|
8
8
|
|
|
9
|
+
from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
|
|
9
10
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
10
11
|
from chia.data_layer.data_layer_wallet import DataLayerWallet
|
|
11
12
|
from chia.wallet.puzzle_drivers import Solver
|
|
@@ -13,7 +14,6 @@ from chia.wallet.trade_record import TradeRecord
|
|
|
13
14
|
from chia.wallet.trading.offer import Offer
|
|
14
15
|
from chia.wallet.trading.trade_status import TradeStatus
|
|
15
16
|
from chia.wallet.util.merkle_utils import build_merkle_tree, simplify_merkle_proof
|
|
16
|
-
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
async def is_singleton_confirmed_and_root(dl_wallet: DataLayerWallet, lid: bytes32, root: bytes32) -> bool:
|
|
@@ -37,50 +37,106 @@ def get_parent_branch(value: bytes32, proof: tuple[int, list[bytes32]]) -> tuple
|
|
|
37
37
|
return branch, new_proof
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
@pytest.mark.
|
|
40
|
+
@pytest.mark.limit_consensus_modes
|
|
41
|
+
@pytest.mark.parametrize("wallet_environments", [{"num_environments": 2, "blocks_needed": [2, 2]}], indirect=True)
|
|
41
42
|
@pytest.mark.anyio
|
|
42
|
-
async def test_dl_offers(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
43
|
+
async def test_dl_offers(wallet_environments: WalletTestFramework) -> None:
|
|
44
|
+
env_maker = wallet_environments.environments[0]
|
|
45
|
+
env_taker = wallet_environments.environments[1]
|
|
46
|
+
wsm_maker = env_maker.wallet_state_manager
|
|
47
|
+
wsm_taker = env_taker.wallet_state_manager
|
|
48
|
+
|
|
49
|
+
env_maker.wallet_aliases = {
|
|
50
|
+
"xch": 1,
|
|
51
|
+
"dl": 2,
|
|
52
|
+
}
|
|
53
|
+
env_taker.wallet_aliases = {
|
|
54
|
+
"xch": 1,
|
|
55
|
+
"dl": 2,
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
dl_wallet_maker = await DataLayerWallet.create_new_dl_wallet(wsm_maker)
|
|
59
|
+
dl_wallet_taker = await DataLayerWallet.create_new_dl_wallet(wsm_taker)
|
|
60
|
+
|
|
61
|
+
await env_maker.change_balances({"dl": {"init": True}})
|
|
62
|
+
await env_taker.change_balances({"dl": {"init": True}})
|
|
63
|
+
|
|
64
|
+
MAKER_ROWS = [bytes32([i] * 32) for i in range(10)]
|
|
65
|
+
TAKER_ROWS = [bytes32([i] * 32) for i in range(10)]
|
|
60
66
|
maker_root, _ = build_merkle_tree(MAKER_ROWS)
|
|
61
67
|
taker_root, _ = build_merkle_tree(TAKER_ROWS)
|
|
62
68
|
|
|
63
69
|
fee = uint64(1_999_999_999_999)
|
|
64
70
|
|
|
65
|
-
async with dl_wallet_maker.wallet_state_manager.new_action_scope(
|
|
71
|
+
async with dl_wallet_maker.wallet_state_manager.new_action_scope(
|
|
72
|
+
wallet_environments.tx_config, push=True
|
|
73
|
+
) as action_scope:
|
|
66
74
|
launcher_id_maker = await dl_wallet_maker.generate_new_reporter(maker_root, action_scope, fee=fee)
|
|
67
75
|
assert await dl_wallet_maker.get_latest_singleton(launcher_id_maker) is not None
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
76
|
+
|
|
77
|
+
await wallet_environments.process_pending_states(
|
|
78
|
+
[
|
|
79
|
+
WalletStateTransition(
|
|
80
|
+
pre_block_balance_updates={
|
|
81
|
+
"xch": {
|
|
82
|
+
"set_remainder": True,
|
|
83
|
+
},
|
|
84
|
+
"dl": {
|
|
85
|
+
"set_remainder": True,
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
post_block_balance_updates={
|
|
89
|
+
"xch": {
|
|
90
|
+
"set_remainder": True,
|
|
91
|
+
},
|
|
92
|
+
"dl": {
|
|
93
|
+
"set_remainder": True,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
),
|
|
97
|
+
WalletStateTransition(),
|
|
98
|
+
]
|
|
99
|
+
)
|
|
100
|
+
|
|
71
101
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_maker, maker_root)
|
|
72
102
|
|
|
73
|
-
async with dl_wallet_taker.wallet_state_manager.new_action_scope(
|
|
103
|
+
async with dl_wallet_taker.wallet_state_manager.new_action_scope(
|
|
104
|
+
wallet_environments.tx_config, push=True
|
|
105
|
+
) as action_scope:
|
|
74
106
|
launcher_id_taker = await dl_wallet_taker.generate_new_reporter(taker_root, action_scope, fee=fee)
|
|
75
107
|
assert await dl_wallet_taker.get_latest_singleton(launcher_id_taker) is not None
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
108
|
+
|
|
109
|
+
await wallet_environments.process_pending_states(
|
|
110
|
+
[
|
|
111
|
+
WalletStateTransition(),
|
|
112
|
+
WalletStateTransition(
|
|
113
|
+
pre_block_balance_updates={
|
|
114
|
+
"xch": {
|
|
115
|
+
"set_remainder": True,
|
|
116
|
+
},
|
|
117
|
+
"dl": {
|
|
118
|
+
"set_remainder": True,
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
post_block_balance_updates={
|
|
122
|
+
"xch": {
|
|
123
|
+
"set_remainder": True,
|
|
124
|
+
},
|
|
125
|
+
"dl": {
|
|
126
|
+
"set_remainder": True,
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
),
|
|
130
|
+
]
|
|
131
|
+
)
|
|
132
|
+
|
|
79
133
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_taker, launcher_id_taker, taker_root)
|
|
80
134
|
|
|
81
|
-
peer =
|
|
135
|
+
peer = env_taker.node.get_full_node_peer()
|
|
82
136
|
await dl_wallet_maker.track_new_launcher_id(launcher_id_taker, peer)
|
|
83
137
|
await dl_wallet_taker.track_new_launcher_id(launcher_id_maker, peer)
|
|
138
|
+
await env_maker.change_balances({"dl": {"unspent_coin_count": 1}})
|
|
139
|
+
await env_taker.change_balances({"dl": {"unspent_coin_count": 1}})
|
|
84
140
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_taker, taker_root)
|
|
85
141
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_taker, launcher_id_maker, maker_root)
|
|
86
142
|
|
|
@@ -98,7 +154,9 @@ async def test_dl_offers(wallets_prefarm: Any, trusted: bool) -> None:
|
|
|
98
154
|
|
|
99
155
|
fee = uint64(2_000_000_000_000)
|
|
100
156
|
|
|
101
|
-
async with trade_manager_maker.wallet_state_manager.new_action_scope(
|
|
157
|
+
async with trade_manager_maker.wallet_state_manager.new_action_scope(
|
|
158
|
+
wallet_environments.tx_config, push=False
|
|
159
|
+
) as action_scope:
|
|
102
160
|
success, offer_maker, error = await trade_manager_maker.create_offer_for_ids(
|
|
103
161
|
{launcher_id_maker: -1, launcher_id_taker: 1},
|
|
104
162
|
action_scope,
|
|
@@ -136,11 +194,9 @@ async def test_dl_offers(wallets_prefarm: Any, trusted: bool) -> None:
|
|
|
136
194
|
]
|
|
137
195
|
}
|
|
138
196
|
|
|
139
|
-
[_maker_offer], signing_response = await
|
|
140
|
-
[Offer.from_bytes(offer_maker.offer)]
|
|
141
|
-
)
|
|
197
|
+
[_maker_offer], signing_response = await wsm_maker.sign_offers([Offer.from_bytes(offer_maker.offer)])
|
|
142
198
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
143
|
-
|
|
199
|
+
wallet_environments.tx_config, push=True, additional_signing_responses=signing_response
|
|
144
200
|
) as action_scope:
|
|
145
201
|
offer_taker = await trade_manager_taker.respond_to_offer(
|
|
146
202
|
Offer.from_bytes(offer_maker.offer),
|
|
@@ -200,20 +256,56 @@ async def test_dl_offers(wallets_prefarm: Any, trusted: bool) -> None:
|
|
|
200
256
|
]
|
|
201
257
|
}
|
|
202
258
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
259
|
+
await wallet_environments.process_pending_states(
|
|
260
|
+
[
|
|
261
|
+
WalletStateTransition(
|
|
262
|
+
pre_block_balance_updates={
|
|
263
|
+
"xch": {
|
|
264
|
+
"spendable_balance": -fee,
|
|
265
|
+
"max_send_amount": -fee,
|
|
266
|
+
"pending_coin_removal_count": 2,
|
|
267
|
+
},
|
|
268
|
+
"dl": {
|
|
269
|
+
"pending_coin_removal_count": 1,
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
post_block_balance_updates={
|
|
273
|
+
"xch": {
|
|
274
|
+
"unconfirmed_wallet_balance": -fee,
|
|
275
|
+
"confirmed_wallet_balance": -fee,
|
|
276
|
+
"pending_coin_removal_count": -2,
|
|
277
|
+
"unspent_coin_count": -2,
|
|
278
|
+
},
|
|
279
|
+
"dl": {
|
|
280
|
+
"pending_coin_removal_count": -1,
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
),
|
|
284
|
+
WalletStateTransition(
|
|
285
|
+
pre_block_balance_updates={
|
|
286
|
+
"xch": {
|
|
287
|
+
"unconfirmed_wallet_balance": -fee,
|
|
288
|
+
"spendable_balance": -fee,
|
|
289
|
+
"max_send_amount": -fee,
|
|
290
|
+
"pending_coin_removal_count": 2,
|
|
291
|
+
},
|
|
292
|
+
"dl": {
|
|
293
|
+
"pending_coin_removal_count": 2,
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
post_block_balance_updates={
|
|
297
|
+
"xch": {
|
|
298
|
+
"confirmed_wallet_balance": -fee,
|
|
299
|
+
"pending_coin_removal_count": -2,
|
|
300
|
+
"unspent_coin_count": -2,
|
|
301
|
+
},
|
|
302
|
+
"dl": {
|
|
303
|
+
"pending_coin_removal_count": -2,
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
),
|
|
307
|
+
]
|
|
308
|
+
)
|
|
217
309
|
|
|
218
310
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_taker, taker_root)
|
|
219
311
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_taker, launcher_id_maker, maker_root)
|
|
@@ -229,43 +321,121 @@ async def test_dl_offers(wallets_prefarm: Any, trusted: bool) -> None:
|
|
|
229
321
|
|
|
230
322
|
await time_out_assert(15, is_singleton_generation, True, dl_wallet_taker, launcher_id_taker, 2)
|
|
231
323
|
|
|
232
|
-
async with dl_wallet_taker.wallet_state_manager.new_action_scope(
|
|
324
|
+
async with dl_wallet_taker.wallet_state_manager.new_action_scope(
|
|
325
|
+
wallet_environments.tx_config, push=True
|
|
326
|
+
) as action_scope:
|
|
233
327
|
await dl_wallet_taker.create_update_state_spend(launcher_id_taker, bytes32([2] * 32), action_scope)
|
|
234
|
-
await full_node_api.process_transaction_records(records=action_scope.side_effects.transactions)
|
|
235
328
|
|
|
329
|
+
await wallet_environments.process_pending_states(
|
|
330
|
+
[
|
|
331
|
+
WalletStateTransition(),
|
|
332
|
+
WalletStateTransition(
|
|
333
|
+
pre_block_balance_updates={
|
|
334
|
+
"xch": {
|
|
335
|
+
"set_remainder": True,
|
|
336
|
+
},
|
|
337
|
+
"dl": {
|
|
338
|
+
"set_remainder": True,
|
|
339
|
+
},
|
|
340
|
+
},
|
|
341
|
+
post_block_balance_updates={
|
|
342
|
+
"xch": {
|
|
343
|
+
"set_remainder": True,
|
|
344
|
+
},
|
|
345
|
+
"dl": {
|
|
346
|
+
"set_remainder": True,
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
),
|
|
350
|
+
]
|
|
351
|
+
)
|
|
236
352
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
)
|
|
353
|
+
|
|
354
|
+
@pytest.mark.limit_consensus_modes
|
|
355
|
+
@pytest.mark.parametrize("wallet_environments", [{"num_environments": 1, "blocks_needed": [3]}], indirect=True)
|
|
241
356
|
@pytest.mark.anyio
|
|
242
|
-
async def test_dl_offer_cancellation(
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
357
|
+
async def test_dl_offer_cancellation(wallet_environments: WalletTestFramework) -> None:
|
|
358
|
+
env_maker = wallet_environments.environments[0]
|
|
359
|
+
env_maker.wallet_aliases = {
|
|
360
|
+
"xch": 1,
|
|
361
|
+
"dl": 2,
|
|
362
|
+
}
|
|
246
363
|
|
|
247
|
-
|
|
248
|
-
|
|
364
|
+
dl_wallet = await DataLayerWallet.create_new_dl_wallet(env_maker.wallet_state_manager)
|
|
365
|
+
await env_maker.change_balances({"dl": {"init": True}})
|
|
249
366
|
|
|
250
|
-
ROWS = [bytes32([i] * 32) for i in range(
|
|
367
|
+
ROWS = [bytes32([i] * 32) for i in range(10)]
|
|
251
368
|
root, _ = build_merkle_tree(ROWS)
|
|
252
369
|
|
|
253
|
-
async with dl_wallet.wallet_state_manager.new_action_scope(
|
|
370
|
+
async with dl_wallet.wallet_state_manager.new_action_scope(
|
|
371
|
+
wallet_environments.tx_config, push=True
|
|
372
|
+
) as action_scope:
|
|
254
373
|
launcher_id = await dl_wallet.generate_new_reporter(root, action_scope)
|
|
255
374
|
assert await dl_wallet.get_latest_singleton(launcher_id) is not None
|
|
256
|
-
|
|
375
|
+
|
|
376
|
+
await wallet_environments.process_pending_states(
|
|
377
|
+
[
|
|
378
|
+
WalletStateTransition(
|
|
379
|
+
pre_block_balance_updates={
|
|
380
|
+
"xch": {
|
|
381
|
+
"set_remainder": True,
|
|
382
|
+
},
|
|
383
|
+
"dl": {
|
|
384
|
+
"set_remainder": True,
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
post_block_balance_updates={
|
|
388
|
+
"xch": {
|
|
389
|
+
"set_remainder": True,
|
|
390
|
+
},
|
|
391
|
+
"dl": {
|
|
392
|
+
"set_remainder": True,
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
),
|
|
396
|
+
]
|
|
397
|
+
)
|
|
398
|
+
|
|
257
399
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet, launcher_id, root)
|
|
258
|
-
async with dl_wallet.wallet_state_manager.new_action_scope(
|
|
400
|
+
async with dl_wallet.wallet_state_manager.new_action_scope(
|
|
401
|
+
wallet_environments.tx_config, push=True
|
|
402
|
+
) as action_scope:
|
|
259
403
|
launcher_id_2 = await dl_wallet.generate_new_reporter(root, action_scope)
|
|
260
|
-
await full_node_api.process_transaction_records(records=action_scope.side_effects.transactions)
|
|
261
404
|
|
|
262
|
-
|
|
405
|
+
await wallet_environments.process_pending_states(
|
|
406
|
+
[
|
|
407
|
+
WalletStateTransition(
|
|
408
|
+
pre_block_balance_updates={
|
|
409
|
+
"xch": {
|
|
410
|
+
"set_remainder": True,
|
|
411
|
+
},
|
|
412
|
+
"dl": {
|
|
413
|
+
"set_remainder": True,
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
post_block_balance_updates={
|
|
417
|
+
"xch": {
|
|
418
|
+
"set_remainder": True,
|
|
419
|
+
},
|
|
420
|
+
"dl": {
|
|
421
|
+
"set_remainder": True,
|
|
422
|
+
},
|
|
423
|
+
},
|
|
424
|
+
),
|
|
425
|
+
]
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
trade_manager = env_maker.wallet_state_manager.trade_manager
|
|
263
429
|
|
|
264
430
|
addition = bytes32([101] * 32)
|
|
265
431
|
ROWS.append(addition)
|
|
266
432
|
root, _proofs = build_merkle_tree(ROWS)
|
|
267
433
|
|
|
268
|
-
|
|
434
|
+
FEE = uint64(2_000_000_000_000)
|
|
435
|
+
|
|
436
|
+
async with trade_manager.wallet_state_manager.new_action_scope(
|
|
437
|
+
wallet_environments.tx_config, push=False
|
|
438
|
+
) as action_scope:
|
|
269
439
|
success, offer, error = await trade_manager.create_offer_for_ids(
|
|
270
440
|
{launcher_id: -1, launcher_id_2: 1},
|
|
271
441
|
action_scope,
|
|
@@ -282,83 +452,181 @@ async def test_dl_offer_cancellation(wallets_prefarm: Any, trusted: bool) -> Non
|
|
|
282
452
|
}
|
|
283
453
|
}
|
|
284
454
|
),
|
|
285
|
-
fee=
|
|
455
|
+
fee=FEE,
|
|
286
456
|
)
|
|
287
457
|
assert error is None
|
|
288
458
|
assert success is True
|
|
289
459
|
assert offer is not None
|
|
290
460
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
461
|
+
await env_maker.change_balances(
|
|
462
|
+
{
|
|
463
|
+
"xch": {
|
|
464
|
+
"spendable_balance": -FEE,
|
|
465
|
+
"max_send_amount": -FEE,
|
|
466
|
+
"pending_coin_removal_count": 2,
|
|
467
|
+
},
|
|
468
|
+
"dl": {
|
|
469
|
+
"pending_coin_removal_count": 1,
|
|
470
|
+
},
|
|
471
|
+
}
|
|
472
|
+
)
|
|
473
|
+
await env_maker.check_balances()
|
|
474
|
+
|
|
475
|
+
async with trade_manager.wallet_state_manager.new_action_scope(
|
|
476
|
+
wallet_environments.tx_config, push=True
|
|
477
|
+
) as action_scope:
|
|
478
|
+
await trade_manager.cancel_pending_offers([offer.trade_id], action_scope, fee=FEE, secure=True)
|
|
479
|
+
|
|
295
480
|
# One outgoing for cancel, one outgoing for fee, one incoming from cancel
|
|
296
481
|
assert len(action_scope.side_effects.transactions) == 3
|
|
297
482
|
await time_out_assert(15, get_trade_and_status, TradeStatus.PENDING_CANCEL, trade_manager, offer)
|
|
298
|
-
|
|
483
|
+
|
|
484
|
+
await wallet_environments.process_pending_states(
|
|
485
|
+
[
|
|
486
|
+
WalletStateTransition(
|
|
487
|
+
pre_block_balance_updates={
|
|
488
|
+
"xch": {
|
|
489
|
+
"unconfirmed_wallet_balance": -FEE,
|
|
490
|
+
"spendable_balance": -FEE,
|
|
491
|
+
"max_send_amount": -FEE,
|
|
492
|
+
"pending_coin_removal_count": 2,
|
|
493
|
+
},
|
|
494
|
+
"dl": {},
|
|
495
|
+
},
|
|
496
|
+
post_block_balance_updates={
|
|
497
|
+
"xch": {
|
|
498
|
+
"confirmed_wallet_balance": -FEE,
|
|
499
|
+
"spendable_balance": FEE,
|
|
500
|
+
"max_send_amount": FEE,
|
|
501
|
+
"pending_coin_removal_count": -4,
|
|
502
|
+
"unspent_coin_count": -2,
|
|
503
|
+
},
|
|
504
|
+
"dl": {
|
|
505
|
+
"pending_coin_removal_count": -1,
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
)
|
|
509
|
+
]
|
|
510
|
+
)
|
|
511
|
+
|
|
299
512
|
await time_out_assert(15, get_trade_and_status, TradeStatus.CANCELLED, trade_manager, offer)
|
|
300
513
|
|
|
301
514
|
|
|
302
|
-
@pytest.mark.
|
|
515
|
+
@pytest.mark.limit_consensus_modes
|
|
516
|
+
@pytest.mark.parametrize("wallet_environments", [{"num_environments": 2, "blocks_needed": [3, 3]}], indirect=True)
|
|
303
517
|
@pytest.mark.anyio
|
|
304
|
-
async def test_multiple_dl_offers(
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
518
|
+
async def test_multiple_dl_offers(wallet_environments: WalletTestFramework) -> None:
|
|
519
|
+
env_maker = wallet_environments.environments[0]
|
|
520
|
+
env_taker = wallet_environments.environments[1]
|
|
521
|
+
wsm_maker = env_maker.wallet_state_manager
|
|
522
|
+
wsm_taker = env_taker.wallet_state_manager
|
|
523
|
+
|
|
524
|
+
env_maker.wallet_aliases = {
|
|
525
|
+
"xch": 1,
|
|
526
|
+
"dl": 2,
|
|
527
|
+
}
|
|
528
|
+
env_taker.wallet_aliases = {
|
|
529
|
+
"xch": 1,
|
|
530
|
+
"dl": 2,
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
dl_wallet_maker = await DataLayerWallet.create_new_dl_wallet(wsm_maker)
|
|
534
|
+
dl_wallet_taker = await DataLayerWallet.create_new_dl_wallet(wsm_taker)
|
|
535
|
+
await env_maker.change_balances({"dl": {"init": True}})
|
|
536
|
+
await env_taker.change_balances({"dl": {"init": True}})
|
|
537
|
+
|
|
538
|
+
MAKER_ROWS = [bytes32([i] * 32) for i in range(10)]
|
|
321
539
|
TAKER_ROWS = [bytes32([i] * 32) for i in range(10, 20)]
|
|
322
540
|
maker_root, _ = build_merkle_tree(MAKER_ROWS)
|
|
323
541
|
taker_root, _ = build_merkle_tree(TAKER_ROWS)
|
|
324
542
|
|
|
325
543
|
fee = uint64(1_999_999_999_999)
|
|
326
544
|
|
|
327
|
-
async with dl_wallet_maker.wallet_state_manager.new_action_scope(
|
|
545
|
+
async with dl_wallet_maker.wallet_state_manager.new_action_scope(
|
|
546
|
+
wallet_environments.tx_config, push=True
|
|
547
|
+
) as action_scope:
|
|
328
548
|
launcher_id_maker_1 = await dl_wallet_maker.generate_new_reporter(maker_root, action_scope, fee=fee)
|
|
329
549
|
assert await dl_wallet_maker.get_latest_singleton(launcher_id_maker_1) is not None
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
async with dl_wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
550
|
+
|
|
551
|
+
async with dl_wallet_maker.wallet_state_manager.new_action_scope(
|
|
552
|
+
wallet_environments.tx_config, push=True
|
|
553
|
+
) as action_scope:
|
|
335
554
|
launcher_id_maker_2 = await dl_wallet_maker.generate_new_reporter(maker_root, action_scope, fee=fee)
|
|
336
555
|
assert await dl_wallet_maker.get_latest_singleton(launcher_id_maker_2) is not None
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
556
|
+
|
|
557
|
+
await wallet_environments.process_pending_states(
|
|
558
|
+
[
|
|
559
|
+
WalletStateTransition(
|
|
560
|
+
pre_block_balance_updates={
|
|
561
|
+
"xch": {
|
|
562
|
+
"set_remainder": True,
|
|
563
|
+
},
|
|
564
|
+
"dl": {
|
|
565
|
+
"set_remainder": True,
|
|
566
|
+
},
|
|
567
|
+
},
|
|
568
|
+
post_block_balance_updates={
|
|
569
|
+
"xch": {
|
|
570
|
+
"set_remainder": True,
|
|
571
|
+
},
|
|
572
|
+
"dl": {
|
|
573
|
+
"set_remainder": True,
|
|
574
|
+
},
|
|
575
|
+
},
|
|
576
|
+
),
|
|
577
|
+
WalletStateTransition(),
|
|
578
|
+
]
|
|
579
|
+
)
|
|
580
|
+
|
|
581
|
+
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_maker_1, maker_root)
|
|
340
582
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_maker_2, maker_root)
|
|
341
583
|
|
|
342
|
-
async with dl_wallet_taker.wallet_state_manager.new_action_scope(
|
|
584
|
+
async with dl_wallet_taker.wallet_state_manager.new_action_scope(
|
|
585
|
+
wallet_environments.tx_config, push=True
|
|
586
|
+
) as action_scope:
|
|
343
587
|
launcher_id_taker_1 = await dl_wallet_taker.generate_new_reporter(taker_root, action_scope, fee=fee)
|
|
344
588
|
assert await dl_wallet_taker.get_latest_singleton(launcher_id_taker_1) is not None
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
async with dl_wallet_taker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
589
|
+
|
|
590
|
+
async with dl_wallet_taker.wallet_state_manager.new_action_scope(
|
|
591
|
+
wallet_environments.tx_config, push=True
|
|
592
|
+
) as action_scope:
|
|
350
593
|
launcher_id_taker_2 = await dl_wallet_taker.generate_new_reporter(taker_root, action_scope, fee=fee)
|
|
351
594
|
assert await dl_wallet_taker.get_latest_singleton(launcher_id_taker_2) is not None
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
595
|
+
|
|
596
|
+
await wallet_environments.process_pending_states(
|
|
597
|
+
[
|
|
598
|
+
WalletStateTransition(),
|
|
599
|
+
WalletStateTransition(
|
|
600
|
+
pre_block_balance_updates={
|
|
601
|
+
"xch": {
|
|
602
|
+
"set_remainder": True,
|
|
603
|
+
},
|
|
604
|
+
"dl": {
|
|
605
|
+
"set_remainder": True,
|
|
606
|
+
},
|
|
607
|
+
},
|
|
608
|
+
post_block_balance_updates={
|
|
609
|
+
"xch": {
|
|
610
|
+
"set_remainder": True,
|
|
611
|
+
},
|
|
612
|
+
"dl": {
|
|
613
|
+
"set_remainder": True,
|
|
614
|
+
},
|
|
615
|
+
},
|
|
616
|
+
),
|
|
617
|
+
]
|
|
618
|
+
)
|
|
619
|
+
|
|
620
|
+
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_taker, launcher_id_taker_1, taker_root)
|
|
355
621
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_taker, launcher_id_taker_2, taker_root)
|
|
356
622
|
|
|
357
|
-
peer =
|
|
623
|
+
peer = env_taker.node.get_full_node_peer()
|
|
358
624
|
await dl_wallet_maker.track_new_launcher_id(launcher_id_taker_1, peer)
|
|
359
625
|
await dl_wallet_maker.track_new_launcher_id(launcher_id_taker_2, peer)
|
|
360
626
|
await dl_wallet_taker.track_new_launcher_id(launcher_id_maker_1, peer)
|
|
361
627
|
await dl_wallet_taker.track_new_launcher_id(launcher_id_maker_2, peer)
|
|
628
|
+
await env_maker.change_balances({"dl": {"unspent_coin_count": 2}})
|
|
629
|
+
await env_taker.change_balances({"dl": {"unspent_coin_count": 2}})
|
|
362
630
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_taker_1, taker_root)
|
|
363
631
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_taker_2, taker_root)
|
|
364
632
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_taker, launcher_id_maker_1, maker_root)
|
|
@@ -378,7 +646,9 @@ async def test_multiple_dl_offers(wallets_prefarm: Any, trusted: bool) -> None:
|
|
|
378
646
|
|
|
379
647
|
fee = uint64(2_000_000_000_000)
|
|
380
648
|
|
|
381
|
-
async with trade_manager_maker.wallet_state_manager.new_action_scope(
|
|
649
|
+
async with trade_manager_maker.wallet_state_manager.new_action_scope(
|
|
650
|
+
wallet_environments.tx_config, push=False
|
|
651
|
+
) as action_scope:
|
|
382
652
|
success, offer_maker, error = await trade_manager_maker.create_offer_for_ids(
|
|
383
653
|
{launcher_id_maker_1: -1, launcher_id_taker_1: 1, launcher_id_maker_2: -1, launcher_id_taker_2: 1},
|
|
384
654
|
action_scope,
|
|
@@ -414,11 +684,9 @@ async def test_multiple_dl_offers(wallets_prefarm: Any, trusted: bool) -> None:
|
|
|
414
684
|
assert success is True
|
|
415
685
|
assert offer_maker is not None
|
|
416
686
|
|
|
417
|
-
[_maker_offer], signing_response = await
|
|
418
|
-
[Offer.from_bytes(offer_maker.offer)]
|
|
419
|
-
)
|
|
687
|
+
[_maker_offer], signing_response = await wsm_maker.sign_offers([Offer.from_bytes(offer_maker.offer)])
|
|
420
688
|
async with trade_manager_taker.wallet_state_manager.new_action_scope(
|
|
421
|
-
|
|
689
|
+
wallet_environments.tx_config, push=True, additional_signing_responses=signing_response
|
|
422
690
|
) as action_scope:
|
|
423
691
|
offer_taker = await trade_manager_taker.respond_to_offer(
|
|
424
692
|
Offer.from_bytes(offer_maker.offer),
|
|
@@ -466,21 +734,56 @@ async def test_multiple_dl_offers(wallets_prefarm: Any, trusted: bool) -> None:
|
|
|
466
734
|
)
|
|
467
735
|
assert offer_taker is not None
|
|
468
736
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
737
|
+
await wallet_environments.process_pending_states(
|
|
738
|
+
[
|
|
739
|
+
WalletStateTransition(
|
|
740
|
+
pre_block_balance_updates={
|
|
741
|
+
"xch": {
|
|
742
|
+
"spendable_balance": -fee,
|
|
743
|
+
"max_send_amount": -fee,
|
|
744
|
+
"pending_coin_removal_count": 2,
|
|
745
|
+
},
|
|
746
|
+
"dl": {
|
|
747
|
+
"pending_coin_removal_count": 2,
|
|
748
|
+
},
|
|
749
|
+
},
|
|
750
|
+
post_block_balance_updates={
|
|
751
|
+
"xch": {
|
|
752
|
+
"unconfirmed_wallet_balance": -fee,
|
|
753
|
+
"confirmed_wallet_balance": -fee,
|
|
754
|
+
"pending_coin_removal_count": -2,
|
|
755
|
+
"unspent_coin_count": -2,
|
|
756
|
+
},
|
|
757
|
+
"dl": {
|
|
758
|
+
"pending_coin_removal_count": -2,
|
|
759
|
+
},
|
|
760
|
+
},
|
|
761
|
+
),
|
|
762
|
+
WalletStateTransition(
|
|
763
|
+
pre_block_balance_updates={
|
|
764
|
+
"xch": {
|
|
765
|
+
"unconfirmed_wallet_balance": -fee,
|
|
766
|
+
"spendable_balance": -fee,
|
|
767
|
+
"max_send_amount": -fee,
|
|
768
|
+
"pending_coin_removal_count": 2,
|
|
769
|
+
},
|
|
770
|
+
"dl": {
|
|
771
|
+
"pending_coin_removal_count": 4,
|
|
772
|
+
},
|
|
773
|
+
},
|
|
774
|
+
post_block_balance_updates={
|
|
775
|
+
"xch": {
|
|
776
|
+
"confirmed_wallet_balance": -fee,
|
|
777
|
+
"pending_coin_removal_count": -2,
|
|
778
|
+
"unspent_coin_count": -2,
|
|
779
|
+
},
|
|
780
|
+
"dl": {
|
|
781
|
+
"pending_coin_removal_count": -4,
|
|
782
|
+
},
|
|
783
|
+
},
|
|
784
|
+
),
|
|
785
|
+
]
|
|
786
|
+
)
|
|
484
787
|
|
|
485
788
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_taker_1, taker_root)
|
|
486
789
|
await time_out_assert(15, is_singleton_confirmed_and_root, True, dl_wallet_maker, launcher_id_taker_2, taker_root)
|