chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__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/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- 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.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc1.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
chia/simulator/block_tools.py
CHANGED
|
@@ -10,13 +10,14 @@ import ssl
|
|
|
10
10
|
import sys
|
|
11
11
|
import tempfile
|
|
12
12
|
import time
|
|
13
|
+
from collections.abc import Sequence
|
|
13
14
|
from dataclasses import dataclass, replace
|
|
14
15
|
from pathlib import Path
|
|
15
16
|
from random import Random
|
|
16
|
-
from typing import Any, Callable,
|
|
17
|
+
from typing import Any, Callable, Optional
|
|
17
18
|
|
|
18
19
|
import anyio
|
|
19
|
-
from chia_rs import
|
|
20
|
+
from chia_rs import MEMPOOL_MODE, AugSchemeMPL, G1Element, G2Element, PrivateKey, solution_generator
|
|
20
21
|
|
|
21
22
|
from chia.consensus.block_creation import create_unfinished_block, unfinished_block_to_full_block
|
|
22
23
|
from chia.consensus.block_record import BlockRecord
|
|
@@ -147,8 +148,8 @@ test_constants = DEFAULT_CONSTANTS.replace(
|
|
|
147
148
|
)
|
|
148
149
|
|
|
149
150
|
|
|
150
|
-
def compute_additions_unchecked(sb: SpendBundle) ->
|
|
151
|
-
ret:
|
|
151
|
+
def compute_additions_unchecked(sb: SpendBundle) -> list[Coin]:
|
|
152
|
+
ret: list[Coin] = []
|
|
152
153
|
for cs in sb.coin_spends:
|
|
153
154
|
parent_id = cs.coin.name()
|
|
154
155
|
_, r = cs.puzzle_reveal.run_with_cost(INFINITE_COST, cs.solution)
|
|
@@ -163,14 +164,14 @@ def compute_additions_unchecked(sb: SpendBundle) -> List[Coin]:
|
|
|
163
164
|
return ret
|
|
164
165
|
|
|
165
166
|
|
|
166
|
-
def make_spend_bundle(coins:
|
|
167
|
+
def make_spend_bundle(coins: list[Coin], wallet: WalletTool, rng: Random) -> tuple[SpendBundle, list[Coin]]:
|
|
167
168
|
"""
|
|
168
169
|
makes a new spend bundle (block generator) spending some of the coins in the
|
|
169
170
|
list of coins. The list will be updated to have spent coins removed and new
|
|
170
171
|
coins appended.
|
|
171
172
|
"""
|
|
172
|
-
new_coins:
|
|
173
|
-
spend_bundles:
|
|
173
|
+
new_coins: list[Coin] = []
|
|
174
|
+
spend_bundles: list[SpendBundle] = []
|
|
174
175
|
to_spend = rng.sample(coins, min(5, len(coins)))
|
|
175
176
|
receiver = wallet.get_new_puzzlehash()
|
|
176
177
|
for c in to_spend:
|
|
@@ -190,21 +191,21 @@ class BlockTools:
|
|
|
190
191
|
"""
|
|
191
192
|
|
|
192
193
|
_block_cache_header: bytes32
|
|
193
|
-
_block_cache_height_to_hash:
|
|
194
|
+
_block_cache_height_to_hash: dict[uint32, bytes32]
|
|
194
195
|
_block_cache_difficulty: uint64
|
|
195
|
-
_block_cache:
|
|
196
|
+
_block_cache: dict[bytes32, BlockRecord]
|
|
196
197
|
|
|
197
198
|
def __init__(
|
|
198
199
|
self,
|
|
199
200
|
constants: ConsensusConstants = test_constants,
|
|
200
201
|
root_path: Optional[Path] = None,
|
|
201
202
|
keychain: Optional[Keychain] = None,
|
|
202
|
-
config_overrides: Optional[
|
|
203
|
+
config_overrides: Optional[dict[str, Any]] = None,
|
|
203
204
|
automated_testing: bool = True,
|
|
204
205
|
plot_dir: str = "test-plots",
|
|
205
206
|
log: logging.Logger = logging.getLogger(__name__),
|
|
206
207
|
) -> None:
|
|
207
|
-
self._block_cache_header = bytes32
|
|
208
|
+
self._block_cache_header = bytes32.zeros
|
|
208
209
|
|
|
209
210
|
self._tempdir = None
|
|
210
211
|
if root_path is None:
|
|
@@ -214,7 +215,7 @@ class BlockTools:
|
|
|
214
215
|
self.root_path = root_path
|
|
215
216
|
self.log = log
|
|
216
217
|
self.local_keychain = keychain
|
|
217
|
-
self.local_sk_cache:
|
|
218
|
+
self.local_sk_cache: dict[bytes32, tuple[PrivateKey, Any]] = {}
|
|
218
219
|
self.automated_testing = automated_testing
|
|
219
220
|
self.plot_dir_name = plot_dir
|
|
220
221
|
|
|
@@ -270,7 +271,7 @@ class BlockTools:
|
|
|
270
271
|
self.temp_dir: Path = get_plot_tmp_dir(self.plot_dir_name, self.automated_testing)
|
|
271
272
|
self.plot_dir.mkdir(parents=True, exist_ok=True)
|
|
272
273
|
self.temp_dir.mkdir(parents=True, exist_ok=True)
|
|
273
|
-
self.expected_plots:
|
|
274
|
+
self.expected_plots: dict[bytes32, Path] = {}
|
|
274
275
|
self.created_plots: int = 0
|
|
275
276
|
self.total_result = PlotRefreshResult()
|
|
276
277
|
|
|
@@ -342,12 +343,12 @@ class BlockTools:
|
|
|
342
343
|
self.farmer_ph = reward_ph
|
|
343
344
|
self.pool_ph = reward_ph
|
|
344
345
|
if self.automated_testing:
|
|
345
|
-
self.all_sks:
|
|
346
|
+
self.all_sks: list[PrivateKey] = [sk for sk, _ in await keychain_proxy.get_all_private_keys()]
|
|
346
347
|
else:
|
|
347
348
|
self.all_sks = [self.farmer_master_sk] # we only want to include plots under the same fingerprint
|
|
348
|
-
self.pool_pubkeys:
|
|
349
|
+
self.pool_pubkeys: list[G1Element] = [master_sk_to_pool_sk(sk).get_g1() for sk in self.all_sks]
|
|
349
350
|
|
|
350
|
-
self.farmer_pubkeys:
|
|
351
|
+
self.farmer_pubkeys: list[G1Element] = [master_sk_to_farmer_sk(sk).get_g1() for sk in self.all_sks]
|
|
351
352
|
if len(self.pool_pubkeys) == 0 or len(self.farmer_pubkeys) == 0:
|
|
352
353
|
raise RuntimeError("Keys not generated. Run `chia keys generate`")
|
|
353
354
|
|
|
@@ -356,7 +357,7 @@ class BlockTools:
|
|
|
356
357
|
if keychain_proxy is not None:
|
|
357
358
|
await keychain_proxy.close() # close the keychain proxy
|
|
358
359
|
|
|
359
|
-
def change_config(self, new_config:
|
|
360
|
+
def change_config(self, new_config: dict[str, Any]) -> None:
|
|
360
361
|
self._config = new_config
|
|
361
362
|
overrides = self._config["network_overrides"]["constants"][self._config["selected_network"]]
|
|
362
363
|
updated_constants = replace_str_to_bytes(self.constants, **overrides)
|
|
@@ -462,11 +463,11 @@ class BlockTools:
|
|
|
462
463
|
|
|
463
464
|
if len(created):
|
|
464
465
|
assert len(existed) == 0
|
|
465
|
-
plot_id_new, path_new =
|
|
466
|
+
plot_id_new, path_new = next(iter(created.items()))
|
|
466
467
|
|
|
467
468
|
if len(existed):
|
|
468
469
|
assert len(created) == 0
|
|
469
|
-
plot_id_new, path_new =
|
|
470
|
+
plot_id_new, path_new = next(iter(existed.items()))
|
|
470
471
|
new_plot = False
|
|
471
472
|
assert plot_id_new is not None
|
|
472
473
|
assert path_new is not None
|
|
@@ -505,7 +506,7 @@ class BlockTools:
|
|
|
505
506
|
await self.refresh_plots()
|
|
506
507
|
|
|
507
508
|
@property
|
|
508
|
-
def config(self) ->
|
|
509
|
+
def config(self) -> dict[str, Any]:
|
|
509
510
|
return copy.deepcopy(self._config)
|
|
510
511
|
|
|
511
512
|
def get_daemon_ssl_context(self) -> ssl.SSLContext:
|
|
@@ -567,7 +568,7 @@ class BlockTools:
|
|
|
567
568
|
def get_consecutive_blocks(
|
|
568
569
|
self,
|
|
569
570
|
num_blocks: int,
|
|
570
|
-
block_list_input: Optional[
|
|
571
|
+
block_list_input: Optional[list[FullBlock]] = None,
|
|
571
572
|
*,
|
|
572
573
|
farmer_reward_puzzle_hash: Optional[bytes32] = None,
|
|
573
574
|
pool_reward_puzzle_hash: Optional[bytes32] = None,
|
|
@@ -583,21 +584,21 @@ class BlockTools:
|
|
|
583
584
|
normalized_to_identity_cc_sp: bool = False,
|
|
584
585
|
normalized_to_identity_cc_ip: bool = False,
|
|
585
586
|
current_time: bool = False,
|
|
586
|
-
block_refs:
|
|
587
|
+
block_refs: list[uint32] = [],
|
|
587
588
|
genesis_timestamp: Optional[uint64] = None,
|
|
588
589
|
force_plot_id: Optional[bytes32] = None,
|
|
589
590
|
dummy_block_references: bool = False,
|
|
590
591
|
include_transactions: bool = False,
|
|
591
592
|
skip_overflow: bool = False,
|
|
592
593
|
min_signage_point: int = -1,
|
|
593
|
-
) ->
|
|
594
|
+
) -> list[FullBlock]:
|
|
594
595
|
assert num_blocks > 0
|
|
595
596
|
if block_list_input is not None:
|
|
596
597
|
block_list = block_list_input.copy()
|
|
597
598
|
else:
|
|
598
599
|
block_list = []
|
|
599
600
|
|
|
600
|
-
tx_block_heights:
|
|
601
|
+
tx_block_heights: list[uint32] = []
|
|
601
602
|
if dummy_block_references:
|
|
602
603
|
# block references can only point to transaction blocks, so we need
|
|
603
604
|
# to record which ones are
|
|
@@ -610,8 +611,8 @@ class BlockTools:
|
|
|
610
611
|
if time_per_block is None:
|
|
611
612
|
time_per_block = float(constants.SUB_SLOT_TIME_TARGET) / float(constants.SLOT_BLOCKS_TARGET)
|
|
612
613
|
|
|
613
|
-
available_coins:
|
|
614
|
-
pending_rewards:
|
|
614
|
+
available_coins: list[Coin] = []
|
|
615
|
+
pending_rewards: list[Coin] = []
|
|
615
616
|
wallet: Optional[WalletTool] = None
|
|
616
617
|
rng: Optional[Random] = None
|
|
617
618
|
if include_transactions:
|
|
@@ -658,7 +659,7 @@ class BlockTools:
|
|
|
658
659
|
if num_blocks == 0:
|
|
659
660
|
return block_list
|
|
660
661
|
|
|
661
|
-
blocks:
|
|
662
|
+
blocks: dict[bytes32, BlockRecord]
|
|
662
663
|
if block_list[-1].header_hash == self._block_cache_header:
|
|
663
664
|
height_to_hash = self._block_cache_height_to_hash
|
|
664
665
|
difficulty = self._block_cache_difficulty
|
|
@@ -681,8 +682,8 @@ class BlockTools:
|
|
|
681
682
|
curr = blocks[curr.prev_hash]
|
|
682
683
|
blocks_added_this_sub_slot += 1
|
|
683
684
|
|
|
684
|
-
finished_sub_slots_at_sp:
|
|
685
|
-
finished_sub_slots_at_ip:
|
|
685
|
+
finished_sub_slots_at_sp: list[EndOfSubSlotBundle] = [] # Sub-slots since last block, up to signage point
|
|
686
|
+
finished_sub_slots_at_ip: list[EndOfSubSlotBundle] = [] # Sub-slots since last block, up to infusion point
|
|
686
687
|
sub_slot_iters: uint64 = latest_block.sub_slot_iters # The number of iterations in one sub-slot
|
|
687
688
|
same_slot_as_last = True # Only applies to first slot, to prevent old blocks from being added
|
|
688
689
|
sub_slot_start_total_iters: uint128 = latest_block.ip_sub_slot_total_iters(constants)
|
|
@@ -741,7 +742,7 @@ class BlockTools:
|
|
|
741
742
|
assert signage_point.cc_vdf is not None
|
|
742
743
|
cc_sp_output_hash = signage_point.cc_vdf.output.get_hash()
|
|
743
744
|
|
|
744
|
-
qualified_proofs:
|
|
745
|
+
qualified_proofs: list[tuple[uint64, ProofOfSpace]] = self.get_pospaces_for_challenge(
|
|
745
746
|
constants,
|
|
746
747
|
slot_cc_challenge,
|
|
747
748
|
cc_sp_output_hash,
|
|
@@ -961,7 +962,7 @@ class BlockTools:
|
|
|
961
962
|
new_sub_slot_iters: Optional[uint64] = sub_epoch_summary.new_sub_slot_iters
|
|
962
963
|
new_difficulty: Optional[uint64] = sub_epoch_summary.new_difficulty
|
|
963
964
|
|
|
964
|
-
self.log.info(f"Sub epoch summary: {sub_epoch_summary} for block {latest_block.height+1}")
|
|
965
|
+
self.log.info(f"Sub epoch summary: {sub_epoch_summary} for block {latest_block.height + 1}")
|
|
965
966
|
else: # the previous block is not the last block of the sub-epoch or epoch
|
|
966
967
|
pending_ses = False
|
|
967
968
|
ses_hash = None
|
|
@@ -1044,7 +1045,7 @@ class BlockTools:
|
|
|
1044
1045
|
sub_slots_finished += 1
|
|
1045
1046
|
self.log.info(
|
|
1046
1047
|
f"Sub slot finished. blocks included: {blocks_added_this_sub_slot} blocks_per_slot: "
|
|
1047
|
-
f"{(len(block_list) - initial_block_list_len)/sub_slots_finished}"
|
|
1048
|
+
f"{(len(block_list) - initial_block_list_len) / sub_slots_finished}"
|
|
1048
1049
|
f"Sub Epoch Summary Included: {sub_epoch_summary is not None} "
|
|
1049
1050
|
)
|
|
1050
1051
|
blocks_added_this_sub_slot = 0 # Sub slot ended, overflows are in next sub slot
|
|
@@ -1236,7 +1237,7 @@ class BlockTools:
|
|
|
1236
1237
|
if timestamp is None:
|
|
1237
1238
|
timestamp = uint64(int(time.time()))
|
|
1238
1239
|
|
|
1239
|
-
finished_sub_slots:
|
|
1240
|
+
finished_sub_slots: list[EndOfSubSlotBundle] = []
|
|
1240
1241
|
unfinished_block: Optional[UnfinishedBlock] = None
|
|
1241
1242
|
ip_iters: uint64 = uint64(0)
|
|
1242
1243
|
sub_slot_total_iters: uint128 = uint128(0)
|
|
@@ -1262,7 +1263,7 @@ class BlockTools:
|
|
|
1262
1263
|
cc_sp_output_hash = signage_point.cc_vdf.output.get_hash()
|
|
1263
1264
|
# If did not reach the target slots to skip, don't make any proofs for this sub-slot
|
|
1264
1265
|
# we're creating the genesis block, its height is always 0
|
|
1265
|
-
qualified_proofs:
|
|
1266
|
+
qualified_proofs: list[tuple[uint64, ProofOfSpace]] = self.get_pospaces_for_challenge(
|
|
1266
1267
|
constants,
|
|
1267
1268
|
cc_challenge,
|
|
1268
1269
|
cc_sp_output_hash,
|
|
@@ -1420,8 +1421,8 @@ class BlockTools:
|
|
|
1420
1421
|
sub_slot_iters: uint64,
|
|
1421
1422
|
height: uint32,
|
|
1422
1423
|
force_plot_id: Optional[bytes32] = None,
|
|
1423
|
-
) ->
|
|
1424
|
-
found_proofs:
|
|
1424
|
+
) -> list[tuple[uint64, ProofOfSpace]]:
|
|
1425
|
+
found_proofs: list[tuple[uint64, ProofOfSpace]] = []
|
|
1425
1426
|
rng = random.Random()
|
|
1426
1427
|
rng.seed(seed)
|
|
1427
1428
|
for plot_info in self.plot_manager.plots.values():
|
|
@@ -1481,7 +1482,7 @@ def get_signage_point(
|
|
|
1481
1482
|
latest_block: Optional[BlockRecord],
|
|
1482
1483
|
sub_slot_start_total_iters: uint128,
|
|
1483
1484
|
signage_point_index: uint8,
|
|
1484
|
-
finished_sub_slots:
|
|
1485
|
+
finished_sub_slots: list[EndOfSubSlotBundle],
|
|
1485
1486
|
sub_slot_iters: uint64,
|
|
1486
1487
|
normalized_to_identity_cc_sp: bool = False,
|
|
1487
1488
|
) -> SignagePoint:
|
|
@@ -1536,9 +1537,9 @@ def get_signage_point(
|
|
|
1536
1537
|
|
|
1537
1538
|
def finish_block(
|
|
1538
1539
|
constants: ConsensusConstants,
|
|
1539
|
-
blocks:
|
|
1540
|
-
height_to_hash:
|
|
1541
|
-
finished_sub_slots:
|
|
1540
|
+
blocks: dict[bytes32, BlockRecord],
|
|
1541
|
+
height_to_hash: dict[uint32, bytes32],
|
|
1542
|
+
finished_sub_slots: list[EndOfSubSlotBundle],
|
|
1542
1543
|
sub_slot_start_total_iters: uint128,
|
|
1543
1544
|
signage_point_index: uint8,
|
|
1544
1545
|
unfinished_block: UnfinishedBlock,
|
|
@@ -1550,7 +1551,7 @@ def finish_block(
|
|
|
1550
1551
|
sub_slot_iters: uint64,
|
|
1551
1552
|
difficulty: uint64,
|
|
1552
1553
|
normalized_to_identity_cc_ip: bool = False,
|
|
1553
|
-
) ->
|
|
1554
|
+
) -> tuple[FullBlock, BlockRecord]:
|
|
1554
1555
|
is_overflow = is_overflow_block(constants, signage_point_index)
|
|
1555
1556
|
cc_vdf_challenge = slot_cc_challenge
|
|
1556
1557
|
if len(finished_sub_slots) == 0:
|
|
@@ -1627,10 +1628,10 @@ def finish_block(
|
|
|
1627
1628
|
|
|
1628
1629
|
def get_challenges(
|
|
1629
1630
|
constants: ConsensusConstants,
|
|
1630
|
-
blocks:
|
|
1631
|
-
finished_sub_slots:
|
|
1631
|
+
blocks: dict[bytes32, BlockRecord],
|
|
1632
|
+
finished_sub_slots: list[EndOfSubSlotBundle],
|
|
1632
1633
|
prev_header_hash: Optional[bytes32],
|
|
1633
|
-
) ->
|
|
1634
|
+
) -> tuple[bytes32, bytes32]:
|
|
1634
1635
|
if len(finished_sub_slots) == 0:
|
|
1635
1636
|
if prev_header_hash is None:
|
|
1636
1637
|
return constants.GENESIS_CHALLENGE, constants.GENESIS_CHALLENGE
|
|
@@ -1670,12 +1671,12 @@ def get_plot_tmp_dir(plot_dir_name: str = "test-plots", automated_testing: bool
|
|
|
1670
1671
|
|
|
1671
1672
|
|
|
1672
1673
|
def load_block_list(
|
|
1673
|
-
block_list:
|
|
1674
|
-
) ->
|
|
1674
|
+
block_list: list[FullBlock], constants: ConsensusConstants
|
|
1675
|
+
) -> tuple[dict[uint32, bytes32], uint64, dict[bytes32, BlockRecord]]:
|
|
1675
1676
|
difficulty = uint64(constants.DIFFICULTY_STARTING)
|
|
1676
1677
|
sub_slot_iters = uint64(constants.SUB_SLOT_ITERS_STARTING)
|
|
1677
|
-
height_to_hash:
|
|
1678
|
-
blocks:
|
|
1678
|
+
height_to_hash: dict[uint32, bytes32] = {}
|
|
1679
|
+
blocks: dict[bytes32, BlockRecord] = {}
|
|
1679
1680
|
for full_block in block_list:
|
|
1680
1681
|
if full_block.height != 0:
|
|
1681
1682
|
if len(full_block.finished_sub_slots) > 0:
|
|
@@ -1716,12 +1717,12 @@ def load_block_list(
|
|
|
1716
1717
|
def get_icc(
|
|
1717
1718
|
constants: ConsensusConstants,
|
|
1718
1719
|
vdf_end_total_iters: uint128,
|
|
1719
|
-
finished_sub_slots:
|
|
1720
|
+
finished_sub_slots: list[EndOfSubSlotBundle],
|
|
1720
1721
|
latest_block: BlockRecord,
|
|
1721
|
-
blocks:
|
|
1722
|
+
blocks: dict[bytes32, BlockRecord],
|
|
1722
1723
|
sub_slot_start_total_iters: uint128,
|
|
1723
1724
|
deficit: uint8,
|
|
1724
|
-
) ->
|
|
1725
|
+
) -> tuple[Optional[VDFInfo], Optional[VDFProof]]:
|
|
1725
1726
|
if len(finished_sub_slots) == 0:
|
|
1726
1727
|
prev_deficit = latest_block.deficit
|
|
1727
1728
|
else:
|
|
@@ -1772,7 +1773,7 @@ def get_icc(
|
|
|
1772
1773
|
|
|
1773
1774
|
def get_full_block_and_block_record(
|
|
1774
1775
|
constants: ConsensusConstants,
|
|
1775
|
-
blocks:
|
|
1776
|
+
blocks: dict[bytes32, BlockRecord],
|
|
1776
1777
|
sub_slot_start_total_iters: uint128,
|
|
1777
1778
|
signage_point_index: uint8,
|
|
1778
1779
|
proof_of_space: ProofOfSpace,
|
|
@@ -1785,25 +1786,25 @@ def get_full_block_and_block_record(
|
|
|
1785
1786
|
time_per_block: float,
|
|
1786
1787
|
block_generator: Optional[BlockGenerator],
|
|
1787
1788
|
aggregate_signature: G2Element,
|
|
1788
|
-
additions: Optional[
|
|
1789
|
-
removals: Optional[
|
|
1790
|
-
height_to_hash:
|
|
1789
|
+
additions: Optional[list[Coin]],
|
|
1790
|
+
removals: Optional[list[Coin]],
|
|
1791
|
+
height_to_hash: dict[uint32, bytes32],
|
|
1791
1792
|
difficulty: uint64,
|
|
1792
1793
|
required_iters: uint64,
|
|
1793
1794
|
sub_slot_iters: uint64,
|
|
1794
1795
|
get_plot_signature: Callable[[bytes32, G1Element], G2Element],
|
|
1795
1796
|
get_pool_signature: Callable[[PoolTarget, Optional[G1Element]], Optional[G2Element]],
|
|
1796
|
-
finished_sub_slots:
|
|
1797
|
+
finished_sub_slots: list[EndOfSubSlotBundle],
|
|
1797
1798
|
signage_point: SignagePoint,
|
|
1798
1799
|
prev_block: BlockRecord,
|
|
1799
1800
|
seed: bytes = b"",
|
|
1800
1801
|
*,
|
|
1801
|
-
block_refs:
|
|
1802
|
+
block_refs: list[uint32] = [],
|
|
1802
1803
|
overflow_cc_challenge: Optional[bytes32] = None,
|
|
1803
1804
|
overflow_rc_challenge: Optional[bytes32] = None,
|
|
1804
1805
|
normalized_to_identity_cc_ip: bool = False,
|
|
1805
1806
|
current_time: bool = False,
|
|
1806
|
-
) ->
|
|
1807
|
+
) -> tuple[FullBlock, BlockRecord, float]:
|
|
1807
1808
|
# we're simulating time between blocks here. The more VDF iterations the
|
|
1808
1809
|
# blocks advances, the longer it should have taken (and vice versa). This
|
|
1809
1810
|
# formula is meant to converge at 1024 iters per the specified
|
|
@@ -1870,7 +1871,7 @@ def get_full_block_and_block_record(
|
|
|
1870
1871
|
|
|
1871
1872
|
# these are the costs of unknown conditions, as defined chia_rs here:
|
|
1872
1873
|
# https://github.com/Chia-Network/chia_rs/pull/181
|
|
1873
|
-
def compute_cost_table() ->
|
|
1874
|
+
def compute_cost_table() -> list[int]:
|
|
1874
1875
|
A = 17
|
|
1875
1876
|
B = 16
|
|
1876
1877
|
s = []
|
|
@@ -1907,7 +1908,7 @@ def conditions_cost(conds: Program) -> uint64:
|
|
|
1907
1908
|
elif condition == ConditionOpcode.SOFTFORK.value:
|
|
1908
1909
|
arg = cond.rest().first().as_int()
|
|
1909
1910
|
condition_cost += arg * 10000
|
|
1910
|
-
elif condition in
|
|
1911
|
+
elif condition in {
|
|
1911
1912
|
ConditionOpcode.AGG_SIG_UNSAFE,
|
|
1912
1913
|
ConditionOpcode.AGG_SIG_ME,
|
|
1913
1914
|
ConditionOpcode.AGG_SIG_PARENT,
|
|
@@ -1916,7 +1917,7 @@ def conditions_cost(conds: Program) -> uint64:
|
|
|
1916
1917
|
ConditionOpcode.AGG_SIG_PUZZLE_AMOUNT,
|
|
1917
1918
|
ConditionOpcode.AGG_SIG_PARENT_AMOUNT,
|
|
1918
1919
|
ConditionOpcode.AGG_SIG_PARENT_PUZZLE,
|
|
1919
|
-
|
|
1920
|
+
}:
|
|
1920
1921
|
condition_cost += ConditionCost.AGG_SIG.value
|
|
1921
1922
|
return uint64(condition_cost)
|
|
1922
1923
|
|
|
@@ -1946,7 +1947,7 @@ def compute_cost_test(generator: BlockGenerator, constants: ConsensusConstants,
|
|
|
1946
1947
|
|
|
1947
1948
|
if height >= constants.HARD_FORK_HEIGHT:
|
|
1948
1949
|
blocks = generator.generator_refs
|
|
1949
|
-
cost, result = generator.program._run(INFINITE_COST, MEMPOOL_MODE
|
|
1950
|
+
cost, result = generator.program._run(INFINITE_COST, MEMPOOL_MODE, [DESERIALIZE_MOD, blocks])
|
|
1950
1951
|
clvm_cost += cost
|
|
1951
1952
|
|
|
1952
1953
|
for spend in result.first().as_iter():
|
|
@@ -1997,7 +1998,7 @@ async def create_block_tools_async(
|
|
|
1997
1998
|
constants: ConsensusConstants = test_constants,
|
|
1998
1999
|
root_path: Optional[Path] = None,
|
|
1999
2000
|
keychain: Optional[Keychain] = None,
|
|
2000
|
-
config_overrides: Optional[
|
|
2001
|
+
config_overrides: Optional[dict[str, Any]] = None,
|
|
2001
2002
|
num_og_plots: int = 15,
|
|
2002
2003
|
num_pool_plots: int = 5,
|
|
2003
2004
|
num_non_keychain_plots: int = 3,
|
|
@@ -2020,7 +2021,7 @@ def create_block_tools(
|
|
|
2020
2021
|
constants: ConsensusConstants = test_constants,
|
|
2021
2022
|
root_path: Optional[Path] = None,
|
|
2022
2023
|
keychain: Optional[Keychain] = None,
|
|
2023
|
-
config_overrides: Optional[
|
|
2024
|
+
config_overrides: Optional[dict[str, Any]] = None,
|
|
2024
2025
|
) -> BlockTools:
|
|
2025
2026
|
global create_block_tools_count
|
|
2026
2027
|
create_block_tools_count += 1
|