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 time
|
|
6
|
-
from typing import TYPE_CHECKING, Any, ClassVar,
|
|
6
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
|
|
7
7
|
|
|
8
8
|
from chia_rs import G1Element, G2Element
|
|
9
9
|
from clvm.EvalError import EvalError
|
|
@@ -88,11 +88,11 @@ class Mirror:
|
|
|
88
88
|
coin_id: bytes32
|
|
89
89
|
launcher_id: bytes32
|
|
90
90
|
amount: uint64
|
|
91
|
-
urls:
|
|
91
|
+
urls: list[bytes]
|
|
92
92
|
ours: bool
|
|
93
93
|
confirmed_at_height: Optional[uint32]
|
|
94
94
|
|
|
95
|
-
def to_json_dict(self) ->
|
|
95
|
+
def to_json_dict(self) -> dict[str, Any]:
|
|
96
96
|
return {
|
|
97
97
|
"coin_id": self.coin_id.hex(),
|
|
98
98
|
"launcher_id": self.launcher_id.hex(),
|
|
@@ -103,7 +103,7 @@ class Mirror:
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
@classmethod
|
|
106
|
-
def from_json_dict(cls, json_dict:
|
|
106
|
+
def from_json_dict(cls, json_dict: dict[str, Any]) -> Mirror:
|
|
107
107
|
return cls(
|
|
108
108
|
bytes32.from_hexstr(json_dict["coin_id"]),
|
|
109
109
|
bytes32.from_hexstr(json_dict["launcher_id"]),
|
|
@@ -180,7 +180,7 @@ class DataLayerWallet:
|
|
|
180
180
|
#############
|
|
181
181
|
|
|
182
182
|
@staticmethod
|
|
183
|
-
async def match_dl_launcher(launcher_spend: CoinSpend) ->
|
|
183
|
+
async def match_dl_launcher(launcher_spend: CoinSpend) -> tuple[bool, Optional[bytes32]]:
|
|
184
184
|
# Sanity check it's a launcher
|
|
185
185
|
if launcher_spend.puzzle_reveal.to_program() != SINGLETON_LAUNCHER:
|
|
186
186
|
return False, None
|
|
@@ -204,7 +204,7 @@ class DataLayerWallet:
|
|
|
204
204
|
return True, inner_puzhash
|
|
205
205
|
|
|
206
206
|
async def get_launcher_coin_state(self, launcher_id: bytes32, peer: WSChiaConnection) -> CoinState:
|
|
207
|
-
coin_states:
|
|
207
|
+
coin_states: list[CoinState] = await self.wallet_state_manager.wallet_node.get_coin_state(
|
|
208
208
|
[launcher_id], peer=peer
|
|
209
209
|
)
|
|
210
210
|
|
|
@@ -277,9 +277,9 @@ class DataLayerWallet:
|
|
|
277
277
|
await self.wallet_state_manager.add_interested_puzzle_hashes([launcher_id], [self.id()])
|
|
278
278
|
await self.wallet_state_manager.add_interested_coin_ids([new_singleton.name()])
|
|
279
279
|
|
|
280
|
-
new_singleton_coin_record: Optional[
|
|
281
|
-
|
|
282
|
-
)
|
|
280
|
+
new_singleton_coin_record: Optional[
|
|
281
|
+
WalletCoinRecord
|
|
282
|
+
] = await self.wallet_state_manager.coin_store.get_coin_record(new_singleton.name())
|
|
283
283
|
while new_singleton_coin_record is not None and new_singleton_coin_record.spent_block_height > 0:
|
|
284
284
|
# We've already synced this before, so we need to sort of force a resync
|
|
285
285
|
parent_spend = await fetch_coin_spend(new_singleton_coin_record.spent_block_height, new_singleton, peer)
|
|
@@ -302,17 +302,17 @@ class DataLayerWallet:
|
|
|
302
302
|
initial_root: bytes32,
|
|
303
303
|
action_scope: WalletActionScope,
|
|
304
304
|
fee: uint64 = uint64(0),
|
|
305
|
-
extra_conditions:
|
|
305
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
306
306
|
) -> bytes32:
|
|
307
307
|
"""
|
|
308
308
|
Creates the initial singleton, which includes spending an origin coin, the launcher, and creating a singleton
|
|
309
309
|
"""
|
|
310
310
|
|
|
311
|
-
coins:
|
|
311
|
+
coins: set[Coin] = await self.standard_wallet.select_coins(uint64(fee + 1), action_scope)
|
|
312
312
|
if coins is None:
|
|
313
313
|
raise ValueError("Not enough coins to create new data layer singleton")
|
|
314
314
|
|
|
315
|
-
launcher_parent: Coin =
|
|
315
|
+
launcher_parent: Coin = next(iter(coins))
|
|
316
316
|
launcher_coin: Coin = Coin(launcher_parent.name(), SINGLETON_LAUNCHER.get_tree_hash(), uint64(1))
|
|
317
317
|
|
|
318
318
|
inner_puzzle: Program = await self.standard_wallet.get_puzzle(
|
|
@@ -393,17 +393,17 @@ class DataLayerWallet:
|
|
|
393
393
|
fee: uint64 = uint64(0),
|
|
394
394
|
add_pending_singleton: bool = True,
|
|
395
395
|
announce_new_state: bool = False,
|
|
396
|
-
extra_conditions:
|
|
396
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
397
397
|
) -> None:
|
|
398
398
|
singleton_record, parent_lineage = await self.get_spendable_singleton_info(launcher_id)
|
|
399
399
|
|
|
400
400
|
if root_hash is None:
|
|
401
401
|
root_hash = singleton_record.root
|
|
402
402
|
|
|
403
|
-
inner_puzzle_derivation: Optional[
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
403
|
+
inner_puzzle_derivation: Optional[
|
|
404
|
+
DerivationRecord
|
|
405
|
+
] = await self.wallet_state_manager.puzzle_store.get_derivation_record_for_puzzle_hash(
|
|
406
|
+
singleton_record.inner_puzzle_hash
|
|
407
407
|
)
|
|
408
408
|
if inner_puzzle_derivation is None:
|
|
409
409
|
raise ValueError(f"DL Wallet does not have permission to update Singleton with launcher ID {launcher_id}")
|
|
@@ -606,13 +606,13 @@ class DataLayerWallet:
|
|
|
606
606
|
|
|
607
607
|
async def generate_signed_transaction(
|
|
608
608
|
self,
|
|
609
|
-
amounts:
|
|
610
|
-
puzzle_hashes:
|
|
609
|
+
amounts: list[uint64],
|
|
610
|
+
puzzle_hashes: list[bytes32],
|
|
611
611
|
action_scope: WalletActionScope,
|
|
612
612
|
fee: uint64 = uint64(0),
|
|
613
|
-
coins:
|
|
614
|
-
memos: Optional[
|
|
615
|
-
extra_conditions:
|
|
613
|
+
coins: set[Coin] = set(),
|
|
614
|
+
memos: Optional[list[list[bytes]]] = None, # ignored
|
|
615
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
616
616
|
**kwargs: Unpack[GSTOptionalArgs],
|
|
617
617
|
) -> None:
|
|
618
618
|
launcher_id: Optional[bytes32] = kwargs.get("launcher_id", None)
|
|
@@ -648,7 +648,7 @@ class DataLayerWallet:
|
|
|
648
648
|
extra_conditions,
|
|
649
649
|
)
|
|
650
650
|
|
|
651
|
-
async def get_spendable_singleton_info(self, launcher_id: bytes32) ->
|
|
651
|
+
async def get_spendable_singleton_info(self, launcher_id: bytes32) -> tuple[SingletonRecord, LineageProof]:
|
|
652
652
|
# First, let's make sure this is a singleton that we track and that we can spend
|
|
653
653
|
singleton_record: Optional[SingletonRecord] = await self.get_latest_singleton(launcher_id)
|
|
654
654
|
if singleton_record is None:
|
|
@@ -681,7 +681,7 @@ class DataLayerWallet:
|
|
|
681
681
|
|
|
682
682
|
return singleton_record, parent_lineage
|
|
683
683
|
|
|
684
|
-
async def get_owned_singletons(self) ->
|
|
684
|
+
async def get_owned_singletons(self) -> list[SingletonRecord]:
|
|
685
685
|
launcher_ids = await self.wallet_state_manager.dl_store.get_all_launchers()
|
|
686
686
|
|
|
687
687
|
collected = []
|
|
@@ -692,10 +692,10 @@ class DataLayerWallet:
|
|
|
692
692
|
# this is likely due to a race between getting the list and acquiring the extra data
|
|
693
693
|
continue
|
|
694
694
|
|
|
695
|
-
inner_puzzle_derivation: Optional[
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
695
|
+
inner_puzzle_derivation: Optional[
|
|
696
|
+
DerivationRecord
|
|
697
|
+
] = await self.wallet_state_manager.puzzle_store.get_derivation_record_for_puzzle_hash(
|
|
698
|
+
singleton_record.inner_puzzle_hash
|
|
699
699
|
)
|
|
700
700
|
if inner_puzzle_derivation is not None:
|
|
701
701
|
collected.append(singleton_record)
|
|
@@ -706,10 +706,10 @@ class DataLayerWallet:
|
|
|
706
706
|
self,
|
|
707
707
|
launcher_id: bytes32,
|
|
708
708
|
amount: uint64,
|
|
709
|
-
urls:
|
|
709
|
+
urls: list[bytes],
|
|
710
710
|
action_scope: WalletActionScope,
|
|
711
711
|
fee: uint64 = uint64(0),
|
|
712
|
-
extra_conditions:
|
|
712
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
713
713
|
) -> None:
|
|
714
714
|
await self.standard_wallet.generate_signed_transaction(
|
|
715
715
|
amount=amount,
|
|
@@ -727,7 +727,7 @@ class DataLayerWallet:
|
|
|
727
727
|
peer: WSChiaConnection,
|
|
728
728
|
action_scope: WalletActionScope,
|
|
729
729
|
fee: uint64 = uint64(0),
|
|
730
|
-
extra_conditions:
|
|
730
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
731
731
|
) -> None:
|
|
732
732
|
mirror: Mirror = await self.get_mirror(mirror_id)
|
|
733
733
|
mirror_coin: Coin = (await self.wallet_state_manager.wallet_node.get_coin_state([mirror.coin_id], peer=peer))[
|
|
@@ -736,9 +736,9 @@ class DataLayerWallet:
|
|
|
736
736
|
parent_coin: Coin = (
|
|
737
737
|
await self.wallet_state_manager.wallet_node.get_coin_state([mirror_coin.parent_coin_info], peer=peer)
|
|
738
738
|
)[0].coin
|
|
739
|
-
inner_puzzle_derivation: Optional[
|
|
740
|
-
|
|
741
|
-
)
|
|
739
|
+
inner_puzzle_derivation: Optional[
|
|
740
|
+
DerivationRecord
|
|
741
|
+
] = await self.wallet_state_manager.puzzle_store.get_derivation_record_for_puzzle_hash(parent_coin.puzzle_hash)
|
|
742
742
|
if inner_puzzle_derivation is None:
|
|
743
743
|
raise ValueError(f"DL Wallet does not have permission to delete mirror with ID {mirror_id}")
|
|
744
744
|
|
|
@@ -808,9 +808,7 @@ class DataLayerWallet:
|
|
|
808
808
|
)[0]
|
|
809
809
|
parent_spend = await fetch_coin_spend(height, parent_state.coin, peer)
|
|
810
810
|
assert parent_spend is not None
|
|
811
|
-
launcher_id, urls = get_mirror_info(
|
|
812
|
-
parent_spend.puzzle_reveal.to_program(), parent_spend.solution.to_program()
|
|
813
|
-
)
|
|
811
|
+
launcher_id, urls = get_mirror_info(parent_spend.puzzle_reveal, parent_spend.solution)
|
|
814
812
|
# Don't track mirrors with empty url list.
|
|
815
813
|
if not urls:
|
|
816
814
|
return
|
|
@@ -920,8 +918,8 @@ class DataLayerWallet:
|
|
|
920
918
|
min_generation: Optional[uint32] = None,
|
|
921
919
|
max_generation: Optional[uint32] = None,
|
|
922
920
|
num_results: Optional[uint32] = None,
|
|
923
|
-
) ->
|
|
924
|
-
history:
|
|
921
|
+
) -> list[SingletonRecord]:
|
|
922
|
+
history: list[SingletonRecord] = await self.wallet_state_manager.dl_store.get_all_singletons_for_launcher(
|
|
925
923
|
launcher_id,
|
|
926
924
|
min_generation,
|
|
927
925
|
max_generation,
|
|
@@ -933,13 +931,13 @@ class DataLayerWallet:
|
|
|
933
931
|
singleton: Optional[SingletonRecord] = await self.wallet_state_manager.dl_store.get_singleton_record(coin_id)
|
|
934
932
|
return singleton
|
|
935
933
|
|
|
936
|
-
async def get_singletons_by_root(self, launcher_id: bytes32, root: bytes32) ->
|
|
937
|
-
singletons:
|
|
934
|
+
async def get_singletons_by_root(self, launcher_id: bytes32, root: bytes32) -> list[SingletonRecord]:
|
|
935
|
+
singletons: list[SingletonRecord] = await self.wallet_state_manager.dl_store.get_singletons_by_root(
|
|
938
936
|
launcher_id, root
|
|
939
937
|
)
|
|
940
938
|
return singletons
|
|
941
939
|
|
|
942
|
-
async def get_mirrors_for_launcher(self, launcher_id: bytes32) ->
|
|
940
|
+
async def get_mirrors_for_launcher(self, launcher_id: bytes32) -> list[Mirror]:
|
|
943
941
|
return await self.wallet_state_manager.dl_store.get_mirrors(launcher_id)
|
|
944
942
|
|
|
945
943
|
async def get_mirror(self, coin_id: bytes32) -> Mirror:
|
|
@@ -970,19 +968,19 @@ class DataLayerWallet:
|
|
|
970
968
|
async def new_peak(self, peak: BlockRecord) -> None:
|
|
971
969
|
pass
|
|
972
970
|
|
|
973
|
-
async def get_confirmed_balance(self, record_list: Optional[
|
|
971
|
+
async def get_confirmed_balance(self, record_list: Optional[set[WalletCoinRecord]] = None) -> uint128:
|
|
974
972
|
return uint128(0)
|
|
975
973
|
|
|
976
|
-
async def get_unconfirmed_balance(self, record_list: Optional[
|
|
974
|
+
async def get_unconfirmed_balance(self, record_list: Optional[set[WalletCoinRecord]] = None) -> uint128:
|
|
977
975
|
return uint128(0)
|
|
978
976
|
|
|
979
|
-
async def get_spendable_balance(self, unspent_records: Optional[
|
|
977
|
+
async def get_spendable_balance(self, unspent_records: Optional[set[WalletCoinRecord]] = None) -> uint128:
|
|
980
978
|
return uint128(0)
|
|
981
979
|
|
|
982
980
|
async def get_pending_change_balance(self) -> uint64:
|
|
983
981
|
return uint64(0)
|
|
984
982
|
|
|
985
|
-
async def get_max_send_amount(self, unspent_records: Optional[
|
|
983
|
+
async def get_max_send_amount(self, unspent_records: Optional[set[WalletCoinRecord]] = None) -> uint128:
|
|
986
984
|
return uint128(0)
|
|
987
985
|
|
|
988
986
|
def get_name(self) -> str:
|
|
@@ -1009,7 +1007,7 @@ class DataLayerWallet:
|
|
|
1009
1007
|
}
|
|
1010
1008
|
)
|
|
1011
1009
|
|
|
1012
|
-
async def get_coins_to_offer(self, launcher_id: bytes32, *args: Any, **kwargs: Any) ->
|
|
1010
|
+
async def get_coins_to_offer(self, launcher_id: bytes32, *args: Any, **kwargs: Any) -> set[Coin]:
|
|
1013
1011
|
record = await self.get_latest_singleton(launcher_id)
|
|
1014
1012
|
if record is None:
|
|
1015
1013
|
raise ValueError(f"DL wallet does not know about launcher ID {launcher_id}")
|
|
@@ -1023,12 +1021,12 @@ class DataLayerWallet:
|
|
|
1023
1021
|
@staticmethod
|
|
1024
1022
|
async def make_update_offer(
|
|
1025
1023
|
wallet_state_manager: Any,
|
|
1026
|
-
offer_dict:
|
|
1027
|
-
driver_dict:
|
|
1024
|
+
offer_dict: dict[Optional[bytes32], int],
|
|
1025
|
+
driver_dict: dict[bytes32, PuzzleInfo],
|
|
1028
1026
|
solver: Solver,
|
|
1029
1027
|
action_scope: WalletActionScope,
|
|
1030
1028
|
fee: uint64 = uint64(0),
|
|
1031
|
-
extra_conditions:
|
|
1029
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1032
1030
|
) -> Offer:
|
|
1033
1031
|
dl_wallet = None
|
|
1034
1032
|
for wallet in wallet_state_manager.wallets.values():
|
|
@@ -1038,9 +1036,9 @@ class DataLayerWallet:
|
|
|
1038
1036
|
if dl_wallet is None:
|
|
1039
1037
|
raise ValueError("DL Wallet is not initialized")
|
|
1040
1038
|
|
|
1041
|
-
offered_launchers:
|
|
1039
|
+
offered_launchers: list[bytes32] = [k for k, v in offer_dict.items() if v < 0 and k is not None]
|
|
1042
1040
|
fee_left_to_pay: uint64 = fee
|
|
1043
|
-
all_transactions:
|
|
1041
|
+
all_transactions: list[TransactionRecord] = []
|
|
1044
1042
|
for launcher in offered_launchers:
|
|
1045
1043
|
try:
|
|
1046
1044
|
this_solver: Solver = solver[launcher.hex()]
|
|
@@ -1110,9 +1108,7 @@ class DataLayerWallet:
|
|
|
1110
1108
|
|
|
1111
1109
|
# create some dummy requested payments
|
|
1112
1110
|
requested_payments = {
|
|
1113
|
-
k: [NotarizedPayment(bytes32
|
|
1114
|
-
for k, v in offer_dict.items()
|
|
1115
|
-
if v > 0
|
|
1111
|
+
k: [NotarizedPayment(bytes32.zeros, uint64(v), [], bytes32.zeros)] for k, v in offer_dict.items() if v > 0
|
|
1116
1112
|
}
|
|
1117
1113
|
|
|
1118
1114
|
async with action_scope.use() as interface:
|
|
@@ -1127,9 +1123,9 @@ class DataLayerWallet:
|
|
|
1127
1123
|
@staticmethod
|
|
1128
1124
|
async def finish_graftroot_solutions(offer: Offer, solver: Solver) -> Offer:
|
|
1129
1125
|
# Build a mapping of launcher IDs to their new innerpuz
|
|
1130
|
-
singleton_to_innerpuzhash:
|
|
1131
|
-
singleton_to_root:
|
|
1132
|
-
all_parent_ids:
|
|
1126
|
+
singleton_to_innerpuzhash: dict[bytes32, bytes32] = {}
|
|
1127
|
+
singleton_to_root: dict[bytes32, bytes32] = {}
|
|
1128
|
+
all_parent_ids: list[bytes32] = [cs.coin.parent_coin_info for cs in offer.coin_spends()]
|
|
1133
1129
|
for spend in offer.coin_spends():
|
|
1134
1130
|
matched, curried_args = match_dl_singleton(spend.puzzle_reveal)
|
|
1135
1131
|
if matched and spend.coin.name() not in all_parent_ids:
|
|
@@ -1139,7 +1135,7 @@ class DataLayerWallet:
|
|
|
1139
1135
|
singleton_to_innerpuzhash[singleton_struct] = innerpuz.get_tree_hash()
|
|
1140
1136
|
|
|
1141
1137
|
# Create all of the new solutions
|
|
1142
|
-
new_spends:
|
|
1138
|
+
new_spends: list[CoinSpend] = []
|
|
1143
1139
|
for spend in offer.coin_spends():
|
|
1144
1140
|
solution = spend.solution.to_program()
|
|
1145
1141
|
if match_dl_singleton(spend.puzzle_reveal)[0]:
|
|
@@ -1159,7 +1155,7 @@ class DataLayerWallet:
|
|
|
1159
1155
|
for value in values:
|
|
1160
1156
|
for proof_of_inclusion in solver["proofs_of_inclusion"]:
|
|
1161
1157
|
root: str = proof_of_inclusion[0]
|
|
1162
|
-
proof:
|
|
1158
|
+
proof: tuple[int, list[bytes32]] = (proof_of_inclusion[1], proof_of_inclusion[2])
|
|
1163
1159
|
calculated_root: bytes32 = _simplify_merkle_proof(value, proof)
|
|
1164
1160
|
if (
|
|
1165
1161
|
calculated_root == bytes32.from_hexstr(root)
|
|
@@ -1196,8 +1192,8 @@ class DataLayerWallet:
|
|
|
1196
1192
|
return Offer({}, WalletSpendBundle(new_spends, offer.aggregated_signature()), offer.driver_dict)
|
|
1197
1193
|
|
|
1198
1194
|
@staticmethod
|
|
1199
|
-
async def get_offer_summary(offer: Offer) ->
|
|
1200
|
-
summary:
|
|
1195
|
+
async def get_offer_summary(offer: Offer) -> dict[str, Any]:
|
|
1196
|
+
summary: dict[str, Any] = {"offered": []}
|
|
1201
1197
|
for spend in offer.coin_spends():
|
|
1202
1198
|
solution = spend.solution.to_program()
|
|
1203
1199
|
matched, curried_args = match_dl_singleton(spend.puzzle_reveal)
|
|
@@ -1232,7 +1228,7 @@ class DataLayerWallet:
|
|
|
1232
1228
|
self,
|
|
1233
1229
|
amount: uint64,
|
|
1234
1230
|
action_scope: WalletActionScope,
|
|
1235
|
-
) ->
|
|
1231
|
+
) -> set[Coin]:
|
|
1236
1232
|
raise RuntimeError("DataLayerWallet does not support select_coins()")
|
|
1237
1233
|
|
|
1238
1234
|
async def match_hinted_coin(self, coin: Coin, hint: bytes32) -> bool:
|
|
@@ -1240,9 +1236,9 @@ class DataLayerWallet:
|
|
|
1240
1236
|
|
|
1241
1237
|
|
|
1242
1238
|
def verify_offer(
|
|
1243
|
-
maker:
|
|
1244
|
-
taker:
|
|
1245
|
-
summary:
|
|
1239
|
+
maker: tuple[StoreProofs, ...],
|
|
1240
|
+
taker: tuple[OfferStore, ...],
|
|
1241
|
+
summary: dict[str, Any],
|
|
1246
1242
|
) -> None:
|
|
1247
1243
|
# TODO: consistency in error messages
|
|
1248
1244
|
# TODO: custom exceptions
|
|
@@ -1254,7 +1250,7 @@ def verify_offer(
|
|
|
1254
1250
|
raise OfferIntegrityError("maker: repeated store id")
|
|
1255
1251
|
|
|
1256
1252
|
for store_proof in maker:
|
|
1257
|
-
proofs:
|
|
1253
|
+
proofs: list[ProofOfInclusion] = []
|
|
1258
1254
|
for reference_proof in store_proof.proofs:
|
|
1259
1255
|
proof = ProofOfInclusion(
|
|
1260
1256
|
node_hash=reference_proof.node_hash,
|