chia-blockchain 2.5.4rc1__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 +53 -47
- 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.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/METADATA +7 -7
- {chia_blockchain-2.5.4rc1.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.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/entry_points.txt +0 -0
|
@@ -10,7 +10,6 @@ from chia_rs.sized_ints import uint64
|
|
|
10
10
|
from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
|
|
11
11
|
from chia.types.blockchain_format.coin import Coin
|
|
12
12
|
from chia.types.blockchain_format.program import Program
|
|
13
|
-
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
14
13
|
from chia.types.coin_spend import make_spend
|
|
15
14
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
16
15
|
from chia.wallet.cat_wallet.cat_utils import (
|
|
@@ -265,11 +264,9 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
|
|
|
265
264
|
valid_spend = tail_offer.to_valid_spend(random_hash)
|
|
266
265
|
real_blue_spend = next(spend for spend in valid_spend.coin_spends if b"hey there" in bytes(spend))
|
|
267
266
|
real_blue_spend_replaced = real_blue_spend.replace(
|
|
268
|
-
solution=
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
)
|
|
272
|
-
),
|
|
267
|
+
solution=Program.from_serialized(real_blue_spend.solution)
|
|
268
|
+
.replace(ffrfrf=Program.to(-113), ffrfrr=Program.to([str_to_tail("blue"), []]))
|
|
269
|
+
.to_serialized(),
|
|
273
270
|
)
|
|
274
271
|
valid_spend = WalletSpendBundle(
|
|
275
272
|
[real_blue_spend_replaced, *[spend for spend in valid_spend.coin_spends if spend != real_blue_spend]],
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import dataclasses
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
|
-
from chia_rs import G2Element
|
|
7
|
+
from chia_rs import G2Element, SpendBundle
|
|
8
8
|
from chia_rs.sized_bytes import bytes32
|
|
9
9
|
from chia_rs.sized_ints import uint32, uint64
|
|
10
10
|
|
|
@@ -12,23 +12,23 @@ from chia._tests.conftest import SOFTFORK_HEIGHTS
|
|
|
12
12
|
from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
|
|
13
13
|
from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
|
|
14
14
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
15
|
+
from chia._tests.wallet.cat_wallet.test_cat_wallet import mint_cat
|
|
15
16
|
from chia._tests.wallet.vc_wallet.test_vc_wallet import mint_cr_cat
|
|
16
17
|
from chia.consensus.cost_calculator import NPCResult
|
|
17
18
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
18
19
|
from chia.full_node.bundle_tools import simple_solution_generator
|
|
19
|
-
from chia.
|
|
20
|
-
from chia.types.blockchain_format.program import INFINITE_COST, Program
|
|
21
|
-
from chia.types.spend_bundle import SpendBundle
|
|
20
|
+
from chia.types.blockchain_format.program import INFINITE_COST, Program, run
|
|
22
21
|
from chia.util.bech32m import encode_puzzle_hash
|
|
23
22
|
from chia.util.hash import std_hash
|
|
24
23
|
from chia.wallet.cat_wallet.cat_wallet import CATWallet
|
|
24
|
+
from chia.wallet.cat_wallet.r_cat_wallet import RCATWallet
|
|
25
25
|
from chia.wallet.conditions import CreateCoinAnnouncement, parse_conditions_non_consensus
|
|
26
26
|
from chia.wallet.did_wallet.did_wallet import DIDWallet
|
|
27
27
|
from chia.wallet.outer_puzzles import AssetType
|
|
28
28
|
from chia.wallet.puzzle_drivers import PuzzleInfo
|
|
29
29
|
from chia.wallet.trade_manager import TradeManager
|
|
30
30
|
from chia.wallet.trade_record import TradeRecord
|
|
31
|
-
from chia.wallet.trading.offer import Offer
|
|
31
|
+
from chia.wallet.trading.offer import Offer, OfferSummary
|
|
32
32
|
from chia.wallet.trading.trade_status import TradeStatus
|
|
33
33
|
from chia.wallet.transaction_record import TransactionRecord
|
|
34
34
|
from chia.wallet.util.transaction_type import TransactionType
|
|
@@ -36,10 +36,9 @@ from chia.wallet.vc_wallet.cr_cat_drivers import ProofsChecker
|
|
|
36
36
|
from chia.wallet.vc_wallet.cr_cat_wallet import CRCATWallet
|
|
37
37
|
from chia.wallet.vc_wallet.vc_store import VCProofs
|
|
38
38
|
from chia.wallet.wallet_node import WalletNode
|
|
39
|
+
from chia.wallet.wallet_request_types import VCAddProofs, VCGetList, VCGetProofsForRoot, VCMint, VCSpend
|
|
39
40
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
40
41
|
|
|
41
|
-
OfferSummary = dict[Union[int, bytes32], int]
|
|
42
|
-
|
|
43
42
|
|
|
44
43
|
async def get_trade_and_status(trade_manager: TradeManager, trade: TradeRecord) -> TradeStatus:
|
|
45
44
|
trade_rec = await trade_manager.get_trade_by_id(trade.trade_id)
|
|
@@ -99,10 +98,12 @@ async def get_trade_and_status(trade_manager: TradeManager, trade: TradeRecord)
|
|
|
99
98
|
],
|
|
100
99
|
indirect=["wallet_environments"],
|
|
101
100
|
)
|
|
101
|
+
@pytest.mark.parametrize("wallet_type", [CATWallet, RCATWallet])
|
|
102
102
|
@pytest.mark.limit_consensus_modes(reason="irrelevant")
|
|
103
103
|
async def test_cat_trades(
|
|
104
104
|
wallet_environments: WalletTestFramework,
|
|
105
105
|
credential_restricted: bool,
|
|
106
|
+
wallet_type: type[CATWallet],
|
|
106
107
|
active_softfork_height: uint32,
|
|
107
108
|
) -> None:
|
|
108
109
|
# Setup
|
|
@@ -191,6 +192,7 @@ async def test_cat_trades(
|
|
|
191
192
|
wallet_node_maker,
|
|
192
193
|
client_maker,
|
|
193
194
|
full_node,
|
|
195
|
+
wallet_environments.tx_config,
|
|
194
196
|
authorized_providers,
|
|
195
197
|
tail_maker,
|
|
196
198
|
proofs_checker_maker,
|
|
@@ -201,6 +203,7 @@ async def test_cat_trades(
|
|
|
201
203
|
wallet_node_taker,
|
|
202
204
|
client_taker,
|
|
203
205
|
full_node,
|
|
206
|
+
wallet_environments.tx_config,
|
|
204
207
|
authorized_providers,
|
|
205
208
|
tail_taker,
|
|
206
209
|
proofs_checker_taker,
|
|
@@ -237,26 +240,36 @@ async def test_cat_trades(
|
|
|
237
240
|
)
|
|
238
241
|
|
|
239
242
|
# Mint some VCs that can spend the CR-CATs
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
243
|
+
async with env_maker.wallet_state_manager.new_action_scope(
|
|
244
|
+
wallet_environments.tx_config, push=True
|
|
245
|
+
) as action_scope:
|
|
246
|
+
vc_record_maker = (
|
|
247
|
+
await client_maker.vc_mint(
|
|
248
|
+
VCMint(
|
|
249
|
+
did_id=encode_puzzle_hash(did_id_maker, "did"),
|
|
250
|
+
target_address=encode_puzzle_hash(
|
|
251
|
+
await action_scope.get_puzzle_hash(env_maker.wallet_state_manager), "txch"
|
|
252
|
+
),
|
|
253
|
+
push=True,
|
|
254
|
+
),
|
|
255
|
+
wallet_environments.tx_config,
|
|
256
|
+
)
|
|
257
|
+
).vc_record
|
|
258
|
+
async with env_taker.wallet_state_manager.new_action_scope(
|
|
259
|
+
wallet_environments.tx_config, push=True
|
|
260
|
+
) as action_scope:
|
|
261
|
+
vc_record_taker = (
|
|
262
|
+
await client_taker.vc_mint(
|
|
263
|
+
VCMint(
|
|
264
|
+
did_id=encode_puzzle_hash(did_id_taker, "did"),
|
|
265
|
+
target_address=encode_puzzle_hash(
|
|
266
|
+
await action_scope.get_puzzle_hash(env_taker.wallet_state_manager), "txch"
|
|
267
|
+
),
|
|
268
|
+
push=True,
|
|
269
|
+
),
|
|
270
|
+
wallet_environments.tx_config,
|
|
271
|
+
)
|
|
272
|
+
).vc_record
|
|
260
273
|
await wallet_environments.process_pending_states(
|
|
261
274
|
[
|
|
262
275
|
# Balance checking for this scenario is covered in tests/wallet/vc_wallet/test_vc_lifecycle
|
|
@@ -343,52 +356,11 @@ async def test_cat_trades(
|
|
|
343
356
|
}
|
|
344
357
|
|
|
345
358
|
# Mint some standard CATs
|
|
346
|
-
|
|
347
|
-
wallet_environments
|
|
348
|
-
)
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
wallet_maker,
|
|
352
|
-
{"identifier": "genesis_by_id"},
|
|
353
|
-
uint64(100),
|
|
354
|
-
action_scope,
|
|
355
|
-
)
|
|
356
|
-
|
|
357
|
-
async with wallet_taker.wallet_state_manager.new_action_scope(
|
|
358
|
-
wallet_environments.tx_config, push=True
|
|
359
|
-
) as action_scope:
|
|
360
|
-
new_cat_wallet_taker = await CATWallet.create_new_cat_wallet(
|
|
361
|
-
wallet_node_taker.wallet_state_manager,
|
|
362
|
-
wallet_taker,
|
|
363
|
-
{"identifier": "genesis_by_id"},
|
|
364
|
-
uint64(100),
|
|
365
|
-
action_scope,
|
|
366
|
-
)
|
|
367
|
-
|
|
368
|
-
await wallet_environments.process_pending_states(
|
|
369
|
-
[
|
|
370
|
-
# Balance checking for this scenario is covered in test_cat_wallet
|
|
371
|
-
WalletStateTransition(
|
|
372
|
-
pre_block_balance_updates={
|
|
373
|
-
"xch": {"set_remainder": True},
|
|
374
|
-
"cat": {"init": True, "set_remainder": True},
|
|
375
|
-
},
|
|
376
|
-
post_block_balance_updates={
|
|
377
|
-
"xch": {"set_remainder": True},
|
|
378
|
-
"cat": {"set_remainder": True},
|
|
379
|
-
},
|
|
380
|
-
),
|
|
381
|
-
WalletStateTransition(
|
|
382
|
-
pre_block_balance_updates={
|
|
383
|
-
"xch": {"set_remainder": True},
|
|
384
|
-
"new cat": {"init": True, "set_remainder": True},
|
|
385
|
-
},
|
|
386
|
-
post_block_balance_updates={
|
|
387
|
-
"xch": {"set_remainder": True},
|
|
388
|
-
"new cat": {"set_remainder": True},
|
|
389
|
-
},
|
|
390
|
-
),
|
|
391
|
-
]
|
|
359
|
+
cat_wallet_maker = await mint_cat(
|
|
360
|
+
wallet_environments, env_maker, "xch", "cat", uint64(100), wallet_type, "cat maker"
|
|
361
|
+
)
|
|
362
|
+
new_cat_wallet_taker = await mint_cat(
|
|
363
|
+
wallet_environments, env_taker, "xch", "new cat", uint64(100), wallet_type, "cat taker"
|
|
392
364
|
)
|
|
393
365
|
|
|
394
366
|
if credential_restricted:
|
|
@@ -419,8 +391,12 @@ async def test_cat_trades(
|
|
|
419
391
|
proofs_checker_taker,
|
|
420
392
|
)
|
|
421
393
|
else:
|
|
422
|
-
|
|
423
|
-
|
|
394
|
+
if wallet_type is RCATWallet:
|
|
395
|
+
extra_args: Any = (bytes32.zeros,)
|
|
396
|
+
else:
|
|
397
|
+
extra_args = tuple()
|
|
398
|
+
new_cat_wallet_maker = await wallet_type.get_or_create_wallet_for_cat(
|
|
399
|
+
wallet_node_maker.wallet_state_manager, wallet_maker, new_cat_wallet_taker.get_asset_id(), *extra_args
|
|
424
400
|
)
|
|
425
401
|
|
|
426
402
|
await env_maker.change_balances(
|
|
@@ -1906,7 +1882,7 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework) -> N
|
|
|
1906
1882
|
[
|
|
1907
1883
|
c.to_program()
|
|
1908
1884
|
for c in parse_conditions_non_consensus(
|
|
1909
|
-
spend.puzzle_reveal.
|
|
1885
|
+
run(spend.puzzle_reveal, Program.from_serialized(spend.solution)).as_iter(), abstractions=False
|
|
1910
1886
|
)
|
|
1911
1887
|
]
|
|
1912
1888
|
)
|
|
@@ -8,6 +8,7 @@ from chia.simulator.full_node_simulator import FullNodeSimulator
|
|
|
8
8
|
from chia.types.peer_info import PeerInfo
|
|
9
9
|
from chia.wallet.puzzles.clawback.puzzle_decorator import ClawbackPuzzleDecorator
|
|
10
10
|
from chia.wallet.util.puzzle_decorator import PuzzleDecoratorManager
|
|
11
|
+
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
11
12
|
from chia.wallet.wallet_node import WalletNode
|
|
12
13
|
|
|
13
14
|
|
|
@@ -74,5 +75,6 @@ async def test_decorator(
|
|
|
74
75
|
assert isinstance(wallet_node.wallet_state_manager.decorator_manager.decorator_list[0], ClawbackPuzzleDecorator)
|
|
75
76
|
clawback_decorator: ClawbackPuzzleDecorator = wallet_node.wallet_state_manager.decorator_manager.decorator_list[0]
|
|
76
77
|
assert clawback_decorator.time_lock == 3600
|
|
77
|
-
|
|
78
|
+
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
79
|
+
puzzle = await action_scope.get_puzzle(wallet.wallet_state_manager)
|
|
78
80
|
assert puzzle == wallet_node.wallet_state_manager.decorator_manager.decorate(puzzle)
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import Optional
|
|
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 uint64
|
|
9
9
|
|
|
@@ -12,12 +12,12 @@ from chia._tests.clvm.test_puzzles import public_key_for_index, secret_exponent_
|
|
|
12
12
|
from chia._tests.util.key_tool import KeyTool
|
|
13
13
|
from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
|
|
14
14
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
15
|
+
from chia.consensus.condition_tools import conditions_dict_for_solution, pkm_pairs_for_conditions_dict
|
|
15
16
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
16
17
|
from chia.types.blockchain_format.program import INFINITE_COST, Program
|
|
17
|
-
from chia.types.coin_spend import
|
|
18
|
+
from chia.types.coin_spend import make_spend
|
|
18
19
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
19
20
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
20
|
-
from chia.util.condition_tools import conditions_dict_for_solution, pkm_pairs_for_conditions_dict
|
|
21
21
|
from chia.util.errors import Err
|
|
22
22
|
from chia.util.streamable import VersionedBlob
|
|
23
23
|
from chia.wallet.puzzles.clawback.drivers import (
|
|
@@ -11,6 +11,7 @@ from chia.simulator.block_tools import BlockTools
|
|
|
11
11
|
from chia.simulator.full_node_simulator import FullNodeSimulator
|
|
12
12
|
from chia.types.peer_info import PeerInfo
|
|
13
13
|
from chia.wallet.puzzles.clawback.metadata import ClawbackMetadata
|
|
14
|
+
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
14
15
|
from chia.wallet.wallet_node import WalletNode
|
|
15
16
|
|
|
16
17
|
|
|
@@ -30,8 +31,9 @@ async def test_is_recipient(
|
|
|
30
31
|
server_1: ChiaServer = full_node_api.full_node.server
|
|
31
32
|
wallet_node, server_2 = wallets[0]
|
|
32
33
|
wallet = wallet_node.wallet_state_manager.main_wallet
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
35
|
+
puzhash_1 = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
|
|
36
|
+
puzhash_2 = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
|
|
35
37
|
await server_2.start_client(PeerInfo(self_hostname, server_1.get_port()), None)
|
|
36
38
|
invalid_data = ClawbackMetadata(uint64(500), bytes32.random(seeded_random), bytes32.random(seeded_random))
|
|
37
39
|
both_data = ClawbackMetadata(uint64(500), puzhash_1, puzhash_2)
|
chia/_tests/wallet/conftest.py
CHANGED
|
@@ -5,30 +5,29 @@ import unittest
|
|
|
5
5
|
from collections.abc import AsyncIterator, Awaitable
|
|
6
6
|
from contextlib import AsyncExitStack
|
|
7
7
|
from dataclasses import replace
|
|
8
|
-
from typing import Any, Callable,
|
|
8
|
+
from typing import Any, Callable, Optional
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
11
|
from chia_rs import (
|
|
12
12
|
DONT_VALIDATE_SIGNATURE,
|
|
13
13
|
ConsensusConstants,
|
|
14
|
+
FullBlock,
|
|
14
15
|
SpendBundleConditions,
|
|
15
16
|
get_flags_for_height_and_constants,
|
|
16
17
|
run_block_generator,
|
|
17
18
|
run_block_generator2,
|
|
18
19
|
)
|
|
19
|
-
from chia_rs.sized_bytes import bytes32
|
|
20
20
|
from chia_rs.sized_ints import uint32, uint64, uint128
|
|
21
21
|
|
|
22
22
|
from chia._tests.environments.wallet import NewPuzzleHashError, WalletEnvironment, WalletState, WalletTestFramework
|
|
23
23
|
from chia._tests.util.setup_nodes import setup_simulators_and_wallets_service
|
|
24
24
|
from chia._tests.wallet.wallet_block_tools import WalletBlockTools
|
|
25
25
|
from chia.full_node.full_node import FullNode
|
|
26
|
-
from chia.
|
|
27
|
-
from chia.rpc.wallet_rpc_client import WalletRpcClient
|
|
28
|
-
from chia.types.full_block import FullBlock
|
|
26
|
+
from chia.full_node.full_node_rpc_client import FullNodeRpcClient
|
|
29
27
|
from chia.types.peer_info import PeerInfo
|
|
30
28
|
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
|
|
31
29
|
from chia.wallet.wallet_node import Balance
|
|
30
|
+
from chia.wallet.wallet_rpc_client import WalletRpcClient
|
|
32
31
|
from chia.wallet.wallet_state_manager import WalletStateManager
|
|
33
32
|
|
|
34
33
|
|
|
@@ -65,7 +64,7 @@ async def ignore_block_validation(
|
|
|
65
64
|
if "standard_block_tools" in request.keywords:
|
|
66
65
|
return None
|
|
67
66
|
|
|
68
|
-
async def validate_block_body(*args: Any, **kwargs: Any) ->
|
|
67
|
+
async def validate_block_body(*args: Any, **kwargs: Any) -> None:
|
|
69
68
|
return None
|
|
70
69
|
|
|
71
70
|
def create_wrapper(original_create: Any) -> Any:
|
|
@@ -121,10 +120,10 @@ async def ignore_block_validation(
|
|
|
121
120
|
"chia.consensus.multiprocess_validation.validate_finished_header_block", lambda *_, **__: (uint64(1), None)
|
|
122
121
|
)
|
|
123
122
|
monkeypatch.setattr(
|
|
124
|
-
"chia.consensus.multiprocess_validation.
|
|
123
|
+
"chia.consensus.multiprocess_validation.validate_pospace_and_get_required_iters", lambda *_, **__: uint64(0)
|
|
125
124
|
)
|
|
126
|
-
monkeypatch.setattr("
|
|
127
|
-
monkeypatch.setattr("
|
|
125
|
+
monkeypatch.setattr("chia_rs.BlockRecord.sp_total_iters", lambda *_: uint128(0))
|
|
126
|
+
monkeypatch.setattr("chia_rs.BlockRecord.ip_sub_slot_total_iters", lambda *_: uint128(0))
|
|
128
127
|
monkeypatch.setattr("chia.consensus.make_sub_epoch_summary.calculate_sp_iters", lambda *_: uint64(0))
|
|
129
128
|
monkeypatch.setattr("chia.consensus.make_sub_epoch_summary.calculate_ip_iters", lambda *_: uint64(0))
|
|
130
129
|
monkeypatch.setattr("chia.consensus.difficulty_adjustment._get_next_sub_slot_iters", lambda *_: uint64(1))
|
|
@@ -132,7 +131,7 @@ async def ignore_block_validation(
|
|
|
132
131
|
monkeypatch.setattr("chia.full_node.full_node_store.calculate_sp_interval_iters", lambda *_: uint64(1))
|
|
133
132
|
monkeypatch.setattr("chia.consensus.pot_iterations.calculate_sp_interval_iters", lambda *_: uint64(1))
|
|
134
133
|
monkeypatch.setattr("chia.consensus.pot_iterations.calculate_ip_iters", lambda *_: uint64(1))
|
|
135
|
-
monkeypatch.setattr("
|
|
134
|
+
monkeypatch.setattr("chia_rs.BlockRecord.sp_sub_slot_total_iters", lambda *_: uint64(1))
|
|
136
135
|
|
|
137
136
|
|
|
138
137
|
@pytest.fixture(scope="function", params=[True, False])
|
|
@@ -152,7 +151,7 @@ def new_action_scope_wrapper(func: Any) -> Any:
|
|
|
152
151
|
# Take note of the number of puzzle hashes if we're supposed to be reusing
|
|
153
152
|
ph_indexes: dict[uint32, int] = {}
|
|
154
153
|
for wallet_id in self.wallets:
|
|
155
|
-
ph_indexes[wallet_id] = await self.puzzle_store.
|
|
154
|
+
ph_indexes[wallet_id] = await self.puzzle_store.get_used_count(wallet_id)
|
|
156
155
|
|
|
157
156
|
async with func(self, *args, **kwargs) as action_scope:
|
|
158
157
|
yield action_scope
|
|
@@ -160,7 +159,7 @@ def new_action_scope_wrapper(func: Any) -> Any:
|
|
|
160
159
|
# Finally, check that the number of puzzle hashes did or did not increase by the specified amount
|
|
161
160
|
if action_scope.config.tx_config.reuse_puzhash:
|
|
162
161
|
for wallet_id, ph_index in zip(self.wallets, ph_indexes):
|
|
163
|
-
if not ph_indexes[wallet_id] == (await self.puzzle_store.
|
|
162
|
+
if not ph_indexes[wallet_id] == (await self.puzzle_store.get_used_count(wallet_id)):
|
|
164
163
|
raise NewPuzzleHashError(
|
|
165
164
|
f"wallet ID {wallet_id} generated new puzzle hashes while reuse_puzhash was False"
|
|
166
165
|
)
|
|
@@ -38,7 +38,7 @@ NIL_PH = Program.to(None).get_tree_hash()
|
|
|
38
38
|
async def test_graftroot(cost_logger: CostLogger) -> None:
|
|
39
39
|
async with sim_and_client() as (sim, sim_client):
|
|
40
40
|
# Create the coin we're testing
|
|
41
|
-
all_values: list[bytes32] = [bytes32([x] * 32) for x in range(
|
|
41
|
+
all_values: list[bytes32] = [bytes32([x] * 32) for x in range(100)]
|
|
42
42
|
root, proofs = build_merkle_tree(all_values)
|
|
43
43
|
p2_conditions = Program.to((1, [[51, ACS_PH, 0]])) # An coin to create to make sure this hits the blockchain
|
|
44
44
|
desired_key_values = ((bytes32.zeros, bytes32([1] * 32)), (bytes32([7] * 32), bytes32([8] * 32)))
|
|
@@ -125,9 +125,16 @@ async def test_graftroot(cost_logger: CostLogger) -> None:
|
|
|
125
125
|
await sim.rewind(same_height)
|
|
126
126
|
|
|
127
127
|
# try with a bad merkle root announcement
|
|
128
|
+
fake_puzzle_bad_announcement = ACS.curry(
|
|
129
|
+
fake_struct, ACS.curry(ACS_PH, (bytes32.zeros, None), None, None)
|
|
130
|
+
)
|
|
131
|
+
await sim.farm_block(fake_puzzle_bad_announcement.get_tree_hash())
|
|
132
|
+
fake_coin_bad_announcement: Coin = (
|
|
133
|
+
await sim_client.get_coin_records_by_puzzle_hash(fake_puzzle_bad_announcement.get_tree_hash())
|
|
134
|
+
)[0].coin
|
|
128
135
|
new_fake_spend = make_spend(
|
|
129
|
-
|
|
130
|
-
|
|
136
|
+
fake_coin_bad_announcement,
|
|
137
|
+
fake_puzzle_bad_announcement,
|
|
131
138
|
Program.to([[[62, "$"]]]),
|
|
132
139
|
)
|
|
133
140
|
new_final_bundle = WalletSpendBundle([new_fake_spend, graftroot_spend], G2Element())
|
|
@@ -136,4 +143,4 @@ async def test_graftroot(cost_logger: CostLogger) -> None:
|
|
|
136
143
|
else:
|
|
137
144
|
assert result == (MempoolInclusionStatus.FAILED, Err.GENERATOR_RUNTIME_ERROR)
|
|
138
145
|
with pytest.raises(ValueError, match="clvm raise"):
|
|
139
|
-
graftroot_puzzle.run(graftroot_spend.solution
|
|
146
|
+
graftroot_puzzle.run(Program.from_serialized(graftroot_spend.solution))
|