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
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from asyncio import Queue
|
|
4
|
+
from collections import OrderedDict
|
|
5
|
+
from collections.abc import AsyncGenerator
|
|
4
6
|
from dataclasses import dataclass
|
|
5
7
|
from random import Random
|
|
6
|
-
from typing import
|
|
8
|
+
from typing import Optional
|
|
7
9
|
|
|
8
10
|
import pytest
|
|
9
11
|
from chia_rs import AugSchemeMPL, Coin, CoinSpend, CoinState, Program
|
|
@@ -32,19 +34,15 @@ from chia.util.ints import uint8, uint16, uint32, uint64
|
|
|
32
34
|
IDENTITY_PUZZLE = Program.to(1)
|
|
33
35
|
IDENTITY_PUZZLE_HASH = IDENTITY_PUZZLE.get_tree_hash()
|
|
34
36
|
|
|
35
|
-
OneNode =
|
|
36
|
-
|
|
37
|
-
if TYPE_CHECKING:
|
|
38
|
-
Mpu = Tuple[FullNodeSimulator, Queue[Message], WSChiaConnection]
|
|
39
|
-
else:
|
|
40
|
-
Mpu = Tuple[FullNodeSimulator, Queue, WSChiaConnection]
|
|
37
|
+
OneNode = tuple[list[SimulatorFullNodeService], list[WalletService], BlockTools]
|
|
38
|
+
Mpu = tuple[FullNodeSimulator, Queue[Message], WSChiaConnection]
|
|
41
39
|
|
|
42
40
|
ALL_FILTER = wallet_protocol.CoinStateFilters(True, True, True, uint64(0))
|
|
43
41
|
|
|
44
42
|
|
|
45
43
|
async def connect_to_simulator(
|
|
46
44
|
one_node: OneNode, self_hostname: str, mempool_updates: bool = True
|
|
47
|
-
) ->
|
|
45
|
+
) -> tuple[FullNodeSimulator, Queue[Message], WSChiaConnection]:
|
|
48
46
|
[full_node_service], _, _ = one_node
|
|
49
47
|
|
|
50
48
|
full_node_api = full_node_service._api
|
|
@@ -265,7 +263,7 @@ async def test_request_coin_state(one_node: OneNode, self_hostname: str) -> None
|
|
|
265
263
|
# Add coin records
|
|
266
264
|
coin_records = [
|
|
267
265
|
CoinRecord(
|
|
268
|
-
coin=Coin(bytes32
|
|
266
|
+
coin=Coin(bytes32.zeros, bytes32.zeros, uint64(i)),
|
|
269
267
|
confirmed_block_index=uint32(1),
|
|
270
268
|
spent_block_index=uint32(1 if i % 2 == 0 else 0),
|
|
271
269
|
coinbase=False,
|
|
@@ -280,7 +278,7 @@ async def test_request_coin_state(one_node: OneNode, self_hostname: str) -> None
|
|
|
280
278
|
coinbase=False,
|
|
281
279
|
timestamp=uint64(1),
|
|
282
280
|
)
|
|
283
|
-
await simulator.full_node.coin_store._add_coin_records(coin_records
|
|
281
|
+
await simulator.full_node.coin_store._add_coin_records([*coin_records, ignored_coin])
|
|
284
282
|
|
|
285
283
|
# Request no coin states
|
|
286
284
|
resp = await simulator.request_coin_state(wallet_protocol.RequestCoinState([], None, genesis, False), peer)
|
|
@@ -342,7 +340,7 @@ async def test_request_coin_state_reorg(one_node: OneNode, self_hostname: str) -
|
|
|
342
340
|
|
|
343
341
|
# Reorg
|
|
344
342
|
await simulator.reorg_from_index_to_new_index(
|
|
345
|
-
simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32
|
|
343
|
+
simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32.zeros)
|
|
346
344
|
)
|
|
347
345
|
|
|
348
346
|
# Request coin state, should reject due to reorg
|
|
@@ -406,7 +404,7 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
|
|
|
406
404
|
simulator, _, peer = await connect_to_simulator(one_node, self_hostname)
|
|
407
405
|
|
|
408
406
|
# Farm block to a puzzle hash we aren't looking at
|
|
409
|
-
await simulator.farm_blocks_to_puzzlehash(3, farm_to=bytes32(b"\
|
|
407
|
+
await simulator.farm_blocks_to_puzzlehash(3, farm_to=bytes32(b"\x0a" * 32))
|
|
410
408
|
|
|
411
409
|
genesis = simulator.full_node.blockchain.constants.GENESIS_CHALLENGE
|
|
412
410
|
|
|
@@ -417,8 +415,8 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
|
|
|
417
415
|
assert peak_header_hash is not None
|
|
418
416
|
|
|
419
417
|
# Add coin records
|
|
420
|
-
coin_records:
|
|
421
|
-
puzzle_hashes:
|
|
418
|
+
coin_records: list[CoinRecord] = []
|
|
419
|
+
puzzle_hashes: list[bytes32] = []
|
|
422
420
|
|
|
423
421
|
for ph_i in range(10):
|
|
424
422
|
puzzle_hash = bytes32(ph_i.to_bytes(1, "big") * 32)
|
|
@@ -427,7 +425,7 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
|
|
|
427
425
|
for i in range(5):
|
|
428
426
|
coin_records.append(
|
|
429
427
|
CoinRecord(
|
|
430
|
-
coin=Coin(bytes32
|
|
428
|
+
coin=Coin(bytes32.zeros, puzzle_hash, uint64(i)),
|
|
431
429
|
confirmed_block_index=uint32(1),
|
|
432
430
|
spent_block_index=uint32(1 if i % 2 == 0 else 0),
|
|
433
431
|
coinbase=False,
|
|
@@ -443,7 +441,7 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
|
|
|
443
441
|
timestamp=uint64(1),
|
|
444
442
|
)
|
|
445
443
|
|
|
446
|
-
await simulator.full_node.coin_store._add_coin_records(coin_records
|
|
444
|
+
await simulator.full_node.coin_store._add_coin_records([*coin_records, ignored_coin])
|
|
447
445
|
|
|
448
446
|
# We already test permutations of CoinStateFilters in the CoinStore tests
|
|
449
447
|
# So it's redundant to do so here
|
|
@@ -527,7 +525,7 @@ async def test_request_puzzle_state_reorg(one_node: OneNode, self_hostname: str)
|
|
|
527
525
|
|
|
528
526
|
# Reorg
|
|
529
527
|
await simulator.reorg_from_index_to_new_index(
|
|
530
|
-
simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32
|
|
528
|
+
simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32.zeros)
|
|
531
529
|
)
|
|
532
530
|
|
|
533
531
|
# Request coin state, should reject due to reorg
|
|
@@ -621,14 +619,14 @@ async def test_request_puzzle_state_limit(one_node: OneNode, self_hostname: str)
|
|
|
621
619
|
|
|
622
620
|
@dataclass(frozen=True)
|
|
623
621
|
class PuzzleStateData:
|
|
624
|
-
coin_states:
|
|
622
|
+
coin_states: list[CoinState]
|
|
625
623
|
end_of_batch: bool
|
|
626
624
|
previous_height: Optional[uint32]
|
|
627
625
|
header_hash: bytes32
|
|
628
626
|
|
|
629
627
|
|
|
630
628
|
async def sync_puzzle_hashes(
|
|
631
|
-
puzzle_hashes:
|
|
629
|
+
puzzle_hashes: list[bytes32],
|
|
632
630
|
*,
|
|
633
631
|
initial_previous_height: Optional[uint32],
|
|
634
632
|
initial_header_hash: bytes32,
|
|
@@ -693,9 +691,9 @@ async def test_sync_puzzle_state(
|
|
|
693
691
|
simulator.full_node.config["max_subscribe_response_items"] = 7400
|
|
694
692
|
|
|
695
693
|
# Generate coin records
|
|
696
|
-
puzzle_hashes:
|
|
697
|
-
hints:
|
|
698
|
-
coin_records:
|
|
694
|
+
puzzle_hashes: list[bytes32] = []
|
|
695
|
+
hints: list[tuple[bytes32, bytes]] = []
|
|
696
|
+
coin_records: dict[bytes32, CoinRecord] = dict()
|
|
699
697
|
|
|
700
698
|
rng = Random(0)
|
|
701
699
|
|
|
@@ -713,7 +711,7 @@ async def test_sync_puzzle_state(
|
|
|
713
711
|
if rng.choice([True, False, False, False, False]):
|
|
714
712
|
coin_ph = std_hash(coin_ph)
|
|
715
713
|
|
|
716
|
-
coin = Coin(bytes32
|
|
714
|
+
coin = Coin(bytes32.zeros, coin_ph, uint64(base_amount + added_amount))
|
|
717
715
|
|
|
718
716
|
coin_records[coin.name()] = CoinRecord(
|
|
719
717
|
coin=coin,
|
|
@@ -736,7 +734,7 @@ async def test_sync_puzzle_state(
|
|
|
736
734
|
|
|
737
735
|
async def run_test(include_spent: bool, include_unspent: bool, include_hinted: bool, min_amount: uint64) -> None:
|
|
738
736
|
# Calculate expected coin records based on filters
|
|
739
|
-
expected_coin_records:
|
|
737
|
+
expected_coin_records: dict[bytes32, CoinRecord] = dict()
|
|
740
738
|
|
|
741
739
|
for coin_id, coin_record in coin_records.items():
|
|
742
740
|
if not include_spent and coin_record.spent_block_index > 0:
|
|
@@ -751,7 +749,7 @@ async def test_sync_puzzle_state(
|
|
|
751
749
|
expected_coin_records[coin_id] = coin_record
|
|
752
750
|
|
|
753
751
|
# Sync all coin states
|
|
754
|
-
coin_ids:
|
|
752
|
+
coin_ids: set[bytes32] = set()
|
|
755
753
|
last_height = -1
|
|
756
754
|
|
|
757
755
|
async for batch in sync_puzzle_hashes(
|
|
@@ -784,7 +782,7 @@ async def test_sync_puzzle_state(
|
|
|
784
782
|
await run_test(include_spent, include_unspent, include_hinted, uint64(min_amount))
|
|
785
783
|
|
|
786
784
|
|
|
787
|
-
async def assert_mempool_added(queue: Queue[Message], transaction_ids:
|
|
785
|
+
async def assert_mempool_added(queue: Queue[Message], transaction_ids: set[bytes32]) -> None:
|
|
788
786
|
message = await queue.get()
|
|
789
787
|
assert message.type == ProtocolMessageTypes.mempool_items_added.value
|
|
790
788
|
|
|
@@ -794,7 +792,7 @@ async def assert_mempool_added(queue: Queue[Message], transaction_ids: Set[bytes
|
|
|
794
792
|
|
|
795
793
|
async def assert_mempool_removed(
|
|
796
794
|
queue: Queue[Message],
|
|
797
|
-
removed_items:
|
|
795
|
+
removed_items: set[wallet_protocol.RemovedMempoolItem],
|
|
798
796
|
) -> None:
|
|
799
797
|
message = await queue.get()
|
|
800
798
|
assert message.type == ProtocolMessageTypes.mempool_items_removed.value
|
|
@@ -818,7 +816,7 @@ async def raw_mpu_setup(one_node: OneNode, self_hostname: str, no_capability: bo
|
|
|
818
816
|
await simulator.farm_blocks_to_puzzlehash(1)
|
|
819
817
|
await queue.get()
|
|
820
818
|
|
|
821
|
-
new_coins:
|
|
819
|
+
new_coins: list[tuple[Coin, bytes32]] = []
|
|
822
820
|
|
|
823
821
|
for i in range(10):
|
|
824
822
|
puzzle = Program.to(2)
|
|
@@ -847,10 +845,10 @@ async def raw_mpu_setup(one_node: OneNode, self_hostname: str, no_capability: bo
|
|
|
847
845
|
return simulator, queue, peer
|
|
848
846
|
|
|
849
847
|
|
|
850
|
-
async def make_coin(full_node: FullNode) ->
|
|
848
|
+
async def make_coin(full_node: FullNode) -> tuple[Coin, bytes32]:
|
|
851
849
|
ph = IDENTITY_PUZZLE_HASH
|
|
852
|
-
coin = Coin(bytes32
|
|
853
|
-
hint = bytes32
|
|
850
|
+
coin = Coin(bytes32.zeros, ph, uint64(1000))
|
|
851
|
+
hint = bytes32.zeros
|
|
854
852
|
|
|
855
853
|
height = full_node.blockchain.get_peak_height()
|
|
856
854
|
assert height is not None
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Dict, List
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
|
|
@@ -29,7 +28,7 @@ def get_dummy_nft(random_: random.Random) -> NFTCoinInfo:
|
|
|
29
28
|
@dataclass
|
|
30
29
|
class DummyNFTs:
|
|
31
30
|
seeded_random: random.Random
|
|
32
|
-
nfts_per_wallet:
|
|
31
|
+
nfts_per_wallet: dict[uint32, list[NFTCoinInfo]] = field(default_factory=dict)
|
|
33
32
|
|
|
34
33
|
def generate(self, wallet_id: int, count: int) -> None:
|
|
35
34
|
nfts = self.nfts_per_wallet.setdefault(uint32(wallet_id), [])
|
|
@@ -36,7 +36,7 @@ async def test_notification_store_backwards_compat() -> None:
|
|
|
36
36
|
cursor = await conn.execute(
|
|
37
37
|
"INSERT OR REPLACE INTO notifications (coin_id, msg, amount) VALUES(?, ?, ?)",
|
|
38
38
|
(
|
|
39
|
-
bytes32
|
|
39
|
+
bytes32.zeros,
|
|
40
40
|
bytes([0] * 10),
|
|
41
41
|
bytes([0]),
|
|
42
42
|
),
|
|
@@ -121,7 +121,7 @@ async def test_notifications(
|
|
|
121
121
|
wallet_node_2.config["enable_notifications"] = True
|
|
122
122
|
AMOUNT = uint64(1)
|
|
123
123
|
FEE = uint64(0)
|
|
124
|
-
elif case in
|
|
124
|
+
elif case in {"allow", "allow_larger"}:
|
|
125
125
|
wallet_node_2.config["required_notification_amount"] = 750000000000
|
|
126
126
|
if case == "allow_larger":
|
|
127
127
|
AMOUNT = uint64(1000000000000)
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Dict, List
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
from chia_rs import AugSchemeMPL
|
|
@@ -29,8 +28,8 @@ def get_dummy_record(index: int, wallet_id: int, seeded_random: random.Random) -
|
|
|
29
28
|
@dataclass
|
|
30
29
|
class DummyDerivationRecords:
|
|
31
30
|
seeded_random: random.Random
|
|
32
|
-
index_per_wallet:
|
|
33
|
-
records_per_wallet:
|
|
31
|
+
index_per_wallet: dict[int, int] = field(default_factory=dict)
|
|
32
|
+
records_per_wallet: dict[int, list[DerivationRecord]] = field(default_factory=dict)
|
|
34
33
|
|
|
35
34
|
def generate(self, wallet_id: int, count: int) -> None:
|
|
36
35
|
records = self.records_per_wallet.setdefault(wallet_id, [])
|
|
@@ -45,7 +45,7 @@ msg2: bytes = b"msg2"
|
|
|
45
45
|
|
|
46
46
|
additional_data: bytes32 = bytes32(DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA)
|
|
47
47
|
|
|
48
|
-
coin: Coin = Coin(bytes32
|
|
48
|
+
coin: Coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
|
|
49
49
|
puzzle = SerializedProgram.from_bytes(b"\x01")
|
|
50
50
|
solution_h = SerializedProgram.from_program(
|
|
51
51
|
Program.to([[ConditionOpcode.AGG_SIG_UNSAFE, pk1_h, msg1], [ConditionOpcode.AGG_SIG_ME, pk2_h_synth, msg2]])
|
|
@@ -90,7 +90,7 @@ async def test_wsm_sign_transaction() -> None:
|
|
|
90
90
|
[
|
|
91
91
|
DerivationRecord(
|
|
92
92
|
uint32(1),
|
|
93
|
-
bytes32
|
|
93
|
+
bytes32.zeros,
|
|
94
94
|
pk1_h,
|
|
95
95
|
WalletType.STANDARD_WALLET,
|
|
96
96
|
uint32(1),
|
|
@@ -129,7 +129,7 @@ async def test_wsm_sign_transaction() -> None:
|
|
|
129
129
|
[
|
|
130
130
|
DerivationRecord(
|
|
131
131
|
uint32(1),
|
|
132
|
-
bytes32
|
|
132
|
+
bytes32.zeros,
|
|
133
133
|
pk1_u,
|
|
134
134
|
WalletType.STANDARD_WALLET,
|
|
135
135
|
uint32(1),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import dataclasses
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
import click
|
|
7
7
|
import pytest
|
|
@@ -11,7 +11,8 @@ from click.testing import CliRunner
|
|
|
11
11
|
from chia._tests.cmds.test_cmd_framework import check_click_parsing
|
|
12
12
|
from chia._tests.cmds.wallet.test_consts import STD_TX
|
|
13
13
|
from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
|
|
14
|
-
from chia.cmds.cmd_classes import
|
|
14
|
+
from chia.cmds.cmd_classes import chia_command
|
|
15
|
+
from chia.cmds.cmd_helpers import NeedsWalletRPC, TransactionsIn, TransactionsOut, WalletClientInfo
|
|
15
16
|
from chia.cmds.cmds_util import TransactionBundle
|
|
16
17
|
from chia.cmds.signer import (
|
|
17
18
|
ApplySignaturesCMD,
|
|
@@ -21,8 +22,6 @@ from chia.cmds.signer import (
|
|
|
21
22
|
QrCodeDisplay,
|
|
22
23
|
SPIn,
|
|
23
24
|
SPOut,
|
|
24
|
-
TransactionsIn,
|
|
25
|
-
TransactionsOut,
|
|
26
25
|
)
|
|
27
26
|
from chia.rpc.util import ALL_TRANSLATION_LAYERS
|
|
28
27
|
from chia.rpc.wallet_request_types import (
|
|
@@ -87,7 +86,7 @@ def test_unsigned_transaction_type() -> None:
|
|
|
87
86
|
pubkey: G1Element = G1Element()
|
|
88
87
|
message: bytes = b"message"
|
|
89
88
|
|
|
90
|
-
coin: ConsensusCoin = ConsensusCoin(bytes32
|
|
89
|
+
coin: ConsensusCoin = ConsensusCoin(bytes32.zeros, bytes32.zeros, uint64(0))
|
|
91
90
|
puzzle: Program = Program.to(1)
|
|
92
91
|
solution: Program = Program.to([AggSigMe(pubkey, message).to_program()])
|
|
93
92
|
|
|
@@ -147,9 +146,9 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
|
|
|
147
146
|
solution,
|
|
148
147
|
)
|
|
149
148
|
|
|
150
|
-
derivation_record: Optional[
|
|
151
|
-
|
|
152
|
-
)
|
|
149
|
+
derivation_record: Optional[
|
|
150
|
+
DerivationRecord
|
|
151
|
+
] = await wallet_state_manager.puzzle_store.get_derivation_record_for_puzzle_hash(coin.puzzle_hash)
|
|
153
152
|
assert derivation_record is not None
|
|
154
153
|
pubkey: G1Element = derivation_record.pubkey
|
|
155
154
|
atom = puzzle.uncurry()[1].at("f").atom
|
|
@@ -180,7 +179,7 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
|
|
|
180
179
|
assert utx.signing_instructions.targets[0].fingerprint == synthetic_pubkey.get_fingerprint().to_bytes(4, "big")
|
|
181
180
|
assert utx.signing_instructions.targets[0].message == message
|
|
182
181
|
|
|
183
|
-
signing_responses:
|
|
182
|
+
signing_responses: list[SigningResponse] = (
|
|
184
183
|
await wallet_rpc.execute_signing_instructions(ExecuteSigningInstructions(utx.signing_instructions))
|
|
185
184
|
).signing_responses
|
|
186
185
|
assert len(signing_responses) == 1
|
|
@@ -194,7 +193,7 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
|
|
|
194
193
|
not_our_pubkey: G1Element = not_our_private_key.get_g1()
|
|
195
194
|
not_our_message: bytes = b"not our message"
|
|
196
195
|
not_our_coin: ConsensusCoin = ConsensusCoin(
|
|
197
|
-
bytes32
|
|
196
|
+
bytes32.zeros,
|
|
198
197
|
ACS_PH,
|
|
199
198
|
uint64(0),
|
|
200
199
|
)
|
|
@@ -256,7 +255,7 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
|
|
|
256
255
|
== signing_responses[0].signature
|
|
257
256
|
)
|
|
258
257
|
|
|
259
|
-
signed_txs:
|
|
258
|
+
signed_txs: list[SignedTransaction] = (
|
|
260
259
|
await wallet_rpc.apply_signatures(
|
|
261
260
|
ApplySignatures(spends=[Spend.from_coin_spend(coin_spend)], signing_responses=signing_responses)
|
|
262
261
|
)
|
|
@@ -322,7 +321,7 @@ async def test_p2blsdohp_execute_signing_instructions(wallet_environments: Walle
|
|
|
322
321
|
# Test just a path hint
|
|
323
322
|
test_name: bytes32 = std_hash(b"path hint only")
|
|
324
323
|
child_sk: PrivateKey = _derive_path_unhardened(root_sk, [uint64(1), uint64(2), uint64(3), uint64(4)])
|
|
325
|
-
signing_responses:
|
|
324
|
+
signing_responses: list[SigningResponse] = await wallet.execute_signing_instructions(
|
|
326
325
|
SigningInstructions(
|
|
327
326
|
KeyHints(
|
|
328
327
|
[],
|
|
@@ -505,16 +504,16 @@ async def test_p2blsdohp_execute_signing_instructions(wallet_environments: Walle
|
|
|
505
504
|
|
|
506
505
|
|
|
507
506
|
def test_blind_signer_translation_layer() -> None:
|
|
508
|
-
sum_hints:
|
|
507
|
+
sum_hints: list[SumHint] = [
|
|
509
508
|
SumHint([b"a", b"b", b"c"], b"offset", b"final"),
|
|
510
509
|
SumHint([b"c", b"b", b"a"], b"offset2", b"final"),
|
|
511
510
|
]
|
|
512
|
-
path_hints:
|
|
511
|
+
path_hints: list[PathHint] = [
|
|
513
512
|
PathHint(b"root1", [uint64(1), uint64(2), uint64(3)]),
|
|
514
513
|
PathHint(b"root2", [uint64(4), uint64(5), uint64(6)]),
|
|
515
514
|
]
|
|
516
|
-
signing_targets:
|
|
517
|
-
SigningTarget(b"pubkey", b"message", bytes32
|
|
515
|
+
signing_targets: list[SigningTarget] = [
|
|
516
|
+
SigningTarget(b"pubkey", b"message", bytes32.zeros),
|
|
518
517
|
SigningTarget(b"pubkey2", b"message2", bytes32([1] * 32)),
|
|
519
518
|
]
|
|
520
519
|
|
|
@@ -531,16 +530,16 @@ def test_blind_signer_translation_layer() -> None:
|
|
|
531
530
|
bytes32([1] * 32),
|
|
532
531
|
)
|
|
533
532
|
|
|
534
|
-
bstl_sum_hints:
|
|
533
|
+
bstl_sum_hints: list[BSTLSumHint] = [
|
|
535
534
|
BSTLSumHint([b"a", b"b", b"c"], b"offset", b"final"),
|
|
536
535
|
BSTLSumHint([b"c", b"b", b"a"], b"offset2", b"final"),
|
|
537
536
|
]
|
|
538
|
-
bstl_path_hints:
|
|
537
|
+
bstl_path_hints: list[BSTLPathHint] = [
|
|
539
538
|
BSTLPathHint(b"root1", [uint64(1), uint64(2), uint64(3)]),
|
|
540
539
|
BSTLPathHint(b"root2", [uint64(4), uint64(5), uint64(6)]),
|
|
541
540
|
]
|
|
542
|
-
bstl_signing_targets:
|
|
543
|
-
BSTLSigningTarget(b"pubkey", b"message", bytes32
|
|
541
|
+
bstl_signing_targets: list[BSTLSigningTarget] = [
|
|
542
|
+
BSTLSigningTarget(b"pubkey", b"message", bytes32.zeros),
|
|
544
543
|
BSTLSigningTarget(b"pubkey2", b"message2", bytes32([1] * 32)),
|
|
545
544
|
]
|
|
546
545
|
|
|
@@ -616,7 +615,7 @@ async def test_signer_commands(wallet_environments: WalletTestFramework) -> None
|
|
|
616
615
|
|
|
617
616
|
AMOUNT = uint64(1)
|
|
618
617
|
async with wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, sign=False, push=False) as action_scope:
|
|
619
|
-
await wallet.generate_signed_transaction(AMOUNT, bytes32
|
|
618
|
+
await wallet.generate_signed_transaction(AMOUNT, bytes32.zeros, action_scope)
|
|
620
619
|
[tx] = action_scope.side_effects.transactions
|
|
621
620
|
|
|
622
621
|
runner = CliRunner()
|
|
@@ -698,7 +697,7 @@ def test_signer_command_default_parsing() -> None:
|
|
|
698
697
|
),
|
|
699
698
|
txs_in=TransactionsIn(transaction_file_in="in"),
|
|
700
699
|
),
|
|
701
|
-
"-
|
|
700
|
+
"--transaction-file-in",
|
|
702
701
|
"in",
|
|
703
702
|
)
|
|
704
703
|
|
|
@@ -729,9 +728,9 @@ def test_signer_command_default_parsing() -> None:
|
|
|
729
728
|
),
|
|
730
729
|
txs_out=TransactionsOut(transaction_file_out="out"),
|
|
731
730
|
),
|
|
732
|
-
"-
|
|
731
|
+
"--transaction-file-in",
|
|
733
732
|
"in",
|
|
734
|
-
"-
|
|
733
|
+
"--transaction-file-out",
|
|
735
734
|
"out",
|
|
736
735
|
"-p",
|
|
737
736
|
"sp-in",
|
|
@@ -742,7 +741,7 @@ def test_signer_command_default_parsing() -> None:
|
|
|
742
741
|
rpc_info=NeedsWalletRPC(client_info=None, wallet_rpc_port=None, fingerprint=None),
|
|
743
742
|
txs_in=TransactionsIn(transaction_file_in="in"),
|
|
744
743
|
),
|
|
745
|
-
"-
|
|
744
|
+
"--transaction-file-in",
|
|
746
745
|
"in",
|
|
747
746
|
)
|
|
748
747
|
|
|
@@ -752,7 +751,7 @@ def test_transactions_in() -> None:
|
|
|
752
751
|
def cmd() -> None:
|
|
753
752
|
pass
|
|
754
753
|
|
|
755
|
-
@chia_command(cmd, "temp_cmd", "blah")
|
|
754
|
+
@chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
|
|
756
755
|
class TempCMD(TransactionsIn):
|
|
757
756
|
def run(self) -> None:
|
|
758
757
|
assert self.transaction_bundle == TransactionBundle([STD_TX])
|
|
@@ -771,7 +770,7 @@ def test_transactions_out() -> None:
|
|
|
771
770
|
def cmd() -> None:
|
|
772
771
|
pass
|
|
773
772
|
|
|
774
|
-
@chia_command(cmd, "temp_cmd", "blah")
|
|
773
|
+
@chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
|
|
775
774
|
class TempCMD(TransactionsOut):
|
|
776
775
|
def run(self) -> None:
|
|
777
776
|
self.handle_transaction_output([STD_TX])
|
|
@@ -797,8 +796,8 @@ class FooCoin(Streamable):
|
|
|
797
796
|
@staticmethod
|
|
798
797
|
def to_wallet_api(_from: FooCoin) -> Coin:
|
|
799
798
|
return Coin(
|
|
800
|
-
bytes32
|
|
801
|
-
bytes32
|
|
799
|
+
bytes32.zeros,
|
|
800
|
+
bytes32.zeros,
|
|
802
801
|
_from.amount,
|
|
803
802
|
)
|
|
804
803
|
|
|
@@ -822,9 +821,9 @@ def test_signer_protocol_in(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
|
822
821
|
def cmd() -> None:
|
|
823
822
|
pass
|
|
824
823
|
|
|
825
|
-
coin = Coin(bytes32
|
|
824
|
+
coin = Coin(bytes32.zeros, bytes32.zeros, uint64(13))
|
|
826
825
|
|
|
827
|
-
@chia_command(cmd, "temp_cmd", "blah")
|
|
826
|
+
@chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
|
|
828
827
|
class TempCMD(SPIn):
|
|
829
828
|
def run(self) -> None:
|
|
830
829
|
assert self.read_sp_input(Coin) == [coin, coin]
|
|
@@ -878,10 +877,10 @@ def test_signer_protocol_out(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
|
878
877
|
def cmd() -> None:
|
|
879
878
|
pass
|
|
880
879
|
|
|
881
|
-
coin = Coin(bytes32
|
|
880
|
+
coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
|
|
882
881
|
coin_bytes = byte_serialize_clvm_streamable(coin)
|
|
883
882
|
|
|
884
|
-
@chia_command(cmd, "temp_cmd", "blah")
|
|
883
|
+
@chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
|
|
885
884
|
class TempCMD(SPOut):
|
|
886
885
|
def run(self) -> None:
|
|
887
886
|
self.handle_clvm_output([coin, coin])
|
|
@@ -930,7 +929,7 @@ def test_qr_code_display() -> None:
|
|
|
930
929
|
|
|
931
930
|
bytes_to_encode = b"foo bar qat qux bam bat"
|
|
932
931
|
|
|
933
|
-
@chia_command(cmd, "temp_cmd", "blah")
|
|
932
|
+
@chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
|
|
934
933
|
class TempCMD(QrCodeDisplay):
|
|
935
934
|
def run(self) -> None:
|
|
936
935
|
self.display_qr_codes([bytes_to_encode, bytes_to_encode])
|