chia-blockchain 2.5.4rc2__py3-none-any.whl → 2.5.5rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/_tests/blockchain/blockchain_test_utils.py +2 -3
- chia/_tests/blockchain/test_augmented_chain.py +2 -3
- chia/_tests/blockchain/test_blockchain.py +261 -44
- chia/_tests/blockchain/test_blockchain_transactions.py +4 -3
- chia/_tests/blockchain/test_build_chains.py +197 -1
- chia/_tests/blockchain/test_get_block_generator.py +1 -1
- chia/_tests/blockchain/test_lookup_fork_chain.py +1 -1
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +3 -4
- chia/_tests/clvm/test_message_conditions.py +2 -2
- chia/_tests/clvm/test_puzzle_compression.py +2 -3
- chia/_tests/clvm/test_puzzles.py +1 -2
- chia/_tests/clvm/test_singletons.py +2 -3
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +30 -25
- chia/_tests/cmds/test_dev_gh.py +1 -1
- chia/_tests/cmds/test_farm_cmd.py +1 -1
- chia/_tests/cmds/test_show.py +1 -2
- chia/_tests/cmds/wallet/test_did.py +101 -56
- chia/_tests/cmds/wallet/test_nft.py +109 -84
- chia/_tests/cmds/wallet/test_notifications.py +1 -1
- chia/_tests/cmds/wallet/test_offer.toffer +1 -1
- chia/_tests/cmds/wallet/test_vcs.py +8 -8
- chia/_tests/cmds/wallet/test_wallet.py +100 -46
- chia/_tests/conftest.py +31 -20
- chia/_tests/connection_utils.py +1 -1
- chia/_tests/core/consensus/stores/__init__.py +0 -0
- chia/_tests/core/consensus/stores/test_coin_store_protocol.py +40 -0
- chia/_tests/core/consensus/test_block_creation.py +2 -31
- chia/_tests/core/consensus/test_pot_iterations.py +38 -3
- chia/_tests/core/custom_types/test_proof_of_space.py +154 -26
- chia/_tests/core/custom_types/test_spend_bundle.py +2 -3
- chia/_tests/core/daemon/test_daemon.py +80 -0
- chia/_tests/core/data_layer/test_data_layer.py +1 -1
- chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
- chia/_tests/core/data_layer/test_data_rpc.py +14 -10
- chia/_tests/core/data_layer/test_data_store.py +5 -5
- chia/_tests/core/farmer/test_farmer_api.py +2 -2
- chia/_tests/core/full_node/full_sync/test_full_sync.py +446 -406
- chia/_tests/core/full_node/ram_db.py +3 -1
- chia/_tests/core/full_node/stores/test_block_store.py +28 -16
- chia/_tests/core/full_node/stores/test_coin_store.py +277 -185
- chia/_tests/core/full_node/stores/test_full_node_store.py +11 -4
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_address_manager.py +200 -27
- chia/_tests/core/full_node/test_block_height_map.py +2 -2
- chia/_tests/core/full_node/test_conditions.py +7 -6
- chia/_tests/core/full_node/test_full_node.py +456 -40
- chia/_tests/core/full_node/test_generator_tools.py +32 -2
- chia/_tests/core/full_node/test_hint_management.py +1 -1
- chia/_tests/core/full_node/test_node_load.py +20 -21
- chia/_tests/core/full_node/test_performance.py +3 -4
- chia/_tests/core/full_node/test_prev_tx_block.py +43 -0
- chia/_tests/core/full_node/test_subscriptions.py +1 -2
- chia/_tests/core/full_node/test_transactions.py +9 -5
- chia/_tests/core/full_node/test_tx_processing_queue.py +1 -2
- chia/_tests/core/large_block.py +1 -2
- chia/_tests/core/make_block_generator.py +3 -4
- chia/_tests/core/mempool/test_mempool.py +36 -86
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
- chia/_tests/core/mempool/test_mempool_item_queries.py +1 -3
- chia/_tests/core/mempool/test_mempool_manager.py +421 -69
- chia/_tests/core/mempool/test_mempool_performance.py +3 -2
- chia/_tests/core/mempool/test_singleton_fast_forward.py +60 -131
- chia/_tests/core/server/flood.py +1 -1
- chia/_tests/core/server/test_dos.py +1 -1
- chia/_tests/core/server/test_node_discovery.py +41 -27
- chia/_tests/core/server/test_rate_limits.py +1 -1
- chia/_tests/core/server/test_server.py +1 -1
- chia/_tests/core/services/test_services.py +5 -5
- chia/_tests/core/ssl/test_ssl.py +1 -1
- chia/_tests/core/test_cost_calculation.py +6 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_crawler_rpc.py +1 -1
- chia/_tests/core/test_db_conversion.py +3 -1
- chia/_tests/core/test_db_validation.py +5 -3
- chia/_tests/core/test_farmer_harvester_rpc.py +15 -15
- chia/_tests/core/test_filter.py +4 -1
- chia/_tests/core/test_full_node_rpc.py +99 -82
- chia/_tests/core/test_program.py +2 -2
- chia/_tests/core/util/test_block_cache.py +1 -1
- chia/_tests/core/util/test_keychain.py +2 -2
- chia/_tests/core/util/test_lockfile.py +1 -1
- chia/_tests/core/util/test_log_exceptions.py +5 -5
- chia/_tests/core/util/test_streamable.py +81 -22
- chia/_tests/db/test_db_wrapper.py +1 -3
- chia/_tests/environments/wallet.py +5 -5
- chia/_tests/farmer_harvester/test_farmer.py +9 -7
- chia/_tests/farmer_harvester/test_farmer_harvester.py +11 -4
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +15 -9
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -2
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +7 -5
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
- chia/_tests/generator/test_compression.py +1 -2
- chia/_tests/generator/test_rom.py +8 -4
- chia/_tests/plot_sync/test_plot_sync.py +3 -3
- chia/_tests/plot_sync/test_receiver.py +3 -3
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +3 -3
- chia/_tests/plot_sync/util.py +2 -2
- chia/_tests/pools/test_pool_cmdline.py +48 -21
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +2 -3
- chia/_tests/pools/test_pool_rpc.py +237 -105
- chia/_tests/pools/test_pool_wallet.py +11 -2
- chia/_tests/pools/test_wallet_pool_store.py +5 -4
- chia/_tests/rpc/test_rpc_client.py +1 -1
- chia/_tests/simulation/test_simulation.py +13 -8
- chia/_tests/simulation/test_simulator.py +2 -2
- chia/_tests/timelord/test_new_peak.py +191 -47
- chia/_tests/timelord/test_timelord.py +1 -1
- chia/_tests/tools/test_full_sync.py +0 -2
- chia/_tests/tools/test_run_block.py +3 -1
- chia/_tests/util/benchmark_cost.py +3 -3
- chia/_tests/util/benchmarks.py +2 -2
- chia/_tests/util/blockchain.py +11 -5
- chia/_tests/util/blockchain_mock.py +1 -4
- chia/_tests/util/coin_store.py +29 -0
- chia/_tests/util/constants.py +2 -18
- chia/_tests/util/full_sync.py +3 -3
- chia/_tests/util/generator_tools_testing.py +2 -3
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +33 -31
- chia/_tests/util/network_protocol_data.py +19 -17
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +3 -1
- chia/_tests/util/run_block.py +2 -2
- chia/_tests/util/setup_nodes.py +7 -7
- chia/_tests/util/spend_sim.py +47 -55
- chia/_tests/util/test_condition_tools.py +5 -4
- chia/_tests/util/test_config.py +2 -2
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +12 -14
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_paginator.py +4 -4
- chia/_tests/util/test_priority_mutex.py +2 -2
- chia/_tests/util/test_replace_str_to_bytes.py +15 -5
- chia/_tests/util/test_ssl_check.py +1 -1
- chia/_tests/util/test_testnet_overrides.py +13 -3
- chia/_tests/util/time_out_assert.py +4 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -2
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +352 -432
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +3 -6
- chia/_tests/wallet/cat_wallet/test_trades.py +53 -77
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -1
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +3 -3
- chia/_tests/wallet/clawback/test_clawback_metadata.py +4 -2
- chia/_tests/wallet/conftest.py +11 -12
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +11 -4
- chia/_tests/wallet/db_wallet/test_dl_offers.py +433 -130
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +3 -3
- chia/_tests/wallet/did_wallet/test_did.py +2132 -2000
- chia/_tests/wallet/nft_wallet/config.py +1 -1
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1610 -742
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +486 -907
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +4 -4
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +517 -294
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +133 -62
- chia/_tests/wallet/rpc/test_wallet_rpc.py +495 -265
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +10 -6
- chia/_tests/wallet/sync/test_wallet_sync.py +89 -60
- chia/_tests/wallet/test_clvm_casts.py +88 -0
- chia/_tests/wallet/test_coin_management.py +1 -1
- chia/_tests/wallet/test_coin_selection.py +1 -1
- chia/_tests/wallet/test_conditions.py +1 -1
- chia/_tests/wallet/test_new_wallet_protocol.py +13 -11
- chia/_tests/wallet/test_notifications.py +5 -3
- chia/_tests/wallet/test_sign_coin_spends.py +6 -6
- chia/_tests/wallet/test_signer_protocol.py +13 -12
- chia/_tests/wallet/test_singleton.py +1 -1
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +5 -7
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +108 -29
- chia/_tests/wallet/test_wallet_action_scope.py +9 -2
- chia/_tests/wallet/test_wallet_blockchain.py +2 -3
- chia/_tests/wallet/test_wallet_key_val_store.py +1 -2
- chia/_tests/wallet/test_wallet_node.py +2 -4
- chia/_tests/wallet/test_wallet_retry.py +4 -2
- chia/_tests/wallet/test_wallet_state_manager.py +191 -5
- chia/_tests/wallet/test_wallet_test_framework.py +1 -1
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +8 -8
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -12
- chia/_tests/wallet/wallet_block_tools.py +6 -6
- chia/_tests/weight_proof/test_weight_proof.py +10 -48
- chia/apis.py +1 -1
- chia/cmds/beta.py +1 -1
- chia/cmds/chia.py +9 -9
- chia/cmds/cmd_classes.py +12 -11
- chia/cmds/cmd_helpers.py +1 -1
- chia/cmds/cmds_util.py +12 -9
- chia/cmds/coin_funcs.py +2 -2
- chia/cmds/configure.py +2 -2
- chia/cmds/data.py +0 -2
- chia/cmds/data_funcs.py +1 -1
- chia/cmds/db_validate_func.py +1 -2
- chia/cmds/dev/__init__.py +0 -0
- chia/cmds/dev/data.py +273 -0
- chia/cmds/{gh.py → dev/gh.py} +5 -5
- chia/cmds/dev/main.py +22 -0
- chia/cmds/dev/mempool.py +78 -0
- chia/cmds/dev/mempool_funcs.py +63 -0
- chia/cmds/farm_funcs.py +5 -4
- chia/cmds/init_funcs.py +11 -11
- chia/cmds/keys.py +2 -2
- chia/cmds/keys_funcs.py +4 -4
- chia/cmds/netspace_funcs.py +1 -1
- chia/cmds/peer_funcs.py +2 -2
- chia/cmds/plotnft_funcs.py +72 -26
- chia/cmds/rpc.py +1 -1
- chia/cmds/show_funcs.py +5 -5
- chia/cmds/signer.py +8 -7
- chia/cmds/sim_funcs.py +8 -9
- chia/cmds/wallet.py +2 -2
- chia/cmds/wallet_funcs.py +165 -131
- chia/{util → consensus}/augmented_chain.py +1 -2
- chia/consensus/block_body_validation.py +54 -40
- chia/consensus/block_creation.py +42 -76
- chia/consensus/block_header_validation.py +32 -26
- chia/consensus/block_record.py +0 -3
- chia/consensus/blockchain.py +23 -32
- chia/consensus/blockchain_interface.py +1 -5
- chia/consensus/check_time_locks.py +57 -0
- chia/consensus/coin_store_protocol.py +151 -0
- chia/consensus/coinbase.py +0 -6
- chia/consensus/condition_costs.py +4 -0
- chia/{util → consensus}/condition_tools.py +4 -5
- chia/consensus/cost_calculator.py +1 -1
- chia/consensus/default_constants.py +32 -9
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +1 -2
- chia/consensus/find_fork_point.py +1 -3
- chia/consensus/full_block_to_block_record.py +1 -6
- chia/{util → consensus}/generator_tools.py +1 -3
- chia/consensus/get_block_challenge.py +30 -7
- chia/consensus/make_sub_epoch_summary.py +1 -5
- chia/consensus/multiprocess_validation.py +21 -20
- chia/consensus/pot_iterations.py +74 -13
- chia/{util → consensus}/prev_transaction_block.py +1 -1
- chia/consensus/vdf_info_computation.py +1 -3
- chia/daemon/keychain_proxy.py +5 -5
- chia/daemon/server.py +22 -5
- chia/data_layer/data_layer.py +92 -51
- chia/{rpc → data_layer}/data_layer_rpc_api.py +1 -1
- chia/{rpc → data_layer}/data_layer_rpc_util.py +3 -6
- chia/data_layer/data_layer_util.py +4 -6
- chia/data_layer/data_layer_wallet.py +42 -69
- chia/data_layer/dl_wallet_store.py +12 -6
- chia/data_layer/download_data.py +3 -3
- chia/data_layer/s3_plugin_service.py +0 -1
- chia/farmer/farmer.py +3 -4
- chia/farmer/farmer_api.py +11 -7
- chia/{rpc → farmer}/farmer_rpc_client.py +1 -1
- chia/full_node/block_height_map.py +7 -6
- chia/full_node/block_store.py +5 -7
- chia/full_node/bundle_tools.py +1 -2
- chia/full_node/coin_store.py +143 -124
- chia/{types → full_node}/eligible_coin_spends.py +39 -70
- chia/full_node/fee_estimator.py +1 -1
- chia/full_node/fee_estimator_interface.py +0 -8
- chia/full_node/fee_tracker.py +25 -25
- chia/full_node/full_node.py +70 -53
- chia/full_node/full_node_api.py +57 -40
- chia/{rpc → full_node}/full_node_rpc_api.py +87 -8
- chia/{rpc → full_node}/full_node_rpc_client.py +7 -6
- chia/full_node/full_node_store.py +23 -8
- chia/full_node/mempool.py +206 -53
- chia/full_node/mempool_check_conditions.py +20 -63
- chia/full_node/mempool_manager.py +26 -40
- chia/full_node/subscriptions.py +1 -3
- chia/full_node/tx_processing_queue.py +50 -3
- chia/full_node/weight_proof.py +46 -37
- chia/harvester/harvester.py +1 -1
- chia/harvester/harvester_api.py +22 -7
- chia/introducer/introducer.py +1 -1
- chia/introducer/introducer_api.py +1 -1
- chia/plot_sync/exceptions.py +1 -1
- chia/plot_sync/receiver.py +1 -1
- chia/plot_sync/sender.py +2 -2
- chia/pools/pool_puzzles.py +13 -18
- chia/pools/pool_wallet.py +23 -46
- chia/protocols/farmer_protocol.py +11 -3
- chia/protocols/full_node_protocol.py +1 -4
- chia/protocols/harvester_protocol.py +3 -3
- chia/protocols/pool_protocol.py +1 -2
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +1 -3
- chia/protocols/wallet_protocol.py +3 -3
- chia/rpc/rpc_client.py +7 -8
- chia/rpc/rpc_server.py +3 -3
- chia/rpc/util.py +3 -1
- chia/seeder/crawler.py +1 -1
- chia/seeder/crawler_api.py +1 -1
- chia/seeder/dns_server.py +2 -0
- chia/seeder/start_crawler.py +3 -3
- chia/server/address_manager.py +286 -38
- chia/server/address_manager_store.py +0 -215
- chia/{types → server}/aliases.py +7 -7
- chia/server/api_protocol.py +1 -1
- chia/server/chia_policy.py +1 -1
- chia/server/node_discovery.py +76 -113
- chia/server/rate_limits.py +1 -1
- chia/server/resolve_peer_info.py +43 -0
- chia/server/server.py +5 -5
- chia/server/start_data_layer.py +4 -4
- chia/server/start_farmer.py +5 -4
- chia/server/start_full_node.py +5 -4
- chia/server/start_harvester.py +7 -5
- chia/server/start_introducer.py +2 -2
- chia/server/start_service.py +1 -1
- chia/server/start_timelord.py +7 -5
- chia/server/start_wallet.py +7 -5
- chia/server/ws_connection.py +1 -1
- chia/simulator/add_blocks_in_batches.py +2 -2
- chia/simulator/block_tools.py +245 -201
- chia/simulator/full_node_simulator.py +38 -10
- chia/simulator/setup_services.py +12 -12
- chia/simulator/simulator_full_node_rpc_api.py +2 -2
- chia/simulator/simulator_full_node_rpc_client.py +2 -2
- chia/simulator/simulator_test_tools.py +2 -2
- chia/simulator/start_simulator.py +1 -1
- chia/simulator/wallet_tools.py +10 -18
- chia/ssl/create_ssl.py +1 -1
- chia/timelord/iters_from_block.py +14 -14
- chia/timelord/timelord.py +15 -11
- chia/timelord/timelord_api.py +14 -2
- chia/timelord/timelord_state.py +20 -14
- chia/types/blockchain_format/program.py +53 -10
- chia/types/blockchain_format/proof_of_space.py +73 -19
- chia/types/coin_spend.py +3 -56
- chia/types/generator_types.py +28 -0
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +12 -7
- chia/types/unfinished_header_block.py +1 -2
- chia/types/validation_state.py +1 -2
- chia/types/weight_proof.py +1 -3
- chia/util/action_scope.py +3 -3
- chia/util/block_cache.py +1 -2
- chia/util/byte_types.py +1 -1
- chia/util/casts.py +21 -0
- chia/util/config.py +0 -37
- chia/util/db_wrapper.py +8 -1
- chia/util/errors.py +3 -2
- chia/util/initial-config.yaml +21 -5
- chia/util/keychain.py +6 -7
- chia/util/keyring_wrapper.py +5 -5
- chia/util/limited_semaphore.py +1 -1
- chia/util/priority_mutex.py +1 -1
- chia/util/streamable.py +63 -5
- chia/util/task_timing.py +1 -1
- chia/util/virtual_project_analysis.py +1 -1
- chia/wallet/cat_wallet/cat_info.py +7 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +9 -5
- chia/wallet/cat_wallet/cat_utils.py +1 -1
- chia/wallet/cat_wallet/cat_wallet.py +44 -36
- chia/wallet/cat_wallet/lineage_store.py +7 -0
- chia/wallet/cat_wallet/r_cat_wallet.py +274 -0
- chia/wallet/conditions.py +5 -10
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -4
- chia/wallet/derivation_record.py +33 -0
- chia/wallet/derive_keys.py +3 -3
- chia/wallet/did_wallet/did_info.py +12 -3
- chia/wallet/did_wallet/did_wallet.py +132 -101
- chia/wallet/did_wallet/did_wallet_puzzles.py +9 -9
- chia/wallet/driver_protocol.py +3 -1
- chia/{types/spend_bundle.py → wallet/estimate_fees.py} +2 -7
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
- chia/wallet/nft_wallet/nft_wallet.py +69 -112
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +5 -3
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +6 -4
- chia/wallet/nft_wallet/transfer_program_puzzle.py +4 -2
- chia/wallet/nft_wallet/uncurry_nft.py +4 -6
- chia/wallet/notification_manager.py +2 -3
- chia/wallet/outer_puzzles.py +7 -2
- chia/wallet/puzzle_drivers.py +1 -1
- chia/wallet/puzzles/clawback/drivers.py +5 -4
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -1
- chia/wallet/puzzles/singleton_top_layer.py +2 -1
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +2 -1
- chia/wallet/puzzles/tails.py +1 -3
- chia/wallet/signer_protocol.py +5 -6
- chia/wallet/singleton.py +5 -4
- chia/wallet/singleton_record.py +1 -1
- chia/wallet/trade_manager.py +18 -20
- chia/wallet/trade_record.py +3 -6
- chia/wallet/trading/offer.py +12 -13
- chia/wallet/uncurried_puzzle.py +2 -2
- chia/wallet/util/compute_additions.py +58 -0
- chia/wallet/util/compute_hints.py +3 -3
- chia/wallet/util/compute_memos.py +4 -4
- chia/wallet/util/curry_and_treehash.py +2 -1
- chia/wallet/util/debug_spend_bundle.py +1 -1
- chia/wallet/util/merkle_tree.py +1 -1
- chia/wallet/util/peer_request_cache.py +1 -2
- chia/wallet/util/tx_config.py +3 -8
- chia/wallet/util/wallet_sync_utils.py +10 -5
- chia/wallet/util/wallet_types.py +1 -0
- chia/wallet/vc_wallet/cr_cat_drivers.py +17 -18
- chia/wallet/vc_wallet/cr_cat_wallet.py +30 -28
- chia/wallet/vc_wallet/cr_outer_puzzle.py +5 -3
- chia/wallet/vc_wallet/vc_drivers.py +50 -8
- chia/wallet/vc_wallet/vc_store.py +3 -5
- chia/wallet/vc_wallet/vc_wallet.py +15 -22
- chia/wallet/wallet.py +36 -46
- chia/wallet/wallet_action_scope.py +73 -4
- chia/wallet/wallet_blockchain.py +1 -3
- chia/wallet/wallet_interested_store.py +1 -1
- chia/wallet/wallet_nft_store.py +3 -3
- chia/wallet/wallet_node.py +17 -16
- chia/wallet/wallet_node_api.py +4 -5
- chia/wallet/wallet_pool_store.py +1 -1
- chia/wallet/wallet_protocol.py +2 -0
- chia/wallet/wallet_puzzle_store.py +1 -1
- chia/{rpc → wallet}/wallet_request_types.py +670 -81
- chia/{rpc → wallet}/wallet_rpc_api.py +735 -766
- chia/{rpc → wallet}/wallet_rpc_client.py +268 -420
- chia/wallet/wallet_singleton_store.py +8 -7
- chia/wallet/wallet_spend_bundle.py +4 -3
- chia/wallet/wallet_state_manager.py +320 -191
- chia/wallet/wallet_weight_proof_handler.py +1 -2
- chia/wallet/wsm_apis.py +98 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/METADATA +7 -7
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/RECORD +443 -436
- mozilla-ca/cacert.pem +3 -165
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +0 -145
- chia/cmds/dev.py +0 -18
- chia/types/blockchain_format/slots.py +0 -9
- chia/types/blockchain_format/sub_epoch_summary.py +0 -5
- chia/types/end_of_slot_bundle.py +0 -5
- chia/types/full_block.py +0 -5
- chia/types/header_block.py +0 -5
- chia/types/spend_bundle_conditions.py +0 -7
- chia/types/transaction_queue_entry.py +0 -56
- chia/types/unfinished_block.py +0 -5
- /chia/cmds/{installers.py → dev/installers.py} +0 -0
- /chia/cmds/{sim.py → dev/sim.py} +0 -0
- /chia/{util → cmds}/dump_keyring.py +0 -0
- /chia/{full_node → consensus}/signage_point.py +0 -0
- /chia/{rpc → data_layer}/data_layer_rpc_client.py +0 -0
- /chia/{rpc → farmer}/farmer_rpc_api.py +0 -0
- /chia/{util → full_node}/full_block_utils.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_api.py +0 -0
- /chia/{rpc → harvester}/harvester_rpc_client.py +0 -0
- /chia/{full_node → protocols}/fee_estimate.py +0 -0
- /chia/{server → protocols}/outbound_message.py +0 -0
- /chia/{rpc → seeder}/crawler_rpc_api.py +0 -0
- /chia/{util → simulator}/vdf_prover.py +0 -0
- /chia/{util → ssl}/ssl_check.py +0 -0
- /chia/{rpc → timelord}/timelord_rpc_api.py +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/entry_points.txt +0 -0
chia/_tests/util/spend_sim.py
CHANGED
|
@@ -7,18 +7,21 @@ from collections.abc import AsyncIterator
|
|
|
7
7
|
from contextlib import asynccontextmanager
|
|
8
8
|
from dataclasses import dataclass
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import Any,
|
|
10
|
+
from typing import Any, Optional
|
|
11
11
|
|
|
12
12
|
import anyio
|
|
13
13
|
from chia_rs import (
|
|
14
14
|
DONT_VALIDATE_SIGNATURE,
|
|
15
|
+
CoinSpend,
|
|
15
16
|
ConsensusConstants,
|
|
16
17
|
G2Element,
|
|
18
|
+
SpendBundle,
|
|
17
19
|
get_flags_for_height_and_constants,
|
|
18
20
|
run_block_generator2,
|
|
19
21
|
)
|
|
20
22
|
from chia_rs.sized_bytes import bytes32
|
|
21
23
|
from chia_rs.sized_ints import uint32, uint64
|
|
24
|
+
from typing_extensions import Self
|
|
22
25
|
|
|
23
26
|
from chia.consensus.block_rewards import calculate_base_farmer_reward, calculate_pool_reward
|
|
24
27
|
from chia.consensus.coinbase import create_farmer_coin, create_pool_coin
|
|
@@ -32,16 +35,15 @@ from chia.full_node.mempool_manager import MempoolManager
|
|
|
32
35
|
from chia.types.blockchain_format.coin import Coin
|
|
33
36
|
from chia.types.blockchain_format.program import INFINITE_COST
|
|
34
37
|
from chia.types.coin_record import CoinRecord
|
|
35
|
-
from chia.types.coin_spend import CoinSpend
|
|
36
38
|
from chia.types.generator_types import BlockGenerator
|
|
37
39
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
38
40
|
from chia.types.mempool_item import MempoolItem
|
|
39
|
-
from chia.types.spend_bundle import SpendBundle, T_SpendBundle
|
|
40
41
|
from chia.util.db_wrapper import DBWrapper2
|
|
41
42
|
from chia.util.errors import Err, ValidationError
|
|
42
43
|
from chia.util.hash import std_hash
|
|
43
44
|
from chia.util.streamable import Streamable, streamable
|
|
44
45
|
from chia.wallet.util.compute_hints import HintedCoin, compute_spend_hints_and_additions
|
|
46
|
+
from chia.wallet.wallet_spend_bundle import T_SpendBundle
|
|
45
47
|
|
|
46
48
|
"""
|
|
47
49
|
The purpose of this file is to provide a lightweight simulator for the testing of Chialisp smart contracts.
|
|
@@ -105,9 +107,6 @@ class SimFullBlock(Streamable):
|
|
|
105
107
|
height: uint32 # Note that height is not on a regular FullBlock
|
|
106
108
|
|
|
107
109
|
|
|
108
|
-
_T_SimBlockRecord = TypeVar("_T_SimBlockRecord", bound="SimBlockRecord")
|
|
109
|
-
|
|
110
|
-
|
|
111
110
|
@streamable
|
|
112
111
|
@dataclass(frozen=True)
|
|
113
112
|
class SimBlockRecord(Streamable):
|
|
@@ -120,7 +119,7 @@ class SimBlockRecord(Streamable):
|
|
|
120
119
|
prev_transaction_block_hash: bytes32
|
|
121
120
|
|
|
122
121
|
@classmethod
|
|
123
|
-
def create(cls
|
|
122
|
+
def create(cls, rci: list[Coin], height: uint32, timestamp: uint64) -> Self:
|
|
124
123
|
prev_transaction_block_height = uint32(height - 1 if height > 0 else 0)
|
|
125
124
|
return cls(
|
|
126
125
|
rci,
|
|
@@ -142,9 +141,6 @@ class SimStore(Streamable):
|
|
|
142
141
|
blocks: list[SimFullBlock]
|
|
143
142
|
|
|
144
143
|
|
|
145
|
-
_T_SpendSim = TypeVar("_T_SpendSim", bound="SpendSim")
|
|
146
|
-
|
|
147
|
-
|
|
148
144
|
class SpendSim:
|
|
149
145
|
db_wrapper: DBWrapper2
|
|
150
146
|
coin_store: CoinStore
|
|
@@ -159,8 +155,8 @@ class SpendSim:
|
|
|
159
155
|
@classmethod
|
|
160
156
|
@contextlib.asynccontextmanager
|
|
161
157
|
async def managed(
|
|
162
|
-
cls
|
|
163
|
-
) -> AsyncIterator[
|
|
158
|
+
cls, db_path: Optional[Path] = None, defaults: ConsensusConstants = DEFAULT_CONSTANTS
|
|
159
|
+
) -> AsyncIterator[Self]:
|
|
164
160
|
self = cls()
|
|
165
161
|
if db_path is None:
|
|
166
162
|
uri = f"file:db_{random.randint(0, 99999999)}?mode=memory&cache=shared"
|
|
@@ -223,7 +219,7 @@ class SpendSim:
|
|
|
223
219
|
coins = set()
|
|
224
220
|
async with self.db_wrapper.reader_no_transaction() as conn:
|
|
225
221
|
cursor = await conn.execute(
|
|
226
|
-
"SELECT puzzle_hash,coin_parent,amount from coin_record WHERE coinbase=0 AND spent_index
|
|
222
|
+
"SELECT puzzle_hash,coin_parent,amount from coin_record WHERE coinbase=0 AND spent_index <= 0 ",
|
|
227
223
|
)
|
|
228
224
|
rows = await cursor.fetchall()
|
|
229
225
|
|
|
@@ -238,11 +234,7 @@ class SpendSim:
|
|
|
238
234
|
return None
|
|
239
235
|
return simple_solution_generator(bundle)
|
|
240
236
|
|
|
241
|
-
async def farm_block(
|
|
242
|
-
self,
|
|
243
|
-
puzzle_hash: bytes32 = bytes32(b"0" * 32),
|
|
244
|
-
item_inclusion_filter: Optional[Callable[[bytes32], bool]] = None,
|
|
245
|
-
) -> tuple[list[Coin], list[Coin]]:
|
|
237
|
+
async def farm_block(self, puzzle_hash: bytes32 = bytes32(b"0" * 32)) -> tuple[list[Coin], list[Coin]]:
|
|
246
238
|
# Fees get calculated
|
|
247
239
|
fees = uint64(0)
|
|
248
240
|
for item in self.mempool_manager.mempool.all_items():
|
|
@@ -250,38 +242,34 @@ class SpendSim:
|
|
|
250
242
|
|
|
251
243
|
# Rewards get created
|
|
252
244
|
next_block_height: uint32 = uint32(self.block_height + 1) if len(self.block_records) > 0 else self.block_height
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
)
|
|
268
|
-
|
|
245
|
+
included_reward_coins = [
|
|
246
|
+
create_pool_coin(
|
|
247
|
+
next_block_height,
|
|
248
|
+
puzzle_hash,
|
|
249
|
+
calculate_pool_reward(next_block_height),
|
|
250
|
+
self.defaults.GENESIS_CHALLENGE,
|
|
251
|
+
),
|
|
252
|
+
create_farmer_coin(
|
|
253
|
+
next_block_height,
|
|
254
|
+
puzzle_hash,
|
|
255
|
+
uint64(calculate_base_farmer_reward(next_block_height) + fees),
|
|
256
|
+
self.defaults.GENESIS_CHALLENGE,
|
|
257
|
+
),
|
|
258
|
+
]
|
|
269
259
|
# Coin store gets updated
|
|
270
260
|
generator_bundle: Optional[SpendBundle] = None
|
|
271
|
-
|
|
272
|
-
|
|
261
|
+
tx_additions = []
|
|
262
|
+
tx_removals = []
|
|
273
263
|
spent_coins_ids = None
|
|
274
264
|
if (len(self.block_records) > 0) and (self.mempool_manager.mempool.size() > 0):
|
|
275
265
|
peak = self.mempool_manager.peak
|
|
276
266
|
if peak is not None:
|
|
277
|
-
result =
|
|
278
|
-
last_tb_header_hash=peak.header_hash,
|
|
279
|
-
item_inclusion_filter=item_inclusion_filter,
|
|
280
|
-
)
|
|
281
|
-
|
|
267
|
+
result = self.mempool_manager.create_bundle_from_mempool(last_tb_header_hash=peak.header_hash)
|
|
282
268
|
if result is not None:
|
|
283
269
|
bundle, additions = result
|
|
284
270
|
generator_bundle = bundle
|
|
271
|
+
spent_coins: dict[bytes32, Coin] = {}
|
|
272
|
+
spent_coins_ids = []
|
|
285
273
|
for spend in generator_bundle.coin_spends:
|
|
286
274
|
hint_dict, _ = compute_spend_hints_and_additions(spend)
|
|
287
275
|
hints: list[tuple[bytes32, bytes]] = []
|
|
@@ -290,21 +278,25 @@ class SpendSim:
|
|
|
290
278
|
if hint_obj.hint is not None:
|
|
291
279
|
hints.append((coin_name, bytes(hint_obj.hint)))
|
|
292
280
|
await self.hint_store.add_hints(hints)
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
281
|
+
spend_id = spend.coin.name()
|
|
282
|
+
spent_coins[spend_id] = spend.coin
|
|
283
|
+
spent_coins_ids.append(spend_id)
|
|
284
|
+
tx_removals.append(spend.coin)
|
|
285
|
+
for child in additions:
|
|
286
|
+
parent = spent_coins.get(child.parent_coin_info)
|
|
287
|
+
assert parent is not None
|
|
288
|
+
same_as_parent = child.puzzle_hash == parent.puzzle_hash and child.amount == parent.amount
|
|
289
|
+
tx_additions.append((child.name(), child, same_as_parent))
|
|
290
|
+
await self.coin_store.new_block(
|
|
291
|
+
height=uint32(self.block_height + 1),
|
|
292
|
+
timestamp=self.timestamp,
|
|
293
|
+
included_reward_coins=included_reward_coins,
|
|
294
|
+
tx_additions=tx_additions,
|
|
295
|
+
tx_removals=spent_coins_ids if spent_coins_ids is not None else [],
|
|
296
|
+
)
|
|
299
297
|
# SimBlockRecord is created
|
|
300
298
|
generator: Optional[BlockGenerator] = await self.generate_transaction_generator(generator_bundle)
|
|
301
|
-
self.block_records.append(
|
|
302
|
-
SimBlockRecord.create(
|
|
303
|
-
[pool_coin, farmer_coin],
|
|
304
|
-
next_block_height,
|
|
305
|
-
self.timestamp,
|
|
306
|
-
)
|
|
307
|
-
)
|
|
299
|
+
self.block_records.append(SimBlockRecord.create(included_reward_coins, next_block_height, self.timestamp))
|
|
308
300
|
self.blocks.append(SimFullBlock(generator, next_block_height))
|
|
309
301
|
|
|
310
302
|
# block_height is incremented
|
|
@@ -314,7 +306,7 @@ class SpendSim:
|
|
|
314
306
|
await self.new_peak(spent_coins_ids)
|
|
315
307
|
|
|
316
308
|
# return some debugging data
|
|
317
|
-
return
|
|
309
|
+
return [a for _, a, _ in tx_additions], tx_removals
|
|
318
310
|
|
|
319
311
|
def get_height(self) -> uint32:
|
|
320
312
|
return self.block_height
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
-
from chia_rs import G1Element
|
|
4
|
+
from chia_rs import G1Element, SpendBundleConditions, SpendConditions
|
|
5
5
|
from chia_rs.sized_bytes import bytes32
|
|
6
6
|
from chia_rs.sized_ints import uint64
|
|
7
|
-
from clvm.casts import int_to_bytes
|
|
8
7
|
|
|
8
|
+
from chia.consensus.condition_tools import parse_sexp_to_conditions, pkm_pairs, pkm_pairs_for_conditions_dict
|
|
9
9
|
from chia.types.blockchain_format.coin import Coin
|
|
10
10
|
from chia.types.blockchain_format.program import Program
|
|
11
11
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
12
12
|
from chia.types.condition_with_args import ConditionWithArgs
|
|
13
|
-
from chia.
|
|
14
|
-
from chia.util.condition_tools import parse_sexp_to_conditions, pkm_pairs, pkm_pairs_for_conditions_dict
|
|
13
|
+
from chia.util.casts import int_to_bytes
|
|
15
14
|
from chia.util.errors import ConsensusError
|
|
16
15
|
from chia.util.hash import std_hash
|
|
17
16
|
|
|
@@ -50,6 +49,8 @@ def mk_agg_sig_conditions(
|
|
|
50
49
|
agg_sig_puzzle=agg_sig_data if opcode == ConditionOpcode.AGG_SIG_PUZZLE else [],
|
|
51
50
|
agg_sig_puzzle_amount=agg_sig_data if opcode == ConditionOpcode.AGG_SIG_PUZZLE_AMOUNT else [],
|
|
52
51
|
flags=0,
|
|
52
|
+
execution_cost=0,
|
|
53
|
+
condition_cost=0,
|
|
53
54
|
)
|
|
54
55
|
return SpendBundleConditions([spend], 0, 0, 0, None, None, agg_sig_unsafe_data, 0, 0, 0, False, 0, 0)
|
|
55
56
|
|
chia/_tests/util/test_config.py
CHANGED
|
@@ -6,9 +6,9 @@ from typing import Any, Optional
|
|
|
6
6
|
from chia_rs.sized_ints import uint16
|
|
7
7
|
|
|
8
8
|
from chia._tests.util.misc import DataCase, Marks, datacases
|
|
9
|
-
from chia.
|
|
9
|
+
from chia.protocols.outbound_message import NodeType
|
|
10
|
+
from chia.server.resolve_peer_info import get_unresolved_peer_infos, set_peer_info
|
|
10
11
|
from chia.types.peer_info import UnresolvedPeerInfo
|
|
11
|
-
from chia.util.config import get_unresolved_peer_infos, set_peer_info
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
@dataclass
|
|
@@ -8,7 +8,7 @@ from dataclasses import dataclass
|
|
|
8
8
|
from click.testing import CliRunner
|
|
9
9
|
|
|
10
10
|
from chia._tests.util.misc import Marks, datacases
|
|
11
|
-
from chia.
|
|
11
|
+
from chia.cmds.dump_keyring import dump
|
|
12
12
|
from chia.util.keychain import Keychain
|
|
13
13
|
|
|
14
14
|
output_prefix = """Attempting to dump contents of keyring file: {path}
|
|
@@ -6,38 +6,36 @@ from typing import Optional
|
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
from chia_rs import (
|
|
9
|
+
ChallengeChainSubSlot,
|
|
10
|
+
EndOfSubSlotBundle,
|
|
9
11
|
Foliage,
|
|
10
12
|
FoliageBlockData,
|
|
11
13
|
FoliageTransactionBlock,
|
|
14
|
+
FullBlock,
|
|
12
15
|
G1Element,
|
|
13
16
|
G2Element,
|
|
17
|
+
HeaderBlock,
|
|
18
|
+
InfusedChallengeChainSubSlot,
|
|
14
19
|
PoolTarget,
|
|
20
|
+
ProofOfSpace,
|
|
15
21
|
RewardChainBlock,
|
|
22
|
+
RewardChainSubSlot,
|
|
23
|
+
SubSlotProofs,
|
|
16
24
|
TransactionsInfo,
|
|
17
25
|
)
|
|
18
26
|
from chia_rs.sized_bytes import bytes32
|
|
19
27
|
from chia_rs.sized_ints import uint8, uint32, uint64, uint128
|
|
20
28
|
|
|
21
29
|
from chia._tests.util.benchmarks import rand_bytes, rand_g1, rand_g2, rand_hash, rand_vdf, rand_vdf_proof, rewards
|
|
22
|
-
from chia.
|
|
23
|
-
from chia.
|
|
24
|
-
from chia.types.blockchain_format.slots import (
|
|
25
|
-
ChallengeChainSubSlot,
|
|
26
|
-
InfusedChallengeChainSubSlot,
|
|
27
|
-
RewardChainSubSlot,
|
|
28
|
-
SubSlotProofs,
|
|
29
|
-
)
|
|
30
|
-
from chia.types.blockchain_format.vdf import VDFInfo, VDFProof
|
|
31
|
-
from chia.types.end_of_slot_bundle import EndOfSubSlotBundle
|
|
32
|
-
from chia.types.full_block import FullBlock
|
|
33
|
-
from chia.types.header_block import HeaderBlock
|
|
34
|
-
from chia.util.full_block_utils import (
|
|
30
|
+
from chia.consensus.generator_tools import get_block_header
|
|
31
|
+
from chia.full_node.full_block_utils import (
|
|
35
32
|
block_info_from_block,
|
|
36
33
|
generator_from_block,
|
|
37
34
|
get_height_and_tx_status_from_block,
|
|
38
35
|
header_block_from_block,
|
|
39
36
|
)
|
|
40
|
-
from chia.
|
|
37
|
+
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
38
|
+
from chia.types.blockchain_format.vdf import VDFInfo, VDFProof
|
|
41
39
|
|
|
42
40
|
test_g2s: list[G2Element] = [rand_g2() for _ in range(10)]
|
|
43
41
|
test_g1s: list[G1Element] = [rand_g1() for _ in range(10)]
|
chia/_tests/util/test_misc.py
CHANGED
|
@@ -13,8 +13,8 @@ from chia._tests.util.misc import RecordingWebServer
|
|
|
13
13
|
from chia._tests.util.split_managers import SplitAsyncManager, SplitManager, split_async_manager, split_manager
|
|
14
14
|
from chia._tests.wallet.test_singleton_lifecycle_fast import satisfies_hint
|
|
15
15
|
from chia.cmds.cmds_util import format_bytes, format_minutes, validate_directory_writable
|
|
16
|
+
from chia.full_node.tx_processing_queue import ValuedEvent
|
|
16
17
|
from chia.types.blockchain_format.program import Program
|
|
17
|
-
from chia.types.transaction_queue_entry import ValuedEvent
|
|
18
18
|
from chia.util.batches import to_batches
|
|
19
19
|
from chia.util.errors import InvalidPathError
|
|
20
20
|
from chia.util.timing import adjusted_timeout, backoff_times
|
|
@@ -98,7 +98,7 @@ def test_empty_lists() -> None:
|
|
|
98
98
|
@pytest.mark.parametrize("collection_type", [list, set])
|
|
99
99
|
def test_valid(collection_type: type) -> None:
|
|
100
100
|
for k in range(1, 10):
|
|
101
|
-
test_collection = collection_type([x for x in range(
|
|
101
|
+
test_collection = collection_type([x for x in range(k)])
|
|
102
102
|
for i in range(1, len(test_collection) + 1): # Test batch_size 1 to 11 (length + 1)
|
|
103
103
|
checked = 0
|
|
104
104
|
for batch in to_batches(test_collection, i):
|
|
@@ -35,8 +35,8 @@ def test_constructor_invalid_inputs(page_size: int, page_size_limit: int, except
|
|
|
35
35
|
|
|
36
36
|
def test_page_count() -> None:
|
|
37
37
|
for page_size in range(1, 10):
|
|
38
|
-
for i in range(
|
|
39
|
-
assert Paginator.create(range(
|
|
38
|
+
for i in range(10):
|
|
39
|
+
assert Paginator.create(range(i), page_size).page_count() == max(1, ceil(i / page_size))
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
@pytest.mark.parametrize(
|
|
@@ -62,10 +62,10 @@ def test_page_count() -> None:
|
|
|
62
62
|
],
|
|
63
63
|
)
|
|
64
64
|
def test_get_page_valid(length: int, page: int, page_size: int, expected_data: list[int]) -> None:
|
|
65
|
-
assert Paginator.create(list(range(
|
|
65
|
+
assert Paginator.create(list(range(length)), page_size).get_page(page) == expected_data
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
@pytest.mark.parametrize("page", [-1000, -10, -1, 5, 10, 1000])
|
|
69
69
|
def test_get_page_invalid(page: int) -> None:
|
|
70
70
|
with pytest.raises(PageOutOfBoundsError):
|
|
71
|
-
Paginator.create(range(
|
|
71
|
+
Paginator.create(range(17), 5).get_page(page)
|
|
@@ -128,7 +128,7 @@ class Request:
|
|
|
128
128
|
|
|
129
129
|
def __lt__(self, other: Request) -> bool:
|
|
130
130
|
if self.acquisition_order is None or other.acquisition_order is None:
|
|
131
|
-
raise RequestNotCompleteError
|
|
131
|
+
raise RequestNotCompleteError
|
|
132
132
|
|
|
133
133
|
return self.acquisition_order < other.acquisition_order
|
|
134
134
|
|
|
@@ -152,7 +152,7 @@ class Request:
|
|
|
152
152
|
|
|
153
153
|
def before(self, other: Request) -> bool:
|
|
154
154
|
if self.release_order is None or other.acquisition_order is None:
|
|
155
|
-
raise RequestNotCompleteError
|
|
155
|
+
raise RequestNotCompleteError
|
|
156
156
|
|
|
157
157
|
return self.release_order < other.acquisition_order
|
|
158
158
|
|
|
@@ -14,7 +14,7 @@ test_constants = ConsensusConstants(
|
|
|
14
14
|
SLOT_BLOCKS_TARGET=uint32(32),
|
|
15
15
|
MIN_BLOCKS_PER_CHALLENGE_BLOCK=uint8(16),
|
|
16
16
|
MAX_SUB_SLOT_BLOCKS=uint32(128),
|
|
17
|
-
NUM_SPS_SUB_SLOT=
|
|
17
|
+
NUM_SPS_SUB_SLOT=uint8(64),
|
|
18
18
|
SUB_SLOT_ITERS_STARTING=uint64(2**27),
|
|
19
19
|
DIFFICULTY_CONSTANT_FACTOR=uint128(2**67),
|
|
20
20
|
DIFFICULTY_STARTING=uint64(7),
|
|
@@ -23,9 +23,12 @@ test_constants = ConsensusConstants(
|
|
|
23
23
|
EPOCH_BLOCKS=uint32(4608),
|
|
24
24
|
SIGNIFICANT_BITS=uint8(8),
|
|
25
25
|
DISCRIMINANT_SIZE_BITS=uint16(1024),
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
NUMBER_ZERO_BITS_PLOT_FILTER_V1=uint8(9),
|
|
27
|
+
NUMBER_ZERO_BITS_PLOT_FILTER_V2=uint8(9),
|
|
28
|
+
MIN_PLOT_SIZE_V1=uint8(32),
|
|
29
|
+
MAX_PLOT_SIZE_V1=uint8(50),
|
|
30
|
+
MIN_PLOT_SIZE_V2=uint8(28),
|
|
31
|
+
MAX_PLOT_SIZE_V2=uint8(32),
|
|
29
32
|
SUB_SLOT_TIME_TARGET=uint16(600),
|
|
30
33
|
NUM_SP_INTERVALS_EXTRA=uint8(3),
|
|
31
34
|
MAX_FUTURE_TIME2=uint32(2 * 60),
|
|
@@ -56,11 +59,18 @@ test_constants = ConsensusConstants(
|
|
|
56
59
|
MAX_GENERATOR_SIZE=uint32(1000000),
|
|
57
60
|
MAX_GENERATOR_REF_LIST_SIZE=uint32(512),
|
|
58
61
|
POOL_SUB_SLOT_ITERS=uint64(37600000000),
|
|
59
|
-
SOFT_FORK6_HEIGHT=uint32(6800000),
|
|
60
62
|
HARD_FORK_HEIGHT=uint32(5496000),
|
|
63
|
+
HARD_FORK2_HEIGHT=uint32(0xFFFFFFFF),
|
|
64
|
+
PLOT_V1_PHASE_OUT=uint32(1179648),
|
|
61
65
|
PLOT_FILTER_128_HEIGHT=uint32(10542000),
|
|
62
66
|
PLOT_FILTER_64_HEIGHT=uint32(15592000),
|
|
63
67
|
PLOT_FILTER_32_HEIGHT=uint32(20643000),
|
|
68
|
+
PLOT_DIFFICULTY_INITIAL=uint8(2),
|
|
69
|
+
PLOT_DIFFICULTY_4_HEIGHT=uint32(0xFFFFFFFF),
|
|
70
|
+
PLOT_DIFFICULTY_5_HEIGHT=uint32(0xFFFFFFFF),
|
|
71
|
+
PLOT_DIFFICULTY_6_HEIGHT=uint32(0xFFFFFFFF),
|
|
72
|
+
PLOT_DIFFICULTY_7_HEIGHT=uint32(0xFFFFFFFF),
|
|
73
|
+
PLOT_DIFFICULTY_8_HEIGHT=uint32(0xFFFFFFFF),
|
|
64
74
|
)
|
|
65
75
|
|
|
66
76
|
|
|
@@ -8,9 +8,19 @@ from chia.consensus.default_constants import update_testnet_overrides
|
|
|
8
8
|
def test_testnet11() -> None:
|
|
9
9
|
overrides: dict[str, Any] = {}
|
|
10
10
|
update_testnet_overrides("testnet11", overrides)
|
|
11
|
-
assert overrides == {
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
assert overrides == {"MIN_PLOT_SIZE_V2": 18}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def test_min_plot_size() -> None:
|
|
15
|
+
overrides: dict[str, Any] = {"MIN_PLOT_SIZE": 18}
|
|
16
|
+
update_testnet_overrides("testnet11", overrides)
|
|
17
|
+
assert overrides == {"MIN_PLOT_SIZE_V1": 18, "MIN_PLOT_SIZE_V2": 18}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def test_max_plot_size() -> None:
|
|
21
|
+
overrides: dict[str, Any] = {"MAX_PLOT_SIZE": 32}
|
|
22
|
+
update_testnet_overrides("testnet11", overrides)
|
|
23
|
+
assert overrides == {"MAX_PLOT_SIZE_V1": 32, "MIN_PLOT_SIZE_V2": 18}
|
|
14
24
|
|
|
15
25
|
|
|
16
26
|
def test_mainnet() -> None:
|
|
@@ -11,11 +11,13 @@ from inspect import getframeinfo, stack
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import TYPE_CHECKING, Any, Callable, ClassVar, Protocol, TypeVar, cast, final
|
|
13
13
|
|
|
14
|
+
from typing_extensions import Self
|
|
15
|
+
|
|
14
16
|
import chia
|
|
15
17
|
import chia._tests
|
|
16
18
|
from chia._tests import ether
|
|
19
|
+
from chia.protocols.outbound_message import Message
|
|
17
20
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
18
|
-
from chia.server.outbound_message import Message
|
|
19
21
|
from chia.util.timing import adjusted_timeout
|
|
20
22
|
|
|
21
23
|
log = logging.getLogger(__name__)
|
|
@@ -37,7 +39,7 @@ class DataTypeProtocol(Protocol):
|
|
|
37
39
|
__match_args__: ClassVar[tuple[str, ...]] = ()
|
|
38
40
|
|
|
39
41
|
@classmethod
|
|
40
|
-
def unmarshal(cls
|
|
42
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> Self: ...
|
|
41
43
|
|
|
42
44
|
def marshal(self) -> dict[str, Any]: ...
|
|
43
45
|
|
|
@@ -5,7 +5,6 @@ from typing import Optional
|
|
|
5
5
|
import pytest
|
|
6
6
|
from chia_rs import AugSchemeMPL, G2Element, PrivateKey
|
|
7
7
|
from chia_rs.sized_ints import uint64
|
|
8
|
-
from clvm.casts import int_to_bytes
|
|
9
8
|
|
|
10
9
|
from chia._tests.clvm.benchmark_costs import cost_of_spend_bundle
|
|
11
10
|
from chia._tests.clvm.test_puzzles import secret_exponent_for_index
|
|
@@ -15,6 +14,7 @@ from chia.types.blockchain_format.coin import Coin
|
|
|
15
14
|
from chia.types.blockchain_format.program import Program
|
|
16
15
|
from chia.types.coin_spend import make_spend
|
|
17
16
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
17
|
+
from chia.util.casts import int_to_bytes
|
|
18
18
|
from chia.util.errors import Err
|
|
19
19
|
from chia.wallet.cat_wallet.cat_utils import (
|
|
20
20
|
CAT_MOD,
|
|
@@ -9,7 +9,6 @@ from clvm_tools.binutils import disassemble
|
|
|
9
9
|
|
|
10
10
|
from chia.types.blockchain_format.coin import Coin
|
|
11
11
|
from chia.types.blockchain_format.program import Program
|
|
12
|
-
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
13
12
|
from chia.types.coin_spend import make_spend
|
|
14
13
|
from chia.wallet.cat_wallet.cat_utils import CAT_MOD, construct_cat_puzzle
|
|
15
14
|
from chia.wallet.outer_puzzles import construct_puzzle, get_inner_puzzle, get_inner_solution, match_puzzle, solve_puzzle
|
|
@@ -38,7 +37,7 @@ def test_cat_outer_puzzle() -> None:
|
|
|
38
37
|
# Set up for solve
|
|
39
38
|
parent_coin = Coin(tail, double_cat_puzzle.get_tree_hash(), uint64(100))
|
|
40
39
|
child_coin = Coin(parent_coin.name(), double_cat_puzzle.get_tree_hash(), uint64(100))
|
|
41
|
-
parent_spend = make_spend(parent_coin,
|
|
40
|
+
parent_spend = make_spend(parent_coin, double_cat_puzzle, Program.to([]))
|
|
42
41
|
child_coin_as_hex: str = (
|
|
43
42
|
"0x"
|
|
44
43
|
+ child_coin.parent_coin_info.hex()
|