chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__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.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.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.0rc1.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
|
@@ -11,11 +11,12 @@ import random
|
|
|
11
11
|
import sqlite3
|
|
12
12
|
import sys
|
|
13
13
|
import time
|
|
14
|
+
from collections.abc import AsyncIterator
|
|
14
15
|
from copy import deepcopy
|
|
15
16
|
from dataclasses import dataclass
|
|
16
17
|
from enum import IntEnum
|
|
17
18
|
from pathlib import Path
|
|
18
|
-
from typing import Any,
|
|
19
|
+
from typing import Any, Optional, cast
|
|
19
20
|
|
|
20
21
|
import anyio
|
|
21
22
|
import pytest
|
|
@@ -66,6 +67,7 @@ from chia.util.config import save_config
|
|
|
66
67
|
from chia.util.hash import std_hash
|
|
67
68
|
from chia.util.ints import uint8, uint16, uint32, uint64
|
|
68
69
|
from chia.util.keychain import bytes_to_mnemonic
|
|
70
|
+
from chia.util.task_referencer import create_referenced_task
|
|
69
71
|
from chia.util.timing import adjusted_timeout, backoff_times
|
|
70
72
|
from chia.wallet.trading.offer import Offer as TradingOffer
|
|
71
73
|
from chia.wallet.transaction_record import TransactionRecord
|
|
@@ -73,10 +75,10 @@ from chia.wallet.wallet import Wallet
|
|
|
73
75
|
from chia.wallet.wallet_node import WalletNode
|
|
74
76
|
|
|
75
77
|
pytestmark = pytest.mark.data_layer
|
|
76
|
-
nodes =
|
|
77
|
-
nodes_with_port_bt_ph =
|
|
78
|
-
wallet_and_port_tuple =
|
|
79
|
-
two_wallets_with_port =
|
|
78
|
+
nodes = tuple[WalletNode, FullNodeSimulator]
|
|
79
|
+
nodes_with_port_bt_ph = tuple[WalletRpcApi, FullNodeSimulator, uint16, bytes32, BlockTools]
|
|
80
|
+
wallet_and_port_tuple = tuple[WalletNode, uint16]
|
|
81
|
+
two_wallets_with_port = tuple[tuple[wallet_and_port_tuple, wallet_and_port_tuple], FullNodeSimulator, BlockTools]
|
|
80
82
|
|
|
81
83
|
|
|
82
84
|
class InterfaceLayer(enum.Enum):
|
|
@@ -261,7 +263,7 @@ async def test_create_insert_get(
|
|
|
261
263
|
data_rpc_api = DataLayerRpcApi(data_layer)
|
|
262
264
|
key = b"a"
|
|
263
265
|
value = b"\x00\x01"
|
|
264
|
-
changelist:
|
|
266
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
|
|
265
267
|
res = await data_rpc_api.create_data_store({})
|
|
266
268
|
assert res is not None
|
|
267
269
|
store_id = bytes32.from_hexstr(res["id"])
|
|
@@ -319,7 +321,7 @@ async def test_create_insert_get(
|
|
|
319
321
|
await data_rpc_api.get_value({"id": store_id.hex(), "key": key.hex()})
|
|
320
322
|
wallet_root = await data_rpc_api.get_root({"id": store_id.hex()})
|
|
321
323
|
local_root = await data_rpc_api.get_local_root({"id": store_id.hex()})
|
|
322
|
-
assert wallet_root["hash"] == bytes32
|
|
324
|
+
assert wallet_root["hash"] == bytes32.zeros
|
|
323
325
|
assert local_root["hash"] is None
|
|
324
326
|
|
|
325
327
|
# test empty changelist
|
|
@@ -340,7 +342,7 @@ async def test_upsert(
|
|
|
340
342
|
data_rpc_api = DataLayerRpcApi(data_layer)
|
|
341
343
|
key = b"a"
|
|
342
344
|
value = b"\x00\x01"
|
|
343
|
-
changelist:
|
|
345
|
+
changelist: list[dict[str, str]] = [
|
|
344
346
|
{"action": "delete", "key": key.hex()},
|
|
345
347
|
{"action": "insert", "key": key.hex(), "value": value.hex()},
|
|
346
348
|
]
|
|
@@ -373,7 +375,7 @@ async def test_create_double_insert(
|
|
|
373
375
|
await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
|
|
374
376
|
key1 = b"a"
|
|
375
377
|
value1 = b"\x01\x02"
|
|
376
|
-
changelist:
|
|
378
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
|
|
377
379
|
res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
|
|
378
380
|
update_tx_rec0 = res["tx_id"]
|
|
379
381
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
@@ -411,7 +413,7 @@ async def test_keys_values_ancestors(
|
|
|
411
413
|
await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
|
|
412
414
|
key1 = b"a"
|
|
413
415
|
value1 = b"\x01\x02"
|
|
414
|
-
changelist:
|
|
416
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
|
|
415
417
|
key2 = b"b"
|
|
416
418
|
value2 = b"\x03\x02"
|
|
417
419
|
changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
|
|
@@ -492,7 +494,7 @@ async def test_get_roots(
|
|
|
492
494
|
|
|
493
495
|
key1 = b"a"
|
|
494
496
|
value1 = b"\x01\x02"
|
|
495
|
-
changelist:
|
|
497
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
|
|
496
498
|
key2 = b"b"
|
|
497
499
|
value2 = b"\x03\x02"
|
|
498
500
|
changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
|
|
@@ -504,7 +506,7 @@ async def test_get_roots(
|
|
|
504
506
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
505
507
|
roots = await data_rpc_api.get_roots({"ids": [store_id1.hex(), store_id2.hex()]})
|
|
506
508
|
assert roots["root_hashes"][1]["id"] == store_id2
|
|
507
|
-
assert roots["root_hashes"][1]["hash"] == bytes32
|
|
509
|
+
assert roots["root_hashes"][1]["hash"] == bytes32.zeros
|
|
508
510
|
assert roots["root_hashes"][1]["confirmed"] is True
|
|
509
511
|
assert roots["root_hashes"][1]["timestamp"] > 0
|
|
510
512
|
key4 = b"d"
|
|
@@ -519,7 +521,7 @@ async def test_get_roots(
|
|
|
519
521
|
roots = await data_rpc_api.get_roots({"ids": [store_id1.hex(), store_id2.hex()]})
|
|
520
522
|
assert roots["root_hashes"][1]["id"] == store_id2
|
|
521
523
|
assert roots["root_hashes"][1]["hash"] is not None
|
|
522
|
-
assert roots["root_hashes"][1]["hash"] != bytes32
|
|
524
|
+
assert roots["root_hashes"][1]["hash"] != bytes32.zeros
|
|
523
525
|
assert roots["root_hashes"][1]["confirmed"] is True
|
|
524
526
|
assert roots["root_hashes"][1]["timestamp"] > 0
|
|
525
527
|
|
|
@@ -539,7 +541,7 @@ async def test_get_root_history(
|
|
|
539
541
|
await farm_block_check_singleton(data_layer, full_node_api, ph, store_id1, wallet=wallet_rpc_api.service)
|
|
540
542
|
key1 = b"a"
|
|
541
543
|
value1 = b"\x01\x02"
|
|
542
|
-
changelist:
|
|
544
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
|
|
543
545
|
key2 = b"b"
|
|
544
546
|
value2 = b"\x03\x02"
|
|
545
547
|
changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
|
|
@@ -551,10 +553,10 @@ async def test_get_root_history(
|
|
|
551
553
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
552
554
|
history1 = await data_rpc_api.get_root_history({"id": store_id1.hex()})
|
|
553
555
|
assert len(history1["root_history"]) == 2
|
|
554
|
-
assert history1["root_history"][0]["root_hash"] == bytes32
|
|
556
|
+
assert history1["root_history"][0]["root_hash"] == bytes32.zeros
|
|
555
557
|
assert history1["root_history"][0]["confirmed"] is True
|
|
556
558
|
assert history1["root_history"][0]["timestamp"] > 0
|
|
557
|
-
assert history1["root_history"][1]["root_hash"] != bytes32
|
|
559
|
+
assert history1["root_history"][1]["root_hash"] != bytes32.zeros
|
|
558
560
|
assert history1["root_history"][1]["confirmed"] is True
|
|
559
561
|
assert history1["root_history"][1]["timestamp"] > 0
|
|
560
562
|
key4 = b"d"
|
|
@@ -568,7 +570,7 @@ async def test_get_root_history(
|
|
|
568
570
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec1, wallet_rpc_api)
|
|
569
571
|
history2 = await data_rpc_api.get_root_history({"id": store_id1.hex()})
|
|
570
572
|
assert len(history2["root_history"]) == 3
|
|
571
|
-
assert history2["root_history"][0]["root_hash"] == bytes32
|
|
573
|
+
assert history2["root_history"][0]["root_hash"] == bytes32.zeros
|
|
572
574
|
assert history2["root_history"][0]["confirmed"] is True
|
|
573
575
|
assert history2["root_history"][0]["timestamp"] > 0
|
|
574
576
|
assert history2["root_history"][1]["root_hash"] == history1["root_history"][1]["root_hash"]
|
|
@@ -593,7 +595,7 @@ async def test_get_kv_diff(
|
|
|
593
595
|
await farm_block_check_singleton(data_layer, full_node_api, ph, store_id1, wallet=wallet_rpc_api.service)
|
|
594
596
|
key1 = b"a"
|
|
595
597
|
value1 = b"\x01\x02"
|
|
596
|
-
changelist:
|
|
598
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
|
|
597
599
|
key2 = b"b"
|
|
598
600
|
value2 = b"\x03\x02"
|
|
599
601
|
changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
|
|
@@ -607,7 +609,7 @@ async def test_get_kv_diff(
|
|
|
607
609
|
diff_res = await data_rpc_api.get_kv_diff(
|
|
608
610
|
{
|
|
609
611
|
"id": store_id1.hex(),
|
|
610
|
-
"hash_1": bytes32
|
|
612
|
+
"hash_1": bytes32.zeros.hex(),
|
|
611
613
|
"hash_2": history["root_history"][1]["root_hash"].hex(),
|
|
612
614
|
}
|
|
613
615
|
)
|
|
@@ -661,7 +663,7 @@ async def test_batch_update_matches_single_operations(
|
|
|
661
663
|
|
|
662
664
|
key = b"a"
|
|
663
665
|
value = b"\x00\x01"
|
|
664
|
-
changelist:
|
|
666
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
|
|
665
667
|
res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
|
|
666
668
|
update_tx_rec0 = res["tx_id"]
|
|
667
669
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
@@ -687,7 +689,7 @@ async def test_batch_update_matches_single_operations(
|
|
|
687
689
|
|
|
688
690
|
root_1 = await data_rpc_api.get_roots({"ids": [store_id.hex()]})
|
|
689
691
|
expected_res_hash = root_1["root_hashes"][0]["hash"]
|
|
690
|
-
assert expected_res_hash != bytes32
|
|
692
|
+
assert expected_res_hash != bytes32.zeros
|
|
691
693
|
|
|
692
694
|
changelist = [{"action": "delete", "key": key_2.hex()}]
|
|
693
695
|
res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
|
|
@@ -701,7 +703,7 @@ async def test_batch_update_matches_single_operations(
|
|
|
701
703
|
|
|
702
704
|
root_2 = await data_rpc_api.get_roots({"ids": [store_id.hex()]})
|
|
703
705
|
hash_2 = root_2["root_hashes"][0]["hash"]
|
|
704
|
-
assert hash_2 == bytes32
|
|
706
|
+
assert hash_2 == bytes32.zeros
|
|
705
707
|
|
|
706
708
|
changelist = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
|
|
707
709
|
changelist.append({"action": "insert", "key": key_2.hex(), "value": value_2.hex()})
|
|
@@ -824,7 +826,7 @@ async def offer_setup_fixture(
|
|
|
824
826
|
[full_node_service], wallet_services, bt = two_wallet_nodes_services
|
|
825
827
|
enable_batch_autoinsertion_settings = getattr(request, "param", (True, True))
|
|
826
828
|
full_node_api = full_node_service._api
|
|
827
|
-
wallets:
|
|
829
|
+
wallets: list[Wallet] = []
|
|
828
830
|
for wallet_service in wallet_services:
|
|
829
831
|
wallet_node = wallet_service._node
|
|
830
832
|
assert wallet_node.server is not None
|
|
@@ -836,7 +838,7 @@ async def offer_setup_fixture(
|
|
|
836
838
|
await full_node_api.farm_blocks_to_wallet(count=1, wallet=wallet, timeout=60)
|
|
837
839
|
|
|
838
840
|
async with contextlib.AsyncExitStack() as exit_stack:
|
|
839
|
-
store_setups:
|
|
841
|
+
store_setups: list[StoreSetup] = []
|
|
840
842
|
for enable_batch_autoinsert, wallet_service in zip(enable_batch_autoinsertion_settings, wallet_services):
|
|
841
843
|
assert wallet_service.rpc_server is not None
|
|
842
844
|
port = wallet_service.rpc_server.listen_port
|
|
@@ -866,7 +868,7 @@ async def offer_setup_fixture(
|
|
|
866
868
|
StoreSetup(
|
|
867
869
|
api=data_rpc_api,
|
|
868
870
|
id=bytes32.from_hexstr(create_response["id"]),
|
|
869
|
-
original_hash=bytes32
|
|
871
|
+
original_hash=bytes32.zeros,
|
|
870
872
|
data_layer=data_layer,
|
|
871
873
|
data_rpc_client=data_rpc_client,
|
|
872
874
|
)
|
|
@@ -928,7 +930,7 @@ async def offer_setup_fixture(
|
|
|
928
930
|
|
|
929
931
|
async def populate_offer_setup(offer_setup: OfferSetup, count: int) -> OfferSetup:
|
|
930
932
|
if count > 0:
|
|
931
|
-
setups:
|
|
933
|
+
setups: tuple[tuple[StoreSetup, bytes], tuple[StoreSetup, bytes]] = (
|
|
932
934
|
(offer_setup.maker, b"\x01"),
|
|
933
935
|
(offer_setup.taker, b"\x02"),
|
|
934
936
|
)
|
|
@@ -1014,11 +1016,11 @@ async def process_for_data_layer_keys(
|
|
|
1014
1016
|
@dataclass(frozen=True)
|
|
1015
1017
|
class MakeAndTakeReference:
|
|
1016
1018
|
entries_to_insert: int
|
|
1017
|
-
make_offer_response:
|
|
1018
|
-
maker_inclusions:
|
|
1019
|
-
maker_root_history:
|
|
1020
|
-
taker_inclusions:
|
|
1021
|
-
taker_root_history:
|
|
1019
|
+
make_offer_response: dict[str, Any]
|
|
1020
|
+
maker_inclusions: list[dict[str, Any]]
|
|
1021
|
+
maker_root_history: list[bytes32]
|
|
1022
|
+
taker_inclusions: list[dict[str, Any]]
|
|
1023
|
+
taker_root_history: list[bytes32]
|
|
1022
1024
|
trade_id: str
|
|
1023
1025
|
|
|
1024
1026
|
|
|
@@ -1649,13 +1651,13 @@ async def test_make_and_take_offer(offer_setup: OfferSetup, reference: MakeAndTa
|
|
|
1649
1651
|
|
|
1650
1652
|
assert [generation["confirmed"] for generation in maker_history] == [True] * len(maker_history)
|
|
1651
1653
|
assert [generation["root_hash"] for generation in maker_history] == [
|
|
1652
|
-
bytes32
|
|
1654
|
+
bytes32.zeros,
|
|
1653
1655
|
*reference.maker_root_history,
|
|
1654
1656
|
]
|
|
1655
1657
|
|
|
1656
1658
|
assert [generation["confirmed"] for generation in taker_history] == [True] * len(taker_history)
|
|
1657
1659
|
assert [generation["root_hash"] for generation in taker_history] == [
|
|
1658
|
-
bytes32
|
|
1660
|
+
bytes32.zeros,
|
|
1659
1661
|
*reference.taker_root_history,
|
|
1660
1662
|
]
|
|
1661
1663
|
|
|
@@ -1752,7 +1754,7 @@ async def test_make_offer_failure_rolls_back_db(offer_setup: OfferSetup) -> None
|
|
|
1752
1754
|
"inclusions": reference.maker_inclusions,
|
|
1753
1755
|
},
|
|
1754
1756
|
{
|
|
1755
|
-
"store_id": bytes32
|
|
1757
|
+
"store_id": bytes32.zeros.hex(),
|
|
1756
1758
|
"inclusions": [],
|
|
1757
1759
|
},
|
|
1758
1760
|
],
|
|
@@ -2004,7 +2006,7 @@ async def test_get_sync_status(
|
|
|
2004
2006
|
|
|
2005
2007
|
key = b"a"
|
|
2006
2008
|
value = b"\x00\x01"
|
|
2007
|
-
changelist:
|
|
2009
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
|
|
2008
2010
|
res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
|
|
2009
2011
|
update_tx_rec0 = res["tx_id"]
|
|
2010
2012
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
@@ -2053,7 +2055,7 @@ async def test_clear_pending_roots(
|
|
|
2053
2055
|
layer: InterfaceLayer,
|
|
2054
2056
|
bt: BlockTools,
|
|
2055
2057
|
) -> None:
|
|
2056
|
-
|
|
2058
|
+
_wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
|
|
2057
2059
|
self_hostname, one_wallet_and_one_simulator_services
|
|
2058
2060
|
)
|
|
2059
2061
|
async with init_data_layer_service(wallet_rpc_port=wallet_rpc_port, bt=bt, db_path=tmp_path) as data_layer_service:
|
|
@@ -2093,7 +2095,7 @@ async def test_clear_pending_roots(
|
|
|
2093
2095
|
root_path=bt.root_path,
|
|
2094
2096
|
)
|
|
2095
2097
|
elif layer == InterfaceLayer.cli:
|
|
2096
|
-
args:
|
|
2098
|
+
args: list[str] = [
|
|
2097
2099
|
sys.executable,
|
|
2098
2100
|
"-m",
|
|
2099
2101
|
"chia",
|
|
@@ -2124,17 +2126,13 @@ async def test_clear_pending_roots(
|
|
|
2124
2126
|
# https://github.com/python/cpython/issues/92841
|
|
2125
2127
|
assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
|
|
2126
2128
|
elif layer == InterfaceLayer.client:
|
|
2127
|
-
|
|
2129
|
+
async with DataLayerRpcClient.create_as_context(
|
|
2128
2130
|
self_hostname=self_hostname,
|
|
2129
2131
|
port=rpc_port,
|
|
2130
2132
|
root_path=bt.root_path,
|
|
2131
2133
|
net_config=bt.config,
|
|
2132
|
-
)
|
|
2133
|
-
try:
|
|
2134
|
+
) as client:
|
|
2134
2135
|
cleared_root = await client.clear_pending_roots(store_id=store_id)
|
|
2135
|
-
finally:
|
|
2136
|
-
client.close()
|
|
2137
|
-
await client.await_closed()
|
|
2138
2136
|
else: # pragma: no cover
|
|
2139
2137
|
assert False, "unhandled parametrization"
|
|
2140
2138
|
|
|
@@ -2146,7 +2144,7 @@ async def test_clear_pending_roots(
|
|
|
2146
2144
|
async def test_issue_15955_deadlock(
|
|
2147
2145
|
self_hostname: str, one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, tmp_path: Path
|
|
2148
2146
|
) -> None:
|
|
2149
|
-
wallet_rpc_api, full_node_api, wallet_rpc_port,
|
|
2147
|
+
wallet_rpc_api, full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
|
|
2150
2148
|
self_hostname, one_wallet_and_one_simulator_services
|
|
2151
2149
|
)
|
|
2152
2150
|
|
|
@@ -2194,7 +2192,7 @@ async def test_issue_15955_deadlock(
|
|
|
2194
2192
|
while time.monotonic() < end:
|
|
2195
2193
|
with anyio.fail_after(adjusted_timeout(timeout)):
|
|
2196
2194
|
await asyncio.gather(
|
|
2197
|
-
*(
|
|
2195
|
+
*(create_referenced_task(data_layer.get_value(store_id=store_id, key=key)) for _ in range(10))
|
|
2198
2196
|
)
|
|
2199
2197
|
|
|
2200
2198
|
|
|
@@ -2223,7 +2221,7 @@ async def test_maximum_full_file_count(
|
|
|
2223
2221
|
) as data_layer:
|
|
2224
2222
|
data_rpc_api = DataLayerRpcApi(data_layer)
|
|
2225
2223
|
res = await data_rpc_api.create_data_store({})
|
|
2226
|
-
root_hashes:
|
|
2224
|
+
root_hashes: list[bytes32] = []
|
|
2227
2225
|
assert res is not None
|
|
2228
2226
|
store_id = bytes32.from_hexstr(res["id"])
|
|
2229
2227
|
await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
|
|
@@ -2304,7 +2302,7 @@ async def test_unsubscribe_removes_files(
|
|
|
2304
2302
|
) as data_layer:
|
|
2305
2303
|
data_rpc_api = DataLayerRpcApi(data_layer)
|
|
2306
2304
|
res = await data_rpc_api.create_data_store({})
|
|
2307
|
-
root_hashes:
|
|
2305
|
+
root_hashes: list[bytes32] = []
|
|
2308
2306
|
assert res is not None
|
|
2309
2307
|
store_id = bytes32.from_hexstr(res["id"])
|
|
2310
2308
|
await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
|
|
@@ -2365,7 +2363,7 @@ async def test_wallet_log_in_changes_active_fingerprint(
|
|
|
2365
2363
|
one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices,
|
|
2366
2364
|
layer: InterfaceLayer,
|
|
2367
2365
|
) -> None:
|
|
2368
|
-
wallet_rpc_api,
|
|
2366
|
+
wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
|
|
2369
2367
|
self_hostname, one_wallet_and_one_simulator_services
|
|
2370
2368
|
)
|
|
2371
2369
|
primary_fingerprint = cast(int, (await wallet_rpc_api.get_logged_in_fingerprint(request={}))["fingerprint"])
|
|
@@ -2391,17 +2389,13 @@ async def test_wallet_log_in_changes_active_fingerprint(
|
|
|
2391
2389
|
if layer == InterfaceLayer.direct:
|
|
2392
2390
|
await data_rpc_api.wallet_log_in({"fingerprint": secondary_fingerprint})
|
|
2393
2391
|
elif layer == InterfaceLayer.client:
|
|
2394
|
-
|
|
2392
|
+
async with DataLayerRpcClient.create_as_context(
|
|
2395
2393
|
self_hostname=self_hostname,
|
|
2396
2394
|
port=rpc_port,
|
|
2397
2395
|
root_path=bt.root_path,
|
|
2398
2396
|
net_config=bt.config,
|
|
2399
|
-
)
|
|
2400
|
-
try:
|
|
2397
|
+
) as client:
|
|
2401
2398
|
await client.wallet_log_in(fingerprint=secondary_fingerprint)
|
|
2402
|
-
finally:
|
|
2403
|
-
client.close()
|
|
2404
|
-
await client.await_closed()
|
|
2405
2399
|
elif layer == InterfaceLayer.funcs:
|
|
2406
2400
|
await wallet_log_in_cmd(rpc_port=rpc_port, fingerprint=secondary_fingerprint, root_path=bt.root_path)
|
|
2407
2401
|
elif layer == InterfaceLayer.cli:
|
|
@@ -2462,8 +2456,8 @@ async def test_mirrors(
|
|
|
2462
2456
|
@dataclass(frozen=True)
|
|
2463
2457
|
class ProofReference:
|
|
2464
2458
|
entries_to_insert: int
|
|
2465
|
-
keys_to_prove:
|
|
2466
|
-
verify_proof_response:
|
|
2459
|
+
keys_to_prove: list[str]
|
|
2460
|
+
verify_proof_response: dict[str, Any]
|
|
2467
2461
|
|
|
2468
2462
|
|
|
2469
2463
|
def populate_reference(count: int, keys_to_prove: int) -> ProofReference:
|
|
@@ -2530,7 +2524,7 @@ async def populate_proof_setup(offer_setup: OfferSetup, count: int) -> OfferSetu
|
|
|
2530
2524
|
taker=StoreSetup(
|
|
2531
2525
|
api=offer_setup.taker.api,
|
|
2532
2526
|
id=offer_setup.taker.id,
|
|
2533
|
-
original_hash=bytes32
|
|
2527
|
+
original_hash=bytes32.zeros,
|
|
2534
2528
|
data_layer=offer_setup.taker.data_layer,
|
|
2535
2529
|
data_rpc_client=offer_setup.taker.data_rpc_client,
|
|
2536
2530
|
),
|
|
@@ -2612,7 +2606,7 @@ async def test_dl_proof(offer_setup: OfferSetup, reference: ProofReference) -> N
|
|
|
2612
2606
|
assert verify == reference.verify_proof_response
|
|
2613
2607
|
|
|
2614
2608
|
# test InterfaceLayer.cli
|
|
2615
|
-
key_args:
|
|
2609
|
+
key_args: list[str] = []
|
|
2616
2610
|
for key in reference.keys_to_prove:
|
|
2617
2611
|
key_args.append("--key")
|
|
2618
2612
|
key_args.append(key)
|
|
@@ -2669,7 +2663,7 @@ async def test_dl_proof_errors(
|
|
|
2669
2663
|
with pytest.raises(Exception, match="No generations found"):
|
|
2670
2664
|
await data_rpc_api.get_proof(request={"store_id": store_id.hex(), "keys": [b"4".hex()]})
|
|
2671
2665
|
|
|
2672
|
-
changelist:
|
|
2666
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": b"a".hex(), "value": b"\x00\x01".hex()}]
|
|
2673
2667
|
res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
|
|
2674
2668
|
update_tx_rec0 = res["tx_id"]
|
|
2675
2669
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
@@ -2741,7 +2735,7 @@ async def test_dl_proof_changed_root(offer_setup: OfferSetup, seeded_random: ran
|
|
|
2741
2735
|
|
|
2742
2736
|
key = b"a"
|
|
2743
2737
|
value = b"\x00\x01"
|
|
2744
|
-
changelist:
|
|
2738
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
|
|
2745
2739
|
await offer_setup.maker.api.batch_update({"id": offer_setup.maker.id.hex(), "changelist": changelist})
|
|
2746
2740
|
|
|
2747
2741
|
await process_for_data_layer_keys(
|
|
@@ -2775,7 +2769,7 @@ async def test_pagination_rpcs(
|
|
|
2775
2769
|
value1 = b"\x01\x02"
|
|
2776
2770
|
key1_hash = key_hash(key1)
|
|
2777
2771
|
leaf_hash1 = leaf_hash(key1, value1)
|
|
2778
|
-
changelist:
|
|
2772
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
|
|
2779
2773
|
key2 = b"ba"
|
|
2780
2774
|
value2 = b"\x03\x02"
|
|
2781
2775
|
key2_hash = key_hash(key2)
|
|
@@ -3052,7 +3046,7 @@ async def test_pagination_cmds(
|
|
|
3052
3046
|
update_tx_rec0 = res["tx_id"]
|
|
3053
3047
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
3054
3048
|
local_root = await data_rpc_api.get_local_root({"id": store_id.hex()})
|
|
3055
|
-
hash_1 = bytes32
|
|
3049
|
+
hash_1 = bytes32.zeros
|
|
3056
3050
|
hash_2 = local_root["hash"]
|
|
3057
3051
|
# `InterfaceLayer.direct` is not tested here since test `test_pagination_rpcs` extensively use it.
|
|
3058
3052
|
if layer == InterfaceLayer.funcs:
|
|
@@ -3086,8 +3080,8 @@ async def test_pagination_cmds(
|
|
|
3086
3080
|
)
|
|
3087
3081
|
elif layer == InterfaceLayer.cli:
|
|
3088
3082
|
for command in ("get_keys", "get_keys_values", "get_kv_diff"):
|
|
3089
|
-
if command
|
|
3090
|
-
args:
|
|
3083
|
+
if command in {"get_keys", "get_keys_values"}:
|
|
3084
|
+
args: list[str] = [
|
|
3091
3085
|
sys.executable,
|
|
3092
3086
|
"-m",
|
|
3093
3087
|
"chia",
|
|
@@ -3145,13 +3139,12 @@ async def test_pagination_cmds(
|
|
|
3145
3139
|
# https://github.com/python/cpython/issues/92841
|
|
3146
3140
|
assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
|
|
3147
3141
|
elif layer == InterfaceLayer.client:
|
|
3148
|
-
|
|
3142
|
+
async with DataLayerRpcClient.create_as_context(
|
|
3149
3143
|
self_hostname=self_hostname,
|
|
3150
3144
|
port=rpc_port,
|
|
3151
3145
|
root_path=bt.root_path,
|
|
3152
3146
|
net_config=bt.config,
|
|
3153
|
-
)
|
|
3154
|
-
try:
|
|
3147
|
+
) as client:
|
|
3155
3148
|
keys = await client.get_keys(
|
|
3156
3149
|
store_id=store_id,
|
|
3157
3150
|
root_hash=None,
|
|
@@ -3171,9 +3164,6 @@ async def test_pagination_cmds(
|
|
|
3171
3164
|
page=0,
|
|
3172
3165
|
max_page_size=max_page_size,
|
|
3173
3166
|
)
|
|
3174
|
-
finally:
|
|
3175
|
-
client.close()
|
|
3176
|
-
await client.await_closed()
|
|
3177
3167
|
else: # pragma: no cover
|
|
3178
3168
|
assert False, "unhandled parametrization"
|
|
3179
3169
|
if max_page_size is None or max_page_size == 100:
|
|
@@ -3276,7 +3266,7 @@ async def test_unsubmitted_batch_update(
|
|
|
3276
3266
|
|
|
3277
3267
|
to_insert = [(b"a", b"\x00\x01"), (b"b", b"\x00\x02"), (b"c", b"\x00\x03")]
|
|
3278
3268
|
for key, value in to_insert:
|
|
3279
|
-
changelist:
|
|
3269
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
|
|
3280
3270
|
|
|
3281
3271
|
if layer == InterfaceLayer.direct:
|
|
3282
3272
|
res = await data_rpc_api.batch_update(
|
|
@@ -3295,7 +3285,7 @@ async def test_unsubmitted_batch_update(
|
|
|
3295
3285
|
)
|
|
3296
3286
|
assert res == {"success": True}
|
|
3297
3287
|
elif layer == InterfaceLayer.cli:
|
|
3298
|
-
args:
|
|
3288
|
+
args: list[str] = [
|
|
3299
3289
|
sys.executable,
|
|
3300
3290
|
"-m",
|
|
3301
3291
|
"chia",
|
|
@@ -3329,13 +3319,12 @@ async def test_unsubmitted_batch_update(
|
|
|
3329
3319
|
assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
|
|
3330
3320
|
assert res == {"success": True}
|
|
3331
3321
|
elif layer == InterfaceLayer.client:
|
|
3332
|
-
|
|
3322
|
+
async with DataLayerRpcClient.create_as_context(
|
|
3333
3323
|
self_hostname=self_hostname,
|
|
3334
3324
|
port=rpc_port,
|
|
3335
3325
|
root_path=bt.root_path,
|
|
3336
3326
|
net_config=bt.config,
|
|
3337
|
-
)
|
|
3338
|
-
try:
|
|
3327
|
+
) as client:
|
|
3339
3328
|
res = await client.update_data_store(
|
|
3340
3329
|
store_id=store_id,
|
|
3341
3330
|
changelist=changelist,
|
|
@@ -3343,9 +3332,6 @@ async def test_unsubmitted_batch_update(
|
|
|
3343
3332
|
submit_on_chain=False,
|
|
3344
3333
|
)
|
|
3345
3334
|
assert res == {"success": True}
|
|
3346
|
-
finally:
|
|
3347
|
-
client.close()
|
|
3348
|
-
await client.await_closed()
|
|
3349
3335
|
else: # pragma: no cover
|
|
3350
3336
|
assert False, "unhandled parametrization"
|
|
3351
3337
|
|
|
@@ -3472,18 +3458,14 @@ async def test_unsubmitted_batch_update(
|
|
|
3472
3458
|
assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
|
|
3473
3459
|
update_tx_rec1 = bytes32.from_hexstr(res["tx_id"])
|
|
3474
3460
|
elif layer == InterfaceLayer.client:
|
|
3475
|
-
|
|
3461
|
+
async with DataLayerRpcClient.create_as_context(
|
|
3476
3462
|
self_hostname=self_hostname,
|
|
3477
3463
|
port=rpc_port,
|
|
3478
3464
|
root_path=bt.root_path,
|
|
3479
3465
|
net_config=bt.config,
|
|
3480
|
-
)
|
|
3481
|
-
try:
|
|
3466
|
+
) as client:
|
|
3482
3467
|
res = await client.submit_pending_root(store_id=store_id, fee=None)
|
|
3483
3468
|
update_tx_rec1 = bytes32.from_hexstr(res["tx_id"])
|
|
3484
|
-
finally:
|
|
3485
|
-
client.close()
|
|
3486
|
-
await client.await_closed()
|
|
3487
3469
|
else: # pragma: no cover
|
|
3488
3470
|
assert False, "unhandled parametrization"
|
|
3489
3471
|
|
|
@@ -3535,7 +3517,7 @@ async def test_multistore_update(
|
|
|
3535
3517
|
data_store = data_layer.data_store
|
|
3536
3518
|
data_rpc_api = DataLayerRpcApi(data_layer)
|
|
3537
3519
|
|
|
3538
|
-
store_ids:
|
|
3520
|
+
store_ids: list[bytes32] = []
|
|
3539
3521
|
store_ids_count = 5
|
|
3540
3522
|
|
|
3541
3523
|
for _ in range(store_ids_count):
|
|
@@ -3545,10 +3527,10 @@ async def test_multistore_update(
|
|
|
3545
3527
|
await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
|
|
3546
3528
|
store_ids.append(store_id)
|
|
3547
3529
|
|
|
3548
|
-
store_updates:
|
|
3530
|
+
store_updates: list[dict[str, Any]] = []
|
|
3549
3531
|
key_offset = 1000
|
|
3550
3532
|
for index, store_id in enumerate(store_ids):
|
|
3551
|
-
changelist:
|
|
3533
|
+
changelist: list[dict[str, str]] = []
|
|
3552
3534
|
key = index.to_bytes(2, "big")
|
|
3553
3535
|
value = index.to_bytes(2, "big")
|
|
3554
3536
|
changelist.append({"action": "insert", "key": key.hex(), "value": value.hex()})
|
|
@@ -3734,7 +3716,7 @@ async def test_unsubmitted_batch_db_migration(
|
|
|
3734
3716
|
|
|
3735
3717
|
key = b"0000"
|
|
3736
3718
|
value = b"0000"
|
|
3737
|
-
changelist:
|
|
3719
|
+
changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
|
|
3738
3720
|
res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
|
|
3739
3721
|
update_tx_rec0 = res["tx_id"]
|
|
3740
3722
|
await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
|
|
@@ -3788,16 +3770,16 @@ async def test_auto_subscribe_to_local_stores(
|
|
|
3788
3770
|
monkeypatch: Any,
|
|
3789
3771
|
auto_subscribe_to_local_stores: bool,
|
|
3790
3772
|
) -> None:
|
|
3791
|
-
|
|
3773
|
+
_wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
|
|
3792
3774
|
self_hostname, one_wallet_and_one_simulator_services
|
|
3793
3775
|
)
|
|
3794
3776
|
manage_data_interval = 5
|
|
3795
3777
|
fake_store = bytes32([1] * 32)
|
|
3796
3778
|
|
|
3797
|
-
async def mock_get_store_ids(self: Any) ->
|
|
3779
|
+
async def mock_get_store_ids(self: Any) -> set[bytes32]:
|
|
3798
3780
|
return {fake_store}
|
|
3799
3781
|
|
|
3800
|
-
async def mock_dl_track_new(self: Any, request:
|
|
3782
|
+
async def mock_dl_track_new(self: Any, request: dict[str, Any]) -> dict[str, Any]:
|
|
3801
3783
|
# ignore and just return empty response
|
|
3802
3784
|
return {}
|
|
3803
3785
|
|
|
@@ -3837,13 +3819,13 @@ async def test_local_store_exception(
|
|
|
3837
3819
|
monkeypatch: Any,
|
|
3838
3820
|
caplog: pytest.LogCaptureFixture,
|
|
3839
3821
|
) -> None:
|
|
3840
|
-
|
|
3822
|
+
_wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
|
|
3841
3823
|
self_hostname, one_wallet_and_one_simulator_services
|
|
3842
3824
|
)
|
|
3843
3825
|
manage_data_interval = 5
|
|
3844
3826
|
fake_store = bytes32([1] * 32)
|
|
3845
3827
|
|
|
3846
|
-
async def mock_get_store_ids(self: Any) ->
|
|
3828
|
+
async def mock_get_store_ids(self: Any) -> set[bytes32]:
|
|
3847
3829
|
return {fake_store}
|
|
3848
3830
|
|
|
3849
3831
|
with monkeypatch.context() as m, caplog.at_level(logging.INFO):
|