chia-blockchain 2.4.4__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 +10 -0
- chia/__main__.py +5 -0
- chia/_tests/README.md +53 -0
- chia/_tests/__init__.py +0 -0
- chia/_tests/blockchain/__init__.py +0 -0
- chia/_tests/blockchain/blockchain_test_utils.py +197 -0
- chia/_tests/blockchain/config.py +4 -0
- chia/_tests/blockchain/test_augmented_chain.py +147 -0
- chia/_tests/blockchain/test_blockchain.py +4100 -0
- chia/_tests/blockchain/test_blockchain_transactions.py +1050 -0
- chia/_tests/blockchain/test_build_chains.py +61 -0
- chia/_tests/blockchain/test_get_block_generator.py +72 -0
- chia/_tests/blockchain/test_lookup_fork_chain.py +195 -0
- chia/_tests/build-init-files.py +93 -0
- chia/_tests/build-job-matrix.py +204 -0
- chia/_tests/check_pytest_monitor_output.py +34 -0
- chia/_tests/check_sql_statements.py +73 -0
- chia/_tests/chia-start-sim +42 -0
- chia/_tests/clvm/__init__.py +0 -0
- chia/_tests/clvm/benchmark_costs.py +23 -0
- chia/_tests/clvm/coin_store.py +147 -0
- chia/_tests/clvm/test_chialisp_deserialization.py +101 -0
- chia/_tests/clvm/test_clvm_step.py +37 -0
- chia/_tests/clvm/test_condition_codes.py +13 -0
- chia/_tests/clvm/test_curry_and_treehash.py +57 -0
- chia/_tests/clvm/test_program.py +150 -0
- chia/_tests/clvm/test_puzzle_compression.py +144 -0
- chia/_tests/clvm/test_puzzle_drivers.py +45 -0
- chia/_tests/clvm/test_puzzles.py +247 -0
- chia/_tests/clvm/test_singletons.py +540 -0
- chia/_tests/clvm/test_spend_sim.py +181 -0
- chia/_tests/cmds/__init__.py +0 -0
- chia/_tests/cmds/cmd_test_utils.py +472 -0
- chia/_tests/cmds/config.py +3 -0
- chia/_tests/cmds/conftest.py +23 -0
- chia/_tests/cmds/test_click_types.py +195 -0
- chia/_tests/cmds/test_cmd_framework.py +400 -0
- chia/_tests/cmds/test_cmds_util.py +97 -0
- chia/_tests/cmds/test_daemon.py +92 -0
- chia/_tests/cmds/test_farm_cmd.py +67 -0
- chia/_tests/cmds/test_show.py +116 -0
- chia/_tests/cmds/test_sim.py +207 -0
- chia/_tests/cmds/test_timelock_args.py +75 -0
- chia/_tests/cmds/test_tx_config_args.py +153 -0
- chia/_tests/cmds/testing_classes.py +59 -0
- chia/_tests/cmds/wallet/__init__.py +0 -0
- chia/_tests/cmds/wallet/test_coins.py +195 -0
- chia/_tests/cmds/wallet/test_consts.py +47 -0
- chia/_tests/cmds/wallet/test_dao.py +565 -0
- chia/_tests/cmds/wallet/test_did.py +403 -0
- chia/_tests/cmds/wallet/test_nft.py +470 -0
- chia/_tests/cmds/wallet/test_notifications.py +124 -0
- chia/_tests/cmds/wallet/test_offer.toffer +1 -0
- chia/_tests/cmds/wallet/test_tx_decorators.py +27 -0
- chia/_tests/cmds/wallet/test_vcs.py +376 -0
- chia/_tests/cmds/wallet/test_wallet.py +1126 -0
- chia/_tests/cmds/wallet/test_wallet_check.py +111 -0
- chia/_tests/conftest.py +1304 -0
- chia/_tests/connection_utils.py +124 -0
- chia/_tests/core/__init__.py +0 -0
- chia/_tests/core/cmds/__init__.py +0 -0
- chia/_tests/core/cmds/test_beta.py +382 -0
- chia/_tests/core/cmds/test_keys.py +1734 -0
- chia/_tests/core/cmds/test_wallet.py +126 -0
- chia/_tests/core/config.py +3 -0
- chia/_tests/core/consensus/__init__.py +0 -0
- chia/_tests/core/consensus/test_block_creation.py +56 -0
- chia/_tests/core/consensus/test_pot_iterations.py +117 -0
- chia/_tests/core/custom_types/__init__.py +0 -0
- chia/_tests/core/custom_types/test_coin.py +109 -0
- chia/_tests/core/custom_types/test_proof_of_space.py +144 -0
- chia/_tests/core/custom_types/test_spend_bundle.py +71 -0
- chia/_tests/core/daemon/__init__.py +0 -0
- chia/_tests/core/daemon/config.py +4 -0
- chia/_tests/core/daemon/test_daemon.py +2128 -0
- chia/_tests/core/daemon/test_daemon_register.py +109 -0
- chia/_tests/core/daemon/test_keychain_proxy.py +100 -0
- chia/_tests/core/data_layer/__init__.py +0 -0
- chia/_tests/core/data_layer/config.py +5 -0
- chia/_tests/core/data_layer/conftest.py +105 -0
- chia/_tests/core/data_layer/test_data_cli.py +57 -0
- chia/_tests/core/data_layer/test_data_layer.py +83 -0
- chia/_tests/core/data_layer/test_data_layer_util.py +219 -0
- chia/_tests/core/data_layer/test_data_rpc.py +3865 -0
- chia/_tests/core/data_layer/test_data_store.py +2423 -0
- chia/_tests/core/data_layer/test_data_store_schema.py +381 -0
- chia/_tests/core/data_layer/test_plugin.py +91 -0
- chia/_tests/core/data_layer/util.py +232 -0
- chia/_tests/core/farmer/__init__.py +0 -0
- chia/_tests/core/farmer/config.py +3 -0
- chia/_tests/core/farmer/test_farmer_api.py +101 -0
- chia/_tests/core/full_node/__init__.py +0 -0
- chia/_tests/core/full_node/config.py +4 -0
- chia/_tests/core/full_node/dos/__init__.py +0 -0
- chia/_tests/core/full_node/dos/config.py +3 -0
- chia/_tests/core/full_node/full_sync/__init__.py +0 -0
- chia/_tests/core/full_node/full_sync/config.py +4 -0
- chia/_tests/core/full_node/full_sync/test_full_sync.py +448 -0
- chia/_tests/core/full_node/ram_db.py +27 -0
- chia/_tests/core/full_node/stores/__init__.py +0 -0
- chia/_tests/core/full_node/stores/config.py +4 -0
- chia/_tests/core/full_node/stores/test_block_store.py +488 -0
- chia/_tests/core/full_node/stores/test_coin_store.py +888 -0
- chia/_tests/core/full_node/stores/test_full_node_store.py +1215 -0
- chia/_tests/core/full_node/stores/test_hint_store.py +230 -0
- chia/_tests/core/full_node/stores/test_sync_store.py +135 -0
- chia/_tests/core/full_node/test_address_manager.py +588 -0
- chia/_tests/core/full_node/test_block_height_map.py +556 -0
- chia/_tests/core/full_node/test_conditions.py +558 -0
- chia/_tests/core/full_node/test_full_node.py +2445 -0
- chia/_tests/core/full_node/test_generator_tools.py +82 -0
- chia/_tests/core/full_node/test_hint_management.py +104 -0
- chia/_tests/core/full_node/test_node_load.py +34 -0
- chia/_tests/core/full_node/test_performance.py +182 -0
- chia/_tests/core/full_node/test_subscriptions.py +492 -0
- chia/_tests/core/full_node/test_transactions.py +203 -0
- chia/_tests/core/full_node/test_tx_processing_queue.py +154 -0
- chia/_tests/core/large_block.py +2388 -0
- chia/_tests/core/make_block_generator.py +72 -0
- chia/_tests/core/mempool/__init__.py +0 -0
- chia/_tests/core/mempool/config.py +4 -0
- chia/_tests/core/mempool/test_mempool.py +3180 -0
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +104 -0
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +55 -0
- chia/_tests/core/mempool/test_mempool_item_queries.py +192 -0
- chia/_tests/core/mempool/test_mempool_manager.py +2054 -0
- chia/_tests/core/mempool/test_mempool_performance.py +65 -0
- chia/_tests/core/mempool/test_singleton_fast_forward.py +567 -0
- chia/_tests/core/node_height.py +28 -0
- chia/_tests/core/server/__init__.py +0 -0
- chia/_tests/core/server/config.py +3 -0
- chia/_tests/core/server/flood.py +82 -0
- chia/_tests/core/server/serve.py +132 -0
- chia/_tests/core/server/test_capabilities.py +68 -0
- chia/_tests/core/server/test_dos.py +320 -0
- chia/_tests/core/server/test_event_loop.py +109 -0
- chia/_tests/core/server/test_loop.py +290 -0
- chia/_tests/core/server/test_node_discovery.py +74 -0
- chia/_tests/core/server/test_rate_limits.py +370 -0
- chia/_tests/core/server/test_server.py +225 -0
- chia/_tests/core/server/test_upnp.py +8 -0
- chia/_tests/core/services/__init__.py +0 -0
- chia/_tests/core/services/config.py +3 -0
- chia/_tests/core/services/test_services.py +166 -0
- chia/_tests/core/ssl/__init__.py +0 -0
- chia/_tests/core/ssl/config.py +3 -0
- chia/_tests/core/ssl/test_ssl.py +198 -0
- chia/_tests/core/test_coins.py +33 -0
- chia/_tests/core/test_cost_calculation.py +314 -0
- chia/_tests/core/test_crawler.py +175 -0
- chia/_tests/core/test_crawler_rpc.py +53 -0
- chia/_tests/core/test_daemon_rpc.py +24 -0
- chia/_tests/core/test_db_conversion.py +129 -0
- chia/_tests/core/test_db_validation.py +161 -0
- chia/_tests/core/test_farmer_harvester_rpc.py +504 -0
- chia/_tests/core/test_filter.py +37 -0
- chia/_tests/core/test_full_node_rpc.py +794 -0
- chia/_tests/core/test_merkle_set.py +343 -0
- chia/_tests/core/test_program.py +49 -0
- chia/_tests/core/test_rpc_util.py +87 -0
- chia/_tests/core/test_seeder.py +308 -0
- chia/_tests/core/test_setproctitle.py +13 -0
- chia/_tests/core/util/__init__.py +0 -0
- chia/_tests/core/util/config.py +4 -0
- chia/_tests/core/util/test_block_cache.py +44 -0
- chia/_tests/core/util/test_cached_bls.py +57 -0
- chia/_tests/core/util/test_config.py +337 -0
- chia/_tests/core/util/test_file_keyring_synchronization.py +105 -0
- chia/_tests/core/util/test_files.py +391 -0
- chia/_tests/core/util/test_jsonify.py +146 -0
- chia/_tests/core/util/test_keychain.py +514 -0
- chia/_tests/core/util/test_keyring_wrapper.py +490 -0
- chia/_tests/core/util/test_lockfile.py +380 -0
- chia/_tests/core/util/test_log_exceptions.py +187 -0
- chia/_tests/core/util/test_lru_cache.py +56 -0
- chia/_tests/core/util/test_significant_bits.py +40 -0
- chia/_tests/core/util/test_streamable.py +883 -0
- chia/_tests/db/__init__.py +0 -0
- chia/_tests/db/test_db_wrapper.py +565 -0
- chia/_tests/environments/__init__.py +0 -0
- chia/_tests/environments/common.py +35 -0
- chia/_tests/environments/full_node.py +47 -0
- chia/_tests/environments/wallet.py +368 -0
- chia/_tests/ether.py +19 -0
- chia/_tests/farmer_harvester/__init__.py +0 -0
- chia/_tests/farmer_harvester/config.py +3 -0
- chia/_tests/farmer_harvester/test_farmer.py +1264 -0
- chia/_tests/farmer_harvester/test_farmer_harvester.py +292 -0
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +130 -0
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +501 -0
- chia/_tests/farmer_harvester/test_third_party_harvesters_data.json +29 -0
- chia/_tests/fee_estimation/__init__.py +0 -0
- chia/_tests/fee_estimation/config.py +3 -0
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +262 -0
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +287 -0
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +145 -0
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +146 -0
- chia/_tests/generator/__init__.py +0 -0
- chia/_tests/generator/puzzles/__init__.py +0 -0
- chia/_tests/generator/puzzles/test_generator_deserialize.clsp +3 -0
- chia/_tests/generator/puzzles/test_generator_deserialize.clsp.hex +1 -0
- chia/_tests/generator/puzzles/test_multiple_generator_input_arguments.clsp +19 -0
- chia/_tests/generator/puzzles/test_multiple_generator_input_arguments.clsp.hex +1 -0
- chia/_tests/generator/test_compression.py +218 -0
- chia/_tests/generator/test_generator_types.py +44 -0
- chia/_tests/generator/test_rom.py +182 -0
- chia/_tests/plot_sync/__init__.py +0 -0
- chia/_tests/plot_sync/config.py +3 -0
- chia/_tests/plot_sync/test_delta.py +102 -0
- chia/_tests/plot_sync/test_plot_sync.py +617 -0
- chia/_tests/plot_sync/test_receiver.py +451 -0
- chia/_tests/plot_sync/test_sender.py +116 -0
- chia/_tests/plot_sync/test_sync_simulated.py +450 -0
- chia/_tests/plot_sync/util.py +67 -0
- chia/_tests/plotting/__init__.py +0 -0
- chia/_tests/plotting/config.py +3 -0
- chia/_tests/plotting/test_plot_manager.py +738 -0
- chia/_tests/plotting/util.py +13 -0
- chia/_tests/pools/__init__.py +0 -0
- chia/_tests/pools/config.py +5 -0
- chia/_tests/pools/test_pool_cmdline.py +23 -0
- chia/_tests/pools/test_pool_config.py +44 -0
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +398 -0
- chia/_tests/pools/test_pool_rpc.py +1010 -0
- chia/_tests/pools/test_pool_wallet.py +201 -0
- chia/_tests/pools/test_wallet_pool_store.py +161 -0
- chia/_tests/process_junit.py +349 -0
- chia/_tests/rpc/__init__.py +0 -0
- chia/_tests/rpc/test_rpc_client.py +81 -0
- chia/_tests/simulation/__init__.py +0 -0
- chia/_tests/simulation/config.py +6 -0
- chia/_tests/simulation/test_simulation.py +501 -0
- chia/_tests/simulation/test_simulator.py +234 -0
- chia/_tests/simulation/test_start_simulator.py +106 -0
- chia/_tests/testconfig.py +13 -0
- chia/_tests/timelord/__init__.py +0 -0
- chia/_tests/timelord/config.py +3 -0
- chia/_tests/timelord/test_new_peak.py +437 -0
- chia/_tests/timelord/test_timelord.py +11 -0
- chia/_tests/tools/1315537.json +170 -0
- chia/_tests/tools/1315544.json +160 -0
- chia/_tests/tools/1315630.json +150 -0
- chia/_tests/tools/300000.json +105 -0
- chia/_tests/tools/442734.json +140 -0
- chia/_tests/tools/466212.json +130 -0
- chia/_tests/tools/__init__.py +0 -0
- chia/_tests/tools/config.py +5 -0
- chia/_tests/tools/test-blockchain-db.sqlite +0 -0
- chia/_tests/tools/test_full_sync.py +30 -0
- chia/_tests/tools/test_legacy_keyring.py +82 -0
- chia/_tests/tools/test_run_block.py +129 -0
- chia/_tests/util/__init__.py +0 -0
- chia/_tests/util/benchmark_cost.py +170 -0
- chia/_tests/util/benchmarks.py +154 -0
- chia/_tests/util/bip39_test_vectors.json +148 -0
- chia/_tests/util/blockchain.py +133 -0
- chia/_tests/util/blockchain_mock.py +132 -0
- chia/_tests/util/build_network_protocol_files.py +302 -0
- chia/_tests/util/clvm_generator.bin +0 -0
- chia/_tests/util/config.py +3 -0
- chia/_tests/util/constants.py +20 -0
- chia/_tests/util/db_connection.py +36 -0
- chia/_tests/util/full_sync.py +245 -0
- chia/_tests/util/gen_ssl_certs.py +115 -0
- chia/_tests/util/generator_tools_testing.py +47 -0
- chia/_tests/util/key_tool.py +37 -0
- chia/_tests/util/misc.py +722 -0
- chia/_tests/util/network_protocol_data.py +1074 -0
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +2700 -0
- chia/_tests/util/rpc.py +23 -0
- chia/_tests/util/run_block.py +163 -0
- chia/_tests/util/setup_nodes.py +479 -0
- chia/_tests/util/split_managers.py +99 -0
- chia/_tests/util/temp_file.py +14 -0
- chia/_tests/util/test_action_scope.py +143 -0
- chia/_tests/util/test_async_pool.py +366 -0
- chia/_tests/util/test_build_job_matrix.py +43 -0
- chia/_tests/util/test_build_network_protocol_files.py +7 -0
- chia/_tests/util/test_chia_version.py +50 -0
- chia/_tests/util/test_collection.py +11 -0
- chia/_tests/util/test_condition_tools.py +231 -0
- chia/_tests/util/test_config.py +426 -0
- chia/_tests/util/test_dump_keyring.py +60 -0
- chia/_tests/util/test_errors.py +10 -0
- chia/_tests/util/test_full_block_utils.py +271 -0
- chia/_tests/util/test_installed.py +20 -0
- chia/_tests/util/test_limited_semaphore.py +52 -0
- chia/_tests/util/test_logging_filter.py +43 -0
- chia/_tests/util/test_misc.py +444 -0
- chia/_tests/util/test_network.py +74 -0
- chia/_tests/util/test_network_protocol_files.py +579 -0
- chia/_tests/util/test_network_protocol_json.py +266 -0
- chia/_tests/util/test_network_protocol_test.py +257 -0
- chia/_tests/util/test_paginator.py +72 -0
- chia/_tests/util/test_pprint.py +17 -0
- chia/_tests/util/test_priority_mutex.py +487 -0
- chia/_tests/util/test_recursive_replace.py +116 -0
- chia/_tests/util/test_replace_str_to_bytes.py +137 -0
- chia/_tests/util/test_service_groups.py +15 -0
- chia/_tests/util/test_ssl_check.py +31 -0
- chia/_tests/util/test_testnet_overrides.py +19 -0
- chia/_tests/util/test_tests_misc.py +38 -0
- chia/_tests/util/test_timing.py +37 -0
- chia/_tests/util/test_trusted_peer.py +51 -0
- chia/_tests/util/time_out_assert.py +154 -0
- chia/_tests/wallet/__init__.py +0 -0
- chia/_tests/wallet/cat_wallet/__init__.py +0 -0
- chia/_tests/wallet/cat_wallet/config.py +4 -0
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +468 -0
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +69 -0
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +1738 -0
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +291 -0
- chia/_tests/wallet/cat_wallet/test_trades.py +2578 -0
- chia/_tests/wallet/clawback/__init__.py +0 -0
- chia/_tests/wallet/clawback/config.py +3 -0
- chia/_tests/wallet/clawback/test_clawback_decorator.py +80 -0
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +292 -0
- chia/_tests/wallet/clawback/test_clawback_metadata.py +51 -0
- chia/_tests/wallet/config.py +4 -0
- chia/_tests/wallet/conftest.py +217 -0
- chia/_tests/wallet/dao_wallet/__init__.py +0 -0
- chia/_tests/wallet/dao_wallet/config.py +3 -0
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +1322 -0
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +3488 -0
- chia/_tests/wallet/db_wallet/__init__.py +0 -0
- chia/_tests/wallet/db_wallet/config.py +3 -0
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +143 -0
- chia/_tests/wallet/db_wallet/test_dl_offers.py +491 -0
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +823 -0
- chia/_tests/wallet/did_wallet/__init__.py +0 -0
- chia/_tests/wallet/did_wallet/config.py +4 -0
- chia/_tests/wallet/did_wallet/test_did.py +1481 -0
- chia/_tests/wallet/nft_wallet/__init__.py +0 -0
- chia/_tests/wallet/nft_wallet/config.py +4 -0
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1492 -0
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +1014 -0
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +376 -0
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +1209 -0
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +172 -0
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +2558 -0
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +70 -0
- chia/_tests/wallet/rpc/__init__.py +0 -0
- chia/_tests/wallet/rpc/config.py +4 -0
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +287 -0
- chia/_tests/wallet/rpc/test_wallet_rpc.py +3106 -0
- chia/_tests/wallet/simple_sync/__init__.py +0 -0
- chia/_tests/wallet/simple_sync/config.py +3 -0
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +719 -0
- chia/_tests/wallet/sync/__init__.py +0 -0
- chia/_tests/wallet/sync/config.py +4 -0
- chia/_tests/wallet/sync/test_wallet_sync.py +1529 -0
- chia/_tests/wallet/test_address_type.py +189 -0
- chia/_tests/wallet/test_bech32m.py +45 -0
- chia/_tests/wallet/test_clvm_streamable.py +244 -0
- chia/_tests/wallet/test_coin_selection.py +589 -0
- chia/_tests/wallet/test_conditions.py +388 -0
- chia/_tests/wallet/test_debug_spend_bundle.py +76 -0
- chia/_tests/wallet/test_new_wallet_protocol.py +1176 -0
- chia/_tests/wallet/test_nft_store.py +193 -0
- chia/_tests/wallet/test_notifications.py +196 -0
- chia/_tests/wallet/test_offer_parsing_performance.py +48 -0
- chia/_tests/wallet/test_puzzle_store.py +133 -0
- chia/_tests/wallet/test_sign_coin_spends.py +159 -0
- chia/_tests/wallet/test_signer_protocol.py +948 -0
- chia/_tests/wallet/test_singleton.py +122 -0
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +772 -0
- chia/_tests/wallet/test_singleton_store.py +152 -0
- chia/_tests/wallet/test_taproot.py +19 -0
- chia/_tests/wallet/test_transaction_store.py +941 -0
- chia/_tests/wallet/test_util.py +181 -0
- chia/_tests/wallet/test_wallet.py +2139 -0
- chia/_tests/wallet/test_wallet_action_scope.py +85 -0
- chia/_tests/wallet/test_wallet_blockchain.py +113 -0
- chia/_tests/wallet/test_wallet_coin_store.py +1002 -0
- chia/_tests/wallet/test_wallet_interested_store.py +43 -0
- chia/_tests/wallet/test_wallet_key_val_store.py +40 -0
- chia/_tests/wallet/test_wallet_node.py +783 -0
- chia/_tests/wallet/test_wallet_retry.py +95 -0
- chia/_tests/wallet/test_wallet_state_manager.py +252 -0
- chia/_tests/wallet/test_wallet_test_framework.py +275 -0
- chia/_tests/wallet/test_wallet_trade_store.py +218 -0
- chia/_tests/wallet/test_wallet_user_store.py +34 -0
- chia/_tests/wallet/test_wallet_utils.py +155 -0
- chia/_tests/wallet/vc_wallet/__init__.py +0 -0
- chia/_tests/wallet/vc_wallet/config.py +3 -0
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +70 -0
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +883 -0
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +801 -0
- chia/_tests/wallet/wallet_block_tools.py +327 -0
- chia/_tests/weight_proof/__init__.py +0 -0
- chia/_tests/weight_proof/config.py +3 -0
- chia/_tests/weight_proof/test_weight_proof.py +528 -0
- chia/clvm/__init__.py +0 -0
- chia/clvm/spend_sim.py +488 -0
- chia/cmds/__init__.py +0 -0
- chia/cmds/beta.py +183 -0
- chia/cmds/beta_funcs.py +133 -0
- chia/cmds/check_wallet_db.py +418 -0
- chia/cmds/chia.py +143 -0
- chia/cmds/cmd_classes.py +315 -0
- chia/cmds/cmds_util.py +498 -0
- chia/cmds/coin_funcs.py +260 -0
- chia/cmds/coins.py +220 -0
- chia/cmds/completion.py +49 -0
- chia/cmds/configure.py +331 -0
- chia/cmds/dao.py +1008 -0
- chia/cmds/dao_funcs.py +576 -0
- chia/cmds/data.py +707 -0
- chia/cmds/data_funcs.py +380 -0
- chia/cmds/db.py +86 -0
- chia/cmds/db_backup_func.py +77 -0
- chia/cmds/db_upgrade_func.py +452 -0
- chia/cmds/db_validate_func.py +184 -0
- chia/cmds/dev.py +16 -0
- chia/cmds/farm.py +87 -0
- chia/cmds/farm_funcs.py +207 -0
- chia/cmds/init.py +70 -0
- chia/cmds/init_funcs.py +367 -0
- chia/cmds/installers.py +129 -0
- chia/cmds/keys.py +510 -0
- chia/cmds/keys_funcs.py +864 -0
- chia/cmds/netspace.py +47 -0
- chia/cmds/netspace_funcs.py +53 -0
- chia/cmds/options.py +32 -0
- chia/cmds/param_types.py +228 -0
- chia/cmds/passphrase.py +130 -0
- chia/cmds/passphrase_funcs.py +346 -0
- chia/cmds/peer.py +50 -0
- chia/cmds/peer_funcs.py +129 -0
- chia/cmds/plotnft.py +206 -0
- chia/cmds/plotnft_funcs.py +374 -0
- chia/cmds/plots.py +222 -0
- chia/cmds/plotters.py +17 -0
- chia/cmds/rpc.py +188 -0
- chia/cmds/show.py +71 -0
- chia/cmds/show_funcs.py +214 -0
- chia/cmds/signer.py +304 -0
- chia/cmds/sim.py +217 -0
- chia/cmds/sim_funcs.py +509 -0
- chia/cmds/start.py +24 -0
- chia/cmds/start_funcs.py +112 -0
- chia/cmds/stop.py +61 -0
- chia/cmds/units.py +11 -0
- chia/cmds/wallet.py +1745 -0
- chia/cmds/wallet_funcs.py +1800 -0
- chia/consensus/__init__.py +0 -0
- chia/consensus/block_body_validation.py +515 -0
- chia/consensus/block_creation.py +525 -0
- chia/consensus/block_header_validation.py +1064 -0
- chia/consensus/block_record.py +32 -0
- chia/consensus/block_rewards.py +53 -0
- chia/consensus/block_root_validation.py +46 -0
- chia/consensus/blockchain.py +1100 -0
- chia/consensus/blockchain_interface.py +56 -0
- chia/consensus/coinbase.py +30 -0
- chia/consensus/condition_costs.py +9 -0
- chia/consensus/constants.py +49 -0
- chia/consensus/cost_calculator.py +15 -0
- chia/consensus/default_constants.py +90 -0
- chia/consensus/deficit.py +55 -0
- chia/consensus/difficulty_adjustment.py +412 -0
- chia/consensus/find_fork_point.py +111 -0
- chia/consensus/full_block_to_block_record.py +167 -0
- chia/consensus/get_block_challenge.py +106 -0
- chia/consensus/get_block_generator.py +26 -0
- chia/consensus/make_sub_epoch_summary.py +210 -0
- chia/consensus/multiprocess_validation.py +365 -0
- chia/consensus/pos_quality.py +19 -0
- chia/consensus/pot_iterations.py +67 -0
- chia/consensus/puzzles/__init__.py +0 -0
- chia/consensus/puzzles/chialisp_deserialisation.clsp +69 -0
- chia/consensus/puzzles/chialisp_deserialisation.clsp.hex +1 -0
- chia/consensus/puzzles/rom_bootstrap_generator.clsp +37 -0
- chia/consensus/puzzles/rom_bootstrap_generator.clsp.hex +1 -0
- chia/consensus/vdf_info_computation.py +156 -0
- chia/daemon/__init__.py +0 -0
- chia/daemon/client.py +233 -0
- chia/daemon/keychain_proxy.py +501 -0
- chia/daemon/keychain_server.py +365 -0
- chia/daemon/server.py +1616 -0
- chia/daemon/windows_signal.py +56 -0
- chia/data_layer/__init__.py +0 -0
- chia/data_layer/data_layer.py +1303 -0
- chia/data_layer/data_layer_api.py +25 -0
- chia/data_layer/data_layer_errors.py +50 -0
- chia/data_layer/data_layer_server.py +170 -0
- chia/data_layer/data_layer_util.py +985 -0
- chia/data_layer/data_layer_wallet.py +1315 -0
- chia/data_layer/data_store.py +2267 -0
- chia/data_layer/dl_wallet_store.py +407 -0
- chia/data_layer/download_data.py +389 -0
- chia/data_layer/puzzles/__init__.py +0 -0
- chia/data_layer/puzzles/graftroot_dl_offers.clsp +100 -0
- chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +1 -0
- chia/data_layer/s3_plugin_config.yml +33 -0
- chia/data_layer/s3_plugin_service.py +468 -0
- chia/data_layer/util/__init__.py +0 -0
- chia/data_layer/util/benchmark.py +108 -0
- chia/data_layer/util/plugin.py +41 -0
- chia/farmer/__init__.py +0 -0
- chia/farmer/farmer.py +920 -0
- chia/farmer/farmer_api.py +814 -0
- chia/full_node/__init__.py +0 -0
- chia/full_node/bitcoin_fee_estimator.py +85 -0
- chia/full_node/block_height_map.py +271 -0
- chia/full_node/block_store.py +570 -0
- chia/full_node/bundle_tools.py +19 -0
- chia/full_node/coin_store.py +646 -0
- chia/full_node/fee_estimate.py +54 -0
- chia/full_node/fee_estimate_store.py +24 -0
- chia/full_node/fee_estimation.py +93 -0
- chia/full_node/fee_estimator.py +90 -0
- chia/full_node/fee_estimator_constants.py +38 -0
- chia/full_node/fee_estimator_interface.py +42 -0
- chia/full_node/fee_history.py +26 -0
- chia/full_node/fee_tracker.py +564 -0
- chia/full_node/full_node.py +3052 -0
- chia/full_node/full_node_api.py +1974 -0
- chia/full_node/full_node_store.py +1033 -0
- chia/full_node/hint_management.py +56 -0
- chia/full_node/hint_store.py +94 -0
- chia/full_node/mempool.py +583 -0
- chia/full_node/mempool_check_conditions.py +177 -0
- chia/full_node/mempool_manager.py +858 -0
- chia/full_node/pending_tx_cache.py +112 -0
- chia/full_node/puzzles/__init__.py +0 -0
- chia/full_node/puzzles/block_program_zero.clsp +14 -0
- chia/full_node/puzzles/block_program_zero.clsp.hex +1 -0
- chia/full_node/puzzles/decompress_coin_spend_entry.clsp +5 -0
- chia/full_node/puzzles/decompress_coin_spend_entry.clsp.hex +1 -0
- chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp +7 -0
- chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp.hex +1 -0
- chia/full_node/puzzles/decompress_puzzle.clsp +6 -0
- chia/full_node/puzzles/decompress_puzzle.clsp.hex +1 -0
- chia/full_node/signage_point.py +16 -0
- chia/full_node/subscriptions.py +248 -0
- chia/full_node/sync_store.py +145 -0
- chia/full_node/tx_processing_queue.py +78 -0
- chia/full_node/weight_proof.py +1719 -0
- chia/harvester/__init__.py +0 -0
- chia/harvester/harvester.py +271 -0
- chia/harvester/harvester_api.py +374 -0
- chia/introducer/__init__.py +0 -0
- chia/introducer/introducer.py +120 -0
- chia/introducer/introducer_api.py +64 -0
- chia/legacy/__init__.py +0 -0
- chia/legacy/keyring.py +154 -0
- chia/plot_sync/__init__.py +0 -0
- chia/plot_sync/delta.py +61 -0
- chia/plot_sync/exceptions.py +56 -0
- chia/plot_sync/receiver.py +385 -0
- chia/plot_sync/sender.py +337 -0
- chia/plot_sync/util.py +43 -0
- chia/plotters/__init__.py +0 -0
- chia/plotters/bladebit.py +388 -0
- chia/plotters/chiapos.py +63 -0
- chia/plotters/madmax.py +224 -0
- chia/plotters/plotters.py +577 -0
- chia/plotters/plotters_util.py +131 -0
- chia/plotting/__init__.py +0 -0
- chia/plotting/cache.py +212 -0
- chia/plotting/check_plots.py +283 -0
- chia/plotting/create_plots.py +278 -0
- chia/plotting/manager.py +436 -0
- chia/plotting/util.py +324 -0
- chia/pools/__init__.py +0 -0
- chia/pools/pool_config.py +110 -0
- chia/pools/pool_puzzles.py +459 -0
- chia/pools/pool_wallet.py +926 -0
- chia/pools/pool_wallet_info.py +118 -0
- chia/pools/puzzles/__init__.py +0 -0
- chia/pools/puzzles/pool_member_innerpuz.clsp +70 -0
- chia/pools/puzzles/pool_member_innerpuz.clsp.hex +1 -0
- chia/pools/puzzles/pool_waitingroom_innerpuz.clsp +69 -0
- chia/pools/puzzles/pool_waitingroom_innerpuz.clsp.hex +1 -0
- chia/protocols/__init__.py +0 -0
- chia/protocols/farmer_protocol.py +102 -0
- chia/protocols/full_node_protocol.py +219 -0
- chia/protocols/harvester_protocol.py +216 -0
- chia/protocols/introducer_protocol.py +26 -0
- chia/protocols/pool_protocol.py +177 -0
- chia/protocols/protocol_message_types.py +139 -0
- chia/protocols/protocol_state_machine.py +87 -0
- chia/protocols/protocol_timing.py +7 -0
- chia/protocols/shared_protocol.py +86 -0
- chia/protocols/timelord_protocol.py +93 -0
- chia/protocols/wallet_protocol.py +401 -0
- chia/py.typed +0 -0
- chia/rpc/__init__.py +0 -0
- chia/rpc/crawler_rpc_api.py +75 -0
- chia/rpc/data_layer_rpc_api.py +639 -0
- chia/rpc/data_layer_rpc_client.py +188 -0
- chia/rpc/data_layer_rpc_util.py +62 -0
- chia/rpc/farmer_rpc_api.py +360 -0
- chia/rpc/farmer_rpc_client.py +86 -0
- chia/rpc/full_node_rpc_api.py +954 -0
- chia/rpc/full_node_rpc_client.py +292 -0
- chia/rpc/harvester_rpc_api.py +136 -0
- chia/rpc/harvester_rpc_client.py +54 -0
- chia/rpc/rpc_client.py +144 -0
- chia/rpc/rpc_server.py +447 -0
- chia/rpc/timelord_rpc_api.py +27 -0
- chia/rpc/util.py +293 -0
- chia/rpc/wallet_request_types.py +688 -0
- chia/rpc/wallet_rpc_api.py +4779 -0
- chia/rpc/wallet_rpc_client.py +1844 -0
- chia/seeder/__init__.py +0 -0
- chia/seeder/crawl_store.py +427 -0
- chia/seeder/crawler.py +423 -0
- chia/seeder/crawler_api.py +129 -0
- chia/seeder/dns_server.py +544 -0
- chia/seeder/peer_record.py +146 -0
- chia/seeder/start_crawler.py +88 -0
- chia/server/__init__.py +0 -0
- chia/server/address_manager.py +658 -0
- chia/server/address_manager_store.py +237 -0
- chia/server/api_protocol.py +11 -0
- chia/server/capabilities.py +24 -0
- chia/server/chia_policy.py +345 -0
- chia/server/introducer_peers.py +76 -0
- chia/server/node_discovery.py +718 -0
- chia/server/outbound_message.py +33 -0
- chia/server/rate_limit_numbers.py +204 -0
- chia/server/rate_limits.py +113 -0
- chia/server/server.py +720 -0
- chia/server/signal_handlers.py +117 -0
- chia/server/ssl_context.py +32 -0
- chia/server/start_data_layer.py +137 -0
- chia/server/start_farmer.py +86 -0
- chia/server/start_full_node.py +106 -0
- chia/server/start_harvester.py +80 -0
- chia/server/start_introducer.py +69 -0
- chia/server/start_service.py +328 -0
- chia/server/start_timelord.py +82 -0
- chia/server/start_wallet.py +109 -0
- chia/server/upnp.py +117 -0
- chia/server/ws_connection.py +752 -0
- chia/simulator/__init__.py +0 -0
- chia/simulator/block_tools.py +2053 -0
- chia/simulator/full_node_simulator.py +802 -0
- chia/simulator/keyring.py +128 -0
- chia/simulator/setup_services.py +505 -0
- chia/simulator/simulator_constants.py +13 -0
- chia/simulator/simulator_full_node_rpc_api.py +101 -0
- chia/simulator/simulator_full_node_rpc_client.py +62 -0
- chia/simulator/simulator_protocol.py +29 -0
- chia/simulator/simulator_test_tools.py +163 -0
- chia/simulator/socket.py +27 -0
- chia/simulator/ssl_certs.py +114 -0
- chia/simulator/ssl_certs_1.py +699 -0
- chia/simulator/ssl_certs_10.py +699 -0
- chia/simulator/ssl_certs_2.py +699 -0
- chia/simulator/ssl_certs_3.py +699 -0
- chia/simulator/ssl_certs_4.py +699 -0
- chia/simulator/ssl_certs_5.py +699 -0
- chia/simulator/ssl_certs_6.py +699 -0
- chia/simulator/ssl_certs_7.py +699 -0
- chia/simulator/ssl_certs_8.py +699 -0
- chia/simulator/ssl_certs_9.py +699 -0
- chia/simulator/start_simulator.py +135 -0
- chia/simulator/wallet_tools.py +245 -0
- chia/ssl/__init__.py +0 -0
- chia/ssl/chia_ca.crt +19 -0
- chia/ssl/chia_ca.key +28 -0
- chia/ssl/create_ssl.py +249 -0
- chia/ssl/dst_root_ca.pem +20 -0
- chia/timelord/__init__.py +0 -0
- chia/timelord/iters_from_block.py +50 -0
- chia/timelord/timelord.py +1202 -0
- chia/timelord/timelord_api.py +132 -0
- chia/timelord/timelord_launcher.py +188 -0
- chia/timelord/timelord_state.py +244 -0
- chia/timelord/types.py +22 -0
- chia/types/__init__.py +0 -0
- chia/types/aliases.py +35 -0
- chia/types/block_protocol.py +20 -0
- chia/types/blockchain_format/__init__.py +0 -0
- chia/types/blockchain_format/classgroup.py +5 -0
- chia/types/blockchain_format/coin.py +28 -0
- chia/types/blockchain_format/foliage.py +8 -0
- chia/types/blockchain_format/pool_target.py +5 -0
- chia/types/blockchain_format/program.py +270 -0
- chia/types/blockchain_format/proof_of_space.py +135 -0
- chia/types/blockchain_format/reward_chain_block.py +6 -0
- chia/types/blockchain_format/serialized_program.py +5 -0
- chia/types/blockchain_format/sized_bytes.py +11 -0
- chia/types/blockchain_format/slots.py +9 -0
- chia/types/blockchain_format/sub_epoch_summary.py +5 -0
- chia/types/blockchain_format/tree_hash.py +72 -0
- chia/types/blockchain_format/vdf.py +86 -0
- chia/types/clvm_cost.py +13 -0
- chia/types/coin_record.py +43 -0
- chia/types/coin_spend.py +115 -0
- chia/types/condition_opcodes.py +73 -0
- chia/types/condition_with_args.py +17 -0
- chia/types/eligible_coin_spends.py +364 -0
- chia/types/end_of_slot_bundle.py +5 -0
- chia/types/fee_rate.py +38 -0
- chia/types/full_block.py +5 -0
- chia/types/generator_types.py +14 -0
- chia/types/header_block.py +5 -0
- chia/types/internal_mempool_item.py +19 -0
- chia/types/mempool_inclusion_status.py +9 -0
- chia/types/mempool_item.py +85 -0
- chia/types/mempool_submission_status.py +30 -0
- chia/types/mojos.py +7 -0
- chia/types/peer_info.py +64 -0
- chia/types/signing_mode.py +29 -0
- chia/types/spend_bundle.py +31 -0
- chia/types/spend_bundle_conditions.py +7 -0
- chia/types/transaction_queue_entry.py +55 -0
- chia/types/unfinished_block.py +5 -0
- chia/types/unfinished_header_block.py +37 -0
- chia/types/weight_proof.py +50 -0
- chia/util/__init__.py +0 -0
- chia/util/action_scope.py +168 -0
- chia/util/api_decorators.py +89 -0
- chia/util/async_pool.py +224 -0
- chia/util/augmented_chain.py +130 -0
- chia/util/batches.py +39 -0
- chia/util/bech32m.py +123 -0
- chia/util/beta_metrics.py +118 -0
- chia/util/block_cache.py +56 -0
- chia/util/byte_types.py +10 -0
- chia/util/check_fork_next_block.py +32 -0
- chia/util/chia_logging.py +124 -0
- chia/util/chia_version.py +33 -0
- chia/util/collection.py +17 -0
- chia/util/condition_tools.py +201 -0
- chia/util/config.py +366 -0
- chia/util/cpu.py +20 -0
- chia/util/db_synchronous.py +21 -0
- chia/util/db_version.py +30 -0
- chia/util/db_wrapper.py +427 -0
- chia/util/default_root.py +10 -0
- chia/util/dump_keyring.py +93 -0
- chia/util/english.txt +2048 -0
- chia/util/errors.py +351 -0
- chia/util/file_keyring.py +480 -0
- chia/util/files.py +95 -0
- chia/util/full_block_utils.py +321 -0
- chia/util/generator_tools.py +62 -0
- chia/util/hash.py +29 -0
- chia/util/initial-config.yaml +675 -0
- chia/util/inline_executor.py +24 -0
- chia/util/ints.py +19 -0
- chia/util/json_util.py +41 -0
- chia/util/keychain.py +673 -0
- chia/util/keyring_wrapper.py +266 -0
- chia/util/limited_semaphore.py +39 -0
- chia/util/lock.py +47 -0
- chia/util/log_exceptions.py +29 -0
- chia/util/logging.py +34 -0
- chia/util/lru_cache.py +29 -0
- chia/util/math.py +20 -0
- chia/util/network.py +240 -0
- chia/util/paginator.py +46 -0
- chia/util/path.py +29 -0
- chia/util/permissions.py +19 -0
- chia/util/pprint.py +40 -0
- chia/util/prev_transaction_block.py +23 -0
- chia/util/priority_mutex.py +92 -0
- chia/util/profiler.py +194 -0
- chia/util/recursive_replace.py +22 -0
- chia/util/safe_cancel_task.py +14 -0
- chia/util/service_groups.py +47 -0
- chia/util/setproctitle.py +20 -0
- chia/util/significant_bits.py +30 -0
- chia/util/ssl_check.py +213 -0
- chia/util/streamable.py +654 -0
- chia/util/task_timing.py +378 -0
- chia/util/timing.py +64 -0
- chia/util/vdf_prover.py +31 -0
- chia/util/ws_message.py +66 -0
- chia/wallet/__init__.py +0 -0
- chia/wallet/cat_wallet/__init__.py +0 -0
- chia/wallet/cat_wallet/cat_constants.py +75 -0
- chia/wallet/cat_wallet/cat_info.py +47 -0
- chia/wallet/cat_wallet/cat_outer_puzzle.py +120 -0
- chia/wallet/cat_wallet/cat_utils.py +163 -0
- chia/wallet/cat_wallet/cat_wallet.py +869 -0
- chia/wallet/cat_wallet/dao_cat_info.py +28 -0
- chia/wallet/cat_wallet/dao_cat_wallet.py +669 -0
- chia/wallet/cat_wallet/lineage_store.py +74 -0
- chia/wallet/cat_wallet/puzzles/__init__.py +0 -0
- chia/wallet/cat_wallet/puzzles/cat_truths.clib +31 -0
- chia/wallet/cat_wallet/puzzles/cat_v2.clsp +397 -0
- chia/wallet/cat_wallet/puzzles/cat_v2.clsp.hex +1 -0
- chia/wallet/cat_wallet/puzzles/delegated_tail.clsp +25 -0
- chia/wallet/cat_wallet/puzzles/delegated_tail.clsp.hex +1 -0
- chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp +15 -0
- chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp.hex +1 -0
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp +26 -0
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp.hex +1 -0
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp +42 -0
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp.hex +1 -0
- chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp +24 -0
- chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp.hex +1 -0
- chia/wallet/coin_selection.py +188 -0
- chia/wallet/conditions.py +1326 -0
- chia/wallet/dao_wallet/__init__.py +0 -0
- chia/wallet/dao_wallet/dao_info.py +61 -0
- chia/wallet/dao_wallet/dao_utils.py +810 -0
- chia/wallet/dao_wallet/dao_wallet.py +2121 -0
- chia/wallet/db_wallet/__init__.py +0 -0
- chia/wallet/db_wallet/db_wallet_puzzles.py +107 -0
- chia/wallet/derivation_record.py +30 -0
- chia/wallet/derive_keys.py +146 -0
- chia/wallet/did_wallet/__init__.py +0 -0
- chia/wallet/did_wallet/did_info.py +39 -0
- chia/wallet/did_wallet/did_wallet.py +1485 -0
- chia/wallet/did_wallet/did_wallet_puzzles.py +220 -0
- chia/wallet/did_wallet/puzzles/__init__.py +0 -0
- chia/wallet/did_wallet/puzzles/did_innerpuz.clsp +135 -0
- chia/wallet/did_wallet/puzzles/did_innerpuz.clsp.hex +1 -0
- chia/wallet/driver_protocol.py +26 -0
- chia/wallet/key_val_store.py +55 -0
- chia/wallet/lineage_proof.py +58 -0
- chia/wallet/nft_wallet/__init__.py +0 -0
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +92 -0
- chia/wallet/nft_wallet/nft_info.py +120 -0
- chia/wallet/nft_wallet/nft_puzzles.py +305 -0
- chia/wallet/nft_wallet/nft_wallet.py +1686 -0
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +101 -0
- chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +6 -0
- chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +1 -0
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +6 -0
- chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +1 -0
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +30 -0
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +1 -0
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +28 -0
- chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +1 -0
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +100 -0
- chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +1 -0
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +78 -0
- chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +1 -0
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +74 -0
- chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +1 -0
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +101 -0
- chia/wallet/nft_wallet/transfer_program_puzzle.py +82 -0
- chia/wallet/nft_wallet/uncurry_nft.py +217 -0
- chia/wallet/notification_manager.py +117 -0
- chia/wallet/notification_store.py +178 -0
- chia/wallet/outer_puzzles.py +84 -0
- chia/wallet/payment.py +34 -0
- chia/wallet/puzzle_drivers.py +118 -0
- chia/wallet/puzzles/__init__.py +0 -0
- chia/wallet/puzzles/augmented_condition.clsp +13 -0
- chia/wallet/puzzles/augmented_condition.clsp.hex +1 -0
- chia/wallet/puzzles/clawback/__init__.py +0 -0
- chia/wallet/puzzles/clawback/drivers.py +188 -0
- chia/wallet/puzzles/clawback/metadata.py +38 -0
- chia/wallet/puzzles/clawback/puzzle_decorator.py +67 -0
- chia/wallet/puzzles/condition_codes.clib +77 -0
- chia/wallet/puzzles/curry-and-treehash.clib +102 -0
- chia/wallet/puzzles/curry.clib +135 -0
- chia/wallet/puzzles/curry_by_index.clib +16 -0
- chia/wallet/puzzles/dao_cat_eve.clsp +17 -0
- chia/wallet/puzzles/dao_cat_eve.clsp.hex +1 -0
- chia/wallet/puzzles/dao_cat_launcher.clsp +36 -0
- chia/wallet/puzzles/dao_cat_launcher.clsp.hex +1 -0
- chia/wallet/puzzles/dao_finished_state.clsp +35 -0
- chia/wallet/puzzles/dao_finished_state.clsp.hex +1 -0
- chia/wallet/puzzles/dao_finished_state.clsp.hex.sha256tree +1 -0
- chia/wallet/puzzles/dao_lockup.clsp +288 -0
- chia/wallet/puzzles/dao_lockup.clsp.hex +1 -0
- chia/wallet/puzzles/dao_lockup.clsp.hex.sha256tree +1 -0
- chia/wallet/puzzles/dao_proposal.clsp +377 -0
- chia/wallet/puzzles/dao_proposal.clsp.hex +1 -0
- chia/wallet/puzzles/dao_proposal.clsp.hex.sha256tree +1 -0
- chia/wallet/puzzles/dao_proposal_timer.clsp +78 -0
- chia/wallet/puzzles/dao_proposal_timer.clsp.hex +1 -0
- chia/wallet/puzzles/dao_proposal_timer.clsp.hex.sha256tree +1 -0
- chia/wallet/puzzles/dao_proposal_validator.clsp +87 -0
- chia/wallet/puzzles/dao_proposal_validator.clsp.hex +1 -0
- chia/wallet/puzzles/dao_proposal_validator.clsp.hex.sha256tree +1 -0
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp +240 -0
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex +1 -0
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex.sha256tree +1 -0
- chia/wallet/puzzles/dao_treasury.clsp +115 -0
- chia/wallet/puzzles/dao_treasury.clsp.hex +1 -0
- chia/wallet/puzzles/dao_update_proposal.clsp +44 -0
- chia/wallet/puzzles/dao_update_proposal.clsp.hex +1 -0
- chia/wallet/puzzles/deployed_puzzle_hashes.json +67 -0
- chia/wallet/puzzles/json.clib +25 -0
- chia/wallet/puzzles/load_clvm.py +162 -0
- chia/wallet/puzzles/merkle_utils.clib +18 -0
- chia/wallet/puzzles/notification.clsp +7 -0
- chia/wallet/puzzles/notification.clsp.hex +1 -0
- chia/wallet/puzzles/p2_1_of_n.clsp +22 -0
- chia/wallet/puzzles/p2_1_of_n.clsp.hex +1 -0
- chia/wallet/puzzles/p2_conditions.clsp +3 -0
- chia/wallet/puzzles/p2_conditions.clsp.hex +1 -0
- chia/wallet/puzzles/p2_conditions.py +27 -0
- chia/wallet/puzzles/p2_delegated_conditions.clsp +18 -0
- chia/wallet/puzzles/p2_delegated_conditions.clsp.hex +1 -0
- chia/wallet/puzzles/p2_delegated_conditions.py +22 -0
- chia/wallet/puzzles/p2_delegated_puzzle.clsp +19 -0
- chia/wallet/puzzles/p2_delegated_puzzle.clsp.hex +1 -0
- chia/wallet/puzzles/p2_delegated_puzzle.py +35 -0
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp +91 -0
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp.hex +1 -0
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +161 -0
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp +108 -0
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp.hex +1 -0
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +22 -0
- chia/wallet/puzzles/p2_parent.clsp +19 -0
- chia/wallet/puzzles/p2_parent.clsp.hex +1 -0
- chia/wallet/puzzles/p2_puzzle_hash.clsp +18 -0
- chia/wallet/puzzles/p2_puzzle_hash.clsp.hex +1 -0
- chia/wallet/puzzles/p2_puzzle_hash.py +28 -0
- chia/wallet/puzzles/p2_singleton.clsp +30 -0
- chia/wallet/puzzles/p2_singleton.clsp.hex +1 -0
- chia/wallet/puzzles/p2_singleton_aggregator.clsp +81 -0
- chia/wallet/puzzles/p2_singleton_aggregator.clsp.hex +1 -0
- chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp +50 -0
- chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp.hex +1 -0
- chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp +47 -0
- chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp.hex +1 -0
- chia/wallet/puzzles/puzzle_utils.py +34 -0
- chia/wallet/puzzles/settlement_payments.clsp +49 -0
- chia/wallet/puzzles/settlement_payments.clsp.hex +1 -0
- chia/wallet/puzzles/sha256tree.clib +11 -0
- chia/wallet/puzzles/singleton_launcher.clsp +16 -0
- chia/wallet/puzzles/singleton_launcher.clsp.hex +1 -0
- chia/wallet/puzzles/singleton_top_layer.clsp +177 -0
- chia/wallet/puzzles/singleton_top_layer.clsp.hex +1 -0
- chia/wallet/puzzles/singleton_top_layer.py +295 -0
- chia/wallet/puzzles/singleton_top_layer_v1_1.clsp +107 -0
- chia/wallet/puzzles/singleton_top_layer_v1_1.clsp.hex +1 -0
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +344 -0
- chia/wallet/puzzles/singleton_truths.clib +21 -0
- chia/wallet/puzzles/tails.py +344 -0
- chia/wallet/puzzles/utility_macros.clib +48 -0
- chia/wallet/signer_protocol.py +126 -0
- chia/wallet/singleton.py +106 -0
- chia/wallet/singleton_record.py +30 -0
- chia/wallet/trade_manager.py +1088 -0
- chia/wallet/trade_record.py +67 -0
- chia/wallet/trading/__init__.py +0 -0
- chia/wallet/trading/offer.py +703 -0
- chia/wallet/trading/trade_status.py +13 -0
- chia/wallet/trading/trade_store.py +526 -0
- chia/wallet/transaction_record.py +143 -0
- chia/wallet/transaction_sorting.py +14 -0
- chia/wallet/uncurried_puzzle.py +17 -0
- chia/wallet/util/__init__.py +0 -0
- chia/wallet/util/address_type.py +55 -0
- chia/wallet/util/blind_signer_tl.py +168 -0
- chia/wallet/util/clvm_streamable.py +203 -0
- chia/wallet/util/compute_hints.py +66 -0
- chia/wallet/util/compute_memos.py +45 -0
- chia/wallet/util/curry_and_treehash.py +90 -0
- chia/wallet/util/debug_spend_bundle.py +234 -0
- chia/wallet/util/merkle_tree.py +100 -0
- chia/wallet/util/merkle_utils.py +102 -0
- chia/wallet/util/new_peak_queue.py +82 -0
- chia/wallet/util/notifications.py +12 -0
- chia/wallet/util/peer_request_cache.py +174 -0
- chia/wallet/util/puzzle_compression.py +96 -0
- chia/wallet/util/puzzle_decorator.py +100 -0
- chia/wallet/util/puzzle_decorator_type.py +7 -0
- chia/wallet/util/query_filter.py +60 -0
- chia/wallet/util/transaction_type.py +23 -0
- chia/wallet/util/tx_config.py +158 -0
- chia/wallet/util/wallet_sync_utils.py +348 -0
- chia/wallet/util/wallet_types.py +65 -0
- chia/wallet/vc_wallet/__init__.py +0 -0
- chia/wallet/vc_wallet/cr_cat_drivers.py +663 -0
- chia/wallet/vc_wallet/cr_cat_wallet.py +875 -0
- chia/wallet/vc_wallet/cr_outer_puzzle.py +102 -0
- chia/wallet/vc_wallet/cr_puzzles/__init__.py +0 -0
- chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp +3 -0
- chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp.hex +1 -0
- chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp +304 -0
- chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp.hex +1 -0
- chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp +45 -0
- chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_drivers.py +838 -0
- chia/wallet/vc_wallet/vc_puzzles/__init__.py +0 -0
- chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp +30 -0
- chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp +75 -0
- chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp +32 -0
- chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp +80 -0
- chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp +163 -0
- chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp +16 -0
- chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp +74 -0
- chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp +23 -0
- chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp +64 -0
- chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp.hex +1 -0
- chia/wallet/vc_wallet/vc_store.py +263 -0
- chia/wallet/vc_wallet/vc_wallet.py +638 -0
- chia/wallet/wallet.py +698 -0
- chia/wallet/wallet_action_scope.py +95 -0
- chia/wallet/wallet_blockchain.py +244 -0
- chia/wallet/wallet_coin_record.py +72 -0
- chia/wallet/wallet_coin_store.py +351 -0
- chia/wallet/wallet_info.py +36 -0
- chia/wallet/wallet_interested_store.py +188 -0
- chia/wallet/wallet_nft_store.py +279 -0
- chia/wallet/wallet_node.py +1769 -0
- chia/wallet/wallet_node_api.py +201 -0
- chia/wallet/wallet_pool_store.py +120 -0
- chia/wallet/wallet_protocol.py +90 -0
- chia/wallet/wallet_puzzle_store.py +365 -0
- chia/wallet/wallet_retry_store.py +70 -0
- chia/wallet/wallet_singleton_store.py +258 -0
- chia/wallet/wallet_spend_bundle.py +41 -0
- chia/wallet/wallet_state_manager.py +2820 -0
- chia/wallet/wallet_transaction_store.py +470 -0
- chia/wallet/wallet_user_store.py +110 -0
- chia/wallet/wallet_weight_proof_handler.py +126 -0
- chia_blockchain-2.4.4.dist-info/LICENSE +201 -0
- chia_blockchain-2.4.4.dist-info/METADATA +161 -0
- chia_blockchain-2.4.4.dist-info/RECORD +1028 -0
- chia_blockchain-2.4.4.dist-info/WHEEL +4 -0
- chia_blockchain-2.4.4.dist-info/entry_points.txt +17 -0
- mozilla-ca/cacert.pem +3666 -0
chia/cmds/plotnft.py
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from chia.cmds import options
|
|
8
|
+
from chia.cmds.param_types import AddressParamType, Bytes32ParamType, CliAddress
|
|
9
|
+
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
10
|
+
from chia.util.ints import uint64
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@click.group("plotnft", help="Manage your plot NFTs")
|
|
14
|
+
def plotnft_cmd() -> None:
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@plotnft_cmd.command("show", help="Show plotnft information")
|
|
19
|
+
@click.option(
|
|
20
|
+
"-wp",
|
|
21
|
+
"--wallet-rpc-port",
|
|
22
|
+
help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
|
|
23
|
+
type=int,
|
|
24
|
+
default=None,
|
|
25
|
+
)
|
|
26
|
+
@click.option("-i", "--id", help="ID of the wallet to use", type=int, default=None, show_default=True, required=False)
|
|
27
|
+
@options.create_fingerprint()
|
|
28
|
+
def show_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int) -> None:
|
|
29
|
+
import asyncio
|
|
30
|
+
|
|
31
|
+
from .plotnft_funcs import show
|
|
32
|
+
|
|
33
|
+
asyncio.run(show(wallet_rpc_port, fingerprint, id))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@plotnft_cmd.command("get_login_link", help="Create a login link for a pool. To get the launcher id, use plotnft show.")
|
|
37
|
+
@click.option("-l", "--launcher_id", help="Launcher ID of the plotnft", type=Bytes32ParamType(), required=True)
|
|
38
|
+
def get_login_link_cmd(launcher_id: bytes32) -> None:
|
|
39
|
+
import asyncio
|
|
40
|
+
|
|
41
|
+
from .plotnft_funcs import get_login_link
|
|
42
|
+
|
|
43
|
+
asyncio.run(get_login_link(launcher_id))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# Functions with this mark in this file are not being ported to @tx_out_cmd due to lack of observer key support
|
|
47
|
+
# They will therefore not work with observer-only functionality
|
|
48
|
+
# NOTE: tx_endpoint (This creates wallet transactions and should be parametrized by relevant options)
|
|
49
|
+
@plotnft_cmd.command("create", help="Create a plot NFT")
|
|
50
|
+
@click.option("-y", "--yes", "dont_prompt", help="No prompts", is_flag=True)
|
|
51
|
+
@options.create_fingerprint()
|
|
52
|
+
@click.option("-u", "--pool_url", help="HTTPS host:port of the pool to join", type=str, required=False)
|
|
53
|
+
@click.option("-s", "--state", help="Initial state of Plot NFT: local or pool", type=str, required=True)
|
|
54
|
+
@options.create_fee(
|
|
55
|
+
"Set the fees per transaction, in XCH. Fee is used TWICE: once to create the singleton, once for init."
|
|
56
|
+
)
|
|
57
|
+
@click.option(
|
|
58
|
+
"-wp",
|
|
59
|
+
"--wallet-rpc-port",
|
|
60
|
+
help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
|
|
61
|
+
type=int,
|
|
62
|
+
default=None,
|
|
63
|
+
)
|
|
64
|
+
def create_cmd(
|
|
65
|
+
wallet_rpc_port: Optional[int],
|
|
66
|
+
fingerprint: int,
|
|
67
|
+
pool_url: str,
|
|
68
|
+
state: str,
|
|
69
|
+
fee: uint64,
|
|
70
|
+
dont_prompt: bool,
|
|
71
|
+
) -> None:
|
|
72
|
+
import asyncio
|
|
73
|
+
|
|
74
|
+
from .plotnft_funcs import create
|
|
75
|
+
|
|
76
|
+
if pool_url is not None and state.lower() == "local":
|
|
77
|
+
print(f" pool_url argument [{pool_url}] is not allowed when creating in 'local' state")
|
|
78
|
+
return
|
|
79
|
+
if pool_url in [None, ""] and state.lower() == "pool":
|
|
80
|
+
print(" pool_url argument (-u) is required for pool starting state")
|
|
81
|
+
return
|
|
82
|
+
valid_initial_states = {"pool": "FARMING_TO_POOL", "local": "SELF_POOLING"}
|
|
83
|
+
asyncio.run(
|
|
84
|
+
create(wallet_rpc_port, fingerprint, pool_url, valid_initial_states[state], fee, prompt=not dont_prompt)
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# NOTE: tx_endpoint
|
|
89
|
+
@plotnft_cmd.command("join", help="Join a plot NFT to a Pool")
|
|
90
|
+
@click.option("-y", "--yes", "dont_prompt", help="No prompts", is_flag=True)
|
|
91
|
+
@click.option("-i", "--id", help="ID of the wallet to use", type=int, default=None, show_default=True, required=True)
|
|
92
|
+
@options.create_fingerprint()
|
|
93
|
+
@click.option("-u", "--pool_url", help="HTTPS host:port of the pool to join", type=str, required=True)
|
|
94
|
+
@options.create_fee("Set the fees per transaction, in XCH. Fee is used TWICE: once to leave pool, once to join.")
|
|
95
|
+
@click.option(
|
|
96
|
+
"-wp",
|
|
97
|
+
"--wallet-rpc-port",
|
|
98
|
+
help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
|
|
99
|
+
type=int,
|
|
100
|
+
default=None,
|
|
101
|
+
)
|
|
102
|
+
def join_cmd(
|
|
103
|
+
wallet_rpc_port: Optional[int], fingerprint: int, id: int, fee: uint64, pool_url: str, dont_prompt: bool
|
|
104
|
+
) -> None:
|
|
105
|
+
import asyncio
|
|
106
|
+
|
|
107
|
+
from .plotnft_funcs import join_pool
|
|
108
|
+
|
|
109
|
+
asyncio.run(
|
|
110
|
+
join_pool(
|
|
111
|
+
wallet_rpc_port=wallet_rpc_port,
|
|
112
|
+
fingerprint=fingerprint,
|
|
113
|
+
pool_url=pool_url,
|
|
114
|
+
fee=fee,
|
|
115
|
+
wallet_id=id,
|
|
116
|
+
prompt=not dont_prompt,
|
|
117
|
+
)
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
# NOTE: tx_endpoint
|
|
122
|
+
@plotnft_cmd.command("leave", help="Leave a pool and return to self-farming")
|
|
123
|
+
@click.option("-y", "--yes", "dont_prompt", help="No prompts", is_flag=True)
|
|
124
|
+
@click.option("-i", "--id", help="ID of the wallet to use", type=int, default=None, show_default=True, required=True)
|
|
125
|
+
@options.create_fingerprint()
|
|
126
|
+
@options.create_fee("Set the fees per transaction, in XCH. Fee is charged TWICE.")
|
|
127
|
+
@click.option(
|
|
128
|
+
"-wp",
|
|
129
|
+
"--wallet-rpc-port",
|
|
130
|
+
help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
|
|
131
|
+
type=int,
|
|
132
|
+
default=None,
|
|
133
|
+
)
|
|
134
|
+
def self_pool_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int, fee: uint64, dont_prompt: bool) -> None:
|
|
135
|
+
import asyncio
|
|
136
|
+
|
|
137
|
+
from .plotnft_funcs import self_pool
|
|
138
|
+
|
|
139
|
+
asyncio.run(
|
|
140
|
+
self_pool(
|
|
141
|
+
wallet_rpc_port=wallet_rpc_port,
|
|
142
|
+
fingerprint=fingerprint,
|
|
143
|
+
fee=fee,
|
|
144
|
+
wallet_id=id,
|
|
145
|
+
prompt=not dont_prompt,
|
|
146
|
+
)
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@plotnft_cmd.command("inspect", help="Get Detailed plotnft information as JSON")
|
|
151
|
+
@click.option("-i", "--id", help="ID of the wallet to use", type=int, default=None, show_default=True, required=True)
|
|
152
|
+
@options.create_fingerprint()
|
|
153
|
+
@click.option(
|
|
154
|
+
"-wp",
|
|
155
|
+
"--wallet-rpc-port",
|
|
156
|
+
help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
|
|
157
|
+
type=int,
|
|
158
|
+
default=None,
|
|
159
|
+
)
|
|
160
|
+
def inspect(wallet_rpc_port: Optional[int], fingerprint: int, id: int) -> None:
|
|
161
|
+
import asyncio
|
|
162
|
+
|
|
163
|
+
from .plotnft_funcs import inspect_cmd
|
|
164
|
+
|
|
165
|
+
asyncio.run(inspect_cmd(wallet_rpc_port, fingerprint, id))
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
# NOTE: tx_endpoint
|
|
169
|
+
@plotnft_cmd.command("claim", help="Claim rewards from a plot NFT")
|
|
170
|
+
@click.option("-i", "--id", help="ID of the wallet to use", type=int, default=None, show_default=True, required=True)
|
|
171
|
+
@options.create_fingerprint()
|
|
172
|
+
@options.create_fee()
|
|
173
|
+
@click.option(
|
|
174
|
+
"-wp",
|
|
175
|
+
"--wallet-rpc-port",
|
|
176
|
+
help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
|
|
177
|
+
type=int,
|
|
178
|
+
default=None,
|
|
179
|
+
)
|
|
180
|
+
def claim(wallet_rpc_port: Optional[int], fingerprint: int, id: int, fee: uint64) -> None:
|
|
181
|
+
import asyncio
|
|
182
|
+
|
|
183
|
+
from .plotnft_funcs import claim_cmd
|
|
184
|
+
|
|
185
|
+
asyncio.run(
|
|
186
|
+
claim_cmd(
|
|
187
|
+
wallet_rpc_port=wallet_rpc_port,
|
|
188
|
+
fingerprint=fingerprint,
|
|
189
|
+
fee=fee,
|
|
190
|
+
wallet_id=id,
|
|
191
|
+
)
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
@plotnft_cmd.command(
|
|
196
|
+
"change_payout_instructions",
|
|
197
|
+
help="Change the payout instructions for a pool. To get the launcher id, use plotnft show.",
|
|
198
|
+
)
|
|
199
|
+
@click.option("-l", "--launcher_id", help="Launcher ID of the plotnft", type=str, required=True)
|
|
200
|
+
@click.option("-a", "--address", help="New address for payout instructions", type=AddressParamType(), required=True)
|
|
201
|
+
def change_payout_instructions_cmd(launcher_id: str, address: CliAddress) -> None:
|
|
202
|
+
import asyncio
|
|
203
|
+
|
|
204
|
+
from .plotnft_funcs import change_payout_instructions
|
|
205
|
+
|
|
206
|
+
asyncio.run(change_payout_instructions(launcher_id, address))
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import functools
|
|
5
|
+
import json
|
|
6
|
+
import time
|
|
7
|
+
from dataclasses import replace
|
|
8
|
+
from pprint import pprint
|
|
9
|
+
from typing import Any, Awaitable, Callable, Dict, List, Optional
|
|
10
|
+
|
|
11
|
+
import aiohttp
|
|
12
|
+
|
|
13
|
+
from chia.cmds.cmds_util import (
|
|
14
|
+
cli_confirm,
|
|
15
|
+
get_any_service_client,
|
|
16
|
+
get_wallet_client,
|
|
17
|
+
transaction_status_msg,
|
|
18
|
+
transaction_submitted_msg,
|
|
19
|
+
)
|
|
20
|
+
from chia.cmds.param_types import CliAddress
|
|
21
|
+
from chia.cmds.wallet_funcs import print_balance, wallet_coin_unit
|
|
22
|
+
from chia.pools.pool_config import PoolWalletConfig, load_pool_config, update_pool_config
|
|
23
|
+
from chia.pools.pool_wallet_info import PoolSingletonState, PoolWalletInfo
|
|
24
|
+
from chia.protocols.pool_protocol import POOL_PROTOCOL_VERSION
|
|
25
|
+
from chia.rpc.farmer_rpc_client import FarmerRpcClient
|
|
26
|
+
from chia.rpc.wallet_rpc_client import WalletRpcClient
|
|
27
|
+
from chia.server.server import ssl_context_for_root
|
|
28
|
+
from chia.ssl.create_ssl import get_mozilla_ca_crt
|
|
29
|
+
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
30
|
+
from chia.util.bech32m import encode_puzzle_hash
|
|
31
|
+
from chia.util.byte_types import hexstr_to_bytes
|
|
32
|
+
from chia.util.config import load_config
|
|
33
|
+
from chia.util.default_root import DEFAULT_ROOT_PATH
|
|
34
|
+
from chia.util.errors import CliRpcConnectionError
|
|
35
|
+
from chia.util.ints import uint32, uint64
|
|
36
|
+
from chia.wallet.transaction_record import TransactionRecord
|
|
37
|
+
from chia.wallet.util.address_type import AddressType
|
|
38
|
+
from chia.wallet.util.wallet_types import WalletType
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def create_pool_args(pool_url: str) -> Dict[str, Any]:
|
|
42
|
+
try:
|
|
43
|
+
async with aiohttp.ClientSession() as session:
|
|
44
|
+
async with session.get(f"{pool_url}/pool_info", ssl=ssl_context_for_root(get_mozilla_ca_crt())) as response:
|
|
45
|
+
if response.ok:
|
|
46
|
+
json_dict: Dict[str, Any] = json.loads(await response.text())
|
|
47
|
+
else:
|
|
48
|
+
raise ValueError(f"Response from {pool_url} not OK: {response.status}")
|
|
49
|
+
except Exception as e:
|
|
50
|
+
raise ValueError(f"Error connecting to pool {pool_url}: {e}")
|
|
51
|
+
|
|
52
|
+
if json_dict["relative_lock_height"] > 1000:
|
|
53
|
+
raise ValueError("Relative lock height too high for this pool, cannot join")
|
|
54
|
+
if json_dict["protocol_version"] != POOL_PROTOCOL_VERSION:
|
|
55
|
+
raise ValueError(f"Incorrect version: {json_dict['protocol_version']}, should be {POOL_PROTOCOL_VERSION}")
|
|
56
|
+
|
|
57
|
+
header_msg = f"\n---- Pool parameters fetched from {pool_url} ----"
|
|
58
|
+
print(header_msg)
|
|
59
|
+
pprint(json_dict)
|
|
60
|
+
print("-" * len(header_msg))
|
|
61
|
+
return json_dict
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
async def create(
|
|
65
|
+
wallet_rpc_port: Optional[int], fingerprint: int, pool_url: Optional[str], state: str, fee: uint64, *, prompt: bool
|
|
66
|
+
) -> None:
|
|
67
|
+
async with get_wallet_client(wallet_rpc_port, fingerprint) as (wallet_client, fingerprint, _):
|
|
68
|
+
target_puzzle_hash: Optional[bytes32]
|
|
69
|
+
# Could use initial_pool_state_from_dict to simplify
|
|
70
|
+
if state == "SELF_POOLING":
|
|
71
|
+
pool_url = None
|
|
72
|
+
relative_lock_height = uint32(0)
|
|
73
|
+
target_puzzle_hash = None # wallet will fill this in
|
|
74
|
+
elif state == "FARMING_TO_POOL":
|
|
75
|
+
config = load_config(DEFAULT_ROOT_PATH, "config.yaml")
|
|
76
|
+
enforce_https = config["full_node"]["selected_network"] == "mainnet"
|
|
77
|
+
assert pool_url is not None
|
|
78
|
+
if enforce_https and not pool_url.startswith("https://"):
|
|
79
|
+
print(f"Pool URLs must be HTTPS on mainnet {pool_url}. Aborting.")
|
|
80
|
+
return
|
|
81
|
+
assert pool_url is not None
|
|
82
|
+
json_dict = await create_pool_args(pool_url)
|
|
83
|
+
relative_lock_height = json_dict["relative_lock_height"]
|
|
84
|
+
target_puzzle_hash = bytes32.from_hexstr(json_dict["target_puzzle_hash"])
|
|
85
|
+
else:
|
|
86
|
+
raise ValueError("Plot NFT must be created in SELF_POOLING or FARMING_TO_POOL state.")
|
|
87
|
+
|
|
88
|
+
pool_msg = f" and join pool: {pool_url}" if pool_url else ""
|
|
89
|
+
print(f"Will create a plot NFT{pool_msg}.")
|
|
90
|
+
if prompt:
|
|
91
|
+
cli_confirm("Confirm (y/n): ", "Aborting.")
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
tx_record: TransactionRecord = await wallet_client.create_new_pool_wallet(
|
|
95
|
+
target_puzzle_hash,
|
|
96
|
+
pool_url,
|
|
97
|
+
relative_lock_height,
|
|
98
|
+
"localhost:5000",
|
|
99
|
+
"new",
|
|
100
|
+
state,
|
|
101
|
+
fee,
|
|
102
|
+
)
|
|
103
|
+
start = time.time()
|
|
104
|
+
while time.time() - start < 10:
|
|
105
|
+
await asyncio.sleep(0.1)
|
|
106
|
+
tx = await wallet_client.get_transaction(tx_record.name)
|
|
107
|
+
if len(tx.sent_to) > 0:
|
|
108
|
+
print(transaction_submitted_msg(tx))
|
|
109
|
+
print(transaction_status_msg(fingerprint, tx_record.name))
|
|
110
|
+
return None
|
|
111
|
+
except Exception as e:
|
|
112
|
+
print(f"Error creating plot NFT: {e}\n Please start both farmer and wallet with: chia start -r farmer")
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
async def pprint_pool_wallet_state(
|
|
116
|
+
wallet_client: WalletRpcClient,
|
|
117
|
+
wallet_id: int,
|
|
118
|
+
pool_wallet_info: PoolWalletInfo,
|
|
119
|
+
address_prefix: str,
|
|
120
|
+
pool_state_dict: Optional[Dict[str, Any]],
|
|
121
|
+
) -> None:
|
|
122
|
+
print(f"Wallet ID: {wallet_id}")
|
|
123
|
+
if pool_wallet_info.current.state == PoolSingletonState.LEAVING_POOL.value and pool_wallet_info.target is None:
|
|
124
|
+
expected_leave_height = pool_wallet_info.singleton_block_height + pool_wallet_info.current.relative_lock_height
|
|
125
|
+
print(f"Current state: INVALID_STATE. Please leave/join again after block height {expected_leave_height}")
|
|
126
|
+
else:
|
|
127
|
+
print(f"Current state: {PoolSingletonState(pool_wallet_info.current.state).name}")
|
|
128
|
+
print(f"Current state from block height: {pool_wallet_info.singleton_block_height}")
|
|
129
|
+
print(f"Launcher ID: {pool_wallet_info.launcher_id}")
|
|
130
|
+
print(
|
|
131
|
+
"Target address (not for plotting): "
|
|
132
|
+
f"{encode_puzzle_hash(pool_wallet_info.current.target_puzzle_hash, address_prefix)}"
|
|
133
|
+
)
|
|
134
|
+
print(f"Number of plots: {0 if pool_state_dict is None else pool_state_dict['plot_count']}")
|
|
135
|
+
print(f"Owner public key: {pool_wallet_info.current.owner_pubkey}")
|
|
136
|
+
|
|
137
|
+
print(
|
|
138
|
+
f"Pool contract address (use ONLY for plotting - do not send money to this address): "
|
|
139
|
+
f"{encode_puzzle_hash(pool_wallet_info.p2_singleton_puzzle_hash, address_prefix)}"
|
|
140
|
+
)
|
|
141
|
+
if pool_wallet_info.target is not None:
|
|
142
|
+
print(f"Target state: {PoolSingletonState(pool_wallet_info.target.state).name}")
|
|
143
|
+
print(f"Target pool URL: {pool_wallet_info.target.pool_url}")
|
|
144
|
+
if pool_wallet_info.current.state == PoolSingletonState.SELF_POOLING.value:
|
|
145
|
+
balances: Dict[str, Any] = await wallet_client.get_wallet_balance(wallet_id)
|
|
146
|
+
balance = balances["confirmed_wallet_balance"]
|
|
147
|
+
typ = WalletType(int(WalletType.POOLING_WALLET))
|
|
148
|
+
address_prefix, scale = wallet_coin_unit(typ, address_prefix)
|
|
149
|
+
print(f"Claimable balance: {print_balance(balance, scale, address_prefix)}")
|
|
150
|
+
if pool_wallet_info.current.state == PoolSingletonState.FARMING_TO_POOL.value:
|
|
151
|
+
print(f"Current pool URL: {pool_wallet_info.current.pool_url}")
|
|
152
|
+
if pool_state_dict is not None:
|
|
153
|
+
print(f"Current difficulty: {pool_state_dict['current_difficulty']}")
|
|
154
|
+
print(f"Points balance: {pool_state_dict['current_points']}")
|
|
155
|
+
points_found_24h = [points for timestamp, points in pool_state_dict["points_found_24h"]]
|
|
156
|
+
points_acknowledged_24h = [points for timestamp, points in pool_state_dict["points_acknowledged_24h"]]
|
|
157
|
+
summed_points_found_24h = sum(points_found_24h)
|
|
158
|
+
summed_points_acknowledged_24h = sum(points_acknowledged_24h)
|
|
159
|
+
if summed_points_found_24h == 0:
|
|
160
|
+
success_pct = 0.0
|
|
161
|
+
else:
|
|
162
|
+
success_pct = summed_points_acknowledged_24h / summed_points_found_24h
|
|
163
|
+
print(f"Points found (24h): {summed_points_found_24h}")
|
|
164
|
+
print(f"Percent Successful Points (24h): {success_pct:.2%}")
|
|
165
|
+
payout_instructions: str = pool_state_dict["pool_config"]["payout_instructions"]
|
|
166
|
+
try:
|
|
167
|
+
payout_address = encode_puzzle_hash(bytes32.fromhex(payout_instructions), address_prefix)
|
|
168
|
+
print(f"Payout instructions (pool will pay to this address): {payout_address}")
|
|
169
|
+
except Exception:
|
|
170
|
+
print(f"Payout instructions (pool will pay you with this): {payout_instructions}")
|
|
171
|
+
print(f"Relative lock height: {pool_wallet_info.current.relative_lock_height} blocks")
|
|
172
|
+
if pool_wallet_info.current.state == PoolSingletonState.LEAVING_POOL.value:
|
|
173
|
+
expected_leave_height = pool_wallet_info.singleton_block_height + pool_wallet_info.current.relative_lock_height
|
|
174
|
+
if pool_wallet_info.target is not None:
|
|
175
|
+
print(f"Expected to leave after block height: {expected_leave_height}")
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
async def pprint_all_pool_wallet_state(
|
|
179
|
+
wallet_client: WalletRpcClient,
|
|
180
|
+
get_wallets_response: List[Dict[str, Any]],
|
|
181
|
+
address_prefix: str,
|
|
182
|
+
pool_state_dict: Dict[bytes32, Dict[str, Any]],
|
|
183
|
+
) -> None:
|
|
184
|
+
print(f"Wallet height: {await wallet_client.get_height_info()}")
|
|
185
|
+
print(f"Sync status: {'Synced' if (await wallet_client.get_synced()) else 'Not synced'}")
|
|
186
|
+
for wallet_info in get_wallets_response:
|
|
187
|
+
pool_wallet_id = wallet_info["id"]
|
|
188
|
+
typ = WalletType(int(wallet_info["type"]))
|
|
189
|
+
if typ == WalletType.POOLING_WALLET:
|
|
190
|
+
pool_wallet_info, _ = await wallet_client.pw_status(pool_wallet_id)
|
|
191
|
+
await pprint_pool_wallet_state(
|
|
192
|
+
wallet_client,
|
|
193
|
+
pool_wallet_id,
|
|
194
|
+
pool_wallet_info,
|
|
195
|
+
address_prefix,
|
|
196
|
+
pool_state_dict.get(pool_wallet_info.launcher_id),
|
|
197
|
+
)
|
|
198
|
+
print("")
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
async def show(wallet_rpc_port: Optional[int], fp: Optional[int], wallet_id_passed_in: Optional[int]) -> None:
|
|
202
|
+
async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, _):
|
|
203
|
+
try:
|
|
204
|
+
async with get_any_service_client(FarmerRpcClient) as (farmer_client, config):
|
|
205
|
+
address_prefix = config["network_overrides"]["config"][config["selected_network"]]["address_prefix"]
|
|
206
|
+
summaries_response = await wallet_client.get_wallets()
|
|
207
|
+
pool_state_list = (await farmer_client.get_pool_state())["pool_state"]
|
|
208
|
+
pool_state_dict: Dict[bytes32, Dict[str, Any]] = {
|
|
209
|
+
bytes32.from_hexstr(pool_state_item["pool_config"]["launcher_id"]): pool_state_item
|
|
210
|
+
for pool_state_item in pool_state_list
|
|
211
|
+
}
|
|
212
|
+
if wallet_id_passed_in is not None:
|
|
213
|
+
for summary in summaries_response:
|
|
214
|
+
typ = WalletType(int(summary["type"]))
|
|
215
|
+
if summary["id"] == wallet_id_passed_in and typ != WalletType.POOLING_WALLET:
|
|
216
|
+
print(
|
|
217
|
+
f"Wallet with id: {wallet_id_passed_in} is not a pooling wallet."
|
|
218
|
+
" Please provide a different id."
|
|
219
|
+
)
|
|
220
|
+
return
|
|
221
|
+
pool_wallet_info, _ = await wallet_client.pw_status(wallet_id_passed_in)
|
|
222
|
+
await pprint_pool_wallet_state(
|
|
223
|
+
wallet_client,
|
|
224
|
+
wallet_id_passed_in,
|
|
225
|
+
pool_wallet_info,
|
|
226
|
+
address_prefix,
|
|
227
|
+
pool_state_dict.get(pool_wallet_info.launcher_id),
|
|
228
|
+
)
|
|
229
|
+
else:
|
|
230
|
+
await pprint_all_pool_wallet_state(
|
|
231
|
+
wallet_client, summaries_response, address_prefix, pool_state_dict
|
|
232
|
+
)
|
|
233
|
+
except CliRpcConnectionError: # we want to output this if we can't connect to the farmer
|
|
234
|
+
await pprint_all_pool_wallet_state(wallet_client, summaries_response, address_prefix, pool_state_dict)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
async def get_login_link(launcher_id: bytes32) -> None:
|
|
238
|
+
async with get_any_service_client(FarmerRpcClient) as (farmer_client, _):
|
|
239
|
+
login_link: Optional[str] = await farmer_client.get_pool_login_link(launcher_id)
|
|
240
|
+
if login_link is None:
|
|
241
|
+
print("Was not able to get login link.")
|
|
242
|
+
else:
|
|
243
|
+
print(login_link)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
async def submit_tx_with_confirmation(
|
|
247
|
+
message: str,
|
|
248
|
+
prompt: bool,
|
|
249
|
+
func: Callable[[], Awaitable[Dict[str, Any]]],
|
|
250
|
+
wallet_client: WalletRpcClient,
|
|
251
|
+
fingerprint: int,
|
|
252
|
+
wallet_id: int,
|
|
253
|
+
) -> None:
|
|
254
|
+
print(message)
|
|
255
|
+
if prompt:
|
|
256
|
+
cli_confirm("Confirm (y/n): ", "Aborting.")
|
|
257
|
+
try:
|
|
258
|
+
result = await func()
|
|
259
|
+
tx_record: TransactionRecord = result["transaction"]
|
|
260
|
+
start = time.time()
|
|
261
|
+
while time.time() - start < 10:
|
|
262
|
+
await asyncio.sleep(0.1)
|
|
263
|
+
tx = await wallet_client.get_transaction(tx_record.name)
|
|
264
|
+
if len(tx.sent_to) > 0:
|
|
265
|
+
print(transaction_submitted_msg(tx))
|
|
266
|
+
print(transaction_status_msg(fingerprint, tx_record.name))
|
|
267
|
+
return None
|
|
268
|
+
except Exception as e:
|
|
269
|
+
print(f"Error performing operation on Plot NFT -f {fingerprint} wallet id: {wallet_id}: {e}")
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
async def join_pool(
|
|
273
|
+
*,
|
|
274
|
+
wallet_rpc_port: Optional[int],
|
|
275
|
+
fingerprint: int,
|
|
276
|
+
pool_url: str,
|
|
277
|
+
fee: uint64,
|
|
278
|
+
wallet_id: int,
|
|
279
|
+
prompt: bool,
|
|
280
|
+
) -> None:
|
|
281
|
+
async with get_wallet_client(wallet_rpc_port, fingerprint) as (wallet_client, fingerprint, config):
|
|
282
|
+
enforce_https = config["full_node"]["selected_network"] == "mainnet"
|
|
283
|
+
|
|
284
|
+
if enforce_https and not pool_url.startswith("https://"):
|
|
285
|
+
print(f"Pool URLs must be HTTPS on mainnet {pool_url}. Aborting.")
|
|
286
|
+
return
|
|
287
|
+
try:
|
|
288
|
+
async with aiohttp.ClientSession() as session:
|
|
289
|
+
async with session.get(
|
|
290
|
+
f"{pool_url}/pool_info", ssl=ssl_context_for_root(get_mozilla_ca_crt())
|
|
291
|
+
) as response:
|
|
292
|
+
if response.ok:
|
|
293
|
+
json_dict = json.loads(await response.text())
|
|
294
|
+
else:
|
|
295
|
+
print(f"Response not OK: {response.status}")
|
|
296
|
+
return
|
|
297
|
+
except Exception as e:
|
|
298
|
+
print(f"Error connecting to pool {pool_url}: {e}")
|
|
299
|
+
return
|
|
300
|
+
|
|
301
|
+
if json_dict["relative_lock_height"] > 1000:
|
|
302
|
+
print("Relative lock height too high for this pool, cannot join")
|
|
303
|
+
return
|
|
304
|
+
if json_dict["protocol_version"] != POOL_PROTOCOL_VERSION:
|
|
305
|
+
print(f"Incorrect version: {json_dict['protocol_version']}, should be {POOL_PROTOCOL_VERSION}")
|
|
306
|
+
return
|
|
307
|
+
|
|
308
|
+
pprint(json_dict)
|
|
309
|
+
msg = f"\nWill join pool: {pool_url} with Plot NFT {fingerprint}."
|
|
310
|
+
func = functools.partial(
|
|
311
|
+
wallet_client.pw_join_pool,
|
|
312
|
+
wallet_id,
|
|
313
|
+
bytes32.from_hexstr(json_dict["target_puzzle_hash"]),
|
|
314
|
+
pool_url,
|
|
315
|
+
json_dict["relative_lock_height"],
|
|
316
|
+
fee,
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
await submit_tx_with_confirmation(msg, prompt, func, wallet_client, fingerprint, wallet_id)
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
async def self_pool(
|
|
323
|
+
*, wallet_rpc_port: Optional[int], fingerprint: int, fee: uint64, wallet_id: int, prompt: bool
|
|
324
|
+
) -> None:
|
|
325
|
+
async with get_wallet_client(wallet_rpc_port, fingerprint) as (wallet_client, fingerprint, _):
|
|
326
|
+
msg = f"Will start self-farming with Plot NFT on wallet id {wallet_id} fingerprint {fingerprint}."
|
|
327
|
+
func = functools.partial(wallet_client.pw_self_pool, wallet_id, fee)
|
|
328
|
+
await submit_tx_with_confirmation(msg, prompt, func, wallet_client, fingerprint, wallet_id)
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
async def inspect_cmd(wallet_rpc_port: Optional[int], fingerprint: int, wallet_id: int) -> None:
|
|
332
|
+
async with get_wallet_client(wallet_rpc_port, fingerprint) as (wallet_client, fingerprint, _):
|
|
333
|
+
pool_wallet_info, unconfirmed_transactions = await wallet_client.pw_status(wallet_id)
|
|
334
|
+
print(
|
|
335
|
+
json.dumps(
|
|
336
|
+
{
|
|
337
|
+
"pool_wallet_info": pool_wallet_info.to_json_dict(),
|
|
338
|
+
"unconfirmed_transactions": [
|
|
339
|
+
{"sent_to": tx.sent_to, "transaction_id": tx.name.hex()} for tx in unconfirmed_transactions
|
|
340
|
+
],
|
|
341
|
+
}
|
|
342
|
+
)
|
|
343
|
+
)
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
async def claim_cmd(*, wallet_rpc_port: Optional[int], fingerprint: int, fee: uint64, wallet_id: int) -> None:
|
|
347
|
+
async with get_wallet_client(wallet_rpc_port, fingerprint) as (wallet_client, fingerprint, _):
|
|
348
|
+
msg = f"\nWill claim rewards for wallet ID: {wallet_id}."
|
|
349
|
+
func = functools.partial(
|
|
350
|
+
wallet_client.pw_absorb_rewards,
|
|
351
|
+
wallet_id,
|
|
352
|
+
fee,
|
|
353
|
+
)
|
|
354
|
+
await submit_tx_with_confirmation(msg, False, func, wallet_client, fingerprint, wallet_id)
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
async def change_payout_instructions(launcher_id: str, address: CliAddress) -> None:
|
|
358
|
+
new_pool_configs: List[PoolWalletConfig] = []
|
|
359
|
+
id_found = False
|
|
360
|
+
puzzle_hash = address.validate_address_type_get_ph(AddressType.XCH)
|
|
361
|
+
|
|
362
|
+
old_configs: List[PoolWalletConfig] = load_pool_config(DEFAULT_ROOT_PATH)
|
|
363
|
+
for pool_config in old_configs:
|
|
364
|
+
if pool_config.launcher_id == hexstr_to_bytes(launcher_id):
|
|
365
|
+
id_found = True
|
|
366
|
+
pool_config = replace(pool_config, payout_instructions=puzzle_hash.hex())
|
|
367
|
+
new_pool_configs.append(pool_config)
|
|
368
|
+
if id_found:
|
|
369
|
+
print(f"Launcher Id: {launcher_id} Found, Updating Config.")
|
|
370
|
+
await update_pool_config(DEFAULT_ROOT_PATH, new_pool_configs)
|
|
371
|
+
print(f"Payout Instructions for launcher id: {launcher_id} successfully updated to: {address}.")
|
|
372
|
+
print(f"You will need to change the payout instructions on every device you use to: {address}.")
|
|
373
|
+
else:
|
|
374
|
+
print(f"Launcher Id: {launcher_id} Not found.")
|