chia-blockchain 2.5.2rc2__py3-none-any.whl → 2.5.3rc1__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 +7 -0
- chia/_tests/blockchain/blockchain_test_utils.py +1 -1
- chia/_tests/blockchain/test_augmented_chain.py +54 -5
- chia/_tests/blockchain/test_blockchain.py +5 -12
- chia/_tests/blockchain/test_blockchain_transactions.py +3 -5
- chia/_tests/blockchain/test_get_block_generator.py +2 -2
- chia/_tests/blockchain/test_lookup_fork_chain.py +2 -2
- chia/_tests/clvm/benchmark_costs.py +2 -1
- chia/_tests/clvm/coin_store.py +4 -3
- chia/_tests/clvm/test_chialisp_deserialization.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +1 -1
- chia/_tests/clvm/test_puzzle_compression.py +2 -2
- chia/_tests/clvm/test_puzzles.py +2 -2
- chia/_tests/clvm/test_singletons.py +2 -2
- chia/_tests/clvm/test_spend_sim.py +1 -1
- chia/_tests/cmds/cmd_test_utils.py +2 -2
- chia/_tests/cmds/test_click_types.py +2 -2
- chia/_tests/cmds/test_cmd_framework.py +6 -6
- chia/_tests/cmds/test_show.py +4 -3
- chia/_tests/cmds/test_tx_config_args.py +1 -1
- chia/_tests/cmds/testing_classes.py +2 -2
- chia/_tests/cmds/wallet/test_consts.py +2 -2
- chia/_tests/cmds/wallet/test_did.py +2 -2
- chia/_tests/cmds/wallet/test_nft.py +2 -2
- chia/_tests/cmds/wallet/test_notifications.py +3 -2
- chia/_tests/cmds/wallet/test_vcs.py +2 -2
- chia/_tests/cmds/wallet/test_wallet.py +4 -8
- chia/_tests/conftest.py +4 -3
- chia/_tests/connection_utils.py +2 -2
- chia/_tests/core/cmds/test_keys.py +1 -2
- chia/_tests/core/cmds/test_wallet.py +2 -2
- chia/_tests/core/consensus/test_block_creation.py +2 -2
- chia/_tests/core/consensus/test_pot_iterations.py +1 -1
- chia/_tests/core/custom_types/test_coin.py +2 -2
- chia/_tests/core/custom_types/test_proof_of_space.py +2 -2
- chia/_tests/core/custom_types/test_spend_bundle.py +2 -2
- chia/_tests/core/data_layer/conftest.py +1 -1
- chia/_tests/core/data_layer/test_data_layer.py +1 -1
- chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
- chia/_tests/core/data_layer/test_data_rpc.py +2 -2
- chia/_tests/core/data_layer/test_data_store.py +1 -1
- chia/_tests/core/data_layer/test_data_store_schema.py +1 -1
- chia/_tests/core/data_layer/util.py +2 -1
- chia/_tests/core/farmer/test_farmer_api.py +1 -1
- chia/_tests/core/full_node/full_sync/test_full_sync.py +1 -7
- chia/_tests/core/full_node/ram_db.py +2 -1
- chia/_tests/core/full_node/stores/test_block_store.py +2 -2
- chia/_tests/core/full_node/stores/test_coin_store.py +2 -2
- chia/_tests/core/full_node/stores/test_full_node_store.py +3 -3
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/stores/test_sync_store.py +1 -1
- chia/_tests/core/full_node/test_address_manager.py +1 -1
- chia/_tests/core/full_node/test_block_height_map.py +2 -2
- chia/_tests/core/full_node/test_conditions.py +1 -1
- chia/_tests/core/full_node/test_full_node.py +346 -164
- chia/_tests/core/full_node/test_generator_tools.py +3 -2
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -15
- chia/_tests/core/full_node/test_subscriptions.py +1 -1
- chia/_tests/core/full_node/test_transactions.py +186 -185
- chia/_tests/core/full_node/test_tx_processing_queue.py +1 -1
- chia/_tests/core/make_block_generator.py +2 -2
- chia/_tests/core/mempool/test_mempool.py +165 -22
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +1 -1
- chia/_tests/core/mempool/test_mempool_manager.py +476 -66
- chia/_tests/core/mempool/test_mempool_performance.py +2 -2
- chia/_tests/core/mempool/test_singleton_fast_forward.py +19 -25
- chia/_tests/core/node_height.py +2 -1
- chia/_tests/core/server/test_capabilities.py +1 -1
- chia/_tests/core/server/test_dos.py +36 -28
- chia/_tests/core/server/test_loop.py +3 -3
- chia/_tests/core/server/test_rate_limits.py +1 -1
- chia/_tests/core/server/test_server.py +2 -2
- chia/_tests/core/services/test_services.py +1 -1
- chia/_tests/core/ssl/test_ssl.py +1 -1
- chia/_tests/core/test_coins.py +2 -1
- chia/_tests/core/test_cost_calculation.py +2 -2
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +2 -2
- chia/_tests/core/test_db_validation.py +26 -13
- chia/_tests/core/test_farmer_harvester_rpc.py +2 -2
- chia/_tests/core/test_full_node_rpc.py +2 -2
- chia/_tests/core/test_merkle_set.py +2 -2
- chia/_tests/core/test_program.py +2 -2
- chia/_tests/core/test_rpc_util.py +1 -1
- chia/_tests/core/test_seeder.py +1 -1
- chia/_tests/core/util/test_block_cache.py +3 -3
- chia/_tests/core/util/test_jsonify.py +3 -2
- chia/_tests/core/util/test_keychain.py +3 -3
- chia/_tests/core/util/test_streamable.py +3 -4
- chia/_tests/environments/wallet.py +3 -2
- chia/_tests/farmer_harvester/test_farmer.py +3 -4
- chia/_tests/farmer_harvester/test_farmer_harvester.py +2 -2
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +2 -2
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +3 -4
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -1
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +2 -2
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +3 -4
- chia/_tests/generator/test_compression.py +20 -10
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -2
- chia/_tests/plot_sync/test_plot_sync.py +2 -2
- chia/_tests/plot_sync/test_receiver.py +2 -2
- chia/_tests/plot_sync/test_sender.py +2 -2
- chia/_tests/plot_sync/test_sync_simulated.py +2 -2
- chia/_tests/plot_sync/util.py +3 -2
- chia/_tests/plotting/test_plot_manager.py +1 -1
- chia/_tests/pools/test_pool_cli_parsing.py +3 -2
- chia/_tests/pools/test_pool_cmdline.py +2 -2
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +3 -3
- chia/_tests/pools/test_pool_rpc.py +4 -5
- chia/_tests/pools/test_pool_wallet.py +1 -1
- chia/_tests/pools/test_wallet_pool_store.py +2 -2
- chia/_tests/rpc/test_rpc_client.py +1 -1
- chia/_tests/rpc/test_rpc_server.py +1 -1
- chia/_tests/simulation/test_simulation.py +36 -8
- chia/_tests/simulation/test_simulator.py +5 -5
- chia/_tests/simulation/test_start_simulator.py +2 -2
- chia/_tests/timelord/test_new_peak.py +2 -2
- chia/_tests/tools/test_run_block.py +3 -2
- chia/_tests/util/benchmark_cost.py +2 -2
- chia/_tests/util/benchmarks.py +17 -6
- chia/_tests/util/blockchain.py +2 -1
- chia/_tests/util/blockchain_mock.py +9 -5
- chia/_tests/util/build_network_protocol_files.py +2 -1
- chia/_tests/util/constants.py +2 -1
- chia/_tests/util/full_sync.py +6 -3
- chia/_tests/util/gen_ssl_certs.py +2 -2
- chia/_tests/util/generator_tools_testing.py +4 -3
- chia/_tests/util/get_name_puzzle_conditions.py +2 -2
- chia/_tests/util/misc.py +16 -2
- chia/_tests/util/network_protocol_data.py +17 -7
- chia/_tests/util/run_block.py +6 -8
- chia/_tests/util/setup_nodes.py +4 -3
- chia/_tests/util/spend_sim.py +9 -5
- chia/_tests/util/test_condition_tools.py +2 -2
- chia/_tests/util/test_config.py +2 -1
- chia/_tests/util/test_errors.py +2 -1
- chia/_tests/util/test_full_block_utils.py +17 -7
- chia/_tests/util/test_misc.py +1 -1
- chia/_tests/util/test_network_protocol_test.py +24 -24
- chia/_tests/util/test_replace_str_to_bytes.py +2 -2
- chia/_tests/util/test_trusted_peer.py +1 -1
- chia/_tests/util/time_out_assert.py +20 -7
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -2
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +5 -6
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +17 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +2 -2
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -2
- chia/_tests/wallet/clawback/test_clawback_metadata.py +2 -2
- chia/_tests/wallet/conftest.py +3 -3
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +3 -5
- chia/_tests/wallet/db_wallet/test_dl_offers.py +2 -2
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +433 -384
- chia/_tests/wallet/did_wallet/test_did.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +2 -2
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +2 -2
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +3 -4
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +1293 -703
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +28 -30
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +2 -2
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +2 -2
- chia/_tests/wallet/rpc/config.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +2 -2
- chia/_tests/wallet/rpc/test_wallet_rpc.py +20 -77
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +9 -7
- chia/_tests/wallet/sync/test_wallet_sync.py +79 -31
- chia/_tests/wallet/test_clvm_streamable.py +2 -2
- chia/_tests/wallet/test_coin_management.py +7 -7
- chia/_tests/wallet/test_coin_selection.py +20 -2
- chia/_tests/wallet/test_conditions.py +2 -2
- chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
- chia/_tests/wallet/test_new_wallet_protocol.py +2 -2
- chia/_tests/wallet/test_nft_store.py +2 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_puzzle_store.py +2 -2
- chia/_tests/wallet/test_sign_coin_spends.py +2 -2
- chia/_tests/wallet/test_signer_protocol.py +3 -3
- chia/_tests/wallet/test_singleton.py +3 -11
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +12 -13
- chia/_tests/wallet/test_singleton_store.py +2 -4
- chia/_tests/wallet/test_transaction_store.py +2 -2
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +53 -49
- chia/_tests/wallet/test_wallet_action_scope.py +24 -6
- chia/_tests/wallet/test_wallet_blockchain.py +1 -1
- chia/_tests/wallet/test_wallet_coin_store.py +2 -2
- chia/_tests/wallet/test_wallet_interested_store.py +2 -2
- chia/_tests/wallet/test_wallet_node.py +3 -3
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +8 -8
- chia/_tests/wallet/test_wallet_test_framework.py +1 -1
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +2 -2
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -2
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +15 -15
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +5 -3
- chia/_tests/wallet/wallet_block_tools.py +15 -7
- chia/_tests/weight_proof/test_weight_proof.py +3 -3
- chia/cmds/chia.py +0 -2
- chia/cmds/cmd_classes.py +3 -3
- chia/cmds/cmd_helpers.py +4 -4
- chia/cmds/cmds_util.py +2 -2
- chia/cmds/coin_funcs.py +3 -2
- chia/cmds/coins.py +1 -1
- chia/cmds/data.py +2 -2
- chia/cmds/data_funcs.py +3 -2
- chia/cmds/db_upgrade_func.py +2 -2
- chia/cmds/db_validate_func.py +15 -8
- chia/cmds/farm.py +2 -4
- chia/cmds/keys.py +0 -2
- chia/cmds/keys_funcs.py +1 -1
- chia/cmds/netspace_funcs.py +2 -1
- chia/cmds/param_types.py +2 -2
- chia/cmds/plotnft.py +2 -2
- chia/cmds/plotnft_funcs.py +2 -2
- chia/cmds/rpc.py +1 -1
- chia/cmds/show.py +1 -2
- chia/cmds/show_funcs.py +6 -3
- chia/cmds/signer.py +1 -2
- chia/cmds/sim.py +1 -2
- chia/cmds/sim_funcs.py +2 -2
- chia/cmds/wallet.py +2 -2
- chia/cmds/wallet_funcs.py +4 -11
- chia/consensus/block_body_validation.py +3 -4
- chia/consensus/block_creation.py +10 -6
- chia/consensus/block_header_validation.py +3 -4
- chia/consensus/block_record.py +2 -3
- chia/consensus/block_rewards.py +1 -1
- chia/consensus/blockchain.py +20 -17
- chia/consensus/blockchain_interface.py +5 -4
- chia/consensus/coinbase.py +2 -2
- chia/consensus/constants.py +1 -1
- chia/consensus/cost_calculator.py +2 -1
- chia/consensus/default_constants.py +4 -3
- chia/consensus/deficit.py +3 -2
- chia/consensus/difficulty_adjustment.py +8 -9
- chia/consensus/find_fork_point.py +4 -3
- chia/consensus/full_block_to_block_record.py +4 -3
- chia/consensus/get_block_challenge.py +4 -3
- chia/consensus/get_block_generator.py +3 -2
- chia/consensus/make_sub_epoch_summary.py +3 -2
- chia/consensus/multiprocess_validation.py +9 -4
- chia/consensus/pos_quality.py +1 -1
- chia/consensus/pot_iterations.py +4 -3
- chia/consensus/vdf_info_computation.py +4 -3
- chia/daemon/client.py +1 -1
- chia/daemon/keychain_server.py +1 -1
- chia/daemon/server.py +1 -1
- chia/daemon/windows_signal.py +1 -1
- chia/data_layer/data_layer.py +4 -3
- chia/data_layer/data_layer_errors.py +1 -1
- chia/data_layer/data_layer_util.py +2 -2
- chia/data_layer/data_layer_wallet.py +47 -69
- chia/data_layer/data_store.py +1 -1
- chia/data_layer/dl_wallet_store.py +5 -6
- chia/data_layer/download_data.py +1 -1
- chia/data_layer/s3_plugin_service.py +4 -4
- chia/data_layer/singleton_record.py +23 -0
- chia/data_layer/util/benchmark.py +2 -1
- chia/farmer/farmer.py +4 -6
- chia/farmer/farmer_api.py +4 -6
- chia/full_node/bitcoin_fee_estimator.py +2 -1
- chia/full_node/block_height_map.py +2 -2
- chia/full_node/block_store.py +8 -9
- chia/{util → full_node}/check_fork_next_block.py +2 -1
- chia/full_node/coin_store.py +10 -10
- chia/full_node/fee_estimate.py +2 -1
- chia/full_node/fee_estimation.py +2 -1
- chia/full_node/fee_estimator.py +2 -1
- chia/full_node/fee_estimator_interface.py +1 -1
- chia/full_node/fee_history.py +2 -1
- chia/full_node/fee_tracker.py +2 -1
- chia/full_node/full_node.py +15 -13
- chia/full_node/full_node_api.py +12 -32
- chia/full_node/full_node_store.py +4 -3
- chia/full_node/hint_management.py +2 -1
- chia/full_node/hint_store.py +3 -3
- chia/full_node/mempool.py +79 -12
- chia/full_node/mempool_check_conditions.py +6 -7
- chia/full_node/mempool_manager.py +168 -21
- chia/full_node/pending_tx_cache.py +2 -2
- chia/full_node/subscriptions.py +2 -2
- chia/full_node/sync_store.py +2 -3
- chia/full_node/tx_processing_queue.py +2 -1
- chia/full_node/weight_proof.py +5 -8
- chia/harvester/harvester.py +5 -3
- chia/harvester/harvester_api.py +2 -2
- chia/introducer/introducer.py +30 -2
- chia/introducer/introducer_api.py +9 -1
- chia/legacy/keyring.py +1 -2
- chia/plot_sync/exceptions.py +2 -1
- chia/plot_sync/receiver.py +2 -2
- chia/plot_sync/sender.py +1 -1
- chia/plotting/cache.py +2 -2
- chia/plotting/check_plots.py +4 -2
- chia/plotting/create_plots.py +1 -1
- chia/plotting/manager.py +3 -3
- chia/plotting/util.py +2 -2
- chia/pools/pool_config.py +1 -1
- chia/pools/pool_puzzles.py +23 -17
- chia/pools/pool_wallet.py +22 -9
- chia/pools/pool_wallet_info.py +2 -2
- chia/protocols/farmer_protocol.py +3 -6
- chia/protocols/full_node_protocol.py +3 -2
- chia/protocols/harvester_protocol.py +3 -4
- chia/protocols/pool_protocol.py +2 -2
- chia/protocols/shared_protocol.py +2 -1
- chia/protocols/timelord_protocol.py +4 -4
- chia/protocols/wallet_protocol.py +2 -2
- chia/rpc/data_layer_rpc_api.py +3 -4
- chia/rpc/data_layer_rpc_client.py +3 -2
- chia/rpc/farmer_rpc_api.py +2 -2
- chia/rpc/farmer_rpc_client.py +2 -1
- chia/rpc/full_node_rpc_api.py +3 -2
- chia/rpc/full_node_rpc_client.py +3 -2
- chia/rpc/harvester_rpc_api.py +2 -1
- chia/rpc/rpc_client.py +2 -2
- chia/rpc/rpc_server.py +1 -1
- chia/rpc/wallet_request_types.py +2 -62
- chia/rpc/wallet_rpc_api.py +98 -628
- chia/rpc/wallet_rpc_client.py +5 -253
- chia/seeder/crawl_store.py +1 -1
- chia/seeder/crawler.py +2 -2
- chia/seeder/peer_record.py +2 -1
- chia/seeder/start_crawler.py +3 -1
- chia/server/address_manager.py +2 -1
- chia/server/address_manager_store.py +1 -1
- chia/server/capabilities.py +2 -1
- chia/server/introducer_peers.py +2 -1
- chia/server/node_discovery.py +1 -1
- chia/server/outbound_message.py +2 -1
- chia/server/server.py +2 -2
- chia/server/start_data_layer.py +2 -1
- chia/server/start_farmer.py +3 -1
- chia/server/start_full_node.py +4 -2
- chia/server/start_harvester.py +3 -1
- chia/server/start_introducer.py +12 -1
- chia/server/start_service.py +2 -1
- chia/server/start_timelord.py +3 -1
- chia/server/start_wallet.py +3 -1
- chia/server/upnp.py +1 -2
- chia/server/ws_connection.py +3 -4
- chia/simulator/add_blocks_in_batches.py +5 -3
- chia/simulator/block_tools.py +16 -12
- chia/simulator/full_node_simulator.py +9 -14
- chia/simulator/setup_services.py +5 -3
- chia/simulator/simulator_full_node_rpc_api.py +3 -2
- chia/simulator/simulator_full_node_rpc_client.py +3 -2
- chia/simulator/simulator_protocol.py +3 -2
- chia/simulator/simulator_test_tools.py +2 -2
- chia/simulator/start_simulator.py +3 -2
- chia/simulator/wallet_tools.py +3 -4
- chia/timelord/iters_from_block.py +4 -4
- chia/timelord/timelord.py +7 -12
- chia/timelord/timelord_api.py +3 -3
- chia/timelord/timelord_state.py +4 -3
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +2 -2
- chia/types/blockchain_format/program.py +1 -1
- chia/types/blockchain_format/proof_of_space.py +3 -4
- chia/types/blockchain_format/tree_hash.py +1 -1
- chia/types/blockchain_format/vdf.py +3 -4
- chia/types/clvm_cost.py +1 -1
- chia/types/coin_record.py +4 -3
- chia/types/coin_spend.py +1 -1
- chia/types/eligible_coin_spends.py +9 -5
- chia/types/fee_rate.py +1 -1
- chia/types/generator_types.py +3 -3
- chia/types/internal_mempool_item.py +3 -2
- chia/types/mempool_item.py +10 -3
- chia/types/mempool_submission_status.py +2 -1
- chia/types/mojos.py +1 -1
- chia/types/peer_info.py +2 -1
- chia/types/transaction_queue_entry.py +2 -1
- chia/types/unfinished_header_block.py +4 -4
- chia/types/validation_state.py +2 -1
- chia/types/weight_proof.py +1 -9
- chia/util/augmented_chain.py +20 -9
- chia/util/block_cache.py +8 -4
- chia/util/condition_tools.py +2 -2
- chia/util/full_block_utils.py +3 -4
- chia/util/generator_tools.py +2 -2
- chia/util/initial-config.yaml +2 -11
- chia/util/network.py +2 -2
- chia/util/prev_transaction_block.py +2 -1
- chia/util/task_timing.py +1 -1
- chia/util/vdf_prover.py +3 -3
- chia/util/ws_message.py +1 -1
- chia/wallet/cat_wallet/cat_info.py +3 -2
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -2
- chia/wallet/cat_wallet/cat_utils.py +6 -4
- chia/wallet/cat_wallet/cat_wallet.py +16 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -1
- chia/wallet/coin_selection.py +5 -5
- chia/wallet/conditions.py +22 -16
- chia/wallet/db_wallet/db_wallet_puzzles.py +15 -15
- chia/wallet/derivation_record.py +2 -2
- chia/wallet/derive_keys.py +2 -2
- chia/wallet/did_wallet/did_info.py +3 -2
- chia/wallet/did_wallet/did_wallet.py +41 -19
- chia/wallet/did_wallet/did_wallet_puzzles.py +18 -12
- chia/wallet/driver_protocol.py +1 -1
- chia/wallet/lineage_proof.py +3 -2
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +6 -7
- chia/wallet/nft_wallet/nft_info.py +5 -5
- chia/wallet/nft_wallet/nft_puzzle_utils.py +293 -0
- chia/wallet/nft_wallet/nft_puzzles.py +21 -298
- chia/wallet/nft_wallet/nft_wallet.py +47 -62
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +4 -8
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +3 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +6 -10
- chia/wallet/nft_wallet/uncurry_nft.py +6 -8
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +3 -2
- chia/wallet/outer_puzzles.py +2 -1
- chia/wallet/puzzles/clawback/drivers.py +21 -8
- chia/wallet/puzzles/clawback/metadata.py +3 -2
- chia/wallet/puzzles/clawback/puzzle_decorator.py +5 -4
- chia/wallet/puzzles/deployed_puzzle_hashes.json +0 -10
- chia/wallet/puzzles/p2_conditions.py +3 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +3 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +3 -2
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -3
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +3 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +4 -3
- chia/wallet/puzzles/puzzle_utils.py +3 -2
- chia/wallet/puzzles/singleton_top_layer.py +26 -10
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +21 -9
- chia/wallet/puzzles/tails.py +21 -129
- chia/wallet/signer_protocol.py +3 -2
- chia/wallet/singleton.py +12 -6
- chia/wallet/singleton_record.py +3 -2
- chia/wallet/trade_manager.py +31 -55
- chia/wallet/trade_record.py +3 -2
- chia/wallet/trading/offer.py +14 -13
- chia/wallet/trading/trade_store.py +3 -4
- chia/wallet/transaction_record.py +2 -2
- chia/wallet/util/blind_signer_tl.py +3 -2
- chia/wallet/util/compute_hints.py +3 -2
- chia/wallet/util/compute_memos.py +2 -2
- chia/wallet/util/curry_and_treehash.py +1 -2
- chia/wallet/util/merkle_tree.py +1 -1
- chia/wallet/util/merkle_utils.py +1 -1
- chia/wallet/util/new_peak_queue.py +2 -1
- chia/wallet/util/notifications.py +5 -4
- chia/wallet/util/peer_request_cache.py +3 -2
- chia/wallet/util/puzzle_compression.py +6 -4
- chia/wallet/util/puzzle_decorator.py +6 -4
- chia/wallet/util/query_filter.py +3 -2
- chia/wallet/util/tx_config.py +3 -3
- chia/wallet/util/wallet_sync_utils.py +2 -2
- chia/wallet/util/wallet_types.py +2 -3
- chia/wallet/vc_wallet/cr_cat_drivers.py +18 -22
- chia/wallet/vc_wallet/cr_cat_wallet.py +14 -10
- chia/wallet/vc_wallet/cr_outer_puzzle.py +2 -2
- chia/wallet/vc_wallet/vc_drivers.py +50 -68
- chia/wallet/vc_wallet/vc_store.py +2 -2
- chia/wallet/vc_wallet/vc_wallet.py +47 -15
- chia/wallet/wallet.py +51 -46
- chia/wallet/wallet_action_scope.py +4 -0
- chia/wallet/wallet_blockchain.py +12 -7
- chia/wallet/wallet_coin_record.py +3 -2
- chia/wallet/wallet_coin_store.py +3 -2
- chia/wallet/wallet_info.py +2 -1
- chia/wallet/wallet_interested_store.py +3 -2
- chia/wallet/wallet_nft_store.py +4 -4
- chia/wallet/wallet_node.py +3 -4
- chia/wallet/wallet_pool_store.py +3 -4
- chia/wallet/wallet_protocol.py +19 -5
- chia/wallet/wallet_puzzle_store.py +2 -2
- chia/wallet/wallet_retry_store.py +3 -6
- chia/wallet/wallet_singleton_store.py +2 -2
- chia/wallet/wallet_state_manager.py +20 -197
- chia/wallet/wallet_transaction_store.py +2 -2
- chia/wallet/wallet_user_store.py +2 -1
- chia/wallet/wallet_weight_proof_handler.py +3 -2
- {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/METADATA +3 -2
- chia_blockchain-2.5.3rc1.dist-info/RECORD +891 -0
- mozilla-ca/cacert.pem +64 -33
- chia/_tests/clvm/test_condition_codes.py +0 -13
- chia/_tests/cmds/wallet/test_dao.py +0 -565
- chia/_tests/wallet/dao_wallet/__init__.py +0 -0
- chia/_tests/wallet/dao_wallet/config.py +0 -3
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +0 -1330
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +0 -3488
- chia/cmds/dao.py +0 -1064
- chia/cmds/dao_funcs.py +0 -598
- chia/consensus/puzzles/__init__.py +0 -0
- chia/consensus/puzzles/chialisp_deserialisation.clsp +0 -69
- chia/consensus/puzzles/chialisp_deserialisation.clsp.hex +0 -1
- chia/consensus/puzzles/rom_bootstrap_generator.clsp +0 -37
- chia/consensus/puzzles/rom_bootstrap_generator.clsp.hex +0 -1
- chia/full_node/puzzles/__init__.py +0 -0
- chia/full_node/puzzles/block_program_zero.clsp +0 -14
- chia/full_node/puzzles/block_program_zero.clsp.hex +0 -1
- chia/full_node/puzzles/decompress_coin_spend_entry.clsp +0 -5
- chia/full_node/puzzles/decompress_coin_spend_entry.clsp.hex +0 -1
- chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp +0 -7
- chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp.hex +0 -1
- chia/full_node/puzzles/decompress_puzzle.clsp +0 -6
- chia/full_node/puzzles/decompress_puzzle.clsp.hex +0 -1
- chia/pools/puzzles/__init__.py +0 -0
- chia/pools/puzzles/pool_member_innerpuz.clsp +0 -70
- chia/pools/puzzles/pool_member_innerpuz.clsp.hex +0 -1
- chia/pools/puzzles/pool_waitingroom_innerpuz.clsp +0 -69
- chia/pools/puzzles/pool_waitingroom_innerpuz.clsp.hex +0 -1
- chia/simulator/simulator_constants.py +0 -13
- chia/types/blockchain_format/foliage.py +0 -8
- chia/types/blockchain_format/pool_target.py +0 -5
- chia/types/blockchain_format/reward_chain_block.py +0 -6
- chia/types/blockchain_format/sized_bytes.py +0 -11
- chia/util/ints.py +0 -19
- chia/wallet/cat_wallet/dao_cat_info.py +0 -28
- chia/wallet/cat_wallet/dao_cat_wallet.py +0 -669
- chia/wallet/cat_wallet/puzzles/__init__.py +0 -0
- chia/wallet/cat_wallet/puzzles/cat_truths.clib +0 -31
- chia/wallet/cat_wallet/puzzles/cat_v2.clsp +0 -397
- chia/wallet/cat_wallet/puzzles/cat_v2.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/delegated_tail.clsp +0 -25
- chia/wallet/cat_wallet/puzzles/delegated_tail.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp +0 -15
- chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp +0 -26
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp +0 -42
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp +0 -24
- chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp.hex +0 -1
- chia/wallet/dao_wallet/__init__.py +0 -0
- chia/wallet/dao_wallet/dao_info.py +0 -61
- chia/wallet/dao_wallet/dao_utils.py +0 -811
- chia/wallet/dao_wallet/dao_wallet.py +0 -2119
- chia/wallet/did_wallet/puzzles/__init__.py +0 -0
- chia/wallet/did_wallet/puzzles/did_innerpuz.clsp +0 -135
- chia/wallet/did_wallet/puzzles/did_innerpuz.clsp.hex +0 -1
- chia/wallet/payment.py +0 -33
- chia/wallet/puzzles/augmented_condition.clsp +0 -13
- chia/wallet/puzzles/augmented_condition.clsp.hex +0 -1
- chia/wallet/puzzles/condition_codes.clib +0 -77
- chia/wallet/puzzles/curry-and-treehash.clib +0 -102
- chia/wallet/puzzles/curry.clib +0 -135
- chia/wallet/puzzles/curry_by_index.clib +0 -16
- chia/wallet/puzzles/dao_cat_eve.clsp +0 -17
- chia/wallet/puzzles/dao_cat_eve.clsp.hex +0 -1
- chia/wallet/puzzles/dao_cat_launcher.clsp +0 -36
- chia/wallet/puzzles/dao_cat_launcher.clsp.hex +0 -1
- chia/wallet/puzzles/dao_finished_state.clsp +0 -35
- chia/wallet/puzzles/dao_finished_state.clsp.hex +0 -1
- chia/wallet/puzzles/dao_finished_state.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_lockup.clsp +0 -288
- chia/wallet/puzzles/dao_lockup.clsp.hex +0 -1
- chia/wallet/puzzles/dao_lockup.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_proposal.clsp +0 -377
- chia/wallet/puzzles/dao_proposal.clsp.hex +0 -1
- chia/wallet/puzzles/dao_proposal.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_proposal_timer.clsp +0 -78
- chia/wallet/puzzles/dao_proposal_timer.clsp.hex +0 -1
- chia/wallet/puzzles/dao_proposal_timer.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_proposal_validator.clsp +0 -87
- chia/wallet/puzzles/dao_proposal_validator.clsp.hex +0 -1
- chia/wallet/puzzles/dao_proposal_validator.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp +0 -240
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex +0 -1
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_treasury.clsp +0 -115
- chia/wallet/puzzles/dao_treasury.clsp.hex +0 -1
- chia/wallet/puzzles/dao_update_proposal.clsp +0 -44
- chia/wallet/puzzles/dao_update_proposal.clsp.hex +0 -1
- chia/wallet/puzzles/json.clib +0 -25
- chia/wallet/puzzles/merkle_utils.clib +0 -18
- chia/wallet/puzzles/notification.clsp +0 -7
- chia/wallet/puzzles/notification.clsp.hex +0 -1
- chia/wallet/puzzles/p2_1_of_n.clsp +0 -22
- chia/wallet/puzzles/p2_1_of_n.clsp.hex +0 -1
- chia/wallet/puzzles/p2_conditions.clsp +0 -3
- chia/wallet/puzzles/p2_conditions.clsp.hex +0 -1
- chia/wallet/puzzles/p2_delegated_conditions.clsp +0 -18
- chia/wallet/puzzles/p2_delegated_conditions.clsp.hex +0 -1
- chia/wallet/puzzles/p2_delegated_puzzle.clsp +0 -19
- chia/wallet/puzzles/p2_delegated_puzzle.clsp.hex +0 -1
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp +0 -91
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp.hex +0 -1
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp +0 -108
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp.hex +0 -1
- chia/wallet/puzzles/p2_parent.clsp +0 -19
- chia/wallet/puzzles/p2_parent.clsp.hex +0 -1
- chia/wallet/puzzles/p2_puzzle_hash.clsp +0 -18
- chia/wallet/puzzles/p2_puzzle_hash.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton.clsp +0 -30
- chia/wallet/puzzles/p2_singleton.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton_aggregator.clsp +0 -81
- chia/wallet/puzzles/p2_singleton_aggregator.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp +0 -50
- chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp +0 -47
- chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp.hex +0 -1
- chia/wallet/puzzles/settlement_payments.clsp +0 -49
- chia/wallet/puzzles/settlement_payments.clsp.hex +0 -1
- chia/wallet/puzzles/sha256tree.clib +0 -11
- chia/wallet/puzzles/singleton_launcher.clsp +0 -16
- chia/wallet/puzzles/singleton_launcher.clsp.hex +0 -1
- chia/wallet/puzzles/singleton_top_layer.clsp +0 -177
- chia/wallet/puzzles/singleton_top_layer.clsp.hex +0 -1
- chia/wallet/puzzles/singleton_top_layer_v1_1.clsp +0 -107
- chia/wallet/puzzles/singleton_top_layer_v1_1.clsp.hex +0 -1
- chia/wallet/puzzles/singleton_truths.clib +0 -21
- chia/wallet/vc_wallet/cr_puzzles/__init__.py +0 -0
- chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp +0 -3
- chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp.hex +0 -1
- chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp +0 -304
- chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp.hex +0 -1
- chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp +0 -45
- chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/__init__.py +0 -0
- chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp +0 -30
- chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp +0 -75
- chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp +0 -32
- chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp +0 -80
- chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp +0 -163
- chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp +0 -16
- chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp +0 -74
- chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp +0 -23
- chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp +0 -64
- chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp.hex +0 -1
- chia_blockchain-2.5.2rc2.dist-info/RECORD +0 -1042
- {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/entry_points.txt +0 -0
|
@@ -14,11 +14,12 @@ This roughly corresponds to bitcoin's graftroot.
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
+
from chia_puzzles_py.programs import P2_DELEGATED_PUZZLE
|
|
18
|
+
|
|
17
19
|
from chia.types.blockchain_format.program import Program
|
|
18
20
|
from chia.wallet.puzzles import p2_conditions
|
|
19
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
20
21
|
|
|
21
|
-
MOD =
|
|
22
|
+
MOD = Program.from_bytes(P2_DELEGATED_PUZZLE)
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
def puzzle_for_pk(public_key: bytes) -> Program:
|
|
@@ -62,12 +62,12 @@ import hashlib
|
|
|
62
62
|
from functools import lru_cache
|
|
63
63
|
from typing import Union
|
|
64
64
|
|
|
65
|
+
from chia_puzzles_py.programs import P2_DELEGATED_PUZZLE_OR_HIDDEN_PUZZLE
|
|
65
66
|
from chia_rs import G1Element, PrivateKey
|
|
67
|
+
from chia_rs.sized_bytes import bytes32
|
|
66
68
|
from clvm.casts import int_from_bytes
|
|
67
69
|
|
|
68
70
|
from chia.types.blockchain_format.program import Program
|
|
69
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
70
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
71
71
|
from chia.wallet.puzzles.p2_conditions import puzzle_for_conditions
|
|
72
72
|
from chia.wallet.util.curry_and_treehash import calculate_hash_of_quoted_mod_hash, curry_and_treehash, shatree_atom
|
|
73
73
|
|
|
@@ -75,7 +75,7 @@ DEFAULT_HIDDEN_PUZZLE = Program.from_bytes(bytes.fromhex("ff0980"))
|
|
|
75
75
|
|
|
76
76
|
DEFAULT_HIDDEN_PUZZLE_HASH = DEFAULT_HIDDEN_PUZZLE.get_tree_hash() # this puzzle `(=)` always fails
|
|
77
77
|
|
|
78
|
-
MOD =
|
|
78
|
+
MOD = Program.from_bytes(P2_DELEGATED_PUZZLE_OR_HIDDEN_PUZZLE)
|
|
79
79
|
|
|
80
80
|
QUOTED_MOD_HASH = calculate_hash_of_quoted_mod_hash(MOD.get_tree_hash())
|
|
81
81
|
|
|
@@ -7,10 +7,11 @@ it includes N public keys, any M of which needs to sign the delegated puzzle.
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
+
from chia_puzzles_py.programs import P2_M_OF_N_DELEGATE_DIRECT
|
|
11
|
+
|
|
10
12
|
from chia.types.blockchain_format.program import Program
|
|
11
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
12
13
|
|
|
13
|
-
MOD =
|
|
14
|
+
MOD = Program.from_bytes(P2_M_OF_N_DELEGATE_DIRECT)
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
def puzzle_for_m_of_public_key_list(m, public_key_list) -> Program:
|
|
@@ -7,11 +7,12 @@ hash along with its solution.
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
+
from chia_puzzles_py.programs import P2_PUZZLE_HASH
|
|
11
|
+
from chia_rs.sized_bytes import bytes32
|
|
12
|
+
|
|
10
13
|
from chia.types.blockchain_format.program import Program
|
|
11
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
12
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
13
14
|
|
|
14
|
-
MOD =
|
|
15
|
+
MOD = Program.from_bytes(P2_PUZZLE_HASH)
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
def puzzle_for_inner_puzzle_hash(inner_puzzle_hash: bytes32) -> Program:
|
|
@@ -2,9 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from chia_rs.sized_bytes import bytes32
|
|
6
|
+
from chia_rs.sized_ints import uint64
|
|
7
|
+
|
|
6
8
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
7
|
-
from chia.util.ints import uint64
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
def make_create_coin_condition(puzzle_hash: bytes32, amount: uint64, memos: list[bytes]) -> list[Any]:
|
|
@@ -3,22 +3,38 @@ from __future__ import annotations
|
|
|
3
3
|
from collections.abc import Iterator
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
|
+
from chia_puzzles_py.programs import (
|
|
7
|
+
P2_SINGLETON,
|
|
8
|
+
P2_SINGLETON_HASH,
|
|
9
|
+
P2_SINGLETON_OR_DELAYED_PUZHASH,
|
|
10
|
+
P2_SINGLETON_OR_DELAYED_PUZHASH_HASH,
|
|
11
|
+
SINGLETON_TOP_LAYER,
|
|
12
|
+
SINGLETON_TOP_LAYER_HASH,
|
|
13
|
+
)
|
|
14
|
+
from chia_puzzles_py.programs import (
|
|
15
|
+
SINGLETON_LAUNCHER as SINGLETON_LAUNCHER_BYTES,
|
|
16
|
+
)
|
|
17
|
+
from chia_puzzles_py.programs import (
|
|
18
|
+
SINGLETON_LAUNCHER_HASH as SINGLETON_LAUNCHER_HASH_BYTES,
|
|
19
|
+
)
|
|
20
|
+
from chia_rs.sized_bytes import bytes32
|
|
21
|
+
from chia_rs.sized_ints import uint64
|
|
22
|
+
|
|
6
23
|
from chia.types.blockchain_format.coin import Coin
|
|
7
24
|
from chia.types.blockchain_format.program import Program
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
25
|
from chia.types.coin_spend import CoinSpend, make_spend
|
|
10
26
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
11
27
|
from chia.util.hash import std_hash
|
|
12
|
-
from chia.util.ints import uint64
|
|
13
28
|
from chia.wallet.lineage_proof import LineageProof
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
P2_SINGLETON_OR_DELAYED_MOD =
|
|
20
|
-
|
|
21
|
-
|
|
29
|
+
|
|
30
|
+
SINGLETON_MOD = Program.from_bytes(SINGLETON_TOP_LAYER)
|
|
31
|
+
SINGLETON_MOD_HASH = bytes32(SINGLETON_TOP_LAYER_HASH)
|
|
32
|
+
P2_SINGLETON_MOD = Program.from_bytes(P2_SINGLETON)
|
|
33
|
+
P2_SINGLETON_MOD_HASH = bytes32(P2_SINGLETON_HASH)
|
|
34
|
+
P2_SINGLETON_OR_DELAYED_MOD = Program.from_bytes(P2_SINGLETON_OR_DELAYED_PUZHASH)
|
|
35
|
+
P2_SINGLETON_OR_DELAYED_MOD_HASH = bytes32(P2_SINGLETON_OR_DELAYED_PUZHASH_HASH)
|
|
36
|
+
SINGLETON_LAUNCHER = Program.from_bytes(SINGLETON_LAUNCHER_BYTES)
|
|
37
|
+
SINGLETON_LAUNCHER_HASH = bytes32(SINGLETON_LAUNCHER_HASH_BYTES)
|
|
22
38
|
ESCAPE_VALUE = -113
|
|
23
39
|
MELT_CONDITION = [ConditionOpcode.CREATE_COIN, 0, ESCAPE_VALUE]
|
|
24
40
|
|
|
@@ -3,23 +3,35 @@ from __future__ import annotations
|
|
|
3
3
|
from collections.abc import Iterator
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
|
+
from chia_puzzles_py.programs import (
|
|
7
|
+
P2_SINGLETON,
|
|
8
|
+
P2_SINGLETON_OR_DELAYED_PUZHASH,
|
|
9
|
+
SINGLETON_TOP_LAYER_V1_1,
|
|
10
|
+
SINGLETON_TOP_LAYER_V1_1_HASH,
|
|
11
|
+
)
|
|
12
|
+
from chia_puzzles_py.programs import (
|
|
13
|
+
SINGLETON_LAUNCHER as SINGLETON_LAUNCHER_BYTES,
|
|
14
|
+
)
|
|
15
|
+
from chia_puzzles_py.programs import (
|
|
16
|
+
SINGLETON_LAUNCHER_HASH as SINGLETON_LAUNCHER_HASH_BYTES,
|
|
17
|
+
)
|
|
18
|
+
from chia_rs.sized_bytes import bytes32
|
|
19
|
+
from chia_rs.sized_ints import uint64
|
|
20
|
+
|
|
6
21
|
from chia.types.blockchain_format.coin import Coin
|
|
7
22
|
from chia.types.blockchain_format.program import Program
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
23
|
from chia.types.coin_spend import CoinSpend, make_spend
|
|
10
24
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
11
25
|
from chia.util.hash import std_hash
|
|
12
|
-
from chia.util.ints import uint64
|
|
13
26
|
from chia.wallet.lineage_proof import LineageProof
|
|
14
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
15
27
|
from chia.wallet.uncurried_puzzle import UncurriedPuzzle
|
|
16
28
|
|
|
17
|
-
SINGLETON_MOD =
|
|
18
|
-
SINGLETON_MOD_HASH =
|
|
19
|
-
P2_SINGLETON_MOD =
|
|
20
|
-
P2_SINGLETON_OR_DELAYED_MOD =
|
|
21
|
-
SINGLETON_LAUNCHER =
|
|
22
|
-
SINGLETON_LAUNCHER_HASH =
|
|
29
|
+
SINGLETON_MOD = Program.from_bytes(SINGLETON_TOP_LAYER_V1_1)
|
|
30
|
+
SINGLETON_MOD_HASH = bytes32(SINGLETON_TOP_LAYER_V1_1_HASH)
|
|
31
|
+
P2_SINGLETON_MOD = Program.from_bytes(P2_SINGLETON)
|
|
32
|
+
P2_SINGLETON_OR_DELAYED_MOD = Program.from_bytes(P2_SINGLETON_OR_DELAYED_PUZHASH)
|
|
33
|
+
SINGLETON_LAUNCHER = Program.from_bytes(SINGLETON_LAUNCHER_BYTES)
|
|
34
|
+
SINGLETON_LAUNCHER_HASH = bytes32(SINGLETON_LAUNCHER_HASH_BYTES)
|
|
23
35
|
ESCAPE_VALUE = -113
|
|
24
36
|
MELT_CONDITION = [ConditionOpcode.CREATE_COIN, 0, ESCAPE_VALUE]
|
|
25
37
|
|
chia/wallet/puzzles/tails.py
CHANGED
|
@@ -2,12 +2,18 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Any, Optional
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from chia_puzzles_py.programs import (
|
|
6
|
+
DELEGATED_TAIL,
|
|
7
|
+
EVERYTHING_WITH_SIGNATURE,
|
|
8
|
+
GENESIS_BY_COIN_ID,
|
|
9
|
+
GENESIS_BY_COIN_ID_OR_SINGLETON,
|
|
10
|
+
GENESIS_BY_PUZZLE_HASH,
|
|
11
|
+
)
|
|
12
|
+
from chia_rs.sized_bytes import bytes32
|
|
13
|
+
from chia_rs.sized_ints import uint64
|
|
6
14
|
|
|
7
15
|
from chia.types.blockchain_format.program import Program
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
16
|
from chia.util.byte_types import hexstr_to_bytes
|
|
10
|
-
from chia.util.ints import uint64
|
|
11
17
|
from chia.wallet.cat_wallet.cat_info import CATInfo
|
|
12
18
|
from chia.wallet.cat_wallet.cat_utils import (
|
|
13
19
|
CAT_MOD,
|
|
@@ -16,29 +22,20 @@ from chia.wallet.cat_wallet.cat_utils import (
|
|
|
16
22
|
unsigned_spend_bundle_for_spendable_cats,
|
|
17
23
|
)
|
|
18
24
|
from chia.wallet.cat_wallet.lineage_store import CATLineageStore
|
|
19
|
-
from chia.wallet.
|
|
25
|
+
from chia.wallet.conditions import CreateCoin
|
|
20
26
|
from chia.wallet.lineage_proof import LineageProof
|
|
21
|
-
from chia.wallet.payment import Payment
|
|
22
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
23
|
-
from chia.wallet.transaction_record import TransactionRecord
|
|
24
27
|
from chia.wallet.wallet_action_scope import WalletActionScope
|
|
25
28
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
26
29
|
|
|
27
|
-
GENESIS_BY_ID_MOD =
|
|
28
|
-
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
)
|
|
36
|
-
DELEGATED_LIMITATIONS_MOD = load_clvm_maybe_recompile(
|
|
37
|
-
"delegated_tail.clsp", package_or_requirement="chia.wallet.cat_wallet.puzzles"
|
|
38
|
-
)
|
|
39
|
-
GENESIS_BY_ID_OR_SINGLETON_MOD = load_clvm_maybe_recompile(
|
|
40
|
-
"genesis_by_coin_id_or_singleton.clsp", package_or_requirement="chia.wallet.cat_wallet.puzzles"
|
|
41
|
-
)
|
|
30
|
+
GENESIS_BY_ID_MOD = Program.from_bytes(GENESIS_BY_COIN_ID)
|
|
31
|
+
|
|
32
|
+
GENESIS_BY_PUZHASH_MOD = Program.from_bytes(GENESIS_BY_PUZZLE_HASH)
|
|
33
|
+
|
|
34
|
+
EVERYTHING_WITH_SIG_MOD = Program.from_bytes(EVERYTHING_WITH_SIGNATURE)
|
|
35
|
+
|
|
36
|
+
DELEGATED_LIMITATIONS_MOD = Program.from_bytes(DELEGATED_TAIL)
|
|
37
|
+
|
|
38
|
+
GENESIS_BY_ID_OR_SINGLETON_MOD = Program.from_bytes(GENESIS_BY_COIN_ID_OR_SINGLETON)
|
|
42
39
|
|
|
43
40
|
|
|
44
41
|
class LimitationsProgram:
|
|
@@ -113,7 +110,7 @@ class GenesisById(LimitationsProgram):
|
|
|
113
110
|
action_scope.config.tx_config, push=False
|
|
114
111
|
) as inner_action_scope:
|
|
115
112
|
await wallet.standard_wallet.generate_signed_transaction(
|
|
116
|
-
amount, minted_cat_puzzle_hash, inner_action_scope, fee, coins, origin_id=origin_id
|
|
113
|
+
[amount], [minted_cat_puzzle_hash], inner_action_scope, fee, coins, origin_id=origin_id
|
|
117
114
|
)
|
|
118
115
|
|
|
119
116
|
async with action_scope.use() as interface:
|
|
@@ -122,7 +119,7 @@ class GenesisById(LimitationsProgram):
|
|
|
122
119
|
inner_tree_hash = cat_inner.get_tree_hash()
|
|
123
120
|
inner_solution = wallet.standard_wallet.add_condition_to_solution(
|
|
124
121
|
Program.to([51, 0, -113, tail, []]),
|
|
125
|
-
wallet.standard_wallet.make_solution(primaries=[
|
|
122
|
+
wallet.standard_wallet.make_solution(primaries=[CreateCoin(inner_tree_hash, amount, [inner_tree_hash])]),
|
|
126
123
|
)
|
|
127
124
|
eve_spend = unsigned_spend_bundle_for_spendable_cats(
|
|
128
125
|
CAT_MOD,
|
|
@@ -224,110 +221,6 @@ class DelegatedLimitations(LimitationsProgram):
|
|
|
224
221
|
)
|
|
225
222
|
|
|
226
223
|
|
|
227
|
-
class GenesisByIdOrSingleton(LimitationsProgram):
|
|
228
|
-
"""
|
|
229
|
-
This TAIL allows for another TAIL to be used, as long as a signature of that TAIL's puzzlehash is included.
|
|
230
|
-
"""
|
|
231
|
-
|
|
232
|
-
@staticmethod
|
|
233
|
-
def match(uncurried_mod: Program, curried_args: Program) -> tuple[bool, list[Program]]: # pragma: no cover
|
|
234
|
-
if uncurried_mod == GENESIS_BY_ID_OR_SINGLETON_MOD:
|
|
235
|
-
genesis_id = curried_args.first()
|
|
236
|
-
return True, [genesis_id]
|
|
237
|
-
else:
|
|
238
|
-
return False, []
|
|
239
|
-
|
|
240
|
-
@staticmethod
|
|
241
|
-
def construct(args: list[Program]) -> Program:
|
|
242
|
-
return GENESIS_BY_ID_OR_SINGLETON_MOD.curry(
|
|
243
|
-
args[0],
|
|
244
|
-
args[1],
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
@staticmethod
|
|
248
|
-
def solve(args: list[Program], solution_dict: dict) -> Program: # pragma: no cover
|
|
249
|
-
pid = hexstr_to_bytes(solution_dict["parent_coin_info"])
|
|
250
|
-
return Program.to([pid, solution_dict["amount"]])
|
|
251
|
-
|
|
252
|
-
@classmethod
|
|
253
|
-
async def generate_issuance_bundle(
|
|
254
|
-
cls,
|
|
255
|
-
wallet,
|
|
256
|
-
tail_info: dict,
|
|
257
|
-
amount: uint64,
|
|
258
|
-
action_scope: WalletActionScope,
|
|
259
|
-
fee: uint64 = uint64(0),
|
|
260
|
-
) -> WalletSpendBundle:
|
|
261
|
-
if "coins" in tail_info:
|
|
262
|
-
coins: list[Coin] = tail_info["coins"]
|
|
263
|
-
origin_id = coins.copy().pop().name()
|
|
264
|
-
else: # pragma: no cover
|
|
265
|
-
coins = await wallet.standard_wallet.select_coins(amount + fee, action_scope)
|
|
266
|
-
origin = coins.copy().pop()
|
|
267
|
-
origin_id = origin.name()
|
|
268
|
-
|
|
269
|
-
cat_inner: Program = await wallet.standard_wallet.get_puzzle(
|
|
270
|
-
new=not action_scope.config.tx_config.reuse_puzhash
|
|
271
|
-
)
|
|
272
|
-
# GENESIS_ID
|
|
273
|
-
# TREASURY_SINGLETON_STRUCT ; (SINGLETON_MOD_HASH, (LAUNCHER_ID, LAUNCHER_PUZZLE_HASH))
|
|
274
|
-
launcher_puzhash = create_cat_launcher_for_singleton_id(tail_info["treasury_id"]).get_tree_hash()
|
|
275
|
-
tail: Program = cls.construct(
|
|
276
|
-
[
|
|
277
|
-
Program.to(origin_id),
|
|
278
|
-
Program.to(launcher_puzhash),
|
|
279
|
-
]
|
|
280
|
-
)
|
|
281
|
-
|
|
282
|
-
wallet.lineage_store = await CATLineageStore.create(
|
|
283
|
-
wallet.wallet_state_manager.db_wrapper, tail.get_tree_hash().hex()
|
|
284
|
-
)
|
|
285
|
-
await wallet.add_lineage(origin_id, LineageProof())
|
|
286
|
-
|
|
287
|
-
minted_cat_puzzle_hash: bytes32 = construct_cat_puzzle(CAT_MOD, tail.get_tree_hash(), cat_inner).get_tree_hash()
|
|
288
|
-
|
|
289
|
-
async with wallet.wallet_state_manager.new_action_scope(
|
|
290
|
-
action_scope.config.tx_config, push=False
|
|
291
|
-
) as inner_action_scope:
|
|
292
|
-
await wallet.standard_wallet.generate_signed_transaction(
|
|
293
|
-
amount,
|
|
294
|
-
minted_cat_puzzle_hash,
|
|
295
|
-
inner_action_scope,
|
|
296
|
-
fee,
|
|
297
|
-
coins=set(coins),
|
|
298
|
-
origin_id=origin_id,
|
|
299
|
-
)
|
|
300
|
-
|
|
301
|
-
async with action_scope.use() as interface:
|
|
302
|
-
interface.side_effects.transactions.extend(inner_action_scope.side_effects.transactions)
|
|
303
|
-
tx_record: TransactionRecord = inner_action_scope.side_effects.transactions[0]
|
|
304
|
-
assert tx_record.spend_bundle is not None
|
|
305
|
-
payment = Payment(cat_inner.get_tree_hash(), amount)
|
|
306
|
-
inner_solution = wallet.standard_wallet.add_condition_to_solution(
|
|
307
|
-
Program.to([51, 0, -113, tail, []]),
|
|
308
|
-
wallet.standard_wallet.make_solution(
|
|
309
|
-
primaries=[payment],
|
|
310
|
-
),
|
|
311
|
-
)
|
|
312
|
-
eve_spend = unsigned_spend_bundle_for_spendable_cats(
|
|
313
|
-
CAT_MOD,
|
|
314
|
-
[
|
|
315
|
-
SpendableCAT(
|
|
316
|
-
next(filter(lambda a: a.amount == amount, tx_record.additions)),
|
|
317
|
-
tail.get_tree_hash(),
|
|
318
|
-
cat_inner,
|
|
319
|
-
inner_solution,
|
|
320
|
-
limitations_program_reveal=tail,
|
|
321
|
-
)
|
|
322
|
-
],
|
|
323
|
-
)
|
|
324
|
-
|
|
325
|
-
if wallet.cat_info.my_tail is None:
|
|
326
|
-
await wallet.save_info(CATInfo(tail.get_tree_hash(), tail))
|
|
327
|
-
|
|
328
|
-
return eve_spend
|
|
329
|
-
|
|
330
|
-
|
|
331
224
|
# This should probably be much more elegant than just a dictionary with strings as identifiers
|
|
332
225
|
# Right now this is small and experimental so it can stay like this
|
|
333
226
|
ALL_LIMITATIONS_PROGRAMS: dict[str, Any] = {
|
|
@@ -335,7 +228,6 @@ ALL_LIMITATIONS_PROGRAMS: dict[str, Any] = {
|
|
|
335
228
|
"genesis_by_puzhash": GenesisByPuzhash,
|
|
336
229
|
"everything_with_signature": EverythingWithSig,
|
|
337
230
|
"delegated_limitations": DelegatedLimitations,
|
|
338
|
-
"genesis_by_id_or_singleton": GenesisByIdOrSingleton,
|
|
339
231
|
}
|
|
340
232
|
|
|
341
233
|
|
chia/wallet/signer_protocol.py
CHANGED
|
@@ -2,12 +2,13 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
|
|
5
|
+
from chia_rs.sized_bytes import bytes32
|
|
6
|
+
from chia_rs.sized_ints import uint64
|
|
7
|
+
|
|
5
8
|
from chia.types.blockchain_format.coin import Coin as _Coin
|
|
6
9
|
from chia.types.blockchain_format.program import Program
|
|
7
10
|
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
11
|
from chia.types.coin_spend import CoinSpend
|
|
10
|
-
from chia.util.ints import uint64
|
|
11
12
|
from chia.util.streamable import Streamable
|
|
12
13
|
from chia.wallet.util.clvm_streamable import clvm_streamable
|
|
13
14
|
|
chia/wallet/singleton.py
CHANGED
|
@@ -2,12 +2,18 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Optional, Union
|
|
4
4
|
|
|
5
|
+
from chia_puzzles_py.programs import (
|
|
6
|
+
SINGLETON_LAUNCHER,
|
|
7
|
+
SINGLETON_LAUNCHER_HASH,
|
|
8
|
+
SINGLETON_TOP_LAYER_V1_1,
|
|
9
|
+
SINGLETON_TOP_LAYER_V1_1_HASH,
|
|
10
|
+
)
|
|
11
|
+
from chia_rs.sized_bytes import bytes32
|
|
12
|
+
|
|
5
13
|
from chia.types.blockchain_format.coin import Coin
|
|
6
14
|
from chia.types.blockchain_format.program import Program
|
|
7
15
|
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
16
|
from chia.types.coin_spend import CoinSpend, compute_additions
|
|
10
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
11
17
|
from chia.wallet.util.curry_and_treehash import (
|
|
12
18
|
calculate_hash_of_quoted_mod_hash,
|
|
13
19
|
curry_and_treehash,
|
|
@@ -15,12 +21,12 @@ from chia.wallet.util.curry_and_treehash import (
|
|
|
15
21
|
shatree_pair,
|
|
16
22
|
)
|
|
17
23
|
|
|
18
|
-
SINGLETON_TOP_LAYER_MOD =
|
|
19
|
-
SINGLETON_TOP_LAYER_MOD_HASH =
|
|
24
|
+
SINGLETON_TOP_LAYER_MOD = Program.from_bytes(SINGLETON_TOP_LAYER_V1_1)
|
|
25
|
+
SINGLETON_TOP_LAYER_MOD_HASH = bytes32(SINGLETON_TOP_LAYER_V1_1_HASH)
|
|
20
26
|
SINGLETON_TOP_LAYER_MOD_HASH_TREE_HASH = shatree_atom(SINGLETON_TOP_LAYER_MOD_HASH)
|
|
21
27
|
SINGLETON_TOP_LAYER_MOD_HASH_QUOTED = calculate_hash_of_quoted_mod_hash(SINGLETON_TOP_LAYER_MOD_HASH)
|
|
22
|
-
SINGLETON_LAUNCHER_PUZZLE =
|
|
23
|
-
SINGLETON_LAUNCHER_PUZZLE_HASH =
|
|
28
|
+
SINGLETON_LAUNCHER_PUZZLE = Program.from_bytes(SINGLETON_LAUNCHER)
|
|
29
|
+
SINGLETON_LAUNCHER_PUZZLE_HASH = bytes32(SINGLETON_LAUNCHER_HASH)
|
|
24
30
|
SINGLETON_LAUNCHER_PUZZLE_HASH_TREE_HASH = shatree_atom(SINGLETON_LAUNCHER_PUZZLE_HASH)
|
|
25
31
|
|
|
26
32
|
|
chia/wallet/singleton_record.py
CHANGED
|
@@ -3,10 +3,11 @@ from __future__ import annotations
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import Any, Optional
|
|
5
5
|
|
|
6
|
+
from chia_rs.sized_bytes import bytes32
|
|
7
|
+
from chia_rs.sized_ints import uint32
|
|
8
|
+
|
|
6
9
|
from chia.types.blockchain_format.coin import Coin
|
|
7
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
8
10
|
from chia.types.coin_spend import CoinSpend
|
|
9
|
-
from chia.util.ints import uint32
|
|
10
11
|
from chia.wallet.lineage_proof import LineageProof
|
|
11
12
|
|
|
12
13
|
|
chia/wallet/trade_manager.py
CHANGED
|
@@ -6,6 +6,8 @@ import time
|
|
|
6
6
|
from collections import deque
|
|
7
7
|
from typing import TYPE_CHECKING, Any, Optional, Union
|
|
8
8
|
|
|
9
|
+
from chia_rs.sized_bytes import bytes32
|
|
10
|
+
from chia_rs.sized_ints import uint32, uint64
|
|
9
11
|
from typing_extensions import Literal
|
|
10
12
|
|
|
11
13
|
from chia.data_layer.data_layer_wallet import DataLayerWallet
|
|
@@ -13,16 +15,15 @@ from chia.protocols.wallet_protocol import CoinState
|
|
|
13
15
|
from chia.server.ws_connection import WSChiaConnection
|
|
14
16
|
from chia.types.blockchain_format.coin import Coin, coin_as_list
|
|
15
17
|
from chia.types.blockchain_format.program import Program
|
|
16
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
17
18
|
from chia.types.spend_bundle import estimate_fees
|
|
18
19
|
from chia.util.db_wrapper import DBWrapper2
|
|
19
20
|
from chia.util.hash import std_hash
|
|
20
|
-
from chia.util.ints import uint32, uint64
|
|
21
21
|
from chia.wallet.cat_wallet.cat_wallet import CATWallet
|
|
22
22
|
from chia.wallet.conditions import (
|
|
23
23
|
AssertCoinAnnouncement,
|
|
24
24
|
Condition,
|
|
25
25
|
ConditionValidTimes,
|
|
26
|
+
CreateCoin,
|
|
26
27
|
CreateCoinAnnouncement,
|
|
27
28
|
parse_conditions_non_consensus,
|
|
28
29
|
parse_timelock_info,
|
|
@@ -30,9 +31,7 @@ from chia.wallet.conditions import (
|
|
|
30
31
|
from chia.wallet.db_wallet.db_wallet_puzzles import ACS_MU_PH
|
|
31
32
|
from chia.wallet.nft_wallet.nft_wallet import NFTWallet
|
|
32
33
|
from chia.wallet.outer_puzzles import AssetType
|
|
33
|
-
from chia.wallet.payment import Payment
|
|
34
34
|
from chia.wallet.puzzle_drivers import PuzzleInfo, Solver
|
|
35
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
36
35
|
from chia.wallet.trade_record import TradeRecord
|
|
37
36
|
from chia.wallet.trading.offer import NotarizedPayment, Offer
|
|
38
37
|
from chia.wallet.trading.trade_status import TradeStatus
|
|
@@ -54,8 +53,6 @@ if TYPE_CHECKING:
|
|
|
54
53
|
from chia.wallet.wallet_state_manager import WalletStateManager
|
|
55
54
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
56
55
|
|
|
57
|
-
OFFER_MOD = load_clvm_maybe_recompile("settlement_payments.clsp")
|
|
58
|
-
|
|
59
56
|
|
|
60
57
|
class TradeManager:
|
|
61
58
|
"""
|
|
@@ -325,41 +322,30 @@ class TradeManager:
|
|
|
325
322
|
uint64(fee_to_pay - coin.amount),
|
|
326
323
|
action_scope,
|
|
327
324
|
)
|
|
328
|
-
selected_coins.add(coin)
|
|
329
325
|
else:
|
|
330
|
-
selected_coins =
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
excluded_coin_ids=[],
|
|
334
|
-
),
|
|
335
|
-
push=False,
|
|
336
|
-
) as inner_action_scope:
|
|
337
|
-
await wallet.generate_signed_transaction(
|
|
338
|
-
uint64(sum(c.amount for c in selected_coins) - fee_to_pay),
|
|
339
|
-
new_ph,
|
|
340
|
-
inner_action_scope,
|
|
341
|
-
origin_id=coin.name(),
|
|
342
|
-
fee=fee_to_pay,
|
|
343
|
-
coins=selected_coins,
|
|
344
|
-
extra_conditions=(*extra_conditions, *announcement_conditions),
|
|
345
|
-
)
|
|
326
|
+
selected_coins = set()
|
|
327
|
+
selected_coins.add(coin)
|
|
328
|
+
amount_to_pay = uint64(sum(c.amount for c in selected_coins) - fee_to_pay)
|
|
346
329
|
else:
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
330
|
+
selected_coins = {coin}
|
|
331
|
+
amount_to_pay = coin.amount
|
|
332
|
+
|
|
333
|
+
# ATTENTION: new_wallets
|
|
334
|
+
assert isinstance(wallet, (Wallet, CATWallet, DataLayerWallet, NFTWallet))
|
|
335
|
+
async with self.wallet_state_manager.new_action_scope(
|
|
336
|
+
action_scope.config.tx_config.override(
|
|
337
|
+
excluded_coin_ids=[],
|
|
338
|
+
),
|
|
339
|
+
push=False,
|
|
340
|
+
) as inner_action_scope:
|
|
341
|
+
await wallet.generate_signed_transaction(
|
|
342
|
+
[amount_to_pay],
|
|
343
|
+
[new_ph],
|
|
344
|
+
inner_action_scope,
|
|
345
|
+
fee=fee_to_pay,
|
|
346
|
+
coins=selected_coins,
|
|
347
|
+
extra_conditions=(*extra_conditions, *announcement_conditions),
|
|
348
|
+
)
|
|
363
349
|
|
|
364
350
|
cancellation_additions.extend(
|
|
365
351
|
[
|
|
@@ -503,7 +489,7 @@ class TradeManager:
|
|
|
503
489
|
solver = Solver({})
|
|
504
490
|
try:
|
|
505
491
|
coins_to_offer: dict[Union[int, bytes32], set[Coin]] = {}
|
|
506
|
-
requested_payments: dict[Optional[bytes32], list[
|
|
492
|
+
requested_payments: dict[Optional[bytes32], list[CreateCoin]] = {}
|
|
507
493
|
offer_dict_no_ints: dict[Optional[bytes32], int] = {}
|
|
508
494
|
for id, amount in offer_dict.items():
|
|
509
495
|
asset_id: Optional[bytes32] = None
|
|
@@ -540,7 +526,7 @@ class TradeManager:
|
|
|
540
526
|
asset_id = id
|
|
541
527
|
wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id.hex())
|
|
542
528
|
memos = [p2_ph]
|
|
543
|
-
requested_payments[asset_id] = [
|
|
529
|
+
requested_payments[asset_id] = [CreateCoin(p2_ph, uint64(amount), memos)]
|
|
544
530
|
elif amount < 0:
|
|
545
531
|
# this is what we are sending in the trade
|
|
546
532
|
if isinstance(id, int):
|
|
@@ -637,17 +623,7 @@ class TradeManager:
|
|
|
637
623
|
) as inner_action_scope:
|
|
638
624
|
# This should probably not switch on whether or not we're spending XCH but it has to for now
|
|
639
625
|
assert wallet is not None
|
|
640
|
-
if wallet.type() == WalletType.
|
|
641
|
-
assert isinstance(wallet, Wallet)
|
|
642
|
-
await wallet.generate_signed_transaction(
|
|
643
|
-
uint64(abs(offer_dict[id])),
|
|
644
|
-
Offer.ph(),
|
|
645
|
-
inner_action_scope,
|
|
646
|
-
fee=fee_left_to_pay,
|
|
647
|
-
coins=selected_coins,
|
|
648
|
-
extra_conditions=(*extra_conditions, *announcements_to_assert),
|
|
649
|
-
)
|
|
650
|
-
elif wallet.type() == WalletType.NFT:
|
|
626
|
+
if wallet.type() == WalletType.NFT:
|
|
651
627
|
assert isinstance(wallet, NFTWallet)
|
|
652
628
|
# This is to generate the tx for specific nft assets, i.e. not using
|
|
653
629
|
# wallet_id as the selector which would select any coins from nft_wallet
|
|
@@ -663,7 +639,7 @@ class TradeManager:
|
|
|
663
639
|
)
|
|
664
640
|
else:
|
|
665
641
|
# ATTENTION: new_wallets
|
|
666
|
-
assert isinstance(wallet, (CATWallet, DataLayerWallet))
|
|
642
|
+
assert isinstance(wallet, (Wallet, CATWallet, DataLayerWallet))
|
|
667
643
|
await wallet.generate_signed_transaction(
|
|
668
644
|
[uint64(abs(offer_dict[id]))],
|
|
669
645
|
[Offer.ph()],
|
|
@@ -1054,10 +1030,10 @@ class TradeManager:
|
|
|
1054
1030
|
|
|
1055
1031
|
async def check_for_requested_payment_modifications(
|
|
1056
1032
|
self,
|
|
1057
|
-
requested_payments: dict[Optional[bytes32], list[
|
|
1033
|
+
requested_payments: dict[Optional[bytes32], list[CreateCoin]],
|
|
1058
1034
|
driver_dict: dict[bytes32, PuzzleInfo],
|
|
1059
1035
|
taking: bool,
|
|
1060
|
-
) -> dict[Optional[bytes32], list[
|
|
1036
|
+
) -> dict[Optional[bytes32], list[CreateCoin]]:
|
|
1061
1037
|
# This function exclusively deals with CR-CATs for now
|
|
1062
1038
|
if not taking:
|
|
1063
1039
|
for asset_id, puzzle_info in driver_dict.items():
|
chia/wallet/trade_record.py
CHANGED
|
@@ -3,9 +3,10 @@ from __future__ import annotations
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import Any, Optional, TypeVar
|
|
5
5
|
|
|
6
|
+
from chia_rs.sized_bytes import bytes32
|
|
7
|
+
from chia_rs.sized_ints import uint8, uint32, uint64
|
|
8
|
+
|
|
6
9
|
from chia.types.blockchain_format.coin import Coin
|
|
7
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
8
|
-
from chia.util.ints import uint8, uint32, uint64
|
|
9
10
|
from chia.util.streamable import Streamable, streamable
|
|
10
11
|
from chia.wallet.conditions import ConditionValidTimes
|
|
11
12
|
from chia.wallet.trading.offer import Offer
|