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,17 +4,17 @@ import asyncio
|
|
|
4
4
|
import time
|
|
5
5
|
from concurrent.futures import ThreadPoolExecutor
|
|
6
6
|
from datetime import datetime, timezone
|
|
7
|
-
from typing import TYPE_CHECKING, Any, ClassVar,
|
|
7
|
+
from typing import TYPE_CHECKING, Any, ClassVar, cast
|
|
8
8
|
|
|
9
9
|
from chia_rs import (
|
|
10
10
|
MEMPOOL_MODE,
|
|
11
11
|
BlockRecord,
|
|
12
|
+
CoinRecord,
|
|
12
13
|
CoinSpend,
|
|
13
14
|
FullBlock,
|
|
14
|
-
|
|
15
|
+
PlotParam,
|
|
15
16
|
SpendBundle,
|
|
16
17
|
SpendBundleConditions,
|
|
17
|
-
get_flags_for_height_and_constants,
|
|
18
18
|
get_spends_for_trusted_block,
|
|
19
19
|
get_spends_for_trusted_block_with_conditions,
|
|
20
20
|
run_block_generator2,
|
|
@@ -28,10 +28,10 @@ from chia.consensus.get_block_generator import get_block_generator
|
|
|
28
28
|
from chia.consensus.pos_quality import UI_ACTUAL_SPACE_CONSTANT_FACTOR
|
|
29
29
|
from chia.full_node.fee_estimator_interface import FeeEstimatorInterface
|
|
30
30
|
from chia.full_node.full_node import FullNode
|
|
31
|
+
from chia.full_node.hard_fork_utils import get_flags
|
|
31
32
|
from chia.protocols.outbound_message import NodeType
|
|
32
33
|
from chia.rpc.rpc_server import Endpoint, EndpointResult
|
|
33
34
|
from chia.types.blockchain_format.proof_of_space import calculate_prefix_bits
|
|
34
|
-
from chia.types.coin_record import CoinRecord
|
|
35
35
|
from chia.types.generator_types import BlockGenerator, NewBlockGenerator
|
|
36
36
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
37
37
|
from chia.types.unfinished_header_block import UnfinishedHeaderBlock
|
|
@@ -65,7 +65,7 @@ async def get_average_block_time(
|
|
|
65
65
|
blockchain: Blockchain,
|
|
66
66
|
base_block: BlockRecord,
|
|
67
67
|
height_distance: int,
|
|
68
|
-
) ->
|
|
68
|
+
) -> uint32 | None:
|
|
69
69
|
newer_block = await get_nearest_transaction_block(blockchain, base_block)
|
|
70
70
|
if newer_block.height < 1:
|
|
71
71
|
return None
|
|
@@ -100,7 +100,7 @@ class FullNodeRpcApi:
|
|
|
100
100
|
def __init__(self, service: FullNode) -> None:
|
|
101
101
|
self.service = service
|
|
102
102
|
self.service_name = "chia_full_node"
|
|
103
|
-
self.cached_blockchain_state:
|
|
103
|
+
self.cached_blockchain_state: dict[str, Any] | None = None
|
|
104
104
|
self.executor = ThreadPoolExecutor(max_workers=2, thread_name_prefix="node-rpc-")
|
|
105
105
|
|
|
106
106
|
def get_routes(self) -> dict[str, Endpoint]:
|
|
@@ -139,7 +139,7 @@ class FullNodeRpcApi:
|
|
|
139
139
|
"/get_fee_estimate": self.get_fee_estimate,
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
async def _state_changed(self, change: str, change_data:
|
|
142
|
+
async def _state_changed(self, change: str, change_data: dict[str, Any] | None = None) -> list[WsRpcMessage]:
|
|
143
143
|
if change_data is None:
|
|
144
144
|
change_data = {}
|
|
145
145
|
|
|
@@ -203,7 +203,7 @@ class FullNodeRpcApi:
|
|
|
203
203
|
},
|
|
204
204
|
}
|
|
205
205
|
return res
|
|
206
|
-
peak:
|
|
206
|
+
peak: BlockRecord | None = self.service.blockchain.get_peak()
|
|
207
207
|
|
|
208
208
|
if peak is not None and peak.height > 0:
|
|
209
209
|
difficulty = uint64(peak.weight - self.service.blockchain.block_record(peak.prev_hash).weight)
|
|
@@ -214,7 +214,7 @@ class FullNodeRpcApi:
|
|
|
214
214
|
|
|
215
215
|
sync_mode: bool = self.service.sync_store.get_sync_mode() or self.service.sync_store.get_long_sync()
|
|
216
216
|
|
|
217
|
-
sync_tip_height:
|
|
217
|
+
sync_tip_height: uint32 | None = uint32(0)
|
|
218
218
|
if sync_mode:
|
|
219
219
|
target_peak = self.service.sync_store.target_peak
|
|
220
220
|
if target_peak is not None:
|
|
@@ -230,7 +230,7 @@ class FullNodeRpcApi:
|
|
|
230
230
|
else:
|
|
231
231
|
sync_progress_height = uint32(0)
|
|
232
232
|
|
|
233
|
-
average_block_time:
|
|
233
|
+
average_block_time: uint32 | None = None
|
|
234
234
|
if peak is not None and peak.height > 1:
|
|
235
235
|
newer_block_hex = peak.header_hash.hex()
|
|
236
236
|
# Average over the last day
|
|
@@ -309,7 +309,7 @@ class FullNodeRpcApi:
|
|
|
309
309
|
return {"eos": eos, "time_received": time_received, "reverted": False}
|
|
310
310
|
|
|
311
311
|
# Otherwise we can backtrack from peak to find it in the blockchain
|
|
312
|
-
curr:
|
|
312
|
+
curr: BlockRecord | None = self.service.blockchain.get_peak()
|
|
313
313
|
if curr is None:
|
|
314
314
|
raise ValueError("No blocks in the chain")
|
|
315
315
|
|
|
@@ -345,8 +345,8 @@ class FullNodeRpcApi:
|
|
|
345
345
|
|
|
346
346
|
# Otherwise we can backtrack from peak to find it in the blockchain
|
|
347
347
|
rc_challenge: bytes32 = sp.rc_vdf.challenge
|
|
348
|
-
next_b:
|
|
349
|
-
curr_b_optional:
|
|
348
|
+
next_b: BlockRecord | None = None
|
|
349
|
+
curr_b_optional: BlockRecord | None = self.service.blockchain.get_peak()
|
|
350
350
|
assert curr_b_optional is not None
|
|
351
351
|
curr_b: BlockRecord = curr_b_optional
|
|
352
352
|
|
|
@@ -391,7 +391,7 @@ class FullNodeRpcApi:
|
|
|
391
391
|
raise ValueError("No header_hash in request")
|
|
392
392
|
header_hash = bytes32.from_hexstr(request["header_hash"])
|
|
393
393
|
|
|
394
|
-
block:
|
|
394
|
+
block: FullBlock | None = await self.service.block_store.get_full_block(header_hash)
|
|
395
395
|
if block is None:
|
|
396
396
|
raise ValueError(f"Block {header_hash.hex()} not found")
|
|
397
397
|
|
|
@@ -464,10 +464,10 @@ class FullNodeRpcApi:
|
|
|
464
464
|
if peak_height < uint32(a):
|
|
465
465
|
self.service.log.warning("requested block is higher than known peak ")
|
|
466
466
|
break
|
|
467
|
-
header_hash:
|
|
467
|
+
header_hash: bytes32 | None = self.service.blockchain.height_to_hash(uint32(a))
|
|
468
468
|
if header_hash is None:
|
|
469
469
|
raise ValueError(f"Height not in blockchain: {a}")
|
|
470
|
-
record:
|
|
470
|
+
record: BlockRecord | None = self.service.blockchain.try_block_record(header_hash)
|
|
471
471
|
if record is None:
|
|
472
472
|
# Fetch from DB
|
|
473
473
|
record = await self.service.blockchain.block_store.get_block_record(header_hash)
|
|
@@ -481,7 +481,7 @@ class FullNodeRpcApi:
|
|
|
481
481
|
if "header_hash" not in request:
|
|
482
482
|
raise ValueError("No header_hash in request")
|
|
483
483
|
header_hash = bytes32.from_hexstr(request["header_hash"])
|
|
484
|
-
full_block:
|
|
484
|
+
full_block: FullBlock | None = await self.service.block_store.get_full_block(header_hash)
|
|
485
485
|
if full_block is None:
|
|
486
486
|
raise ValueError(f"Block {header_hash.hex()} not found")
|
|
487
487
|
|
|
@@ -489,7 +489,8 @@ class FullNodeRpcApi:
|
|
|
489
489
|
if block_generator is None: # if block is not a transaction block.
|
|
490
490
|
return {"block_spends": []}
|
|
491
491
|
|
|
492
|
-
flags =
|
|
492
|
+
flags = await get_flags(constants=self.service.constants, blocks=self.service.blockchain, block=full_block)
|
|
493
|
+
|
|
493
494
|
spends = await asyncio.get_running_loop().run_in_executor(
|
|
494
495
|
self.executor,
|
|
495
496
|
get_spends_for_trusted_block,
|
|
@@ -505,7 +506,7 @@ class FullNodeRpcApi:
|
|
|
505
506
|
if "header_hash" not in request:
|
|
506
507
|
raise ValueError("No header_hash in request")
|
|
507
508
|
header_hash = bytes32.from_hexstr(request["header_hash"])
|
|
508
|
-
full_block:
|
|
509
|
+
full_block: FullBlock | None = await self.service.block_store.get_full_block(header_hash)
|
|
509
510
|
if full_block is None:
|
|
510
511
|
raise ValueError(f"Block {header_hash.hex()} not found")
|
|
511
512
|
|
|
@@ -513,7 +514,7 @@ class FullNodeRpcApi:
|
|
|
513
514
|
if block_generator is None: # if block is not a transaction block.
|
|
514
515
|
return {"block_spends_with_conditions": []}
|
|
515
516
|
|
|
516
|
-
flags =
|
|
517
|
+
flags = await get_flags(constants=self.service.constants, blocks=self.service.blockchain, block=full_block)
|
|
517
518
|
spends_with_conditions = await asyncio.get_running_loop().run_in_executor(
|
|
518
519
|
self.executor,
|
|
519
520
|
get_spends_for_trusted_block_with_conditions,
|
|
@@ -532,10 +533,10 @@ class FullNodeRpcApi:
|
|
|
532
533
|
peak_height = self.service.blockchain.get_peak_height()
|
|
533
534
|
if peak_height is None or header_height > peak_height:
|
|
534
535
|
raise ValueError(f"Block height {height} not found in chain")
|
|
535
|
-
header_hash:
|
|
536
|
+
header_hash: bytes32 | None = self.service.blockchain.height_to_hash(header_height)
|
|
536
537
|
if header_hash is None:
|
|
537
538
|
raise ValueError(f"Block hash {height} not found in chain")
|
|
538
|
-
record:
|
|
539
|
+
record: BlockRecord | None = self.service.blockchain.try_block_record(header_hash)
|
|
539
540
|
if record is None:
|
|
540
541
|
# Fetch from DB
|
|
541
542
|
record = await self.service.blockchain.block_store.get_block_record(header_hash)
|
|
@@ -548,7 +549,7 @@ class FullNodeRpcApi:
|
|
|
548
549
|
raise ValueError("header_hash not in request")
|
|
549
550
|
header_hash_str = request["header_hash"]
|
|
550
551
|
header_hash = bytes32.from_hexstr(header_hash_str)
|
|
551
|
-
record:
|
|
552
|
+
record: BlockRecord | None = self.service.blockchain.try_block_record(header_hash)
|
|
552
553
|
if record is None:
|
|
553
554
|
# Fetch from DB
|
|
554
555
|
record = await self.service.blockchain.block_store.get_block_record(header_hash)
|
|
@@ -558,7 +559,7 @@ class FullNodeRpcApi:
|
|
|
558
559
|
return {"block_record": record}
|
|
559
560
|
|
|
560
561
|
async def get_unfinished_block_headers(self, _request: dict[str, Any]) -> EndpointResult:
|
|
561
|
-
peak:
|
|
562
|
+
peak: BlockRecord | None = self.service.blockchain.get_peak()
|
|
562
563
|
if peak is None:
|
|
563
564
|
return {"headers": []}
|
|
564
565
|
|
|
@@ -606,7 +607,7 @@ class FullNodeRpcApi:
|
|
|
606
607
|
|
|
607
608
|
# TODO: todo_v2_plots Update this calculation to take v2 plots into
|
|
608
609
|
# account
|
|
609
|
-
plot_filter_size = calculate_prefix_bits(self.service.constants, newer_block.height,
|
|
610
|
+
plot_filter_size = calculate_prefix_bits(self.service.constants, newer_block.height, PlotParam.make_v1(32))
|
|
610
611
|
delta_iters = newer_block.total_iters - older_block.total_iters
|
|
611
612
|
weight_div_iters = delta_weight / delta_iters
|
|
612
613
|
additional_difficulty_constant = self.service.constants.DIFFICULTY_CONSTANT_FACTOR
|
|
@@ -668,7 +669,7 @@ class FullNodeRpcApi:
|
|
|
668
669
|
raise ValueError("Name not in request")
|
|
669
670
|
name = bytes32.from_hexstr(request["name"])
|
|
670
671
|
|
|
671
|
-
coin_record:
|
|
672
|
+
coin_record: CoinRecord | None = await self.service.blockchain.coin_store.get_coin_record(name)
|
|
672
673
|
if coin_record is None:
|
|
673
674
|
raise ValueError(f"Coin record 0x{name.hex()} not found")
|
|
674
675
|
|
|
@@ -781,23 +782,24 @@ class FullNodeRpcApi:
|
|
|
781
782
|
|
|
782
783
|
header_hash = self.service.blockchain.height_to_hash(height)
|
|
783
784
|
assert header_hash is not None
|
|
784
|
-
block:
|
|
785
|
+
block: FullBlock | None = await self.service.block_store.get_full_block(header_hash)
|
|
785
786
|
|
|
786
787
|
if block is None or block.transactions_generator is None:
|
|
787
788
|
raise ValueError("Invalid block or block generator")
|
|
788
789
|
|
|
789
|
-
block_generator:
|
|
790
|
+
block_generator: BlockGenerator | None = await get_block_generator(
|
|
790
791
|
self.service.blockchain.lookup_block_generators, block
|
|
791
792
|
)
|
|
792
793
|
assert block_generator is not None
|
|
793
794
|
|
|
794
795
|
try:
|
|
796
|
+
flags = await get_flags(constants=self.service.constants, blocks=self.service.blockchain, block=block)
|
|
795
797
|
puzzle, solution = get_puzzle_and_solution_for_coin(
|
|
796
798
|
block_generator.program,
|
|
797
799
|
block_generator.generator_refs,
|
|
798
800
|
self.service.constants.MAX_BLOCK_COST_CLVM,
|
|
799
801
|
coin_record.coin,
|
|
800
|
-
|
|
802
|
+
flags,
|
|
801
803
|
)
|
|
802
804
|
return {"coin_solution": CoinSpend(coin_record.coin, puzzle, solution)}
|
|
803
805
|
except Exception as e:
|
|
@@ -808,7 +810,7 @@ class FullNodeRpcApi:
|
|
|
808
810
|
raise ValueError("No header_hash in request")
|
|
809
811
|
header_hash = bytes32.from_hexstr(request["header_hash"])
|
|
810
812
|
|
|
811
|
-
block:
|
|
813
|
+
block: FullBlock | None = await self.service.block_store.get_full_block(header_hash)
|
|
812
814
|
if block is None:
|
|
813
815
|
raise ValueError(f"Block {header_hash.hex()} not found")
|
|
814
816
|
|
|
@@ -862,7 +864,7 @@ class FullNodeRpcApi:
|
|
|
862
864
|
|
|
863
865
|
# Grab best transactions from Mempool for given tip target
|
|
864
866
|
async with self.service.blockchain.priority_mutex.acquire(priority=BlockchainMutexPriority.low):
|
|
865
|
-
peak:
|
|
867
|
+
peak: BlockRecord | None = self.service.blockchain.get_peak()
|
|
866
868
|
|
|
867
869
|
if peak is None:
|
|
868
870
|
return {
|
|
@@ -998,7 +1000,7 @@ class FullNodeRpcApi:
|
|
|
998
1000
|
|
|
999
1001
|
if peak is None:
|
|
1000
1002
|
peak_height = uint32(0)
|
|
1001
|
-
last_peak_timestamp:
|
|
1003
|
+
last_peak_timestamp: uint64 | None = uint64(0)
|
|
1002
1004
|
last_block_cost = 0
|
|
1003
1005
|
fee_rate_last_block = 0.0
|
|
1004
1006
|
last_tx_block_fees = uint64(0)
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any,
|
|
3
|
+
from typing import Any, cast
|
|
4
4
|
|
|
5
|
-
from chia_rs import BlockRecord, CoinSpend, EndOfSubSlotBundle, FullBlock, SpendBundle
|
|
5
|
+
from chia_rs import BlockRecord, CoinRecord, CoinSpend, EndOfSubSlotBundle, FullBlock, SpendBundle
|
|
6
6
|
from chia_rs.sized_bytes import bytes32
|
|
7
7
|
from chia_rs.sized_ints import uint32
|
|
8
8
|
|
|
9
9
|
from chia.consensus.signage_point import SignagePoint
|
|
10
10
|
from chia.rpc.rpc_client import ResponseFailureError, RpcClient
|
|
11
|
-
from chia.types.coin_record import CoinRecord
|
|
12
11
|
from chia.types.coin_spend import CoinSpendWithConditions
|
|
13
12
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
14
13
|
from chia.types.condition_with_args import ConditionWithArgs
|
|
@@ -46,7 +45,7 @@ class FullNodeRpcClient(RpcClient):
|
|
|
46
45
|
)
|
|
47
46
|
return [FullBlock.from_json_dict(block) for block in response["blocks"]]
|
|
48
47
|
|
|
49
|
-
async def get_block_record_by_height(self, height: int) ->
|
|
48
|
+
async def get_block_record_by_height(self, height: int) -> BlockRecord | None:
|
|
50
49
|
try:
|
|
51
50
|
response = await self.fetch("get_block_record_by_height", {"height": height})
|
|
52
51
|
except ResponseFailureError as e: # Block Height not found
|
|
@@ -55,7 +54,7 @@ class FullNodeRpcClient(RpcClient):
|
|
|
55
54
|
raise e
|
|
56
55
|
return BlockRecord.from_json_dict(response["block_record"])
|
|
57
56
|
|
|
58
|
-
async def get_block_record(self, header_hash: bytes32) ->
|
|
57
|
+
async def get_block_record(self, header_hash: bytes32) -> BlockRecord | None:
|
|
59
58
|
response = await self.fetch("get_block_record", {"header_hash": header_hash.hex()})
|
|
60
59
|
if response["block_record"] is None:
|
|
61
60
|
return None
|
|
@@ -88,8 +87,8 @@ class FullNodeRpcClient(RpcClient):
|
|
|
88
87
|
self,
|
|
89
88
|
names: list[bytes32],
|
|
90
89
|
include_spent_coins: bool = True,
|
|
91
|
-
start_height:
|
|
92
|
-
end_height:
|
|
90
|
+
start_height: int | None = None,
|
|
91
|
+
end_height: int | None = None,
|
|
93
92
|
) -> list[CoinRecord]:
|
|
94
93
|
names_hex = [name.hex() for name in names]
|
|
95
94
|
d = {"names": names_hex, "include_spent_coins": include_spent_coins}
|
|
@@ -105,8 +104,8 @@ class FullNodeRpcClient(RpcClient):
|
|
|
105
104
|
self,
|
|
106
105
|
puzzle_hash: bytes32,
|
|
107
106
|
include_spent_coins: bool = True,
|
|
108
|
-
start_height:
|
|
109
|
-
end_height:
|
|
107
|
+
start_height: int | None = None,
|
|
108
|
+
end_height: int | None = None,
|
|
110
109
|
) -> list[CoinRecord]:
|
|
111
110
|
d = {"puzzle_hash": puzzle_hash.hex(), "include_spent_coins": include_spent_coins}
|
|
112
111
|
if start_height is not None:
|
|
@@ -121,8 +120,8 @@ class FullNodeRpcClient(RpcClient):
|
|
|
121
120
|
self,
|
|
122
121
|
puzzle_hashes: list[bytes32],
|
|
123
122
|
include_spent_coins: bool = True,
|
|
124
|
-
start_height:
|
|
125
|
-
end_height:
|
|
123
|
+
start_height: int | None = None,
|
|
124
|
+
end_height: int | None = None,
|
|
126
125
|
) -> list[CoinRecord]:
|
|
127
126
|
puzzle_hashes_hex = [ph.hex() for ph in puzzle_hashes]
|
|
128
127
|
d = {"puzzle_hashes": puzzle_hashes_hex, "include_spent_coins": include_spent_coins}
|
|
@@ -138,8 +137,8 @@ class FullNodeRpcClient(RpcClient):
|
|
|
138
137
|
self,
|
|
139
138
|
parent_ids: list[bytes32],
|
|
140
139
|
include_spent_coins: bool = True,
|
|
141
|
-
start_height:
|
|
142
|
-
end_height:
|
|
140
|
+
start_height: int | None = None,
|
|
141
|
+
end_height: int | None = None,
|
|
143
142
|
) -> list[CoinRecord]:
|
|
144
143
|
parent_ids_hex = [pid.hex() for pid in parent_ids]
|
|
145
144
|
d = {"parent_ids": parent_ids_hex, "include_spent_coins": include_spent_coins}
|
|
@@ -159,8 +158,8 @@ class FullNodeRpcClient(RpcClient):
|
|
|
159
158
|
self,
|
|
160
159
|
hint: bytes32,
|
|
161
160
|
include_spent_coins: bool = True,
|
|
162
|
-
start_height:
|
|
163
|
-
end_height:
|
|
161
|
+
start_height: int | None = None,
|
|
162
|
+
end_height: int | None = None,
|
|
164
163
|
) -> list[CoinRecord]:
|
|
165
164
|
d = {"hint": hint.hex(), "include_spent_coins": include_spent_coins}
|
|
166
165
|
if start_height is not None:
|
|
@@ -247,12 +246,12 @@ class FullNodeRpcClient(RpcClient):
|
|
|
247
246
|
response = await self.fetch("get_mempool_items_by_coin_name", {"coin_name": coin_name.hex()})
|
|
248
247
|
return response
|
|
249
248
|
|
|
250
|
-
async def create_block_generator(self) ->
|
|
249
|
+
async def create_block_generator(self) -> dict[str, Any] | None:
|
|
251
250
|
response = await self.fetch("create_block_generator", {})
|
|
252
251
|
return response
|
|
253
252
|
|
|
254
253
|
async def get_recent_signage_point_or_eos(
|
|
255
|
-
self, sp_hash:
|
|
254
|
+
self, sp_hash: bytes32 | None, challenge_hash: bytes32 | None
|
|
256
255
|
) -> dict[str, Any]:
|
|
257
256
|
if sp_hash is not None and challenge_hash is not None:
|
|
258
257
|
raise ValueError("Either sp_hash or challenge_hash must be provided, not both.")
|
|
@@ -275,8 +274,8 @@ class FullNodeRpcClient(RpcClient):
|
|
|
275
274
|
|
|
276
275
|
async def get_fee_estimate(
|
|
277
276
|
self,
|
|
278
|
-
target_times:
|
|
279
|
-
cost:
|
|
277
|
+
target_times: list[int] | None,
|
|
278
|
+
cost: int | None,
|
|
280
279
|
) -> dict[str, Any]:
|
|
281
280
|
response = await self.fetch("get_fee_estimate", {"cost": cost, "target_times": target_times})
|
|
282
281
|
return response
|