chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.6.0rc2__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/__init__.py +8 -4
- chia/_tests/blockchain/blockchain_test_utils.py +6 -8
- chia/_tests/blockchain/test_augmented_chain.py +4 -4
- chia/_tests/blockchain/test_blockchain.py +165 -190
- chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
- chia/_tests/blockchain/test_build_chains.py +2 -4
- chia/_tests/blockchain/test_get_block_generator.py +2 -3
- chia/_tests/clvm/coin_store.py +4 -7
- chia/_tests/clvm/test_clvm_step.py +4 -4
- chia/_tests/clvm/test_puzzle_compression.py +2 -1
- chia/_tests/clvm/test_puzzle_drivers.py +2 -2
- chia/_tests/clvm/test_singletons.py +2 -4
- chia/_tests/clvm/test_spend_sim.py +2 -2
- chia/_tests/cmds/cmd_test_utils.py +27 -45
- chia/_tests/cmds/test_cmd_framework.py +6 -6
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_show.py +4 -4
- chia/_tests/cmds/test_tx_config_args.py +1 -2
- chia/_tests/cmds/testing_classes.py +4 -5
- chia/_tests/cmds/wallet/test_did.py +24 -27
- chia/_tests/cmds/wallet/test_nft.py +12 -10
- chia/_tests/cmds/wallet/test_vcs.py +11 -12
- chia/_tests/cmds/wallet/test_wallet.py +134 -89
- chia/_tests/conftest.py +66 -31
- chia/_tests/connection_utils.py +2 -2
- chia/_tests/core/cmds/test_beta.py +4 -4
- chia/_tests/core/cmds/test_keys.py +2 -3
- chia/_tests/core/cmds/test_wallet.py +15 -15
- chia/_tests/core/consensus/test_pot_iterations.py +19 -73
- chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
- chia/_tests/core/daemon/test_daemon.py +11 -11
- chia/_tests/core/data_layer/conftest.py +2 -2
- chia/_tests/core/data_layer/test_data_rpc.py +28 -14
- chia/_tests/core/data_layer/test_data_store.py +10 -10
- chia/_tests/core/data_layer/util.py +11 -11
- chia/_tests/core/farmer/test_farmer_api.py +2 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
- chia/_tests/core/full_node/stores/test_block_store.py +5 -4
- chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
- chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +3 -4
- chia/_tests/core/full_node/test_conditions.py +21 -23
- chia/_tests/core/full_node/test_full_node.py +273 -70
- chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
- chia/_tests/core/full_node/test_hint_management.py +2 -4
- chia/_tests/core/full_node/test_performance.py +0 -1
- chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
- chia/_tests/core/full_node/test_transactions.py +1 -2
- chia/_tests/core/full_node/test_tx_processing_queue.py +198 -30
- chia/_tests/core/mempool/test_mempool.py +54 -50
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
- chia/_tests/core/mempool/test_mempool_manager.py +988 -854
- chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
- chia/_tests/core/server/serve.py +7 -7
- chia/_tests/core/server/test_dos.py +1 -2
- chia/_tests/core/server/test_event_loop.py +12 -4
- chia/_tests/core/server/test_loop.py +7 -8
- chia/_tests/core/server/test_rate_limits.py +9 -8
- chia/_tests/core/server/test_server.py +61 -1
- chia/_tests/core/services/test_services.py +2 -2
- chia/_tests/core/ssl/test_ssl.py +2 -2
- chia/_tests/core/test_cost_calculation.py +2 -6
- chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
- chia/_tests/core/test_filter.py +0 -1
- chia/_tests/core/test_full_node_rpc.py +2 -2
- chia/_tests/core/test_merkle_set.py +1 -2
- chia/_tests/core/test_seeder.py +4 -4
- chia/_tests/core/util/test_config.py +4 -4
- chia/_tests/core/util/test_jsonify.py +2 -2
- chia/_tests/core/util/test_keychain.py +3 -3
- chia/_tests/core/util/test_lockfile.py +2 -1
- chia/_tests/core/util/test_log_exceptions.py +1 -2
- chia/_tests/core/util/test_streamable.py +17 -17
- chia/_tests/db/test_db_wrapper.py +3 -2
- chia/_tests/environments/wallet.py +14 -14
- chia/_tests/ether.py +4 -3
- chia/_tests/farmer_harvester/test_farmer.py +41 -24
- chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
- chia/_tests/harvester/test_harvester_api.py +11 -4
- chia/_tests/plot_sync/test_plot_sync.py +13 -11
- chia/_tests/plot_sync/test_receiver.py +11 -10
- chia/_tests/plot_sync/test_sync_simulated.py +2 -2
- chia/_tests/plot_sync/util.py +1 -2
- chia/_tests/plotting/test_plot_manager.py +7 -6
- chia/_tests/plotting/test_prover.py +30 -38
- chia/_tests/pools/test_pool_cmdline.py +4 -6
- chia/_tests/pools/test_pool_rpc.py +203 -61
- chia/_tests/pools/test_pool_wallet.py +3 -3
- chia/_tests/pools/test_wallet_pool_store.py +1 -4
- chia/_tests/process_junit.py +2 -2
- chia/_tests/rpc/test_rpc_client.py +4 -4
- chia/_tests/rpc/test_rpc_server.py +3 -3
- chia/_tests/simulation/test_simulation.py +12 -25
- chia/_tests/solver/test_solver_service.py +13 -4
- chia/_tests/testconfig.py +2 -2
- chia/_tests/timelord/test_new_peak.py +22 -11
- chia/_tests/tools/test_run_block.py +0 -2
- chia/_tests/tools/test_virtual_project.py +2 -1
- chia/_tests/util/benchmarks.py +1 -0
- chia/_tests/util/blockchain.py +38 -36
- chia/_tests/util/blockchain_mock.py +11 -11
- chia/_tests/util/build_network_protocol_files.py +2 -1
- chia/_tests/util/coin_store.py +2 -1
- chia/_tests/util/config.py +1 -1
- chia/_tests/util/db_connection.py +2 -3
- chia/_tests/util/full_sync.py +9 -11
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/get_name_puzzle_conditions.py +2 -0
- chia/_tests/util/misc.py +24 -24
- chia/_tests/util/network_protocol_data.py +20 -3
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +292 -3
- chia/_tests/util/setup_nodes.py +62 -47
- chia/_tests/util/spend_sim.py +57 -57
- chia/_tests/util/test_async_pool.py +2 -3
- chia/_tests/util/test_chia_version.py +1 -3
- chia/_tests/util/test_config.py +3 -3
- chia/_tests/util/test_full_block_utils.py +6 -3
- chia/_tests/util/test_limited_semaphore.py +1 -2
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_network.py +1 -2
- chia/_tests/util/test_priority_mutex.py +3 -3
- chia/_tests/util/test_recursive_replace.py +5 -6
- chia/_tests/util/test_replace_str_to_bytes.py +9 -10
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/time_out_assert.py +2 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
- chia/_tests/wallet/conftest.py +6 -6
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
- chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
- chia/_tests/wallet/did_wallet/test_did.py +16 -6
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
- chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
- chia/_tests/wallet/sync/test_wallet_sync.py +63 -60
- chia/_tests/wallet/test_clvm_streamable.py +2 -3
- chia/_tests/wallet/test_coin_management.py +2 -2
- chia/_tests/wallet/test_conditions.py +45 -51
- chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
- chia/_tests/wallet/test_new_wallet_protocol.py +17 -17
- chia/_tests/wallet/test_notifications.py +14 -14
- chia/_tests/wallet/test_signer_protocol.py +5 -5
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
- chia/_tests/wallet/test_transaction_store.py +20 -20
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +380 -228
- chia/_tests/wallet/test_wallet_action_scope.py +4 -4
- chia/_tests/wallet/test_wallet_blockchain.py +12 -12
- chia/_tests/wallet/test_wallet_coin_store.py +3 -4
- chia/_tests/wallet/test_wallet_node.py +16 -15
- chia/_tests/wallet/test_wallet_test_framework.py +2 -1
- chia/_tests/wallet/test_wallet_utils.py +2 -3
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
- chia/_tests/wallet/wallet_block_tools.py +12 -11
- chia/_tests/weight_proof/config.py +1 -0
- chia/_tests/weight_proof/test_weight_proof.py +5 -4
- chia/apis/__init__.py +21 -0
- chia/apis/farmer_stub.py +102 -0
- chia/apis/full_node_stub.py +374 -0
- chia/apis/harvester_stub.py +57 -0
- chia/apis/introducer_stub.py +35 -0
- chia/apis/solver_stub.py +30 -0
- chia/apis/stub_protocol_registry.py +21 -0
- chia/apis/timelord_stub.py +39 -0
- chia/apis/wallet_stub.py +161 -0
- chia/cmds/beta.py +3 -4
- chia/cmds/beta_funcs.py +4 -3
- chia/cmds/check_wallet_db.py +4 -4
- chia/cmds/chia.py +1 -2
- chia/cmds/cmd_classes.py +11 -13
- chia/cmds/cmd_helpers.py +11 -11
- chia/cmds/cmds_util.py +15 -15
- chia/cmds/coin_funcs.py +6 -7
- chia/cmds/coins.py +2 -3
- chia/cmds/configure.py +1 -2
- chia/cmds/data.py +42 -42
- chia/cmds/data_funcs.py +81 -81
- chia/cmds/db.py +4 -5
- 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/data.py +4 -4
- chia/cmds/dev/gh.py +5 -5
- chia/cmds/dev/installers.py +2 -3
- chia/cmds/dev/mempool.py +3 -4
- chia/cmds/dev/mempool_funcs.py +4 -4
- chia/cmds/dev/sim.py +8 -8
- chia/cmds/dump_keyring.py +3 -3
- chia/cmds/farm.py +6 -8
- chia/cmds/farm_funcs.py +25 -24
- chia/cmds/init_funcs.py +4 -4
- chia/cmds/keys.py +16 -18
- chia/cmds/keys_funcs.py +36 -36
- chia/cmds/netspace.py +1 -3
- chia/cmds/netspace_funcs.py +1 -2
- chia/cmds/options.py +3 -2
- chia/cmds/param_types.py +17 -16
- chia/cmds/passphrase.py +6 -7
- chia/cmds/passphrase_funcs.py +11 -13
- chia/cmds/peer.py +1 -3
- chia/cmds/peer_funcs.py +3 -3
- chia/cmds/plotnft.py +6 -7
- chia/cmds/plotnft_funcs.py +37 -26
- chia/cmds/rpc.py +3 -3
- chia/cmds/show.py +3 -5
- chia/cmds/show_funcs.py +9 -9
- chia/cmds/sim_funcs.py +25 -26
- chia/cmds/solver.py +1 -3
- chia/cmds/solver_funcs.py +1 -2
- chia/cmds/start_funcs.py +2 -2
- chia/cmds/wallet.py +76 -81
- chia/cmds/wallet_funcs.py +206 -177
- chia/consensus/augmented_chain.py +6 -6
- chia/consensus/block_body_validation.py +19 -15
- chia/consensus/block_creation.py +25 -21
- chia/consensus/block_header_validation.py +27 -13
- chia/consensus/block_height_map.py +3 -6
- chia/consensus/block_height_map_protocol.py +2 -2
- chia/consensus/block_record.py +2 -4
- chia/consensus/blockchain.py +58 -40
- chia/consensus/blockchain_interface.py +7 -7
- chia/consensus/coin_store_protocol.py +5 -6
- chia/consensus/condition_tools.py +4 -4
- chia/consensus/cost_calculator.py +2 -3
- chia/consensus/default_constants.py +19 -13
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +3 -5
- chia/consensus/find_fork_point.py +2 -4
- chia/consensus/full_block_to_block_record.py +11 -13
- chia/consensus/generator_tools.py +2 -3
- chia/consensus/get_block_challenge.py +50 -26
- chia/consensus/get_block_generator.py +2 -3
- chia/consensus/make_sub_epoch_summary.py +8 -7
- chia/consensus/multiprocess_validation.py +31 -20
- chia/consensus/pos_quality.py +6 -23
- chia/consensus/pot_iterations.py +17 -44
- chia/consensus/signage_point.py +4 -5
- chia/consensus/vdf_info_computation.py +2 -4
- chia/daemon/client.py +8 -8
- chia/daemon/keychain_proxy.py +31 -37
- chia/daemon/server.py +32 -33
- chia/daemon/windows_signal.py +4 -3
- chia/data_layer/data_layer.py +86 -77
- chia/data_layer/data_layer_rpc_api.py +9 -9
- chia/data_layer/data_layer_rpc_client.py +13 -15
- chia/data_layer/data_layer_server.py +3 -3
- chia/data_layer/data_layer_util.py +14 -14
- chia/data_layer/data_layer_wallet.py +94 -101
- chia/data_layer/data_store.py +50 -50
- chia/data_layer/dl_wallet_store.py +9 -12
- chia/data_layer/download_data.py +8 -9
- chia/data_layer/s3_plugin_service.py +5 -9
- chia/data_layer/start_data_layer.py +5 -5
- chia/farmer/farmer.py +31 -31
- chia/farmer/farmer_api.py +45 -33
- chia/farmer/farmer_rpc_api.py +5 -4
- chia/farmer/farmer_rpc_client.py +6 -6
- chia/farmer/start_farmer.py +6 -6
- chia/full_node/block_store.py +13 -16
- chia/full_node/check_fork_next_block.py +1 -2
- chia/full_node/coin_store.py +15 -16
- chia/full_node/eligible_coin_spends.py +3 -3
- chia/full_node/fee_estimate_store.py +2 -3
- chia/full_node/fee_tracker.py +1 -2
- chia/full_node/full_block_utils.py +4 -4
- chia/full_node/full_node.py +239 -223
- chia/full_node/full_node_api.py +197 -152
- chia/full_node/full_node_rpc_api.py +34 -32
- chia/full_node/full_node_rpc_client.py +18 -19
- chia/full_node/full_node_store.py +45 -43
- chia/full_node/hard_fork_utils.py +44 -0
- chia/full_node/hint_management.py +2 -2
- chia/full_node/mempool.py +17 -19
- chia/full_node/mempool_manager.py +89 -42
- chia/full_node/pending_tx_cache.py +2 -3
- chia/full_node/start_full_node.py +5 -5
- chia/full_node/sync_store.py +3 -4
- chia/full_node/tx_processing_queue.py +120 -36
- chia/full_node/weight_proof.py +61 -48
- chia/harvester/harvester.py +25 -24
- chia/harvester/harvester_api.py +61 -38
- chia/harvester/harvester_rpc_api.py +10 -10
- chia/harvester/start_harvester.py +4 -4
- chia/introducer/introducer.py +3 -3
- chia/introducer/introducer_api.py +6 -4
- chia/introducer/start_introducer.py +4 -4
- chia/legacy/keyring.py +3 -3
- chia/plot_sync/delta.py +1 -2
- chia/plot_sync/receiver.py +20 -17
- chia/plot_sync/sender.py +15 -10
- chia/plotters/bladebit.py +7 -7
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +4 -4
- chia/plotters/plotters.py +4 -4
- chia/plotters/plotters_util.py +3 -3
- chia/plotting/cache.py +20 -14
- chia/plotting/check_plots.py +26 -35
- chia/plotting/create_plots.py +22 -23
- chia/plotting/manager.py +21 -14
- chia/plotting/prover.py +59 -42
- chia/plotting/util.py +16 -16
- chia/pools/pool_config.py +2 -1
- chia/pools/pool_puzzles.py +11 -12
- chia/pools/pool_wallet.py +34 -57
- chia/pools/pool_wallet_info.py +39 -10
- chia/protocols/farmer_protocol.py +8 -9
- chia/protocols/fee_estimate.py +3 -4
- chia/protocols/full_node_protocol.py +3 -4
- chia/protocols/harvester_protocol.py +27 -15
- chia/protocols/outbound_message.py +3 -3
- chia/protocols/pool_protocol.py +8 -9
- chia/protocols/shared_protocol.py +1 -2
- chia/protocols/solver_protocol.py +9 -2
- chia/protocols/timelord_protocol.py +4 -7
- chia/protocols/wallet_protocol.py +11 -12
- chia/rpc/rpc_client.py +9 -9
- chia/rpc/rpc_server.py +17 -17
- chia/rpc/util.py +2 -2
- chia/seeder/crawler.py +8 -8
- chia/seeder/crawler_api.py +21 -27
- chia/seeder/crawler_rpc_api.py +2 -2
- chia/seeder/dns_server.py +21 -21
- chia/seeder/start_crawler.py +4 -4
- chia/server/address_manager.py +15 -16
- chia/server/api_protocol.py +11 -11
- chia/server/chia_policy.py +46 -26
- chia/server/introducer_peers.py +2 -3
- chia/server/node_discovery.py +19 -19
- chia/server/rate_limit_numbers.py +4 -5
- chia/server/rate_limits.py +4 -4
- chia/server/resolve_peer_info.py +4 -4
- chia/server/server.py +49 -52
- chia/server/signal_handlers.py +6 -6
- chia/server/start_service.py +17 -17
- chia/server/upnp.py +4 -6
- chia/server/ws_connection.py +52 -37
- chia/simulator/add_blocks_in_batches.py +1 -3
- chia/simulator/block_tools.py +312 -200
- chia/simulator/full_node_simulator.py +56 -35
- chia/simulator/keyring.py +2 -3
- chia/simulator/setup_services.py +15 -15
- chia/simulator/simulator_full_node_rpc_api.py +1 -2
- chia/simulator/simulator_full_node_rpc_client.py +1 -2
- chia/simulator/simulator_protocol.py +1 -2
- chia/simulator/simulator_test_tools.py +3 -3
- chia/simulator/start_simulator.py +7 -7
- chia/simulator/wallet_tools.py +10 -10
- chia/solver/solver.py +10 -10
- chia/solver/solver_api.py +10 -8
- chia/solver/solver_rpc_api.py +2 -2
- chia/solver/start_solver.py +4 -4
- chia/ssl/cacert.pem +148 -90
- chia/ssl/chia_ca.crt +14 -10
- chia/ssl/chia_ca_old.crt +19 -0
- chia/ssl/create_ssl.py +4 -4
- chia/ssl/renewedselfsignedca.conf +4 -0
- chia/ssl/ssl_check.py +1 -2
- chia/timelord/iters_from_block.py +1 -4
- chia/timelord/start_timelord.py +4 -4
- chia/timelord/timelord.py +44 -40
- chia/timelord/timelord_api.py +6 -4
- chia/timelord/timelord_launcher.py +2 -2
- chia/timelord/timelord_rpc_api.py +2 -2
- chia/timelord/timelord_state.py +11 -12
- chia/types/block_protocol.py +1 -3
- chia/types/blockchain_format/coin.py +1 -3
- chia/types/blockchain_format/program.py +11 -8
- chia/types/blockchain_format/proof_of_space.py +123 -76
- chia/types/blockchain_format/tree_hash.py +3 -3
- chia/types/blockchain_format/vdf.py +1 -2
- chia/types/coin_spend.py +3 -3
- chia/types/mempool_item.py +5 -5
- chia/types/mempool_submission_status.py +2 -3
- chia/types/peer_info.py +1 -2
- chia/types/unfinished_header_block.py +3 -4
- chia/types/validation_state.py +1 -2
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +5 -5
- chia/util/bech32m.py +1 -2
- chia/util/beta_metrics.py +2 -2
- chia/util/block_cache.py +4 -4
- chia/util/chia_logging.py +2 -2
- chia/util/chia_version.py +1 -2
- chia/util/config.py +15 -16
- chia/util/db_wrapper.py +26 -27
- chia/util/default_root.py +1 -2
- chia/util/errors.py +3 -3
- chia/util/file_keyring.py +14 -14
- chia/util/files.py +2 -3
- chia/util/hash.py +4 -4
- chia/util/initial-config.yaml +4 -5
- chia/util/inline_executor.py +2 -1
- chia/util/ip_address.py +1 -2
- chia/util/keychain.py +25 -27
- chia/util/keyring_wrapper.py +18 -19
- chia/util/lock.py +3 -4
- chia/util/log_exceptions.py +1 -2
- chia/util/lru_cache.py +2 -2
- chia/util/network.py +6 -6
- chia/util/path.py +2 -3
- chia/util/priority_mutex.py +2 -2
- chia/util/profiler.py +1 -2
- chia/util/safe_cancel_task.py +1 -2
- chia/util/streamable.py +24 -10
- chia/util/task_referencer.py +1 -1
- chia/util/timing.py +3 -3
- chia/util/virtual_project_analysis.py +6 -5
- chia/util/ws_message.py +2 -2
- chia/wallet/cat_wallet/cat_info.py +3 -4
- chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
- chia/wallet/cat_wallet/cat_utils.py +3 -4
- chia/wallet/cat_wallet/cat_wallet.py +61 -83
- chia/wallet/cat_wallet/lineage_store.py +3 -4
- chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
- chia/wallet/coin_selection.py +9 -10
- chia/wallet/conditions.py +142 -106
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
- chia/wallet/derivation_record.py +1 -2
- chia/wallet/derive_keys.py +2 -4
- chia/wallet/did_wallet/did_info.py +10 -11
- chia/wallet/did_wallet/did_wallet.py +36 -82
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
- chia/wallet/driver_protocol.py +5 -7
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
- chia/wallet/nft_wallet/nft_info.py +8 -9
- chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
- chia/wallet/nft_wallet/nft_wallet.py +79 -116
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
- chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
- chia/wallet/nft_wallet/uncurry_nft.py +10 -11
- chia/wallet/notification_manager.py +3 -3
- chia/wallet/notification_store.py +44 -61
- chia/wallet/outer_puzzles.py +6 -7
- chia/wallet/puzzle_drivers.py +34 -6
- chia/wallet/puzzles/clawback/drivers.py +6 -6
- chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
- chia/wallet/puzzles/load_clvm.py +1 -1
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
- chia/wallet/puzzles/singleton_top_layer.py +2 -3
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
- chia/wallet/puzzles/tails.py +3 -3
- chia/wallet/singleton.py +5 -7
- chia/wallet/singleton_record.py +3 -3
- chia/wallet/start_wallet.py +5 -5
- chia/wallet/trade_manager.py +37 -58
- chia/wallet/trade_record.py +4 -4
- chia/wallet/trading/offer.py +59 -46
- chia/wallet/trading/trade_store.py +8 -9
- chia/wallet/transaction_record.py +8 -8
- chia/wallet/uncurried_puzzle.py +1 -2
- chia/wallet/util/clvm_streamable.py +12 -12
- chia/wallet/util/compute_hints.py +4 -5
- chia/wallet/util/curry_and_treehash.py +1 -2
- chia/wallet/util/merkle_tree.py +2 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/wallet/util/signing.py +85 -0
- chia/wallet/util/tx_config.py +15 -6
- chia/wallet/util/wallet_sync_utils.py +14 -16
- chia/wallet/util/wallet_types.py +2 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
- chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
- chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
- chia/wallet/vc_wallet/vc_drivers.py +27 -27
- chia/wallet/vc_wallet/vc_store.py +5 -6
- chia/wallet/vc_wallet/vc_wallet.py +33 -61
- chia/wallet/wallet.py +50 -78
- chia/wallet/wallet_action_scope.py +11 -11
- chia/wallet/wallet_blockchain.py +12 -12
- chia/wallet/wallet_coin_record.py +12 -6
- chia/wallet/wallet_coin_store.py +24 -25
- chia/wallet/wallet_interested_store.py +3 -5
- chia/wallet/wallet_nft_store.py +10 -11
- chia/wallet/wallet_node.py +53 -61
- chia/wallet/wallet_node_api.py +5 -3
- chia/wallet/wallet_protocol.py +23 -23
- chia/wallet/wallet_puzzle_store.py +15 -18
- chia/wallet/wallet_request_types.py +778 -114
- chia/wallet/wallet_retry_store.py +1 -3
- chia/wallet/wallet_rpc_api.py +572 -909
- chia/wallet/wallet_rpc_client.py +87 -279
- chia/wallet/wallet_singleton_store.py +3 -4
- chia/wallet/wallet_state_manager.py +332 -106
- chia/wallet/wallet_transaction_store.py +11 -14
- chia/wallet/wallet_user_store.py +4 -6
- chia/wallet/wallet_weight_proof_handler.py +4 -4
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +6 -5
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
- chia/apis.py +0 -21
- chia/consensus/check_time_locks.py +0 -57
- chia/data_layer/puzzles/__init__.py +0 -0
- chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
- chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
- chia/types/coin_record.py +0 -44
- chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
chia/_tests/util/spend_sim.py
CHANGED
|
@@ -7,11 +7,12 @@ from collections.abc import AsyncIterator
|
|
|
7
7
|
from contextlib import asynccontextmanager
|
|
8
8
|
from dataclasses import dataclass
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import Any
|
|
10
|
+
from typing import Any
|
|
11
11
|
|
|
12
12
|
import anyio
|
|
13
13
|
from chia_rs import (
|
|
14
14
|
DONT_VALIDATE_SIGNATURE,
|
|
15
|
+
CoinRecord,
|
|
15
16
|
CoinSpend,
|
|
16
17
|
ConsensusConstants,
|
|
17
18
|
G2Element,
|
|
@@ -34,7 +35,6 @@ from chia.full_node.mempool import Mempool
|
|
|
34
35
|
from chia.full_node.mempool_manager import MempoolManager
|
|
35
36
|
from chia.types.blockchain_format.coin import Coin
|
|
36
37
|
from chia.types.blockchain_format.program import INFINITE_COST
|
|
37
|
-
from chia.types.coin_record import CoinRecord
|
|
38
38
|
from chia.types.generator_types import BlockGenerator
|
|
39
39
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
40
40
|
from chia.types.mempool_item import MempoolItem
|
|
@@ -58,7 +58,7 @@ and is designed so that you could test with it and then swap in a real rpc clien
|
|
|
58
58
|
|
|
59
59
|
@asynccontextmanager
|
|
60
60
|
async def sim_and_client(
|
|
61
|
-
db_path:
|
|
61
|
+
db_path: Path | None = None, defaults: ConsensusConstants = DEFAULT_CONSTANTS, pass_prefarm: bool = True
|
|
62
62
|
) -> AsyncIterator[tuple[SpendSim, SimClient]]:
|
|
63
63
|
async with SpendSim.managed(db_path, defaults) as sim:
|
|
64
64
|
client: SimClient = SimClient(sim)
|
|
@@ -103,7 +103,7 @@ class CostLogger:
|
|
|
103
103
|
@streamable
|
|
104
104
|
@dataclass(frozen=True)
|
|
105
105
|
class SimFullBlock(Streamable):
|
|
106
|
-
transactions_generator:
|
|
106
|
+
transactions_generator: BlockGenerator | None
|
|
107
107
|
height: uint32 # Note that height is not on a regular FullBlock
|
|
108
108
|
|
|
109
109
|
|
|
@@ -155,7 +155,7 @@ class SpendSim:
|
|
|
155
155
|
@classmethod
|
|
156
156
|
@contextlib.asynccontextmanager
|
|
157
157
|
async def managed(
|
|
158
|
-
cls, db_path:
|
|
158
|
+
cls, db_path: Path | None = None, defaults: ConsensusConstants = DEFAULT_CONSTANTS
|
|
159
159
|
) -> AsyncIterator[Self]:
|
|
160
160
|
self = cls()
|
|
161
161
|
if db_path is None:
|
|
@@ -166,44 +166,44 @@ class SpendSim:
|
|
|
166
166
|
async with DBWrapper2.managed(database=uri, uri=True, reader_count=1, db_version=2) as self.db_wrapper:
|
|
167
167
|
self.coin_store = await CoinStore.create(self.db_wrapper)
|
|
168
168
|
self.hint_store = await HintStore.create(self.db_wrapper)
|
|
169
|
-
self.mempool_manager = MempoolManager(
|
|
170
|
-
self.coin_store.get_coin_records, self.coin_store.get_unspent_lineage_info_for_puzzle_hash, defaults
|
|
171
|
-
)
|
|
172
169
|
self.defaults = defaults
|
|
173
170
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
"
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
171
|
+
async with MempoolManager.managed(
|
|
172
|
+
self.coin_store.get_coin_records, self.coin_store.get_unspent_lineage_info_for_puzzle_hash, defaults
|
|
173
|
+
) as self.mempool_manager:
|
|
174
|
+
# Load the next data if there is any
|
|
175
|
+
async with self.db_wrapper.writer_maybe_transaction() as conn:
|
|
176
|
+
await conn.execute("CREATE TABLE IF NOT EXISTS block_data(data blob PRIMARY KEY)")
|
|
177
|
+
cursor = await conn.execute("SELECT * from block_data")
|
|
178
|
+
row = await cursor.fetchone()
|
|
179
|
+
await cursor.close()
|
|
180
|
+
if row is not None:
|
|
181
|
+
store_data = SimStore.from_bytes(row[0])
|
|
182
|
+
self.timestamp = store_data.timestamp
|
|
183
|
+
self.block_height = store_data.block_height
|
|
184
|
+
self.block_records = store_data.block_records
|
|
185
|
+
self.blocks = store_data.blocks
|
|
186
|
+
self.mempool_manager.peak = self.block_records[-1]
|
|
187
|
+
else:
|
|
188
|
+
self.timestamp = uint64(1)
|
|
189
|
+
self.block_height = uint32(0)
|
|
190
|
+
self.block_records = []
|
|
191
|
+
self.blocks = []
|
|
192
|
+
|
|
193
|
+
try:
|
|
194
|
+
yield self
|
|
195
|
+
finally:
|
|
196
|
+
with anyio.CancelScope(shield=True):
|
|
197
|
+
async with self.db_wrapper.writer_maybe_transaction() as conn:
|
|
198
|
+
c = await conn.execute("DELETE FROM block_data")
|
|
199
|
+
await c.close()
|
|
200
|
+
c = await conn.execute(
|
|
201
|
+
"INSERT INTO block_data VALUES(?)",
|
|
202
|
+
(bytes(SimStore(self.timestamp, self.block_height, self.block_records, self.blocks)),),
|
|
203
|
+
)
|
|
204
|
+
await c.close()
|
|
205
|
+
|
|
206
|
+
async def new_peak(self, spent_coins_ids: list[bytes32] | None) -> None:
|
|
207
207
|
await self.mempool_manager.new_peak(self.block_records[-1], spent_coins_ids)
|
|
208
208
|
|
|
209
209
|
def new_coin_record(self, coin: Coin, coinbase: bool = False) -> CoinRecord:
|
|
@@ -229,7 +229,7 @@ class SpendSim:
|
|
|
229
229
|
coins.add(coin)
|
|
230
230
|
return list(coins)
|
|
231
231
|
|
|
232
|
-
async def generate_transaction_generator(self, bundle:
|
|
232
|
+
async def generate_transaction_generator(self, bundle: SpendBundle | None) -> BlockGenerator | None:
|
|
233
233
|
if bundle is None:
|
|
234
234
|
return None
|
|
235
235
|
return simple_solution_generator(bundle)
|
|
@@ -257,7 +257,7 @@ class SpendSim:
|
|
|
257
257
|
),
|
|
258
258
|
]
|
|
259
259
|
# Coin store gets updated
|
|
260
|
-
generator_bundle:
|
|
260
|
+
generator_bundle: SpendBundle | None = None
|
|
261
261
|
tx_additions = []
|
|
262
262
|
tx_removals = []
|
|
263
263
|
spent_coins_ids = None
|
|
@@ -295,7 +295,7 @@ class SpendSim:
|
|
|
295
295
|
tx_removals=spent_coins_ids if spent_coins_ids is not None else [],
|
|
296
296
|
)
|
|
297
297
|
# SimBlockRecord is created
|
|
298
|
-
generator:
|
|
298
|
+
generator: BlockGenerator | None = await self.generate_transaction_generator(generator_bundle)
|
|
299
299
|
self.block_records.append(SimBlockRecord.create(included_reward_coins, next_block_height, self.timestamp))
|
|
300
300
|
self.blocks.append(SimFullBlock(generator, next_block_height))
|
|
301
301
|
|
|
@@ -336,7 +336,7 @@ class SimClient:
|
|
|
336
336
|
def __init__(self, service: SpendSim) -> None:
|
|
337
337
|
self.service = service
|
|
338
338
|
|
|
339
|
-
async def push_tx(self, spend_bundle: SpendBundle) -> tuple[MempoolInclusionStatus,
|
|
339
|
+
async def push_tx(self, spend_bundle: SpendBundle) -> tuple[MempoolInclusionStatus, Err | None]:
|
|
340
340
|
try:
|
|
341
341
|
spend_bundle_id = spend_bundle.name()
|
|
342
342
|
sbc = await self.service.mempool_manager.pre_validate_spendbundle(spend_bundle, spend_bundle_id)
|
|
@@ -348,14 +348,14 @@ class SimClient:
|
|
|
348
348
|
)
|
|
349
349
|
return info.status, info.error
|
|
350
350
|
|
|
351
|
-
async def get_coin_record_by_name(self, name: bytes32) ->
|
|
351
|
+
async def get_coin_record_by_name(self, name: bytes32) -> CoinRecord | None:
|
|
352
352
|
return await self.service.coin_store.get_coin_record(name)
|
|
353
353
|
|
|
354
354
|
async def get_coin_records_by_names(
|
|
355
355
|
self,
|
|
356
356
|
names: list[bytes32],
|
|
357
|
-
start_height:
|
|
358
|
-
end_height:
|
|
357
|
+
start_height: int | None = None,
|
|
358
|
+
end_height: int | None = None,
|
|
359
359
|
include_spent_coins: bool = False,
|
|
360
360
|
) -> list[CoinRecord]:
|
|
361
361
|
kwargs: dict[str, Any] = {"include_spent_coins": include_spent_coins, "names": names}
|
|
@@ -368,8 +368,8 @@ class SimClient:
|
|
|
368
368
|
async def get_coin_records_by_parent_ids(
|
|
369
369
|
self,
|
|
370
370
|
parent_ids: list[bytes32],
|
|
371
|
-
start_height:
|
|
372
|
-
end_height:
|
|
371
|
+
start_height: int | None = None,
|
|
372
|
+
end_height: int | None = None,
|
|
373
373
|
include_spent_coins: bool = False,
|
|
374
374
|
) -> list[CoinRecord]:
|
|
375
375
|
kwargs: dict[str, Any] = {"include_spent_coins": include_spent_coins, "parent_ids": parent_ids}
|
|
@@ -383,8 +383,8 @@ class SimClient:
|
|
|
383
383
|
self,
|
|
384
384
|
puzzle_hash: bytes32,
|
|
385
385
|
include_spent_coins: bool = True,
|
|
386
|
-
start_height:
|
|
387
|
-
end_height:
|
|
386
|
+
start_height: int | None = None,
|
|
387
|
+
end_height: int | None = None,
|
|
388
388
|
) -> list[CoinRecord]:
|
|
389
389
|
kwargs: dict[str, Any] = {"include_spent_coins": include_spent_coins, "puzzle_hash": puzzle_hash}
|
|
390
390
|
if start_height is not None:
|
|
@@ -397,8 +397,8 @@ class SimClient:
|
|
|
397
397
|
self,
|
|
398
398
|
puzzle_hashes: list[bytes32],
|
|
399
399
|
include_spent_coins: bool = True,
|
|
400
|
-
start_height:
|
|
401
|
-
end_height:
|
|
400
|
+
start_height: int | None = None,
|
|
401
|
+
end_height: int | None = None,
|
|
402
402
|
) -> list[CoinRecord]:
|
|
403
403
|
kwargs: dict[str, Any] = {"include_spent_coins": include_spent_coins, "puzzle_hashes": puzzle_hashes}
|
|
404
404
|
if start_height is not None:
|
|
@@ -460,7 +460,7 @@ class SimClient:
|
|
|
460
460
|
spends[item.name] = item
|
|
461
461
|
return spends
|
|
462
462
|
|
|
463
|
-
async def get_mempool_item_by_tx_id(self, tx_id: bytes32) ->
|
|
463
|
+
async def get_mempool_item_by_tx_id(self, tx_id: bytes32) -> dict[str, Any] | None:
|
|
464
464
|
item = self.service.mempool_manager.get_mempool_item(tx_id)
|
|
465
465
|
if item is None:
|
|
466
466
|
return None
|
|
@@ -471,8 +471,8 @@ class SimClient:
|
|
|
471
471
|
self,
|
|
472
472
|
hint: bytes32,
|
|
473
473
|
include_spent_coins: bool = True,
|
|
474
|
-
start_height:
|
|
475
|
-
end_height:
|
|
474
|
+
start_height: int | None = None,
|
|
475
|
+
end_height: int | None = None,
|
|
476
476
|
) -> list[CoinRecord]:
|
|
477
477
|
"""
|
|
478
478
|
Retrieves coins by hint, by default returns unspent coins.
|
|
@@ -4,7 +4,6 @@ import asyncio
|
|
|
4
4
|
import random
|
|
5
5
|
import re
|
|
6
6
|
from dataclasses import dataclass
|
|
7
|
-
from typing import Optional
|
|
8
7
|
|
|
9
8
|
import anyio
|
|
10
9
|
import pytest
|
|
@@ -128,12 +127,12 @@ async def test_worker_exception_logged(caplog: pytest.LogCaptureFixture) -> None
|
|
|
128
127
|
def __init__(self) -> None:
|
|
129
128
|
super().__init__(expected_message)
|
|
130
129
|
|
|
131
|
-
work_queue: asyncio.Queue[
|
|
130
|
+
work_queue: asyncio.Queue[Exception | None] = asyncio.Queue()
|
|
132
131
|
result_queue: asyncio.Queue[None] = asyncio.Queue()
|
|
133
132
|
|
|
134
133
|
async def worker(
|
|
135
134
|
worker_id: int,
|
|
136
|
-
work_queue: asyncio.Queue[
|
|
135
|
+
work_queue: asyncio.Queue[Exception | None] = work_queue,
|
|
137
136
|
result_queue: asyncio.Queue[None] = result_queue,
|
|
138
137
|
) -> None:
|
|
139
138
|
work = await work_queue.get()
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
from packaging.version import Version
|
|
7
5
|
|
|
@@ -46,5 +44,5 @@ def test_chia_short_version() -> None:
|
|
|
46
44
|
("something", "something"),
|
|
47
45
|
],
|
|
48
46
|
)
|
|
49
|
-
def test_chia_short_version_from_str(version: str, result:
|
|
47
|
+
def test_chia_short_version_from_str(version: str, result: str | None) -> None:
|
|
50
48
|
assert chia_short_version(version) == result
|
chia/_tests/util/test_config.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
from chia_rs.sized_ints import uint16
|
|
7
7
|
|
|
@@ -158,8 +158,8 @@ class SetPeerInfoCase(DataCase):
|
|
|
158
158
|
service_config: dict[str, Any]
|
|
159
159
|
requested_node_type: NodeType
|
|
160
160
|
expected_service_config: dict[str, Any]
|
|
161
|
-
peer_host:
|
|
162
|
-
peer_port:
|
|
161
|
+
peer_host: str | None = None
|
|
162
|
+
peer_port: int | None = None
|
|
163
163
|
marks: Marks = ()
|
|
164
164
|
|
|
165
165
|
@property
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
4
|
from collections.abc import Generator, Iterator
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
from chia_rs import (
|
|
@@ -101,6 +100,7 @@ def get_reward_chain_block(height: uint32) -> Generator[RewardChainBlock, None,
|
|
|
101
100
|
g2(), # reward_chain_sp_signature
|
|
102
101
|
vdf(), # reward_chain_ip_vdf
|
|
103
102
|
infused_challenge_chain_ip_vdf,
|
|
103
|
+
None, # header_mmr_root
|
|
104
104
|
has_transactions,
|
|
105
105
|
)
|
|
106
106
|
|
|
@@ -135,7 +135,7 @@ def get_foliage() -> Generator[Foliage, None, None]:
|
|
|
135
135
|
)
|
|
136
136
|
|
|
137
137
|
|
|
138
|
-
def get_foliage_transaction_block() -> Generator[
|
|
138
|
+
def get_foliage_transaction_block() -> Generator[FoliageTransactionBlock | None, None, None]:
|
|
139
139
|
yield None
|
|
140
140
|
timestamp = uint64(1631794488)
|
|
141
141
|
yield FoliageTransactionBlock(
|
|
@@ -148,7 +148,7 @@ def get_foliage_transaction_block() -> Generator[Optional[FoliageTransactionBloc
|
|
|
148
148
|
)
|
|
149
149
|
|
|
150
150
|
|
|
151
|
-
def get_transactions_info(height: uint32, foliage_transaction_block:
|
|
151
|
+
def get_transactions_info(height: uint32, foliage_transaction_block: FoliageTransactionBlock | None):
|
|
152
152
|
if not foliage_transaction_block:
|
|
153
153
|
yield None
|
|
154
154
|
else:
|
|
@@ -255,6 +255,9 @@ def get_full_blocks() -> Iterator[FullBlock]:
|
|
|
255
255
|
|
|
256
256
|
|
|
257
257
|
@pytest.mark.anyio
|
|
258
|
+
@pytest.mark.skip(
|
|
259
|
+
"Very slow test with limited usefulness: was used to ensure the cheap parser for FullBlock matched the regular one"
|
|
260
|
+
)
|
|
258
261
|
async def test_parser():
|
|
259
262
|
# loop over every combination of Optionals being set and not set
|
|
260
263
|
# along with random values for the FullBlock fields. Ensure
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
|
|
@@ -18,7 +17,7 @@ async def test_stuff() -> None:
|
|
|
18
17
|
semaphore = LimitedSemaphore.create(active_limit=active_limit, waiting_limit=waiting_limit)
|
|
19
18
|
finish_event = asyncio.Event()
|
|
20
19
|
|
|
21
|
-
async def acquire(entered_event:
|
|
20
|
+
async def acquire(entered_event: asyncio.Event | None = None) -> None:
|
|
22
21
|
async with semaphore.acquire():
|
|
23
22
|
assert entered_event is not None
|
|
24
23
|
entered_event.set()
|
chia/_tests/util/test_misc.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import contextlib
|
|
4
4
|
from collections.abc import AsyncIterator, Iterator
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import TypeVar
|
|
6
6
|
|
|
7
7
|
import aiohttp
|
|
8
8
|
import anyio
|
|
@@ -340,7 +340,7 @@ async def test_valued_event_wait_already_set() -> None:
|
|
|
340
340
|
async def test_valued_event_wait_not_yet_set() -> None:
|
|
341
341
|
valued_event = ValuedEvent[int]()
|
|
342
342
|
value = 37
|
|
343
|
-
result:
|
|
343
|
+
result: int | None = None
|
|
344
344
|
|
|
345
345
|
async def wait(valued_event: ValuedEvent[int]) -> None:
|
|
346
346
|
nonlocal result
|
chia/_tests/util/test_network.py
CHANGED
|
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|
|
3
3
|
import os
|
|
4
4
|
import sys
|
|
5
5
|
from ipaddress import IPv4Address, IPv6Address
|
|
6
|
-
from typing import Union
|
|
7
6
|
|
|
8
7
|
import pytest
|
|
9
8
|
|
|
@@ -83,7 +82,7 @@ async def test_resolve6() -> None:
|
|
|
83
82
|
("93.184.216.34", IPv4Address),
|
|
84
83
|
],
|
|
85
84
|
)
|
|
86
|
-
def test_ip_address(address_string: str, expected_inner: type[
|
|
85
|
+
def test_ip_address(address_string: str, expected_inner: type[IPv4Address | IPv6Address]) -> None:
|
|
87
86
|
inner = expected_inner(address_string)
|
|
88
87
|
ip = IPAddress.create(address_string)
|
|
89
88
|
# Helpers
|
|
@@ -7,8 +7,8 @@ import itertools
|
|
|
7
7
|
import logging
|
|
8
8
|
import random
|
|
9
9
|
import time
|
|
10
|
+
from collections.abc import Callable
|
|
10
11
|
from dataclasses import dataclass
|
|
11
|
-
from typing import Callable, Optional
|
|
12
12
|
|
|
13
13
|
import anyio
|
|
14
14
|
import pytest
|
|
@@ -119,8 +119,8 @@ class Request:
|
|
|
119
119
|
# TODO: is the ID unneeded?
|
|
120
120
|
id: str
|
|
121
121
|
priority: MutexPriority
|
|
122
|
-
acquisition_order:
|
|
123
|
-
release_order:
|
|
122
|
+
acquisition_order: int | None = None
|
|
123
|
+
release_order: int | None = None
|
|
124
124
|
order_counter: Callable[[], int] = counter.__next__
|
|
125
125
|
# TODO: done may not be needed
|
|
126
126
|
done: bool = False
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import copy
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from typing import Optional, Union
|
|
6
5
|
|
|
7
6
|
import pytest
|
|
8
7
|
|
|
@@ -19,7 +18,7 @@ class TestC:
|
|
|
19
18
|
|
|
20
19
|
# WARNING: this is just a simple stand in for rust classes and is not a good
|
|
21
20
|
# reference for how such a method should be implemented in python
|
|
22
|
-
def replace(self, **kwargs:
|
|
21
|
+
def replace(self, **kwargs: int | str | TestA | None) -> TestC:
|
|
23
22
|
ret = TestC(copy.deepcopy(self.a), copy.deepcopy(self.b))
|
|
24
23
|
for key, value in kwargs.items():
|
|
25
24
|
if key == "a":
|
|
@@ -36,22 +35,22 @@ class TestA:
|
|
|
36
35
|
a: int
|
|
37
36
|
b: str
|
|
38
37
|
c: list[int]
|
|
39
|
-
d:
|
|
38
|
+
d: TestC | None
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
class TestB:
|
|
43
42
|
a: int
|
|
44
43
|
b: str
|
|
45
|
-
c:
|
|
44
|
+
c: TestA | None
|
|
46
45
|
|
|
47
|
-
def __init__(self, a: int, b: str, c:
|
|
46
|
+
def __init__(self, a: int, b: str, c: TestA | None):
|
|
48
47
|
self.a = a
|
|
49
48
|
self.b = b
|
|
50
49
|
self.c = c
|
|
51
50
|
|
|
52
51
|
# WARNING: this is just a simple stand in for rust classes and is not a good
|
|
53
52
|
# reference for how such a method should be implemented in python
|
|
54
|
-
def replace(self, **kwargs:
|
|
53
|
+
def replace(self, **kwargs: int | str | TestA | None) -> TestB:
|
|
55
54
|
ret = TestB(copy.deepcopy(self.a), copy.deepcopy(self.b), copy.deepcopy(self.c))
|
|
56
55
|
for key, value in kwargs.items():
|
|
57
56
|
if key == "a": # pragma: no cover
|
|
@@ -27,8 +27,7 @@ test_constants = ConsensusConstants(
|
|
|
27
27
|
NUMBER_ZERO_BITS_PLOT_FILTER_V2=uint8(9),
|
|
28
28
|
MIN_PLOT_SIZE_V1=uint8(32),
|
|
29
29
|
MAX_PLOT_SIZE_V1=uint8(50),
|
|
30
|
-
|
|
31
|
-
MAX_PLOT_SIZE_V2=uint8(32),
|
|
30
|
+
PLOT_SIZE_V2=uint8(18),
|
|
32
31
|
SUB_SLOT_TIME_TARGET=uint16(600),
|
|
33
32
|
NUM_SP_INTERVALS_EXTRA=uint8(3),
|
|
34
33
|
MAX_FUTURE_TIME2=uint32(2 * 60),
|
|
@@ -56,21 +55,21 @@ test_constants = ConsensusConstants(
|
|
|
56
55
|
BLOCKS_CACHE_SIZE=uint32(4608 + (128 * 4)),
|
|
57
56
|
WEIGHT_PROOF_RECENT_BLOCKS=uint32(1000),
|
|
58
57
|
MAX_BLOCK_COUNT_PER_REQUESTS=uint32(32),
|
|
59
|
-
MAX_GENERATOR_SIZE=uint32(1000000),
|
|
60
58
|
MAX_GENERATOR_REF_LIST_SIZE=uint32(512),
|
|
61
59
|
POOL_SUB_SLOT_ITERS=uint64(37600000000),
|
|
62
60
|
HARD_FORK_HEIGHT=uint32(5496000),
|
|
63
61
|
HARD_FORK2_HEIGHT=uint32(0xFFFFFFFF),
|
|
64
|
-
|
|
62
|
+
SOFT_FORK8_HEIGHT=uint32(8655000),
|
|
63
|
+
PLOT_V1_PHASE_OUT_EPOCH_BITS=uint8(8),
|
|
65
64
|
PLOT_FILTER_128_HEIGHT=uint32(10542000),
|
|
66
65
|
PLOT_FILTER_64_HEIGHT=uint32(15592000),
|
|
67
66
|
PLOT_FILTER_32_HEIGHT=uint32(20643000),
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
MIN_PLOT_STRENGTH=uint8(2),
|
|
68
|
+
MAX_PLOT_STRENGTH=uint8(32),
|
|
69
|
+
QUALITY_PROOF_SCAN_FILTER=uint8(5),
|
|
70
|
+
PLOT_FILTER_V2_FIRST_ADJUSTMENT_HEIGHT=uint32(0xFFFFFFFA),
|
|
71
|
+
PLOT_FILTER_V2_SECOND_ADJUSTMENT_HEIGHT=uint32(0xFFFFFFFB),
|
|
72
|
+
PLOT_FILTER_V2_THIRD_ADJUSTMENT_HEIGHT=uint32(0xFFFFFFFC),
|
|
74
73
|
)
|
|
75
74
|
|
|
76
75
|
|
|
@@ -8,19 +8,19 @@ from chia.consensus.default_constants import update_testnet_overrides
|
|
|
8
8
|
def test_testnet11() -> None:
|
|
9
9
|
overrides: dict[str, Any] = {}
|
|
10
10
|
update_testnet_overrides("testnet11", overrides)
|
|
11
|
-
assert overrides == {"
|
|
11
|
+
assert overrides == {"PLOT_SIZE_V2": 28, "SOFT_FORK8_HEIGHT": 3680000}
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def test_min_plot_size() -> None:
|
|
15
15
|
overrides: dict[str, Any] = {"MIN_PLOT_SIZE": 18}
|
|
16
16
|
update_testnet_overrides("testnet11", overrides)
|
|
17
|
-
assert overrides == {"MIN_PLOT_SIZE_V1": 18, "
|
|
17
|
+
assert overrides == {"MIN_PLOT_SIZE_V1": 18, "PLOT_SIZE_V2": 28, "SOFT_FORK8_HEIGHT": 3680000}
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def test_max_plot_size() -> None:
|
|
21
21
|
overrides: dict[str, Any] = {"MAX_PLOT_SIZE": 32}
|
|
22
22
|
update_testnet_overrides("testnet11", overrides)
|
|
23
|
-
assert overrides == {"MAX_PLOT_SIZE_V1": 32, "
|
|
23
|
+
assert overrides == {"MAX_PLOT_SIZE_V1": 32, "PLOT_SIZE_V2": 28, "SOFT_FORK8_HEIGHT": 3680000}
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def test_mainnet() -> None:
|
|
@@ -6,10 +6,10 @@ import json
|
|
|
6
6
|
import logging
|
|
7
7
|
import pathlib
|
|
8
8
|
import time
|
|
9
|
-
from collections.abc import Awaitable, Iterable
|
|
9
|
+
from collections.abc import Awaitable, Callable, Iterable
|
|
10
10
|
from inspect import getframeinfo, stack
|
|
11
11
|
from pathlib import Path
|
|
12
|
-
from typing import TYPE_CHECKING, Any,
|
|
12
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Protocol, TypeVar, cast, final
|
|
13
13
|
|
|
14
14
|
from typing_extensions import Self
|
|
15
15
|
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
from chia_rs import AugSchemeMPL, G2Element, PrivateKey
|
|
7
5
|
from chia_rs.sized_ints import uint64
|
|
@@ -38,13 +36,13 @@ async def do_spend(
|
|
|
38
36
|
coins: list[Coin],
|
|
39
37
|
lineage_proofs: list[LineageProof],
|
|
40
38
|
inner_solutions: list[Program],
|
|
41
|
-
expected_result: tuple[MempoolInclusionStatus,
|
|
39
|
+
expected_result: tuple[MempoolInclusionStatus, Err | None],
|
|
42
40
|
reveal_limitations_program: bool = True,
|
|
43
41
|
signatures: list[G2Element] = [],
|
|
44
|
-
extra_deltas:
|
|
42
|
+
extra_deltas: list[int] | None = None,
|
|
45
43
|
additional_spends: list[WalletSpendBundle] = [],
|
|
46
|
-
limitations_solutions:
|
|
47
|
-
cost_logger:
|
|
44
|
+
limitations_solutions: list[Program] | None = None,
|
|
45
|
+
cost_logger: CostLogger | None = None,
|
|
48
46
|
cost_log_msg: str = "",
|
|
49
47
|
) -> int:
|
|
50
48
|
if limitations_solutions is None:
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
from chia_rs.sized_bytes import bytes32
|
|
7
5
|
from chia_rs.sized_ints import uint64
|
|
@@ -22,12 +20,12 @@ def test_cat_outer_puzzle() -> None:
|
|
|
22
20
|
cat_puzzle: Program = construct_cat_puzzle(CAT_MOD, tail, ACS)
|
|
23
21
|
double_cat_puzzle: Program = construct_cat_puzzle(CAT_MOD, tail, cat_puzzle)
|
|
24
22
|
uncurried_cat_puzzle = uncurry_puzzle(double_cat_puzzle)
|
|
25
|
-
cat_driver:
|
|
23
|
+
cat_driver: PuzzleInfo | None = match_puzzle(uncurried_cat_puzzle)
|
|
26
24
|
|
|
27
25
|
assert cat_driver is not None
|
|
28
26
|
assert cat_driver.type() == "CAT"
|
|
29
27
|
assert cat_driver["tail"] == tail
|
|
30
|
-
inside_cat_driver:
|
|
28
|
+
inside_cat_driver: PuzzleInfo | None = cat_driver.also()
|
|
31
29
|
assert inside_cat_driver is not None
|
|
32
30
|
assert inside_cat_driver.type() == "CAT"
|
|
33
31
|
assert inside_cat_driver["tail"] == tail
|