chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/_tests/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc2.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
|
@@ -5,25 +5,26 @@ import sys
|
|
|
5
5
|
import time
|
|
6
6
|
import types
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Any,
|
|
8
|
+
from typing import Any, Optional
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
11
|
from chia_rs import G1Element, PrivateKey
|
|
12
12
|
|
|
13
|
-
from chia._tests.util.misc import CoinGenerator,
|
|
13
|
+
from chia._tests.util.misc import CoinGenerator, patch_request_handler
|
|
14
14
|
from chia._tests.util.setup_nodes import OldSimulatorsAndWallets
|
|
15
15
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
16
16
|
from chia.protocols import wallet_protocol
|
|
17
17
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
18
18
|
from chia.protocols.wallet_protocol import CoinState
|
|
19
|
+
from chia.server.api_protocol import Self
|
|
19
20
|
from chia.server.outbound_message import Message, make_msg
|
|
21
|
+
from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
20
22
|
from chia.simulator.block_tools import test_constants
|
|
21
23
|
from chia.types.blockchain_format.coin import Coin
|
|
22
24
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
23
25
|
from chia.types.full_block import FullBlock
|
|
24
26
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
25
27
|
from chia.types.peer_info import PeerInfo
|
|
26
|
-
from chia.util.api_decorators import Self, api_request
|
|
27
28
|
from chia.util.config import load_config
|
|
28
29
|
from chia.util.errors import Err
|
|
29
30
|
from chia.util.ints import uint8, uint32, uint64, uint128
|
|
@@ -112,7 +113,7 @@ async def test_get_private_key_missing_key_use_default(
|
|
|
112
113
|
async def test_get_public_key(root_path_populated_with_config: Path, get_temp_keyring: Keychain) -> None:
|
|
113
114
|
root_path: Path = root_path_populated_with_config
|
|
114
115
|
keychain: Keychain = get_temp_keyring
|
|
115
|
-
config:
|
|
116
|
+
config: dict[str, Any] = load_config(root_path, "config.yaml", "wallet")
|
|
116
117
|
node: WalletNode = WalletNode(config, root_path, test_constants, keychain)
|
|
117
118
|
pk: G1Element = keychain.add_key(
|
|
118
119
|
"c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
@@ -132,7 +133,7 @@ async def test_get_public_key(root_path_populated_with_config: Path, get_temp_ke
|
|
|
132
133
|
async def test_get_public_key_default_key(root_path_populated_with_config: Path, get_temp_keyring: Keychain) -> None:
|
|
133
134
|
root_path: Path = root_path_populated_with_config
|
|
134
135
|
keychain: Keychain = get_temp_keyring
|
|
135
|
-
config:
|
|
136
|
+
config: dict[str, Any] = load_config(root_path, "config.yaml", "wallet")
|
|
136
137
|
node: WalletNode = WalletNode(config, root_path, test_constants, keychain)
|
|
137
138
|
pk: G1Element = keychain.add_key(
|
|
138
139
|
"c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
@@ -168,7 +169,7 @@ async def test_get_public_key_missing_key(
|
|
|
168
169
|
) -> None:
|
|
169
170
|
root_path: Path = root_path_populated_with_config
|
|
170
171
|
keychain: Keychain = get_temp_keyring # empty keyring
|
|
171
|
-
config:
|
|
172
|
+
config: dict[str, Any] = load_config(root_path, "config.yaml", "wallet")
|
|
172
173
|
node: WalletNode = WalletNode(config, root_path, test_constants, keychain)
|
|
173
174
|
|
|
174
175
|
# Keyring is empty, so requesting a key by fingerprint or None should return None
|
|
@@ -183,7 +184,7 @@ async def test_get_public_key_missing_key_use_default(
|
|
|
183
184
|
) -> None:
|
|
184
185
|
root_path: Path = root_path_populated_with_config
|
|
185
186
|
keychain: Keychain = get_temp_keyring
|
|
186
|
-
config:
|
|
187
|
+
config: dict[str, Any] = load_config(root_path, "config.yaml", "wallet")
|
|
187
188
|
node: WalletNode = WalletNode(config, root_path, test_constants, keychain)
|
|
188
189
|
pk: G1Element = keychain.add_key(
|
|
189
190
|
"c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
@@ -299,7 +300,7 @@ def test_get_last_used_fingerprint_file_doesnt_exist(root_path_populated_with_co
|
|
|
299
300
|
|
|
300
301
|
|
|
301
302
|
def test_get_last_used_fingerprint_file_cant_read_unix(root_path_populated_with_config: Path) -> None:
|
|
302
|
-
if sys.platform in
|
|
303
|
+
if sys.platform in {"win32", "cygwin"}:
|
|
303
304
|
pytest.skip("Setting UNIX file permissions doesn't apply to Windows")
|
|
304
305
|
|
|
305
306
|
root_path = root_path_populated_with_config
|
|
@@ -331,7 +332,7 @@ def test_get_last_used_fingerprint_file_cant_read_unix(root_path_populated_with_
|
|
|
331
332
|
def test_get_last_used_fingerprint_file_cant_read_win32(
|
|
332
333
|
root_path_populated_with_config: Path, monkeypatch: pytest.MonkeyPatch
|
|
333
334
|
) -> None:
|
|
334
|
-
if sys.platform not in
|
|
335
|
+
if sys.platform not in {"win32", "cygwin"}:
|
|
335
336
|
pytest.skip("Windows-specific test")
|
|
336
337
|
|
|
337
338
|
called_read_text = False
|
|
@@ -439,7 +440,7 @@ async def test_get_timestamp_for_height_from_peer(
|
|
|
439
440
|
await wallet_server.start_client(PeerInfo(self_hostname, full_node_api.server.get_port()), None)
|
|
440
441
|
wallet = wallet_node.wallet_state_manager.main_wallet
|
|
441
442
|
await full_node_api.farm_blocks_to_wallet(2, wallet)
|
|
442
|
-
full_node_peer =
|
|
443
|
+
full_node_peer = next(iter(wallet_server.all_connections.values()))
|
|
443
444
|
# There should be no timestamp available for height 10
|
|
444
445
|
assert await get_timestamp(10) is None
|
|
445
446
|
# The timestamp at peak height should match the one from the full node block_store.
|
|
@@ -493,9 +494,9 @@ async def test_unique_puzzle_hash_subscriptions(simulator_and_wallet: OldSimulat
|
|
|
493
494
|
@pytest.mark.anyio
|
|
494
495
|
@pytest.mark.standard_block_tools
|
|
495
496
|
async def test_get_balance(
|
|
496
|
-
simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_400_blocks:
|
|
497
|
+
simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_400_blocks: list[FullBlock]
|
|
497
498
|
) -> None:
|
|
498
|
-
[full_node_api], [(wallet_node, wallet_server)],
|
|
499
|
+
[full_node_api], [(wallet_node, wallet_server)], _bt = simulator_and_wallet
|
|
499
500
|
full_node_server = full_node_api.full_node.server
|
|
500
501
|
|
|
501
502
|
def wallet_synced() -> bool:
|
|
@@ -578,7 +579,7 @@ async def test_add_states_from_peer_reorg_failure(
|
|
|
578
579
|
coin_generator = CoinGenerator()
|
|
579
580
|
coin_states = [CoinState(coin_generator.get().coin, None, None)]
|
|
580
581
|
with caplog.at_level(logging.DEBUG):
|
|
581
|
-
full_node_peer =
|
|
582
|
+
full_node_peer = next(iter(wallet_server.all_connections.values()))
|
|
582
583
|
# Close the connection to trigger a state processing failure during reorged coin processing.
|
|
583
584
|
await full_node_peer.close()
|
|
584
585
|
assert not await wallet_node.add_states_from_peer(coin_states, full_node_peer)
|
|
@@ -599,7 +600,9 @@ async def test_add_states_from_peer_untrusted_shutdown(
|
|
|
599
600
|
# Generate enough coin states to fill up the max number validation/add tasks.
|
|
600
601
|
coin_states = [CoinState(coin_generator.get().coin, uint32(i), uint32(i)) for i in range(3000)]
|
|
601
602
|
with caplog.at_level(logging.INFO):
|
|
602
|
-
assert not await wallet_node.add_states_from_peer(
|
|
603
|
+
assert not await wallet_node.add_states_from_peer(
|
|
604
|
+
coin_states, next(iter(wallet_server.all_connections.values()))
|
|
605
|
+
)
|
|
603
606
|
assert "Terminating receipt and validation due to shut down request" in caplog.text
|
|
604
607
|
|
|
605
608
|
|
|
@@ -622,7 +625,6 @@ async def test_transaction_send_cache(
|
|
|
622
625
|
# Replacing the normal logic a full node has for processing transactions with a function that just logs what it gets
|
|
623
626
|
logged_spends = []
|
|
624
627
|
|
|
625
|
-
@api_request()
|
|
626
628
|
async def send_transaction(
|
|
627
629
|
self: Self, request: wallet_protocol.SendTransaction, *, test: bool = False
|
|
628
630
|
) -> Optional[Message]:
|
|
@@ -630,48 +632,46 @@ async def test_transaction_send_cache(
|
|
|
630
632
|
return None
|
|
631
633
|
|
|
632
634
|
assert full_node_api.full_node._server is not None
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
635
|
+
with patch_request_handler(api=full_node_api.full_node._server.get_connections()[0].api, handler=send_transaction):
|
|
636
|
+
# Generate the transaction
|
|
637
|
+
async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
|
|
638
|
+
await wallet.generate_signed_transaction(uint64(0), bytes32.zeros, action_scope)
|
|
639
|
+
[tx] = action_scope.side_effects.transactions
|
|
640
|
+
|
|
641
|
+
# Make sure it is sent to the peer
|
|
642
|
+
await wallet_node._resend_queue()
|
|
643
|
+
|
|
644
|
+
def logged_spends_len() -> int:
|
|
645
|
+
return len(logged_spends)
|
|
646
|
+
|
|
647
|
+
await time_out_assert(5, logged_spends_len, 1)
|
|
648
|
+
|
|
649
|
+
# Make sure queue processing again does not result in another spend
|
|
650
|
+
await wallet_node._resend_queue()
|
|
651
|
+
with pytest.raises(AssertionError):
|
|
652
|
+
await time_out_assert(5, logged_spends_len, 2)
|
|
653
|
+
|
|
654
|
+
# Tell the wallet that we recieved the spend (but failed to process it so it should send again)
|
|
655
|
+
msg = make_msg(
|
|
656
|
+
ProtocolMessageTypes.transaction_ack,
|
|
657
|
+
wallet_protocol.TransactionAck(
|
|
658
|
+
tx.name, uint8(MempoolInclusionStatus.FAILED), Err.GENERATOR_RUNTIME_ERROR.name
|
|
659
|
+
),
|
|
660
|
+
)
|
|
661
|
+
assert simulator_and_wallet[1][0][0]._server is not None
|
|
662
|
+
await simulator_and_wallet[1][0][0]._server.get_connections()[0].incoming_queue.put(msg)
|
|
646
663
|
|
|
647
|
-
|
|
648
|
-
|
|
664
|
+
# Make sure the cache is emptied
|
|
665
|
+
def check_wallet_cache_empty() -> bool:
|
|
666
|
+
return wallet_node._tx_messages_in_progress == {}
|
|
649
667
|
|
|
650
|
-
|
|
668
|
+
await time_out_assert(5, check_wallet_cache_empty, True)
|
|
651
669
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
with pytest.raises(AssertionError):
|
|
670
|
+
# Re-process the queue again and this time it should result in a resend
|
|
671
|
+
await wallet_node._resend_queue()
|
|
655
672
|
await time_out_assert(5, logged_spends_len, 2)
|
|
673
|
+
assert logged_spends == [tx.name, tx.name]
|
|
656
674
|
|
|
657
|
-
# Tell the wallet that we recieved the spend (but failed to process it so it should send again)
|
|
658
|
-
msg = make_msg(
|
|
659
|
-
ProtocolMessageTypes.transaction_ack,
|
|
660
|
-
wallet_protocol.TransactionAck(tx.name, uint8(MempoolInclusionStatus.FAILED), Err.GENERATOR_RUNTIME_ERROR.name),
|
|
661
|
-
)
|
|
662
|
-
assert simulator_and_wallet[1][0][0]._server is not None
|
|
663
|
-
await simulator_and_wallet[1][0][0]._server.get_connections()[0].incoming_queue.put(msg)
|
|
664
|
-
|
|
665
|
-
# Make sure the cache is emptied
|
|
666
|
-
def check_wallet_cache_empty() -> bool:
|
|
667
|
-
return wallet_node._tx_messages_in_progress == {}
|
|
668
|
-
|
|
669
|
-
await time_out_assert(5, check_wallet_cache_empty, True)
|
|
670
|
-
|
|
671
|
-
# Re-process the queue again and this time it should result in a resend
|
|
672
|
-
await wallet_node._resend_queue()
|
|
673
|
-
await time_out_assert(5, logged_spends_len, 2)
|
|
674
|
-
assert logged_spends == [tx.name, tx.name]
|
|
675
675
|
await time_out_assert(5, check_wallet_cache_empty, False)
|
|
676
676
|
|
|
677
677
|
# Disconnect from the peer to make sure their entry in the cache is also deleted
|
|
@@ -688,14 +688,13 @@ async def test_wallet_node_bad_coin_state_ignore(
|
|
|
688
688
|
|
|
689
689
|
await wallet_server.start_client(PeerInfo(self_hostname, full_node_api.server.get_port()), None)
|
|
690
690
|
|
|
691
|
-
|
|
692
|
-
async def register_interest_in_coin(
|
|
691
|
+
async def register_for_coin_updates(
|
|
693
692
|
self: Self, request: wallet_protocol.RegisterForCoinUpdates, *, test: bool = False
|
|
694
693
|
) -> Optional[Message]:
|
|
695
694
|
return make_msg(
|
|
696
|
-
ProtocolMessageTypes.
|
|
695
|
+
ProtocolMessageTypes.respond_to_coin_updates,
|
|
697
696
|
wallet_protocol.RespondToCoinUpdates(
|
|
698
|
-
[], uint32(0), [CoinState(Coin(bytes32
|
|
697
|
+
[], uint32(0), [CoinState(Coin(bytes32.zeros, bytes32.zeros, uint64(0)), uint32(0), uint32(0))]
|
|
699
698
|
),
|
|
700
699
|
)
|
|
701
700
|
|
|
@@ -704,27 +703,25 @@ async def test_wallet_node_bad_coin_state_ignore(
|
|
|
704
703
|
return True # pragma: no cover
|
|
705
704
|
|
|
706
705
|
assert full_node_api.full_node._server is not None
|
|
707
|
-
|
|
708
|
-
full_node_api.full_node._server.get_connections()[0].api,
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
types.MethodType(validate_received_state_from_peer, wallet_node),
|
|
716
|
-
)
|
|
706
|
+
with patch_request_handler(
|
|
707
|
+
api=full_node_api.full_node._server.get_connections()[0].api, handler=register_for_coin_updates
|
|
708
|
+
):
|
|
709
|
+
monkeypatch.setattr(
|
|
710
|
+
wallet_node,
|
|
711
|
+
"validate_received_state_from_peer",
|
|
712
|
+
types.MethodType(validate_received_state_from_peer, wallet_node),
|
|
713
|
+
)
|
|
717
714
|
|
|
718
|
-
|
|
719
|
-
|
|
715
|
+
with pytest.raises(PeerRequestException):
|
|
716
|
+
await wallet_node.get_coin_state([], wallet_node.get_full_node_peer())
|
|
720
717
|
|
|
721
718
|
|
|
722
719
|
@pytest.mark.anyio
|
|
723
720
|
@pytest.mark.standard_block_tools
|
|
724
721
|
async def test_start_with_multiple_key_types(
|
|
725
|
-
simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_400_blocks:
|
|
722
|
+
simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_400_blocks: list[FullBlock]
|
|
726
723
|
) -> None:
|
|
727
|
-
[
|
|
724
|
+
[_full_node_api], [(wallet_node, _wallet_server)], _bt = simulator_and_wallet
|
|
728
725
|
|
|
729
726
|
async def restart_with_fingerprint(fingerprint: Optional[int]) -> None:
|
|
730
727
|
wallet_node._close()
|
|
@@ -753,9 +750,9 @@ async def test_start_with_multiple_key_types(
|
|
|
753
750
|
@pytest.mark.anyio
|
|
754
751
|
@pytest.mark.standard_block_tools
|
|
755
752
|
async def test_start_with_multiple_keys(
|
|
756
|
-
simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_400_blocks:
|
|
753
|
+
simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_400_blocks: list[FullBlock]
|
|
757
754
|
) -> None:
|
|
758
|
-
[
|
|
755
|
+
[_full_node_api], [(wallet_node, _wallet_server)], _bt = simulator_and_wallet
|
|
759
756
|
|
|
760
757
|
async def restart_with_fingerprint(fingerprint: Optional[int]) -> None:
|
|
761
758
|
wallet_node._close()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
7
|
|
|
@@ -36,11 +36,11 @@ def evict_from_pool(node: FullNodeAPI, sb: WalletSpendBundle) -> None:
|
|
|
36
36
|
|
|
37
37
|
@pytest.mark.anyio
|
|
38
38
|
async def test_wallet_tx_retry(
|
|
39
|
-
setup_two_nodes_and_wallet_fast_retry:
|
|
39
|
+
setup_two_nodes_and_wallet_fast_retry: tuple[list[FullNodeSimulator], list[tuple[Any, Any]], BlockTools],
|
|
40
40
|
self_hostname: str,
|
|
41
41
|
) -> None:
|
|
42
42
|
wait_secs = 20
|
|
43
|
-
nodes, wallets,
|
|
43
|
+
nodes, wallets, _bt = setup_two_nodes_and_wallet_fast_retry
|
|
44
44
|
server_1 = nodes[0].full_node.server
|
|
45
45
|
full_node_1: FullNodeSimulator = nodes[0]
|
|
46
46
|
wallet_node_1: WalletNode = wallets[0][0]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from collections.abc import AsyncIterator
|
|
3
4
|
from contextlib import asynccontextmanager
|
|
4
|
-
from typing import AsyncIterator, List
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
7
|
from chia_rs import G2Element
|
|
@@ -9,6 +9,7 @@ from chia_rs import G2Element
|
|
|
9
9
|
from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
|
|
10
10
|
from chia._tests.util.setup_nodes import OldSimulatorsAndWallets
|
|
11
11
|
from chia.protocols.wallet_protocol import CoinState
|
|
12
|
+
from chia.rpc.wallet_request_types import PushTransactions
|
|
12
13
|
from chia.server.outbound_message import NodeType
|
|
13
14
|
from chia.types.blockchain_format.coin import Coin
|
|
14
15
|
from chia.types.blockchain_format.program import Program
|
|
@@ -125,20 +126,20 @@ async def test_commit_transactions_to_db(wallet_environments: WalletTestFramewor
|
|
|
125
126
|
coins = list(await wsm.main_wallet.select_coins(uint64(2_000_000_000_000), action_scope))
|
|
126
127
|
await wsm.main_wallet.generate_signed_transaction(
|
|
127
128
|
uint64(0),
|
|
128
|
-
bytes32
|
|
129
|
+
bytes32.zeros,
|
|
129
130
|
action_scope,
|
|
130
131
|
coins={coins[0]},
|
|
131
132
|
)
|
|
132
133
|
await wsm.main_wallet.generate_signed_transaction(
|
|
133
134
|
uint64(0),
|
|
134
|
-
bytes32
|
|
135
|
+
bytes32.zeros,
|
|
135
136
|
action_scope,
|
|
136
137
|
coins={coins[1]},
|
|
137
138
|
)
|
|
138
139
|
|
|
139
140
|
created_txs = action_scope.side_effects.transactions
|
|
140
141
|
|
|
141
|
-
def flatten_spend_bundles(txs:
|
|
142
|
+
def flatten_spend_bundles(txs: list[TransactionRecord]) -> list[WalletSpendBundle]:
|
|
142
143
|
return [tx.spend_bundle for tx in txs if tx.spend_bundle is not None]
|
|
143
144
|
|
|
144
145
|
assert (
|
|
@@ -224,7 +225,13 @@ async def test_confirming_txs_not_ours(wallet_environments: WalletTestFramework)
|
|
|
224
225
|
action_scope,
|
|
225
226
|
)
|
|
226
227
|
|
|
227
|
-
await env_2.rpc_client.push_transactions(
|
|
228
|
+
await env_2.rpc_client.push_transactions(
|
|
229
|
+
PushTransactions(
|
|
230
|
+
transactions=action_scope.side_effects.transactions,
|
|
231
|
+
sign=False,
|
|
232
|
+
),
|
|
233
|
+
wallet_environments.tx_config,
|
|
234
|
+
)
|
|
228
235
|
|
|
229
236
|
await wallet_environments.process_pending_states(
|
|
230
237
|
[
|
|
@@ -133,7 +133,7 @@ async def test_valid_times_migration() -> None:
|
|
|
133
133
|
)
|
|
134
134
|
|
|
135
135
|
fake_offer = Offer({}, WalletSpendBundle([], G2Element()), {})
|
|
136
|
-
fake_coin = Coin(bytes32
|
|
136
|
+
fake_coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
|
|
137
137
|
old_record = TradeRecordOld(
|
|
138
138
|
confirmed_at_index=uint32(0),
|
|
139
139
|
accepted_at_time=None,
|
|
@@ -143,7 +143,7 @@ async def test_valid_times_migration() -> None:
|
|
|
143
143
|
offer=bytes(fake_offer),
|
|
144
144
|
taken_offer=None,
|
|
145
145
|
coins_of_interest=[fake_coin],
|
|
146
|
-
trade_id=bytes32
|
|
146
|
+
trade_id=bytes32.zeros,
|
|
147
147
|
status=uint32(TradeStatus.PENDING_ACCEPT.value),
|
|
148
148
|
sent_to=[],
|
|
149
149
|
)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Collection
|
|
4
|
+
from typing import Optional
|
|
4
5
|
|
|
5
6
|
import pytest
|
|
6
7
|
from chia_rs import Coin, CoinState
|
|
@@ -22,7 +23,7 @@ coin_states = [
|
|
|
22
23
|
]
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
def assert_race_cache(cache: PeerRequestCache, expected_entries:
|
|
26
|
+
def assert_race_cache(cache: PeerRequestCache, expected_entries: dict[int, set[CoinState]]) -> None:
|
|
26
27
|
for i in range(100):
|
|
27
28
|
if i in expected_entries:
|
|
28
29
|
assert cache.get_race_cache(i) == expected_entries[i], f"failed for {i}"
|
|
@@ -39,7 +40,7 @@ def dummy_coin_state(*, created_height: Optional[int], spent_height: Optional[in
|
|
|
39
40
|
)
|
|
40
41
|
|
|
41
42
|
|
|
42
|
-
def heights(coin_states: Collection[CoinState]) ->
|
|
43
|
+
def heights(coin_states: Collection[CoinState]) -> list[tuple[Optional[int], Optional[int]]]:
|
|
43
44
|
return [(coin_state.created_height, coin_state.spent_height) for coin_state in coin_states]
|
|
44
45
|
|
|
45
46
|
|
|
@@ -67,7 +68,7 @@ def test_sort_coin_states() -> None:
|
|
|
67
68
|
|
|
68
69
|
def test_add_states_to_race_cache() -> None:
|
|
69
70
|
cache = PeerRequestCache()
|
|
70
|
-
expected_entries:
|
|
71
|
+
expected_entries: dict[int, set[CoinState]] = {}
|
|
71
72
|
assert_race_cache(cache, expected_entries)
|
|
72
73
|
|
|
73
74
|
# Repeated adding of the same coin state should not have any impact
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Optional
|
|
4
4
|
|
|
5
5
|
from chia.types.blockchain_format.coin import Coin
|
|
6
6
|
from chia.types.blockchain_format.program import Program
|
|
@@ -20,7 +20,7 @@ from chia.wallet.vc_wallet.cr_cat_drivers import construct_cr_layer
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
def test_cat_outer_puzzle() -> None:
|
|
23
|
-
authorized_providers:
|
|
23
|
+
authorized_providers: list[bytes32] = [bytes32.zeros, bytes32.zeros]
|
|
24
24
|
proofs_checker: Program = Program.to(None)
|
|
25
25
|
ACS: Program = Program.to(1)
|
|
26
26
|
cr_puzzle: Program = construct_cr_layer(authorized_providers, proofs_checker, ACS)
|
|
@@ -42,7 +42,7 @@ def test_cat_outer_puzzle() -> None:
|
|
|
42
42
|
assert create_asset_id(cr_driver) is None
|
|
43
43
|
|
|
44
44
|
# Set up for solve
|
|
45
|
-
coin: Coin = Coin(bytes32
|
|
45
|
+
coin: Coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
|
|
46
46
|
coin_as_hex: str = (
|
|
47
47
|
"0x" + coin.parent_coin_info.hex() + coin.puzzle_hash.hex() + uint64(coin.amount).stream_to_bytes().hex()
|
|
48
48
|
)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import itertools
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
7
|
from chia_rs import G2Element
|
|
8
8
|
|
|
9
|
-
from chia.
|
|
9
|
+
from chia._tests.util.spend_sim import CostLogger, sim_and_client
|
|
10
10
|
from chia.types.blockchain_format.coin import Coin
|
|
11
11
|
from chia.types.blockchain_format.program import Program
|
|
12
12
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
@@ -47,7 +47,7 @@ ACS_PH: bytes32 = ACS.get_tree_hash()
|
|
|
47
47
|
ACS_2_PH: bytes32 = ACS_2.get_tree_hash()
|
|
48
48
|
MOCK_SINGLETON_MOD: Program = Program.to([2, 5, 11])
|
|
49
49
|
MOCK_SINGLETON_MOD_HASH: bytes32 = MOCK_SINGLETON_MOD.get_tree_hash()
|
|
50
|
-
MOCK_LAUNCHER_ID: bytes32 = bytes32
|
|
50
|
+
MOCK_LAUNCHER_ID: bytes32 = bytes32.zeros
|
|
51
51
|
MOCK_LAUNCHER_HASH: bytes32 = bytes32([1] * 32)
|
|
52
52
|
MOCK_SINGLETON: Program = MOCK_SINGLETON_MOD.curry(
|
|
53
53
|
(MOCK_SINGLETON_MOD_HASH, (MOCK_LAUNCHER_ID, MOCK_LAUNCHER_HASH)),
|
|
@@ -105,7 +105,7 @@ async def test_covenant_layer(cost_logger: CostLogger) -> None:
|
|
|
105
105
|
].coin
|
|
106
106
|
|
|
107
107
|
# With the honest coin, attempt to spend the non-eve case too soon
|
|
108
|
-
result:
|
|
108
|
+
result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
|
|
109
109
|
WalletSpendBundle(
|
|
110
110
|
[
|
|
111
111
|
make_spend(
|
|
@@ -193,7 +193,7 @@ async def test_did_tp(cost_logger: CostLogger) -> None:
|
|
|
193
193
|
# (mod (METADATA TP solution) (a (q . (c (c (q . 1) (c 2 (c 5 ()))) 11)) (a TP (list METADATA () solution))))
|
|
194
194
|
# (a (q 4 (c (q . 1) (c 2 (c 5 ()))) 11) (a 5 (c 2 (c () (c 11 ())))))
|
|
195
195
|
MOCK_OWNERSHIP_LAYER: Program = Program.fromhex(
|
|
196
|
-
"ff02ffff01ff04ffff04ffff0101ffff04ff02ffff04ff05ff80808080ff0b80ffff02ff05ffff04ff02ffff04ff80ffff04ff0bff808080808080"
|
|
196
|
+
"ff02ffff01ff04ffff04ffff0101ffff04ff02ffff04ff05ff80808080ff0b80ffff02ff05ffff04ff02ffff04ff80ffff04ff0bff808080808080"
|
|
197
197
|
)
|
|
198
198
|
# Create it with mock singleton info
|
|
199
199
|
transfer_program: Program = create_did_tp(MOCK_SINGLETON_MOD_HASH, MOCK_LAUNCHER_HASH)
|
|
@@ -210,10 +210,10 @@ async def test_did_tp(cost_logger: CostLogger) -> None:
|
|
|
210
210
|
my_coin_id: bytes32 = eml_coin.name()
|
|
211
211
|
new_metadata: Program = Program.to("SUCCESS")
|
|
212
212
|
new_tp_hash = Program.to("NEW TP").get_tree_hash()
|
|
213
|
-
bad_data: bytes32 = bytes32
|
|
213
|
+
bad_data: bytes32 = bytes32.zeros
|
|
214
214
|
|
|
215
215
|
# Try to update metadata and tp without any announcement
|
|
216
|
-
result:
|
|
216
|
+
result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
|
|
217
217
|
WalletSpendBundle(
|
|
218
218
|
[
|
|
219
219
|
make_spend(
|
|
@@ -327,7 +327,7 @@ async def test_viral_backdoor(cost_logger: CostLogger) -> None:
|
|
|
327
327
|
)[0].coin
|
|
328
328
|
|
|
329
329
|
# Reveal the wrong puzzle
|
|
330
|
-
result:
|
|
330
|
+
result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
|
|
331
331
|
WalletSpendBundle(
|
|
332
332
|
[
|
|
333
333
|
make_spend(
|
|
@@ -354,7 +354,7 @@ async def test_viral_backdoor(cost_logger: CostLogger) -> None:
|
|
|
354
354
|
p2_either_puzzle,
|
|
355
355
|
solve_viral_backdoor(
|
|
356
356
|
hidden_puzzle,
|
|
357
|
-
Program.to(bytes32
|
|
357
|
+
Program.to(bytes32.zeros),
|
|
358
358
|
hidden=True,
|
|
359
359
|
),
|
|
360
360
|
)
|
|
@@ -365,7 +365,7 @@ async def test_viral_backdoor(cost_logger: CostLogger) -> None:
|
|
|
365
365
|
assert result == (MempoolInclusionStatus.FAILED, Err.ASSERT_ANNOUNCE_CONSUMED_FAILED)
|
|
366
366
|
|
|
367
367
|
# Spend the inner puzzle
|
|
368
|
-
brick_hash: bytes32 = bytes32
|
|
368
|
+
brick_hash: bytes32 = bytes32.zeros
|
|
369
369
|
wrapped_brick_hash: bytes32 = create_viral_backdoor(
|
|
370
370
|
hidden_puzzle_hash,
|
|
371
371
|
brick_hash,
|
|
@@ -399,7 +399,7 @@ async def test_viral_backdoor(cost_logger: CostLogger) -> None:
|
|
|
399
399
|
@pytest.mark.parametrize("num_proofs", range(1, 6))
|
|
400
400
|
async def test_proofs_checker(cost_logger: CostLogger, num_proofs: int) -> None:
|
|
401
401
|
async with sim_and_client() as (sim, client):
|
|
402
|
-
flags:
|
|
402
|
+
flags: list[str] = [str(i) for i in range(0, num_proofs)]
|
|
403
403
|
proofs_checker: ProofsChecker = ProofsChecker(flags)
|
|
404
404
|
|
|
405
405
|
# (mod (PROOFS_CHECKER proofs) (if (a PROOFS_CHECKER (list proofs)) () (x)))
|
|
@@ -415,7 +415,7 @@ async def test_proofs_checker(cost_logger: CostLogger, num_proofs: int) -> None:
|
|
|
415
415
|
|
|
416
416
|
block_height: uint32 = sim.block_height
|
|
417
417
|
for i, proof_list in enumerate(itertools.permutations(flags, num_proofs)):
|
|
418
|
-
result:
|
|
418
|
+
result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
|
|
419
419
|
cost_logger.add_cost(
|
|
420
420
|
f"Proofs Checker only - num_proofs: {num_proofs} - permutation: {i}",
|
|
421
421
|
WalletSpendBundle(
|
|
@@ -504,9 +504,9 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
|
|
|
504
504
|
[vc_fund_coin],
|
|
505
505
|
launcher_id,
|
|
506
506
|
ACS_PH,
|
|
507
|
-
[bytes32
|
|
507
|
+
[bytes32.zeros],
|
|
508
508
|
)
|
|
509
|
-
result:
|
|
509
|
+
result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
|
|
510
510
|
cost_logger.add_cost(
|
|
511
511
|
"Launch VC",
|
|
512
512
|
WalletSpendBundle(
|
|
@@ -612,7 +612,7 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
|
|
|
612
612
|
else:
|
|
613
613
|
proofs = ["test", "test2"]
|
|
614
614
|
proofs_checker: ProofsChecker = ProofsChecker(proofs)
|
|
615
|
-
AUTHORIZED_PROVIDERS:
|
|
615
|
+
AUTHORIZED_PROVIDERS: list[bytes32] = [launcher_id]
|
|
616
616
|
dpuz_1, launch_crcat_spend_1, cr_1 = CRCAT.launch(
|
|
617
617
|
cr_coin_1,
|
|
618
618
|
Payment(ACS_PH, uint64(cr_coin_1.amount), []),
|
|
@@ -716,7 +716,7 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
|
|
|
716
716
|
62,
|
|
717
717
|
(
|
|
718
718
|
cr_1.expected_announcement()
|
|
719
|
-
if error not in
|
|
719
|
+
if error not in {"use_malicious_cats", "attempt_honest_cat_piggyback"}
|
|
720
720
|
else malicious_cr_1.expected_announcement()
|
|
721
721
|
),
|
|
722
722
|
],
|
|
@@ -724,7 +724,7 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
|
|
|
724
724
|
62,
|
|
725
725
|
(
|
|
726
726
|
cr_2.expected_announcement()
|
|
727
|
-
if error not in
|
|
727
|
+
if error not in {"use_malicious_cats", "attempt_honest_cat_piggyback"}
|
|
728
728
|
else malicious_cr_2.expected_announcement()
|
|
729
729
|
),
|
|
730
730
|
],
|
|
@@ -755,7 +755,7 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
|
|
|
755
755
|
else:
|
|
756
756
|
vc = new_vc
|
|
757
757
|
await sim.farm_block()
|
|
758
|
-
elif error in
|
|
758
|
+
elif error in {"forget_vc", "use_malicious_cats", "attempt_honest_cat_piggyback"}:
|
|
759
759
|
assert result == (MempoolInclusionStatus.FAILED, Err.ASSERT_ANNOUNCE_CONSUMED_FAILED)
|
|
760
760
|
elif error == "make_banned_announcement":
|
|
761
761
|
assert result == (MempoolInclusionStatus.FAILED, Err.GENERATOR_RUNTIME_ERROR)
|