chia-blockchain 2.5.4rc2__py3-none-any.whl → 2.5.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/_tests/blockchain/blockchain_test_utils.py +2 -3
- chia/_tests/blockchain/test_augmented_chain.py +2 -3
- chia/_tests/blockchain/test_blockchain.py +261 -44
- chia/_tests/blockchain/test_blockchain_transactions.py +4 -3
- chia/_tests/blockchain/test_build_chains.py +197 -1
- chia/_tests/blockchain/test_get_block_generator.py +1 -1
- chia/_tests/blockchain/test_lookup_fork_chain.py +1 -1
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +3 -4
- chia/_tests/clvm/test_message_conditions.py +2 -2
- chia/_tests/clvm/test_puzzle_compression.py +2 -3
- chia/_tests/clvm/test_puzzles.py +1 -2
- chia/_tests/clvm/test_singletons.py +2 -3
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +30 -25
- chia/_tests/cmds/test_dev_gh.py +1 -1
- chia/_tests/cmds/test_farm_cmd.py +1 -1
- chia/_tests/cmds/test_show.py +1 -2
- chia/_tests/cmds/wallet/test_did.py +101 -56
- chia/_tests/cmds/wallet/test_nft.py +109 -84
- chia/_tests/cmds/wallet/test_notifications.py +1 -1
- chia/_tests/cmds/wallet/test_offer.toffer +1 -1
- chia/_tests/cmds/wallet/test_vcs.py +8 -8
- chia/_tests/cmds/wallet/test_wallet.py +100 -46
- chia/_tests/conftest.py +31 -20
- chia/_tests/connection_utils.py +1 -1
- chia/_tests/core/consensus/stores/__init__.py +0 -0
- chia/_tests/core/consensus/stores/test_coin_store_protocol.py +40 -0
- chia/_tests/core/consensus/test_block_creation.py +2 -31
- chia/_tests/core/consensus/test_pot_iterations.py +38 -3
- chia/_tests/core/custom_types/test_proof_of_space.py +154 -26
- chia/_tests/core/custom_types/test_spend_bundle.py +2 -3
- chia/_tests/core/daemon/test_daemon.py +80 -0
- chia/_tests/core/data_layer/test_data_layer.py +1 -1
- chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
- chia/_tests/core/data_layer/test_data_rpc.py +14 -10
- chia/_tests/core/data_layer/test_data_store.py +5 -5
- chia/_tests/core/farmer/test_farmer_api.py +2 -2
- chia/_tests/core/full_node/full_sync/test_full_sync.py +446 -406
- chia/_tests/core/full_node/ram_db.py +3 -1
- chia/_tests/core/full_node/stores/test_block_store.py +28 -16
- chia/_tests/core/full_node/stores/test_coin_store.py +277 -185
- chia/_tests/core/full_node/stores/test_full_node_store.py +11 -4
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_address_manager.py +200 -27
- chia/_tests/core/full_node/test_block_height_map.py +2 -2
- chia/_tests/core/full_node/test_conditions.py +7 -6
- chia/_tests/core/full_node/test_full_node.py +456 -40
- chia/_tests/core/full_node/test_generator_tools.py +32 -2
- chia/_tests/core/full_node/test_hint_management.py +1 -1
- chia/_tests/core/full_node/test_node_load.py +20 -21
- chia/_tests/core/full_node/test_performance.py +3 -4
- chia/_tests/core/full_node/test_prev_tx_block.py +43 -0
- chia/_tests/core/full_node/test_subscriptions.py +1 -2
- chia/_tests/core/full_node/test_transactions.py +9 -5
- chia/_tests/core/full_node/test_tx_processing_queue.py +1 -2
- chia/_tests/core/large_block.py +1 -2
- chia/_tests/core/make_block_generator.py +3 -4
- chia/_tests/core/mempool/test_mempool.py +36 -86
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
- chia/_tests/core/mempool/test_mempool_item_queries.py +1 -3
- chia/_tests/core/mempool/test_mempool_manager.py +529 -69
- chia/_tests/core/mempool/test_mempool_performance.py +3 -2
- chia/_tests/core/mempool/test_singleton_fast_forward.py +61 -132
- chia/_tests/core/server/flood.py +1 -1
- chia/_tests/core/server/test_dos.py +1 -1
- chia/_tests/core/server/test_node_discovery.py +41 -27
- chia/_tests/core/server/test_rate_limits.py +1 -1
- chia/_tests/core/server/test_server.py +1 -1
- chia/_tests/core/services/test_services.py +5 -5
- chia/_tests/core/ssl/test_ssl.py +1 -1
- chia/_tests/core/test_cost_calculation.py +6 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_crawler_rpc.py +1 -1
- chia/_tests/core/test_db_conversion.py +3 -1
- chia/_tests/core/test_db_validation.py +5 -3
- chia/_tests/core/test_farmer_harvester_rpc.py +15 -15
- chia/_tests/core/test_filter.py +4 -1
- chia/_tests/core/test_full_node_rpc.py +99 -82
- chia/_tests/core/test_program.py +2 -2
- chia/_tests/core/util/test_block_cache.py +1 -1
- chia/_tests/core/util/test_keychain.py +2 -2
- chia/_tests/core/util/test_lockfile.py +1 -1
- chia/_tests/core/util/test_log_exceptions.py +5 -5
- chia/_tests/core/util/test_streamable.py +81 -22
- chia/_tests/db/test_db_wrapper.py +1 -3
- chia/_tests/environments/wallet.py +5 -5
- chia/_tests/farmer_harvester/test_farmer.py +9 -7
- chia/_tests/farmer_harvester/test_farmer_harvester.py +11 -4
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +15 -9
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -2
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +7 -5
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
- chia/_tests/generator/test_compression.py +1 -2
- chia/_tests/generator/test_rom.py +8 -4
- chia/_tests/plot_sync/test_plot_sync.py +3 -3
- chia/_tests/plot_sync/test_receiver.py +3 -3
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +3 -3
- chia/_tests/plot_sync/util.py +2 -2
- chia/_tests/pools/test_pool_cmdline.py +48 -21
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +2 -3
- chia/_tests/pools/test_pool_rpc.py +237 -105
- chia/_tests/pools/test_pool_wallet.py +11 -2
- chia/_tests/pools/test_wallet_pool_store.py +5 -4
- chia/_tests/rpc/test_rpc_client.py +1 -1
- chia/_tests/simulation/test_simulation.py +13 -8
- chia/_tests/simulation/test_simulator.py +2 -2
- chia/_tests/timelord/test_new_peak.py +191 -47
- chia/_tests/timelord/test_timelord.py +1 -1
- chia/_tests/tools/test_full_sync.py +0 -2
- chia/_tests/tools/test_run_block.py +3 -1
- chia/_tests/util/benchmark_cost.py +3 -3
- chia/_tests/util/benchmarks.py +2 -2
- chia/_tests/util/blockchain.py +11 -5
- chia/_tests/util/blockchain_mock.py +1 -4
- chia/_tests/util/coin_store.py +29 -0
- chia/_tests/util/constants.py +2 -18
- chia/_tests/util/full_sync.py +3 -3
- chia/_tests/util/generator_tools_testing.py +2 -3
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +33 -31
- chia/_tests/util/network_protocol_data.py +19 -17
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +3 -1
- chia/_tests/util/run_block.py +2 -2
- chia/_tests/util/setup_nodes.py +7 -7
- chia/_tests/util/spend_sim.py +47 -55
- chia/_tests/util/test_condition_tools.py +5 -4
- chia/_tests/util/test_config.py +2 -2
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +12 -14
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_paginator.py +4 -4
- chia/_tests/util/test_priority_mutex.py +2 -2
- chia/_tests/util/test_replace_str_to_bytes.py +15 -5
- chia/_tests/util/test_ssl_check.py +1 -1
- chia/_tests/util/test_testnet_overrides.py +13 -3
- chia/_tests/util/time_out_assert.py +4 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -2
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +352 -432
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +3 -6
- chia/_tests/wallet/cat_wallet/test_trades.py +53 -77
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -1
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +3 -3
- chia/_tests/wallet/clawback/test_clawback_metadata.py +4 -2
- chia/_tests/wallet/conftest.py +11 -12
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +11 -4
- chia/_tests/wallet/db_wallet/test_dl_offers.py +433 -130
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +3 -3
- chia/_tests/wallet/did_wallet/test_did.py +2132 -2000
- chia/_tests/wallet/nft_wallet/config.py +1 -1
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1610 -742
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +486 -907
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +4 -4
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +517 -294
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +133 -62
- chia/_tests/wallet/rpc/test_wallet_rpc.py +495 -265
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +10 -6
- chia/_tests/wallet/sync/test_wallet_sync.py +89 -60
- chia/_tests/wallet/test_clvm_casts.py +88 -0
- chia/_tests/wallet/test_coin_management.py +1 -1
- chia/_tests/wallet/test_coin_selection.py +1 -1
- chia/_tests/wallet/test_conditions.py +1 -1
- chia/_tests/wallet/test_new_wallet_protocol.py +13 -11
- chia/_tests/wallet/test_notifications.py +5 -3
- chia/_tests/wallet/test_sign_coin_spends.py +6 -6
- chia/_tests/wallet/test_signer_protocol.py +13 -12
- chia/_tests/wallet/test_singleton.py +1 -1
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +5 -7
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +108 -29
- chia/_tests/wallet/test_wallet_action_scope.py +9 -2
- chia/_tests/wallet/test_wallet_blockchain.py +2 -3
- chia/_tests/wallet/test_wallet_key_val_store.py +1 -2
- chia/_tests/wallet/test_wallet_node.py +2 -4
- chia/_tests/wallet/test_wallet_retry.py +4 -2
- chia/_tests/wallet/test_wallet_state_manager.py +191 -5
- chia/_tests/wallet/test_wallet_test_framework.py +1 -1
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +8 -8
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -12
- chia/_tests/wallet/wallet_block_tools.py +6 -6
- chia/_tests/weight_proof/test_weight_proof.py +10 -48
- chia/apis.py +1 -1
- chia/cmds/beta.py +1 -1
- chia/cmds/chia.py +9 -9
- chia/cmds/cmd_classes.py +12 -11
- chia/cmds/cmd_helpers.py +1 -1
- chia/cmds/cmds_util.py +12 -9
- chia/cmds/coin_funcs.py +2 -2
- chia/cmds/configure.py +2 -2
- chia/cmds/data.py +0 -2
- chia/cmds/data_funcs.py +1 -1
- chia/cmds/db_validate_func.py +1 -2
- chia/cmds/dev/__init__.py +0 -0
- chia/cmds/dev/data.py +273 -0
- chia/cmds/{gh.py → dev/gh.py} +5 -5
- chia/cmds/dev/main.py +22 -0
- chia/cmds/dev/mempool.py +78 -0
- chia/cmds/dev/mempool_funcs.py +63 -0
- chia/cmds/farm_funcs.py +5 -4
- chia/cmds/init_funcs.py +11 -11
- chia/cmds/keys.py +2 -2
- chia/cmds/keys_funcs.py +4 -4
- chia/cmds/netspace_funcs.py +1 -1
- chia/cmds/peer_funcs.py +2 -2
- chia/cmds/plotnft_funcs.py +72 -26
- chia/cmds/rpc.py +1 -1
- chia/cmds/show_funcs.py +5 -5
- chia/cmds/signer.py +8 -7
- chia/cmds/sim_funcs.py +8 -9
- chia/cmds/wallet.py +2 -2
- chia/cmds/wallet_funcs.py +165 -131
- chia/{util → consensus}/augmented_chain.py +1 -2
- chia/consensus/block_body_validation.py +54 -40
- chia/consensus/block_creation.py +42 -76
- chia/consensus/block_header_validation.py +32 -26
- chia/consensus/block_record.py +0 -3
- chia/consensus/blockchain.py +23 -32
- chia/consensus/blockchain_interface.py +1 -5
- chia/consensus/check_time_locks.py +57 -0
- chia/consensus/coin_store_protocol.py +151 -0
- chia/consensus/coinbase.py +0 -6
- chia/consensus/condition_costs.py +4 -0
- chia/{util → consensus}/condition_tools.py +4 -5
- chia/consensus/cost_calculator.py +1 -1
- chia/consensus/default_constants.py +32 -9
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +1 -2
- chia/consensus/find_fork_point.py +1 -3
- chia/consensus/full_block_to_block_record.py +1 -6
- chia/{util → consensus}/generator_tools.py +1 -3
- chia/consensus/get_block_challenge.py +30 -7
- chia/consensus/make_sub_epoch_summary.py +1 -5
- chia/consensus/multiprocess_validation.py +21 -20
- chia/consensus/pot_iterations.py +74 -13
- chia/{util → consensus}/prev_transaction_block.py +1 -1
- chia/consensus/vdf_info_computation.py +1 -3
- chia/daemon/keychain_proxy.py +5 -5
- chia/daemon/server.py +22 -5
- chia/data_layer/data_layer.py +92 -51
- chia/{rpc → data_layer}/data_layer_rpc_api.py +1 -1
- chia/{rpc → data_layer}/data_layer_rpc_util.py +3 -6
- chia/data_layer/data_layer_util.py +4 -6
- chia/data_layer/data_layer_wallet.py +42 -69
- chia/data_layer/dl_wallet_store.py +12 -6
- chia/data_layer/download_data.py +3 -3
- chia/data_layer/s3_plugin_service.py +0 -1
- chia/farmer/farmer.py +3 -4
- chia/farmer/farmer_api.py +11 -7
- chia/{rpc → farmer}/farmer_rpc_client.py +1 -1
- chia/full_node/block_height_map.py +7 -6
- chia/full_node/block_store.py +5 -7
- chia/full_node/bundle_tools.py +1 -2
- chia/full_node/coin_store.py +153 -124
- chia/{types → full_node}/eligible_coin_spends.py +39 -70
- chia/full_node/fee_estimator.py +1 -1
- chia/full_node/fee_estimator_interface.py +0 -8
- chia/full_node/fee_tracker.py +25 -25
- chia/full_node/full_node.py +70 -53
- chia/full_node/full_node_api.py +57 -40
- chia/{rpc → full_node}/full_node_rpc_api.py +87 -8
- chia/{rpc → full_node}/full_node_rpc_client.py +7 -6
- chia/full_node/full_node_store.py +23 -8
- chia/full_node/mempool.py +206 -53
- chia/full_node/mempool_check_conditions.py +20 -63
- chia/full_node/mempool_manager.py +47 -45
- chia/full_node/subscriptions.py +1 -3
- chia/full_node/tx_processing_queue.py +50 -3
- chia/full_node/weight_proof.py +46 -37
- chia/harvester/harvester.py +1 -1
- chia/harvester/harvester_api.py +22 -7
- chia/introducer/introducer.py +1 -1
- chia/introducer/introducer_api.py +1 -1
- chia/plot_sync/exceptions.py +1 -1
- chia/plot_sync/receiver.py +1 -1
- chia/plot_sync/sender.py +2 -2
- chia/pools/pool_puzzles.py +13 -18
- chia/pools/pool_wallet.py +23 -46
- chia/protocols/farmer_protocol.py +11 -3
- chia/protocols/full_node_protocol.py +1 -4
- chia/protocols/harvester_protocol.py +3 -3
- chia/protocols/pool_protocol.py +1 -2
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +1 -3
- chia/protocols/wallet_protocol.py +3 -3
- chia/rpc/rpc_client.py +7 -8
- chia/rpc/rpc_server.py +3 -3
- chia/rpc/util.py +3 -1
- chia/seeder/crawler.py +1 -1
- chia/seeder/crawler_api.py +1 -1
- chia/seeder/dns_server.py +2 -0
- chia/seeder/start_crawler.py +3 -3
- chia/server/address_manager.py +286 -38
- chia/server/address_manager_store.py +0 -215
- chia/{types → server}/aliases.py +7 -7
- chia/server/api_protocol.py +1 -1
- chia/server/chia_policy.py +1 -1
- chia/server/node_discovery.py +76 -113
- chia/server/rate_limits.py +1 -1
- chia/server/resolve_peer_info.py +43 -0
- chia/server/server.py +5 -5
- chia/server/start_data_layer.py +4 -4
- chia/server/start_farmer.py +5 -4
- chia/server/start_full_node.py +5 -4
- chia/server/start_harvester.py +7 -5
- chia/server/start_introducer.py +2 -2
- chia/server/start_service.py +1 -1
- chia/server/start_timelord.py +7 -5
- chia/server/start_wallet.py +7 -5
- chia/server/ws_connection.py +1 -1
- chia/simulator/add_blocks_in_batches.py +2 -2
- chia/simulator/block_tools.py +245 -201
- chia/simulator/full_node_simulator.py +38 -10
- chia/simulator/setup_services.py +12 -12
- chia/simulator/simulator_full_node_rpc_api.py +2 -2
- chia/simulator/simulator_full_node_rpc_client.py +2 -2
- chia/simulator/simulator_test_tools.py +2 -2
- chia/simulator/start_simulator.py +1 -1
- chia/simulator/wallet_tools.py +10 -18
- chia/ssl/create_ssl.py +1 -1
- chia/timelord/iters_from_block.py +14 -14
- chia/timelord/timelord.py +15 -11
- chia/timelord/timelord_api.py +14 -2
- chia/timelord/timelord_state.py +20 -14
- chia/types/blockchain_format/program.py +53 -10
- chia/types/blockchain_format/proof_of_space.py +73 -19
- chia/types/coin_spend.py +3 -56
- chia/types/generator_types.py +28 -0
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +12 -7
- chia/types/unfinished_header_block.py +1 -2
- chia/types/validation_state.py +1 -2
- chia/types/weight_proof.py +1 -3
- chia/util/action_scope.py +3 -3
- chia/util/block_cache.py +1 -2
- chia/util/byte_types.py +1 -1
- chia/util/casts.py +21 -0
- chia/util/config.py +0 -37
- chia/util/db_wrapper.py +8 -1
- chia/util/errors.py +3 -2
- chia/util/initial-config.yaml +21 -5
- chia/util/keychain.py +6 -7
- chia/util/keyring_wrapper.py +5 -5
- chia/util/limited_semaphore.py +1 -1
- chia/util/priority_mutex.py +1 -1
- chia/util/streamable.py +63 -5
- chia/util/task_timing.py +1 -1
- chia/util/virtual_project_analysis.py +1 -1
- chia/wallet/cat_wallet/cat_info.py +7 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +9 -5
- chia/wallet/cat_wallet/cat_utils.py +1 -1
- chia/wallet/cat_wallet/cat_wallet.py +44 -36
- chia/wallet/cat_wallet/lineage_store.py +7 -0
- chia/wallet/cat_wallet/r_cat_wallet.py +274 -0
- chia/wallet/conditions.py +5 -10
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -4
- chia/wallet/derivation_record.py +33 -0
- chia/wallet/derive_keys.py +3 -3
- chia/wallet/did_wallet/did_info.py +12 -3
- chia/wallet/did_wallet/did_wallet.py +132 -101
- chia/wallet/did_wallet/did_wallet_puzzles.py +9 -9
- chia/wallet/driver_protocol.py +3 -1
- chia/{types/spend_bundle.py → wallet/estimate_fees.py} +2 -7
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
- chia/wallet/nft_wallet/nft_wallet.py +69 -112
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +6 -4
- chia/wallet/nft_wallet/transfer_program_puzzle.py +4 -2
- chia/wallet/nft_wallet/uncurry_nft.py +4 -6
- chia/wallet/notification_manager.py +2 -3
- chia/wallet/outer_puzzles.py +7 -2
- chia/wallet/puzzle_drivers.py +1 -1
- chia/wallet/puzzles/clawback/drivers.py +5 -4
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -1
- chia/wallet/puzzles/singleton_top_layer.py +2 -1
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +2 -1
- chia/wallet/puzzles/tails.py +1 -3
- chia/wallet/signer_protocol.py +5 -6
- chia/wallet/singleton.py +5 -4
- chia/wallet/singleton_record.py +1 -1
- chia/wallet/trade_manager.py +18 -20
- chia/wallet/trade_record.py +3 -6
- chia/wallet/trading/offer.py +12 -13
- chia/wallet/uncurried_puzzle.py +2 -2
- chia/wallet/util/compute_additions.py +58 -0
- chia/wallet/util/compute_hints.py +3 -3
- chia/wallet/util/compute_memos.py +4 -4
- chia/wallet/util/curry_and_treehash.py +2 -1
- chia/wallet/util/debug_spend_bundle.py +1 -1
- chia/wallet/util/merkle_tree.py +1 -1
- chia/wallet/util/peer_request_cache.py +1 -2
- chia/wallet/util/tx_config.py +3 -8
- chia/wallet/util/wallet_sync_utils.py +10 -5
- chia/wallet/util/wallet_types.py +1 -0
- chia/wallet/vc_wallet/cr_cat_drivers.py +17 -18
- chia/wallet/vc_wallet/cr_cat_wallet.py +30 -28
- chia/wallet/vc_wallet/cr_outer_puzzle.py +5 -3
- chia/wallet/vc_wallet/vc_drivers.py +50 -8
- chia/wallet/vc_wallet/vc_store.py +3 -5
- chia/wallet/vc_wallet/vc_wallet.py +15 -22
- chia/wallet/wallet.py +36 -46
- chia/wallet/wallet_action_scope.py +73 -4
- chia/wallet/wallet_blockchain.py +1 -3
- chia/wallet/wallet_interested_store.py +1 -1
- chia/wallet/wallet_nft_store.py +3 -3
- chia/wallet/wallet_node.py +17 -16
- chia/wallet/wallet_node_api.py +4 -5
- chia/wallet/wallet_pool_store.py +1 -1
- chia/wallet/wallet_protocol.py +2 -0
- chia/wallet/wallet_puzzle_store.py +1 -1
- chia/{rpc → wallet}/wallet_request_types.py +670 -81
- chia/{rpc → wallet}/wallet_rpc_api.py +735 -766
- chia/{rpc → wallet}/wallet_rpc_client.py +268 -420
- chia/wallet/wallet_singleton_store.py +8 -7
- chia/wallet/wallet_spend_bundle.py +4 -3
- chia/wallet/wallet_state_manager.py +320 -191
- chia/wallet/wallet_weight_proof_handler.py +1 -2
- chia/wallet/wsm_apis.py +98 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/METADATA +7 -7
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/RECORD +443 -436
- mozilla-ca/cacert.pem +3 -165
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +0 -145
- chia/cmds/dev.py +0 -18
- chia/types/blockchain_format/slots.py +0 -9
- chia/types/blockchain_format/sub_epoch_summary.py +0 -5
- chia/types/end_of_slot_bundle.py +0 -5
- chia/types/full_block.py +0 -5
- chia/types/header_block.py +0 -5
- chia/types/spend_bundle_conditions.py +0 -7
- chia/types/transaction_queue_entry.py +0 -56
- chia/types/unfinished_block.py +0 -5
- /chia/cmds/{installers.py → dev/installers.py} +0 -0
- /chia/cmds/{sim.py → dev/sim.py} +0 -0
- /chia/{util → cmds}/dump_keyring.py +0 -0
- /chia/{full_node → consensus}/signage_point.py +0 -0
- /chia/{rpc → data_layer}/data_layer_rpc_client.py +0 -0
- /chia/{rpc → farmer}/farmer_rpc_api.py +0 -0
- /chia/{util → full_node}/full_block_utils.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_api.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_client.py +0 -0
- /chia/{full_node → protocols}/fee_estimate.py +0 -0
- /chia/{server → protocols}/outbound_message.py +0 -0
- /chia/{rpc → seeder}/crawler_rpc_api.py +0 -0
- /chia/{util → simulator}/vdf_prover.py +0 -0
- /chia/{util → ssl}/ssl_check.py +0 -0
- /chia/{rpc → timelord}/timelord_rpc_api.py +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/entry_points.txt +0 -0
|
@@ -1,47 +1,49 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
-
from chia_rs import AugSchemeMPL
|
|
4
|
+
from chia_rs import AugSchemeMPL, BlockRecord, FullBlock, UnfinishedBlock
|
|
5
5
|
from chia_rs.sized_bytes import bytes32
|
|
6
|
-
from chia_rs.sized_ints import uint8
|
|
7
|
-
from clvm.casts import int_to_bytes
|
|
6
|
+
from chia_rs.sized_ints import uint8, uint32, uint64
|
|
8
7
|
|
|
9
8
|
from chia import __version__
|
|
10
9
|
from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
|
|
10
|
+
from chia._tests.conftest import ConsensusMode
|
|
11
11
|
from chia._tests.connection_utils import connect_and_get_peer
|
|
12
12
|
from chia._tests.util.rpc import validate_get_routes
|
|
13
|
+
from chia._tests.util.setup_nodes import SimulatorsAndWalletsServices
|
|
13
14
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
14
|
-
from chia.consensus.
|
|
15
|
+
from chia.consensus.blockchain import Blockchain
|
|
15
16
|
from chia.consensus.pot_iterations import is_overflow_block
|
|
16
|
-
from chia.
|
|
17
|
+
from chia.consensus.signage_point import SignagePoint
|
|
18
|
+
from chia.full_node.full_node_rpc_api import get_average_block_time, get_nearest_transaction_block
|
|
19
|
+
from chia.full_node.full_node_rpc_client import FullNodeRpcClient
|
|
17
20
|
from chia.protocols import full_node_protocol
|
|
18
|
-
from chia.
|
|
19
|
-
from chia.rpc.full_node_rpc_client import FullNodeRpcClient
|
|
20
|
-
from chia.server.outbound_message import NodeType
|
|
21
|
+
from chia.protocols.outbound_message import NodeType
|
|
21
22
|
from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
22
23
|
from chia.simulator.block_tools import get_signage_point
|
|
23
24
|
from chia.simulator.simulator_protocol import FarmNewBlockProtocol, ReorgProtocol
|
|
24
25
|
from chia.simulator.wallet_tools import WalletTool
|
|
25
26
|
from chia.types.blockchain_format.coin import Coin
|
|
26
|
-
from chia.types.blockchain_format.
|
|
27
|
-
from chia.types.coin_spend import compute_additions
|
|
27
|
+
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
28
28
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
29
29
|
from chia.types.condition_with_args import ConditionWithArgs
|
|
30
|
-
from chia.
|
|
31
|
-
from chia.types.unfinished_block import UnfinishedBlock
|
|
30
|
+
from chia.util.casts import int_to_bytes
|
|
32
31
|
from chia.util.hash import std_hash
|
|
32
|
+
from chia.wallet.util.compute_additions import compute_additions
|
|
33
33
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
@pytest.mark.anyio
|
|
37
|
-
async def test1(
|
|
37
|
+
async def test1(
|
|
38
|
+
two_nodes_sim_and_wallets_services: SimulatorsAndWalletsServices, self_hostname: str, consensus_mode: ConsensusMode
|
|
39
|
+
) -> None:
|
|
38
40
|
num_blocks = 5
|
|
39
41
|
nodes, _, bt = two_nodes_sim_and_wallets_services
|
|
40
42
|
full_node_service_1, full_node_service_2 = nodes
|
|
41
43
|
full_node_api_1 = full_node_service_1._api
|
|
42
44
|
full_node_api_2 = full_node_service_2._api
|
|
43
45
|
server_2 = full_node_api_2.full_node.server
|
|
44
|
-
|
|
46
|
+
assert full_node_service_1.rpc_server is not None
|
|
45
47
|
async with FullNodeRpcClient.create_as_context(
|
|
46
48
|
self_hostname,
|
|
47
49
|
full_node_service_1.rpc_server.listen_port,
|
|
@@ -81,14 +83,16 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
81
83
|
await full_node_api_1.full_node.add_block(block, None)
|
|
82
84
|
|
|
83
85
|
assert len(await client.get_unfinished_block_headers()) > 0
|
|
84
|
-
assert len(await client.get_all_block(0, 2)) == 2
|
|
86
|
+
assert len(await client.get_all_block(uint32(0), uint32(2))) == 2
|
|
85
87
|
state = await client.get_blockchain_state()
|
|
86
88
|
|
|
87
|
-
|
|
88
|
-
assert
|
|
89
|
-
assert (await client.get_block(
|
|
89
|
+
peak_block = await client.get_block(state["peak"].header_hash)
|
|
90
|
+
assert peak_block == blocks[-1]
|
|
91
|
+
assert (await client.get_block(bytes32([1] * 32))) is None
|
|
90
92
|
|
|
91
|
-
|
|
93
|
+
block_record = await client.get_block_record_by_height(2)
|
|
94
|
+
assert block_record is not None
|
|
95
|
+
assert block_record.header_hash == blocks[2].header_hash
|
|
92
96
|
|
|
93
97
|
assert len(await client.get_block_records(0, 100)) == num_blocks * 2
|
|
94
98
|
|
|
@@ -161,12 +165,9 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
161
165
|
== spend_bundle
|
|
162
166
|
)
|
|
163
167
|
assert (await client.get_all_mempool_tx_ids())[0] == spend_bundle.name()
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
)
|
|
168
|
-
== spend_bundle
|
|
169
|
-
)
|
|
168
|
+
mempool_item = await client.get_mempool_item_by_tx_id(spend_bundle.name())
|
|
169
|
+
assert mempool_item is not None
|
|
170
|
+
assert WalletSpendBundle.from_json_dict(mempool_item["spend_bundle"]) == spend_bundle
|
|
170
171
|
assert (await client.get_coin_record_by_name(coin.name())) is None
|
|
171
172
|
|
|
172
173
|
# Verify that the include_pending arg to get_mempool_item_by_tx_id works
|
|
@@ -180,23 +181,21 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
180
181
|
condition_dic=condition_dic,
|
|
181
182
|
)
|
|
182
183
|
await client.push_tx(spend_bundle_pending)
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
)
|
|
190
|
-
== spend_bundle_pending # pending entry into mempool, so include_pending fetches
|
|
191
|
-
)
|
|
184
|
+
# not strictly in the mempool
|
|
185
|
+
assert (await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), False)) is None
|
|
186
|
+
# pending entry into mempool, so include_pending fetches
|
|
187
|
+
mempool_item = await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), True)
|
|
188
|
+
assert mempool_item is not None
|
|
189
|
+
assert WalletSpendBundle.from_json_dict(mempool_item["spend_bundle"]) == spend_bundle_pending
|
|
192
190
|
|
|
193
191
|
await full_node_api_1.farm_new_transaction_block(FarmNewBlockProtocol(ph_2))
|
|
194
192
|
|
|
195
193
|
coin_record = await client.get_coin_record_by_name(coin.name())
|
|
194
|
+
assert coin_record is not None
|
|
196
195
|
assert coin_record.coin == coin
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
)
|
|
196
|
+
coin_spend = await client.get_puzzle_and_solution(coin.parent_coin_info, coin_record.confirmed_block_index)
|
|
197
|
+
assert coin_spend is not None
|
|
198
|
+
assert coin in compute_additions(coin_spend)
|
|
200
199
|
|
|
201
200
|
assert len(await client.get_coin_records_by_puzzle_hash(ph_receiver)) == 1
|
|
202
201
|
assert len(list(filter(lambda cr: not cr.spent, (await client.get_coin_records_by_puzzle_hash(ph))))) == 3
|
|
@@ -225,19 +224,19 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
225
224
|
)
|
|
226
225
|
|
|
227
226
|
await full_node_api_1.farm_new_transaction_block(FarmNewBlockProtocol(ph_2))
|
|
228
|
-
block
|
|
227
|
+
block = (await full_node_api_1.get_all_full_blocks())[-1]
|
|
229
228
|
|
|
230
229
|
# since the hard fork, we no longer compress blocks using
|
|
231
230
|
# block references anymore
|
|
232
231
|
assert block.transactions_generator_ref_list == []
|
|
233
232
|
|
|
234
233
|
block_spends = await client.get_block_spends(block.header_hash)
|
|
235
|
-
|
|
234
|
+
assert block_spends is not None
|
|
236
235
|
assert len(block_spends) == 3
|
|
237
236
|
assert sorted(block_spends, key=str) == sorted(coin_spends, key=str)
|
|
238
237
|
|
|
239
238
|
block_spends_with_conditions = await client.get_block_spends_with_conditions(block.header_hash)
|
|
240
|
-
|
|
239
|
+
assert block_spends_with_conditions is not None
|
|
241
240
|
assert len(block_spends_with_conditions) == 3
|
|
242
241
|
|
|
243
242
|
block_spends_with_conditions = sorted(block_spends_with_conditions, key=lambda x: str(x.coin_spend))
|
|
@@ -247,17 +246,17 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
247
246
|
assert coin_spend_with_conditions.coin_spend.coin == Coin(
|
|
248
247
|
bytes.fromhex("e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000a"),
|
|
249
248
|
bytes.fromhex("8488947a2213b2c2551fe019bbb708db86eab3dd5133eb57e801515e9e4ad82a"),
|
|
250
|
-
|
|
249
|
+
uint64(1_750_000_000_000),
|
|
251
250
|
)
|
|
252
|
-
assert coin_spend_with_conditions.coin_spend.puzzle_reveal
|
|
251
|
+
assert coin_spend_with_conditions.coin_spend.puzzle_reveal == SerializedProgram.fromhex(
|
|
253
252
|
"ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252aff018080"
|
|
254
253
|
)
|
|
255
|
-
assert coin_spend_with_conditions.coin_spend.solution
|
|
254
|
+
assert coin_spend_with_conditions.coin_spend.solution == SerializedProgram.fromhex(
|
|
256
255
|
"ff80ffff01ffff33ffa063c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575cff8601977420dc0080ffff3cffa0a2366d6d8e1ce7496175528f5618a13da8401b02f2bac1eaae8f28aea9ee54798080ff8080"
|
|
257
256
|
)
|
|
258
257
|
assert coin_spend_with_conditions.conditions == [
|
|
259
258
|
ConditionWithArgs(
|
|
260
|
-
b"2",
|
|
259
|
+
ConditionOpcode(b"2"),
|
|
261
260
|
[
|
|
262
261
|
bytes.fromhex(
|
|
263
262
|
"a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252a"
|
|
@@ -266,14 +265,14 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
266
265
|
],
|
|
267
266
|
),
|
|
268
267
|
ConditionWithArgs(
|
|
269
|
-
b"3",
|
|
268
|
+
ConditionOpcode(b"3"),
|
|
270
269
|
[
|
|
271
270
|
bytes.fromhex("63c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575c"),
|
|
272
271
|
bytes.fromhex("01977420dc00"),
|
|
273
272
|
],
|
|
274
273
|
),
|
|
275
274
|
ConditionWithArgs(
|
|
276
|
-
b"<",
|
|
275
|
+
ConditionOpcode(b"<"),
|
|
277
276
|
[
|
|
278
277
|
bytes.fromhex("a2366d6d8e1ce7496175528f5618a13da8401b02f2bac1eaae8f28aea9ee5479"),
|
|
279
278
|
],
|
|
@@ -285,17 +284,17 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
285
284
|
assert coin_spend_with_conditions.coin_spend.coin == Coin(
|
|
286
285
|
bytes.fromhex("e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000b"),
|
|
287
286
|
bytes.fromhex("8488947a2213b2c2551fe019bbb708db86eab3dd5133eb57e801515e9e4ad82a"),
|
|
288
|
-
|
|
287
|
+
uint64(1_750_000_000_000),
|
|
289
288
|
)
|
|
290
|
-
assert coin_spend_with_conditions.coin_spend.puzzle_reveal
|
|
289
|
+
assert coin_spend_with_conditions.coin_spend.puzzle_reveal == SerializedProgram.fromhex(
|
|
291
290
|
"ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252aff018080"
|
|
292
291
|
)
|
|
293
|
-
assert coin_spend_with_conditions.coin_spend.solution
|
|
292
|
+
assert coin_spend_with_conditions.coin_spend.solution == SerializedProgram.fromhex(
|
|
294
293
|
"ff80ffff01ffff33ffa063c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575cff8601977420dc0080ffff3cffa04f6d4d12e97e83b2024fd0970e3b9e8a1c2e509625c15ff4145940c45b51974f8080ff8080"
|
|
295
294
|
)
|
|
296
295
|
assert coin_spend_with_conditions.conditions == [
|
|
297
296
|
ConditionWithArgs(
|
|
298
|
-
b"2",
|
|
297
|
+
ConditionOpcode(b"2"),
|
|
299
298
|
[
|
|
300
299
|
bytes.fromhex(
|
|
301
300
|
"a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252a"
|
|
@@ -304,14 +303,14 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
304
303
|
],
|
|
305
304
|
),
|
|
306
305
|
ConditionWithArgs(
|
|
307
|
-
b"3",
|
|
306
|
+
ConditionOpcode(b"3"),
|
|
308
307
|
[
|
|
309
308
|
bytes.fromhex("63c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575c"),
|
|
310
309
|
bytes.fromhex("01977420dc00"),
|
|
311
310
|
],
|
|
312
311
|
),
|
|
313
312
|
ConditionWithArgs(
|
|
314
|
-
b"<",
|
|
313
|
+
ConditionOpcode(b"<"),
|
|
315
314
|
[
|
|
316
315
|
bytes.fromhex("4f6d4d12e97e83b2024fd0970e3b9e8a1c2e509625c15ff4145940c45b51974f"),
|
|
317
316
|
],
|
|
@@ -323,17 +322,17 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
323
322
|
assert coin_spend_with_conditions.coin_spend.coin == Coin(
|
|
324
323
|
bytes.fromhex("27ae41e4649b934ca495991b7852b8550000000000000000000000000000000b"),
|
|
325
324
|
bytes.fromhex("8488947a2213b2c2551fe019bbb708db86eab3dd5133eb57e801515e9e4ad82a"),
|
|
326
|
-
|
|
325
|
+
uint64(250_000_000_000),
|
|
327
326
|
)
|
|
328
|
-
assert coin_spend_with_conditions.coin_spend.puzzle_reveal
|
|
327
|
+
assert coin_spend_with_conditions.coin_spend.puzzle_reveal == SerializedProgram.fromhex(
|
|
329
328
|
"ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252aff018080"
|
|
330
329
|
)
|
|
331
|
-
assert coin_spend_with_conditions.coin_spend.solution
|
|
330
|
+
assert coin_spend_with_conditions.coin_spend.solution == SerializedProgram.fromhex(
|
|
332
331
|
"ff80ffff01ffff33ffa063c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575cff853a3529440080ffff3cffa0617d9951551dc9e329fcab835f37fe4602c9ea57626cc2069228793f7007716f8080ff8080"
|
|
333
332
|
)
|
|
334
333
|
assert coin_spend_with_conditions.conditions == [
|
|
335
334
|
ConditionWithArgs(
|
|
336
|
-
b"2",
|
|
335
|
+
ConditionOpcode(b"2"),
|
|
337
336
|
[
|
|
338
337
|
bytes.fromhex(
|
|
339
338
|
"a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252a"
|
|
@@ -342,29 +341,29 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
342
341
|
],
|
|
343
342
|
),
|
|
344
343
|
ConditionWithArgs(
|
|
345
|
-
b"3",
|
|
344
|
+
ConditionOpcode(b"3"),
|
|
346
345
|
[
|
|
347
346
|
bytes.fromhex("63c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575c"),
|
|
348
347
|
bytes.fromhex("3a35294400"),
|
|
349
348
|
],
|
|
350
349
|
),
|
|
351
350
|
ConditionWithArgs(
|
|
352
|
-
b"<",
|
|
351
|
+
ConditionOpcode(b"<"),
|
|
353
352
|
[
|
|
354
353
|
bytes.fromhex("617d9951551dc9e329fcab835f37fe4602c9ea57626cc2069228793f7007716f"),
|
|
355
354
|
],
|
|
356
355
|
),
|
|
357
356
|
]
|
|
358
357
|
|
|
359
|
-
memo = 32 * b"\f"
|
|
358
|
+
memo = bytes32(32 * b"\f")
|
|
360
359
|
|
|
361
360
|
for i in range(2):
|
|
362
361
|
await full_node_api_1.farm_new_transaction_block(FarmNewBlockProtocol(ph_2))
|
|
363
362
|
|
|
364
363
|
state = await client.get_blockchain_state()
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
coin_to_spend =
|
|
364
|
+
peak_block = await client.get_block(state["peak"].header_hash)
|
|
365
|
+
assert peak_block is not None
|
|
366
|
+
coin_to_spend = peak_block.get_included_reward_coins()[0]
|
|
368
367
|
|
|
369
368
|
spend_bundle = wallet.generate_signed_transaction(coin_to_spend.amount, ph_2, coin_to_spend, memo=memo)
|
|
370
369
|
await client.push_tx(spend_bundle)
|
|
@@ -398,9 +397,10 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
398
397
|
|
|
399
398
|
assert len(await client.get_connections()) == 0
|
|
400
399
|
|
|
400
|
+
assert server_2._port is not None
|
|
401
401
|
await client.open_connection(self_hostname, server_2._port)
|
|
402
402
|
|
|
403
|
-
async def num_connections():
|
|
403
|
+
async def num_connections() -> int:
|
|
404
404
|
return len(await client.get_connections())
|
|
405
405
|
|
|
406
406
|
await time_out_assert(10, num_connections, 1)
|
|
@@ -411,10 +411,12 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
411
411
|
await client.close_connection(connections[0]["node_id"])
|
|
412
412
|
await time_out_assert(10, num_connections, 0)
|
|
413
413
|
|
|
414
|
-
blocks
|
|
414
|
+
blocks = await client.get_blocks(0, 5)
|
|
415
415
|
assert len(blocks) == 5
|
|
416
416
|
|
|
417
|
-
await full_node_api_1.reorg_from_index_to_new_index(
|
|
417
|
+
await full_node_api_1.reorg_from_index_to_new_index(
|
|
418
|
+
ReorgProtocol(uint32(2), uint32(55), bytes32([0x2] * 32), None)
|
|
419
|
+
)
|
|
418
420
|
new_blocks_0: list[FullBlock] = await client.get_blocks(0, 5)
|
|
419
421
|
assert len(new_blocks_0) == 7
|
|
420
422
|
|
|
@@ -427,7 +429,9 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
|
|
|
427
429
|
|
|
428
430
|
|
|
429
431
|
@pytest.mark.anyio
|
|
430
|
-
async def test_signage_points(
|
|
432
|
+
async def test_signage_points(
|
|
433
|
+
two_nodes_sim_and_wallets_services: SimulatorsAndWalletsServices, empty_blockchain: Blockchain
|
|
434
|
+
) -> None:
|
|
431
435
|
nodes, _, bt = two_nodes_sim_and_wallets_services
|
|
432
436
|
full_node_service_1, full_node_service_2 = nodes
|
|
433
437
|
full_node_api_1 = full_node_service_1._api
|
|
@@ -439,7 +443,7 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
|
|
|
439
443
|
self_hostname = config["self_hostname"]
|
|
440
444
|
|
|
441
445
|
peer = await connect_and_get_peer(server_1, server_2, self_hostname)
|
|
442
|
-
|
|
446
|
+
assert full_node_service_1.rpc_server is not None
|
|
443
447
|
async with FullNodeRpcClient.create_as_context(
|
|
444
448
|
self_hostname,
|
|
445
449
|
full_node_service_1.rpc_server.listen_port,
|
|
@@ -472,6 +476,7 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
|
|
|
472
476
|
|
|
473
477
|
# Creates a signage point based on the last block
|
|
474
478
|
peak_2 = second_blockchain.get_peak()
|
|
479
|
+
assert peak_2 is not None
|
|
475
480
|
sp: SignagePoint = get_signage_point(
|
|
476
481
|
bt.constants,
|
|
477
482
|
blockchain,
|
|
@@ -481,7 +486,10 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
|
|
|
481
486
|
[],
|
|
482
487
|
peak_2.sub_slot_iters,
|
|
483
488
|
)
|
|
484
|
-
|
|
489
|
+
assert sp.cc_proof is not None
|
|
490
|
+
assert sp.cc_vdf is not None
|
|
491
|
+
assert sp.rc_proof is not None
|
|
492
|
+
assert sp.rc_vdf is not None
|
|
485
493
|
# Don't have SP yet
|
|
486
494
|
res = await client.get_recent_signage_point_or_eos(sp.cc_vdf.output.get_hash(), None)
|
|
487
495
|
assert res is None
|
|
@@ -550,10 +558,12 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
|
|
|
550
558
|
|
|
551
559
|
|
|
552
560
|
@pytest.mark.anyio
|
|
553
|
-
async def test_get_network_info(
|
|
561
|
+
async def test_get_network_info(
|
|
562
|
+
one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, self_hostname: str
|
|
563
|
+
) -> None:
|
|
554
564
|
nodes, _, _bt = one_wallet_and_one_simulator_services
|
|
555
565
|
(full_node_service_1,) = nodes
|
|
556
|
-
|
|
566
|
+
assert full_node_service_1.rpc_server is not None
|
|
557
567
|
async with FullNodeRpcClient.create_as_context(
|
|
558
568
|
self_hostname,
|
|
559
569
|
full_node_service_1.rpc_server.listen_port,
|
|
@@ -571,9 +581,12 @@ async def test_get_network_info(one_wallet_and_one_simulator_services, self_host
|
|
|
571
581
|
|
|
572
582
|
|
|
573
583
|
@pytest.mark.anyio
|
|
574
|
-
async def test_get_version(
|
|
584
|
+
async def test_get_version(
|
|
585
|
+
one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, self_hostname: str
|
|
586
|
+
) -> None:
|
|
575
587
|
nodes, _, _bt = one_wallet_and_one_simulator_services
|
|
576
588
|
(full_node_service_1,) = nodes
|
|
589
|
+
assert full_node_service_1.rpc_server is not None
|
|
577
590
|
async with FullNodeRpcClient.create_as_context(
|
|
578
591
|
self_hostname,
|
|
579
592
|
full_node_service_1.rpc_server.listen_port,
|
|
@@ -588,12 +601,14 @@ async def test_get_version(one_wallet_and_one_simulator_services, self_hostname)
|
|
|
588
601
|
|
|
589
602
|
|
|
590
603
|
@pytest.mark.anyio
|
|
591
|
-
async def test_get_blockchain_state(
|
|
604
|
+
async def test_get_blockchain_state(
|
|
605
|
+
one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, self_hostname: str
|
|
606
|
+
) -> None:
|
|
592
607
|
num_blocks = 5
|
|
593
608
|
nodes, _, bt = one_wallet_and_one_simulator_services
|
|
594
609
|
(full_node_service_1,) = nodes
|
|
595
610
|
full_node_api_1 = full_node_service_1._api
|
|
596
|
-
|
|
611
|
+
assert full_node_service_1.rpc_server is not None
|
|
597
612
|
try:
|
|
598
613
|
client = await FullNodeRpcClient.create(
|
|
599
614
|
self_hostname,
|
|
@@ -633,9 +648,11 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
|
|
|
633
648
|
assert state["space"] > 0
|
|
634
649
|
assert state["average_block_time"] > 0
|
|
635
650
|
|
|
636
|
-
block_records
|
|
637
|
-
|
|
638
|
-
|
|
651
|
+
block_records = []
|
|
652
|
+
for rec in blocks:
|
|
653
|
+
record = await full_node_api_1.full_node.blockchain.get_block_record_from_db(rec.header_hash)
|
|
654
|
+
if record is not None:
|
|
655
|
+
block_records.append(record)
|
|
639
656
|
first_non_transaction_block_index = -1
|
|
640
657
|
for i, b in enumerate(block_records):
|
|
641
658
|
if not b.is_transaction_block:
|
|
@@ -673,9 +690,9 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
|
|
|
673
690
|
|
|
674
691
|
|
|
675
692
|
@pytest.mark.anyio
|
|
676
|
-
async def test_coin_name_not_in_request(one_node, self_hostname):
|
|
693
|
+
async def test_coin_name_not_in_request(one_node: SimulatorsAndWalletsServices, self_hostname: str) -> None:
|
|
677
694
|
[full_node_service], _, _ = one_node
|
|
678
|
-
|
|
695
|
+
assert full_node_service.rpc_server is not None
|
|
679
696
|
async with FullNodeRpcClient.create_as_context(
|
|
680
697
|
self_hostname,
|
|
681
698
|
full_node_service.rpc_server.listen_port,
|
|
@@ -687,9 +704,9 @@ async def test_coin_name_not_in_request(one_node, self_hostname):
|
|
|
687
704
|
|
|
688
705
|
|
|
689
706
|
@pytest.mark.anyio
|
|
690
|
-
async def test_coin_name_not_found_in_mempool(one_node, self_hostname):
|
|
707
|
+
async def test_coin_name_not_found_in_mempool(one_node: SimulatorsAndWalletsServices, self_hostname: str) -> None:
|
|
691
708
|
[full_node_service], _, _ = one_node
|
|
692
|
-
|
|
709
|
+
assert full_node_service.rpc_server is not None
|
|
693
710
|
async with FullNodeRpcClient.create_as_context(
|
|
694
711
|
self_hostname,
|
|
695
712
|
full_node_service.rpc_server.listen_port,
|
|
@@ -704,10 +721,10 @@ async def test_coin_name_not_found_in_mempool(one_node, self_hostname):
|
|
|
704
721
|
|
|
705
722
|
|
|
706
723
|
@pytest.mark.anyio
|
|
707
|
-
async def test_coin_name_found_in_mempool(one_node, self_hostname):
|
|
724
|
+
async def test_coin_name_found_in_mempool(one_node: SimulatorsAndWalletsServices, self_hostname: str) -> None:
|
|
708
725
|
[full_node_service], _, bt = one_node
|
|
709
726
|
full_node_api = full_node_service._api
|
|
710
|
-
|
|
727
|
+
assert full_node_service.rpc_server is not None
|
|
711
728
|
async with FullNodeRpcClient.create_as_context(
|
|
712
729
|
self_hostname,
|
|
713
730
|
full_node_service.rpc_server.listen_port,
|
chia/_tests/core/test_program.py
CHANGED
|
@@ -12,9 +12,9 @@ from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
|
12
12
|
def program_roundtrip(o: CastableType) -> None:
|
|
13
13
|
prg1 = Program.to(o)
|
|
14
14
|
prg2 = SerializedProgram.to(o)
|
|
15
|
-
prg3 =
|
|
15
|
+
prg3 = prg1.to_serialized()
|
|
16
16
|
prg4 = SerializedProgram.from_bytes(prg1.as_bin())
|
|
17
|
-
prg5 =
|
|
17
|
+
prg5 = Program.from_serialized(prg2)
|
|
18
18
|
|
|
19
19
|
assert bytes(prg1) == bytes(prg2)
|
|
20
20
|
assert bytes(prg1) == bytes(prg3)
|
|
@@ -4,10 +4,10 @@ import random
|
|
|
4
4
|
from dataclasses import dataclass
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
|
+
from chia_rs import BlockRecord
|
|
7
8
|
from chia_rs.sized_bytes import bytes32
|
|
8
9
|
from chia_rs.sized_ints import uint32
|
|
9
10
|
|
|
10
|
-
from chia.consensus.block_record import BlockRecord
|
|
11
11
|
from chia.util.block_cache import BlockCache
|
|
12
12
|
|
|
13
13
|
|
|
@@ -355,7 +355,7 @@ async def test_get_key(include_secrets: bool, get_temp_keyring: Keychain):
|
|
|
355
355
|
keychain: Keychain = get_temp_keyring
|
|
356
356
|
expected_keys = []
|
|
357
357
|
# Add 10 keys and validate the result `get_key` for each of them after each addition
|
|
358
|
-
for _ in range(
|
|
358
|
+
for _ in range(10):
|
|
359
359
|
key_data = KeyData.generate()
|
|
360
360
|
mnemonic_str = key_data.mnemonic_str()
|
|
361
361
|
if not include_secrets:
|
|
@@ -385,7 +385,7 @@ async def test_get_keys(include_secrets: bool, get_temp_keyring: Keychain):
|
|
|
385
385
|
assert keychain.get_keys(include_secrets) == []
|
|
386
386
|
expected_keys = []
|
|
387
387
|
# Add 10 keys and validate the result of `get_keys` after each addition
|
|
388
|
-
for _ in range(
|
|
388
|
+
for _ in range(10):
|
|
389
389
|
key_data = KeyData.generate()
|
|
390
390
|
mnemonic_str = key_data.mnemonic_str()
|
|
391
391
|
if not include_secrets:
|
|
@@ -75,7 +75,7 @@ def child_writer_dispatch_with_readiness_check(
|
|
|
75
75
|
except LockfileError:
|
|
76
76
|
attempts -= 1
|
|
77
77
|
if attempts == 0:
|
|
78
|
-
raise LockfileError
|
|
78
|
+
raise LockfileError
|
|
79
79
|
except Exception as e:
|
|
80
80
|
log.warning(
|
|
81
81
|
f"[pid:{os.getpid()}] caught exception in child_writer_dispatch_with_readiness_check: "
|
|
@@ -41,7 +41,7 @@ def test_consumes_exception(
|
|
|
41
41
|
caplog: pytest.LogCaptureFixture,
|
|
42
42
|
) -> None:
|
|
43
43
|
with log_exceptions(log=logger, consume=True):
|
|
44
|
-
raise Exception
|
|
44
|
+
raise Exception
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
def test_propagates_exception(
|
|
@@ -67,7 +67,7 @@ def test_passed_message_is_used(
|
|
|
67
67
|
caplog: pytest.LogCaptureFixture,
|
|
68
68
|
) -> None:
|
|
69
69
|
with log_exceptions(log=logger, consume=True, message=log_message):
|
|
70
|
-
raise Exception
|
|
70
|
+
raise Exception
|
|
71
71
|
|
|
72
72
|
assert len(caplog.records) == 1, caplog.records
|
|
73
73
|
|
|
@@ -87,7 +87,7 @@ def test_specified_level_is_used(
|
|
|
87
87
|
) -> None:
|
|
88
88
|
caplog.set_level(min(all_levels.values()))
|
|
89
89
|
with log_exceptions(level=level, log=logger, consume=True):
|
|
90
|
-
raise Exception
|
|
90
|
+
raise Exception
|
|
91
91
|
|
|
92
92
|
assert len(caplog.records) == 1, caplog.records
|
|
93
93
|
|
|
@@ -100,7 +100,7 @@ def test_traceback_is_logged(
|
|
|
100
100
|
caplog: pytest.LogCaptureFixture,
|
|
101
101
|
) -> None:
|
|
102
102
|
with log_exceptions(log=logger, consume=True, show_traceback=True):
|
|
103
|
-
raise Exception
|
|
103
|
+
raise Exception
|
|
104
104
|
|
|
105
105
|
assert len(caplog.records) == 1, caplog.records
|
|
106
106
|
|
|
@@ -113,7 +113,7 @@ def test_traceback_is_not_logged(
|
|
|
113
113
|
caplog: pytest.LogCaptureFixture,
|
|
114
114
|
) -> None:
|
|
115
115
|
with log_exceptions(log=logger, consume=True, show_traceback=False):
|
|
116
|
-
raise Exception
|
|
116
|
+
raise Exception
|
|
117
117
|
|
|
118
118
|
assert len(caplog.records) == 1, caplog.records
|
|
119
119
|
|