chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.6.0rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/__init__.py +8 -4
- chia/_tests/blockchain/blockchain_test_utils.py +6 -8
- chia/_tests/blockchain/test_augmented_chain.py +4 -4
- chia/_tests/blockchain/test_blockchain.py +165 -190
- chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
- chia/_tests/blockchain/test_build_chains.py +2 -4
- chia/_tests/blockchain/test_get_block_generator.py +2 -3
- chia/_tests/clvm/coin_store.py +4 -7
- chia/_tests/clvm/test_clvm_step.py +4 -4
- chia/_tests/clvm/test_puzzle_compression.py +2 -1
- chia/_tests/clvm/test_puzzle_drivers.py +2 -2
- chia/_tests/clvm/test_singletons.py +2 -4
- chia/_tests/clvm/test_spend_sim.py +2 -2
- chia/_tests/cmds/cmd_test_utils.py +27 -45
- chia/_tests/cmds/test_cmd_framework.py +6 -6
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_show.py +4 -4
- chia/_tests/cmds/test_tx_config_args.py +1 -2
- chia/_tests/cmds/testing_classes.py +4 -5
- chia/_tests/cmds/wallet/test_did.py +24 -27
- chia/_tests/cmds/wallet/test_nft.py +12 -10
- chia/_tests/cmds/wallet/test_vcs.py +11 -12
- chia/_tests/cmds/wallet/test_wallet.py +134 -89
- chia/_tests/conftest.py +66 -31
- chia/_tests/connection_utils.py +2 -2
- chia/_tests/core/cmds/test_beta.py +4 -4
- chia/_tests/core/cmds/test_keys.py +2 -3
- chia/_tests/core/cmds/test_wallet.py +15 -15
- chia/_tests/core/consensus/test_pot_iterations.py +19 -73
- chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
- chia/_tests/core/daemon/test_daemon.py +11 -11
- chia/_tests/core/data_layer/conftest.py +2 -2
- chia/_tests/core/data_layer/test_data_rpc.py +28 -14
- chia/_tests/core/data_layer/test_data_store.py +10 -10
- chia/_tests/core/data_layer/util.py +11 -11
- chia/_tests/core/farmer/test_farmer_api.py +2 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
- chia/_tests/core/full_node/stores/test_block_store.py +5 -4
- chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
- chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +3 -4
- chia/_tests/core/full_node/test_conditions.py +21 -23
- chia/_tests/core/full_node/test_full_node.py +273 -70
- chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
- chia/_tests/core/full_node/test_hint_management.py +2 -4
- chia/_tests/core/full_node/test_performance.py +0 -1
- chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
- chia/_tests/core/full_node/test_transactions.py +1 -2
- chia/_tests/core/full_node/test_tx_processing_queue.py +198 -30
- chia/_tests/core/mempool/test_mempool.py +54 -50
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
- chia/_tests/core/mempool/test_mempool_manager.py +988 -854
- chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
- chia/_tests/core/server/serve.py +7 -7
- chia/_tests/core/server/test_dos.py +1 -2
- chia/_tests/core/server/test_event_loop.py +12 -4
- chia/_tests/core/server/test_loop.py +7 -8
- chia/_tests/core/server/test_rate_limits.py +9 -8
- chia/_tests/core/server/test_server.py +61 -1
- chia/_tests/core/services/test_services.py +2 -2
- chia/_tests/core/ssl/test_ssl.py +2 -2
- chia/_tests/core/test_cost_calculation.py +2 -6
- chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
- chia/_tests/core/test_filter.py +0 -1
- chia/_tests/core/test_full_node_rpc.py +2 -2
- chia/_tests/core/test_merkle_set.py +1 -2
- chia/_tests/core/test_seeder.py +4 -4
- chia/_tests/core/util/test_config.py +4 -4
- chia/_tests/core/util/test_jsonify.py +2 -2
- chia/_tests/core/util/test_keychain.py +3 -3
- chia/_tests/core/util/test_lockfile.py +2 -1
- chia/_tests/core/util/test_log_exceptions.py +1 -2
- chia/_tests/core/util/test_streamable.py +17 -17
- chia/_tests/db/test_db_wrapper.py +3 -2
- chia/_tests/environments/wallet.py +14 -14
- chia/_tests/ether.py +4 -3
- chia/_tests/farmer_harvester/test_farmer.py +41 -24
- chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
- chia/_tests/harvester/test_harvester_api.py +11 -4
- chia/_tests/plot_sync/test_plot_sync.py +13 -11
- chia/_tests/plot_sync/test_receiver.py +11 -10
- chia/_tests/plot_sync/test_sync_simulated.py +2 -2
- chia/_tests/plot_sync/util.py +1 -2
- chia/_tests/plotting/test_plot_manager.py +7 -6
- chia/_tests/plotting/test_prover.py +30 -38
- chia/_tests/pools/test_pool_cmdline.py +4 -6
- chia/_tests/pools/test_pool_rpc.py +203 -61
- chia/_tests/pools/test_pool_wallet.py +3 -3
- chia/_tests/pools/test_wallet_pool_store.py +1 -4
- chia/_tests/process_junit.py +2 -2
- chia/_tests/rpc/test_rpc_client.py +4 -4
- chia/_tests/rpc/test_rpc_server.py +3 -3
- chia/_tests/simulation/test_simulation.py +12 -25
- chia/_tests/solver/test_solver_service.py +13 -4
- chia/_tests/testconfig.py +2 -2
- chia/_tests/timelord/test_new_peak.py +22 -11
- chia/_tests/tools/test_run_block.py +0 -2
- chia/_tests/tools/test_virtual_project.py +2 -1
- chia/_tests/util/benchmarks.py +1 -0
- chia/_tests/util/blockchain.py +38 -36
- chia/_tests/util/blockchain_mock.py +11 -11
- chia/_tests/util/build_network_protocol_files.py +2 -1
- chia/_tests/util/coin_store.py +2 -1
- chia/_tests/util/config.py +1 -1
- chia/_tests/util/db_connection.py +2 -3
- chia/_tests/util/full_sync.py +9 -11
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/get_name_puzzle_conditions.py +2 -0
- chia/_tests/util/misc.py +24 -24
- chia/_tests/util/network_protocol_data.py +20 -3
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +292 -3
- chia/_tests/util/setup_nodes.py +62 -47
- chia/_tests/util/spend_sim.py +57 -57
- chia/_tests/util/test_async_pool.py +2 -3
- chia/_tests/util/test_chia_version.py +1 -3
- chia/_tests/util/test_config.py +3 -3
- chia/_tests/util/test_full_block_utils.py +6 -3
- chia/_tests/util/test_limited_semaphore.py +1 -2
- chia/_tests/util/test_misc.py +2 -2
- chia/_tests/util/test_network.py +1 -2
- chia/_tests/util/test_priority_mutex.py +3 -3
- chia/_tests/util/test_recursive_replace.py +5 -6
- chia/_tests/util/test_replace_str_to_bytes.py +9 -10
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/time_out_assert.py +2 -2
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
- chia/_tests/wallet/conftest.py +6 -6
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
- chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
- chia/_tests/wallet/did_wallet/test_did.py +16 -6
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
- chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
- chia/_tests/wallet/sync/test_wallet_sync.py +63 -60
- chia/_tests/wallet/test_clvm_streamable.py +2 -3
- chia/_tests/wallet/test_coin_management.py +2 -2
- chia/_tests/wallet/test_conditions.py +45 -51
- chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
- chia/_tests/wallet/test_new_wallet_protocol.py +17 -17
- chia/_tests/wallet/test_notifications.py +14 -14
- chia/_tests/wallet/test_signer_protocol.py +5 -5
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
- chia/_tests/wallet/test_transaction_store.py +20 -20
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +380 -228
- chia/_tests/wallet/test_wallet_action_scope.py +4 -4
- chia/_tests/wallet/test_wallet_blockchain.py +12 -12
- chia/_tests/wallet/test_wallet_coin_store.py +3 -4
- chia/_tests/wallet/test_wallet_node.py +16 -15
- chia/_tests/wallet/test_wallet_test_framework.py +2 -1
- chia/_tests/wallet/test_wallet_utils.py +2 -3
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
- chia/_tests/wallet/wallet_block_tools.py +12 -11
- chia/_tests/weight_proof/config.py +1 -0
- chia/_tests/weight_proof/test_weight_proof.py +5 -4
- chia/apis/__init__.py +21 -0
- chia/apis/farmer_stub.py +102 -0
- chia/apis/full_node_stub.py +374 -0
- chia/apis/harvester_stub.py +57 -0
- chia/apis/introducer_stub.py +35 -0
- chia/apis/solver_stub.py +30 -0
- chia/apis/stub_protocol_registry.py +21 -0
- chia/apis/timelord_stub.py +39 -0
- chia/apis/wallet_stub.py +161 -0
- chia/cmds/beta.py +3 -4
- chia/cmds/beta_funcs.py +4 -3
- chia/cmds/check_wallet_db.py +4 -4
- chia/cmds/chia.py +1 -2
- chia/cmds/cmd_classes.py +11 -13
- chia/cmds/cmd_helpers.py +11 -11
- chia/cmds/cmds_util.py +15 -15
- chia/cmds/coin_funcs.py +6 -7
- chia/cmds/coins.py +2 -3
- chia/cmds/configure.py +1 -2
- chia/cmds/data.py +42 -42
- chia/cmds/data_funcs.py +81 -81
- chia/cmds/db.py +4 -5
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev/data.py +4 -4
- chia/cmds/dev/gh.py +5 -5
- chia/cmds/dev/installers.py +2 -3
- chia/cmds/dev/mempool.py +3 -4
- chia/cmds/dev/mempool_funcs.py +4 -4
- chia/cmds/dev/sim.py +8 -8
- chia/cmds/dump_keyring.py +3 -3
- chia/cmds/farm.py +6 -8
- chia/cmds/farm_funcs.py +25 -24
- chia/cmds/init_funcs.py +4 -4
- chia/cmds/keys.py +16 -18
- chia/cmds/keys_funcs.py +36 -36
- chia/cmds/netspace.py +1 -3
- chia/cmds/netspace_funcs.py +1 -2
- chia/cmds/options.py +3 -2
- chia/cmds/param_types.py +17 -16
- chia/cmds/passphrase.py +6 -7
- chia/cmds/passphrase_funcs.py +11 -13
- chia/cmds/peer.py +1 -3
- chia/cmds/peer_funcs.py +3 -3
- chia/cmds/plotnft.py +6 -7
- chia/cmds/plotnft_funcs.py +37 -26
- chia/cmds/rpc.py +3 -3
- chia/cmds/show.py +3 -5
- chia/cmds/show_funcs.py +9 -9
- chia/cmds/sim_funcs.py +25 -26
- chia/cmds/solver.py +1 -3
- chia/cmds/solver_funcs.py +1 -2
- chia/cmds/start_funcs.py +2 -2
- chia/cmds/wallet.py +76 -81
- chia/cmds/wallet_funcs.py +206 -177
- chia/consensus/augmented_chain.py +6 -6
- chia/consensus/block_body_validation.py +19 -15
- chia/consensus/block_creation.py +25 -21
- chia/consensus/block_header_validation.py +27 -13
- chia/consensus/block_height_map.py +3 -6
- chia/consensus/block_height_map_protocol.py +2 -2
- chia/consensus/block_record.py +2 -4
- chia/consensus/blockchain.py +58 -40
- chia/consensus/blockchain_interface.py +7 -7
- chia/consensus/coin_store_protocol.py +5 -6
- chia/consensus/condition_tools.py +4 -4
- chia/consensus/cost_calculator.py +2 -3
- chia/consensus/default_constants.py +19 -13
- chia/consensus/deficit.py +1 -3
- chia/consensus/difficulty_adjustment.py +3 -5
- chia/consensus/find_fork_point.py +2 -4
- chia/consensus/full_block_to_block_record.py +11 -13
- chia/consensus/generator_tools.py +2 -3
- chia/consensus/get_block_challenge.py +50 -26
- chia/consensus/get_block_generator.py +2 -3
- chia/consensus/make_sub_epoch_summary.py +8 -7
- chia/consensus/multiprocess_validation.py +31 -20
- chia/consensus/pos_quality.py +6 -23
- chia/consensus/pot_iterations.py +17 -44
- chia/consensus/signage_point.py +4 -5
- chia/consensus/vdf_info_computation.py +2 -4
- chia/daemon/client.py +8 -8
- chia/daemon/keychain_proxy.py +31 -37
- chia/daemon/server.py +32 -33
- chia/daemon/windows_signal.py +4 -3
- chia/data_layer/data_layer.py +86 -77
- chia/data_layer/data_layer_rpc_api.py +9 -9
- chia/data_layer/data_layer_rpc_client.py +13 -15
- chia/data_layer/data_layer_server.py +3 -3
- chia/data_layer/data_layer_util.py +14 -14
- chia/data_layer/data_layer_wallet.py +94 -101
- chia/data_layer/data_store.py +50 -50
- chia/data_layer/dl_wallet_store.py +9 -12
- chia/data_layer/download_data.py +8 -9
- chia/data_layer/s3_plugin_service.py +5 -9
- chia/data_layer/start_data_layer.py +5 -5
- chia/farmer/farmer.py +31 -31
- chia/farmer/farmer_api.py +45 -33
- chia/farmer/farmer_rpc_api.py +5 -4
- chia/farmer/farmer_rpc_client.py +6 -6
- chia/farmer/start_farmer.py +6 -6
- chia/full_node/block_store.py +13 -16
- chia/full_node/check_fork_next_block.py +1 -2
- chia/full_node/coin_store.py +15 -16
- chia/full_node/eligible_coin_spends.py +3 -3
- chia/full_node/fee_estimate_store.py +2 -3
- chia/full_node/fee_tracker.py +1 -2
- chia/full_node/full_block_utils.py +4 -4
- chia/full_node/full_node.py +239 -223
- chia/full_node/full_node_api.py +197 -152
- chia/full_node/full_node_rpc_api.py +34 -32
- chia/full_node/full_node_rpc_client.py +18 -19
- chia/full_node/full_node_store.py +45 -43
- chia/full_node/hard_fork_utils.py +44 -0
- chia/full_node/hint_management.py +2 -2
- chia/full_node/mempool.py +17 -19
- chia/full_node/mempool_manager.py +89 -42
- chia/full_node/pending_tx_cache.py +2 -3
- chia/full_node/start_full_node.py +5 -5
- chia/full_node/sync_store.py +3 -4
- chia/full_node/tx_processing_queue.py +120 -36
- chia/full_node/weight_proof.py +61 -48
- chia/harvester/harvester.py +25 -24
- chia/harvester/harvester_api.py +61 -38
- chia/harvester/harvester_rpc_api.py +10 -10
- chia/harvester/start_harvester.py +4 -4
- chia/introducer/introducer.py +3 -3
- chia/introducer/introducer_api.py +6 -4
- chia/introducer/start_introducer.py +4 -4
- chia/legacy/keyring.py +3 -3
- chia/plot_sync/delta.py +1 -2
- chia/plot_sync/receiver.py +20 -17
- chia/plot_sync/sender.py +15 -10
- chia/plotters/bladebit.py +7 -7
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +4 -4
- chia/plotters/plotters.py +4 -4
- chia/plotters/plotters_util.py +3 -3
- chia/plotting/cache.py +20 -14
- chia/plotting/check_plots.py +26 -35
- chia/plotting/create_plots.py +22 -23
- chia/plotting/manager.py +21 -14
- chia/plotting/prover.py +59 -42
- chia/plotting/util.py +16 -16
- chia/pools/pool_config.py +2 -1
- chia/pools/pool_puzzles.py +11 -12
- chia/pools/pool_wallet.py +34 -57
- chia/pools/pool_wallet_info.py +39 -10
- chia/protocols/farmer_protocol.py +8 -9
- chia/protocols/fee_estimate.py +3 -4
- chia/protocols/full_node_protocol.py +3 -4
- chia/protocols/harvester_protocol.py +27 -15
- chia/protocols/outbound_message.py +3 -3
- chia/protocols/pool_protocol.py +8 -9
- chia/protocols/shared_protocol.py +1 -2
- chia/protocols/solver_protocol.py +9 -2
- chia/protocols/timelord_protocol.py +4 -7
- chia/protocols/wallet_protocol.py +11 -12
- chia/rpc/rpc_client.py +9 -9
- chia/rpc/rpc_server.py +17 -17
- chia/rpc/util.py +2 -2
- chia/seeder/crawler.py +8 -8
- chia/seeder/crawler_api.py +21 -27
- chia/seeder/crawler_rpc_api.py +2 -2
- chia/seeder/dns_server.py +21 -21
- chia/seeder/start_crawler.py +4 -4
- chia/server/address_manager.py +15 -16
- chia/server/api_protocol.py +11 -11
- chia/server/chia_policy.py +46 -26
- chia/server/introducer_peers.py +2 -3
- chia/server/node_discovery.py +19 -19
- chia/server/rate_limit_numbers.py +4 -5
- chia/server/rate_limits.py +4 -4
- chia/server/resolve_peer_info.py +4 -4
- chia/server/server.py +49 -52
- chia/server/signal_handlers.py +6 -6
- chia/server/start_service.py +17 -17
- chia/server/upnp.py +4 -6
- chia/server/ws_connection.py +52 -37
- chia/simulator/add_blocks_in_batches.py +1 -3
- chia/simulator/block_tools.py +312 -200
- chia/simulator/full_node_simulator.py +56 -35
- chia/simulator/keyring.py +2 -3
- chia/simulator/setup_services.py +15 -15
- chia/simulator/simulator_full_node_rpc_api.py +1 -2
- chia/simulator/simulator_full_node_rpc_client.py +1 -2
- chia/simulator/simulator_protocol.py +1 -2
- chia/simulator/simulator_test_tools.py +3 -3
- chia/simulator/start_simulator.py +7 -7
- chia/simulator/wallet_tools.py +10 -10
- chia/solver/solver.py +10 -10
- chia/solver/solver_api.py +10 -8
- chia/solver/solver_rpc_api.py +2 -2
- chia/solver/start_solver.py +4 -4
- chia/ssl/cacert.pem +148 -90
- chia/ssl/chia_ca.crt +14 -10
- chia/ssl/chia_ca_old.crt +19 -0
- chia/ssl/create_ssl.py +4 -4
- chia/ssl/renewedselfsignedca.conf +4 -0
- chia/ssl/ssl_check.py +1 -2
- chia/timelord/iters_from_block.py +1 -4
- chia/timelord/start_timelord.py +4 -4
- chia/timelord/timelord.py +44 -40
- chia/timelord/timelord_api.py +6 -4
- chia/timelord/timelord_launcher.py +2 -2
- chia/timelord/timelord_rpc_api.py +2 -2
- chia/timelord/timelord_state.py +11 -12
- chia/types/block_protocol.py +1 -3
- chia/types/blockchain_format/coin.py +1 -3
- chia/types/blockchain_format/program.py +11 -8
- chia/types/blockchain_format/proof_of_space.py +123 -76
- chia/types/blockchain_format/tree_hash.py +3 -3
- chia/types/blockchain_format/vdf.py +1 -2
- chia/types/coin_spend.py +3 -3
- chia/types/mempool_item.py +5 -5
- chia/types/mempool_submission_status.py +2 -3
- chia/types/peer_info.py +1 -2
- chia/types/unfinished_header_block.py +3 -4
- chia/types/validation_state.py +1 -2
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +5 -5
- chia/util/bech32m.py +1 -2
- chia/util/beta_metrics.py +2 -2
- chia/util/block_cache.py +4 -4
- chia/util/chia_logging.py +2 -2
- chia/util/chia_version.py +1 -2
- chia/util/config.py +15 -16
- chia/util/db_wrapper.py +26 -27
- chia/util/default_root.py +1 -2
- chia/util/errors.py +3 -3
- chia/util/file_keyring.py +14 -14
- chia/util/files.py +2 -3
- chia/util/hash.py +4 -4
- chia/util/initial-config.yaml +4 -5
- chia/util/inline_executor.py +2 -1
- chia/util/ip_address.py +1 -2
- chia/util/keychain.py +25 -27
- chia/util/keyring_wrapper.py +18 -19
- chia/util/lock.py +3 -4
- chia/util/log_exceptions.py +1 -2
- chia/util/lru_cache.py +2 -2
- chia/util/network.py +6 -6
- chia/util/path.py +2 -3
- chia/util/priority_mutex.py +2 -2
- chia/util/profiler.py +1 -2
- chia/util/safe_cancel_task.py +1 -2
- chia/util/streamable.py +24 -10
- chia/util/task_referencer.py +1 -1
- chia/util/timing.py +3 -3
- chia/util/virtual_project_analysis.py +6 -5
- chia/util/ws_message.py +2 -2
- chia/wallet/cat_wallet/cat_info.py +3 -4
- chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
- chia/wallet/cat_wallet/cat_utils.py +3 -4
- chia/wallet/cat_wallet/cat_wallet.py +61 -83
- chia/wallet/cat_wallet/lineage_store.py +3 -4
- chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
- chia/wallet/coin_selection.py +9 -10
- chia/wallet/conditions.py +142 -106
- chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
- chia/wallet/derivation_record.py +1 -2
- chia/wallet/derive_keys.py +2 -4
- chia/wallet/did_wallet/did_info.py +10 -11
- chia/wallet/did_wallet/did_wallet.py +36 -82
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
- chia/wallet/driver_protocol.py +5 -7
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
- chia/wallet/nft_wallet/nft_info.py +8 -9
- chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
- chia/wallet/nft_wallet/nft_wallet.py +79 -116
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
- chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
- chia/wallet/nft_wallet/uncurry_nft.py +10 -11
- chia/wallet/notification_manager.py +3 -3
- chia/wallet/notification_store.py +44 -61
- chia/wallet/outer_puzzles.py +6 -7
- chia/wallet/puzzle_drivers.py +34 -6
- chia/wallet/puzzles/clawback/drivers.py +6 -6
- chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
- chia/wallet/puzzles/load_clvm.py +1 -1
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
- chia/wallet/puzzles/singleton_top_layer.py +2 -3
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
- chia/wallet/puzzles/tails.py +3 -3
- chia/wallet/singleton.py +5 -7
- chia/wallet/singleton_record.py +3 -3
- chia/wallet/start_wallet.py +5 -5
- chia/wallet/trade_manager.py +37 -58
- chia/wallet/trade_record.py +4 -4
- chia/wallet/trading/offer.py +59 -46
- chia/wallet/trading/trade_store.py +8 -9
- chia/wallet/transaction_record.py +8 -8
- chia/wallet/uncurried_puzzle.py +1 -2
- chia/wallet/util/clvm_streamable.py +12 -12
- chia/wallet/util/compute_hints.py +4 -5
- chia/wallet/util/curry_and_treehash.py +1 -2
- chia/wallet/util/merkle_tree.py +2 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/wallet/util/signing.py +85 -0
- chia/wallet/util/tx_config.py +15 -6
- chia/wallet/util/wallet_sync_utils.py +14 -16
- chia/wallet/util/wallet_types.py +2 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
- chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
- chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
- chia/wallet/vc_wallet/vc_drivers.py +27 -27
- chia/wallet/vc_wallet/vc_store.py +5 -6
- chia/wallet/vc_wallet/vc_wallet.py +33 -61
- chia/wallet/wallet.py +50 -78
- chia/wallet/wallet_action_scope.py +11 -11
- chia/wallet/wallet_blockchain.py +12 -12
- chia/wallet/wallet_coin_record.py +12 -6
- chia/wallet/wallet_coin_store.py +24 -25
- chia/wallet/wallet_interested_store.py +3 -5
- chia/wallet/wallet_nft_store.py +10 -11
- chia/wallet/wallet_node.py +53 -61
- chia/wallet/wallet_node_api.py +5 -3
- chia/wallet/wallet_protocol.py +23 -23
- chia/wallet/wallet_puzzle_store.py +15 -18
- chia/wallet/wallet_request_types.py +778 -114
- chia/wallet/wallet_retry_store.py +1 -3
- chia/wallet/wallet_rpc_api.py +572 -909
- chia/wallet/wallet_rpc_client.py +87 -279
- chia/wallet/wallet_singleton_store.py +3 -4
- chia/wallet/wallet_state_manager.py +332 -106
- chia/wallet/wallet_transaction_store.py +11 -14
- chia/wallet/wallet_user_store.py +4 -6
- chia/wallet/wallet_weight_proof_handler.py +4 -4
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +6 -5
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
- chia/apis.py +0 -21
- chia/consensus/check_time_locks.py +0 -57
- chia/data_layer/puzzles/__init__.py +0 -0
- chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
- chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
- chia/types/coin_record.py +0 -44
- chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
- {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from collections.abc import Iterator
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from chia_puzzles_py.programs import (
|
|
7
6
|
P2_SINGLETON,
|
|
@@ -238,7 +237,7 @@ def launch_conditions_and_coinsol(
|
|
|
238
237
|
def lineage_proof_for_coinsol(coin_spend: CoinSpend) -> LineageProof:
|
|
239
238
|
parent_name: bytes32 = coin_spend.coin.parent_coin_info
|
|
240
239
|
|
|
241
|
-
inner_puzzle_hash:
|
|
240
|
+
inner_puzzle_hash: bytes32 | None = None
|
|
242
241
|
if coin_spend.coin.puzzle_hash != SINGLETON_LAUNCHER_HASH:
|
|
243
242
|
full_puzzle = Program.from_bytes(bytes(coin_spend.puzzle_reveal))
|
|
244
243
|
r = full_puzzle.uncurry()
|
|
@@ -321,8 +320,8 @@ def claim_p2_singleton(
|
|
|
321
320
|
p2_singleton_coin: Coin,
|
|
322
321
|
singleton_inner_puzhash: bytes32,
|
|
323
322
|
launcher_id: bytes32,
|
|
324
|
-
delay_time:
|
|
325
|
-
delay_ph:
|
|
323
|
+
delay_time: uint64 | None = None,
|
|
324
|
+
delay_ph: bytes32 | None = None,
|
|
326
325
|
) -> tuple[Program, Program, CoinSpend]:
|
|
327
326
|
assertion = Program.to([ConditionOpcode.ASSERT_COIN_ANNOUNCEMENT, std_hash(p2_singleton_coin.name() + b"$")])
|
|
328
327
|
announcement = Program.to([ConditionOpcode.CREATE_PUZZLE_ANNOUNCEMENT, p2_singleton_coin.name()])
|
chia/wallet/puzzles/tails.py
CHANGED
|
@@ -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_puzzles_py.programs import (
|
|
6
6
|
DELEGATED_TAIL,
|
|
@@ -98,7 +98,7 @@ class GenesisById(LimitationsProgram):
|
|
|
98
98
|
tail: Program = cls.construct([Program.to(origin_id)])
|
|
99
99
|
|
|
100
100
|
wallet.lineage_store = await CATLineageStore.create(
|
|
101
|
-
wallet.wallet_state_manager.db_wrapper, tail.get_tree_hash()
|
|
101
|
+
wallet.wallet_state_manager.db_wrapper, tail.get_tree_hash()
|
|
102
102
|
)
|
|
103
103
|
await wallet.add_lineage(origin_id, LineageProof())
|
|
104
104
|
|
|
@@ -229,7 +229,7 @@ ALL_LIMITATIONS_PROGRAMS: dict[str, Any] = {
|
|
|
229
229
|
}
|
|
230
230
|
|
|
231
231
|
|
|
232
|
-
def match_limitations_program(limitations_program: Program) -> tuple[
|
|
232
|
+
def match_limitations_program(limitations_program: Program) -> tuple[LimitationsProgram | None, list[Program]]:
|
|
233
233
|
uncurried_mod, curried_args = limitations_program.uncurry()
|
|
234
234
|
for key, lp in ALL_LIMITATIONS_PROGRAMS.items():
|
|
235
235
|
matched, args = lp.match(uncurried_mod, curried_args)
|
chia/wallet/singleton.py
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional, Union
|
|
4
|
-
|
|
5
3
|
from chia_puzzles_py.programs import (
|
|
6
4
|
SINGLETON_LAUNCHER,
|
|
7
5
|
SINGLETON_LAUNCHER_HASH,
|
|
@@ -31,7 +29,7 @@ SINGLETON_LAUNCHER_PUZZLE_HASH = bytes32(SINGLETON_LAUNCHER_HASH)
|
|
|
31
29
|
SINGLETON_LAUNCHER_PUZZLE_HASH_TREE_HASH = shatree_atom(SINGLETON_LAUNCHER_PUZZLE_HASH)
|
|
32
30
|
|
|
33
31
|
|
|
34
|
-
def get_inner_puzzle_from_singleton(puzzle:
|
|
32
|
+
def get_inner_puzzle_from_singleton(puzzle: Program | SerializedProgram) -> Program | None:
|
|
35
33
|
"""
|
|
36
34
|
Extract the inner puzzle of a singleton
|
|
37
35
|
:param puzzle: Singleton puzzle
|
|
@@ -47,7 +45,7 @@ def get_inner_puzzle_from_singleton(puzzle: Union[Program, SerializedProgram]) -
|
|
|
47
45
|
return Program(INNER_PUZZLE)
|
|
48
46
|
|
|
49
47
|
|
|
50
|
-
def get_singleton_id_from_puzzle(puzzle:
|
|
48
|
+
def get_singleton_id_from_puzzle(puzzle: Program | SerializedProgram) -> bytes32 | None:
|
|
51
49
|
"""
|
|
52
50
|
Extract the singleton ID from a singleton puzzle
|
|
53
51
|
:param puzzle: Singleton puzzle
|
|
@@ -63,7 +61,7 @@ def get_singleton_id_from_puzzle(puzzle: Union[Program, SerializedProgram]) -> O
|
|
|
63
61
|
return bytes32(Program(SINGLETON_STRUCT).rest().first().as_atom())
|
|
64
62
|
|
|
65
63
|
|
|
66
|
-
def is_singleton(inner_f:
|
|
64
|
+
def is_singleton(inner_f: Program | SerializedProgram) -> bool:
|
|
67
65
|
"""
|
|
68
66
|
Check if a puzzle is a singleton mod
|
|
69
67
|
:param inner_f: puzzle
|
|
@@ -88,7 +86,7 @@ def create_singleton_puzzle_hash(innerpuz_hash: bytes32, launcher_id: bytes32) -
|
|
|
88
86
|
return curry_and_treehash(SINGLETON_TOP_LAYER_MOD_HASH_QUOTED, singleton_struct, innerpuz_hash)
|
|
89
87
|
|
|
90
88
|
|
|
91
|
-
def create_singleton_puzzle(innerpuz:
|
|
89
|
+
def create_singleton_puzzle(innerpuz: Program | SerializedProgram, launcher_id: bytes32) -> Program:
|
|
92
90
|
"""
|
|
93
91
|
Create a full Singleton puzzle
|
|
94
92
|
:param innerpuz: Singleton inner puzzle
|
|
@@ -100,7 +98,7 @@ def create_singleton_puzzle(innerpuz: Union[Program, SerializedProgram], launche
|
|
|
100
98
|
return SINGLETON_TOP_LAYER_MOD.curry(singleton_struct, innerpuz)
|
|
101
99
|
|
|
102
100
|
|
|
103
|
-
def get_most_recent_singleton_coin_from_coin_spend(coin_sol: CoinSpend) ->
|
|
101
|
+
def get_most_recent_singleton_coin_from_coin_spend(coin_sol: CoinSpend) -> Coin | None:
|
|
104
102
|
additions: list[Coin] = compute_additions(coin_sol)
|
|
105
103
|
for coin in additions:
|
|
106
104
|
if coin.amount % 2 == 1:
|
chia/wallet/singleton_record.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
|
|
5
5
|
|
|
6
6
|
from chia_rs import CoinSpend
|
|
7
7
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -21,11 +21,11 @@ class SingletonRecord:
|
|
|
21
21
|
singleton_id: bytes32
|
|
22
22
|
wallet_id: uint32
|
|
23
23
|
parent_coinspend: CoinSpend
|
|
24
|
-
inner_puzzle_hash:
|
|
24
|
+
inner_puzzle_hash: bytes32 | None
|
|
25
25
|
pending: bool
|
|
26
26
|
removed_height: int
|
|
27
27
|
lineage_proof: LineageProof
|
|
28
|
-
custom_data:
|
|
28
|
+
custom_data: Any | None
|
|
29
29
|
|
|
30
30
|
def name(self) -> bytes32: # pragma: no cover
|
|
31
31
|
return self.coin.name()
|
chia/wallet/start_wallet.py
CHANGED
|
@@ -4,11 +4,11 @@ import os
|
|
|
4
4
|
import pathlib
|
|
5
5
|
import sys
|
|
6
6
|
from multiprocessing import freeze_support
|
|
7
|
-
from typing import Any
|
|
7
|
+
from typing import Any
|
|
8
8
|
|
|
9
9
|
from chia_rs import ConsensusConstants
|
|
10
10
|
|
|
11
|
-
from chia.apis import
|
|
11
|
+
from chia.apis import StubMetadataRegistry
|
|
12
12
|
from chia.consensus.constants import replace_str_to_bytes
|
|
13
13
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
|
|
14
14
|
from chia.protocols.outbound_message import NodeType
|
|
@@ -36,7 +36,7 @@ def create_wallet_service(
|
|
|
36
36
|
root_path: pathlib.Path,
|
|
37
37
|
config: dict[str, Any],
|
|
38
38
|
consensus_constants: ConsensusConstants,
|
|
39
|
-
keychain:
|
|
39
|
+
keychain: Keychain | None = None,
|
|
40
40
|
connect_to_daemon: bool = True,
|
|
41
41
|
) -> WalletService:
|
|
42
42
|
service_config = config[SERVICE_NAME]
|
|
@@ -55,7 +55,7 @@ def create_wallet_service(
|
|
|
55
55
|
)
|
|
56
56
|
peer_api = WalletNodeAPI(node)
|
|
57
57
|
|
|
58
|
-
rpc_info:
|
|
58
|
+
rpc_info: RpcInfo[WalletRpcApi] | None = None
|
|
59
59
|
if service_config.get("start_rpc_server", True):
|
|
60
60
|
rpc_info = (WalletRpcApi, service_config["rpc_port"])
|
|
61
61
|
|
|
@@ -72,7 +72,7 @@ def create_wallet_service(
|
|
|
72
72
|
network_id=network_id,
|
|
73
73
|
rpc_info=rpc_info,
|
|
74
74
|
connect_to_daemon=connect_to_daemon,
|
|
75
|
-
|
|
75
|
+
stub_metadata_for_type=StubMetadataRegistry,
|
|
76
76
|
)
|
|
77
77
|
|
|
78
78
|
|
chia/wallet/trade_manager.py
CHANGED
|
@@ -4,14 +4,13 @@ import dataclasses
|
|
|
4
4
|
import logging
|
|
5
5
|
import time
|
|
6
6
|
from collections import deque
|
|
7
|
-
from typing import TYPE_CHECKING, Any,
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Literal
|
|
8
8
|
|
|
9
9
|
from chia_rs import CoinState
|
|
10
10
|
from chia_rs.sized_bytes import bytes32
|
|
11
11
|
from chia_rs.sized_ints import uint32, uint64
|
|
12
|
-
from typing_extensions import Literal
|
|
13
12
|
|
|
14
|
-
from chia.data_layer.data_layer_wallet import DataLayerWallet
|
|
13
|
+
from chia.data_layer.data_layer_wallet import DataLayerSummary, DataLayerWallet
|
|
15
14
|
from chia.server.ws_connection import WSChiaConnection
|
|
16
15
|
from chia.types.blockchain_format.coin import Coin, coin_as_list
|
|
17
16
|
from chia.types.blockchain_format.program import Program, run
|
|
@@ -94,13 +93,13 @@ class TradeManager:
|
|
|
94
93
|
wallet_state_manager: WalletStateManager
|
|
95
94
|
log: logging.Logger
|
|
96
95
|
trade_store: TradeStore
|
|
97
|
-
most_recently_deserialized_trade:
|
|
96
|
+
most_recently_deserialized_trade: tuple[bytes32, Offer] | None
|
|
98
97
|
|
|
99
98
|
@staticmethod
|
|
100
99
|
async def create(
|
|
101
100
|
wallet_state_manager: Any,
|
|
102
101
|
db_wrapper: DBWrapper2,
|
|
103
|
-
name:
|
|
102
|
+
name: str | None = None,
|
|
104
103
|
) -> TradeManager:
|
|
105
104
|
self = TradeManager()
|
|
106
105
|
if name:
|
|
@@ -140,7 +139,7 @@ class TradeManager:
|
|
|
140
139
|
return trades_by_coin
|
|
141
140
|
|
|
142
141
|
async def coins_of_interest_farmed(
|
|
143
|
-
self, coin_state: CoinState, fork_height:
|
|
142
|
+
self, coin_state: CoinState, fork_height: uint32 | None, peer: WSChiaConnection
|
|
144
143
|
) -> None:
|
|
145
144
|
"""
|
|
146
145
|
If both our coins and other coins in trade got removed that means that trade was successfully executed
|
|
@@ -233,7 +232,7 @@ class TradeManager:
|
|
|
233
232
|
all: list[TradeRecord] = await self.trade_store.get_all_trades()
|
|
234
233
|
return all
|
|
235
234
|
|
|
236
|
-
async def get_trade_by_id(self, trade_id: bytes32) ->
|
|
235
|
+
async def get_trade_by_id(self, trade_id: bytes32) -> TradeRecord | None:
|
|
237
236
|
record = await self.trade_store.get_trade_record(trade_id)
|
|
238
237
|
return record
|
|
239
238
|
|
|
@@ -421,15 +420,15 @@ class TradeManager:
|
|
|
421
420
|
|
|
422
421
|
async def create_offer_for_ids(
|
|
423
422
|
self,
|
|
424
|
-
offer: dict[
|
|
423
|
+
offer: dict[int | bytes32, int],
|
|
425
424
|
action_scope: WalletActionScope,
|
|
426
|
-
driver_dict:
|
|
427
|
-
solver:
|
|
425
|
+
driver_dict: dict[bytes32, PuzzleInfo] | None = None,
|
|
426
|
+
solver: Solver | None = None,
|
|
428
427
|
fee: uint64 = uint64(0),
|
|
429
428
|
validate_only: bool = False,
|
|
430
429
|
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
431
430
|
taking: bool = False,
|
|
432
|
-
) ->
|
|
431
|
+
) -> tuple[Literal[True], TradeRecord, None]:
|
|
433
432
|
if driver_dict is None:
|
|
434
433
|
driver_dict = {}
|
|
435
434
|
if solver is None:
|
|
@@ -471,14 +470,14 @@ class TradeManager:
|
|
|
471
470
|
|
|
472
471
|
async def _create_offer_for_ids(
|
|
473
472
|
self,
|
|
474
|
-
offer_dict: dict[
|
|
473
|
+
offer_dict: dict[int | bytes32, int],
|
|
475
474
|
action_scope: WalletActionScope,
|
|
476
|
-
driver_dict:
|
|
477
|
-
solver:
|
|
475
|
+
driver_dict: dict[bytes32, PuzzleInfo] | None = None,
|
|
476
|
+
solver: Solver | None = None,
|
|
478
477
|
fee: uint64 = uint64(0),
|
|
479
478
|
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
480
479
|
taking: bool = False,
|
|
481
|
-
) ->
|
|
480
|
+
) -> tuple[Literal[True], Offer, None] | tuple[Literal[False], None, str]:
|
|
482
481
|
"""
|
|
483
482
|
Offer is dictionary of wallet ids and amount
|
|
484
483
|
"""
|
|
@@ -487,11 +486,11 @@ class TradeManager:
|
|
|
487
486
|
if solver is None:
|
|
488
487
|
solver = Solver({})
|
|
489
488
|
try:
|
|
490
|
-
coins_to_offer: dict[
|
|
491
|
-
requested_payments: dict[
|
|
492
|
-
offer_dict_no_ints: dict[
|
|
489
|
+
coins_to_offer: dict[int | bytes32, set[Coin]] = {}
|
|
490
|
+
requested_payments: dict[bytes32 | None, list[CreateCoin]] = {}
|
|
491
|
+
offer_dict_no_ints: dict[bytes32 | None, int] = {}
|
|
493
492
|
for id, amount in offer_dict.items():
|
|
494
|
-
asset_id:
|
|
493
|
+
asset_id: bytes32 | None = None
|
|
495
494
|
# asset_id can either be none if asset is XCH or
|
|
496
495
|
# bytes32 if another asset (e.g. NFT, CAT)
|
|
497
496
|
if amount > 0:
|
|
@@ -505,7 +504,7 @@ class TradeManager:
|
|
|
505
504
|
if wallet.type() != WalletType.STANDARD_WALLET:
|
|
506
505
|
if callable(getattr(wallet, "get_asset_id", None)): # ATTENTION: new wallets
|
|
507
506
|
assert isinstance(wallet, CATWallet)
|
|
508
|
-
asset_id =
|
|
507
|
+
asset_id = wallet.get_asset_id()
|
|
509
508
|
memos = [p2_ph]
|
|
510
509
|
else:
|
|
511
510
|
raise ValueError(
|
|
@@ -513,7 +512,7 @@ class TradeManager:
|
|
|
513
512
|
)
|
|
514
513
|
else:
|
|
515
514
|
asset_id = id
|
|
516
|
-
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id
|
|
515
|
+
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id)
|
|
517
516
|
memos = [p2_ph]
|
|
518
517
|
requested_payments[asset_id] = [CreateCoin(p2_ph, uint64(amount), memos)]
|
|
519
518
|
elif amount < 0:
|
|
@@ -524,14 +523,14 @@ class TradeManager:
|
|
|
524
523
|
if wallet.type() != WalletType.STANDARD_WALLET:
|
|
525
524
|
if callable(getattr(wallet, "get_asset_id", None)): # ATTENTION: new wallets
|
|
526
525
|
assert isinstance(wallet, CATWallet)
|
|
527
|
-
asset_id =
|
|
526
|
+
asset_id = wallet.get_asset_id()
|
|
528
527
|
else:
|
|
529
528
|
raise ValueError(
|
|
530
529
|
f"Cannot offer assets from wallet id {wallet.id()} without more information"
|
|
531
530
|
)
|
|
532
531
|
else:
|
|
533
532
|
asset_id = id
|
|
534
|
-
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id
|
|
533
|
+
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id)
|
|
535
534
|
assert wallet is not None
|
|
536
535
|
if not callable(getattr(wallet, "get_coins_to_offer", None)): # ATTENTION: new wallets
|
|
537
536
|
raise ValueError(f"Cannot offer coins from wallet id {wallet.id()}")
|
|
@@ -579,7 +578,7 @@ class TradeManager:
|
|
|
579
578
|
requested_payments, driver_dict, taking
|
|
580
579
|
)
|
|
581
580
|
|
|
582
|
-
potential_special_offer:
|
|
581
|
+
potential_special_offer: Offer | None = await self.check_for_special_offer_making(
|
|
583
582
|
offer_dict_no_ints,
|
|
584
583
|
driver_dict,
|
|
585
584
|
action_scope,
|
|
@@ -592,7 +591,7 @@ class TradeManager:
|
|
|
592
591
|
return True, potential_special_offer, None
|
|
593
592
|
|
|
594
593
|
all_coins: list[Coin] = [c for coins in coins_to_offer.values() for c in coins]
|
|
595
|
-
notarized_payments: dict[
|
|
594
|
+
notarized_payments: dict[bytes32 | None, list[NotarizedPayment]] = Offer.notarize_payments(
|
|
596
595
|
requested_payments, all_coins
|
|
597
596
|
)
|
|
598
597
|
announcements_to_assert = Offer.calculate_announcements(notarized_payments, driver_dict)
|
|
@@ -606,7 +605,7 @@ class TradeManager:
|
|
|
606
605
|
if isinstance(id, int):
|
|
607
606
|
wallet = self.wallet_state_manager.wallets.get(uint32(id))
|
|
608
607
|
else:
|
|
609
|
-
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(id
|
|
608
|
+
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(id)
|
|
610
609
|
async with self.wallet_state_manager.new_action_scope(
|
|
611
610
|
action_scope.config.tx_config, push=False
|
|
612
611
|
) as inner_action_scope:
|
|
@@ -815,23 +814,23 @@ class TradeManager:
|
|
|
815
814
|
offer: Offer,
|
|
816
815
|
peer: WSChiaConnection,
|
|
817
816
|
action_scope: WalletActionScope,
|
|
818
|
-
solver:
|
|
817
|
+
solver: Solver | None = None,
|
|
819
818
|
fee: uint64 = uint64(0),
|
|
820
819
|
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
821
820
|
) -> TradeRecord:
|
|
822
821
|
if solver is None:
|
|
823
822
|
solver = Solver({})
|
|
824
|
-
take_offer_dict: dict[
|
|
825
|
-
arbitrage: dict[
|
|
823
|
+
take_offer_dict: dict[bytes32 | int, int] = {}
|
|
824
|
+
arbitrage: dict[bytes32 | None, int] = offer.arbitrage()
|
|
826
825
|
|
|
827
826
|
for asset_id, amount in arbitrage.items():
|
|
828
827
|
if asset_id is None:
|
|
829
|
-
wallet:
|
|
828
|
+
wallet: WalletProtocol[Any] | None = self.wallet_state_manager.main_wallet
|
|
830
829
|
assert wallet is not None
|
|
831
|
-
key:
|
|
830
|
+
key: bytes32 | int = int(wallet.id())
|
|
832
831
|
else:
|
|
833
832
|
# ATTENTION: new wallets
|
|
834
|
-
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id
|
|
833
|
+
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id)
|
|
835
834
|
if wallet is None and amount < 0:
|
|
836
835
|
raise ValueError(f"Do not have a wallet for asset ID: {asset_id} to fulfill offer")
|
|
837
836
|
elif wallet is None or wallet.type() in {WalletType.NFT, WalletType.DATA_LAYER}:
|
|
@@ -909,13 +908,13 @@ class TradeManager:
|
|
|
909
908
|
|
|
910
909
|
async def check_for_special_offer_making(
|
|
911
910
|
self,
|
|
912
|
-
offer_dict: dict[
|
|
911
|
+
offer_dict: dict[bytes32 | None, int],
|
|
913
912
|
driver_dict: dict[bytes32, PuzzleInfo],
|
|
914
913
|
action_scope: WalletActionScope,
|
|
915
914
|
solver: Solver,
|
|
916
915
|
fee: uint64 = uint64(0),
|
|
917
916
|
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
918
|
-
) ->
|
|
917
|
+
) -> Offer | None:
|
|
919
918
|
for puzzle_info in driver_dict.values():
|
|
920
919
|
if (
|
|
921
920
|
puzzle_info.check_type([AssetType.SINGLETON.value, AssetType.METADATA.value, AssetType.OWNERSHIP.value])
|
|
@@ -966,7 +965,7 @@ class TradeManager:
|
|
|
966
965
|
return True
|
|
967
966
|
return False
|
|
968
967
|
|
|
969
|
-
async def
|
|
968
|
+
async def get_dl_offer_summary(self, offer: Offer) -> DataLayerSummary | None:
|
|
970
969
|
for puzzle_info in offer.driver_dict.values():
|
|
971
970
|
if (
|
|
972
971
|
puzzle_info.check_type(
|
|
@@ -978,27 +977,7 @@ class TradeManager:
|
|
|
978
977
|
and puzzle_info.also()["updater_hash"] == ACS_MU_PH # type: ignore
|
|
979
978
|
):
|
|
980
979
|
return await DataLayerWallet.get_offer_summary(offer)
|
|
981
|
-
|
|
982
|
-
offered, requested, infos, valid_times = offer.summary()
|
|
983
|
-
return {
|
|
984
|
-
"offered": offered,
|
|
985
|
-
"requested": requested,
|
|
986
|
-
"fees": offer.fees(),
|
|
987
|
-
"additions": [c.name().hex() for c in offer.additions()],
|
|
988
|
-
"removals": [c.name().hex() for c in offer.removals()],
|
|
989
|
-
"infos": infos,
|
|
990
|
-
"valid_times": {
|
|
991
|
-
k: v
|
|
992
|
-
for k, v in valid_times.to_json_dict().items()
|
|
993
|
-
if k
|
|
994
|
-
not in {
|
|
995
|
-
"max_secs_after_created",
|
|
996
|
-
"min_secs_since_created",
|
|
997
|
-
"max_blocks_after_created",
|
|
998
|
-
"min_blocks_since_created",
|
|
999
|
-
}
|
|
1000
|
-
},
|
|
1001
|
-
}
|
|
980
|
+
return None
|
|
1002
981
|
|
|
1003
982
|
async def check_for_final_modifications(
|
|
1004
983
|
self, offer: Offer, solver: Solver, action_scope: WalletActionScope
|
|
@@ -1031,10 +1010,10 @@ class TradeManager:
|
|
|
1031
1010
|
|
|
1032
1011
|
async def check_for_requested_payment_modifications(
|
|
1033
1012
|
self,
|
|
1034
|
-
requested_payments: dict[
|
|
1013
|
+
requested_payments: dict[bytes32 | None, list[CreateCoin]],
|
|
1035
1014
|
driver_dict: dict[bytes32, PuzzleInfo],
|
|
1036
1015
|
taking: bool,
|
|
1037
|
-
) -> dict[
|
|
1016
|
+
) -> dict[bytes32 | None, list[CreateCoin]]:
|
|
1038
1017
|
# This function exclusively deals with CR-CATs for now
|
|
1039
1018
|
if not taking:
|
|
1040
1019
|
for asset_id, puzzle_info in driver_dict.items():
|
chia/wallet/trade_record.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
|
|
5
5
|
|
|
6
6
|
from chia_rs.sized_bytes import bytes32
|
|
7
7
|
from chia_rs.sized_ints import uint8, uint32, uint64
|
|
@@ -22,16 +22,16 @@ class TradeRecordOld(Streamable):
|
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
24
|
confirmed_at_index: uint32
|
|
25
|
-
accepted_at_time:
|
|
25
|
+
accepted_at_time: uint64 | None
|
|
26
26
|
created_at_time: uint64
|
|
27
27
|
is_my_offer: bool
|
|
28
28
|
sent: uint32
|
|
29
29
|
offer: bytes
|
|
30
|
-
taken_offer:
|
|
30
|
+
taken_offer: bytes | None
|
|
31
31
|
coins_of_interest: list[Coin]
|
|
32
32
|
trade_id: bytes32
|
|
33
33
|
status: uint32 # TradeStatus, enum not streamable
|
|
34
|
-
sent_to: list[tuple[str, uint8,
|
|
34
|
+
sent_to: list[tuple[str, uint8, str | None]] # MempoolSubmissionStatus.status enum not streamable
|
|
35
35
|
|
|
36
36
|
def to_json_dict_convenience(self) -> dict[str, Any]:
|
|
37
37
|
formatted = self.to_json_dict()
|