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
chia/_tests/conftest.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ruff: noqa: E402 # See imports after multiprocessing.set_start_method
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
import asyncio
|
|
5
|
-
import dataclasses
|
|
6
5
|
import datetime
|
|
7
6
|
import functools
|
|
8
7
|
import json
|
|
@@ -13,8 +12,9 @@ import os
|
|
|
13
12
|
import random
|
|
14
13
|
import sysconfig
|
|
15
14
|
import tempfile
|
|
15
|
+
from collections.abc import AsyncIterator, Iterator
|
|
16
16
|
from contextlib import AsyncExitStack
|
|
17
|
-
from typing import Any,
|
|
17
|
+
from typing import Any, Callable, Union
|
|
18
18
|
|
|
19
19
|
import aiohttp
|
|
20
20
|
import pytest
|
|
@@ -23,7 +23,6 @@ import pytest
|
|
|
23
23
|
from _pytest.fixtures import SubRequest
|
|
24
24
|
from pytest import MonkeyPatch
|
|
25
25
|
|
|
26
|
-
import chia._tests
|
|
27
26
|
from chia._tests import ether
|
|
28
27
|
from chia._tests.core.data_layer.util import ChiaRoot
|
|
29
28
|
from chia._tests.core.node_height import node_height_at_least
|
|
@@ -46,16 +45,13 @@ from chia._tests.util.setup_nodes import (
|
|
|
46
45
|
setup_simulators_and_wallets_service,
|
|
47
46
|
setup_two_nodes,
|
|
48
47
|
)
|
|
48
|
+
from chia._tests.util.spend_sim import CostLogger
|
|
49
49
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
50
|
-
from chia.clvm.spend_sim import CostLogger
|
|
51
50
|
from chia.consensus.constants import ConsensusConstants
|
|
52
|
-
from chia.full_node.full_node import FullNode
|
|
53
51
|
from chia.full_node.full_node_api import FullNodeAPI
|
|
54
52
|
from chia.rpc.farmer_rpc_client import FarmerRpcClient
|
|
55
53
|
from chia.rpc.harvester_rpc_client import HarvesterRpcClient
|
|
56
54
|
from chia.rpc.wallet_rpc_client import WalletRpcClient
|
|
57
|
-
from chia.seeder.crawler import Crawler
|
|
58
|
-
from chia.seeder.crawler_api import CrawlerAPI
|
|
59
55
|
from chia.seeder.dns_server import DNSServer
|
|
60
56
|
from chia.server.server import ChiaServer
|
|
61
57
|
from chia.server.start_service import Service
|
|
@@ -70,13 +66,10 @@ from chia.simulator.setup_services import (
|
|
|
70
66
|
)
|
|
71
67
|
from chia.simulator.start_simulator import SimulatorFullNodeService
|
|
72
68
|
from chia.simulator.wallet_tools import WalletTool
|
|
73
|
-
from chia.timelord.timelord import Timelord
|
|
74
|
-
from chia.timelord.timelord_api import TimelordAPI
|
|
75
69
|
|
|
76
70
|
# Set spawn after stdlib imports, but before other imports
|
|
77
71
|
from chia.types.aliases import (
|
|
78
72
|
CrawlerService,
|
|
79
|
-
DataLayerService,
|
|
80
73
|
FarmerService,
|
|
81
74
|
FullNodeService,
|
|
82
75
|
HarvesterService,
|
|
@@ -91,16 +84,21 @@ from chia.util.keychain import Keychain
|
|
|
91
84
|
from chia.util.task_timing import main as task_instrumentation_main
|
|
92
85
|
from chia.util.task_timing import start_task_instrumentation, stop_task_instrumentation
|
|
93
86
|
from chia.wallet.wallet_node import WalletNode
|
|
94
|
-
from chia.wallet.wallet_node_api import WalletNodeAPI
|
|
95
87
|
|
|
96
88
|
multiprocessing.set_start_method("spawn")
|
|
97
89
|
|
|
90
|
+
from dataclasses import replace
|
|
98
91
|
from pathlib import Path
|
|
99
92
|
|
|
93
|
+
from chia._tests.environments.wallet import WalletEnvironment, WalletState, WalletTestFramework
|
|
100
94
|
from chia._tests.util.setup_nodes import setup_farmer_multi_harvester
|
|
95
|
+
from chia.rpc.full_node_rpc_client import FullNodeRpcClient
|
|
101
96
|
from chia.simulator.block_tools import BlockTools, create_block_tools_async, test_constants
|
|
102
97
|
from chia.simulator.keyring import TempKeyring
|
|
98
|
+
from chia.util.ints import uint128
|
|
103
99
|
from chia.util.keyring_wrapper import KeyringWrapper
|
|
100
|
+
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
|
|
101
|
+
from chia.wallet.wallet_node import Balance
|
|
104
102
|
|
|
105
103
|
|
|
106
104
|
@pytest.fixture(name="ether_setup", autouse=True)
|
|
@@ -255,7 +253,7 @@ async def empty_blockchain(latest_db_version, blockchain_constants):
|
|
|
255
253
|
"""
|
|
256
254
|
from chia._tests.util.blockchain import create_blockchain
|
|
257
255
|
|
|
258
|
-
async with create_blockchain(blockchain_constants, latest_db_version) as (bc1,
|
|
256
|
+
async with create_blockchain(blockchain_constants, latest_db_version) as (bc1, _):
|
|
259
257
|
yield bc1
|
|
260
258
|
|
|
261
259
|
|
|
@@ -550,12 +548,12 @@ def pytest_configure(config):
|
|
|
550
548
|
globals()[time_out_assert_repeat_fixture.__name__] = time_out_assert_repeat_fixture
|
|
551
549
|
|
|
552
550
|
|
|
553
|
-
def pytest_collection_modifyitems(session, config: pytest.Config, items:
|
|
551
|
+
def pytest_collection_modifyitems(session, config: pytest.Config, items: list[pytest.Function]):
|
|
554
552
|
# https://github.com/pytest-dev/pytest/issues/3730#issuecomment-567142496
|
|
555
553
|
removed = []
|
|
556
554
|
kept = []
|
|
557
|
-
all_error_lines:
|
|
558
|
-
limit_consensus_modes_problems:
|
|
555
|
+
all_error_lines: list[str] = []
|
|
556
|
+
limit_consensus_modes_problems: list[str] = []
|
|
559
557
|
for item in items:
|
|
560
558
|
limit_consensus_modes_marker = item.get_closest_marker("limit_consensus_modes")
|
|
561
559
|
if limit_consensus_modes_marker is not None:
|
|
@@ -583,7 +581,7 @@ def pytest_collection_modifyitems(session, config: pytest.Config, items: List[py
|
|
|
583
581
|
all_error_lines.append("@pytest.mark.limit_consensus_modes used without consensus_mode:")
|
|
584
582
|
all_error_lines.extend(f" {line}" for line in limit_consensus_modes_problems)
|
|
585
583
|
|
|
586
|
-
benchmark_problems:
|
|
584
|
+
benchmark_problems: list[str] = []
|
|
587
585
|
for item in items:
|
|
588
586
|
existing_benchmark_mark = item.get_closest_marker("benchmark")
|
|
589
587
|
if existing_benchmark_mark is not None:
|
|
@@ -619,7 +617,7 @@ async def two_nodes(db_version: int, self_hostname, blockchain_constants: Consen
|
|
|
619
617
|
@pytest.fixture(scope="function")
|
|
620
618
|
async def setup_two_nodes_fixture(
|
|
621
619
|
db_version: int, blockchain_constants: ConsensusConstants
|
|
622
|
-
) -> AsyncIterator[
|
|
620
|
+
) -> AsyncIterator[tuple[list[FullNodeSimulator], list[tuple[WalletNode, ChiaServer]], BlockTools]]:
|
|
623
621
|
async with setup_simulators_and_wallets(2, 0, blockchain_constants, db_version=db_version) as new:
|
|
624
622
|
yield make_old_setup_simulators_and_wallets(new=new)
|
|
625
623
|
|
|
@@ -638,13 +636,12 @@ async def five_nodes(db_version: int, self_hostname, blockchain_constants):
|
|
|
638
636
|
|
|
639
637
|
@pytest.fixture(scope="function")
|
|
640
638
|
async def wallet_nodes(blockchain_constants, consensus_mode):
|
|
641
|
-
constants = blockchain_constants
|
|
642
639
|
async with setup_simulators_and_wallets(
|
|
643
640
|
2,
|
|
644
641
|
1,
|
|
645
642
|
blockchain_constants.replace(MEMPOOL_BLOCK_BUFFER=1, MAX_BLOCK_COST_CLVM=400000000),
|
|
646
643
|
) as new:
|
|
647
|
-
(nodes,
|
|
644
|
+
(nodes, _wallets, bt) = make_old_setup_simulators_and_wallets(new=new)
|
|
648
645
|
full_node_1 = nodes[0]
|
|
649
646
|
full_node_2 = nodes[1]
|
|
650
647
|
server_1 = full_node_1.full_node.server
|
|
@@ -681,7 +678,7 @@ async def wallet_node_100_pk(blockchain_constants: ConsensusConstants):
|
|
|
681
678
|
@pytest.fixture(scope="function")
|
|
682
679
|
async def simulator_and_wallet(
|
|
683
680
|
blockchain_constants: ConsensusConstants,
|
|
684
|
-
) -> AsyncIterator[
|
|
681
|
+
) -> AsyncIterator[tuple[list[FullNodeSimulator], list[tuple[WalletNode, ChiaServer]], BlockTools]]:
|
|
685
682
|
async with setup_simulators_and_wallets(1, 1, blockchain_constants) as new:
|
|
686
683
|
yield make_old_setup_simulators_and_wallets(new=new)
|
|
687
684
|
|
|
@@ -698,7 +695,7 @@ async def two_wallet_nodes(request, blockchain_constants: ConsensusConstants):
|
|
|
698
695
|
@pytest.fixture(scope="function")
|
|
699
696
|
async def two_wallet_nodes_services(
|
|
700
697
|
blockchain_constants: ConsensusConstants,
|
|
701
|
-
) -> AsyncIterator[
|
|
698
|
+
) -> AsyncIterator[tuple[list[SimulatorFullNodeService], list[WalletService], BlockTools]]:
|
|
702
699
|
async with setup_simulators_and_wallets_service(1, 2, blockchain_constants) as _:
|
|
703
700
|
yield _
|
|
704
701
|
|
|
@@ -764,7 +761,7 @@ async def wallet_nodes_perf(blockchain_constants: ConsensusConstants):
|
|
|
764
761
|
async with setup_simulators_and_wallets(
|
|
765
762
|
1, 1, blockchain_constants, config_overrides={"MEMPOOL_BLOCK_BUFFER": 1, "MAX_BLOCK_COST_CLVM": 11000000000}
|
|
766
763
|
) as new:
|
|
767
|
-
(nodes,
|
|
764
|
+
(nodes, _wallets, bt) = make_old_setup_simulators_and_wallets(new=new)
|
|
768
765
|
full_node_1 = nodes[0]
|
|
769
766
|
server_1 = full_node_1.full_node.server
|
|
770
767
|
wallet_a = bt.get_pool_wallet_tool()
|
|
@@ -781,7 +778,7 @@ async def three_nodes_two_wallets(blockchain_constants: ConsensusConstants):
|
|
|
781
778
|
@pytest.fixture(scope="function")
|
|
782
779
|
async def one_node(
|
|
783
780
|
blockchain_constants: ConsensusConstants,
|
|
784
|
-
) -> AsyncIterator[
|
|
781
|
+
) -> AsyncIterator[tuple[list[Service], list[FullNodeSimulator], BlockTools]]:
|
|
785
782
|
async with setup_simulators_and_wallets_service(1, 0, blockchain_constants) as _:
|
|
786
783
|
yield _
|
|
787
784
|
|
|
@@ -789,7 +786,7 @@ async def one_node(
|
|
|
789
786
|
@pytest.fixture(scope="function")
|
|
790
787
|
async def one_node_one_block(
|
|
791
788
|
blockchain_constants: ConsensusConstants,
|
|
792
|
-
) -> AsyncIterator[
|
|
789
|
+
) -> AsyncIterator[tuple[Union[FullNodeAPI, FullNodeSimulator], ChiaServer, BlockTools]]:
|
|
793
790
|
async with setup_simulators_and_wallets(1, 0, blockchain_constants) as new:
|
|
794
791
|
(nodes, _, bt) = make_old_setup_simulators_and_wallets(new=new)
|
|
795
792
|
full_node_1 = nodes[0]
|
|
@@ -849,7 +846,7 @@ async def farmer_one_harvester_simulator_wallet(
|
|
|
849
846
|
tmp_path: Path,
|
|
850
847
|
blockchain_constants: ConsensusConstants,
|
|
851
848
|
) -> AsyncIterator[
|
|
852
|
-
|
|
849
|
+
tuple[
|
|
853
850
|
HarvesterService,
|
|
854
851
|
FarmerService,
|
|
855
852
|
SimulatorFullNodeService,
|
|
@@ -866,7 +863,7 @@ async def farmer_one_harvester_simulator_wallet(
|
|
|
866
863
|
yield harvester_services[0], farmer_service, nodes[0], wallets[0], bt
|
|
867
864
|
|
|
868
865
|
|
|
869
|
-
FarmerOneHarvester =
|
|
866
|
+
FarmerOneHarvester = tuple[list[HarvesterService], FarmerService, BlockTools]
|
|
870
867
|
|
|
871
868
|
|
|
872
869
|
@pytest.fixture(scope="function")
|
|
@@ -878,7 +875,7 @@ async def farmer_one_harvester(tmp_path: Path, get_b_tools: BlockTools) -> Async
|
|
|
878
875
|
@pytest.fixture(scope="function")
|
|
879
876
|
async def farmer_one_harvester_not_started(
|
|
880
877
|
tmp_path: Path, get_b_tools: BlockTools
|
|
881
|
-
) -> AsyncIterator[
|
|
878
|
+
) -> AsyncIterator[tuple[list[Service], Service]]:
|
|
882
879
|
async with setup_farmer_multi_harvester(get_b_tools, 1, tmp_path, get_b_tools.constants, start_services=False) as _:
|
|
883
880
|
yield _
|
|
884
881
|
|
|
@@ -886,7 +883,7 @@ async def farmer_one_harvester_not_started(
|
|
|
886
883
|
@pytest.fixture(scope="function")
|
|
887
884
|
async def farmer_two_harvester_not_started(
|
|
888
885
|
tmp_path: Path, get_b_tools: BlockTools
|
|
889
|
-
) -> AsyncIterator[
|
|
886
|
+
) -> AsyncIterator[tuple[list[Service], Service]]:
|
|
890
887
|
async with setup_farmer_multi_harvester(get_b_tools, 2, tmp_path, get_b_tools.constants, start_services=False) as _:
|
|
891
888
|
yield _
|
|
892
889
|
|
|
@@ -894,7 +891,7 @@ async def farmer_two_harvester_not_started(
|
|
|
894
891
|
@pytest.fixture(scope="function")
|
|
895
892
|
async def farmer_three_harvester_not_started(
|
|
896
893
|
tmp_path: Path, get_b_tools: BlockTools
|
|
897
|
-
) -> AsyncIterator[
|
|
894
|
+
) -> AsyncIterator[tuple[list[Service], Service]]:
|
|
898
895
|
async with setup_farmer_multi_harvester(get_b_tools, 3, tmp_path, get_b_tools.constants, start_services=False) as _:
|
|
899
896
|
yield _
|
|
900
897
|
|
|
@@ -934,7 +931,7 @@ async def get_b_tools(get_temp_keyring):
|
|
|
934
931
|
@pytest.fixture(scope="function")
|
|
935
932
|
async def daemon_connection_and_temp_keychain(
|
|
936
933
|
get_b_tools: BlockTools,
|
|
937
|
-
) -> AsyncIterator[
|
|
934
|
+
) -> AsyncIterator[tuple[aiohttp.ClientWebSocketResponse, Keychain]]:
|
|
938
935
|
async with setup_daemon(btools=get_b_tools) as daemon:
|
|
939
936
|
keychain = daemon.keychain_server._default_keychain
|
|
940
937
|
async with aiohttp.ClientSession() as session:
|
|
@@ -1128,13 +1125,13 @@ def root_path_populated_with_config(tmp_chia_root) -> Path:
|
|
|
1128
1125
|
|
|
1129
1126
|
|
|
1130
1127
|
@pytest.fixture(scope="function")
|
|
1131
|
-
def config(root_path_populated_with_config: Path) ->
|
|
1128
|
+
def config(root_path_populated_with_config: Path) -> dict[str, Any]:
|
|
1132
1129
|
with lock_and_load_config(root_path_populated_with_config, "config.yaml") as config:
|
|
1133
1130
|
return config
|
|
1134
1131
|
|
|
1135
1132
|
|
|
1136
1133
|
@pytest.fixture(scope="function")
|
|
1137
|
-
def config_with_address_prefix(root_path_populated_with_config: Path, prefix: str) ->
|
|
1134
|
+
def config_with_address_prefix(root_path_populated_with_config: Path, prefix: str) -> dict[str, Any]:
|
|
1138
1135
|
with lock_and_load_config(root_path_populated_with_config, "config.yaml") as config:
|
|
1139
1136
|
if prefix is not None:
|
|
1140
1137
|
config["network_overrides"]["config"][config["selected_network"]]["address_prefix"] = prefix
|
|
@@ -1174,12 +1171,12 @@ async def simulation(bt, get_b_tools):
|
|
|
1174
1171
|
yield full_system, get_b_tools
|
|
1175
1172
|
|
|
1176
1173
|
|
|
1177
|
-
HarvesterFarmerEnvironment =
|
|
1174
|
+
HarvesterFarmerEnvironment = tuple[FarmerService, FarmerRpcClient, HarvesterService, HarvesterRpcClient, BlockTools]
|
|
1178
1175
|
|
|
1179
1176
|
|
|
1180
1177
|
@pytest.fixture(scope="function")
|
|
1181
1178
|
async def harvester_farmer_environment(
|
|
1182
|
-
farmer_one_harvester:
|
|
1179
|
+
farmer_one_harvester: tuple[list[HarvesterService], FarmerService, BlockTools],
|
|
1183
1180
|
self_hostname: str,
|
|
1184
1181
|
) -> AsyncIterator[HarvesterFarmerEnvironment]:
|
|
1185
1182
|
harvesters, farmer_service, bt = farmer_one_harvester
|
|
@@ -1229,7 +1226,7 @@ def populated_temp_file_keyring_fixture() -> Iterator[TempKeyring]:
|
|
|
1229
1226
|
async def farmer_harvester_2_simulators_zero_bits_plot_filter(
|
|
1230
1227
|
tmp_path: Path, get_temp_keyring: Keychain
|
|
1231
1228
|
) -> AsyncIterator[
|
|
1232
|
-
|
|
1229
|
+
tuple[
|
|
1233
1230
|
FarmerService,
|
|
1234
1231
|
HarvesterService,
|
|
1235
1232
|
Union[FullNodeService, SimulatorFullNodeService],
|
|
@@ -1248,7 +1245,7 @@ async def farmer_harvester_2_simulators_zero_bits_plot_filter(
|
|
|
1248
1245
|
keychain=get_temp_keyring,
|
|
1249
1246
|
)
|
|
1250
1247
|
|
|
1251
|
-
config_overrides:
|
|
1248
|
+
config_overrides: dict[str, int] = {"full_node.max_sync_wait": 0}
|
|
1252
1249
|
|
|
1253
1250
|
bts = [
|
|
1254
1251
|
await create_block_tools_async(
|
|
@@ -1262,7 +1259,7 @@ async def farmer_harvester_2_simulators_zero_bits_plot_filter(
|
|
|
1262
1259
|
for _ in range(2)
|
|
1263
1260
|
]
|
|
1264
1261
|
|
|
1265
|
-
simulators:
|
|
1262
|
+
simulators: list[SimulatorFullNodeService] = [
|
|
1266
1263
|
await async_exit_stack.enter_async_context(
|
|
1267
1264
|
# Passing simulator=True gets us this type guaranteed
|
|
1268
1265
|
setup_full_node( # type: ignore[arg-type]
|
|
@@ -1302,3 +1299,121 @@ async def recording_web_server_fixture(self_hostname: str) -> AsyncIterator[Reco
|
|
|
1302
1299
|
)
|
|
1303
1300
|
def use_delta_sync(request: SubRequest):
|
|
1304
1301
|
return request.param
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
# originally from _tests/wallet/conftest.py
|
|
1305
|
+
@pytest.fixture(scope="function", params=[True, False])
|
|
1306
|
+
def trusted_full_node(request: Any) -> bool:
|
|
1307
|
+
trusted: bool = request.param
|
|
1308
|
+
return trusted
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
@pytest.fixture(scope="function", params=[True, False])
|
|
1312
|
+
def tx_config(request: Any) -> TXConfig:
|
|
1313
|
+
return replace(DEFAULT_TX_CONFIG, reuse_puzhash=request.param)
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
# This fixture automatically creates 4 parametrized tests trusted/untrusted x reuse/new derivations
|
|
1317
|
+
# These parameterizations can be skipped by manually specifying "trusted" or "reuse puzhash" to the fixture
|
|
1318
|
+
@pytest.fixture(scope="function")
|
|
1319
|
+
async def wallet_environments(
|
|
1320
|
+
trusted_full_node: bool,
|
|
1321
|
+
tx_config: TXConfig,
|
|
1322
|
+
blockchain_constants: ConsensusConstants,
|
|
1323
|
+
request: pytest.FixtureRequest,
|
|
1324
|
+
) -> AsyncIterator[WalletTestFramework]:
|
|
1325
|
+
if "trusted" in request.param:
|
|
1326
|
+
if request.param["trusted"] != trusted_full_node:
|
|
1327
|
+
pytest.skip("Skipping not specified trusted mode")
|
|
1328
|
+
if "reuse_puzhash" in request.param:
|
|
1329
|
+
if request.param["reuse_puzhash"] != tx_config.reuse_puzhash:
|
|
1330
|
+
pytest.skip("Skipping not specified reuse_puzhash mode")
|
|
1331
|
+
assert len(request.param["blocks_needed"]) == request.param["num_environments"]
|
|
1332
|
+
if "config_overrides" in request.param:
|
|
1333
|
+
config_overrides: dict[str, Any] = request.param["config_overrides"]
|
|
1334
|
+
else: # pragma: no cover
|
|
1335
|
+
config_overrides = {}
|
|
1336
|
+
async with setup_simulators_and_wallets_service(
|
|
1337
|
+
1,
|
|
1338
|
+
request.param["num_environments"],
|
|
1339
|
+
blockchain_constants,
|
|
1340
|
+
initial_num_public_keys=config_overrides.get("initial_num_public_keys", 5),
|
|
1341
|
+
) as wallet_nodes_services:
|
|
1342
|
+
full_node, wallet_services, bt = wallet_nodes_services
|
|
1343
|
+
|
|
1344
|
+
full_node[0]._api.full_node.config = {**full_node[0]._api.full_node.config, **config_overrides}
|
|
1345
|
+
|
|
1346
|
+
wallet_rpc_clients: list[WalletRpcClient] = []
|
|
1347
|
+
async with AsyncExitStack() as astack:
|
|
1348
|
+
for service in wallet_services:
|
|
1349
|
+
service._node.config = {
|
|
1350
|
+
**service._node.config,
|
|
1351
|
+
"trusted_peers": (
|
|
1352
|
+
{full_node[0]._api.server.node_id.hex(): full_node[0]._api.server.node_id.hex()}
|
|
1353
|
+
if trusted_full_node
|
|
1354
|
+
else {}
|
|
1355
|
+
),
|
|
1356
|
+
**config_overrides,
|
|
1357
|
+
}
|
|
1358
|
+
service._node.wallet_state_manager.config = service._node.config
|
|
1359
|
+
# Shorten the 10 seconds default value
|
|
1360
|
+
service._node.coin_state_retry_seconds = 2
|
|
1361
|
+
await service._node.server.start_client(
|
|
1362
|
+
PeerInfo(bt.config["self_hostname"], full_node[0]._api.full_node.server.get_port()), None
|
|
1363
|
+
)
|
|
1364
|
+
wallet_rpc_clients.append(
|
|
1365
|
+
await astack.enter_async_context(
|
|
1366
|
+
WalletRpcClient.create_as_context(
|
|
1367
|
+
bt.config["self_hostname"],
|
|
1368
|
+
# Semantics guarantee us a non-None value here
|
|
1369
|
+
service.rpc_server.listen_port, # type: ignore[union-attr]
|
|
1370
|
+
service.root_path,
|
|
1371
|
+
service.config,
|
|
1372
|
+
)
|
|
1373
|
+
)
|
|
1374
|
+
)
|
|
1375
|
+
|
|
1376
|
+
wallet_states: list[WalletState] = []
|
|
1377
|
+
for service, blocks_needed in zip(wallet_services, request.param["blocks_needed"]):
|
|
1378
|
+
if blocks_needed > 0:
|
|
1379
|
+
await full_node[0]._api.farm_blocks_to_wallet(
|
|
1380
|
+
count=blocks_needed, wallet=service._node.wallet_state_manager.main_wallet
|
|
1381
|
+
)
|
|
1382
|
+
await full_node[0]._api.wait_for_wallet_synced(wallet_node=service._node, timeout=20)
|
|
1383
|
+
wallet_states.append(
|
|
1384
|
+
WalletState(
|
|
1385
|
+
Balance(
|
|
1386
|
+
confirmed_wallet_balance=uint128(2_000_000_000_000 * blocks_needed),
|
|
1387
|
+
unconfirmed_wallet_balance=uint128(2_000_000_000_000 * blocks_needed),
|
|
1388
|
+
spendable_balance=uint128(2_000_000_000_000 * blocks_needed),
|
|
1389
|
+
pending_change=uint64(0),
|
|
1390
|
+
max_send_amount=uint128(2_000_000_000_000 * blocks_needed),
|
|
1391
|
+
unspent_coin_count=uint32(2 * blocks_needed),
|
|
1392
|
+
pending_coin_removal_count=uint32(0),
|
|
1393
|
+
),
|
|
1394
|
+
)
|
|
1395
|
+
)
|
|
1396
|
+
|
|
1397
|
+
assert full_node[0].rpc_server is not None
|
|
1398
|
+
client_node = await astack.enter_async_context(
|
|
1399
|
+
FullNodeRpcClient.create_as_context(
|
|
1400
|
+
bt.config["self_hostname"],
|
|
1401
|
+
full_node[0].rpc_server.listen_port,
|
|
1402
|
+
full_node[0].root_path,
|
|
1403
|
+
full_node[0].config,
|
|
1404
|
+
)
|
|
1405
|
+
)
|
|
1406
|
+
yield WalletTestFramework(
|
|
1407
|
+
full_node[0]._api,
|
|
1408
|
+
client_node,
|
|
1409
|
+
trusted_full_node,
|
|
1410
|
+
[
|
|
1411
|
+
WalletEnvironment(
|
|
1412
|
+
service=service,
|
|
1413
|
+
rpc_client=rpc_client,
|
|
1414
|
+
wallet_states={uint32(1): wallet_state},
|
|
1415
|
+
)
|
|
1416
|
+
for service, rpc_client, wallet_state in zip(wallet_services, wallet_rpc_clients, wallet_states)
|
|
1417
|
+
],
|
|
1418
|
+
tx_config,
|
|
1419
|
+
)
|
chia/_tests/connection_utils.py
CHANGED
|
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import logging
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import List, Set, Tuple
|
|
7
6
|
|
|
8
7
|
import aiohttp
|
|
9
8
|
from cryptography import x509
|
|
@@ -11,6 +10,7 @@ from cryptography.hazmat.backends import default_backend
|
|
|
11
10
|
from cryptography.hazmat.primitives import hashes, serialization
|
|
12
11
|
|
|
13
12
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
13
|
+
from chia.apis import ApiProtocolRegistry
|
|
14
14
|
from chia.protocols.shared_protocol import default_capabilities
|
|
15
15
|
from chia.server.outbound_message import NodeType
|
|
16
16
|
from chia.server.server import ChiaServer, ssl_context_for_client
|
|
@@ -44,8 +44,8 @@ async def add_dummy_connection(
|
|
|
44
44
|
dummy_port: int,
|
|
45
45
|
type: NodeType = NodeType.FULL_NODE,
|
|
46
46
|
*,
|
|
47
|
-
additional_capabilities:
|
|
48
|
-
) ->
|
|
47
|
+
additional_capabilities: list[tuple[uint16, str]] = [],
|
|
48
|
+
) -> tuple[asyncio.Queue, bytes32]:
|
|
49
49
|
wsc, peer_id = await add_dummy_connection_wsc(
|
|
50
50
|
server, self_hostname, dummy_port, type, additional_capabilities=additional_capabilities
|
|
51
51
|
)
|
|
@@ -58,15 +58,15 @@ async def add_dummy_connection_wsc(
|
|
|
58
58
|
self_hostname: str,
|
|
59
59
|
dummy_port: int,
|
|
60
60
|
type: NodeType = NodeType.FULL_NODE,
|
|
61
|
-
additional_capabilities:
|
|
62
|
-
) ->
|
|
61
|
+
additional_capabilities: list[tuple[uint16, str]] = [],
|
|
62
|
+
) -> tuple[WSChiaConnection, bytes32]:
|
|
63
63
|
timeout = aiohttp.ClientTimeout(total=10)
|
|
64
64
|
session = aiohttp.ClientSession(timeout=timeout)
|
|
65
65
|
config = load_config(server.root_path, "config.yaml")
|
|
66
66
|
|
|
67
67
|
ca_crt_path: Path
|
|
68
68
|
ca_key_path: Path
|
|
69
|
-
authenticated_client_types:
|
|
69
|
+
authenticated_client_types: set[NodeType] = {NodeType.HARVESTER}
|
|
70
70
|
if type in authenticated_client_types:
|
|
71
71
|
private_ca_crt_path, private_ca_key_path = private_ssl_ca_paths(server.root_path, config)
|
|
72
72
|
ca_crt_path = private_ca_crt_path
|
|
@@ -98,6 +98,7 @@ async def add_dummy_connection_wsc(
|
|
|
98
98
|
100,
|
|
99
99
|
30,
|
|
100
100
|
local_capabilities_for_handshake=default_capabilities[type] + additional_capabilities,
|
|
101
|
+
class_for_type=ApiProtocolRegistry,
|
|
101
102
|
)
|
|
102
103
|
await wsc.perform_handshake(server._network_id, dummy_port, type)
|
|
103
104
|
if wsc.incoming_message_task is not None:
|
|
@@ -342,7 +342,7 @@ def test_prepare_submission(
|
|
|
342
342
|
assert output in result.output
|
|
343
343
|
|
|
344
344
|
if exit_code == 0:
|
|
345
|
-
submission_file =
|
|
345
|
+
submission_file = next(iter(beta_path.rglob("*.zip")))
|
|
346
346
|
assert submission_file.name.startswith(f"submission_{choice - 1}")
|
|
347
347
|
with zipfile.ZipFile(submission_file) as zip_file:
|
|
348
348
|
all_files = [Path(info.filename) for info in zip_file.filelist]
|
|
@@ -378,5 +378,5 @@ def test_beta_status(root_path_populated_with_config: Path, enabled: bool, path:
|
|
|
378
378
|
|
|
379
379
|
assert result.exit_code == 0
|
|
380
380
|
assert f"enabled: {enabled}" in result.output
|
|
381
|
-
assert f"path: {
|
|
382
|
-
assert f"metrics log interval: {
|
|
381
|
+
assert f"path: {path!s}" in result.output
|
|
382
|
+
assert f"metrics log interval: {metrics_log_interval_default!s}" in result.output
|
|
@@ -4,7 +4,7 @@ import json
|
|
|
4
4
|
import os
|
|
5
5
|
import re
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import
|
|
7
|
+
from typing import Optional
|
|
8
8
|
|
|
9
9
|
import pytest
|
|
10
10
|
from click.testing import CliRunner, Result
|
|
@@ -105,7 +105,7 @@ class TestKeysCommands:
|
|
|
105
105
|
assert len(address_matches) > 1
|
|
106
106
|
address = address_matches[0]
|
|
107
107
|
|
|
108
|
-
config:
|
|
108
|
+
config: dict = load_config(tmp_path, "config.yaml")
|
|
109
109
|
assert config["farmer"]["xch_target_address"] == address
|
|
110
110
|
assert config["pool"]["xch_target_address"] == address
|
|
111
111
|
|
|
@@ -153,7 +153,7 @@ class TestKeysCommands:
|
|
|
153
153
|
assert len(address_matches) > 1
|
|
154
154
|
address = address_matches[0]
|
|
155
155
|
|
|
156
|
-
existing_config:
|
|
156
|
+
existing_config: dict = load_config(tmp_path, "config.yaml")
|
|
157
157
|
assert existing_config["farmer"]["xch_target_address"] == address
|
|
158
158
|
assert existing_config["pool"]["xch_target_address"] == address
|
|
159
159
|
|
|
@@ -177,7 +177,7 @@ class TestKeysCommands:
|
|
|
177
177
|
assert len(keychain.get_all_private_keys()) == 2
|
|
178
178
|
|
|
179
179
|
# Verify that the config's xch_target_address entries have not changed
|
|
180
|
-
config:
|
|
180
|
+
config: dict = load_config(tmp_path, "config.yaml")
|
|
181
181
|
assert config["farmer"]["xch_target_address"] == existing_config["farmer"]["xch_target_address"]
|
|
182
182
|
assert config["pool"]["xch_target_address"] == existing_config["pool"]["xch_target_address"]
|
|
183
183
|
|
|
@@ -200,7 +200,7 @@ class TestKeysCommands:
|
|
|
200
200
|
],
|
|
201
201
|
)
|
|
202
202
|
def test_generate_and_add_label_parameter(
|
|
203
|
-
self, cmd_params:
|
|
203
|
+
self, cmd_params: list[str], label: Optional[str], input_str: Optional[str], tmp_path, empty_keyring
|
|
204
204
|
):
|
|
205
205
|
keychain = empty_keyring
|
|
206
206
|
keys_root_path = keychain.keyring_wrapper.keys_root_path
|
|
@@ -1322,7 +1322,7 @@ class TestKeysCommands:
|
|
|
1322
1322
|
assert result.exit_code == 0
|
|
1323
1323
|
assert (
|
|
1324
1324
|
result.output.find(
|
|
1325
|
-
"Wallet address 9 (m/12381/8444/2/9):
|
|
1325
|
+
"Wallet address 9 (m/12381/8444/2/9): xch1p33y7kv48u7l68m490mr8levl6nkyxm3x8tfcnnec555egxzd3gs829wkl"
|
|
1326
1326
|
)
|
|
1327
1327
|
!= -1
|
|
1328
1328
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any,
|
|
3
|
+
from typing import Any, Optional
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
6
|
|
|
@@ -12,14 +12,14 @@ TEST_DUCKSAUCE_ASSET_ID = "10000000000000000000000000000000000000000000000000000
|
|
|
12
12
|
TEST_CRUNCHBERRIES_ASSET_ID = "1000000000000000000000000000000000000000000000000000000000000002"
|
|
13
13
|
TEST_UNICORNTEARS_ASSET_ID = "1000000000000000000000000000000000000000000000000000000000000003"
|
|
14
14
|
|
|
15
|
-
TEST_ASSET_ID_NAME_MAPPING:
|
|
15
|
+
TEST_ASSET_ID_NAME_MAPPING: dict[bytes32, tuple[uint32, str]] = {
|
|
16
16
|
bytes32.from_hexstr(TEST_DUCKSAUCE_ASSET_ID): (uint32(2), "DuckSauce"),
|
|
17
17
|
bytes32.from_hexstr(TEST_CRUNCHBERRIES_ASSET_ID): (uint32(3), "CrunchBerries"),
|
|
18
18
|
bytes32.from_hexstr(TEST_UNICORNTEARS_ASSET_ID): (uint32(4), "UnicornTears"),
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
async def cat_name_resolver(asset_id: bytes32) -> Optional[
|
|
22
|
+
async def cat_name_resolver(asset_id: bytes32) -> Optional[tuple[Optional[uint32], str]]:
|
|
23
23
|
return TEST_ASSET_ID_NAME_MAPPING.get(asset_id)
|
|
24
24
|
|
|
25
25
|
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import List
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
|
|
7
5
|
from chia._tests.core.make_block_generator import make_block_generator
|
|
@@ -15,9 +13,9 @@ from chia.util.ints import uint32, uint64
|
|
|
15
13
|
|
|
16
14
|
@pytest.mark.parametrize("add_amount", [[0], [1, 2, 3], []])
|
|
17
15
|
@pytest.mark.parametrize("rem_amount", [[0], [1, 2, 3], []])
|
|
18
|
-
def test_compute_block_fee(add_amount:
|
|
19
|
-
additions:
|
|
20
|
-
removals:
|
|
16
|
+
def test_compute_block_fee(add_amount: list[int], rem_amount: list[int]) -> None:
|
|
17
|
+
additions: list[Coin] = [Coin(bytes32.random(), bytes32.random(), uint64(amt)) for amt in add_amount]
|
|
18
|
+
removals: list[Coin] = [Coin(bytes32.random(), bytes32.random(), uint64(amt)) for amt in rem_amount]
|
|
21
19
|
|
|
22
20
|
# the fee is the left-overs from the removals (spent) coins after deducting
|
|
23
21
|
# the newly created coins (additions)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import List
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
|
|
7
5
|
from chia.types.blockchain_format.coin import Coin
|
|
@@ -65,7 +63,7 @@ def test_serialization():
|
|
|
65
63
|
(0x7FFFFFFFFFFFFFFF, [0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]),
|
|
66
64
|
],
|
|
67
65
|
)
|
|
68
|
-
def test_name(amount: int, clvm:
|
|
66
|
+
def test_name(amount: int, clvm: list[int]) -> None:
|
|
69
67
|
H1 = bytes32(b"a" * 32)
|
|
70
68
|
H2 = bytes32(b"b" * 32)
|
|
71
69
|
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
4
|
import unittest
|
|
5
|
-
from typing import List, Tuple
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
from chia_rs import G2Element
|
|
@@ -36,9 +35,9 @@ def rand_hash(rng: random.Random) -> bytes32:
|
|
|
36
35
|
return bytes32(ret)
|
|
37
36
|
|
|
38
37
|
|
|
39
|
-
def create_spends(num: int) ->
|
|
40
|
-
spends:
|
|
41
|
-
create_coin:
|
|
38
|
+
def create_spends(num: int) -> tuple[list[CoinSpend], list[Coin]]:
|
|
39
|
+
spends: list[CoinSpend] = []
|
|
40
|
+
create_coin: list[Coin] = []
|
|
42
41
|
rng = random.Random()
|
|
43
42
|
|
|
44
43
|
puzzle = Program.to(1)
|