chia-blockchain 2.5.2rc1__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 +25 -15
- 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.2rc1.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.2rc1.dist-info/RECORD +0 -1042
- {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3rc1.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3rc1.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3rc1.dist-info}/entry_points.txt +0 -0
chia/wallet/conditions.py
CHANGED
|
@@ -6,13 +6,13 @@ from dataclasses import dataclass, fields, replace
|
|
|
6
6
|
from typing import Any, ClassVar, Optional, TypeVar, Union, final, get_type_hints
|
|
7
7
|
|
|
8
8
|
from chia_rs import Coin, G1Element
|
|
9
|
+
from chia_rs.sized_bytes import bytes32
|
|
10
|
+
from chia_rs.sized_ints import uint8, uint32, uint64
|
|
9
11
|
from clvm.casts import int_from_bytes, int_to_bytes
|
|
10
12
|
|
|
11
13
|
from chia.types.blockchain_format.program import Program
|
|
12
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
13
14
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
14
15
|
from chia.util.hash import std_hash
|
|
15
|
-
from chia.util.ints import uint8, uint32, uint64
|
|
16
16
|
from chia.util.streamable import Streamable, streamable
|
|
17
17
|
|
|
18
18
|
_T_Condition = TypeVar("_T_Condition", bound="Condition")
|
|
@@ -221,7 +221,7 @@ class AggSigMe(Condition):
|
|
|
221
221
|
)
|
|
222
222
|
|
|
223
223
|
|
|
224
|
-
@final
|
|
224
|
+
# @final # subclassing allowed for NotarizedPayment
|
|
225
225
|
@streamable
|
|
226
226
|
@dataclass(frozen=True)
|
|
227
227
|
class CreateCoin(Condition):
|
|
@@ -237,7 +237,7 @@ class CreateCoin(Condition):
|
|
|
237
237
|
return condition
|
|
238
238
|
|
|
239
239
|
@classmethod
|
|
240
|
-
def from_program(cls, program: Program) ->
|
|
240
|
+
def from_program(cls: type[_T_CreateCoin], program: Program) -> _T_CreateCoin:
|
|
241
241
|
potential_memos: Program = program.at("rrr")
|
|
242
242
|
return cls(
|
|
243
243
|
bytes32(program.at("rf").as_atom()),
|
|
@@ -249,6 +249,12 @@ class CreateCoin(Condition):
|
|
|
249
249
|
),
|
|
250
250
|
)
|
|
251
251
|
|
|
252
|
+
def as_condition_args(self) -> list[Union[bytes32, uint64, Optional[list[bytes]]]]:
|
|
253
|
+
return [self.puzzle_hash, self.amount, self.memos]
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
_T_CreateCoin = TypeVar("_T_CreateCoin", bound=CreateCoin)
|
|
257
|
+
|
|
252
258
|
|
|
253
259
|
@final
|
|
254
260
|
@streamable
|
|
@@ -445,9 +451,9 @@ class MessageParticipant(Streamable):
|
|
|
445
451
|
== self.coin_id_committed
|
|
446
452
|
), "The value for coin_id_committed must be equal to the implied ID of the other three arguments"
|
|
447
453
|
if self.mode_integer is not None:
|
|
448
|
-
assert (
|
|
449
|
-
|
|
450
|
-
)
|
|
454
|
+
assert self.mode == self.mode_integer, (
|
|
455
|
+
"If mode_integer is manually specified, you must specify committments that match with the mode"
|
|
456
|
+
)
|
|
451
457
|
|
|
452
458
|
@property
|
|
453
459
|
def _nothing_committed(self) -> bool:
|
|
@@ -561,14 +567,14 @@ class SendMessage(Condition):
|
|
|
561
567
|
raise ValueError("Must specify either mode_integer or both sender and reciever")
|
|
562
568
|
|
|
563
569
|
if self.mode_integer is not None and self.sender is not None:
|
|
564
|
-
assert (
|
|
565
|
-
|
|
566
|
-
)
|
|
570
|
+
assert self.mode_integer >> 3 == self.sender.mode, (
|
|
571
|
+
"The first 3 bits of mode_integer don't match the sender's mode"
|
|
572
|
+
)
|
|
567
573
|
|
|
568
574
|
if self.mode_integer is not None and self.receiver is not None:
|
|
569
|
-
assert (
|
|
570
|
-
|
|
571
|
-
)
|
|
575
|
+
assert self.mode_integer & 0b000111 == self.receiver.mode, (
|
|
576
|
+
"The last 3 bits of mode_integer don't match the receiver's mode"
|
|
577
|
+
)
|
|
572
578
|
|
|
573
579
|
if self.var_args is None and self._other_party is None:
|
|
574
580
|
raise ValueError(
|
|
@@ -576,9 +582,9 @@ class SendMessage(Condition):
|
|
|
576
582
|
)
|
|
577
583
|
|
|
578
584
|
if self.var_args is not None and self._other_party is not None and not self._other_party._nothing_committed:
|
|
579
|
-
assert (
|
|
580
|
-
self.
|
|
581
|
-
)
|
|
585
|
+
assert self.var_args == self._other_party.necessary_args, (
|
|
586
|
+
f"The implied arguments for {self._other_party} do not match the specified arguments {self.var_args}"
|
|
587
|
+
)
|
|
582
588
|
|
|
583
589
|
@property
|
|
584
590
|
def args(self) -> list[Program]:
|
|
@@ -3,31 +3,31 @@ from __future__ import annotations
|
|
|
3
3
|
from collections.abc import Iterator
|
|
4
4
|
from typing import Union
|
|
5
5
|
|
|
6
|
+
from chia_puzzles_py.programs import GRAFTROOT_DL_OFFERS as GRAFTROOT_DL_OFFERS_BYTES
|
|
7
|
+
from chia_puzzles_py.programs import P2_PARENT as P2_PARENT_BYTES
|
|
8
|
+
from chia_rs.sized_bytes import bytes32
|
|
9
|
+
from chia_rs.sized_ints import uint64
|
|
10
|
+
|
|
6
11
|
from chia.types.blockchain_format.program import INFINITE_COST, Program
|
|
7
12
|
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
13
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
10
|
-
from chia.
|
|
11
|
-
from chia.wallet.nft_wallet.nft_puzzles import NFT_STATE_LAYER_MOD
|
|
12
|
-
from chia.wallet.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
from chia.wallet.nft_wallet.nft_puzzle_utils import create_nft_layer_puzzle_with_curry_params
|
|
15
|
+
from chia.wallet.nft_wallet.nft_puzzles import NFT_STATE_LAYER_MOD
|
|
16
|
+
from chia.wallet.singleton import (
|
|
17
|
+
SINGLETON_LAUNCHER_PUZZLE_HASH,
|
|
18
|
+
SINGLETON_TOP_LAYER_MOD,
|
|
19
|
+
)
|
|
16
20
|
|
|
17
21
|
ACS_MU = Program.to(11) # returns the third argument a.k.a the full solution
|
|
18
22
|
ACS_MU_PH = ACS_MU.get_tree_hash()
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
GRAFTROOT_DL_OFFERS = load_clvm_maybe_recompile(
|
|
22
|
-
"graftroot_dl_offers.clsp", package_or_requirement="chia.data_layer.puzzles"
|
|
23
|
-
)
|
|
24
|
-
P2_PARENT = load_clvm_maybe_recompile("p2_parent.clsp")
|
|
23
|
+
GRAFTROOT_DL_OFFERS = Program.from_bytes(GRAFTROOT_DL_OFFERS_BYTES)
|
|
24
|
+
P2_PARENT = Program.from_bytes(P2_PARENT_BYTES)
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
def create_host_fullpuz(innerpuz: Union[Program, bytes32], current_root: bytes32, genesis_id: bytes32) -> Program:
|
|
28
28
|
db_layer = create_host_layer_puzzle(innerpuz, current_root)
|
|
29
29
|
mod_hash = SINGLETON_TOP_LAYER_MOD.get_tree_hash()
|
|
30
|
-
singleton_struct = Program.to((mod_hash, (genesis_id,
|
|
30
|
+
singleton_struct = Program.to((mod_hash, (genesis_id, SINGLETON_LAUNCHER_PUZZLE_HASH)))
|
|
31
31
|
return SINGLETON_TOP_LAYER_MOD.curry(singleton_struct, db_layer)
|
|
32
32
|
|
|
33
33
|
|
|
@@ -72,7 +72,7 @@ def launch_solution_to_singleton_info(launch_solution: Program) -> tuple[bytes32
|
|
|
72
72
|
|
|
73
73
|
def launcher_to_struct(launcher_id: bytes32) -> Program:
|
|
74
74
|
struct: Program = Program.to(
|
|
75
|
-
(SINGLETON_TOP_LAYER_MOD.get_tree_hash(), (launcher_id,
|
|
75
|
+
(SINGLETON_TOP_LAYER_MOD.get_tree_hash(), (launcher_id, SINGLETON_LAUNCHER_PUZZLE_HASH))
|
|
76
76
|
)
|
|
77
77
|
return struct
|
|
78
78
|
|
chia/wallet/derivation_record.py
CHANGED
|
@@ -4,9 +4,9 @@ from dataclasses import dataclass
|
|
|
4
4
|
from typing import Union
|
|
5
5
|
|
|
6
6
|
from chia_rs import G1Element
|
|
7
|
+
from chia_rs.sized_bytes import bytes32
|
|
8
|
+
from chia_rs.sized_ints import uint32
|
|
7
9
|
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
|
-
from chia.util.ints import uint32
|
|
10
10
|
from chia.wallet.util.wallet_types import WalletType
|
|
11
11
|
|
|
12
12
|
|
chia/wallet/derive_keys.py
CHANGED
|
@@ -3,10 +3,10 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import Optional
|
|
4
4
|
|
|
5
5
|
from chia_rs import AugSchemeMPL, G1Element, PrivateKey
|
|
6
|
+
from chia_rs.sized_bytes import bytes32
|
|
7
|
+
from chia_rs.sized_ints import uint32
|
|
6
8
|
|
|
7
9
|
from chia.consensus.coinbase import create_puzzlehash_for_pk
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
|
-
from chia.util.ints import uint32
|
|
10
10
|
|
|
11
11
|
# EIP 2334 bls key derivation
|
|
12
12
|
# https://eips.ethereum.org/EIPS/eip-2334
|
|
@@ -3,11 +3,12 @@ from __future__ import annotations
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
|
+
from chia_rs.sized_bytes import bytes32
|
|
7
|
+
from chia_rs.sized_ints import uint16, uint64
|
|
8
|
+
|
|
6
9
|
from chia.protocols.wallet_protocol import CoinState
|
|
7
10
|
from chia.types.blockchain_format.coin import Coin
|
|
8
11
|
from chia.types.blockchain_format.program import Program
|
|
9
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
10
|
-
from chia.util.ints import uint16, uint64
|
|
11
12
|
from chia.util.streamable import Streamable, streamable
|
|
12
13
|
from chia.wallet.lineage_proof import LineageProof
|
|
13
14
|
|
|
@@ -8,19 +8,21 @@ import time
|
|
|
8
8
|
from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
|
|
9
9
|
|
|
10
10
|
from chia_rs import AugSchemeMPL, G1Element, G2Element
|
|
11
|
+
from chia_rs.sized_bytes import bytes32
|
|
12
|
+
from chia_rs.sized_ints import uint16, uint32, uint64, uint128
|
|
13
|
+
from typing_extensions import Unpack
|
|
11
14
|
|
|
12
15
|
from chia.protocols.wallet_protocol import CoinState
|
|
13
16
|
from chia.server.ws_connection import WSChiaConnection
|
|
14
17
|
from chia.types.blockchain_format.coin import Coin
|
|
15
18
|
from chia.types.blockchain_format.program import Program
|
|
16
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
17
19
|
from chia.types.coin_spend import CoinSpend, make_spend
|
|
18
20
|
from chia.types.signing_mode import CHIP_0002_SIGN_MESSAGE_PREFIX, SigningMode
|
|
19
|
-
from chia.util.ints import uint16, uint32, uint64, uint128
|
|
20
21
|
from chia.wallet.conditions import (
|
|
21
22
|
AssertCoinAnnouncement,
|
|
22
23
|
Condition,
|
|
23
24
|
ConditionValidTimes,
|
|
25
|
+
CreateCoin,
|
|
24
26
|
CreateCoinAnnouncement,
|
|
25
27
|
parse_timelock_info,
|
|
26
28
|
)
|
|
@@ -29,7 +31,6 @@ from chia.wallet.did_wallet import did_wallet_puzzles
|
|
|
29
31
|
from chia.wallet.did_wallet.did_info import DIDCoinData, DIDInfo
|
|
30
32
|
from chia.wallet.did_wallet.did_wallet_puzzles import match_did_puzzle, uncurry_innerpuz
|
|
31
33
|
from chia.wallet.lineage_proof import LineageProof
|
|
32
|
-
from chia.wallet.payment import Payment
|
|
33
34
|
from chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle import (
|
|
34
35
|
DEFAULT_HIDDEN_PUZZLE_HASH,
|
|
35
36
|
calculate_synthetic_secret_key,
|
|
@@ -53,7 +54,7 @@ from chia.wallet.wallet import Wallet
|
|
|
53
54
|
from chia.wallet.wallet_action_scope import WalletActionScope
|
|
54
55
|
from chia.wallet.wallet_coin_record import WalletCoinRecord
|
|
55
56
|
from chia.wallet.wallet_info import WalletInfo
|
|
56
|
-
from chia.wallet.wallet_protocol import WalletProtocol
|
|
57
|
+
from chia.wallet.wallet_protocol import GSTOptionalArgs, WalletProtocol
|
|
57
58
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
58
59
|
|
|
59
60
|
|
|
@@ -488,6 +489,7 @@ class DIDWallet:
|
|
|
488
489
|
|
|
489
490
|
children_state: CoinState = children[0]
|
|
490
491
|
child_coin = children_state.coin
|
|
492
|
+
assert did_info.current_inner is not None
|
|
491
493
|
future_parent = LineageProof(
|
|
492
494
|
parent_name=child_coin.parent_coin_info,
|
|
493
495
|
inner_puzzle_hash=did_info.current_inner.get_tree_hash(),
|
|
@@ -583,7 +585,7 @@ class DIDWallet:
|
|
|
583
585
|
# innerpuz solution is (mode, p2_solution)
|
|
584
586
|
p2_solution = self.standard_wallet.make_solution(
|
|
585
587
|
primaries=[
|
|
586
|
-
|
|
588
|
+
CreateCoin(
|
|
587
589
|
puzzle_hash=new_inner_puzzle.get_tree_hash(),
|
|
588
590
|
amount=uint64(coin.amount),
|
|
589
591
|
memos=[p2_puzzle.get_tree_hash()],
|
|
@@ -695,7 +697,7 @@ class DIDWallet:
|
|
|
695
697
|
metadata=did_wallet_puzzles.metadata_to_program(json.loads(self.did_info.metadata)),
|
|
696
698
|
)
|
|
697
699
|
p2_solution = self.standard_wallet.make_solution(
|
|
698
|
-
primaries=[
|
|
700
|
+
primaries=[CreateCoin(new_did_puzhash, uint64(coin.amount), [new_puzhash])],
|
|
699
701
|
conditions=(*extra_conditions, CreateCoinAnnouncement(coin.name())),
|
|
700
702
|
)
|
|
701
703
|
# Need to include backup list reveal here, even we are don't recover
|
|
@@ -765,23 +767,31 @@ class DIDWallet:
|
|
|
765
767
|
assert self.did_info.origin_coin is not None
|
|
766
768
|
coin = await self.get_coin()
|
|
767
769
|
innerpuz: Program = self.did_info.current_inner
|
|
770
|
+
assert (
|
|
771
|
+
create_singleton_puzzle(
|
|
772
|
+
innerpuz,
|
|
773
|
+
self.did_info.origin_coin.name(),
|
|
774
|
+
).get_tree_hash()
|
|
775
|
+
== coin.puzzle_hash
|
|
776
|
+
)
|
|
777
|
+
uncurried = did_wallet_puzzles.uncurry_innerpuz(innerpuz)
|
|
778
|
+
assert uncurried is not None
|
|
779
|
+
p2_puzzle, id_list_hash, num_of_backup_ids_needed, _, metadata = uncurried
|
|
768
780
|
# Quote message puzzle & solution
|
|
769
781
|
if action_scope.config.tx_config.reuse_puzhash:
|
|
770
782
|
new_innerpuzzle_hash = innerpuz.get_tree_hash()
|
|
771
|
-
|
|
772
|
-
assert uncurried is not None
|
|
773
|
-
p2_ph = uncurried[0].get_tree_hash()
|
|
783
|
+
p2_ph = p2_puzzle.get_tree_hash()
|
|
774
784
|
else:
|
|
775
785
|
p2_ph = await self.standard_wallet.get_puzzle_hash(new=True)
|
|
776
786
|
new_innerpuzzle_hash = did_wallet_puzzles.get_inner_puzhash_by_p2(
|
|
777
787
|
p2_puzhash=p2_ph,
|
|
778
|
-
|
|
779
|
-
num_of_backup_ids_needed=
|
|
788
|
+
recovery_list_hash=bytes32(id_list_hash.as_atom()),
|
|
789
|
+
num_of_backup_ids_needed=uint64(num_of_backup_ids_needed.as_int()),
|
|
780
790
|
launcher_id=self.did_info.origin_coin.name(),
|
|
781
|
-
metadata=
|
|
791
|
+
metadata=metadata,
|
|
782
792
|
)
|
|
783
793
|
p2_solution = self.standard_wallet.make_solution(
|
|
784
|
-
primaries=[
|
|
794
|
+
primaries=[CreateCoin(puzzle_hash=new_innerpuzzle_hash, amount=uint64(coin.amount), memos=[p2_ph])],
|
|
785
795
|
conditions=extra_conditions,
|
|
786
796
|
)
|
|
787
797
|
# innerpuz solution is (mode p2_solution)
|
|
@@ -916,8 +926,8 @@ class DIDWallet:
|
|
|
916
926
|
# innerpuz solution is (mode, p2_solution)
|
|
917
927
|
p2_solution = self.standard_wallet.make_solution(
|
|
918
928
|
primaries=[
|
|
919
|
-
|
|
920
|
-
|
|
929
|
+
CreateCoin(innerpuz.get_tree_hash(), uint64(coin.amount), [p2_puzzle.get_tree_hash()]),
|
|
930
|
+
CreateCoin(innermessage, uint64(0)),
|
|
921
931
|
],
|
|
922
932
|
conditions=extra_conditions,
|
|
923
933
|
)
|
|
@@ -1224,12 +1234,11 @@ class DIDWallet:
|
|
|
1224
1234
|
announcement_message = Program.to([did_puzzle_hash, amount, bytes(0x80)]).get_tree_hash()
|
|
1225
1235
|
|
|
1226
1236
|
await self.standard_wallet.generate_signed_transaction(
|
|
1227
|
-
|
|
1228
|
-
|
|
1237
|
+
amounts=[amount],
|
|
1238
|
+
puzzle_hashes=[genesis_launcher_puz.get_tree_hash()],
|
|
1229
1239
|
action_scope=action_scope,
|
|
1230
1240
|
fee=fee,
|
|
1231
1241
|
coins=coins,
|
|
1232
|
-
primaries=None,
|
|
1233
1242
|
origin_id=origin.name(),
|
|
1234
1243
|
extra_conditions=(
|
|
1235
1244
|
AssertCoinAnnouncement(asserted_id=launcher_coin.name(), asserted_msg=announcement_message),
|
|
@@ -1309,7 +1318,7 @@ class DIDWallet:
|
|
|
1309
1318
|
p2_puzzle = uncurried[0]
|
|
1310
1319
|
# innerpuz solution is (mode p2_solution)
|
|
1311
1320
|
p2_solution = self.standard_wallet.make_solution(
|
|
1312
|
-
primaries=[
|
|
1321
|
+
primaries=[CreateCoin(innerpuz.get_tree_hash(), uint64(coin.amount), [p2_puzzle.get_tree_hash()])],
|
|
1313
1322
|
conditions=extra_conditions,
|
|
1314
1323
|
)
|
|
1315
1324
|
innersol = Program.to([1, p2_solution])
|
|
@@ -1492,3 +1501,16 @@ class DIDWallet:
|
|
|
1492
1501
|
).get_tree_hash_precalc(hint)
|
|
1493
1502
|
== coin.puzzle_hash
|
|
1494
1503
|
)
|
|
1504
|
+
|
|
1505
|
+
async def generate_signed_transaction(
|
|
1506
|
+
self,
|
|
1507
|
+
amounts: list[uint64],
|
|
1508
|
+
puzzle_hashes: list[bytes32],
|
|
1509
|
+
action_scope: WalletActionScope,
|
|
1510
|
+
fee: uint64 = uint64(0),
|
|
1511
|
+
coins: Optional[set[Coin]] = None,
|
|
1512
|
+
memos: Optional[list[list[bytes]]] = None,
|
|
1513
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1514
|
+
**kwargs: Unpack[GSTOptionalArgs],
|
|
1515
|
+
) -> None:
|
|
1516
|
+
raise NotImplementedError("DIDWallet does not implement `generate_signed_transaction`")
|
|
@@ -3,15 +3,15 @@ from __future__ import annotations
|
|
|
3
3
|
from collections.abc import Iterator
|
|
4
4
|
from typing import Optional, Union
|
|
5
5
|
|
|
6
|
+
from chia_puzzles_py.programs import DID_INNERPUZ, DID_INNERPUZ_HASH, NFT_INTERMEDIATE_LAUNCHER
|
|
6
7
|
from chia_rs import G1Element
|
|
8
|
+
from chia_rs.sized_bytes import bytes32
|
|
9
|
+
from chia_rs.sized_ints import uint64
|
|
7
10
|
|
|
8
11
|
from chia.types.blockchain_format.coin import Coin
|
|
9
12
|
from chia.types.blockchain_format.program import Program
|
|
10
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
11
13
|
from chia.types.coin_spend import CoinSpend, make_spend
|
|
12
14
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
13
|
-
from chia.util.ints import uint64
|
|
14
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
15
15
|
from chia.wallet.singleton import (
|
|
16
16
|
SINGLETON_LAUNCHER_PUZZLE_HASH,
|
|
17
17
|
SINGLETON_LAUNCHER_PUZZLE_HASH_TREE_HASH,
|
|
@@ -29,14 +29,10 @@ from chia.wallet.util.curry_and_treehash import (
|
|
|
29
29
|
shatree_pair,
|
|
30
30
|
)
|
|
31
31
|
|
|
32
|
-
DID_INNERPUZ_MOD =
|
|
33
|
-
|
|
34
|
-
)
|
|
35
|
-
DID_INNERPUZ_MOD_HASH = DID_INNERPUZ_MOD.get_tree_hash()
|
|
32
|
+
DID_INNERPUZ_MOD = Program.from_bytes(DID_INNERPUZ)
|
|
33
|
+
DID_INNERPUZ_MOD_HASH = bytes32(DID_INNERPUZ_HASH)
|
|
36
34
|
DID_INNERPUZ_MOD_HASH_QUOTED = calculate_hash_of_quoted_mod_hash(DID_INNERPUZ_MOD_HASH)
|
|
37
|
-
INTERMEDIATE_LAUNCHER_MOD =
|
|
38
|
-
"nft_intermediate_launcher.clsp", package_or_requirement="chia.wallet.nft_wallet.puzzles"
|
|
39
|
-
)
|
|
35
|
+
INTERMEDIATE_LAUNCHER_MOD = Program.from_bytes(NFT_INTERMEDIATE_LAUNCHER)
|
|
40
36
|
|
|
41
37
|
|
|
42
38
|
def create_innerpuz(
|
|
@@ -70,10 +66,11 @@ def create_innerpuz(
|
|
|
70
66
|
|
|
71
67
|
def get_inner_puzhash_by_p2(
|
|
72
68
|
p2_puzhash: bytes32,
|
|
73
|
-
recovery_list: list[bytes32],
|
|
74
69
|
num_of_backup_ids_needed: uint64,
|
|
75
70
|
launcher_id: bytes32,
|
|
76
71
|
metadata: Program = Program.to([]),
|
|
72
|
+
recovery_list: Optional[list[bytes32]] = None,
|
|
73
|
+
recovery_list_hash: Optional[bytes32] = None,
|
|
77
74
|
) -> bytes32:
|
|
78
75
|
"""
|
|
79
76
|
Calculate DID inner puzzle hash based on a P2 puzzle hash
|
|
@@ -85,7 +82,16 @@ def get_inner_puzhash_by_p2(
|
|
|
85
82
|
:return: DID inner puzzle hash
|
|
86
83
|
"""
|
|
87
84
|
|
|
88
|
-
|
|
85
|
+
if recovery_list is None and recovery_list_hash is None:
|
|
86
|
+
raise ValueError("Cannot construct DID inner puzzle without information about recovery list")
|
|
87
|
+
if recovery_list is not None and recovery_list_hash is not None:
|
|
88
|
+
raise ValueError("Must only specify recovery information a single way to construct DID inner puzzle")
|
|
89
|
+
|
|
90
|
+
if recovery_list is not None:
|
|
91
|
+
backup_ids_hash = shatree_atom_list(recovery_list)
|
|
92
|
+
else:
|
|
93
|
+
assert recovery_list_hash is not None
|
|
94
|
+
backup_ids_hash = recovery_list_hash
|
|
89
95
|
|
|
90
96
|
# singleton_struct = (MOD_HASH . (LAUNCHER_ID . LAUNCHER_PUZZLE_HASH))
|
|
91
97
|
singleton_struct = shatree_pair(
|
chia/wallet/driver_protocol.py
CHANGED
|
@@ -2,10 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Optional
|
|
4
4
|
|
|
5
|
+
from chia_rs.sized_bytes import bytes32
|
|
5
6
|
from typing_extensions import Protocol
|
|
6
7
|
|
|
7
8
|
from chia.types.blockchain_format.program import Program
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
9
|
from chia.wallet.puzzle_drivers import PuzzleInfo, Solver
|
|
10
10
|
from chia.wallet.uncurried_puzzle import UncurriedPuzzle
|
|
11
11
|
|
chia/wallet/lineage_proof.py
CHANGED
|
@@ -4,9 +4,10 @@ from dataclasses import dataclass
|
|
|
4
4
|
from enum import Enum
|
|
5
5
|
from typing import Any, Optional
|
|
6
6
|
|
|
7
|
+
from chia_rs.sized_bytes import bytes32
|
|
8
|
+
from chia_rs.sized_ints import uint64
|
|
9
|
+
|
|
7
10
|
from chia.types.blockchain_format.program import Program
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
|
-
from chia.util.ints import uint64
|
|
10
11
|
from chia.util.streamable import Streamable, streamable
|
|
11
12
|
|
|
12
13
|
|
|
@@ -3,17 +3,16 @@ from __future__ import annotations
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import Callable, Optional
|
|
5
5
|
|
|
6
|
+
from chia_rs.sized_bytes import bytes32
|
|
7
|
+
|
|
6
8
|
from chia.types.blockchain_format.program import Program
|
|
7
|
-
from chia.
|
|
9
|
+
from chia.wallet.nft_wallet.nft_puzzles import (
|
|
10
|
+
NFT_STATE_LAYER_MOD,
|
|
11
|
+
NFT_STATE_LAYER_MOD_HASH,
|
|
12
|
+
)
|
|
8
13
|
from chia.wallet.puzzle_drivers import PuzzleInfo, Solver
|
|
9
|
-
from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
|
|
10
14
|
from chia.wallet.uncurried_puzzle import UncurriedPuzzle, uncurry_puzzle
|
|
11
15
|
|
|
12
|
-
NFT_STATE_LAYER_MOD = load_clvm_maybe_recompile(
|
|
13
|
-
"nft_state_layer.clsp", package_or_requirement="chia.wallet.nft_wallet.puzzles"
|
|
14
|
-
)
|
|
15
|
-
NFT_STATE_LAYER_MOD_HASH = NFT_STATE_LAYER_MOD.get_tree_hash()
|
|
16
|
-
|
|
17
16
|
|
|
18
17
|
def match_metadata_layer_puzzle(puzzle: UncurriedPuzzle) -> tuple[bool, list[Program]]:
|
|
19
18
|
if puzzle.mod == NFT_STATE_LAYER_MOD:
|
|
@@ -3,15 +3,15 @@ from __future__ import annotations
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
|
+
from chia_rs.sized_bytes import bytes32
|
|
7
|
+
from chia_rs.sized_ints import uint16, uint32, uint64
|
|
8
|
+
|
|
6
9
|
from chia.types.blockchain_format.coin import Coin
|
|
7
10
|
from chia.types.blockchain_format.program import Program
|
|
8
|
-
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
9
|
-
from chia.util.ints import uint16, uint32, uint64
|
|
10
11
|
from chia.util.streamable import Streamable, streamable
|
|
11
12
|
from chia.wallet.lineage_proof import LineageProof
|
|
12
|
-
from chia.wallet.
|
|
13
|
+
from chia.wallet.singleton import SINGLETON_LAUNCHER_PUZZLE_HASH
|
|
13
14
|
|
|
14
|
-
LAUNCHER_PUZZLE = load_clvm_maybe_recompile("singleton_launcher.clsp")
|
|
15
15
|
IN_TRANSACTION_STATUS = "IN_TRANSACTION"
|
|
16
16
|
DEFAULT_STATUS = "DEFAULT"
|
|
17
17
|
|
|
@@ -85,7 +85,7 @@ class NFTInfo(Streamable):
|
|
|
85
85
|
minter_did: Optional[bytes32] = None
|
|
86
86
|
"""DID of the NFT minter"""
|
|
87
87
|
|
|
88
|
-
launcher_puzhash: bytes32 =
|
|
88
|
+
launcher_puzhash: bytes32 = SINGLETON_LAUNCHER_PUZZLE_HASH
|
|
89
89
|
"""Puzzle hash of the singleton launcher in hex"""
|
|
90
90
|
|
|
91
91
|
off_chain_metadata: Optional[str] = None
|