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
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import dataclasses
|
|
4
|
-
from
|
|
4
|
+
from collections.abc import Awaitable
|
|
5
|
+
from typing import Any, Callable, Optional
|
|
5
6
|
|
|
6
7
|
import pytest
|
|
7
8
|
from chia_rs import G2Element
|
|
@@ -9,6 +10,7 @@ from typing_extensions import Literal
|
|
|
9
10
|
|
|
10
11
|
from chia._tests.environments.wallet import WalletEnvironment, WalletStateTransition, WalletTestFramework
|
|
11
12
|
from chia._tests.util.time_out_assert import time_out_assert_not_none
|
|
13
|
+
from chia.rpc.wallet_request_types import VCAddProofs, VCGet, VCGetList, VCGetProofsForRoot, VCMint, VCRevoke, VCSpend
|
|
12
14
|
from chia.rpc.wallet_rpc_client import WalletRpcClient
|
|
13
15
|
from chia.simulator.full_node_simulator import FullNodeSimulator
|
|
14
16
|
from chia.types.blockchain_format.coin import coin_as_list
|
|
@@ -39,7 +41,7 @@ async def mint_cr_cat(
|
|
|
39
41
|
wallet_node_0: WalletNode,
|
|
40
42
|
client_0: WalletRpcClient,
|
|
41
43
|
full_node_api: FullNodeSimulator,
|
|
42
|
-
authorized_providers:
|
|
44
|
+
authorized_providers: list[bytes32] = [],
|
|
43
45
|
tail: Program = Program.to(None),
|
|
44
46
|
proofs_checker: ProofsChecker = ProofsChecker(["foo", "bar"]),
|
|
45
47
|
) -> None:
|
|
@@ -161,10 +163,13 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
161
163
|
# Mint a VC
|
|
162
164
|
vc_record = (
|
|
163
165
|
await client_0.vc_mint(
|
|
164
|
-
|
|
166
|
+
VCMint(
|
|
167
|
+
did_id=encode_puzzle_hash(did_id, "did"),
|
|
168
|
+
target_address=encode_puzzle_hash(await wallet_0.get_new_puzzlehash(), "txch"),
|
|
169
|
+
fee=uint64(1_750_000_000_000),
|
|
170
|
+
push=True,
|
|
171
|
+
),
|
|
165
172
|
wallet_environments.tx_config,
|
|
166
|
-
target_address=await wallet_0.get_new_puzzlehash(),
|
|
167
|
-
fee=uint64(1_750_000_000_000),
|
|
168
173
|
)
|
|
169
174
|
).vc_record
|
|
170
175
|
|
|
@@ -179,7 +184,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
179
184
|
# One existing coin has been removed and two ephemeral coins have been removed
|
|
180
185
|
# Does pending_coin_removal_count attempt to show the number of current pending removals
|
|
181
186
|
# Or does it intend to just mean all pending removals that we should eventually get states for?
|
|
182
|
-
"pending_coin_removal_count":
|
|
187
|
+
"pending_coin_removal_count": 3,
|
|
183
188
|
"<=#spendable_balance": -1_750_000_000_002,
|
|
184
189
|
"<=#max_send_amount": -1_750_000_000_002,
|
|
185
190
|
"set_remainder": True,
|
|
@@ -200,7 +205,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
200
205
|
"xch": {
|
|
201
206
|
# 1_750_000_000_000 for VC mint fee, 1 for VC singleton, 1 for DID mint
|
|
202
207
|
"confirmed_wallet_balance": -1_750_000_000_002,
|
|
203
|
-
"pending_coin_removal_count": -
|
|
208
|
+
"pending_coin_removal_count": -3, # 3 for VC mint, 1 for DID mint
|
|
204
209
|
"set_remainder": True,
|
|
205
210
|
},
|
|
206
211
|
"did": {
|
|
@@ -214,17 +219,20 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
214
219
|
WalletStateTransition(),
|
|
215
220
|
]
|
|
216
221
|
)
|
|
217
|
-
new_vc_record: Optional[VCRecord] = await client_0.vc_get(vc_record.vc.launcher_id)
|
|
222
|
+
new_vc_record: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
|
|
218
223
|
assert new_vc_record is not None
|
|
219
224
|
|
|
220
225
|
# Spend VC
|
|
221
226
|
proofs: VCProofs = VCProofs({"foo": "1", "bar": "1", "baz": "1", "qux": "1", "grault": "1"})
|
|
222
227
|
proof_root: bytes32 = proofs.root()
|
|
223
228
|
await client_0.vc_spend(
|
|
224
|
-
|
|
229
|
+
VCSpend(
|
|
230
|
+
vc_id=vc_record.vc.launcher_id,
|
|
231
|
+
new_proof_hash=proof_root,
|
|
232
|
+
fee=uint64(100),
|
|
233
|
+
push=True,
|
|
234
|
+
),
|
|
225
235
|
wallet_environments.tx_config,
|
|
226
|
-
new_proof_hash=proof_root,
|
|
227
|
-
fee=uint64(100),
|
|
228
236
|
)
|
|
229
237
|
await wallet_environments.process_pending_states(
|
|
230
238
|
[
|
|
@@ -241,6 +249,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
241
249
|
"spendable_balance": -1,
|
|
242
250
|
"pending_change": 1,
|
|
243
251
|
"pending_coin_removal_count": 1,
|
|
252
|
+
"max_send_amount": -1,
|
|
244
253
|
},
|
|
245
254
|
"vc": {
|
|
246
255
|
"pending_coin_removal_count": 1,
|
|
@@ -256,6 +265,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
256
265
|
"spendable_balance": 1,
|
|
257
266
|
"pending_change": -1,
|
|
258
267
|
"pending_coin_removal_count": -1,
|
|
268
|
+
"max_send_amount": 1,
|
|
259
269
|
},
|
|
260
270
|
"vc": {
|
|
261
271
|
"pending_coin_removal_count": -1,
|
|
@@ -265,12 +275,12 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
265
275
|
WalletStateTransition(),
|
|
266
276
|
]
|
|
267
277
|
)
|
|
268
|
-
vc_record_updated: Optional[VCRecord] = await client_0.vc_get(vc_record.vc.launcher_id)
|
|
278
|
+
vc_record_updated: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
|
|
269
279
|
assert vc_record_updated is not None
|
|
270
280
|
assert vc_record_updated.vc.proof_hash == proof_root
|
|
271
281
|
|
|
272
282
|
# Do a mundane spend
|
|
273
|
-
await client_0.vc_spend(vc_record.vc.launcher_id, wallet_environments.tx_config)
|
|
283
|
+
await client_0.vc_spend(VCSpend(vc_id=vc_record.vc.launcher_id, push=True), wallet_environments.tx_config)
|
|
274
284
|
await wallet_environments.process_pending_states(
|
|
275
285
|
[
|
|
276
286
|
WalletStateTransition(
|
|
@@ -290,12 +300,15 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
290
300
|
)
|
|
291
301
|
|
|
292
302
|
# Add proofs to DB
|
|
293
|
-
await client_0.vc_add_proofs(proofs
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
303
|
+
await client_0.vc_add_proofs(VCAddProofs.from_vc_proofs(proofs))
|
|
304
|
+
# Doing it again just to make sure it doesn't care
|
|
305
|
+
await client_0.vc_add_proofs(VCAddProofs.from_vc_proofs(proofs))
|
|
306
|
+
assert (
|
|
307
|
+
await client_0.vc_get_proofs_for_root(VCGetProofsForRoot(proof_root))
|
|
308
|
+
).to_vc_proofs().key_value_pairs == proofs.key_value_pairs
|
|
309
|
+
get_list_reponse = await client_0.vc_get_list(VCGetList())
|
|
310
|
+
assert len(get_list_reponse.vc_records) == 1
|
|
311
|
+
assert get_list_reponse.proof_dict[proof_root] == proofs.key_value_pairs
|
|
299
312
|
|
|
300
313
|
# Mint CR-CAT
|
|
301
314
|
await mint_cr_cat(1, wallet_0, wallet_node_0, client_0, full_node_api, [did_id])
|
|
@@ -434,7 +447,8 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
434
447
|
|
|
435
448
|
# Send the VC to wallet_1 to use for the CR-CATs
|
|
436
449
|
await client_0.vc_spend(
|
|
437
|
-
vc_record.vc.launcher_id,
|
|
450
|
+
VCSpend(vc_id=vc_record.vc.launcher_id, new_puzhash=await wallet_1.get_new_puzzlehash(), push=True),
|
|
451
|
+
wallet_environments.tx_config,
|
|
438
452
|
)
|
|
439
453
|
await wallet_environments.process_pending_states(
|
|
440
454
|
[
|
|
@@ -458,7 +472,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
458
472
|
),
|
|
459
473
|
]
|
|
460
474
|
)
|
|
461
|
-
await client_1.vc_add_proofs(proofs
|
|
475
|
+
await client_1.vc_add_proofs(VCAddProofs.from_vc_proofs(proofs))
|
|
462
476
|
|
|
463
477
|
# Claim the pending approval to our wallet
|
|
464
478
|
await client_1.crcat_approve_pending(
|
|
@@ -525,16 +539,18 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
525
539
|
)
|
|
526
540
|
|
|
527
541
|
# Test melting a CRCAT
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
542
|
+
# This is intended to trigger an edge case where the output and change are the same forcing a new puzhash
|
|
543
|
+
with wallet_environments.new_puzzle_hashes_allowed():
|
|
544
|
+
tx = (
|
|
545
|
+
await client_1.cat_spend(
|
|
546
|
+
env_1.dealias_wallet_id("crcat"),
|
|
547
|
+
wallet_environments.tx_config,
|
|
548
|
+
uint64(20),
|
|
549
|
+
wallet_1_addr,
|
|
550
|
+
uint64(0),
|
|
551
|
+
cat_discrepancy=(-50, Program.to(None), Program.to(None)),
|
|
552
|
+
)
|
|
553
|
+
).transaction
|
|
538
554
|
[tx] = await wallet_node_1.wallet_state_manager.add_pending_transactions([tx])
|
|
539
555
|
await wallet_environments.process_pending_states(
|
|
540
556
|
[
|
|
@@ -580,11 +596,14 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
580
596
|
),
|
|
581
597
|
]
|
|
582
598
|
)
|
|
583
|
-
vc_record_updated = await client_1.vc_get(vc_record_updated.vc.launcher_id)
|
|
599
|
+
vc_record_updated = (await client_1.vc_get(VCGet(vc_record_updated.vc.launcher_id))).vc_record
|
|
584
600
|
assert vc_record_updated is not None
|
|
585
601
|
|
|
586
602
|
# Revoke VC
|
|
587
|
-
await client_0.vc_revoke(
|
|
603
|
+
await client_0.vc_revoke(
|
|
604
|
+
VCRevoke(vc_parent_id=vc_record_updated.vc.coin.parent_coin_info, fee=uint64(1), push=True),
|
|
605
|
+
wallet_environments.tx_config,
|
|
606
|
+
)
|
|
588
607
|
await wallet_environments.process_pending_states(
|
|
589
608
|
[
|
|
590
609
|
WalletStateTransition(
|
|
@@ -600,6 +619,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
600
619
|
"spendable_balance": -1,
|
|
601
620
|
"pending_change": 1,
|
|
602
621
|
"pending_coin_removal_count": 1,
|
|
622
|
+
"max_send_amount": -1,
|
|
603
623
|
},
|
|
604
624
|
},
|
|
605
625
|
post_block_balance_updates={
|
|
@@ -612,6 +632,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
|
|
|
612
632
|
"spendable_balance": 1,
|
|
613
633
|
"pending_change": -1,
|
|
614
634
|
"pending_coin_removal_count": -1,
|
|
635
|
+
"max_send_amount": 1,
|
|
615
636
|
},
|
|
616
637
|
},
|
|
617
638
|
),
|
|
@@ -663,7 +684,13 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
|
|
|
663
684
|
|
|
664
685
|
vc_record = (
|
|
665
686
|
await client_0.vc_mint(
|
|
666
|
-
|
|
687
|
+
VCMint(
|
|
688
|
+
did_id=encode_puzzle_hash(did_id, "did"),
|
|
689
|
+
target_address=encode_puzzle_hash(await wallet_0.get_new_puzzlehash(), "txch"),
|
|
690
|
+
fee=uint64(200),
|
|
691
|
+
push=True,
|
|
692
|
+
),
|
|
693
|
+
wallet_environments.tx_config,
|
|
667
694
|
)
|
|
668
695
|
).vc_record
|
|
669
696
|
await wallet_environments.process_pending_states(
|
|
@@ -683,7 +710,7 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
|
|
|
683
710
|
)
|
|
684
711
|
]
|
|
685
712
|
)
|
|
686
|
-
new_vc_record: Optional[VCRecord] = await client_0.vc_get(vc_record.vc.launcher_id)
|
|
713
|
+
new_vc_record: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
|
|
687
714
|
assert new_vc_record is not None
|
|
688
715
|
|
|
689
716
|
# Test a negative case real quick (mostly unrelated)
|
|
@@ -694,7 +721,7 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
|
|
|
694
721
|
await (await wallet_node_0.wallet_state_manager.get_or_create_vc_wallet()).generate_signed_transaction(
|
|
695
722
|
new_vc_record.vc.launcher_id,
|
|
696
723
|
action_scope,
|
|
697
|
-
new_proof_hash=bytes32
|
|
724
|
+
new_proof_hash=bytes32.zeros,
|
|
698
725
|
self_revoke=True,
|
|
699
726
|
)
|
|
700
727
|
|
|
@@ -702,7 +729,7 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
|
|
|
702
729
|
async with did_wallet.wallet_state_manager.new_action_scope(
|
|
703
730
|
wallet_environments.tx_config, push=True
|
|
704
731
|
) as action_scope:
|
|
705
|
-
await did_wallet.transfer_did(bytes32
|
|
732
|
+
await did_wallet.transfer_did(bytes32.zeros, uint64(0), False, action_scope)
|
|
706
733
|
|
|
707
734
|
await wallet_environments.process_pending_states(
|
|
708
735
|
[
|
|
@@ -716,7 +743,9 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
|
|
|
716
743
|
)
|
|
717
744
|
|
|
718
745
|
# Make sure revoking still works
|
|
719
|
-
await client_0.vc_revoke(
|
|
746
|
+
await client_0.vc_revoke(
|
|
747
|
+
VCRevoke(vc_parent_id=new_vc_record.vc.coin.parent_coin_info, push=True), wallet_environments.tx_config
|
|
748
|
+
)
|
|
720
749
|
await wallet_environments.process_pending_states(
|
|
721
750
|
[
|
|
722
751
|
WalletStateTransition(
|
|
@@ -735,7 +764,7 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
|
|
|
735
764
|
)
|
|
736
765
|
]
|
|
737
766
|
)
|
|
738
|
-
vc_record_revoked: Optional[VCRecord] = await client_0.vc_get(vc_record.vc.launcher_id)
|
|
767
|
+
vc_record_revoked: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
|
|
739
768
|
assert vc_record_revoked is None
|
|
740
769
|
assert (
|
|
741
770
|
len(await (await wallet_node_0.wallet_state_manager.get_or_create_vc_wallet()).store.get_unconfirmed_vcs()) == 0
|
|
@@ -783,7 +812,7 @@ async def test_cat_wallet_conversion(
|
|
|
783
812
|
wallet_node_0.wallet_state_manager, wallet_0, Program.to(None).get_tree_hash().hex()
|
|
784
813
|
)
|
|
785
814
|
|
|
786
|
-
did_id = bytes32
|
|
815
|
+
did_id = bytes32.zeros
|
|
787
816
|
await mint_cr_cat(num_blocks, wallet_0, wallet_node_0, client_0, full_node_api, [did_id])
|
|
788
817
|
await full_node_api.farm_blocks_to_wallet(count=num_blocks, wallet=wallet_0)
|
|
789
818
|
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_0, timeout=20)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import time
|
|
4
|
-
from typing import Any,
|
|
4
|
+
from typing import Any, Optional
|
|
5
5
|
|
|
6
6
|
from chia_rs import G1Element, G2Element, compute_merkle_set_root
|
|
7
7
|
from chiabip158 import PyBIP158
|
|
@@ -30,14 +30,14 @@ from chia.util.hash import std_hash
|
|
|
30
30
|
from chia.util.ints import uint8, uint32, uint64, uint128
|
|
31
31
|
|
|
32
32
|
DEFAULT_PROOF_OF_SPACE = ProofOfSpace(
|
|
33
|
-
bytes32
|
|
33
|
+
bytes32.zeros,
|
|
34
34
|
G1Element(),
|
|
35
35
|
None,
|
|
36
36
|
G1Element(),
|
|
37
37
|
uint8(20),
|
|
38
38
|
bytes(32 * 5),
|
|
39
39
|
)
|
|
40
|
-
DEFAULT_VDF_INFO = VDFInfo(bytes32
|
|
40
|
+
DEFAULT_VDF_INFO = VDFInfo(bytes32.zeros, uint64(1), ClassgroupElement(bytes100.zeros))
|
|
41
41
|
DEFAULT_VDF_PROOF = VDFProof(uint8(0), bytes(100), False)
|
|
42
42
|
|
|
43
43
|
|
|
@@ -50,14 +50,14 @@ class WalletBlockTools(BlockTools):
|
|
|
50
50
|
def get_consecutive_blocks(
|
|
51
51
|
self,
|
|
52
52
|
num_blocks: int,
|
|
53
|
-
block_list_input: Optional[
|
|
53
|
+
block_list_input: Optional[list[FullBlock]] = None,
|
|
54
54
|
*,
|
|
55
55
|
farmer_reward_puzzle_hash: Optional[bytes32] = None,
|
|
56
56
|
pool_reward_puzzle_hash: Optional[bytes32] = None,
|
|
57
57
|
transaction_data: Optional[SpendBundle] = None,
|
|
58
58
|
genesis_timestamp: Optional[uint64] = None,
|
|
59
59
|
**kwargs: Any, # We're overriding so there's many arguments no longer used.
|
|
60
|
-
) ->
|
|
60
|
+
) -> list[FullBlock]:
|
|
61
61
|
assert num_blocks > 0
|
|
62
62
|
constants = self.constants
|
|
63
63
|
|
|
@@ -67,7 +67,7 @@ class WalletBlockTools(BlockTools):
|
|
|
67
67
|
if block_list_input is None:
|
|
68
68
|
block_list_input = []
|
|
69
69
|
|
|
70
|
-
blocks:
|
|
70
|
+
blocks: dict[bytes32, BlockRecord]
|
|
71
71
|
if len(block_list_input) == 0:
|
|
72
72
|
height_to_hash = {}
|
|
73
73
|
blocks = {}
|
|
@@ -130,10 +130,10 @@ class WalletBlockTools(BlockTools):
|
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
def load_block_list(
|
|
133
|
-
block_list:
|
|
134
|
-
) ->
|
|
135
|
-
height_to_hash:
|
|
136
|
-
blocks:
|
|
133
|
+
block_list: list[FullBlock], constants: ConsensusConstants
|
|
134
|
+
) -> tuple[dict[uint32, bytes32], uint64, dict[bytes32, BlockRecord]]:
|
|
135
|
+
height_to_hash: dict[uint32, bytes32] = {}
|
|
136
|
+
blocks: dict[bytes32, BlockRecord] = {}
|
|
137
137
|
sub_slot_iters = constants.SUB_SLOT_ITERS_STARTING
|
|
138
138
|
for full_block in block_list:
|
|
139
139
|
if full_block.height != 0 and len(full_block.finished_sub_slots) > 0:
|
|
@@ -154,8 +154,8 @@ def finish_block(
|
|
|
154
154
|
constants: ConsensusConstants,
|
|
155
155
|
unfinished_block: UnfinishedBlock,
|
|
156
156
|
prev_block: Optional[BlockRecord],
|
|
157
|
-
blocks:
|
|
158
|
-
) ->
|
|
157
|
+
blocks: dict[bytes32, BlockRecord],
|
|
158
|
+
) -> tuple[FullBlock, BlockRecord]:
|
|
159
159
|
if prev_block is None:
|
|
160
160
|
new_weight = uint128(1)
|
|
161
161
|
new_height = uint32(0)
|
|
@@ -170,7 +170,7 @@ def finish_block(
|
|
|
170
170
|
new_height,
|
|
171
171
|
uint128(1),
|
|
172
172
|
uint8(1),
|
|
173
|
-
bytes32
|
|
173
|
+
bytes32.zeros,
|
|
174
174
|
unfinished_block.reward_chain_block.proof_of_space,
|
|
175
175
|
DEFAULT_VDF_INFO,
|
|
176
176
|
G2Element(),
|
|
@@ -199,15 +199,15 @@ def finish_block(
|
|
|
199
199
|
|
|
200
200
|
def get_full_block_and_block_record(
|
|
201
201
|
constants: ConsensusConstants,
|
|
202
|
-
blocks:
|
|
202
|
+
blocks: dict[bytes32, BlockRecord],
|
|
203
203
|
last_timestamp: uint64,
|
|
204
204
|
farmer_reward_puzzlehash: bytes32,
|
|
205
205
|
pool_target: PoolTarget,
|
|
206
206
|
prev_block: Optional[BlockRecord],
|
|
207
207
|
block_generator: Optional[BlockGenerator],
|
|
208
|
-
additions:
|
|
209
|
-
removals:
|
|
210
|
-
) ->
|
|
208
|
+
additions: list[Coin],
|
|
209
|
+
removals: list[Coin],
|
|
210
|
+
) -> tuple[FullBlock, BlockRecord, float]:
|
|
211
211
|
timestamp = last_timestamp + 20
|
|
212
212
|
if prev_block is None:
|
|
213
213
|
height: uint32 = uint32(0)
|
|
@@ -241,9 +241,9 @@ def get_full_block_and_block_record(
|
|
|
241
241
|
)
|
|
242
242
|
)
|
|
243
243
|
|
|
244
|
-
byte_array_tx:
|
|
245
|
-
removal_ids:
|
|
246
|
-
puzzlehash_coin_map:
|
|
244
|
+
byte_array_tx: list[bytearray] = []
|
|
245
|
+
removal_ids: list[bytes32] = []
|
|
246
|
+
puzzlehash_coin_map: dict[bytes32, list[bytes32]] = {}
|
|
247
247
|
for coin in additions:
|
|
248
248
|
puzzlehash_coin_map.setdefault(coin.puzzle_hash, [])
|
|
249
249
|
puzzlehash_coin_map[coin.puzzle_hash].append(coin.name())
|
|
@@ -255,7 +255,7 @@ def get_full_block_and_block_record(
|
|
|
255
255
|
bip158: PyBIP158 = PyBIP158(byte_array_tx)
|
|
256
256
|
filter_hash = std_hash(bytes(bip158.GetEncoded()))
|
|
257
257
|
|
|
258
|
-
additions_merkle_items:
|
|
258
|
+
additions_merkle_items: list[bytes32] = []
|
|
259
259
|
for puzzle, coin_ids in puzzlehash_coin_map.items():
|
|
260
260
|
additions_merkle_items.append(puzzle)
|
|
261
261
|
additions_merkle_items.append(hash_coin_ids(coin_ids))
|
|
@@ -263,21 +263,21 @@ def get_full_block_and_block_record(
|
|
|
263
263
|
additions_root = bytes32(compute_merkle_set_root(additions_merkle_items))
|
|
264
264
|
removals_root = bytes32(compute_merkle_set_root(removal_ids))
|
|
265
265
|
|
|
266
|
-
generator_hash = bytes32
|
|
266
|
+
generator_hash = bytes32.zeros
|
|
267
267
|
if block_generator is not None:
|
|
268
268
|
generator_hash = std_hash(block_generator.program)
|
|
269
269
|
|
|
270
270
|
foliage_data = FoliageBlockData(
|
|
271
|
-
bytes32
|
|
271
|
+
bytes32.zeros,
|
|
272
272
|
pool_target,
|
|
273
273
|
G2Element(),
|
|
274
274
|
farmer_reward_puzzlehash,
|
|
275
|
-
bytes32
|
|
275
|
+
bytes32.zeros,
|
|
276
276
|
)
|
|
277
277
|
|
|
278
278
|
transactions_info = TransactionsInfo(
|
|
279
279
|
generator_hash,
|
|
280
|
-
bytes32
|
|
280
|
+
bytes32.zeros,
|
|
281
281
|
G2Element(),
|
|
282
282
|
fees,
|
|
283
283
|
uint64(constants.MAX_BLOCK_COST_CLVM),
|
|
@@ -295,7 +295,7 @@ def get_full_block_and_block_record(
|
|
|
295
295
|
|
|
296
296
|
foliage = Foliage(
|
|
297
297
|
prev_block_hash,
|
|
298
|
-
bytes32
|
|
298
|
+
bytes32.zeros,
|
|
299
299
|
foliage_data,
|
|
300
300
|
G2Element(),
|
|
301
301
|
foliage_transaction_block.get_hash(),
|
|
@@ -306,7 +306,7 @@ def get_full_block_and_block_record(
|
|
|
306
306
|
RewardChainBlockUnfinished(
|
|
307
307
|
uint128(1),
|
|
308
308
|
uint8(1),
|
|
309
|
-
bytes32
|
|
309
|
+
bytes32.zeros,
|
|
310
310
|
DEFAULT_PROOF_OF_SPACE,
|
|
311
311
|
None,
|
|
312
312
|
G2Element(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Optional
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
6
|
|
|
@@ -22,14 +22,14 @@ from chia.util.ints import uint8, uint32, uint64
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
async def load_blocks_dont_validate(
|
|
25
|
-
blocks:
|
|
26
|
-
) ->
|
|
27
|
-
|
|
25
|
+
blocks: list[FullBlock], constants: ConsensusConstants
|
|
26
|
+
) -> tuple[
|
|
27
|
+
dict[bytes32, HeaderBlock], dict[uint32, bytes32], dict[bytes32, BlockRecord], dict[uint32, SubEpochSummary]
|
|
28
28
|
]:
|
|
29
|
-
header_cache:
|
|
30
|
-
height_to_hash:
|
|
31
|
-
sub_blocks:
|
|
32
|
-
sub_epoch_summaries:
|
|
29
|
+
header_cache: dict[bytes32, HeaderBlock] = {}
|
|
30
|
+
height_to_hash: dict[uint32, bytes32] = {}
|
|
31
|
+
sub_blocks: dict[bytes32, BlockRecord] = {}
|
|
32
|
+
sub_epoch_summaries: dict[uint32, SubEpochSummary] = {}
|
|
33
33
|
prev_block = None
|
|
34
34
|
difficulty = constants.DIFFICULTY_STARTING
|
|
35
35
|
sub_slot_iters = constants.SUB_SLOT_ITERS_STARTING
|
|
@@ -74,7 +74,7 @@ async def load_blocks_dont_validate(
|
|
|
74
74
|
)
|
|
75
75
|
sub_blocks[block.header_hash] = sub_block
|
|
76
76
|
height_to_hash[block.height] = block.header_hash
|
|
77
|
-
header_cache[block.header_hash] = get_block_header(block
|
|
77
|
+
header_cache[block.header_hash] = get_block_header(block)
|
|
78
78
|
if sub_block.sub_epoch_summary_included is not None:
|
|
79
79
|
sub_epoch_summaries[block.height] = sub_block.sub_epoch_summary_included
|
|
80
80
|
prev_block = block
|
|
@@ -82,15 +82,15 @@ async def load_blocks_dont_validate(
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
async def _test_map_summaries(
|
|
85
|
-
blocks:
|
|
86
|
-
header_cache:
|
|
87
|
-
height_to_hash:
|
|
88
|
-
sub_blocks:
|
|
89
|
-
summaries:
|
|
85
|
+
blocks: list[FullBlock],
|
|
86
|
+
header_cache: dict[bytes32, HeaderBlock],
|
|
87
|
+
height_to_hash: dict[uint32, bytes32],
|
|
88
|
+
sub_blocks: dict[bytes32, BlockRecord],
|
|
89
|
+
summaries: dict[uint32, SubEpochSummary],
|
|
90
90
|
constants: ConsensusConstants,
|
|
91
91
|
) -> None:
|
|
92
92
|
curr = sub_blocks[blocks[-1].header_hash]
|
|
93
|
-
orig_summaries:
|
|
93
|
+
orig_summaries: dict[int, SubEpochSummary] = {}
|
|
94
94
|
while curr.height > 0:
|
|
95
95
|
if curr.sub_epoch_summary_included is not None:
|
|
96
96
|
orig_summaries[curr.height] = curr.sub_epoch_summary_included
|
|
@@ -114,7 +114,7 @@ async def _test_map_summaries(
|
|
|
114
114
|
class TestWeightProof:
|
|
115
115
|
@pytest.mark.anyio
|
|
116
116
|
async def test_weight_proof_map_summaries_1(
|
|
117
|
-
self, default_400_blocks:
|
|
117
|
+
self, default_400_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
118
118
|
) -> None:
|
|
119
119
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
120
120
|
default_400_blocks, blockchain_constants
|
|
@@ -125,7 +125,7 @@ class TestWeightProof:
|
|
|
125
125
|
|
|
126
126
|
@pytest.mark.anyio
|
|
127
127
|
async def test_weight_proof_map_summaries_2(
|
|
128
|
-
self, default_1000_blocks:
|
|
128
|
+
self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
129
129
|
) -> None:
|
|
130
130
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
131
131
|
default_1000_blocks, blockchain_constants
|
|
@@ -136,7 +136,7 @@ class TestWeightProof:
|
|
|
136
136
|
|
|
137
137
|
@pytest.mark.anyio
|
|
138
138
|
async def test_weight_proof_summaries_1000_blocks(
|
|
139
|
-
self, default_1000_blocks:
|
|
139
|
+
self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
140
140
|
) -> None:
|
|
141
141
|
blocks = default_1000_blocks
|
|
142
142
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -158,7 +158,7 @@ class TestWeightProof:
|
|
|
158
158
|
|
|
159
159
|
@pytest.mark.anyio
|
|
160
160
|
async def test_weight_proof_bad_peak_hash(
|
|
161
|
-
self, default_1000_blocks:
|
|
161
|
+
self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
162
162
|
) -> None:
|
|
163
163
|
blocks = default_1000_blocks
|
|
164
164
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -173,7 +173,7 @@ class TestWeightProof:
|
|
|
173
173
|
@pytest.mark.anyio
|
|
174
174
|
@pytest.mark.skip(reason="broken")
|
|
175
175
|
async def test_weight_proof_from_genesis(
|
|
176
|
-
self, default_400_blocks:
|
|
176
|
+
self, default_400_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
177
177
|
) -> None:
|
|
178
178
|
blocks = default_400_blocks
|
|
179
179
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -188,7 +188,7 @@ class TestWeightProof:
|
|
|
188
188
|
assert wp is not None
|
|
189
189
|
|
|
190
190
|
@pytest.mark.anyio
|
|
191
|
-
async def test_weight_proof_edge_cases(self, bt: BlockTools, default_400_blocks:
|
|
191
|
+
async def test_weight_proof_edge_cases(self, bt: BlockTools, default_400_blocks: list[FullBlock]) -> None:
|
|
192
192
|
blocks = default_400_blocks
|
|
193
193
|
|
|
194
194
|
blocks = bt.get_consecutive_blocks(
|
|
@@ -275,7 +275,7 @@ class TestWeightProof:
|
|
|
275
275
|
|
|
276
276
|
@pytest.mark.anyio
|
|
277
277
|
async def test_weight_proof1000(
|
|
278
|
-
self, default_1000_blocks:
|
|
278
|
+
self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
279
279
|
) -> None:
|
|
280
280
|
blocks = default_1000_blocks
|
|
281
281
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -294,7 +294,7 @@ class TestWeightProof:
|
|
|
294
294
|
|
|
295
295
|
@pytest.mark.anyio
|
|
296
296
|
async def test_weight_proof1000_pre_genesis_empty_slots(
|
|
297
|
-
self, pre_genesis_empty_slots_1000_blocks:
|
|
297
|
+
self, pre_genesis_empty_slots_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
298
298
|
) -> None:
|
|
299
299
|
blocks = pre_genesis_empty_slots_1000_blocks
|
|
300
300
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -314,7 +314,7 @@ class TestWeightProof:
|
|
|
314
314
|
|
|
315
315
|
@pytest.mark.anyio
|
|
316
316
|
async def test_weight_proof10000__blocks_compact(
|
|
317
|
-
self, default_10000_blocks_compact:
|
|
317
|
+
self, default_10000_blocks_compact: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
318
318
|
) -> None:
|
|
319
319
|
blocks = default_10000_blocks_compact
|
|
320
320
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -333,7 +333,7 @@ class TestWeightProof:
|
|
|
333
333
|
|
|
334
334
|
@pytest.mark.anyio
|
|
335
335
|
async def test_weight_proof1000_partial_blocks_compact(
|
|
336
|
-
self, bt: BlockTools, default_10000_blocks_compact:
|
|
336
|
+
self, bt: BlockTools, default_10000_blocks_compact: list[FullBlock]
|
|
337
337
|
) -> None:
|
|
338
338
|
blocks = bt.get_consecutive_blocks(
|
|
339
339
|
100,
|
|
@@ -355,7 +355,7 @@ class TestWeightProof:
|
|
|
355
355
|
|
|
356
356
|
@pytest.mark.anyio
|
|
357
357
|
async def test_weight_proof10000(
|
|
358
|
-
self, default_10000_blocks:
|
|
358
|
+
self, default_10000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
359
359
|
) -> None:
|
|
360
360
|
blocks = default_10000_blocks
|
|
361
361
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -375,7 +375,7 @@ class TestWeightProof:
|
|
|
375
375
|
|
|
376
376
|
@pytest.mark.anyio
|
|
377
377
|
async def test_check_num_of_samples(
|
|
378
|
-
self, default_10000_blocks:
|
|
378
|
+
self, default_10000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
379
379
|
) -> None:
|
|
380
380
|
blocks = default_10000_blocks
|
|
381
381
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -396,7 +396,7 @@ class TestWeightProof:
|
|
|
396
396
|
|
|
397
397
|
@pytest.mark.anyio
|
|
398
398
|
async def test_weight_proof_extend_no_ses(
|
|
399
|
-
self, default_1000_blocks:
|
|
399
|
+
self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
400
400
|
) -> None:
|
|
401
401
|
blocks = default_1000_blocks
|
|
402
402
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -424,7 +424,7 @@ class TestWeightProof:
|
|
|
424
424
|
|
|
425
425
|
@pytest.mark.anyio
|
|
426
426
|
async def test_weight_proof_extend_new_ses(
|
|
427
|
-
self, default_1000_blocks:
|
|
427
|
+
self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
428
428
|
) -> None:
|
|
429
429
|
blocks = default_1000_blocks
|
|
430
430
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
|
@@ -468,7 +468,7 @@ class TestWeightProof:
|
|
|
468
468
|
|
|
469
469
|
@pytest.mark.anyio
|
|
470
470
|
async def test_weight_proof_extend_multiple_ses(
|
|
471
|
-
self, default_1000_blocks:
|
|
471
|
+
self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
|
|
472
472
|
) -> None:
|
|
473
473
|
blocks = default_1000_blocks
|
|
474
474
|
header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
|
chia/apis.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from chia.farmer.farmer_api import FarmerAPI
|
|
4
|
+
from chia.full_node.full_node_api import FullNodeAPI
|
|
5
|
+
from chia.harvester.harvester_api import HarvesterAPI
|
|
6
|
+
from chia.introducer.introducer_api import IntroducerAPI
|
|
7
|
+
from chia.server.api_protocol import ApiProtocol
|
|
8
|
+
from chia.server.outbound_message import NodeType
|
|
9
|
+
from chia.timelord.timelord_api import TimelordAPI
|
|
10
|
+
from chia.wallet.wallet_node_api import WalletNodeAPI
|
|
11
|
+
|
|
12
|
+
ApiProtocolRegistry: dict[NodeType, type[ApiProtocol]] = {
|
|
13
|
+
NodeType.FULL_NODE: FullNodeAPI,
|
|
14
|
+
NodeType.WALLET: WalletNodeAPI,
|
|
15
|
+
NodeType.INTRODUCER: IntroducerAPI,
|
|
16
|
+
NodeType.TIMELORD: TimelordAPI,
|
|
17
|
+
NodeType.FARMER: FarmerAPI,
|
|
18
|
+
NodeType.HARVESTER: HarvesterAPI,
|
|
19
|
+
}
|