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
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
import logging
|
|
5
5
|
import sqlite3
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import Optional
|
|
7
7
|
|
|
8
8
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
9
|
from chia.util.db_wrapper import DBWrapper2
|
|
@@ -84,7 +84,7 @@ class NotificationStore:
|
|
|
84
84
|
)
|
|
85
85
|
await cursor.close()
|
|
86
86
|
|
|
87
|
-
async def get_notifications(self, coin_ids:
|
|
87
|
+
async def get_notifications(self, coin_ids: list[bytes32]) -> list[Notification]:
|
|
88
88
|
"""
|
|
89
89
|
Checks DB for Notification with id: id and returns it.
|
|
90
90
|
"""
|
|
@@ -111,15 +111,15 @@ class NotificationStore:
|
|
|
111
111
|
]
|
|
112
112
|
|
|
113
113
|
async def get_all_notifications(
|
|
114
|
-
self, pagination: Optional[
|
|
115
|
-
) ->
|
|
114
|
+
self, pagination: Optional[tuple[Optional[int], Optional[int]]] = None
|
|
115
|
+
) -> list[Notification]:
|
|
116
116
|
"""
|
|
117
117
|
Checks DB for Notification with id: id and returns it.
|
|
118
118
|
"""
|
|
119
119
|
if pagination is not None:
|
|
120
120
|
if pagination[1] is not None and pagination[0] is not None:
|
|
121
121
|
pagination_str = " LIMIT ?, ?"
|
|
122
|
-
pagination_params:
|
|
122
|
+
pagination_params: tuple[int, ...] = (pagination[0], pagination[1] - pagination[0])
|
|
123
123
|
elif pagination[1] is None and pagination[0] is not None:
|
|
124
124
|
pagination_str = " LIMIT ?, (SELECT COUNT(*) from notifications)"
|
|
125
125
|
pagination_params = (pagination[0],)
|
|
@@ -148,7 +148,7 @@ class NotificationStore:
|
|
|
148
148
|
for row in rows
|
|
149
149
|
]
|
|
150
150
|
|
|
151
|
-
async def delete_notifications(self, coin_ids:
|
|
151
|
+
async def delete_notifications(self, coin_ids: list[bytes32]) -> None:
|
|
152
152
|
coin_ids_str_list = "("
|
|
153
153
|
for _ in coin_ids:
|
|
154
154
|
coin_ids_str_list += "?"
|
chia/wallet/outer_puzzles.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from enum import Enum
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from chia.types.blockchain_format.program import Program
|
|
7
7
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
@@ -74,7 +74,7 @@ def create_asset_id(constructor: PuzzleInfo) -> Optional[bytes32]:
|
|
|
74
74
|
|
|
75
75
|
function_args = (match_puzzle, construct_puzzle, solve_puzzle, get_inner_puzzle, get_inner_solution)
|
|
76
76
|
|
|
77
|
-
driver_lookup:
|
|
77
|
+
driver_lookup: dict[AssetType, DriverProtocol] = {
|
|
78
78
|
AssetType.CAT: CATOuterPuzzle(*function_args),
|
|
79
79
|
AssetType.SINGLETON: SingletonOuterPuzzle(*function_args),
|
|
80
80
|
AssetType.METADATA: MetadataOuterPuzzle(*function_args),
|
chia/wallet/payment.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass, field
|
|
4
|
-
from typing import List
|
|
5
4
|
|
|
6
5
|
from chia.types.blockchain_format.program import Program
|
|
7
6
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
@@ -13,9 +12,9 @@ from chia.util.ints import uint64
|
|
|
13
12
|
class Payment:
|
|
14
13
|
puzzle_hash: bytes32
|
|
15
14
|
amount: uint64
|
|
16
|
-
memos:
|
|
15
|
+
memos: list[bytes] = field(default_factory=list)
|
|
17
16
|
|
|
18
|
-
def as_condition_args(self) ->
|
|
17
|
+
def as_condition_args(self) -> list:
|
|
19
18
|
return [self.puzzle_hash, self.amount, self.memos]
|
|
20
19
|
|
|
21
20
|
def as_condition(self) -> Program:
|
|
@@ -26,9 +25,9 @@ class Payment:
|
|
|
26
25
|
|
|
27
26
|
@classmethod
|
|
28
27
|
def from_condition(cls, condition: Program) -> Payment:
|
|
29
|
-
python_condition:
|
|
28
|
+
python_condition: list = condition.as_python()
|
|
30
29
|
puzzle_hash, amount = python_condition[1:3]
|
|
31
|
-
memos:
|
|
30
|
+
memos: list[bytes] = []
|
|
32
31
|
if len(python_condition) > 3:
|
|
33
32
|
memos = python_condition[3]
|
|
34
33
|
return cls(bytes32(puzzle_hash), uint64(int.from_bytes(amount, "big")), memos)
|
chia/wallet/puzzle_drivers.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Any,
|
|
4
|
+
from typing import Any, Optional
|
|
5
5
|
|
|
6
6
|
from clvm.casts import int_from_bytes
|
|
7
7
|
from clvm.SExp import SExp
|
|
@@ -25,7 +25,7 @@ class PuzzleInfo:
|
|
|
25
25
|
- 'also' gets its own method as it's the supported way to do recursion of PuzzleInfos
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
|
-
info:
|
|
28
|
+
info: dict[str, Any]
|
|
29
29
|
|
|
30
30
|
def __post_init__(self) -> None:
|
|
31
31
|
if "type" not in self.info:
|
|
@@ -59,7 +59,7 @@ class PuzzleInfo:
|
|
|
59
59
|
else:
|
|
60
60
|
return None
|
|
61
61
|
|
|
62
|
-
def check_type(self, types:
|
|
62
|
+
def check_type(self, types: list[str]) -> bool:
|
|
63
63
|
if types == []:
|
|
64
64
|
if self.also() is None:
|
|
65
65
|
return True
|
|
@@ -78,7 +78,7 @@ class PuzzleInfo:
|
|
|
78
78
|
|
|
79
79
|
@dataclass(frozen=True)
|
|
80
80
|
class Solver:
|
|
81
|
-
info:
|
|
81
|
+
info: dict[str, Any]
|
|
82
82
|
|
|
83
83
|
def __getitem__(self, item: str) -> Any:
|
|
84
84
|
value = self.info[item]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
from typing import Any,
|
|
4
|
+
from typing import Any, Optional, Union
|
|
5
5
|
|
|
6
6
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
7
7
|
from chia.types.blockchain_format.coin import Coin
|
|
@@ -29,11 +29,11 @@ AUGMENTED_CONDITION_HASH = AUGMENTED_CONDITION.get_tree_hash()
|
|
|
29
29
|
log = logging.getLogger(__name__)
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
def create_augmented_cond_puzzle(condition:
|
|
32
|
+
def create_augmented_cond_puzzle(condition: list[Union[int, uint64]], puzzle: Program) -> Program:
|
|
33
33
|
return AUGMENTED_CONDITION.curry(condition, puzzle)
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
def create_augmented_cond_puzzle_hash(condition:
|
|
36
|
+
def create_augmented_cond_puzzle_hash(condition: list[Any], puzzle_hash: bytes32) -> bytes32:
|
|
37
37
|
hash_of_quoted_mod_hash = calculate_hash_of_quoted_mod_hash(AUGMENTED_CONDITION_HASH)
|
|
38
38
|
hashed_args = [Program.to(condition).get_tree_hash(), puzzle_hash]
|
|
39
39
|
return curry_and_treehash(hash_of_quoted_mod_hash, *hashed_args)
|
|
@@ -76,7 +76,7 @@ def create_merkle_proof(merkle_tree: MerkleTree, puzzle_hash: bytes32) -> Progra
|
|
|
76
76
|
To spend a p2_1_of_n clawback we recreate the full merkle tree
|
|
77
77
|
The required proof is then selected from the merkle tree based on the puzzle_hash of the puzzle we
|
|
78
78
|
want to execute
|
|
79
|
-
Returns a proof: (int,
|
|
79
|
+
Returns a proof: (int, list[bytes32]) which can be provided to the p2_1_of_n solution
|
|
80
80
|
"""
|
|
81
81
|
proof = merkle_tree.generate_proof(puzzle_hash)
|
|
82
82
|
program: Program = Program.to((proof[0], proof[1][0]))
|
|
@@ -140,7 +140,7 @@ def match_clawback_puzzle(
|
|
|
140
140
|
DEFAULT_CONSTANTS.MAX_BLOCK_COST_CLVM // 8,
|
|
141
141
|
)
|
|
142
142
|
metadata: Optional[ClawbackMetadata] = None
|
|
143
|
-
new_puzhash:
|
|
143
|
+
new_puzhash: set[bytes32] = set()
|
|
144
144
|
if conditions is not None:
|
|
145
145
|
for condition in conditions:
|
|
146
146
|
if (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from chia.types.blockchain_format.program import Program
|
|
6
6
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
@@ -21,7 +21,7 @@ class ClawbackPuzzleDecorator:
|
|
|
21
21
|
time_lock: uint64
|
|
22
22
|
|
|
23
23
|
@staticmethod
|
|
24
|
-
def create(config:
|
|
24
|
+
def create(config: dict[str, Any]) -> ClawbackPuzzleDecorator:
|
|
25
25
|
self = ClawbackPuzzleDecorator()
|
|
26
26
|
self.time_lock = uint64(config.get("clawback_timelock", 0))
|
|
27
27
|
return self
|
|
@@ -34,15 +34,15 @@ class ClawbackPuzzleDecorator:
|
|
|
34
34
|
self,
|
|
35
35
|
inner_puzzle: Program,
|
|
36
36
|
target_puzzle_hash: bytes32,
|
|
37
|
-
) ->
|
|
37
|
+
) -> tuple[Program, bytes32]:
|
|
38
38
|
return (
|
|
39
39
|
self.decorate(inner_puzzle),
|
|
40
40
|
create_merkle_puzzle(self.time_lock, inner_puzzle.get_tree_hash(), target_puzzle_hash).get_tree_hash(),
|
|
41
41
|
)
|
|
42
42
|
|
|
43
43
|
def solve(
|
|
44
|
-
self, inner_puzzle: Program, primaries:
|
|
45
|
-
) ->
|
|
44
|
+
self, inner_puzzle: Program, primaries: list[Payment], inner_solution: Program
|
|
45
|
+
) -> tuple[Program, Program]:
|
|
46
46
|
# Append REMARK condition [1, "CLAWBACK", TIME_LOCK, SENDER_PUZHSAH, RECIPIENT_PUZHSAH]
|
|
47
47
|
if len(primaries) == 1:
|
|
48
48
|
recipient_puzhash = primaries[0].puzzle_hash
|
|
@@ -61,7 +61,7 @@ class ClawbackPuzzleDecorator:
|
|
|
61
61
|
return self.decorate(inner_puzzle), inner_solution
|
|
62
62
|
|
|
63
63
|
def decorate_memos(
|
|
64
|
-
self, inner_puzzle: Program, target_puzzle_hash: bytes32, memos:
|
|
65
|
-
) ->
|
|
64
|
+
self, inner_puzzle: Program, target_puzzle_hash: bytes32, memos: list[bytes]
|
|
65
|
+
) -> tuple[Program, list[bytes]]:
|
|
66
66
|
memos.insert(0, target_puzzle_hash)
|
|
67
67
|
return self.decorate(inner_puzzle), memos
|
chia/wallet/puzzles/load_clvm.py
CHANGED
|
@@ -6,7 +6,6 @@ import os
|
|
|
6
6
|
import pathlib
|
|
7
7
|
import sys
|
|
8
8
|
import tempfile
|
|
9
|
-
from typing import List
|
|
10
9
|
|
|
11
10
|
import importlib_resources
|
|
12
11
|
from clvm_tools_rs import compile_clvm as compile_clvm_rust
|
|
@@ -40,7 +39,7 @@ if "CLVM_TOOLS" in os.environ:
|
|
|
40
39
|
compile_clvm_py = compile_clvm_py_candidate
|
|
41
40
|
|
|
42
41
|
|
|
43
|
-
def compile_clvm_in_lock(full_path: pathlib.Path, output: pathlib.Path, search_paths:
|
|
42
|
+
def compile_clvm_in_lock(full_path: pathlib.Path, output: pathlib.Path, search_paths: list[pathlib.Path]):
|
|
44
43
|
# Compile using rust (default)
|
|
45
44
|
|
|
46
45
|
# Ensure path translation is done in the idiomatic way currently
|
|
@@ -75,7 +74,7 @@ def compile_clvm_in_lock(full_path: pathlib.Path, output: pathlib.Path, search_p
|
|
|
75
74
|
return res
|
|
76
75
|
|
|
77
76
|
|
|
78
|
-
def compile_clvm(full_path: pathlib.Path, output: pathlib.Path, search_paths:
|
|
77
|
+
def compile_clvm(full_path: pathlib.Path, output: pathlib.Path, search_paths: list[pathlib.Path] = []):
|
|
79
78
|
with Lockfile.create(pathlib.Path(tempfile.gettempdir()) / "clvm_compile" / full_path.name):
|
|
80
79
|
compile_clvm_in_lock(full_path, output, search_paths)
|
|
81
80
|
|
|
@@ -13,8 +13,7 @@ the doctor ordered.
|
|
|
13
13
|
from __future__ import annotations
|
|
14
14
|
|
|
15
15
|
from chia.types.blockchain_format.program import Program
|
|
16
|
-
|
|
17
|
-
from .load_clvm import load_clvm_maybe_recompile
|
|
16
|
+
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
18
17
|
|
|
19
18
|
MOD = load_clvm_maybe_recompile("p2_conditions.clsp")
|
|
20
19
|
|
|
@@ -8,8 +8,7 @@ is returned literally.
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
10
|
from chia.types.blockchain_format.program import Program
|
|
11
|
-
|
|
12
|
-
from .load_clvm import load_clvm_maybe_recompile
|
|
11
|
+
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
13
12
|
|
|
14
13
|
MOD = load_clvm_maybe_recompile("p2_delegated_conditions.clsp")
|
|
15
14
|
|
|
@@ -15,9 +15,8 @@ This roughly corresponds to bitcoin's graftroot.
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
from chia.types.blockchain_format.program import Program
|
|
18
|
-
|
|
19
|
-
from . import
|
|
20
|
-
from .load_clvm import load_clvm_maybe_recompile
|
|
18
|
+
from chia.wallet.puzzles import p2_conditions
|
|
19
|
+
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
21
20
|
|
|
22
21
|
MOD = load_clvm_maybe_recompile("p2_delegated_puzzle.clsp")
|
|
23
22
|
|
|
@@ -67,14 +67,13 @@ from clvm.casts import int_from_bytes
|
|
|
67
67
|
|
|
68
68
|
from chia.types.blockchain_format.program import Program
|
|
69
69
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
70
|
+
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
71
|
+
from chia.wallet.puzzles.p2_conditions import puzzle_for_conditions
|
|
70
72
|
from chia.wallet.util.curry_and_treehash import calculate_hash_of_quoted_mod_hash, curry_and_treehash, shatree_atom
|
|
71
73
|
|
|
72
|
-
from .load_clvm import load_clvm_maybe_recompile
|
|
73
|
-
from .p2_conditions import puzzle_for_conditions
|
|
74
|
-
|
|
75
74
|
DEFAULT_HIDDEN_PUZZLE = Program.from_bytes(bytes.fromhex("ff0980"))
|
|
76
75
|
|
|
77
|
-
DEFAULT_HIDDEN_PUZZLE_HASH = DEFAULT_HIDDEN_PUZZLE.get_tree_hash() # this puzzle `(
|
|
76
|
+
DEFAULT_HIDDEN_PUZZLE_HASH = DEFAULT_HIDDEN_PUZZLE.get_tree_hash() # this puzzle `(=)` always fails
|
|
78
77
|
|
|
79
78
|
MOD = load_clvm_maybe_recompile("p2_delegated_puzzle_or_hidden_puzzle.clsp")
|
|
80
79
|
|
|
@@ -8,8 +8,7 @@ it includes N public keys, any M of which needs to sign the delegated puzzle.
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
10
|
from chia.types.blockchain_format.program import Program
|
|
11
|
-
|
|
12
|
-
from .load_clvm import load_clvm_maybe_recompile
|
|
11
|
+
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
13
12
|
|
|
14
13
|
MOD = load_clvm_maybe_recompile("p2_m_of_n_delegate_direct.clsp")
|
|
15
14
|
|
|
@@ -9,8 +9,7 @@ from __future__ import annotations
|
|
|
9
9
|
|
|
10
10
|
from chia.types.blockchain_format.program import Program
|
|
11
11
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
12
|
-
|
|
13
|
-
from .load_clvm import load_clvm_maybe_recompile
|
|
12
|
+
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
14
13
|
|
|
15
14
|
MOD = load_clvm_maybe_recompile("p2_puzzle_hash.clsp")
|
|
16
15
|
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
6
6
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
7
7
|
from chia.util.ints import uint64
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
def make_create_coin_condition(puzzle_hash: bytes32, amount: uint64, memos:
|
|
10
|
+
def make_create_coin_condition(puzzle_hash: bytes32, amount: uint64, memos: list[bytes]) -> list[Any]:
|
|
11
11
|
condition = [ConditionOpcode.CREATE_COIN, puzzle_hash, amount]
|
|
12
12
|
if len(memos) > 0:
|
|
13
13
|
condition.append(memos)
|
|
14
14
|
return condition
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def make_reserve_fee_condition(fee: uint64) ->
|
|
17
|
+
def make_reserve_fee_condition(fee: uint64) -> list[Any]:
|
|
18
18
|
return [ConditionOpcode.RESERVE_FEE, fee]
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
def make_assert_coin_announcement(announcement_hash: bytes32) ->
|
|
21
|
+
def make_assert_coin_announcement(announcement_hash: bytes32) -> list[bytes]:
|
|
22
22
|
return [ConditionOpcode.ASSERT_COIN_ANNOUNCEMENT, announcement_hash]
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
def make_assert_puzzle_announcement(announcement_hash: bytes32) ->
|
|
25
|
+
def make_assert_puzzle_announcement(announcement_hash: bytes32) -> list[bytes]:
|
|
26
26
|
return [ConditionOpcode.ASSERT_PUZZLE_ANNOUNCEMENT, announcement_hash]
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def make_create_coin_announcement(message: bytes) ->
|
|
29
|
+
def make_create_coin_announcement(message: bytes) -> list[bytes]:
|
|
30
30
|
return [ConditionOpcode.CREATE_COIN_ANNOUNCEMENT, message]
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
def make_create_puzzle_announcement(message: bytes) ->
|
|
33
|
+
def make_create_puzzle_announcement(message: bytes) -> list[bytes]:
|
|
34
34
|
return [ConditionOpcode.CREATE_PUZZLE_ANNOUNCEMENT, message]
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Iterator
|
|
4
|
+
from typing import Optional
|
|
4
5
|
|
|
5
6
|
from chia.types.blockchain_format.coin import Coin
|
|
6
7
|
from chia.types.blockchain_format.program import Program
|
|
@@ -159,7 +160,7 @@ MELT_CONDITION = [ConditionOpcode.CREATE_COIN, 0, ESCAPE_VALUE]
|
|
|
159
160
|
#
|
|
160
161
|
|
|
161
162
|
|
|
162
|
-
def match_singleton_puzzle(puzzle: Program) ->
|
|
163
|
+
def match_singleton_puzzle(puzzle: Program) -> tuple[bool, Iterator[Program]]:
|
|
163
164
|
mod, curried_args = puzzle.uncurry()
|
|
164
165
|
if mod == SINGLETON_MOD:
|
|
165
166
|
return True, curried_args.as_iter()
|
|
@@ -185,8 +186,8 @@ def adapt_inner_puzzle_hash_to_singleton(inner_puzzle_hash: bytes32) -> bytes32:
|
|
|
185
186
|
|
|
186
187
|
# Take standard coin and amount -> launch conditions & launcher coin solution
|
|
187
188
|
def launch_conditions_and_coinsol(
|
|
188
|
-
coin: Coin, inner_puzzle: Program, comment:
|
|
189
|
-
) ->
|
|
189
|
+
coin: Coin, inner_puzzle: Program, comment: list[tuple[str, str]], amount: uint64
|
|
190
|
+
) -> tuple[list[Program], CoinSpend]:
|
|
190
191
|
if (amount % 2) == 0:
|
|
191
192
|
raise ValueError("Coin amount cannot be even. Subtract one mojo.")
|
|
192
193
|
|
|
@@ -271,7 +272,7 @@ def claim_p2_singleton(
|
|
|
271
272
|
launcher_id: bytes32,
|
|
272
273
|
delay_time: Optional[uint64] = None,
|
|
273
274
|
delay_ph: Optional[bytes32] = None,
|
|
274
|
-
) ->
|
|
275
|
+
) -> tuple[Program, Program, CoinSpend]:
|
|
275
276
|
assertion = Program.to([ConditionOpcode.ASSERT_COIN_ANNOUNCEMENT, std_hash(p2_singleton_coin.name() + b"$")])
|
|
276
277
|
announcement = Program.to([ConditionOpcode.CREATE_PUZZLE_ANNOUNCEMENT, p2_singleton_coin.name()])
|
|
277
278
|
if delay_time is None or delay_ph is None:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Iterator
|
|
4
|
+
from typing import Optional
|
|
4
5
|
|
|
5
6
|
from chia.types.blockchain_format.coin import Coin
|
|
6
7
|
from chia.types.blockchain_format.program import Program
|
|
@@ -160,7 +161,7 @@ MELT_CONDITION = [ConditionOpcode.CREATE_COIN, 0, ESCAPE_VALUE]
|
|
|
160
161
|
#
|
|
161
162
|
|
|
162
163
|
|
|
163
|
-
def match_singleton_puzzle(puzzle: UncurriedPuzzle) ->
|
|
164
|
+
def match_singleton_puzzle(puzzle: UncurriedPuzzle) -> tuple[bool, Iterator[Program]]:
|
|
164
165
|
if puzzle.mod == SINGLETON_MOD:
|
|
165
166
|
return True, puzzle.args.as_iter()
|
|
166
167
|
else:
|
|
@@ -176,9 +177,9 @@ def generate_launcher_coin(coin: Coin, amount: uint64) -> Coin:
|
|
|
176
177
|
def launch_conditions_and_coinsol(
|
|
177
178
|
coin: Coin,
|
|
178
179
|
inner_puzzle: Program,
|
|
179
|
-
comment:
|
|
180
|
+
comment: list[tuple[str, str]],
|
|
180
181
|
amount: uint64,
|
|
181
|
-
) ->
|
|
182
|
+
) -> tuple[list[Program], CoinSpend]:
|
|
182
183
|
if (amount % 2) == 0:
|
|
183
184
|
raise ValueError("Coin amount cannot be even. Subtract one mojo.")
|
|
184
185
|
|
|
@@ -309,7 +310,7 @@ def claim_p2_singleton(
|
|
|
309
310
|
launcher_id: bytes32,
|
|
310
311
|
delay_time: Optional[uint64] = None,
|
|
311
312
|
delay_ph: Optional[bytes32] = None,
|
|
312
|
-
) ->
|
|
313
|
+
) -> tuple[Program, Program, CoinSpend]:
|
|
313
314
|
assertion = Program.to([ConditionOpcode.ASSERT_COIN_ANNOUNCEMENT, std_hash(p2_singleton_coin.name() + b"$")])
|
|
314
315
|
announcement = Program.to([ConditionOpcode.CREATE_PUZZLE_ANNOUNCEMENT, p2_singleton_coin.name()])
|
|
315
316
|
if delay_time is None or delay_ph is None:
|