chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/_tests/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc2.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
|
@@ -2,18 +2,19 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
4
|
import pathlib
|
|
5
|
-
from typing import List
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
from chia_rs import G1Element
|
|
9
8
|
from clvm_tools import binutils
|
|
10
9
|
|
|
10
|
+
from chia._tests.core.make_block_generator import make_block_generator
|
|
11
|
+
from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
|
|
11
12
|
from chia._tests.util.misc import BenchmarkRunner
|
|
12
13
|
from chia.consensus.condition_costs import ConditionCost
|
|
13
14
|
from chia.consensus.cost_calculator import NPCResult
|
|
14
15
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
15
16
|
from chia.full_node.bundle_tools import simple_solution_generator
|
|
16
|
-
from chia.full_node.mempool_check_conditions import
|
|
17
|
+
from chia.full_node.mempool_check_conditions import get_puzzle_and_solution_for_coin
|
|
17
18
|
from chia.simulator.block_tools import BlockTools, test_constants
|
|
18
19
|
from chia.types.blockchain_format.coin import Coin
|
|
19
20
|
from chia.types.blockchain_format.program import Program
|
|
@@ -23,8 +24,6 @@ from chia.types.generator_types import BlockGenerator
|
|
|
23
24
|
from chia.util.ints import uint32, uint64
|
|
24
25
|
from chia.wallet.puzzles import p2_delegated_puzzle_or_hidden_puzzle
|
|
25
26
|
|
|
26
|
-
from .make_block_generator import make_block_generator
|
|
27
|
-
|
|
28
27
|
BURN_PUZZLE_HASH = bytes32(b"0" * 32)
|
|
29
28
|
SMALL_BLOCK_GENERATOR = make_block_generator(1)
|
|
30
29
|
|
|
@@ -277,7 +276,7 @@ async def test_standard_tx(benchmark_runner: BenchmarkRunner) -> None:
|
|
|
277
276
|
with benchmark_runner.assert_runtime(seconds=0.1):
|
|
278
277
|
total_cost = 0
|
|
279
278
|
for i in range(0, 1000):
|
|
280
|
-
cost,
|
|
279
|
+
cost, _result = puzzle_program.run_with_cost(test_constants.MAX_BLOCK_COST_CLVM, solution_program)
|
|
281
280
|
total_cost += cost
|
|
282
281
|
|
|
283
282
|
|
|
@@ -293,7 +292,7 @@ async def test_get_puzzle_and_solution_for_coin_performance(benchmark_runner: Be
|
|
|
293
292
|
)
|
|
294
293
|
|
|
295
294
|
coin_spends = result.first()
|
|
296
|
-
spent_coins:
|
|
295
|
+
spent_coins: list[Coin] = []
|
|
297
296
|
for spend in coin_spends.as_iter():
|
|
298
297
|
parent, puzzle, amount_program, _ = spend.as_iter()
|
|
299
298
|
parent_coin_info = parent.as_atom()
|
chia/_tests/core/test_crawler.py
CHANGED
|
@@ -58,7 +58,7 @@ async def test_unknown_messages(
|
|
|
58
58
|
return "Non existing function: request_children" in caplog.text
|
|
59
59
|
|
|
60
60
|
with caplog.at_level(logging.ERROR):
|
|
61
|
-
msg = make_msg(ProtocolMessageTypes.request_children, RequestChildren(bytes32
|
|
61
|
+
msg = make_msg(ProtocolMessageTypes.request_children, RequestChildren(bytes32.zeros))
|
|
62
62
|
assert await connection.send_message(msg)
|
|
63
63
|
await time_out_assert(10, receiving_failed)
|
|
64
64
|
|
|
@@ -83,7 +83,7 @@ async def test_valid_message(
|
|
|
83
83
|
|
|
84
84
|
msg = make_msg(
|
|
85
85
|
ProtocolMessageTypes.new_peak,
|
|
86
|
-
NewPeak(bytes32
|
|
86
|
+
NewPeak(bytes32.zeros, uint32(2), uint128(1), uint32(1), bytes32(b"\1" * 32)),
|
|
87
87
|
)
|
|
88
88
|
assert await connection.send_message(msg)
|
|
89
89
|
await time_out_assert(10, peer_added)
|
|
@@ -2,12 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import List, Tuple
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
|
|
9
8
|
from chia._tests.util.temp_file import TempFile
|
|
10
9
|
from chia.cmds.db_upgrade_func import convert_v1_to_v2
|
|
10
|
+
from chia.consensus.block_body_validation import ForkInfo
|
|
11
11
|
from chia.consensus.blockchain import Blockchain
|
|
12
12
|
from chia.consensus.multiprocess_validation import PreValidationResult
|
|
13
13
|
from chia.full_node.block_store import BlockStore
|
|
@@ -32,7 +32,7 @@ def rand_bytes(num) -> bytes:
|
|
|
32
32
|
async def test_blocks(default_1000_blocks, with_hints: bool):
|
|
33
33
|
blocks = default_1000_blocks
|
|
34
34
|
|
|
35
|
-
hints:
|
|
35
|
+
hints: list[tuple[bytes32, bytes]] = []
|
|
36
36
|
for i in range(351):
|
|
37
37
|
hints.append((bytes32(rand_bytes(32)), rand_bytes(20)))
|
|
38
38
|
|
|
@@ -74,8 +74,9 @@ async def test_blocks(default_1000_blocks, with_hints: bool):
|
|
|
74
74
|
if block.finished_sub_slots[0].challenge_chain.new_sub_slot_iters is not None:
|
|
75
75
|
sub_slot_iters = block.finished_sub_slots[0].challenge_chain.new_sub_slot_iters
|
|
76
76
|
# await _validate_and_add_block(bc, block)
|
|
77
|
-
results = PreValidationResult(None, uint64(1), None,
|
|
78
|
-
|
|
77
|
+
results = PreValidationResult(None, uint64(1), None, uint32(0))
|
|
78
|
+
fork_info = ForkInfo(block.height - 1, block.height - 1, block.prev_header_hash)
|
|
79
|
+
_, err, _ = await bc.add_block(block, results, sub_slot_iters=sub_slot_iters, fork_info=fork_info)
|
|
79
80
|
assert err is None
|
|
80
81
|
|
|
81
82
|
# now, convert v1 in_file to v2 out_file
|
|
@@ -4,12 +4,12 @@ import random
|
|
|
4
4
|
import sqlite3
|
|
5
5
|
from contextlib import closing
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import List
|
|
8
7
|
|
|
9
8
|
import pytest
|
|
10
9
|
|
|
11
10
|
from chia._tests.util.temp_file import TempFile
|
|
12
11
|
from chia.cmds.db_validate_func import validate_v2
|
|
12
|
+
from chia.consensus.block_body_validation import ForkInfo
|
|
13
13
|
from chia.consensus.blockchain import Blockchain
|
|
14
14
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
15
15
|
from chia.consensus.multiprocess_validation import PreValidationResult
|
|
@@ -128,7 +128,7 @@ def test_db_validate_in_main_chain(invalid_in_chain: bool) -> None:
|
|
|
128
128
|
validate_v2(db_file, validate_blocks=False)
|
|
129
129
|
|
|
130
130
|
|
|
131
|
-
async def make_db(db_file: Path, blocks:
|
|
131
|
+
async def make_db(db_file: Path, blocks: list[FullBlock]) -> None:
|
|
132
132
|
async with DBWrapper2.managed(database=db_file, reader_count=1, db_version=2) as db_wrapper:
|
|
133
133
|
async with db_wrapper.writer_maybe_transaction() as conn:
|
|
134
134
|
# this is done by chia init normally
|
|
@@ -144,13 +144,14 @@ async def make_db(db_file: Path, blocks: List[FullBlock]) -> None:
|
|
|
144
144
|
if block.height != 0 and len(block.finished_sub_slots) > 0:
|
|
145
145
|
if block.finished_sub_slots[0].challenge_chain.new_sub_slot_iters is not None:
|
|
146
146
|
sub_slot_iters = block.finished_sub_slots[0].challenge_chain.new_sub_slot_iters
|
|
147
|
-
results = PreValidationResult(None, uint64(1), None,
|
|
148
|
-
|
|
147
|
+
results = PreValidationResult(None, uint64(1), None, uint32(0))
|
|
148
|
+
fork_info = ForkInfo(block.height - 1, block.height - 1, block.prev_header_hash)
|
|
149
|
+
_, err, _ = await bc.add_block(block, results, sub_slot_iters=sub_slot_iters, fork_info=fork_info)
|
|
149
150
|
assert err is None
|
|
150
151
|
|
|
151
152
|
|
|
152
153
|
@pytest.mark.anyio
|
|
153
|
-
async def test_db_validate_default_1000_blocks(default_1000_blocks:
|
|
154
|
+
async def test_db_validate_default_1000_blocks(default_1000_blocks: list[FullBlock]) -> None:
|
|
154
155
|
with TempFile() as db_file:
|
|
155
156
|
await make_db(db_file, default_1000_blocks)
|
|
156
157
|
|
|
@@ -5,11 +5,12 @@ import logging
|
|
|
5
5
|
import operator
|
|
6
6
|
import sys
|
|
7
7
|
import time
|
|
8
|
+
from collections.abc import Awaitable
|
|
8
9
|
from math import ceil
|
|
9
10
|
from os import mkdir
|
|
10
11
|
from pathlib import Path
|
|
11
12
|
from shutil import copy
|
|
12
|
-
from typing import Any,
|
|
13
|
+
from typing import Any, Callable, Union, cast
|
|
13
14
|
|
|
14
15
|
import pytest
|
|
15
16
|
|
|
@@ -46,7 +47,7 @@ log = logging.getLogger(__name__)
|
|
|
46
47
|
async def wait_for_plot_sync(receiver: Receiver, previous_last_sync_id: uint64) -> None:
|
|
47
48
|
def wait() -> bool:
|
|
48
49
|
current_last_sync_id = receiver.last_sync().sync_id
|
|
49
|
-
return current_last_sync_id
|
|
50
|
+
return current_last_sync_id not in {0, previous_last_sync_id}
|
|
50
51
|
|
|
51
52
|
await time_out_assert(30, wait)
|
|
52
53
|
|
|
@@ -358,8 +359,8 @@ def test_plot_matches_filter(filter_item: FilterItem, match: bool) -> None:
|
|
|
358
359
|
@pytest.mark.skipif(sys.platform == "win32", reason="avoiding crashes on windows until we fix this (crashing workers)")
|
|
359
360
|
async def test_farmer_get_harvester_plots_endpoints(
|
|
360
361
|
harvester_farmer_environment: HarvesterFarmerEnvironment,
|
|
361
|
-
endpoint: Callable[[FarmerRpcClient, PaginatedRequestData], Awaitable[
|
|
362
|
-
filtering: Union[
|
|
362
|
+
endpoint: Callable[[FarmerRpcClient, PaginatedRequestData], Awaitable[dict[str, Any]]],
|
|
363
|
+
filtering: Union[list[FilterItem], list[str]],
|
|
363
364
|
sort_key: str,
|
|
364
365
|
reverse: bool,
|
|
365
366
|
expected_plot_count: int,
|
|
@@ -378,12 +379,12 @@ async def test_farmer_get_harvester_plots_endpoints(
|
|
|
378
379
|
request: PaginatedRequestData
|
|
379
380
|
if endpoint == FarmerRpcClient.get_harvester_plots_valid:
|
|
380
381
|
request = PlotInfoRequestData(
|
|
381
|
-
harvester_id, uint32(0), uint32(0), cast(
|
|
382
|
+
harvester_id, uint32(0), uint32(0), cast(list[FilterItem], filtering), sort_key, reverse
|
|
382
383
|
)
|
|
383
384
|
else:
|
|
384
|
-
request = PlotPathRequestData(harvester_id, uint32(0), uint32(0), cast(
|
|
385
|
+
request = PlotPathRequestData(harvester_id, uint32(0), uint32(0), cast(list[str], filtering), reverse)
|
|
385
386
|
|
|
386
|
-
def add_plot_directories(prefix: str, count: int) ->
|
|
387
|
+
def add_plot_directories(prefix: str, count: int) -> list[Path]:
|
|
387
388
|
new_paths = []
|
|
388
389
|
for i in range(count):
|
|
389
390
|
new_paths.append(harvester.root_path / f"{prefix}_{i}")
|
chia/_tests/core/test_filter.py
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import List
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
from chiabip158 import PyBIP158
|
|
7
5
|
|
|
8
6
|
|
|
9
7
|
@pytest.mark.anyio
|
|
10
8
|
async def test_basic_filter_test(simulator_and_wallet):
|
|
11
|
-
|
|
12
|
-
wallet_node,
|
|
9
|
+
_full_nodes, wallets, bt = simulator_and_wallet
|
|
10
|
+
wallet_node, _server_2 = wallets[0]
|
|
13
11
|
wallet = wallet_node.wallet_state_manager.main_wallet
|
|
14
12
|
|
|
15
13
|
num_blocks = 2
|
|
@@ -21,7 +19,7 @@ async def test_basic_filter_test(simulator_and_wallet):
|
|
|
21
19
|
pool_reward_puzzle_hash=ph,
|
|
22
20
|
)
|
|
23
21
|
for i in range(1, num_blocks):
|
|
24
|
-
byte_array_tx:
|
|
22
|
+
byte_array_tx: list[bytes] = []
|
|
25
23
|
block = blocks[i]
|
|
26
24
|
coins = block.get_included_reward_coins()
|
|
27
25
|
coin_0 = bytearray(coins[0].puzzle_hash)
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
# flake8: noqa: F811, F401
|
|
2
1
|
from __future__ import annotations
|
|
3
2
|
|
|
4
|
-
from typing import List
|
|
5
|
-
|
|
6
3
|
import pytest
|
|
7
4
|
from chia_rs import AugSchemeMPL
|
|
8
5
|
from clvm.casts import int_to_bytes
|
|
9
6
|
|
|
10
7
|
from chia import __version__
|
|
11
8
|
from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
|
|
12
|
-
from chia._tests.conftest import ConsensusMode
|
|
13
9
|
from chia._tests.connection_utils import connect_and_get_peer
|
|
14
10
|
from chia._tests.util.rpc import validate_get_routes
|
|
15
11
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
@@ -20,6 +16,7 @@ from chia.protocols import full_node_protocol
|
|
|
20
16
|
from chia.rpc.full_node_rpc_api import get_average_block_time, get_nearest_transaction_block
|
|
21
17
|
from chia.rpc.full_node_rpc_client import FullNodeRpcClient
|
|
22
18
|
from chia.server.outbound_message import NodeType
|
|
19
|
+
from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
23
20
|
from chia.simulator.block_tools import get_signage_point
|
|
24
21
|
from chia.simulator.simulator_protocol import FarmNewBlockProtocol, ReorgProtocol
|
|
25
22
|
from chia.simulator.wallet_tools import WalletTool
|
|
@@ -45,13 +42,12 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
45
42
|
full_node_api_2 = full_node_service_2._api
|
|
46
43
|
server_2 = full_node_api_2.full_node.server
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
)
|
|
45
|
+
async with FullNodeRpcClient.create_as_context(
|
|
46
|
+
self_hostname,
|
|
47
|
+
full_node_service_1.rpc_server.listen_port,
|
|
48
|
+
full_node_service_1.root_path,
|
|
49
|
+
full_node_service_1.config,
|
|
50
|
+
) as client:
|
|
55
51
|
await validate_get_routes(client, full_node_service_1.rpc_server.rpc_api)
|
|
56
52
|
state = await client.get_blockchain_state()
|
|
57
53
|
assert state["peak"] is None
|
|
@@ -98,20 +94,22 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
98
94
|
|
|
99
95
|
assert (await client.get_block_record_by_height(100)) is None
|
|
100
96
|
|
|
101
|
-
#
|
|
102
|
-
|
|
97
|
+
# NOTE: indexing and hard coded values below depend on the ordering
|
|
98
|
+
included_reward_coins = sorted(blocks[-1].get_included_reward_coins(), key=lambda c: c.amount)
|
|
99
|
+
|
|
100
|
+
ph = included_reward_coins[0].puzzle_hash
|
|
103
101
|
coins = await client.get_coin_records_by_puzzle_hash(ph)
|
|
104
102
|
print(coins)
|
|
105
103
|
assert len(coins) >= 1
|
|
106
104
|
|
|
107
|
-
pid =
|
|
108
|
-
pid_2 =
|
|
105
|
+
pid = included_reward_coins[0].parent_coin_info
|
|
106
|
+
pid_2 = included_reward_coins[1].parent_coin_info
|
|
109
107
|
coins = await client.get_coin_records_by_parent_ids([pid, pid_2])
|
|
110
108
|
print(coins)
|
|
111
109
|
assert len(coins) == 2
|
|
112
110
|
|
|
113
|
-
name =
|
|
114
|
-
name_2 =
|
|
111
|
+
name = included_reward_coins[0].name()
|
|
112
|
+
name_2 = included_reward_coins[1].name()
|
|
115
113
|
coins = await client.get_coin_records_by_names([name, name_2])
|
|
116
114
|
print(coins)
|
|
117
115
|
assert len(coins) == 2
|
|
@@ -139,7 +137,10 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
139
137
|
assert len(await client.get_coin_records_by_puzzle_hash(ph)) == 2
|
|
140
138
|
assert len(await client.get_coin_records_by_puzzle_hash(ph_receiver)) == 0
|
|
141
139
|
|
|
142
|
-
|
|
140
|
+
# NOTE: indexing and hard coded values below depend on the ordering
|
|
141
|
+
included_reward_coins = sorted(blocks[-1].get_included_reward_coins(), key=lambda c: c.amount)
|
|
142
|
+
|
|
143
|
+
coin_to_spend = included_reward_coins[0]
|
|
143
144
|
|
|
144
145
|
spend_bundle = wallet.generate_signed_transaction(coin_to_spend.amount, ph_receiver, coin_to_spend)
|
|
145
146
|
|
|
@@ -154,7 +155,9 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
154
155
|
assert len(await client.get_all_mempool_items()) == 1
|
|
155
156
|
assert len(await client.get_all_mempool_tx_ids()) == 1
|
|
156
157
|
assert (
|
|
157
|
-
WalletSpendBundle.from_json_dict(
|
|
158
|
+
WalletSpendBundle.from_json_dict(
|
|
159
|
+
next(iter((await client.get_all_mempool_items()).values()))["spend_bundle"]
|
|
160
|
+
)
|
|
158
161
|
== spend_bundle
|
|
159
162
|
)
|
|
160
163
|
assert (await client.get_all_mempool_tx_ids())[0] == spend_bundle.name()
|
|
@@ -167,7 +170,7 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
167
170
|
assert (await client.get_coin_record_by_name(coin.name())) is None
|
|
168
171
|
|
|
169
172
|
# Verify that the include_pending arg to get_mempool_item_by_tx_id works
|
|
170
|
-
coin_to_spend_pending =
|
|
173
|
+
coin_to_spend_pending = included_reward_coins[1]
|
|
171
174
|
ahr = ConditionOpcode.ASSERT_HEIGHT_RELATIVE # to force pending/potential
|
|
172
175
|
condition_dic = {ahr: [ConditionWithArgs(ahr, [int_to_bytes(100)])]}
|
|
173
176
|
spend_bundle_pending = wallet.generate_signed_transaction(
|
|
@@ -216,7 +219,7 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
216
219
|
coin_records[i].coin.amount, ph_receiver, coin_records[i].coin
|
|
217
220
|
)
|
|
218
221
|
await client.push_tx(spend_bundle)
|
|
219
|
-
coin_spends
|
|
222
|
+
coin_spends += spend_bundle.coin_spends
|
|
220
223
|
await time_out_assert(
|
|
221
224
|
5, full_node_api_1.full_node.mempool_manager.get_spendbundle, spend_bundle, spend_bundle.name()
|
|
222
225
|
)
|
|
@@ -231,7 +234,7 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
231
234
|
block_spends = await client.get_block_spends(block.header_hash)
|
|
232
235
|
|
|
233
236
|
assert len(block_spends) == 3
|
|
234
|
-
assert sorted(block_spends, key=
|
|
237
|
+
assert sorted(block_spends, key=str) == sorted(coin_spends, key=str)
|
|
235
238
|
|
|
236
239
|
block_spends_with_conditions = await client.get_block_spends_with_conditions(block.header_hash)
|
|
237
240
|
|
|
@@ -361,7 +364,7 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
361
364
|
state = await client.get_blockchain_state()
|
|
362
365
|
block = await client.get_block(state["peak"].header_hash)
|
|
363
366
|
|
|
364
|
-
coin_to_spend =
|
|
367
|
+
coin_to_spend = block.get_included_reward_coins()[0]
|
|
365
368
|
|
|
366
369
|
spend_bundle = wallet.generate_signed_transaction(coin_to_spend.amount, ph_2, coin_to_spend, memo=memo)
|
|
367
370
|
await client.push_tx(spend_bundle)
|
|
@@ -408,25 +411,20 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
408
411
|
await client.close_connection(connections[0]["node_id"])
|
|
409
412
|
await time_out_assert(10, num_connections, 0)
|
|
410
413
|
|
|
411
|
-
blocks:
|
|
414
|
+
blocks: list[FullBlock] = await client.get_blocks(0, 5)
|
|
412
415
|
assert len(blocks) == 5
|
|
413
416
|
|
|
414
417
|
await full_node_api_1.reorg_from_index_to_new_index(ReorgProtocol(2, 55, bytes([0x2] * 32), None))
|
|
415
|
-
new_blocks_0:
|
|
418
|
+
new_blocks_0: list[FullBlock] = await client.get_blocks(0, 5)
|
|
416
419
|
assert len(new_blocks_0) == 7
|
|
417
420
|
|
|
418
|
-
new_blocks:
|
|
421
|
+
new_blocks: list[FullBlock] = await client.get_blocks(0, 5, exclude_reorged=True)
|
|
419
422
|
assert len(new_blocks) == 5
|
|
420
423
|
assert blocks[0].header_hash == new_blocks[0].header_hash
|
|
421
424
|
assert blocks[1].header_hash == new_blocks[1].header_hash
|
|
422
425
|
assert blocks[2].header_hash == new_blocks[2].header_hash
|
|
423
426
|
assert blocks[3].header_hash != new_blocks[3].header_hash
|
|
424
427
|
|
|
425
|
-
finally:
|
|
426
|
-
# Checks that the RPC manages to stop the node
|
|
427
|
-
client.close()
|
|
428
|
-
await client.await_closed()
|
|
429
|
-
|
|
430
428
|
|
|
431
429
|
@pytest.mark.anyio
|
|
432
430
|
async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockchain):
|
|
@@ -442,14 +440,12 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
|
|
|
442
440
|
|
|
443
441
|
peer = await connect_and_get_peer(server_1, server_2, self_hostname)
|
|
444
442
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
)
|
|
452
|
-
|
|
443
|
+
async with FullNodeRpcClient.create_as_context(
|
|
444
|
+
self_hostname,
|
|
445
|
+
full_node_service_1.rpc_server.listen_port,
|
|
446
|
+
full_node_service_1.root_path,
|
|
447
|
+
full_node_service_1.config,
|
|
448
|
+
) as client:
|
|
453
449
|
# Only provide one
|
|
454
450
|
res = await client.get_recent_signage_point_or_eos(None, None)
|
|
455
451
|
assert res is None
|
|
@@ -537,8 +533,7 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
|
|
|
537
533
|
|
|
538
534
|
# Perform a reorg
|
|
539
535
|
blocks = bt.get_consecutive_blocks(12, seed=b"1234")
|
|
540
|
-
|
|
541
|
-
await full_node_api_1.full_node.add_block(block)
|
|
536
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
542
537
|
|
|
543
538
|
# Signage point is no longer in the blockchain
|
|
544
539
|
res = await client.get_recent_signage_point_or_eos(sp.cc_vdf.output.get_hash(), None)
|
|
@@ -553,15 +548,10 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
|
|
|
553
548
|
assert res["eos"] == selected_eos
|
|
554
549
|
assert res["reverted"]
|
|
555
550
|
|
|
556
|
-
finally:
|
|
557
|
-
# Checks that the RPC manages to stop the node
|
|
558
|
-
client.close()
|
|
559
|
-
await client.await_closed()
|
|
560
|
-
|
|
561
551
|
|
|
562
552
|
@pytest.mark.anyio
|
|
563
553
|
async def test_get_network_info(one_wallet_and_one_simulator_services, self_hostname):
|
|
564
|
-
nodes, _,
|
|
554
|
+
nodes, _, _bt = one_wallet_and_one_simulator_services
|
|
565
555
|
(full_node_service_1,) = nodes
|
|
566
556
|
|
|
567
557
|
async with FullNodeRpcClient.create_as_context(
|
|
@@ -582,7 +572,7 @@ async def test_get_network_info(one_wallet_and_one_simulator_services, self_host
|
|
|
582
572
|
|
|
583
573
|
@pytest.mark.anyio
|
|
584
574
|
async def test_get_version(one_wallet_and_one_simulator_services, self_hostname):
|
|
585
|
-
nodes, _,
|
|
575
|
+
nodes, _, _bt = one_wallet_and_one_simulator_services
|
|
586
576
|
(full_node_service_1,) = nodes
|
|
587
577
|
async with FullNodeRpcClient.create_as_context(
|
|
588
578
|
self_hostname,
|
|
@@ -620,7 +610,7 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
|
|
|
620
610
|
assert state["space"] == 0
|
|
621
611
|
assert state["average_block_time"] is None
|
|
622
612
|
|
|
623
|
-
blocks:
|
|
613
|
+
blocks: list[FullBlock] = bt.get_consecutive_blocks(num_blocks)
|
|
624
614
|
blocks = bt.get_consecutive_blocks(num_blocks, block_list_input=blocks, guarantee_transaction_block=True)
|
|
625
615
|
|
|
626
616
|
for block in blocks:
|
|
@@ -643,7 +633,7 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
|
|
|
643
633
|
assert state["space"] > 0
|
|
644
634
|
assert state["average_block_time"] > 0
|
|
645
635
|
|
|
646
|
-
block_records:
|
|
636
|
+
block_records: list[BlockRecord] = [
|
|
647
637
|
await full_node_api_1.full_node.blockchain.get_block_record_from_db(rec.header_hash) for rec in blocks
|
|
648
638
|
]
|
|
649
639
|
first_non_transaction_block_index = -1
|
|
@@ -655,8 +645,8 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
|
|
|
655
645
|
# so first_non_transaction_block_index != 0
|
|
656
646
|
assert first_non_transaction_block_index > 0
|
|
657
647
|
|
|
658
|
-
transaction_blocks:
|
|
659
|
-
non_transaction_block:
|
|
648
|
+
transaction_blocks: list[BlockRecord] = [b for b in block_records if b.is_transaction_block]
|
|
649
|
+
non_transaction_block: list[BlockRecord] = [b for b in block_records if not b.is_transaction_block]
|
|
660
650
|
assert len(transaction_blocks) > 0
|
|
661
651
|
assert len(non_transaction_block) > 0
|
|
662
652
|
assert transaction_blocks[0] == await get_nearest_transaction_block(
|
|
@@ -686,41 +676,31 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
|
|
|
686
676
|
async def test_coin_name_not_in_request(one_node, self_hostname):
|
|
687
677
|
[full_node_service], _, _ = one_node
|
|
688
678
|
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
)
|
|
679
|
+
async with FullNodeRpcClient.create_as_context(
|
|
680
|
+
self_hostname,
|
|
681
|
+
full_node_service.rpc_server.listen_port,
|
|
682
|
+
full_node_service.root_path,
|
|
683
|
+
full_node_service.config,
|
|
684
|
+
) as client:
|
|
696
685
|
with pytest.raises(ValueError, match="No coin_name in request"):
|
|
697
686
|
await client.fetch("get_mempool_items_by_coin_name", {})
|
|
698
|
-
finally:
|
|
699
|
-
# Checks that the RPC manages to stop the node
|
|
700
|
-
client.close()
|
|
701
|
-
await client.await_closed()
|
|
702
687
|
|
|
703
688
|
|
|
704
689
|
@pytest.mark.anyio
|
|
705
690
|
async def test_coin_name_not_found_in_mempool(one_node, self_hostname):
|
|
706
691
|
[full_node_service], _, _ = one_node
|
|
707
692
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
empty_coin_name = bytes32([0] * 32)
|
|
693
|
+
async with FullNodeRpcClient.create_as_context(
|
|
694
|
+
self_hostname,
|
|
695
|
+
full_node_service.rpc_server.listen_port,
|
|
696
|
+
full_node_service.root_path,
|
|
697
|
+
full_node_service.config,
|
|
698
|
+
) as client:
|
|
699
|
+
empty_coin_name = bytes32.zeros
|
|
717
700
|
mempool_item = await client.get_mempool_items_by_coin_name(empty_coin_name)
|
|
718
|
-
assert mempool_item["success"]
|
|
701
|
+
assert mempool_item["success"]
|
|
719
702
|
assert "mempool_items" in mempool_item
|
|
720
703
|
assert len(mempool_item["mempool_items"]) == 0
|
|
721
|
-
finally:
|
|
722
|
-
client.close()
|
|
723
|
-
await client.await_closed()
|
|
724
704
|
|
|
725
705
|
|
|
726
706
|
@pytest.mark.anyio
|
|
@@ -728,14 +708,12 @@ async def test_coin_name_found_in_mempool(one_node, self_hostname):
|
|
|
728
708
|
[full_node_service], _, bt = one_node
|
|
729
709
|
full_node_api = full_node_service._api
|
|
730
710
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
)
|
|
738
|
-
|
|
711
|
+
async with FullNodeRpcClient.create_as_context(
|
|
712
|
+
self_hostname,
|
|
713
|
+
full_node_service.rpc_server.listen_port,
|
|
714
|
+
full_node_service.root_path,
|
|
715
|
+
full_node_service.config,
|
|
716
|
+
) as client:
|
|
739
717
|
blocks = bt.get_consecutive_blocks(2)
|
|
740
718
|
blocks = bt.get_consecutive_blocks(2, block_list_input=blocks, guarantee_transaction_block=True)
|
|
741
719
|
|
|
@@ -772,7 +750,7 @@ async def test_coin_name_found_in_mempool(one_node, self_hostname):
|
|
|
772
750
|
# empty mempool
|
|
773
751
|
assert len(await client.get_all_mempool_items()) == 0
|
|
774
752
|
|
|
775
|
-
coin_to_spend =
|
|
753
|
+
coin_to_spend = blocks[-1].get_included_reward_coins()[0]
|
|
776
754
|
spend_bundle = wallet.generate_signed_transaction(coin_to_spend.amount, ph_receiver, coin_to_spend)
|
|
777
755
|
await client.push_tx(spend_bundle)
|
|
778
756
|
|
|
@@ -782,13 +760,9 @@ async def test_coin_name_found_in_mempool(one_node, self_hostname):
|
|
|
782
760
|
mempool_item = await client.get_mempool_items_by_coin_name(coin_to_spend.name())
|
|
783
761
|
|
|
784
762
|
# found coin in coin spends
|
|
785
|
-
assert mempool_item["success"]
|
|
763
|
+
assert mempool_item["success"]
|
|
786
764
|
assert "mempool_items" in mempool_item
|
|
787
765
|
assert len(mempool_item["mempool_items"]) > 0
|
|
788
766
|
for item in mempool_item["mempool_items"]:
|
|
789
767
|
removals = [Coin.from_json_dict(coin) for coin in item["removals"]]
|
|
790
768
|
assert coin_to_spend.name() in [coin.name() for coin in removals]
|
|
791
|
-
|
|
792
|
-
finally:
|
|
793
|
-
client.close()
|
|
794
|
-
await client.await_closed()
|
|
@@ -5,7 +5,7 @@ import random
|
|
|
5
5
|
from hashlib import sha256
|
|
6
6
|
from itertools import permutations
|
|
7
7
|
from random import Random
|
|
8
|
-
from typing import
|
|
8
|
+
from typing import Optional
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
11
|
from chia_rs import Coin, MerkleSet, compute_merkle_set_root, confirm_included_already_hashed
|
|
@@ -93,7 +93,7 @@ async def test_merkle_set_duplicate() -> None:
|
|
|
93
93
|
async def test_merkle_set_0() -> None:
|
|
94
94
|
merkle_set = MerkleSet([])
|
|
95
95
|
assert merkle_set.get_root() == bytes32(compute_merkle_set_root([]))
|
|
96
|
-
assert merkle_set.get_root() == bytes32
|
|
96
|
+
assert merkle_set.get_root() == bytes32.zeros
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
@pytest.mark.anyio
|
|
@@ -155,7 +155,7 @@ async def test_merkle_set_4() -> None:
|
|
|
155
155
|
|
|
156
156
|
@pytest.mark.anyio
|
|
157
157
|
async def test_merkle_set_5() -> None:
|
|
158
|
-
BLANK = bytes32
|
|
158
|
+
BLANK = bytes32.zeros
|
|
159
159
|
|
|
160
160
|
a = bytes32([0x58] + [0] * 31)
|
|
161
161
|
b = bytes32([0x23] + [0] * 31)
|
|
@@ -202,7 +202,7 @@ async def test_merkle_set_5() -> None:
|
|
|
202
202
|
|
|
203
203
|
@pytest.mark.anyio
|
|
204
204
|
async def test_merkle_left_edge() -> None:
|
|
205
|
-
BLANK = bytes32
|
|
205
|
+
BLANK = bytes32.zeros
|
|
206
206
|
a = bytes32([0x80] + [0] * 31)
|
|
207
207
|
b = bytes32([0] * 31 + [1])
|
|
208
208
|
c = bytes32([0] * 31 + [2])
|
|
@@ -241,7 +241,7 @@ async def test_merkle_left_edge() -> None:
|
|
|
241
241
|
|
|
242
242
|
@pytest.mark.anyio
|
|
243
243
|
async def test_merkle_right_edge() -> None:
|
|
244
|
-
BLANK = bytes32
|
|
244
|
+
BLANK = bytes32.zeros
|
|
245
245
|
a = bytes32([0x40] + [0] * 31)
|
|
246
246
|
b = bytes32([0xFF] * 31 + [0xFF])
|
|
247
247
|
c = bytes32([0xFF] * 31 + [0xFE])
|
|
@@ -292,7 +292,7 @@ async def test_merkle_set_random_regression() -> None:
|
|
|
292
292
|
rng.seed(123456)
|
|
293
293
|
for i in range(100):
|
|
294
294
|
size = rng.randint(0, 4000)
|
|
295
|
-
values:
|
|
295
|
+
values: list[bytes32] = [rand_hash(rng) for _ in range(size)]
|
|
296
296
|
print(f"iter: {i}/100 size: {size}")
|
|
297
297
|
|
|
298
298
|
for _ in range(10):
|
|
@@ -304,7 +304,7 @@ async def test_merkle_set_random_regression() -> None:
|
|
|
304
304
|
assert rust_root == python_root
|
|
305
305
|
|
|
306
306
|
|
|
307
|
-
def make_test_coins(n: int, rng: Random) ->
|
|
307
|
+
def make_test_coins(n: int, rng: Random) -> list[Coin]:
|
|
308
308
|
return [Coin(bytes32.random(rng), bytes32.random(rng), uint64(rng.randint(0, 10000000))) for i in range(n)]
|
|
309
309
|
|
|
310
310
|
|
|
@@ -314,7 +314,7 @@ def test_validate_removals_full_list(num_coins: int, seeded_random: Random) -> N
|
|
|
314
314
|
# the root can be computed by all the removals
|
|
315
315
|
coins = make_test_coins(num_coins, seeded_random)
|
|
316
316
|
|
|
317
|
-
coin_map:
|
|
317
|
+
coin_map: list[tuple[bytes32, Optional[Coin]]] = []
|
|
318
318
|
removals_merkle_set = MerkleSet([coin.name() for coin in coins])
|
|
319
319
|
for coin in coins:
|
|
320
320
|
coin_map.append((coin.name(), coin))
|
|
@@ -330,8 +330,8 @@ def test_validate_additions_full_list(num_coins: int, batch_size: int, seeded_ra
|
|
|
330
330
|
# the root can be computed by all the removals
|
|
331
331
|
coins = make_test_coins(num_coins, seeded_random)
|
|
332
332
|
|
|
333
|
-
additions:
|
|
334
|
-
leafs:
|
|
333
|
+
additions: list[tuple[bytes32, list[Coin]]] = []
|
|
334
|
+
leafs: list[bytes32] = []
|
|
335
335
|
for coin_batch in to_batches(coins, batch_size):
|
|
336
336
|
puzzle_hash = bytes32.random(seeded_random)
|
|
337
337
|
additions.append((puzzle_hash, coin_batch.entries))
|
chia/_tests/core/test_program.py
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import List
|
|
4
|
-
|
|
5
3
|
from clvm.SExp import CastableType
|
|
6
4
|
from clvm_tools import binutils
|
|
7
5
|
|
|
@@ -25,8 +23,8 @@ def program_roundtrip(o: CastableType) -> None:
|
|
|
25
23
|
|
|
26
24
|
|
|
27
25
|
def test_serialized_program_to() -> None:
|
|
28
|
-
prg = "(q ((0x0101010101010101010101010101010101010101010101010101010101010101 80 123 (() (q . ())))))"
|
|
29
|
-
tests:
|
|
26
|
+
prg = "(q ((0x0101010101010101010101010101010101010101010101010101010101010101 80 123 (() (q . ())))))"
|
|
27
|
+
tests: list[CastableType] = [
|
|
30
28
|
0,
|
|
31
29
|
1,
|
|
32
30
|
(1, 2),
|