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
|
@@ -4,10 +4,10 @@ import asyncio
|
|
|
4
4
|
import itertools
|
|
5
5
|
import time
|
|
6
6
|
from collections.abc import Collection
|
|
7
|
-
from typing import Any
|
|
7
|
+
from typing import Any
|
|
8
8
|
|
|
9
9
|
import anyio
|
|
10
|
-
from chia_rs import BlockRecord, FullBlock, SpendBundle
|
|
10
|
+
from chia_rs import BlockRecord, CoinRecord, FullBlock, SpendBundle
|
|
11
11
|
from chia_rs.sized_bytes import bytes32
|
|
12
12
|
from chia_rs.sized_ints import uint8, uint32, uint64, uint128
|
|
13
13
|
|
|
@@ -24,7 +24,6 @@ from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
|
24
24
|
from chia.simulator.block_tools import BlockTools
|
|
25
25
|
from chia.simulator.simulator_protocol import FarmNewBlockProtocol, GetAllCoinsProtocol, ReorgProtocol
|
|
26
26
|
from chia.types.blockchain_format.coin import Coin
|
|
27
|
-
from chia.types.coin_record import CoinRecord
|
|
28
27
|
from chia.types.validation_state import ValidationState
|
|
29
28
|
from chia.util.config import lock_and_load_config, save_config
|
|
30
29
|
from chia.util.timing import adjusted_timeout, backoff_times
|
|
@@ -45,7 +44,7 @@ default = _Default()
|
|
|
45
44
|
timeout_per_block = 5
|
|
46
45
|
|
|
47
46
|
|
|
48
|
-
async def wait_for_coins_in_wallet(coins: set[Coin], wallet: Wallet, timeout:
|
|
47
|
+
async def wait_for_coins_in_wallet(coins: set[Coin], wallet: Wallet, timeout: float | None = 5):
|
|
49
48
|
"""Wait until all of the specified coins are simultaneously reported as spendable
|
|
50
49
|
by the wallet.
|
|
51
50
|
|
|
@@ -72,16 +71,16 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
72
71
|
self.bt = block_tools
|
|
73
72
|
self.full_node = full_node
|
|
74
73
|
self.config = config
|
|
75
|
-
self.time_per_block:
|
|
74
|
+
self.time_per_block: float | None = None
|
|
76
75
|
self.full_node.simulator_transaction_callback = self.autofarm_transaction
|
|
77
76
|
self.use_current_time: bool = self.config.get("simulator", {}).get("use_current_time", False)
|
|
78
77
|
self.auto_farm: bool = self.config.get("simulator", {}).get("auto_farm", False)
|
|
79
78
|
|
|
80
|
-
def get_connections(self, request_node_type:
|
|
79
|
+
def get_connections(self, request_node_type: NodeType | None) -> list[dict[str, Any]]:
|
|
81
80
|
return default_get_connections(server=self.server, request_node_type=request_node_type)
|
|
82
81
|
|
|
83
82
|
async def get_all_full_blocks(self) -> list[FullBlock]:
|
|
84
|
-
peak:
|
|
83
|
+
peak: BlockRecord | None = self.full_node.blockchain.get_peak()
|
|
85
84
|
if peak is None:
|
|
86
85
|
return []
|
|
87
86
|
blocks = []
|
|
@@ -158,7 +157,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
158
157
|
Note: This does not broadcast the changes, and all wallets will need to be wiped.
|
|
159
158
|
"""
|
|
160
159
|
async with self.full_node.blockchain.priority_mutex.acquire(priority=BlockchainMutexPriority.high):
|
|
161
|
-
peak_height:
|
|
160
|
+
peak_height: uint32 | None = self.full_node.blockchain.get_peak_height()
|
|
162
161
|
if peak_height is None:
|
|
163
162
|
raise ValueError("We can't revert without any blocks.")
|
|
164
163
|
elif peak_height - 1 < new_height:
|
|
@@ -237,12 +236,17 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
237
236
|
|
|
238
237
|
current_blocks = await self.get_all_full_blocks()
|
|
239
238
|
target = request.puzzle_hash
|
|
239
|
+
pool_target: bytes32 | None = target
|
|
240
|
+
if current_blocks[-1].height >= self.full_node.constants.HARD_FORK2_HEIGHT - 1:
|
|
241
|
+
# v2 plots (which we start farming at the hard fork activation)
|
|
242
|
+
# don't support specifying the pool target
|
|
243
|
+
pool_target = None
|
|
240
244
|
more = self.bt.get_consecutive_blocks(
|
|
241
245
|
1,
|
|
242
246
|
time_per_block=time_per_block,
|
|
243
247
|
transaction_data=spend_bundle,
|
|
244
248
|
farmer_reward_puzzle_hash=target,
|
|
245
|
-
pool_reward_puzzle_hash=
|
|
249
|
+
pool_reward_puzzle_hash=pool_target,
|
|
246
250
|
block_list_input=current_blocks,
|
|
247
251
|
guarantee_transaction_block=True,
|
|
248
252
|
current_time=current_time,
|
|
@@ -289,11 +293,16 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
289
293
|
spend_bundle = mempool_bundle[0]
|
|
290
294
|
current_blocks = await self.get_all_full_blocks()
|
|
291
295
|
target = request.puzzle_hash
|
|
296
|
+
pool_target: bytes32 | None = target
|
|
297
|
+
if current_blocks[-1].height >= self.full_node.constants.HARD_FORK2_HEIGHT - 1:
|
|
298
|
+
# v2 plots (which we start farming at the hard fork activation)
|
|
299
|
+
# don't support specifying the pool target
|
|
300
|
+
pool_target = None
|
|
292
301
|
more = self.bt.get_consecutive_blocks(
|
|
293
302
|
1,
|
|
294
303
|
transaction_data=spend_bundle,
|
|
295
304
|
farmer_reward_puzzle_hash=target,
|
|
296
|
-
pool_reward_puzzle_hash=
|
|
305
|
+
pool_reward_puzzle_hash=pool_target,
|
|
297
306
|
block_list_input=current_blocks,
|
|
298
307
|
current_time=current_time,
|
|
299
308
|
time_per_block=time_per_block,
|
|
@@ -311,10 +320,15 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
311
320
|
current_blocks = await self.get_all_full_blocks()
|
|
312
321
|
block_count = new_index - old_index
|
|
313
322
|
|
|
323
|
+
pool_target: bytes32 | None = coinbase_ph
|
|
324
|
+
if current_blocks[-1].height >= self.full_node.constants.HARD_FORK2_HEIGHT - 1:
|
|
325
|
+
# v2 plots (which we start farming at the hard fork activation)
|
|
326
|
+
# don't support specifying the pool target
|
|
327
|
+
pool_target = None
|
|
314
328
|
more_blocks = self.bt.get_consecutive_blocks(
|
|
315
329
|
block_count,
|
|
316
330
|
farmer_reward_puzzle_hash=coinbase_ph,
|
|
317
|
-
pool_reward_puzzle_hash=
|
|
331
|
+
pool_reward_puzzle_hash=pool_target,
|
|
318
332
|
block_list_input=current_blocks[: old_index + 1],
|
|
319
333
|
force_overflow=True,
|
|
320
334
|
guarantee_transaction_block=True,
|
|
@@ -327,7 +341,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
327
341
|
count: int,
|
|
328
342
|
farm_to: bytes32 = bytes32.zeros,
|
|
329
343
|
guarantee_transaction_blocks: bool = False,
|
|
330
|
-
timeout:
|
|
344
|
+
timeout: _Default | float | None = default,
|
|
331
345
|
_wait_for_synced: bool = True,
|
|
332
346
|
) -> int:
|
|
333
347
|
"""Process the requested number of blocks including farming to the passed puzzle
|
|
@@ -371,7 +385,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
371
385
|
self,
|
|
372
386
|
count: int,
|
|
373
387
|
wallet: Wallet,
|
|
374
|
-
timeout:
|
|
388
|
+
timeout: _Default | float | None = default,
|
|
375
389
|
_wait_for_synced: bool = True,
|
|
376
390
|
) -> int:
|
|
377
391
|
"""Farm the requested number of blocks to the passed wallet. This will
|
|
@@ -398,12 +412,19 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
398
412
|
rewards = 0
|
|
399
413
|
|
|
400
414
|
block_reward_coins = set()
|
|
401
|
-
expected_reward_coin_count = 2 * count
|
|
402
415
|
|
|
403
416
|
original_peak_height = self.full_node.blockchain.get_peak_height()
|
|
404
417
|
expected_peak_height = 0 if original_peak_height is None else original_peak_height
|
|
405
418
|
extra_blocks = [[False, False]] if original_peak_height is None else [] # Farm genesis block first
|
|
406
419
|
|
|
420
|
+
if expected_peak_height >= self.full_node.constants.HARD_FORK2_HEIGHT - 1:
|
|
421
|
+
# v2 plots (which we start farming at the hard fork activation)
|
|
422
|
+
# don't support specifying the pool target, so we only get the
|
|
423
|
+
# farmer reward, not the pool reward
|
|
424
|
+
expected_reward_coin_count = count
|
|
425
|
+
else:
|
|
426
|
+
expected_reward_coin_count = 2 * count
|
|
427
|
+
|
|
407
428
|
for to_wallet, tx_block in [*extra_blocks, *([[True, False]] * (count - 1)), [True, True], [False, True]]:
|
|
408
429
|
# This complicated application of the last two blocks being transaction
|
|
409
430
|
# blocks is due to the transaction blocks only including rewards from
|
|
@@ -444,7 +465,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
444
465
|
self,
|
|
445
466
|
amount: int,
|
|
446
467
|
wallet: Wallet,
|
|
447
|
-
timeout:
|
|
468
|
+
timeout: _Default | float | None = default,
|
|
448
469
|
) -> int:
|
|
449
470
|
"""Farm at least the requested amount of mojos to the passed wallet. Extra
|
|
450
471
|
mojos will be received based on the block rewards at the present block height.
|
|
@@ -462,7 +483,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
462
483
|
if amount == 0:
|
|
463
484
|
return rewards
|
|
464
485
|
|
|
465
|
-
height_before:
|
|
486
|
+
height_before: uint32 | None = self.full_node.blockchain.get_peak_height()
|
|
466
487
|
if height_before is None:
|
|
467
488
|
height_before = uint32(0)
|
|
468
489
|
|
|
@@ -484,8 +505,8 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
484
505
|
|
|
485
506
|
async def wait_transaction_records_entered_mempool(
|
|
486
507
|
self,
|
|
487
|
-
records: Collection[
|
|
488
|
-
timeout:
|
|
508
|
+
records: Collection[TransactionRecord | LightTransactionRecord],
|
|
509
|
+
timeout: float | None = 5,
|
|
489
510
|
) -> None:
|
|
490
511
|
"""Wait until the transaction records have entered the mempool. Transaction
|
|
491
512
|
records with no spend bundle are ignored.
|
|
@@ -517,7 +538,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
517
538
|
async def wait_bundle_ids_in_mempool(
|
|
518
539
|
self,
|
|
519
540
|
bundle_ids: Collection[bytes32],
|
|
520
|
-
timeout:
|
|
541
|
+
timeout: float | None = 5,
|
|
521
542
|
) -> None:
|
|
522
543
|
"""Wait until the ids of specific spend bundles have entered the mempool.
|
|
523
544
|
|
|
@@ -544,7 +565,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
544
565
|
self,
|
|
545
566
|
record_ids: Collection[bytes32],
|
|
546
567
|
wallet_node: WalletNode,
|
|
547
|
-
timeout:
|
|
568
|
+
timeout: float | None = 10,
|
|
548
569
|
) -> None:
|
|
549
570
|
"""Wait until the transaction records have been marked that they have made it into the mempool. Transaction
|
|
550
571
|
records with no spend bundle are ignored.
|
|
@@ -571,7 +592,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
571
592
|
async def process_transaction_records(
|
|
572
593
|
self,
|
|
573
594
|
records: Collection[TransactionRecord],
|
|
574
|
-
timeout:
|
|
595
|
+
timeout: float | None = (2 * timeout_per_block) + 5,
|
|
575
596
|
) -> None:
|
|
576
597
|
"""Process the specified transaction records and wait until they have been
|
|
577
598
|
included in a block.
|
|
@@ -596,7 +617,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
596
617
|
async def process_spend_bundles(
|
|
597
618
|
self,
|
|
598
619
|
bundles: Collection[SpendBundle],
|
|
599
|
-
timeout:
|
|
620
|
+
timeout: float | None = (2 * timeout_per_block) + 5,
|
|
600
621
|
) -> None:
|
|
601
622
|
"""Process the specified spend bundles and wait until they have been included
|
|
602
623
|
in a block.
|
|
@@ -612,7 +633,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
612
633
|
async def process_coin_spends(
|
|
613
634
|
self,
|
|
614
635
|
coins: Collection[Coin],
|
|
615
|
-
timeout:
|
|
636
|
+
timeout: float | None = (2 * timeout_per_block) + 5,
|
|
616
637
|
) -> None:
|
|
617
638
|
"""Process the specified coin names and wait until they have been created in a
|
|
618
639
|
block.
|
|
@@ -639,10 +660,10 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
639
660
|
if len(coin_set) == 0:
|
|
640
661
|
return
|
|
641
662
|
|
|
642
|
-
async def process_all_wallet_transactions(self, wallet: Wallet, timeout:
|
|
663
|
+
async def process_all_wallet_transactions(self, wallet: Wallet, timeout: float | None = 5) -> None:
|
|
643
664
|
# TODO: Maybe something could be done around waiting for the tx to enter the
|
|
644
665
|
# mempool. Maybe not, might be too many races or such.
|
|
645
|
-
wallet_state_manager:
|
|
666
|
+
wallet_state_manager: WalletStateManager | None = wallet.wallet_state_manager
|
|
646
667
|
assert wallet_state_manager is not None
|
|
647
668
|
|
|
648
669
|
with anyio.fail_after(delay=adjusted_timeout(timeout)):
|
|
@@ -664,8 +685,8 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
664
685
|
async def check_transactions_confirmed(
|
|
665
686
|
self,
|
|
666
687
|
wallet_state_manager: WalletStateManager,
|
|
667
|
-
transactions:
|
|
668
|
-
timeout:
|
|
688
|
+
transactions: list[TransactionRecord] | list[LightTransactionRecord],
|
|
689
|
+
timeout: float | None = 5,
|
|
669
690
|
) -> None:
|
|
670
691
|
transactions_left: set[bytes32] = {tx.name for tx in transactions}
|
|
671
692
|
with anyio.fail_after(delay=adjusted_timeout(timeout)):
|
|
@@ -682,7 +703,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
682
703
|
amounts: list[uint64],
|
|
683
704
|
wallet: Wallet,
|
|
684
705
|
per_transaction_record_group: int = 50,
|
|
685
|
-
timeout:
|
|
706
|
+
timeout: float | None = 15,
|
|
686
707
|
) -> set[Coin]:
|
|
687
708
|
"""Create coins with the requested amount. This is useful when you need a
|
|
688
709
|
bunch of coins for a test and don't need to farm that many.
|
|
@@ -760,7 +781,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
760
781
|
async def self_is_synced(self) -> bool:
|
|
761
782
|
return await self.full_node.synced()
|
|
762
783
|
|
|
763
|
-
async def wallet_is_synced(self, wallet_node: WalletNode, peak_height:
|
|
784
|
+
async def wallet_is_synced(self, wallet_node: WalletNode, peak_height: uint32 | None = None) -> bool:
|
|
764
785
|
if not await self.self_is_synced():
|
|
765
786
|
# Depending on races, may not be covered every time
|
|
766
787
|
return False # pragma: no cover
|
|
@@ -776,8 +797,8 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
776
797
|
async def wait_for_wallet_synced(
|
|
777
798
|
self,
|
|
778
799
|
wallet_node: WalletNode,
|
|
779
|
-
timeout:
|
|
780
|
-
peak_height:
|
|
800
|
+
timeout: float | None = 5,
|
|
801
|
+
peak_height: uint32 | None = None,
|
|
781
802
|
) -> None:
|
|
782
803
|
with anyio.fail_after(delay=adjusted_timeout(timeout)):
|
|
783
804
|
for backoff_time in backoff_times():
|
|
@@ -785,7 +806,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
785
806
|
break
|
|
786
807
|
await asyncio.sleep(backoff_time)
|
|
787
808
|
|
|
788
|
-
async def wallets_are_synced(self, wallet_nodes: list[WalletNode], peak_height:
|
|
809
|
+
async def wallets_are_synced(self, wallet_nodes: list[WalletNode], peak_height: uint32 | None = None) -> bool:
|
|
789
810
|
return all(
|
|
790
811
|
[
|
|
791
812
|
await self.wallet_is_synced(wallet_node=wallet_node, peak_height=peak_height)
|
|
@@ -796,8 +817,8 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
796
817
|
async def wait_for_wallets_synced(
|
|
797
818
|
self,
|
|
798
819
|
wallet_nodes: list[WalletNode],
|
|
799
|
-
timeout:
|
|
800
|
-
peak_height:
|
|
820
|
+
timeout: float | None = 5,
|
|
821
|
+
peak_height: uint32 | None = None,
|
|
801
822
|
) -> None:
|
|
802
823
|
with anyio.fail_after(delay=adjusted_timeout(timeout)):
|
|
803
824
|
for backoff_time in backoff_times():
|
|
@@ -807,7 +828,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
807
828
|
|
|
808
829
|
async def wait_for_self_synced(
|
|
809
830
|
self,
|
|
810
|
-
timeout:
|
|
831
|
+
timeout: float | None = 5,
|
|
811
832
|
) -> None:
|
|
812
833
|
with anyio.fail_after(delay=adjusted_timeout(timeout)):
|
|
813
834
|
for backoff_time in backoff_times():
|
chia/simulator/keyring.py
CHANGED
|
@@ -4,7 +4,6 @@ import os
|
|
|
4
4
|
import shutil
|
|
5
5
|
import tempfile
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Optional
|
|
8
7
|
from unittest.mock import patch
|
|
9
8
|
|
|
10
9
|
from chia.util.file_keyring import FileKeyring, keyring_path_from_root
|
|
@@ -44,7 +43,7 @@ class TempKeyring:
|
|
|
44
43
|
user: str = "testing-1.8.0",
|
|
45
44
|
service: str = "testing-chia-1.8.0",
|
|
46
45
|
populate: bool = False,
|
|
47
|
-
existing_keyring_path:
|
|
46
|
+
existing_keyring_path: str | None = None,
|
|
48
47
|
delete_on_cleanup: bool = True,
|
|
49
48
|
use_os_credential_store: bool = False,
|
|
50
49
|
):
|
|
@@ -65,7 +64,7 @@ class TempKeyring:
|
|
|
65
64
|
user: str,
|
|
66
65
|
service: str,
|
|
67
66
|
populate: bool,
|
|
68
|
-
existing_keyring_path:
|
|
67
|
+
existing_keyring_path: str | None,
|
|
69
68
|
use_os_credential_store: bool,
|
|
70
69
|
):
|
|
71
70
|
existing_keyring_dir = Path(existing_keyring_path).parent if existing_keyring_path else None
|
chia/simulator/setup_services.py
CHANGED
|
@@ -9,7 +9,7 @@ from collections.abc import AsyncGenerator, AsyncIterator, Iterator
|
|
|
9
9
|
from contextlib import asynccontextmanager, contextmanager
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
from types import FrameType
|
|
12
|
-
from typing import Any
|
|
12
|
+
from typing import Any
|
|
13
13
|
|
|
14
14
|
from chia_rs import ConsensusConstants
|
|
15
15
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -100,18 +100,18 @@ async def setup_full_node(
|
|
|
100
100
|
db_name: str,
|
|
101
101
|
self_hostname: str,
|
|
102
102
|
local_bt: BlockTools,
|
|
103
|
-
introducer_port:
|
|
103
|
+
introducer_port: int | None = None,
|
|
104
104
|
simulator: bool = False,
|
|
105
105
|
send_uncompact_interval: int = 0,
|
|
106
106
|
sanitize_weight_proof_only: bool = False,
|
|
107
107
|
connect_to_daemon: bool = False,
|
|
108
108
|
db_version: int = 1,
|
|
109
|
-
disable_capabilities:
|
|
109
|
+
disable_capabilities: list[Capability] | None = None,
|
|
110
110
|
*,
|
|
111
111
|
reuse_db: bool = False,
|
|
112
|
-
) -> AsyncGenerator[
|
|
112
|
+
) -> AsyncGenerator[FullNodeService | SimulatorFullNodeService, None]:
|
|
113
113
|
if reuse_db:
|
|
114
|
-
db_path:
|
|
114
|
+
db_path: str | Path = local_bt.root_path / f"{db_name}"
|
|
115
115
|
uri = False
|
|
116
116
|
else:
|
|
117
117
|
db_path = generate_in_memory_db_uri()
|
|
@@ -149,7 +149,7 @@ async def setup_full_node(
|
|
|
149
149
|
override_capabilities = (
|
|
150
150
|
None if disable_capabilities is None else get_capability_overrides(NodeType.FULL_NODE, disable_capabilities)
|
|
151
151
|
)
|
|
152
|
-
service:
|
|
152
|
+
service: FullNodeService | SimulatorFullNodeService
|
|
153
153
|
if simulator:
|
|
154
154
|
service = await create_full_node_simulator_service(
|
|
155
155
|
local_bt.root_path,
|
|
@@ -232,11 +232,11 @@ async def setup_wallet_node(
|
|
|
232
232
|
self_hostname: str,
|
|
233
233
|
consensus_constants: ConsensusConstants,
|
|
234
234
|
local_bt: BlockTools,
|
|
235
|
-
spam_filter_after_n_txs:
|
|
235
|
+
spam_filter_after_n_txs: int | None = 200,
|
|
236
236
|
xch_spam_amount: int = 1000000,
|
|
237
|
-
full_node_port:
|
|
238
|
-
introducer_port:
|
|
239
|
-
key_seed:
|
|
237
|
+
full_node_port: uint16 | None = None,
|
|
238
|
+
introducer_port: uint16 | None = None,
|
|
239
|
+
key_seed: bytes | None = None,
|
|
240
240
|
initial_num_public_keys: int = 5,
|
|
241
241
|
) -> AsyncGenerator[WalletService, None]:
|
|
242
242
|
with TempKeyring(populate=True) as keychain:
|
|
@@ -324,7 +324,7 @@ async def setup_wallet_node(
|
|
|
324
324
|
async def setup_harvester(
|
|
325
325
|
b_tools: BlockTools,
|
|
326
326
|
root_path: Path,
|
|
327
|
-
farmer_peer:
|
|
327
|
+
farmer_peer: UnresolvedPeerInfo | None,
|
|
328
328
|
consensus_constants: ConsensusConstants,
|
|
329
329
|
start_service: bool = True,
|
|
330
330
|
) -> AsyncGenerator[HarvesterService, None]:
|
|
@@ -356,10 +356,10 @@ async def setup_farmer(
|
|
|
356
356
|
root_path: Path,
|
|
357
357
|
self_hostname: str,
|
|
358
358
|
consensus_constants: ConsensusConstants,
|
|
359
|
-
full_node_port:
|
|
359
|
+
full_node_port: uint16 | None = None,
|
|
360
360
|
start_service: bool = True,
|
|
361
361
|
port: uint16 = uint16(0),
|
|
362
|
-
solver_peer:
|
|
362
|
+
solver_peer: UnresolvedPeerInfo | None = None,
|
|
363
363
|
) -> AsyncGenerator[FarmerService, None]:
|
|
364
364
|
with create_lock_and_load_config(b_tools.root_path / "config" / "ssl" / "ca", root_path) as root_config:
|
|
365
365
|
root_config["logging"]["log_stdout"] = True
|
|
@@ -435,7 +435,7 @@ async def setup_vdf_client(bt: BlockTools, self_hostname: str, port: int) -> Asy
|
|
|
435
435
|
|
|
436
436
|
async def stop(
|
|
437
437
|
signal_: signal.Signals,
|
|
438
|
-
stack_frame:
|
|
438
|
+
stack_frame: FrameType | None,
|
|
439
439
|
loop: asyncio.AbstractEventLoop,
|
|
440
440
|
) -> None:
|
|
441
441
|
await process_mgr.kill_processes()
|
|
@@ -472,7 +472,7 @@ async def setup_vdf_clients(bt: BlockTools, self_hostname: str, port: int) -> As
|
|
|
472
472
|
|
|
473
473
|
async def stop(
|
|
474
474
|
signal_: signal.Signals,
|
|
475
|
-
stack_frame:
|
|
475
|
+
stack_frame: FrameType | None,
|
|
476
476
|
loop: asyncio.AbstractEventLoop,
|
|
477
477
|
) -> None:
|
|
478
478
|
await process_mgr.kill_processes()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from chia_rs import FullBlock
|
|
3
|
+
from chia_rs import CoinRecord, FullBlock
|
|
4
4
|
from chia_rs.sized_bytes import bytes32
|
|
5
5
|
from chia_rs.sized_ints import uint32
|
|
6
6
|
|
|
@@ -8,7 +8,6 @@ from chia.full_node.full_node_rpc_api import FullNodeRpcApi
|
|
|
8
8
|
from chia.rpc.rpc_server import Endpoint, EndpointResult
|
|
9
9
|
from chia.simulator.full_node_simulator import FullNodeSimulator
|
|
10
10
|
from chia.simulator.simulator_protocol import FarmNewBlockProtocol, GetAllCoinsProtocol, ReorgProtocol
|
|
11
|
-
from chia.types.coin_record import CoinRecord
|
|
12
11
|
from chia.util.bech32m import decode_puzzle_hash
|
|
13
12
|
|
|
14
13
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from chia_rs import FullBlock
|
|
3
|
+
from chia_rs import CoinRecord, FullBlock
|
|
4
4
|
from chia_rs.sized_bytes import bytes32
|
|
5
5
|
from chia_rs.sized_ints import uint128
|
|
6
6
|
|
|
7
7
|
from chia.full_node.full_node_rpc_client import FullNodeRpcClient
|
|
8
|
-
from chia.types.coin_record import CoinRecord
|
|
9
8
|
from chia.util.bech32m import encode_puzzle_hash
|
|
10
9
|
|
|
11
10
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from chia_rs.sized_bytes import bytes32
|
|
7
6
|
from chia_rs.sized_ints import uint32
|
|
@@ -21,7 +20,7 @@ class ReorgProtocol(Streamable):
|
|
|
21
20
|
old_index: uint32
|
|
22
21
|
new_index: uint32
|
|
23
22
|
puzzle_hash: bytes32
|
|
24
|
-
seed:
|
|
23
|
+
seed: bytes32 | None
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
@streamable
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import sys
|
|
4
4
|
from collections.abc import AsyncGenerator
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import Any
|
|
6
|
+
from typing import Any
|
|
7
7
|
|
|
8
8
|
from chia_rs import PrivateKey
|
|
9
9
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -118,9 +118,9 @@ async def start_simulator(chia_root: Path, automated_testing: bool = False) -> A
|
|
|
118
118
|
|
|
119
119
|
async def get_full_chia_simulator(
|
|
120
120
|
chia_root: Path,
|
|
121
|
-
keychain:
|
|
121
|
+
keychain: Keychain | None = None,
|
|
122
122
|
automated_testing: bool = False,
|
|
123
|
-
config:
|
|
123
|
+
config: dict[str, Any] | None = None,
|
|
124
124
|
) -> AsyncGenerator[tuple[FullNodeSimulator, Path, dict[str, Any], str, int, Keychain], None]:
|
|
125
125
|
"""
|
|
126
126
|
A chia root Path is required.
|
|
@@ -5,12 +5,12 @@ import sys
|
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from multiprocessing import freeze_support
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
9
9
|
|
|
10
10
|
from chia_rs.sized_bytes import bytes32
|
|
11
11
|
from chia_rs.sized_ints import uint16
|
|
12
12
|
|
|
13
|
-
from chia.apis import
|
|
13
|
+
from chia.apis import StubMetadataRegistry
|
|
14
14
|
from chia.full_node.full_node import FullNode
|
|
15
15
|
from chia.protocols.outbound_message import NodeType
|
|
16
16
|
from chia.server.signal_handlers import SignalHandlers
|
|
@@ -39,7 +39,7 @@ async def create_full_node_simulator_service(
|
|
|
39
39
|
config: dict[str, Any],
|
|
40
40
|
bt: BlockTools,
|
|
41
41
|
connect_to_daemon: bool = True,
|
|
42
|
-
override_capabilities:
|
|
42
|
+
override_capabilities: list[tuple[uint16, str]] | None = None,
|
|
43
43
|
) -> SimulatorFullNodeService:
|
|
44
44
|
service_config = config[SERVICE_NAME]
|
|
45
45
|
constants = bt.constants
|
|
@@ -65,7 +65,7 @@ async def create_full_node_simulator_service(
|
|
|
65
65
|
rpc_info=(SimulatorFullNodeRpcApi, service_config["rpc_port"]),
|
|
66
66
|
connect_to_daemon=connect_to_daemon,
|
|
67
67
|
override_capabilities=override_capabilities,
|
|
68
|
-
|
|
68
|
+
stub_metadata_for_type=StubMetadataRegistry,
|
|
69
69
|
)
|
|
70
70
|
|
|
71
71
|
|
|
@@ -78,7 +78,7 @@ class StartedSimulator:
|
|
|
78
78
|
async def async_main(
|
|
79
79
|
test_mode: bool = False,
|
|
80
80
|
automated_testing: bool = False,
|
|
81
|
-
root_path:
|
|
81
|
+
root_path: Path | None = None,
|
|
82
82
|
) -> StartedSimulator:
|
|
83
83
|
root_path = resolve_root_path(override=root_path)
|
|
84
84
|
# helping mypy out for now
|
|
@@ -89,8 +89,8 @@ async def async_main(
|
|
|
89
89
|
service_config = load_config_cli(root_path, "config.yaml", SERVICE_NAME)
|
|
90
90
|
config[SERVICE_NAME] = service_config
|
|
91
91
|
# THIS IS Simulator specific.
|
|
92
|
-
fingerprint:
|
|
93
|
-
farming_puzzle_hash:
|
|
92
|
+
fingerprint: int | None = None
|
|
93
|
+
farming_puzzle_hash: bytes32 | None = None
|
|
94
94
|
plot_dir: str = "simulator/plots"
|
|
95
95
|
if "simulator" in config:
|
|
96
96
|
overrides = {}
|
chia/simulator/wallet_tools.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from chia_rs import AugSchemeMPL, CoinSpend, ConsensusConstants, G1Element, G2Element, PrivateKey, SpendBundle
|
|
6
6
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -37,7 +37,7 @@ class WalletTool:
|
|
|
37
37
|
pubkey_num_lookup: dict[bytes, uint32] = {} # noqa: RUF012
|
|
38
38
|
puzzle_pk_cache: dict[bytes32, PrivateKey] = {} # noqa: RUF012
|
|
39
39
|
|
|
40
|
-
def __init__(self, constants: ConsensusConstants, sk:
|
|
40
|
+
def __init__(self, constants: ConsensusConstants, sk: PrivateKey | None = None):
|
|
41
41
|
self.constants = constants
|
|
42
42
|
self.current_balance = 0
|
|
43
43
|
self.my_utxos: set = set()
|
|
@@ -106,9 +106,9 @@ class WalletTool:
|
|
|
106
106
|
coins: list[Coin],
|
|
107
107
|
condition_dic: dict[ConditionOpcode, list[ConditionWithArgs]],
|
|
108
108
|
fee: int = 0,
|
|
109
|
-
secret_key:
|
|
110
|
-
additional_outputs:
|
|
111
|
-
memo:
|
|
109
|
+
secret_key: PrivateKey | None = None,
|
|
110
|
+
additional_outputs: list[tuple[bytes32, int]] | None = None,
|
|
111
|
+
memo: bytes32 | None = None,
|
|
112
112
|
) -> list[CoinSpend]:
|
|
113
113
|
spends = []
|
|
114
114
|
|
|
@@ -206,10 +206,10 @@ class WalletTool:
|
|
|
206
206
|
amount: uint64,
|
|
207
207
|
new_puzzle_hash: bytes32,
|
|
208
208
|
coin: Coin,
|
|
209
|
-
condition_dic:
|
|
209
|
+
condition_dic: dict[ConditionOpcode, list[ConditionWithArgs]] | None = None,
|
|
210
210
|
fee: int = 0,
|
|
211
|
-
additional_outputs:
|
|
212
|
-
memo:
|
|
211
|
+
additional_outputs: list[tuple[bytes32, int]] | None = None,
|
|
212
|
+
memo: bytes32 | None = None,
|
|
213
213
|
) -> SpendBundle:
|
|
214
214
|
if condition_dic is None:
|
|
215
215
|
condition_dic = {}
|
|
@@ -224,9 +224,9 @@ class WalletTool:
|
|
|
224
224
|
amount: uint64,
|
|
225
225
|
new_puzzle_hash: bytes32,
|
|
226
226
|
coins: list[Coin],
|
|
227
|
-
condition_dic:
|
|
227
|
+
condition_dic: dict[ConditionOpcode, list[ConditionWithArgs]] | None = None,
|
|
228
228
|
fee: int = 0,
|
|
229
|
-
additional_outputs:
|
|
229
|
+
additional_outputs: list[tuple[bytes32, int]] | None = None,
|
|
230
230
|
) -> SpendBundle:
|
|
231
231
|
if condition_dic is None:
|
|
232
232
|
condition_dic = {}
|
chia/solver/solver.py
CHANGED
|
@@ -6,15 +6,15 @@ import logging
|
|
|
6
6
|
from collections.abc import AsyncIterator
|
|
7
7
|
from concurrent.futures.thread import ThreadPoolExecutor
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from typing import TYPE_CHECKING, Any, ClassVar,
|
|
9
|
+
from typing import TYPE_CHECKING, Any, ClassVar, cast
|
|
10
10
|
|
|
11
|
-
from chia_rs import ConsensusConstants
|
|
11
|
+
from chia_rs import ConsensusConstants, PartialProof, solve_proof
|
|
12
|
+
from chia_rs.sized_bytes import bytes32
|
|
12
13
|
|
|
13
14
|
from chia.protocols.outbound_message import NodeType
|
|
14
15
|
from chia.rpc.rpc_server import StateChangedProtocol, default_get_connections
|
|
15
16
|
from chia.server.server import ChiaServer
|
|
16
17
|
from chia.server.ws_connection import WSChiaConnection
|
|
17
|
-
from chia.types.blockchain_format.proof_of_space import solve_proof
|
|
18
18
|
|
|
19
19
|
log = logging.getLogger(__name__)
|
|
20
20
|
|
|
@@ -26,11 +26,11 @@ class Solver:
|
|
|
26
26
|
_protocol_check: ClassVar[RpcServiceProtocol] = cast("Solver", None)
|
|
27
27
|
|
|
28
28
|
root_path: Path
|
|
29
|
-
_server:
|
|
29
|
+
_server: ChiaServer | None
|
|
30
30
|
_shut_down: bool
|
|
31
31
|
started: bool = False
|
|
32
32
|
executor: ThreadPoolExecutor
|
|
33
|
-
state_changed_callback:
|
|
33
|
+
state_changed_callback: StateChangedProtocol | None = None
|
|
34
34
|
constants: ConsensusConstants
|
|
35
35
|
event_loop: asyncio.events.AbstractEventLoop
|
|
36
36
|
|
|
@@ -51,7 +51,7 @@ class Solver:
|
|
|
51
51
|
self.executor = ThreadPoolExecutor(max_workers=num_threads, thread_name_prefix="solver-")
|
|
52
52
|
self._server = None
|
|
53
53
|
self.constants = constants
|
|
54
|
-
self.state_changed_callback:
|
|
54
|
+
self.state_changed_callback: StateChangedProtocol | None = None
|
|
55
55
|
self.log.info("Solver initialization complete")
|
|
56
56
|
|
|
57
57
|
@contextlib.asynccontextmanager
|
|
@@ -67,15 +67,15 @@ class Solver:
|
|
|
67
67
|
self.executor.shutdown(wait=True)
|
|
68
68
|
self.log.info("Solver service shutdown complete")
|
|
69
69
|
|
|
70
|
-
def solve(self, partial_proof:
|
|
71
|
-
self.log.
|
|
70
|
+
def solve(self, partial_proof: PartialProof, plot_id: bytes32, strength: int, size: int) -> bytes | None:
|
|
71
|
+
self.log.info(f"Solve request: partial={partial_proof.proof_fragments[:5]} plot-id: {plot_id} k: {size}")
|
|
72
72
|
try:
|
|
73
|
-
return solve_proof(partial_proof)
|
|
73
|
+
return solve_proof(partial_proof, plot_id, strength, size)
|
|
74
74
|
except Exception:
|
|
75
75
|
self.log.exception("solve_proof()")
|
|
76
76
|
return None
|
|
77
77
|
|
|
78
|
-
def get_connections(self, request_node_type:
|
|
78
|
+
def get_connections(self, request_node_type: NodeType | None) -> list[dict[str, Any]]:
|
|
79
79
|
return default_get_connections(server=self.server, request_node_type=request_node_type)
|
|
80
80
|
|
|
81
81
|
async def on_connect(self, connection: WSChiaConnection) -> None:
|