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
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
import logging
|
|
5
5
|
import random
|
|
6
|
-
from
|
|
6
|
+
from collections.abc import Callable
|
|
7
7
|
|
|
8
8
|
import pytest
|
|
9
9
|
from chia_rs import (
|
|
@@ -26,6 +26,7 @@ from clvm_tools.binutils import assemble
|
|
|
26
26
|
|
|
27
27
|
from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
|
|
28
28
|
from chia._tests.connection_utils import add_dummy_connection, connect_and_get_peer
|
|
29
|
+
from chia._tests.core.full_node.test_full_node import find_reward_coin
|
|
29
30
|
from chia._tests.core.mempool.test_mempool_manager import (
|
|
30
31
|
IDENTITY_PUZZLE_HASH,
|
|
31
32
|
TEST_COIN,
|
|
@@ -100,7 +101,7 @@ def wallet_a(bt: BlockTools) -> WalletTool:
|
|
|
100
101
|
def generate_test_spend_bundle(
|
|
101
102
|
wallet: WalletTool,
|
|
102
103
|
coin: Coin,
|
|
103
|
-
condition_dic:
|
|
104
|
+
condition_dic: dict[ConditionOpcode, list[ConditionWithArgs]] | None = None,
|
|
104
105
|
fee: uint64 = uint64(0),
|
|
105
106
|
amount: uint64 = uint64(1000),
|
|
106
107
|
new_puzzle_hash: bytes32 = BURN_PUZZLE_HASH,
|
|
@@ -350,7 +351,7 @@ async def respond_transaction(
|
|
|
350
351
|
peer: WSChiaConnection,
|
|
351
352
|
tx_bytes: bytes = b"",
|
|
352
353
|
test: bool = False,
|
|
353
|
-
) -> tuple[MempoolInclusionStatus,
|
|
354
|
+
) -> tuple[MempoolInclusionStatus, Err | None]:
|
|
354
355
|
"""
|
|
355
356
|
Receives a full transaction from peer.
|
|
356
357
|
If tx is added to mempool, send tx_id to others. (new_transaction)
|
|
@@ -380,7 +381,6 @@ async def next_block(full_node_1: FullNodeSimulator, wallet_a: WalletTool, bt: B
|
|
|
380
381
|
block_list_input=blocks,
|
|
381
382
|
guarantee_transaction_block=True,
|
|
382
383
|
farmer_reward_puzzle_hash=reward_ph,
|
|
383
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
384
384
|
genesis_timestamp=uint64(10_000),
|
|
385
385
|
time_per_block=10,
|
|
386
386
|
)
|
|
@@ -395,15 +395,17 @@ co = ConditionOpcode
|
|
|
395
395
|
mis = MempoolInclusionStatus
|
|
396
396
|
|
|
397
397
|
|
|
398
|
-
async def send_sb(node: FullNodeAPI, sb: SpendBundle) ->
|
|
398
|
+
async def send_sb(node: FullNodeAPI, dummy_peer: WSChiaConnection, sb: SpendBundle) -> Message | None:
|
|
399
399
|
tx = wallet_protocol.SendTransaction(sb)
|
|
400
|
-
return await node.send_transaction(tx, test=True)
|
|
400
|
+
return await node.send_transaction(tx, dummy_peer, test=True)
|
|
401
401
|
|
|
402
402
|
|
|
403
|
-
async def gen_and_send_sb(
|
|
403
|
+
async def gen_and_send_sb(
|
|
404
|
+
node: FullNodeAPI, dummy_peer: WSChiaConnection, wallet: WalletTool, coin: Coin, fee: uint64 = uint64(0)
|
|
405
|
+
) -> SpendBundle:
|
|
404
406
|
sb = generate_test_spend_bundle(wallet=wallet, coin=coin, fee=fee)
|
|
405
407
|
assert sb is not None
|
|
406
|
-
await send_sb(node, sb)
|
|
408
|
+
await send_sb(node, dummy_peer, sb)
|
|
407
409
|
return sb
|
|
408
410
|
|
|
409
411
|
|
|
@@ -576,14 +578,14 @@ class TestMempoolManager:
|
|
|
576
578
|
block_list_input=blocks,
|
|
577
579
|
guarantee_transaction_block=True,
|
|
578
580
|
farmer_reward_puzzle_hash=reward_ph,
|
|
579
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
580
581
|
)
|
|
581
582
|
peer = await connect_and_get_peer(server_1, server_2, self_hostname)
|
|
582
583
|
|
|
583
584
|
await add_blocks_in_batches(blocks, full_node_1.full_node)
|
|
584
585
|
await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
|
|
585
586
|
|
|
586
|
-
|
|
587
|
+
coin_1 = find_reward_coin(blocks[-1], reward_ph)
|
|
588
|
+
spend_bundle1 = generate_test_spend_bundle(wallet_a, coin_1)
|
|
587
589
|
|
|
588
590
|
assert spend_bundle1 is not None
|
|
589
591
|
tx1: full_node_protocol.RespondTransaction = full_node_protocol.RespondTransaction(spend_bundle1)
|
|
@@ -591,9 +593,10 @@ class TestMempoolManager:
|
|
|
591
593
|
assert err is None
|
|
592
594
|
assert status == MempoolInclusionStatus.SUCCESS
|
|
593
595
|
|
|
596
|
+
coin_1 = find_reward_coin(blocks[-1], reward_ph)
|
|
594
597
|
spend_bundle2 = generate_test_spend_bundle(
|
|
595
598
|
wallet_a,
|
|
596
|
-
|
|
599
|
+
coin_1,
|
|
597
600
|
new_puzzle_hash=BURN_PUZZLE_HASH_2,
|
|
598
601
|
)
|
|
599
602
|
assert spend_bundle2 is not None
|
|
@@ -610,7 +613,10 @@ class TestMempoolManager:
|
|
|
610
613
|
|
|
611
614
|
@pytest.mark.anyio
|
|
612
615
|
async def test_double_spend_with_higher_fee(
|
|
613
|
-
self,
|
|
616
|
+
self,
|
|
617
|
+
one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
|
|
618
|
+
wallet_a: WalletTool,
|
|
619
|
+
self_hostname: str,
|
|
614
620
|
) -> None:
|
|
615
621
|
full_node_1, _, bt = one_node_one_block
|
|
616
622
|
blocks = await full_node_1.get_all_full_blocks()
|
|
@@ -621,7 +627,6 @@ class TestMempoolManager:
|
|
|
621
627
|
block_list_input=blocks,
|
|
622
628
|
guarantee_transaction_block=True,
|
|
623
629
|
farmer_reward_puzzle_hash=reward_ph,
|
|
624
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
625
630
|
)
|
|
626
631
|
|
|
627
632
|
invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
|
|
@@ -633,15 +638,17 @@ class TestMempoolManager:
|
|
|
633
638
|
coins = iter(blocks[-2].get_included_reward_coins())
|
|
634
639
|
coin3, coin4 = next(coins), next(coins)
|
|
635
640
|
|
|
636
|
-
|
|
637
|
-
|
|
641
|
+
_, dummy_node_id = await add_dummy_connection(full_node_1.server, self_hostname, 12312)
|
|
642
|
+
dummy_peer = full_node_1.server.all_connections[dummy_node_id]
|
|
643
|
+
sb1_1 = await gen_and_send_sb(full_node_1, dummy_peer, wallet_a, coin1)
|
|
644
|
+
sb1_2 = await gen_and_send_sb(full_node_1, dummy_peer, wallet_a, coin1, fee=uint64(1))
|
|
638
645
|
|
|
639
646
|
# Fee increase is insufficient, the old spendbundle must stay
|
|
640
647
|
assert_sb_in_pool(full_node_1.full_node.mempool_manager, sb1_1)
|
|
641
648
|
assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb1_2)
|
|
642
649
|
invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
|
|
643
650
|
|
|
644
|
-
sb1_3 = await gen_and_send_sb(full_node_1, wallet_a, coin1, fee=MEMPOOL_MIN_FEE_INCREASE)
|
|
651
|
+
sb1_3 = await gen_and_send_sb(full_node_1, dummy_peer, wallet_a, coin1, fee=MEMPOOL_MIN_FEE_INCREASE)
|
|
645
652
|
|
|
646
653
|
# Fee increase is sufficiently high, sb1_1 gets replaced with sb1_3
|
|
647
654
|
assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb1_1)
|
|
@@ -650,7 +657,7 @@ class TestMempoolManager:
|
|
|
650
657
|
|
|
651
658
|
sb2 = generate_test_spend_bundle(wallet_a, coin2, fee=MEMPOOL_MIN_FEE_INCREASE)
|
|
652
659
|
sb12 = SpendBundle.aggregate([sb2, sb1_3])
|
|
653
|
-
await send_sb(full_node_1, sb12)
|
|
660
|
+
await send_sb(full_node_1, dummy_peer, sb12)
|
|
654
661
|
|
|
655
662
|
# Aggregated spendbundle sb12 replaces sb1_3 since it spends a superset
|
|
656
663
|
# of coins spent in sb1_3
|
|
@@ -660,7 +667,7 @@ class TestMempoolManager:
|
|
|
660
667
|
|
|
661
668
|
sb3 = generate_test_spend_bundle(wallet_a, coin3, fee=uint64(MEMPOOL_MIN_FEE_INCREASE * 2))
|
|
662
669
|
sb23 = SpendBundle.aggregate([sb2, sb3])
|
|
663
|
-
await send_sb(full_node_1, sb23)
|
|
670
|
+
await send_sb(full_node_1, dummy_peer, sb23)
|
|
664
671
|
|
|
665
672
|
# sb23 must not replace existing sb12 as the former does not spend all
|
|
666
673
|
# coins that are spent in the latter (specifically, coin1)
|
|
@@ -668,21 +675,21 @@ class TestMempoolManager:
|
|
|
668
675
|
assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb23)
|
|
669
676
|
invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
|
|
670
677
|
|
|
671
|
-
await send_sb(full_node_1, sb3)
|
|
678
|
+
await send_sb(full_node_1, dummy_peer, sb3)
|
|
672
679
|
# Adding non-conflicting sb3 should succeed
|
|
673
680
|
assert_sb_in_pool(full_node_1.full_node.mempool_manager, sb3)
|
|
674
681
|
invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
|
|
675
682
|
|
|
676
683
|
sb4_1 = generate_test_spend_bundle(wallet_a, coin4, fee=MEMPOOL_MIN_FEE_INCREASE)
|
|
677
684
|
sb1234_1 = SpendBundle.aggregate([sb12, sb3, sb4_1])
|
|
678
|
-
await send_sb(full_node_1, sb1234_1)
|
|
685
|
+
await send_sb(full_node_1, dummy_peer, sb1234_1)
|
|
679
686
|
# sb1234_1 should not be in pool as it decreases total fees per cost
|
|
680
687
|
assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb1234_1)
|
|
681
688
|
invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
|
|
682
689
|
|
|
683
690
|
sb4_2 = generate_test_spend_bundle(wallet_a, coin4, fee=uint64(MEMPOOL_MIN_FEE_INCREASE * 2))
|
|
684
691
|
sb1234_2 = SpendBundle.aggregate([sb12, sb3, sb4_2])
|
|
685
|
-
await send_sb(full_node_1, sb1234_2)
|
|
692
|
+
await send_sb(full_node_1, dummy_peer, sb1234_2)
|
|
686
693
|
# sb1234_2 has a higher fee per cost than its conflicts and should get
|
|
687
694
|
# into mempool
|
|
688
695
|
assert_sb_in_pool(full_node_1.full_node.mempool_manager, sb1234_2)
|
|
@@ -692,7 +699,10 @@ class TestMempoolManager:
|
|
|
692
699
|
|
|
693
700
|
@pytest.mark.anyio
|
|
694
701
|
async def test_invalid_signature(
|
|
695
|
-
self,
|
|
702
|
+
self,
|
|
703
|
+
one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
|
|
704
|
+
wallet_a: WalletTool,
|
|
705
|
+
self_hostname: str,
|
|
696
706
|
) -> None:
|
|
697
707
|
reward_ph = wallet_a.get_new_puzzlehash()
|
|
698
708
|
|
|
@@ -704,19 +714,19 @@ class TestMempoolManager:
|
|
|
704
714
|
block_list_input=blocks,
|
|
705
715
|
guarantee_transaction_block=True,
|
|
706
716
|
farmer_reward_puzzle_hash=reward_ph,
|
|
707
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
708
717
|
)
|
|
709
718
|
|
|
710
719
|
await add_blocks_in_batches(blocks, full_node_1.full_node)
|
|
711
720
|
await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
|
|
712
721
|
|
|
713
|
-
|
|
714
|
-
coin1 = next(coins)
|
|
722
|
+
coin1 = find_reward_coin(blocks[-1], reward_ph)
|
|
715
723
|
|
|
716
724
|
sb: SpendBundle = generate_test_spend_bundle(wallet_a, coin1)
|
|
717
725
|
assert sb.aggregated_signature != G2Element.generator()
|
|
718
726
|
sb = sb.replace(aggregated_signature=G2Element.generator())
|
|
719
|
-
|
|
727
|
+
_, dummy_node_id = await add_dummy_connection(full_node_1.server, self_hostname, 12312)
|
|
728
|
+
dummy_peer = full_node_1.server.all_connections[dummy_node_id]
|
|
729
|
+
res: Message | None = await send_sb(full_node_1, dummy_peer, sb)
|
|
720
730
|
assert res is not None
|
|
721
731
|
ack: TransactionAck = TransactionAck.from_bytes(res.data)
|
|
722
732
|
assert ack.status == MempoolInclusionStatus.FAILED.value
|
|
@@ -730,8 +740,8 @@ class TestMempoolManager:
|
|
|
730
740
|
dic: dict[ConditionOpcode, list[ConditionWithArgs]],
|
|
731
741
|
fee: int = 0,
|
|
732
742
|
num_blocks: int = 3,
|
|
733
|
-
coin:
|
|
734
|
-
) -> tuple[list[FullBlock], SpendBundle, WSChiaConnection, MempoolInclusionStatus,
|
|
743
|
+
coin: Coin | None = None,
|
|
744
|
+
) -> tuple[list[FullBlock], SpendBundle, WSChiaConnection, MempoolInclusionStatus, Err | None]:
|
|
735
745
|
reward_ph = wallet_a.get_new_puzzlehash()
|
|
736
746
|
full_node_1, server_1, bt = one_node_one_block
|
|
737
747
|
blocks = await full_node_1.get_all_full_blocks()
|
|
@@ -741,7 +751,6 @@ class TestMempoolManager:
|
|
|
741
751
|
block_list_input=blocks,
|
|
742
752
|
guarantee_transaction_block=True,
|
|
743
753
|
farmer_reward_puzzle_hash=reward_ph,
|
|
744
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
745
754
|
)
|
|
746
755
|
_, dummy_node_id = await add_dummy_connection(server_1, bt.config["self_hostname"], 100)
|
|
747
756
|
for node_id, wsc in server_1.all_connections.items():
|
|
@@ -755,9 +764,8 @@ class TestMempoolManager:
|
|
|
755
764
|
|
|
756
765
|
await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + num_blocks)
|
|
757
766
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
)
|
|
767
|
+
coin1 = find_reward_coin(blocks[2 - num_blocks], reward_ph)
|
|
768
|
+
spend_bundle1 = generate_test_spend_bundle(wallet_a, coin or coin1, dic, uint64(fee))
|
|
761
769
|
|
|
762
770
|
assert spend_bundle1 is not None
|
|
763
771
|
|
|
@@ -772,7 +780,7 @@ class TestMempoolManager:
|
|
|
772
780
|
node_server_bt: tuple[FullNodeSimulator, ChiaServer, BlockTools],
|
|
773
781
|
wallet_a: WalletTool,
|
|
774
782
|
test_fun: Callable[[Coin, Coin], SpendBundle],
|
|
775
|
-
) -> tuple[list[FullBlock], SpendBundle, MempoolInclusionStatus,
|
|
783
|
+
) -> tuple[list[FullBlock], SpendBundle, MempoolInclusionStatus, Err | None]:
|
|
776
784
|
reward_ph = wallet_a.get_new_puzzlehash()
|
|
777
785
|
full_node_1, server_1, bt = node_server_bt
|
|
778
786
|
blocks = await full_node_1.get_all_full_blocks()
|
|
@@ -782,7 +790,6 @@ class TestMempoolManager:
|
|
|
782
790
|
block_list_input=blocks,
|
|
783
791
|
guarantee_transaction_block=True,
|
|
784
792
|
farmer_reward_puzzle_hash=reward_ph,
|
|
785
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
786
793
|
time_per_block=10,
|
|
787
794
|
)
|
|
788
795
|
_, dummy_node_id = await add_dummy_connection(server_1, bt.config["self_hostname"], 100)
|
|
@@ -797,8 +804,8 @@ class TestMempoolManager:
|
|
|
797
804
|
|
|
798
805
|
await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
|
|
799
806
|
|
|
800
|
-
coin_1 = blocks[-2]
|
|
801
|
-
coin_2 = blocks[-1]
|
|
807
|
+
coin_1 = find_reward_coin(blocks[-2], reward_ph)
|
|
808
|
+
coin_2 = find_reward_coin(blocks[-1], reward_ph)
|
|
802
809
|
|
|
803
810
|
bundle = test_fun(coin_1, coin_2)
|
|
804
811
|
|
|
@@ -1256,7 +1263,7 @@ class TestMempoolManager:
|
|
|
1256
1263
|
self,
|
|
1257
1264
|
assert_garbage: bool,
|
|
1258
1265
|
announce_garbage: bool,
|
|
1259
|
-
expected:
|
|
1266
|
+
expected: Err | None,
|
|
1260
1267
|
expected_included: MempoolInclusionStatus,
|
|
1261
1268
|
one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
|
|
1262
1269
|
wallet_a: WalletTool,
|
|
@@ -1469,7 +1476,7 @@ class TestMempoolManager:
|
|
|
1469
1476
|
self,
|
|
1470
1477
|
assert_garbage: bool,
|
|
1471
1478
|
announce_garbage: bool,
|
|
1472
|
-
expected:
|
|
1479
|
+
expected: Err | None,
|
|
1473
1480
|
expected_included: MempoolInclusionStatus,
|
|
1474
1481
|
one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
|
|
1475
1482
|
wallet_a: WalletTool,
|
|
@@ -1741,7 +1748,6 @@ class TestMempoolManager:
|
|
|
1741
1748
|
block_list_input=blocks,
|
|
1742
1749
|
guarantee_transaction_block=True,
|
|
1743
1750
|
farmer_reward_puzzle_hash=reward_ph,
|
|
1744
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
1745
1751
|
)
|
|
1746
1752
|
|
|
1747
1753
|
peer = await connect_and_get_peer(server_1, server_2, bt.config["self_hostname"])
|
|
@@ -1757,7 +1763,7 @@ class TestMempoolManager:
|
|
|
1757
1763
|
|
|
1758
1764
|
fee = 9
|
|
1759
1765
|
|
|
1760
|
-
coin_1 = blocks[-2]
|
|
1766
|
+
coin_1 = find_reward_coin(blocks[-2], reward_ph)
|
|
1761
1767
|
coin_2 = None
|
|
1762
1768
|
for coin in blocks[-1].get_included_reward_coins():
|
|
1763
1769
|
if coin.amount == coin_1.amount:
|
|
@@ -1801,13 +1807,12 @@ class TestMempoolManager:
|
|
|
1801
1807
|
block_list_input=blocks,
|
|
1802
1808
|
guarantee_transaction_block=True,
|
|
1803
1809
|
farmer_reward_puzzle_hash=reward_ph,
|
|
1804
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
1805
1810
|
)
|
|
1806
1811
|
|
|
1807
1812
|
await add_blocks_in_batches(blocks, full_node_1.full_node)
|
|
1808
1813
|
|
|
1809
1814
|
await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
|
|
1810
|
-
# coin = blocks[-1]
|
|
1815
|
+
# coin = find_reward_coin(blocks[-1], reward_ph)
|
|
1811
1816
|
# spend_bundle1 = generate_test_spend_bundle(wallet_a, coin)
|
|
1812
1817
|
coin = await next_block(full_node_1, wallet_a, bt)
|
|
1813
1818
|
spend_bundle1 = generate_test_spend_bundle(wallet_a, coin)
|
|
@@ -1849,7 +1854,6 @@ class TestMempoolManager:
|
|
|
1849
1854
|
block_list_input=blocks,
|
|
1850
1855
|
guarantee_transaction_block=True,
|
|
1851
1856
|
farmer_reward_puzzle_hash=reward_ph,
|
|
1852
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
1853
1857
|
)
|
|
1854
1858
|
|
|
1855
1859
|
await add_blocks_in_batches(blocks, full_node_1.full_node)
|
|
@@ -2530,7 +2534,7 @@ class TestGeneratorConditions:
|
|
|
2530
2534
|
],
|
|
2531
2535
|
)
|
|
2532
2536
|
def test_softfork_condition(
|
|
2533
|
-
self, mempool: bool, condition: str, expect_error:
|
|
2537
|
+
self, mempool: bool, condition: str, expect_error: int | None, softfork_height: uint32
|
|
2534
2538
|
) -> None:
|
|
2535
2539
|
npc_result = generator_condition_tester(condition, mempool_mode=mempool, height=softfork_height)
|
|
2536
2540
|
print(npc_result)
|
|
@@ -2550,7 +2554,7 @@ class TestGeneratorConditions:
|
|
|
2550
2554
|
],
|
|
2551
2555
|
)
|
|
2552
2556
|
def test_message_condition(
|
|
2553
|
-
self, mempool: bool, condition: str, expect_error:
|
|
2557
|
+
self, mempool: bool, condition: str, expect_error: int | None, softfork_height: uint32
|
|
2554
2558
|
) -> None:
|
|
2555
2559
|
npc_result = generator_condition_tester(condition, mempool_mode=mempool, height=softfork_height)
|
|
2556
2560
|
print(npc_result)
|
|
@@ -2854,14 +2858,14 @@ class TestMaliciousGenerators:
|
|
|
2854
2858
|
5,
|
|
2855
2859
|
guarantee_transaction_block=True,
|
|
2856
2860
|
farmer_reward_puzzle_hash=reward_ph,
|
|
2857
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
2858
2861
|
)
|
|
2859
2862
|
|
|
2860
2863
|
await add_blocks_in_batches(blocks, full_node_1.full_node)
|
|
2861
2864
|
|
|
2862
2865
|
await time_out_assert(60, node_height_at_least, True, full_node_1, blocks[-1].height)
|
|
2863
2866
|
|
|
2864
|
-
|
|
2867
|
+
coin_1 = find_reward_coin(blocks[-1], reward_ph)
|
|
2868
|
+
spend_bundle = generate_test_spend_bundle(wallet_a, coin_1)
|
|
2865
2869
|
cs = spend_bundle.coin_spends[0]
|
|
2866
2870
|
c = cs.coin
|
|
2867
2871
|
coin_0 = Coin(c.parent_coin_info, bytes32([1] * 32), c.amount)
|
|
@@ -2920,7 +2924,7 @@ def test_items_by_feerate(items: list[MempoolItem], expected: list[Coin]) -> Non
|
|
|
2920
2924
|
|
|
2921
2925
|
assert len(ordered_items) == len(expected)
|
|
2922
2926
|
|
|
2923
|
-
last_fpc:
|
|
2927
|
+
last_fpc: float | None = None
|
|
2924
2928
|
for mi, expected_coin in zip(ordered_items, expected):
|
|
2925
2929
|
assert len(mi.bundle_coin_spends) == 1
|
|
2926
2930
|
assert next(iter(mi.bundle_coin_spends.values())).coin_spend.coin == expected_coin
|
|
@@ -3413,7 +3417,7 @@ async def test_lineage_cache(seeded_random: random.Random) -> None:
|
|
|
3413
3417
|
bytes32.random(seeded_random), bytes32.random(seeded_random), bytes32.random(seeded_random)
|
|
3414
3418
|
)
|
|
3415
3419
|
|
|
3416
|
-
async def callback1(ph: bytes32) ->
|
|
3420
|
+
async def callback1(ph: bytes32) -> UnspentLineageInfo | None:
|
|
3417
3421
|
nonlocal called
|
|
3418
3422
|
called += 1
|
|
3419
3423
|
return info1
|
|
@@ -3432,7 +3436,7 @@ async def test_lineage_cache(seeded_random: random.Random) -> None:
|
|
|
3432
3436
|
|
|
3433
3437
|
called = 0
|
|
3434
3438
|
|
|
3435
|
-
async def callback_none(ph: bytes32) ->
|
|
3439
|
+
async def callback_none(ph: bytes32) -> UnspentLineageInfo | None:
|
|
3436
3440
|
nonlocal called
|
|
3437
3441
|
called += 1
|
|
3438
3442
|
return None
|
|
@@ -62,43 +62,43 @@ async def test_basics() -> None:
|
|
|
62
62
|
async def test_fee_increase() -> None:
|
|
63
63
|
async with DBConnection(db_version=2) as db_wrapper:
|
|
64
64
|
coin_store = await CoinStore.create(db_wrapper)
|
|
65
|
-
|
|
65
|
+
async with MempoolManager.managed(
|
|
66
66
|
coin_store.get_coin_records, coin_store.get_unspent_lineage_info_for_puzzle_hash, test_constants
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
67
|
+
) as mempool_manager:
|
|
68
|
+
assert test_constants.MAX_BLOCK_COST_CLVM == mempool_manager.constants.MAX_BLOCK_COST_CLVM
|
|
69
|
+
btc_fee_estimator: BitcoinFeeEstimator = mempool_manager.mempool.fee_estimator # type: ignore
|
|
70
|
+
fee_tracker = btc_fee_estimator.get_tracker()
|
|
71
|
+
estimator = SmartFeeEstimator(fee_tracker, uint64(test_constants.MAX_BLOCK_COST_CLVM))
|
|
72
|
+
random = Random(x=1)
|
|
73
|
+
for i in range(300, 700):
|
|
74
|
+
items = []
|
|
75
|
+
for _ in range(20):
|
|
76
|
+
fee = uint64(0)
|
|
77
|
+
included_height = uint32(random.randint(i - 60, i - 1))
|
|
78
|
+
cost = uint64(5000000)
|
|
79
|
+
mempool_item = MempoolItemInfo(
|
|
80
|
+
cost,
|
|
81
|
+
fee,
|
|
82
|
+
included_height,
|
|
83
|
+
)
|
|
84
|
+
items.append(mempool_item)
|
|
85
|
+
|
|
86
|
+
fee_tracker.process_block(uint32(i), items)
|
|
87
|
+
|
|
88
|
+
short, med, long = fee_tracker.estimate_fees()
|
|
89
|
+
mempool_info = mempool_manager.mempool.fee_estimator.get_mempool_info()
|
|
90
|
+
|
|
91
|
+
result = estimator.get_estimates(mempool_info, ignore_mempool=True)
|
|
92
|
+
|
|
93
|
+
assert short.median == -1
|
|
94
|
+
assert med.median == -1
|
|
95
|
+
assert long.median == 0.0
|
|
96
|
+
|
|
97
|
+
assert result.error is None
|
|
98
|
+
short_estimate = result.estimates[0].estimated_fee_rate
|
|
99
|
+
med_estimate = result.estimates[1].estimated_fee_rate
|
|
100
|
+
long_estimate = result.estimates[2].estimated_fee_rate
|
|
101
|
+
|
|
102
|
+
assert short_estimate.mojos_per_clvm_cost == uint64(fee_tracker.buckets[3] / 1000)
|
|
103
|
+
assert med_estimate.mojos_per_clvm_cost == uint64(fee_tracker.buckets[3] / 1000)
|
|
104
|
+
assert long_estimate.mojos_per_clvm_cost == uint64(0)
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import datetime
|
|
4
|
-
from typing import Union
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
from chia_rs.sized_ints import uint64
|
|
@@ -20,9 +19,7 @@ from chia.wallet.wallet import Wallet
|
|
|
20
19
|
|
|
21
20
|
@pytest.mark.anyio
|
|
22
21
|
async def test_protocol_messages(
|
|
23
|
-
simulator_and_wallet: tuple[
|
|
24
|
-
list[Union[FullNodeAPI, FullNodeSimulator]], list[tuple[Wallet, ChiaServer]], BlockTools
|
|
25
|
-
],
|
|
22
|
+
simulator_and_wallet: tuple[list[FullNodeAPI | FullNodeSimulator], list[tuple[Wallet, ChiaServer]], BlockTools],
|
|
26
23
|
) -> None:
|
|
27
24
|
full_nodes, _wallets, bt = simulator_and_wallet
|
|
28
25
|
a_wallet = bt.get_pool_wallet_tool()
|
|
@@ -31,10 +28,9 @@ async def test_protocol_messages(
|
|
|
31
28
|
35,
|
|
32
29
|
guarantee_transaction_block=True,
|
|
33
30
|
farmer_reward_puzzle_hash=reward_ph,
|
|
34
|
-
pool_reward_puzzle_hash=reward_ph,
|
|
35
31
|
)
|
|
36
32
|
|
|
37
|
-
full_node_sim:
|
|
33
|
+
full_node_sim: FullNodeAPI | FullNodeSimulator = full_nodes[0]
|
|
38
34
|
|
|
39
35
|
for block in blocks:
|
|
40
36
|
await full_node_sim.full_node.add_block(block)
|