chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. chia/_tests/README.md +1 -1
  2. chia/_tests/blockchain/blockchain_test_utils.py +24 -26
  3. chia/_tests/blockchain/test_augmented_chain.py +6 -8
  4. chia/_tests/blockchain/test_blockchain.py +409 -307
  5. chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
  6. chia/_tests/blockchain/test_build_chains.py +11 -13
  7. chia/_tests/blockchain/test_get_block_generator.py +8 -8
  8. chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
  9. chia/_tests/build-init-files.py +3 -4
  10. chia/_tests/build-job-matrix.py +9 -9
  11. chia/_tests/check_sql_statements.py +2 -3
  12. chia/_tests/clvm/benchmark_costs.py +1 -1
  13. chia/_tests/clvm/coin_store.py +7 -5
  14. chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
  15. chia/_tests/clvm/test_condition_codes.py +2 -2
  16. chia/_tests/clvm/test_curry_and_treehash.py +2 -4
  17. chia/_tests/clvm/test_message_conditions.py +184 -0
  18. chia/_tests/clvm/test_puzzle_compression.py +1 -2
  19. chia/_tests/clvm/test_puzzle_drivers.py +3 -3
  20. chia/_tests/clvm/test_puzzles.py +13 -18
  21. chia/_tests/clvm/test_singletons.py +17 -17
  22. chia/_tests/clvm/test_spend_sim.py +7 -7
  23. chia/_tests/cmds/cmd_test_utils.py +42 -45
  24. chia/_tests/cmds/conftest.py +2 -2
  25. chia/_tests/cmds/test_click_types.py +21 -16
  26. chia/_tests/cmds/test_cmd_framework.py +255 -35
  27. chia/_tests/cmds/test_cmds_util.py +2 -2
  28. chia/_tests/cmds/test_daemon.py +3 -3
  29. chia/_tests/cmds/test_dev_gh.py +131 -0
  30. chia/_tests/cmds/test_farm_cmd.py +1 -2
  31. chia/_tests/cmds/test_show.py +6 -6
  32. chia/_tests/cmds/test_tx_config_args.py +2 -1
  33. chia/_tests/cmds/wallet/test_dao.py +23 -23
  34. chia/_tests/cmds/wallet/test_did.py +29 -29
  35. chia/_tests/cmds/wallet/test_nft.py +24 -23
  36. chia/_tests/cmds/wallet/test_notifications.py +8 -8
  37. chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
  38. chia/_tests/cmds/wallet/test_vcs.py +97 -73
  39. chia/_tests/cmds/wallet/test_wallet.py +74 -75
  40. chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
  41. chia/_tests/conftest.py +153 -38
  42. chia/_tests/connection_utils.py +7 -6
  43. chia/_tests/core/cmds/test_beta.py +3 -3
  44. chia/_tests/core/cmds/test_keys.py +6 -6
  45. chia/_tests/core/cmds/test_wallet.py +3 -3
  46. chia/_tests/core/consensus/test_block_creation.py +3 -5
  47. chia/_tests/core/custom_types/test_coin.py +1 -3
  48. chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
  49. chia/_tests/core/daemon/test_daemon.py +58 -58
  50. chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
  51. chia/_tests/core/data_layer/conftest.py +4 -3
  52. chia/_tests/core/data_layer/test_data_cli.py +1 -2
  53. chia/_tests/core/data_layer/test_data_layer.py +5 -5
  54. chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
  55. chia/_tests/core/data_layer/test_data_rpc.py +75 -93
  56. chia/_tests/core/data_layer/test_data_store.py +38 -37
  57. chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
  58. chia/_tests/core/data_layer/util.py +11 -10
  59. chia/_tests/core/farmer/test_farmer_api.py +6 -4
  60. chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
  61. chia/_tests/core/full_node/ram_db.py +2 -2
  62. chia/_tests/core/full_node/stores/test_block_store.py +113 -11
  63. chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
  64. chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
  65. chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
  66. chia/_tests/core/full_node/test_address_manager.py +2 -2
  67. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  68. chia/_tests/core/full_node/test_conditions.py +10 -12
  69. chia/_tests/core/full_node/test_full_node.py +2077 -1822
  70. chia/_tests/core/full_node/test_generator_tools.py +4 -4
  71. chia/_tests/core/full_node/test_hint_management.py +2 -2
  72. chia/_tests/core/full_node/test_performance.py +2 -5
  73. chia/_tests/core/full_node/test_subscriptions.py +4 -4
  74. chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
  75. chia/_tests/core/make_block_generator.py +5 -7
  76. chia/_tests/core/mempool/test_mempool.py +205 -208
  77. chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
  78. chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
  79. chia/_tests/core/mempool/test_mempool_manager.py +109 -80
  80. chia/_tests/core/mempool/test_mempool_performance.py +3 -4
  81. chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
  82. chia/_tests/core/server/flood.py +6 -4
  83. chia/_tests/core/server/serve.py +10 -7
  84. chia/_tests/core/server/test_api_protocol.py +21 -0
  85. chia/_tests/core/server/test_capabilities.py +3 -5
  86. chia/_tests/core/server/test_dos.py +15 -16
  87. chia/_tests/core/server/test_loop.py +14 -10
  88. chia/_tests/core/server/test_node_discovery.py +1 -2
  89. chia/_tests/core/server/test_rate_limits.py +156 -44
  90. chia/_tests/core/server/test_server.py +8 -7
  91. chia/_tests/core/services/test_services.py +59 -37
  92. chia/_tests/core/ssl/test_ssl.py +5 -3
  93. chia/_tests/core/test_cost_calculation.py +5 -6
  94. chia/_tests/core/test_crawler.py +2 -2
  95. chia/_tests/core/test_db_conversion.py +5 -4
  96. chia/_tests/core/test_db_validation.py +6 -5
  97. chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
  98. chia/_tests/core/test_filter.py +3 -5
  99. chia/_tests/core/test_full_node_rpc.py +64 -90
  100. chia/_tests/core/test_merkle_set.py +10 -10
  101. chia/_tests/core/test_program.py +2 -4
  102. chia/_tests/core/test_rpc_util.py +1 -2
  103. chia/_tests/core/test_seeder.py +124 -12
  104. chia/_tests/core/util/test_block_cache.py +5 -5
  105. chia/_tests/core/util/test_cached_bls.py +3 -3
  106. chia/_tests/core/util/test_config.py +13 -13
  107. chia/_tests/core/util/test_files.py +2 -2
  108. chia/_tests/core/util/test_jsonify.py +9 -9
  109. chia/_tests/core/util/test_keychain.py +13 -5
  110. chia/_tests/core/util/test_keyring_wrapper.py +6 -5
  111. chia/_tests/core/util/test_log_exceptions.py +3 -3
  112. chia/_tests/core/util/test_streamable.py +38 -38
  113. chia/_tests/db/test_db_wrapper.py +13 -12
  114. chia/_tests/environments/common.py +2 -2
  115. chia/_tests/environments/full_node.py +2 -2
  116. chia/_tests/environments/wallet.py +109 -48
  117. chia/_tests/farmer_harvester/test_farmer.py +35 -35
  118. chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
  119. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  120. chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
  121. chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
  122. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
  123. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
  124. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
  125. chia/_tests/generator/test_compression.py +13 -30
  126. chia/_tests/generator/test_generator_types.py +3 -3
  127. chia/_tests/generator/test_rom.py +7 -9
  128. chia/_tests/plot_sync/test_delta.py +2 -3
  129. chia/_tests/plot_sync/test_plot_sync.py +25 -24
  130. chia/_tests/plot_sync/test_receiver.py +9 -9
  131. chia/_tests/plot_sync/test_sender.py +1 -1
  132. chia/_tests/plot_sync/test_sync_simulated.py +27 -26
  133. chia/_tests/plot_sync/util.py +2 -1
  134. chia/_tests/plotting/test_plot_manager.py +54 -11
  135. chia/_tests/plotting/util.py +2 -3
  136. chia/_tests/pools/test_pool_cli_parsing.py +128 -0
  137. chia/_tests/pools/test_pool_cmdline.py +993 -15
  138. chia/_tests/pools/test_pool_config.py +3 -5
  139. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
  140. chia/_tests/pools/test_pool_rpc.py +203 -90
  141. chia/_tests/pools/test_pool_wallet.py +12 -8
  142. chia/_tests/pools/test_wallet_pool_store.py +3 -3
  143. chia/_tests/process_junit.py +16 -17
  144. chia/_tests/rpc/test_rpc_client.py +59 -2
  145. chia/_tests/rpc/test_rpc_server.py +183 -0
  146. chia/_tests/simulation/test_simulation.py +5 -5
  147. chia/_tests/simulation/test_simulator.py +8 -10
  148. chia/_tests/simulation/test_start_simulator.py +5 -4
  149. chia/_tests/timelord/test_new_peak.py +19 -19
  150. chia/_tests/tools/test_run_block.py +1 -2
  151. chia/_tests/tools/test_virtual_project.py +591 -0
  152. chia/_tests/util/benchmark_cost.py +9 -9
  153. chia/_tests/util/benchmarks.py +1 -2
  154. chia/_tests/util/blockchain.py +12 -11
  155. chia/_tests/util/blockchain_mock.py +15 -15
  156. chia/_tests/util/build_network_protocol_files.py +12 -12
  157. chia/_tests/util/db_connection.py +3 -2
  158. chia/_tests/util/full_sync.py +14 -6
  159. chia/_tests/util/gen_ssl_certs.py +4 -5
  160. chia/_tests/util/generator_tools_testing.py +5 -7
  161. chia/_tests/util/get_name_puzzle_conditions.py +52 -0
  162. chia/_tests/util/key_tool.py +2 -3
  163. chia/_tests/util/misc.py +59 -106
  164. chia/_tests/util/network_protocol_data.py +7 -9
  165. chia/_tests/util/protocol_messages_json.py +112 -111
  166. chia/_tests/util/rpc.py +3 -0
  167. chia/_tests/util/run_block.py +16 -16
  168. chia/_tests/util/setup_nodes.py +25 -23
  169. chia/{clvm → _tests/util}/spend_sim.py +59 -55
  170. chia/_tests/util/split_managers.py +12 -9
  171. chia/_tests/util/temp_file.py +1 -1
  172. chia/_tests/util/test_action_scope.py +2 -1
  173. chia/_tests/util/test_async_pool.py +8 -8
  174. chia/_tests/util/test_build_job_matrix.py +2 -3
  175. chia/_tests/util/test_condition_tools.py +4 -6
  176. chia/_tests/util/test_config.py +5 -5
  177. chia/_tests/util/test_dump_keyring.py +1 -1
  178. chia/_tests/util/test_full_block_utils.py +19 -11
  179. chia/_tests/util/test_limited_semaphore.py +4 -3
  180. chia/_tests/util/test_logging_filter.py +2 -3
  181. chia/_tests/util/test_misc.py +29 -28
  182. chia/_tests/util/test_network.py +32 -31
  183. chia/_tests/util/test_network_protocol_files.py +2 -3
  184. chia/_tests/util/test_network_protocol_json.py +1 -0
  185. chia/_tests/util/test_network_protocol_test.py +18 -19
  186. chia/_tests/util/test_paginator.py +3 -4
  187. chia/_tests/util/test_pprint.py +1 -1
  188. chia/_tests/util/test_priority_mutex.py +18 -17
  189. chia/_tests/util/test_recursive_replace.py +2 -2
  190. chia/_tests/util/test_testnet_overrides.py +3 -3
  191. chia/_tests/util/test_timing.py +1 -1
  192. chia/_tests/util/test_trusted_peer.py +2 -2
  193. chia/_tests/util/time_out_assert.py +43 -6
  194. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
  195. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
  196. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
  197. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
  198. chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
  199. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
  200. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
  201. chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
  202. chia/_tests/wallet/conftest.py +135 -74
  203. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
  204. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
  205. chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
  206. chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
  207. chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
  208. chia/_tests/wallet/did_wallet/test_did.py +1277 -474
  209. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
  210. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
  211. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
  212. chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
  213. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
  214. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
  215. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
  216. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
  217. chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
  218. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
  219. chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
  220. chia/_tests/wallet/test_address_type.py +20 -20
  221. chia/_tests/wallet/test_clvm_streamable.py +5 -5
  222. chia/_tests/wallet/test_coin_management.py +354 -0
  223. chia/_tests/wallet/test_coin_selection.py +34 -35
  224. chia/_tests/wallet/test_conditions.py +28 -16
  225. chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
  226. chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
  227. chia/_tests/wallet/test_nft_store.py +1 -2
  228. chia/_tests/wallet/test_notifications.py +2 -2
  229. chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
  230. chia/_tests/wallet/test_puzzle_store.py +2 -3
  231. chia/_tests/wallet/test_sign_coin_spends.py +3 -3
  232. chia/_tests/wallet/test_signer_protocol.py +33 -34
  233. chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
  234. chia/_tests/wallet/test_taproot.py +1 -1
  235. chia/_tests/wallet/test_transaction_store.py +23 -19
  236. chia/_tests/wallet/test_util.py +36 -32
  237. chia/_tests/wallet/test_wallet.py +37 -37
  238. chia/_tests/wallet/test_wallet_action_scope.py +8 -8
  239. chia/_tests/wallet/test_wallet_blockchain.py +4 -6
  240. chia/_tests/wallet/test_wallet_coin_store.py +34 -34
  241. chia/_tests/wallet/test_wallet_node.py +69 -72
  242. chia/_tests/wallet/test_wallet_retry.py +3 -3
  243. chia/_tests/wallet/test_wallet_state_manager.py +12 -5
  244. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  245. chia/_tests/wallet/test_wallet_utils.py +5 -4
  246. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
  247. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
  248. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
  249. chia/_tests/wallet/wallet_block_tools.py +27 -27
  250. chia/_tests/weight_proof/test_weight_proof.py +30 -30
  251. chia/apis.py +19 -0
  252. chia/cmds/beta.py +8 -7
  253. chia/cmds/beta_funcs.py +15 -11
  254. chia/cmds/check_wallet_db.py +29 -27
  255. chia/cmds/chia.py +17 -9
  256. chia/cmds/cmd_classes.py +87 -79
  257. chia/cmds/cmd_helpers.py +242 -0
  258. chia/cmds/cmds_util.py +56 -66
  259. chia/cmds/coin_funcs.py +168 -153
  260. chia/cmds/coins.py +156 -194
  261. chia/cmds/configure.py +4 -3
  262. chia/cmds/dao.py +89 -33
  263. chia/cmds/dao_funcs.py +55 -33
  264. chia/cmds/data.py +7 -6
  265. chia/cmds/data_funcs.py +26 -21
  266. chia/cmds/db.py +4 -3
  267. chia/cmds/db_backup_func.py +2 -2
  268. chia/cmds/db_upgrade_func.py +3 -3
  269. chia/cmds/db_validate_func.py +2 -2
  270. chia/cmds/dev.py +2 -0
  271. chia/cmds/farm.py +18 -5
  272. chia/cmds/farm_funcs.py +17 -24
  273. chia/cmds/gh.py +275 -0
  274. chia/cmds/init.py +4 -11
  275. chia/cmds/init_funcs.py +9 -9
  276. chia/cmds/installers.py +5 -3
  277. chia/cmds/keys.py +56 -39
  278. chia/cmds/keys_funcs.py +30 -31
  279. chia/cmds/netspace.py +6 -3
  280. chia/cmds/netspace_funcs.py +3 -2
  281. chia/cmds/param_types.py +16 -6
  282. chia/cmds/passphrase.py +8 -7
  283. chia/cmds/passphrase_funcs.py +7 -61
  284. chia/cmds/peer.py +2 -1
  285. chia/cmds/peer_funcs.py +5 -5
  286. chia/cmds/plotnft.py +207 -153
  287. chia/cmds/plotnft_funcs.py +205 -174
  288. chia/cmds/plots.py +14 -6
  289. chia/cmds/plotters.py +2 -1
  290. chia/cmds/rpc.py +48 -28
  291. chia/cmds/show.py +2 -1
  292. chia/cmds/show_funcs.py +7 -6
  293. chia/cmds/signer.py +50 -58
  294. chia/cmds/sim.py +22 -14
  295. chia/cmds/sim_funcs.py +11 -11
  296. chia/cmds/start.py +3 -3
  297. chia/cmds/start_funcs.py +9 -12
  298. chia/cmds/stop.py +4 -3
  299. chia/cmds/units.py +1 -3
  300. chia/cmds/wallet.py +252 -96
  301. chia/cmds/wallet_funcs.py +217 -143
  302. chia/consensus/block_body_validation.py +133 -86
  303. chia/consensus/block_creation.py +42 -21
  304. chia/consensus/block_header_validation.py +32 -37
  305. chia/consensus/block_record.py +1 -2
  306. chia/consensus/blockchain.py +167 -180
  307. chia/consensus/blockchain_interface.py +10 -10
  308. chia/consensus/constants.py +2 -2
  309. chia/consensus/default_constants.py +3 -4
  310. chia/consensus/difficulty_adjustment.py +5 -5
  311. chia/consensus/find_fork_point.py +5 -5
  312. chia/consensus/full_block_to_block_record.py +4 -4
  313. chia/consensus/get_block_challenge.py +2 -2
  314. chia/consensus/get_block_generator.py +4 -3
  315. chia/consensus/multiprocess_validation.py +207 -304
  316. chia/consensus/vdf_info_computation.py +3 -3
  317. chia/daemon/client.py +46 -27
  318. chia/daemon/keychain_proxy.py +10 -9
  319. chia/daemon/keychain_server.py +18 -18
  320. chia/daemon/server.py +103 -113
  321. chia/daemon/windows_signal.py +2 -2
  322. chia/data_layer/data_layer.py +64 -76
  323. chia/data_layer/data_layer_api.py +8 -0
  324. chia/data_layer/data_layer_errors.py +3 -3
  325. chia/data_layer/data_layer_server.py +2 -2
  326. chia/data_layer/data_layer_util.py +71 -71
  327. chia/data_layer/data_layer_wallet.py +63 -67
  328. chia/data_layer/data_store.py +72 -72
  329. chia/data_layer/dl_wallet_store.py +10 -10
  330. chia/data_layer/download_data.py +5 -5
  331. chia/data_layer/s3_plugin_service.py +9 -9
  332. chia/data_layer/util/benchmark.py +0 -1
  333. chia/data_layer/util/plugin.py +2 -3
  334. chia/farmer/farmer.py +46 -43
  335. chia/farmer/farmer_api.py +27 -21
  336. chia/full_node/block_height_map.py +6 -6
  337. chia/full_node/block_store.py +41 -35
  338. chia/full_node/coin_store.py +42 -41
  339. chia/full_node/fee_estimate.py +2 -2
  340. chia/full_node/fee_estimation.py +1 -2
  341. chia/full_node/fee_history.py +5 -6
  342. chia/full_node/fee_tracker.py +24 -24
  343. chia/full_node/full_node.py +574 -300
  344. chia/full_node/full_node_api.py +181 -130
  345. chia/full_node/full_node_store.py +43 -43
  346. chia/full_node/hint_management.py +4 -4
  347. chia/full_node/hint_store.py +9 -10
  348. chia/full_node/mempool.py +25 -19
  349. chia/full_node/mempool_check_conditions.py +11 -42
  350. chia/full_node/mempool_manager.py +48 -53
  351. chia/full_node/pending_tx_cache.py +9 -9
  352. chia/full_node/subscriptions.py +23 -24
  353. chia/full_node/sync_store.py +8 -7
  354. chia/full_node/tx_processing_queue.py +3 -3
  355. chia/full_node/util/__init__.py +0 -0
  356. chia/full_node/weight_proof.py +79 -78
  357. chia/harvester/harvester.py +9 -8
  358. chia/harvester/harvester_api.py +19 -13
  359. chia/introducer/introducer.py +7 -5
  360. chia/introducer/introducer_api.py +9 -3
  361. chia/legacy/keyring.py +6 -5
  362. chia/plot_sync/delta.py +8 -8
  363. chia/plot_sync/receiver.py +12 -11
  364. chia/plot_sync/sender.py +15 -12
  365. chia/plotters/bladebit.py +12 -12
  366. chia/plotters/chiapos.py +2 -2
  367. chia/plotters/madmax.py +8 -8
  368. chia/plotters/plotters.py +6 -6
  369. chia/plotters/plotters_util.py +6 -4
  370. chia/plotting/cache.py +8 -7
  371. chia/plotting/check_plots.py +8 -8
  372. chia/plotting/create_plots.py +6 -6
  373. chia/plotting/manager.py +22 -22
  374. chia/plotting/util.py +31 -19
  375. chia/pools/pool_config.py +7 -7
  376. chia/pools/pool_puzzles.py +16 -16
  377. chia/pools/pool_wallet.py +64 -57
  378. chia/pools/pool_wallet_info.py +3 -3
  379. chia/protocols/full_node_protocol.py +3 -3
  380. chia/protocols/harvester_protocol.py +12 -12
  381. chia/protocols/introducer_protocol.py +1 -2
  382. chia/protocols/protocol_message_types.py +4 -4
  383. chia/protocols/protocol_state_machine.py +2 -2
  384. chia/protocols/protocol_timing.py +1 -0
  385. chia/protocols/shared_protocol.py +3 -3
  386. chia/protocols/timelord_protocol.py +2 -2
  387. chia/protocols/wallet_protocol.py +33 -33
  388. chia/rpc/crawler_rpc_api.py +12 -7
  389. chia/rpc/data_layer_rpc_api.py +49 -44
  390. chia/rpc/data_layer_rpc_client.py +41 -41
  391. chia/rpc/data_layer_rpc_util.py +7 -11
  392. chia/rpc/farmer_rpc_api.py +32 -27
  393. chia/rpc/farmer_rpc_client.py +14 -14
  394. chia/rpc/full_node_rpc_api.py +53 -48
  395. chia/rpc/full_node_rpc_client.py +30 -30
  396. chia/rpc/harvester_rpc_api.py +16 -11
  397. chia/rpc/harvester_rpc_client.py +6 -6
  398. chia/rpc/rpc_client.py +34 -14
  399. chia/rpc/rpc_server.py +117 -43
  400. chia/rpc/timelord_rpc_api.py +9 -4
  401. chia/rpc/util.py +11 -211
  402. chia/rpc/wallet_request_types.py +276 -60
  403. chia/rpc/wallet_rpc_api.py +563 -399
  404. chia/rpc/wallet_rpc_client.py +220 -250
  405. chia/seeder/crawl_store.py +6 -8
  406. chia/seeder/crawler.py +23 -36
  407. chia/seeder/crawler_api.py +28 -22
  408. chia/seeder/dns_server.py +99 -50
  409. chia/seeder/start_crawler.py +13 -9
  410. chia/server/address_manager.py +19 -19
  411. chia/server/address_manager_store.py +17 -17
  412. chia/server/api_protocol.py +106 -1
  413. chia/server/capabilities.py +3 -3
  414. chia/server/chia_policy.py +17 -16
  415. chia/server/introducer_peers.py +3 -3
  416. chia/server/node_discovery.py +34 -38
  417. chia/server/rate_limit_numbers.py +26 -16
  418. chia/server/rate_limits.py +67 -27
  419. chia/server/server.py +52 -31
  420. chia/server/signal_handlers.py +6 -3
  421. chia/server/ssl_context.py +5 -5
  422. chia/server/start_data_layer.py +37 -23
  423. chia/server/start_farmer.py +28 -16
  424. chia/server/start_full_node.py +29 -23
  425. chia/server/start_harvester.py +28 -15
  426. chia/server/start_introducer.py +27 -15
  427. chia/server/start_service.py +17 -29
  428. chia/server/start_timelord.py +25 -18
  429. chia/server/start_wallet.py +22 -18
  430. chia/server/upnp.py +4 -3
  431. chia/server/ws_connection.py +68 -54
  432. chia/simulator/add_blocks_in_batches.py +54 -0
  433. chia/simulator/block_tools.py +65 -64
  434. chia/simulator/full_node_simulator.py +66 -74
  435. chia/simulator/setup_services.py +10 -9
  436. chia/simulator/simulator_full_node_rpc_api.py +12 -14
  437. chia/simulator/simulator_full_node_rpc_client.py +3 -5
  438. chia/simulator/simulator_test_tools.py +8 -7
  439. chia/simulator/socket.py +1 -4
  440. chia/simulator/ssl_certs.py +5 -5
  441. chia/simulator/ssl_certs_1.py +2 -4
  442. chia/simulator/ssl_certs_10.py +2 -4
  443. chia/simulator/ssl_certs_2.py +2 -4
  444. chia/simulator/ssl_certs_3.py +2 -4
  445. chia/simulator/ssl_certs_4.py +2 -4
  446. chia/simulator/ssl_certs_5.py +2 -4
  447. chia/simulator/ssl_certs_6.py +2 -4
  448. chia/simulator/ssl_certs_7.py +2 -4
  449. chia/simulator/ssl_certs_8.py +2 -4
  450. chia/simulator/ssl_certs_9.py +2 -4
  451. chia/simulator/start_simulator.py +14 -6
  452. chia/simulator/wallet_tools.py +21 -20
  453. chia/ssl/create_ssl.py +11 -11
  454. chia/timelord/iters_from_block.py +2 -2
  455. chia/timelord/timelord.py +57 -33
  456. chia/timelord/timelord_api.py +12 -6
  457. chia/timelord/timelord_launcher.py +10 -8
  458. chia/timelord/timelord_state.py +5 -5
  459. chia/types/block_protocol.py +2 -2
  460. chia/types/blockchain_format/coin.py +3 -3
  461. chia/types/blockchain_format/program.py +17 -18
  462. chia/types/blockchain_format/tree_hash.py +9 -9
  463. chia/types/coin_spend.py +8 -8
  464. chia/types/condition_with_args.py +1 -2
  465. chia/types/eligible_coin_spends.py +16 -15
  466. chia/types/generator_types.py +1 -2
  467. chia/types/internal_mempool_item.py +1 -2
  468. chia/types/mempool_item.py +7 -7
  469. chia/types/mempool_submission_status.py +2 -2
  470. chia/types/peer_info.py +1 -1
  471. chia/types/spend_bundle.py +1 -2
  472. chia/types/transaction_queue_entry.py +2 -2
  473. chia/types/unfinished_header_block.py +2 -2
  474. chia/types/validation_state.py +14 -0
  475. chia/types/weight_proof.py +5 -6
  476. chia/util/action_scope.py +8 -8
  477. chia/util/async_pool.py +6 -4
  478. chia/util/augmented_chain.py +13 -9
  479. chia/util/batches.py +5 -2
  480. chia/util/bech32m.py +14 -11
  481. chia/util/beta_metrics.py +5 -4
  482. chia/util/block_cache.py +5 -5
  483. chia/util/byte_types.py +2 -0
  484. chia/util/check_fork_next_block.py +3 -2
  485. chia/util/chia_logging.py +41 -21
  486. chia/util/collection.py +3 -3
  487. chia/util/condition_tools.py +18 -18
  488. chia/util/config.py +26 -25
  489. chia/util/cpu.py +2 -0
  490. chia/util/db_synchronous.py +2 -0
  491. chia/util/db_version.py +2 -0
  492. chia/util/db_wrapper.py +13 -10
  493. chia/util/default_root.py +17 -0
  494. chia/util/dump_keyring.py +6 -6
  495. chia/util/errors.py +5 -3
  496. chia/util/file_keyring.py +22 -33
  497. chia/util/files.py +2 -0
  498. chia/util/full_block_utils.py +31 -7
  499. chia/util/generator_tools.py +18 -8
  500. chia/util/hash.py +3 -1
  501. chia/util/initial-config.yaml +19 -0
  502. chia/util/inline_executor.py +2 -0
  503. chia/util/ip_address.py +39 -0
  504. chia/util/json_util.py +0 -4
  505. chia/util/keychain.py +27 -24
  506. chia/util/keyring_wrapper.py +65 -4
  507. chia/util/limited_semaphore.py +3 -1
  508. chia/util/lock.py +4 -2
  509. chia/util/log_exceptions.py +5 -2
  510. chia/util/logging.py +3 -1
  511. chia/util/lru_cache.py +2 -0
  512. chia/util/math.py +4 -4
  513. chia/util/network.py +15 -73
  514. chia/util/paginator.py +3 -1
  515. chia/util/path.py +2 -0
  516. chia/util/permissions.py +3 -2
  517. chia/util/prev_transaction_block.py +1 -3
  518. chia/util/priority_mutex.py +6 -3
  519. chia/util/profiler.py +7 -4
  520. chia/util/recursive_replace.py +2 -0
  521. chia/util/safe_cancel_task.py +2 -0
  522. chia/util/service_groups.py +2 -2
  523. chia/util/setproctitle.py +2 -0
  524. chia/util/significant_bits.py +2 -0
  525. chia/util/ssl_check.py +11 -11
  526. chia/util/streamable.py +44 -56
  527. chia/util/task_referencer.py +59 -0
  528. chia/util/task_timing.py +22 -18
  529. chia/util/timing.py +4 -1
  530. chia/util/vdf_prover.py +2 -3
  531. chia/util/virtual_project_analysis.py +540 -0
  532. chia/util/ws_message.py +6 -6
  533. chia/wallet/cat_wallet/cat_info.py +3 -3
  534. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
  535. chia/wallet/cat_wallet/cat_utils.py +5 -4
  536. chia/wallet/cat_wallet/cat_wallet.py +56 -70
  537. chia/wallet/cat_wallet/dao_cat_info.py +3 -3
  538. chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
  539. chia/wallet/cat_wallet/lineage_store.py +2 -2
  540. chia/wallet/coin_selection.py +15 -15
  541. chia/wallet/conditions.py +257 -71
  542. chia/wallet/dao_wallet/dao_info.py +4 -4
  543. chia/wallet/dao_wallet/dao_utils.py +43 -42
  544. chia/wallet/dao_wallet/dao_wallet.py +66 -68
  545. chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
  546. chia/wallet/derive_keys.py +11 -11
  547. chia/wallet/did_wallet/did_info.py +3 -3
  548. chia/wallet/did_wallet/did_wallet.py +56 -47
  549. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
  550. chia/wallet/lineage_proof.py +4 -4
  551. chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
  552. chia/wallet/nft_wallet/nft_info.py +4 -4
  553. chia/wallet/nft_wallet/nft_puzzles.py +16 -16
  554. chia/wallet/nft_wallet/nft_wallet.py +90 -89
  555. chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
  556. chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
  557. chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
  558. chia/wallet/nft_wallet/uncurry_nft.py +2 -2
  559. chia/wallet/notification_manager.py +5 -5
  560. chia/wallet/notification_store.py +6 -6
  561. chia/wallet/outer_puzzles.py +2 -2
  562. chia/wallet/payment.py +4 -5
  563. chia/wallet/puzzle_drivers.py +4 -4
  564. chia/wallet/puzzles/clawback/drivers.py +5 -5
  565. chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
  566. chia/wallet/puzzles/load_clvm.py +2 -3
  567. chia/wallet/puzzles/p2_conditions.py +1 -2
  568. chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
  569. chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
  570. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
  571. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
  572. chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
  573. chia/wallet/puzzles/puzzle_utils.py +7 -7
  574. chia/wallet/puzzles/singleton_top_layer.py +6 -5
  575. chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
  576. chia/wallet/puzzles/tails.py +34 -30
  577. chia/wallet/signer_protocol.py +7 -8
  578. chia/wallet/singleton.py +4 -4
  579. chia/wallet/trade_manager.py +155 -141
  580. chia/wallet/trade_record.py +5 -5
  581. chia/wallet/trading/offer.py +100 -101
  582. chia/wallet/trading/trade_store.py +14 -14
  583. chia/wallet/transaction_record.py +31 -16
  584. chia/wallet/util/address_type.py +4 -4
  585. chia/wallet/util/blind_signer_tl.py +8 -12
  586. chia/wallet/util/clvm_streamable.py +15 -15
  587. chia/wallet/util/compute_hints.py +5 -5
  588. chia/wallet/util/compute_memos.py +4 -6
  589. chia/wallet/util/curry_and_treehash.py +3 -2
  590. chia/wallet/util/debug_spend_bundle.py +6 -8
  591. chia/wallet/util/merkle_tree.py +10 -10
  592. chia/wallet/util/merkle_utils.py +10 -10
  593. chia/wallet/util/new_peak_queue.py +3 -3
  594. chia/wallet/util/peer_request_cache.py +8 -8
  595. chia/{util → wallet/util}/pprint.py +2 -3
  596. chia/wallet/util/puzzle_compression.py +3 -4
  597. chia/wallet/util/puzzle_decorator.py +10 -10
  598. chia/wallet/util/query_filter.py +9 -10
  599. chia/wallet/util/tx_config.py +12 -12
  600. chia/wallet/util/wallet_sync_utils.py +24 -21
  601. chia/wallet/util/wallet_types.py +9 -2
  602. chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
  603. chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
  604. chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
  605. chia/wallet/vc_wallet/vc_drivers.py +16 -16
  606. chia/wallet/vc_wallet/vc_store.py +9 -9
  607. chia/wallet/vc_wallet/vc_wallet.py +35 -35
  608. chia/wallet/wallet.py +54 -54
  609. chia/wallet/wallet_action_scope.py +14 -13
  610. chia/wallet/wallet_blockchain.py +10 -10
  611. chia/wallet/wallet_coin_record.py +2 -2
  612. chia/wallet/wallet_coin_store.py +10 -10
  613. chia/wallet/wallet_info.py +1 -2
  614. chia/wallet/wallet_interested_store.py +5 -5
  615. chia/wallet/wallet_nft_store.py +6 -6
  616. chia/wallet/wallet_node.py +72 -76
  617. chia/wallet/wallet_node_api.py +33 -27
  618. chia/wallet/wallet_pool_store.py +1 -2
  619. chia/wallet/wallet_protocol.py +15 -15
  620. chia/wallet/wallet_puzzle_store.py +35 -4
  621. chia/wallet/wallet_retry_store.py +2 -2
  622. chia/wallet/wallet_singleton_store.py +10 -9
  623. chia/wallet/wallet_spend_bundle.py +4 -20
  624. chia/wallet/wallet_state_manager.py +223 -224
  625. chia/wallet/wallet_transaction_store.py +44 -18
  626. chia/wallet/wallet_user_store.py +2 -2
  627. chia/wallet/wallet_weight_proof_handler.py +2 -2
  628. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
  629. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
  630. chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
  631. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/WHEEL +1 -1
  632. mozilla-ca/cacert.pem +32 -87
  633. chia/_tests/cmds/wallet/test_coins.py +0 -195
  634. chia/consensus/block_root_validation.py +0 -46
  635. chia/util/api_decorators.py +0 -89
  636. chia_blockchain-2.5.0rc1.dist-info/RECORD +0 -1028
  637. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
chia/cmds/wallet.py CHANGED
@@ -2,12 +2,14 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  import pathlib
5
- from typing import List, Optional, Sequence
5
+ from collections.abc import Sequence
6
+ from typing import Optional
6
7
 
7
8
  import click
8
9
 
9
10
  from chia.cmds import options
10
11
  from chia.cmds.check_wallet_db import help_text as check_help_text
12
+ from chia.cmds.cmd_classes import ChiaCliContext, get_chia_command_metadata
11
13
  from chia.cmds.cmds_util import timelock_args, tx_out_cmd
12
14
  from chia.cmds.coins import coins_cmd
13
15
  from chia.cmds.param_types import (
@@ -18,6 +20,7 @@ from chia.cmds.param_types import (
18
20
  CliAmount,
19
21
  cli_amount_none,
20
22
  )
23
+ from chia.cmds.signer import PushTransactionsCMD, signer_cmd
21
24
  from chia.types.blockchain_format.sized_bytes import bytes32
22
25
  from chia.util.ints import uint32, uint64
23
26
  from chia.wallet.conditions import ConditionValidTimes
@@ -33,6 +36,10 @@ def wallet_cmd(ctx: click.Context) -> None:
33
36
  pass
34
37
 
35
38
 
39
+ wallet_cmd.add_command(signer_cmd)
40
+ wallet_cmd.add_command(get_chia_command_metadata(PushTransactionsCMD).command)
41
+
42
+
36
43
  @wallet_cmd.command("get_transaction", help="Get a transaction")
37
44
  @click.option(
38
45
  "-wp",
@@ -46,10 +53,21 @@ def wallet_cmd(ctx: click.Context) -> None:
46
53
  @click.option("-i", "--id", help="Id of the wallet to use", type=int, default=1, show_default=True, required=True)
47
54
  @click.option("-tx", "--tx_id", help="transaction id to search for", type=str, required=True)
48
55
  @click.option("--verbose", "-v", count=True, type=int)
49
- def get_transaction_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int, tx_id: str, verbose: int) -> None:
50
- from .wallet_funcs import get_transaction
56
+ @click.pass_context
57
+ def get_transaction_cmd(
58
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, id: int, tx_id: str, verbose: int
59
+ ) -> None:
60
+ from chia.cmds.wallet_funcs import get_transaction
51
61
 
52
- asyncio.run(get_transaction(wallet_rpc_port=wallet_rpc_port, fingerprint=fingerprint, tx_id=tx_id, verbose=verbose))
62
+ asyncio.run(
63
+ get_transaction(
64
+ root_path=ChiaCliContext.set_default(ctx).root_path,
65
+ wallet_rpc_port=wallet_rpc_port,
66
+ fingerprint=fingerprint,
67
+ tx_id=tx_id,
68
+ verbose=verbose,
69
+ )
70
+ )
53
71
 
54
72
 
55
73
  @wallet_cmd.command("get_transactions", help="Get all transactions")
@@ -113,7 +131,9 @@ def get_transaction_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: in
113
131
  default=False,
114
132
  help="Only show clawback transactions",
115
133
  )
134
+ @click.pass_context
116
135
  def get_transactions_cmd(
136
+ ctx: click.Context,
117
137
  wallet_rpc_port: Optional[int],
118
138
  fingerprint: int,
119
139
  id: int,
@@ -125,10 +145,11 @@ def get_transactions_cmd(
125
145
  reverse: bool,
126
146
  clawback: bool,
127
147
  ) -> None: # pragma: no cover
128
- from .wallet_funcs import get_transactions
148
+ from chia.cmds.wallet_funcs import get_transactions
129
149
 
130
150
  asyncio.run(
131
151
  get_transactions(
152
+ root_path=ChiaCliContext.set_default(ctx).root_path,
132
153
  wallet_rpc_port=wallet_rpc_port,
133
154
  fp=fingerprint,
134
155
  wallet_id=id,
@@ -200,7 +221,9 @@ def get_transactions_cmd(
200
221
  default=0,
201
222
  )
202
223
  @tx_out_cmd()
224
+ @click.pass_context
203
225
  def send_cmd(
226
+ ctx: click.Context,
204
227
  wallet_rpc_port: Optional[int],
205
228
  fingerprint: int,
206
229
  id: int,
@@ -216,11 +239,12 @@ def send_cmd(
216
239
  clawback_time: int,
217
240
  push: bool,
218
241
  condition_valid_times: ConditionValidTimes,
219
- ) -> List[TransactionRecord]:
220
- from .wallet_funcs import send
242
+ ) -> list[TransactionRecord]:
243
+ from chia.cmds.wallet_funcs import send
221
244
 
222
245
  return asyncio.run(
223
246
  send(
247
+ root_path=ChiaCliContext.set_default(ctx).root_path,
224
248
  wallet_rpc_port=wallet_rpc_port,
225
249
  fp=fingerprint,
226
250
  wallet_id=id,
@@ -256,10 +280,18 @@ def send_cmd(
256
280
  type=click.Choice([x.name.lower() for x in WalletType]),
257
281
  default=None,
258
282
  )
259
- def show_cmd(wallet_rpc_port: Optional[int], fingerprint: int, wallet_type: Optional[str]) -> None:
260
- from .wallet_funcs import print_balances
283
+ @click.pass_context
284
+ def show_cmd(ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, wallet_type: Optional[str]) -> None:
285
+ from chia.cmds.wallet_funcs import print_balances
261
286
 
262
- asyncio.run(print_balances(wallet_rpc_port, fingerprint, WalletType[wallet_type.upper()] if wallet_type else None))
287
+ asyncio.run(
288
+ print_balances(
289
+ ChiaCliContext.set_default(ctx).root_path,
290
+ wallet_rpc_port,
291
+ fingerprint,
292
+ WalletType[wallet_type.upper()] if wallet_type else None,
293
+ )
294
+ )
263
295
 
264
296
 
265
297
  @wallet_cmd.command("get_address", help="Get a wallet receive address")
@@ -282,10 +314,13 @@ def show_cmd(wallet_rpc_port: Optional[int], fingerprint: int, wallet_type: Opti
282
314
  is_flag=True,
283
315
  default=False,
284
316
  )
285
- def get_address_cmd(wallet_rpc_port: Optional[int], id: int, fingerprint: int, new_address: bool) -> None:
286
- from .wallet_funcs import get_address
317
+ @click.pass_context
318
+ def get_address_cmd(
319
+ ctx: click.Context, wallet_rpc_port: Optional[int], id: int, fingerprint: int, new_address: bool
320
+ ) -> None:
321
+ from chia.cmds.wallet_funcs import get_address
287
322
 
288
- asyncio.run(get_address(wallet_rpc_port, fingerprint, id, new_address))
323
+ asyncio.run(get_address(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, id, new_address))
289
324
 
290
325
 
291
326
  @wallet_cmd.command(
@@ -319,7 +354,9 @@ def get_address_cmd(wallet_rpc_port: Optional[int], id: int, fingerprint: int, n
319
354
  default=False,
320
355
  )
321
356
  @tx_out_cmd()
357
+ @click.pass_context
322
358
  def clawback(
359
+ ctx: click.Context,
323
360
  wallet_rpc_port: Optional[int],
324
361
  id: int,
325
362
  fingerprint: int,
@@ -328,11 +365,12 @@ def clawback(
328
365
  force: bool,
329
366
  push: bool,
330
367
  condition_valid_times: ConditionValidTimes,
331
- ) -> List[TransactionRecord]:
332
- from .wallet_funcs import spend_clawback
368
+ ) -> list[TransactionRecord]:
369
+ from chia.cmds.wallet_funcs import spend_clawback
333
370
 
334
371
  return asyncio.run(
335
372
  spend_clawback(
373
+ root_path=ChiaCliContext.set_default(ctx).root_path,
336
374
  wallet_rpc_port=wallet_rpc_port,
337
375
  fp=fingerprint,
338
376
  fee=fee,
@@ -354,10 +392,15 @@ def clawback(
354
392
  )
355
393
  @click.option("-i", "--id", help="Id of the wallet to use", type=int, default=1, show_default=True, required=True)
356
394
  @options.create_fingerprint()
357
- def delete_unconfirmed_transactions_cmd(wallet_rpc_port: Optional[int], id: int, fingerprint: int) -> None:
358
- from .wallet_funcs import delete_unconfirmed_transactions
395
+ @click.pass_context
396
+ def delete_unconfirmed_transactions_cmd(
397
+ ctx: click.Context, wallet_rpc_port: Optional[int], id: int, fingerprint: int
398
+ ) -> None:
399
+ from chia.cmds.wallet_funcs import delete_unconfirmed_transactions
359
400
 
360
- asyncio.run(delete_unconfirmed_transactions(wallet_rpc_port, fingerprint, id))
401
+ asyncio.run(
402
+ delete_unconfirmed_transactions(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, id)
403
+ )
361
404
 
362
405
 
363
406
  @wallet_cmd.command("get_derivation_index", help="Get the last puzzle hash derivation path index")
@@ -369,10 +412,11 @@ def delete_unconfirmed_transactions_cmd(wallet_rpc_port: Optional[int], id: int,
369
412
  default=None,
370
413
  )
371
414
  @options.create_fingerprint()
372
- def get_derivation_index_cmd(wallet_rpc_port: Optional[int], fingerprint: int) -> None:
373
- from .wallet_funcs import get_derivation_index
415
+ @click.pass_context
416
+ def get_derivation_index_cmd(ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int) -> None:
417
+ from chia.cmds.wallet_funcs import get_derivation_index
374
418
 
375
- asyncio.run(get_derivation_index(wallet_rpc_port, fingerprint))
419
+ asyncio.run(get_derivation_index(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint))
376
420
 
377
421
 
378
422
  @wallet_cmd.command("sign_message", help="Sign a message by a derivation address")
@@ -387,13 +431,15 @@ def get_derivation_index_cmd(wallet_rpc_port: Optional[int], fingerprint: int) -
387
431
  # TODO: Change RPC's to use the puzzle hash instead of address
388
432
  @click.option("-a", "--address", help="The address you want to use for signing", type=AddressParamType(), required=True)
389
433
  @click.option("-m", "--hex_message", help="The hex message you want sign", type=str, required=True)
434
+ @click.pass_context
390
435
  def address_sign_message(
391
- wallet_rpc_port: Optional[int], fingerprint: int, address: CliAddress, hex_message: str
436
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, address: CliAddress, hex_message: str
392
437
  ) -> None:
393
- from .wallet_funcs import sign_message
438
+ from chia.cmds.wallet_funcs import sign_message
394
439
 
395
440
  asyncio.run(
396
441
  sign_message(
442
+ root_path=ChiaCliContext.set_default(ctx).root_path,
397
443
  wallet_rpc_port=wallet_rpc_port,
398
444
  fp=fingerprint,
399
445
  addr_type=AddressType.XCH,
@@ -417,10 +463,13 @@ def address_sign_message(
417
463
  @click.option(
418
464
  "-i", "--index", help="Index to set. Must be greater than the current derivation index", type=int, required=True
419
465
  )
420
- def update_derivation_index_cmd(wallet_rpc_port: Optional[int], fingerprint: int, index: int) -> None:
421
- from .wallet_funcs import update_derivation_index
466
+ @click.pass_context
467
+ def update_derivation_index_cmd(
468
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, index: int
469
+ ) -> None:
470
+ from chia.cmds.wallet_funcs import update_derivation_index
422
471
 
423
- asyncio.run(update_derivation_index(wallet_rpc_port, fingerprint, index))
472
+ asyncio.run(update_derivation_index(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, index))
424
473
 
425
474
 
426
475
  @wallet_cmd.command("add_token", help="Add/Rename a CAT to the wallet by its asset ID")
@@ -444,10 +493,15 @@ def update_derivation_index_cmd(wallet_rpc_port: Optional[int], fingerprint: int
444
493
  help="The name you wish to designate to the token",
445
494
  )
446
495
  @options.create_fingerprint()
447
- def add_token_cmd(wallet_rpc_port: Optional[int], asset_id: bytes32, token_name: str, fingerprint: int) -> None:
448
- from .wallet_funcs import add_token
496
+ @click.pass_context
497
+ def add_token_cmd(
498
+ ctx: click.Context, wallet_rpc_port: Optional[int], asset_id: bytes32, token_name: str, fingerprint: int
499
+ ) -> None:
500
+ from chia.cmds.wallet_funcs import add_token
449
501
 
450
- asyncio.run(add_token(wallet_rpc_port, fingerprint, asset_id, token_name))
502
+ asyncio.run(
503
+ add_token(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, asset_id, token_name)
504
+ )
451
505
 
452
506
 
453
507
  @wallet_cmd.command("make_offer", help="Create an offer of XCH/CATs/NFTs for XCH/CATs/NFTs")
@@ -488,9 +542,11 @@ def add_token_cmd(wallet_rpc_port: Optional[int], asset_id: bytes32, token_name:
488
542
  )
489
543
  @click.option("--override", help="Creates offer without checking for unusual values", is_flag=True, default=False)
490
544
  @timelock_args(enable=True)
545
+ @click.pass_context
491
546
  # This command looks like a good candidate for @tx_out_cmd however, pushing an incomplete tx is nonsensical and
492
547
  # we already have a canonical offer file format which the idea of exporting a different transaction conflicts with
493
548
  def make_offer_cmd(
549
+ ctx: click.Context,
494
550
  wallet_rpc_port: Optional[int],
495
551
  fingerprint: int,
496
552
  offer: Sequence[str],
@@ -501,7 +557,7 @@ def make_offer_cmd(
501
557
  override: bool,
502
558
  condition_valid_times: ConditionValidTimes,
503
559
  ) -> None:
504
- from .wallet_funcs import make_offer
560
+ from chia.cmds.wallet_funcs import make_offer
505
561
 
506
562
  if len(request) == 0 and not override:
507
563
  print("Cannot make an offer without requesting something without --override")
@@ -509,6 +565,7 @@ def make_offer_cmd(
509
565
 
510
566
  asyncio.run(
511
567
  make_offer(
568
+ root_path=ChiaCliContext.set_default(ctx).root_path,
512
569
  wallet_rpc_port=wallet_rpc_port,
513
570
  fp=fingerprint,
514
571
  fee=fee,
@@ -540,8 +597,11 @@ def make_offer_cmd(
540
597
  "-ic", "--include-completed", help="Include offers that have been confirmed/cancelled or failed", is_flag=True
541
598
  )
542
599
  @click.option("-s", "--summaries", help="Show the assets being offered and requested for each offer", is_flag=True)
600
+ @click.option("--sort-by-relevance/--sort-by-confirmed-height", help="Sort the offers one of two ways", is_flag=True)
543
601
  @click.option("-r", "--reverse", help="Reverse the order of the output", is_flag=True)
602
+ @click.pass_context
544
603
  def get_offers_cmd(
604
+ ctx: click.Context,
545
605
  wallet_rpc_port: Optional[int],
546
606
  fingerprint: int,
547
607
  id: Optional[bytes32],
@@ -551,11 +611,13 @@ def get_offers_cmd(
551
611
  include_completed: bool,
552
612
  summaries: bool,
553
613
  reverse: bool,
614
+ sort_by_relevance: bool,
554
615
  ) -> None:
555
- from .wallet_funcs import get_offers
616
+ from chia.cmds.wallet_funcs import get_offers
556
617
 
557
618
  asyncio.run(
558
619
  get_offers(
620
+ root_path=ChiaCliContext.set_default(ctx).root_path,
559
621
  wallet_rpc_port=wallet_rpc_port,
560
622
  fp=fingerprint,
561
623
  offer_id=id,
@@ -565,6 +627,7 @@ def get_offers_cmd(
565
627
  include_completed=include_completed,
566
628
  summaries=summaries,
567
629
  reverse=reverse,
630
+ sort_by_relevance=sort_by_relevance,
568
631
  )
569
632
  )
570
633
 
@@ -589,7 +652,9 @@ def get_offers_cmd(
589
652
  default=False,
590
653
  )
591
654
  @tx_out_cmd()
655
+ @click.pass_context
592
656
  def take_offer_cmd(
657
+ ctx: click.Context,
593
658
  path_or_hex: str,
594
659
  wallet_rpc_port: Optional[int],
595
660
  fingerprint: int,
@@ -598,11 +663,12 @@ def take_offer_cmd(
598
663
  reuse: bool,
599
664
  push: bool,
600
665
  condition_valid_times: ConditionValidTimes,
601
- ) -> List[TransactionRecord]:
602
- from .wallet_funcs import take_offer
666
+ ) -> list[TransactionRecord]:
667
+ from chia.cmds.wallet_funcs import take_offer
603
668
 
604
669
  return asyncio.run(
605
670
  take_offer(
671
+ ChiaCliContext.set_default(ctx).root_path,
606
672
  wallet_rpc_port,
607
673
  fingerprint,
608
674
  fee,
@@ -627,7 +693,9 @@ def take_offer_cmd(
627
693
  @click.option("--insecure", help="Don't make an on-chain transaction, simply mark the offer as cancelled", is_flag=True)
628
694
  @options.create_fee("The fee to use when cancelling the offer securely, in XCH")
629
695
  @tx_out_cmd()
696
+ @click.pass_context
630
697
  def cancel_offer_cmd(
698
+ ctx: click.Context,
631
699
  wallet_rpc_port: Optional[int],
632
700
  fingerprint: int,
633
701
  id: bytes32,
@@ -635,11 +703,12 @@ def cancel_offer_cmd(
635
703
  fee: uint64,
636
704
  push: bool,
637
705
  condition_valid_times: ConditionValidTimes,
638
- ) -> List[TransactionRecord]:
639
- from .wallet_funcs import cancel_offer
706
+ ) -> list[TransactionRecord]:
707
+ from chia.cmds.wallet_funcs import cancel_offer
640
708
 
641
709
  return asyncio.run(
642
710
  cancel_offer(
711
+ ChiaCliContext.set_default(ctx).root_path,
643
712
  wallet_rpc_port,
644
713
  fingerprint,
645
714
  fee,
@@ -662,7 +731,7 @@ def check_wallet_cmd(ctx: click.Context, db_path: str, verbose: bool) -> None:
662
731
 
663
732
  from chia.cmds.check_wallet_db import scan
664
733
 
665
- asyncio.run(scan(ctx.obj["root_path"], db_path, verbose=verbose))
734
+ asyncio.run(scan(ChiaCliContext.set_default(ctx).root_path, db_path, verbose=verbose))
666
735
 
667
736
 
668
737
  @wallet_cmd.group("did", help="DID related actions")
@@ -690,7 +759,9 @@ def did_cmd() -> None:
690
759
  )
691
760
  @options.create_fee()
692
761
  @tx_out_cmd()
762
+ @click.pass_context
693
763
  def did_create_wallet_cmd(
764
+ ctx: click.Context,
694
765
  wallet_rpc_port: Optional[int],
695
766
  fingerprint: int,
696
767
  name: Optional[str],
@@ -698,11 +769,12 @@ def did_create_wallet_cmd(
698
769
  fee: uint64,
699
770
  push: bool,
700
771
  condition_valid_times: ConditionValidTimes,
701
- ) -> List[TransactionRecord]:
702
- from .wallet_funcs import create_did_wallet
772
+ ) -> list[TransactionRecord]:
773
+ from chia.cmds.wallet_funcs import create_did_wallet
703
774
 
704
775
  return asyncio.run(
705
776
  create_did_wallet(
777
+ ChiaCliContext.set_default(ctx).root_path,
706
778
  wallet_rpc_port,
707
779
  fingerprint,
708
780
  fee,
@@ -725,11 +797,15 @@ def did_create_wallet_cmd(
725
797
  @options.create_fingerprint()
726
798
  @click.option("-i", "--did_id", help="DID ID you want to use for signing", type=AddressParamType(), required=True)
727
799
  @click.option("-m", "--hex_message", help="The hex message you want to sign", type=str, required=True)
728
- def did_sign_message(wallet_rpc_port: Optional[int], fingerprint: int, did_id: CliAddress, hex_message: str) -> None:
729
- from .wallet_funcs import sign_message
800
+ @click.pass_context
801
+ def did_sign_message(
802
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, did_id: CliAddress, hex_message: str
803
+ ) -> None:
804
+ from chia.cmds.wallet_funcs import sign_message
730
805
 
731
806
  asyncio.run(
732
807
  sign_message(
808
+ root_path=ChiaCliContext.set_default(ctx).root_path,
733
809
  wallet_rpc_port=wallet_rpc_port,
734
810
  fp=fingerprint,
735
811
  addr_type=AddressType.DID,
@@ -750,10 +826,13 @@ def did_sign_message(wallet_rpc_port: Optional[int], fingerprint: int, did_id: C
750
826
  @options.create_fingerprint()
751
827
  @click.option("-i", "--id", help="Id of the wallet to use", type=int, required=True)
752
828
  @click.option("-n", "--name", help="Set the DID wallet name", type=str, required=True)
753
- def did_wallet_name_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int, name: str) -> None:
754
- from .wallet_funcs import did_set_wallet_name
829
+ @click.pass_context
830
+ def did_wallet_name_cmd(
831
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, id: int, name: str
832
+ ) -> None:
833
+ from chia.cmds.wallet_funcs import did_set_wallet_name
755
834
 
756
- asyncio.run(did_set_wallet_name(wallet_rpc_port, fingerprint, id, name))
835
+ asyncio.run(did_set_wallet_name(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, id, name))
757
836
 
758
837
 
759
838
  @did_cmd.command("get_did", help="Get DID from wallet")
@@ -766,10 +845,11 @@ def did_wallet_name_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: in
766
845
  )
767
846
  @options.create_fingerprint()
768
847
  @click.option("-i", "--id", help="Id of the wallet to use", type=int, required=True)
769
- def did_get_did_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int) -> None:
770
- from .wallet_funcs import get_did
848
+ @click.pass_context
849
+ def did_get_did_cmd(ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, id: int) -> None:
850
+ from chia.cmds.wallet_funcs import get_did
771
851
 
772
- asyncio.run(get_did(wallet_rpc_port, fingerprint, id))
852
+ asyncio.run(get_did(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, id))
773
853
 
774
854
 
775
855
  @did_cmd.command("get_details", help="Get more details of any DID")
@@ -783,10 +863,13 @@ def did_get_did_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int) -
783
863
  @options.create_fingerprint()
784
864
  @click.option("-id", "--coin_id", help="Id of the DID or any coin ID of the DID", type=str, required=True)
785
865
  @click.option("-l", "--latest", help="Return latest DID information", is_flag=True, default=True)
786
- def did_get_details_cmd(wallet_rpc_port: Optional[int], fingerprint: int, coin_id: str, latest: bool) -> None:
787
- from .wallet_funcs import get_did_info
866
+ @click.pass_context
867
+ def did_get_details_cmd(
868
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, coin_id: str, latest: bool
869
+ ) -> None:
870
+ from chia.cmds.wallet_funcs import get_did_info
788
871
 
789
- asyncio.run(get_did_info(wallet_rpc_port, fingerprint, coin_id, latest))
872
+ asyncio.run(get_did_info(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, coin_id, latest))
790
873
 
791
874
 
792
875
  @did_cmd.command("update_metadata", help="Update the metadata of a DID")
@@ -807,7 +890,9 @@ def did_get_details_cmd(wallet_rpc_port: Optional[int], fingerprint: int, coin_i
807
890
  default=False,
808
891
  )
809
892
  @tx_out_cmd()
893
+ @click.pass_context
810
894
  def did_update_metadata_cmd(
895
+ ctx: click.Context,
811
896
  wallet_rpc_port: Optional[int],
812
897
  fingerprint: int,
813
898
  id: int,
@@ -815,11 +900,12 @@ def did_update_metadata_cmd(
815
900
  reuse: bool,
816
901
  push: bool,
817
902
  condition_valid_times: ConditionValidTimes,
818
- ) -> List[TransactionRecord]:
819
- from .wallet_funcs import update_did_metadata
903
+ ) -> list[TransactionRecord]:
904
+ from chia.cmds.wallet_funcs import update_did_metadata
820
905
 
821
906
  return asyncio.run(
822
907
  update_did_metadata(
908
+ ChiaCliContext.set_default(ctx).root_path,
823
909
  wallet_rpc_port,
824
910
  fingerprint,
825
911
  id,
@@ -857,7 +943,9 @@ def did_update_metadata_cmd(
857
943
  type=int,
858
944
  required=False,
859
945
  )
946
+ @click.pass_context
860
947
  def did_find_lost_cmd(
948
+ ctx: click.Context,
861
949
  wallet_rpc_port: Optional[int],
862
950
  fingerprint: int,
863
951
  coin_id: str,
@@ -865,10 +953,11 @@ def did_find_lost_cmd(
865
953
  recovery_list_hash: Optional[str],
866
954
  num_verification: Optional[int],
867
955
  ) -> None:
868
- from .wallet_funcs import find_lost_did
956
+ from chia.cmds.wallet_funcs import find_lost_did
869
957
 
870
958
  asyncio.run(
871
959
  find_lost_did(
960
+ root_path=ChiaCliContext.set_default(ctx).root_path,
872
961
  wallet_rpc_port=wallet_rpc_port,
873
962
  fp=fingerprint,
874
963
  coin_id=coin_id,
@@ -904,7 +993,9 @@ def did_find_lost_cmd(
904
993
  required=False,
905
994
  )
906
995
  @tx_out_cmd()
996
+ @click.pass_context
907
997
  def did_message_spend_cmd(
998
+ ctx: click.Context,
908
999
  wallet_rpc_port: Optional[int],
909
1000
  fingerprint: int,
910
1001
  id: int,
@@ -912,11 +1003,11 @@ def did_message_spend_cmd(
912
1003
  coin_announcements: Optional[str],
913
1004
  push: bool,
914
1005
  condition_valid_times: ConditionValidTimes,
915
- ) -> List[TransactionRecord]:
916
- from .wallet_funcs import did_message_spend
1006
+ ) -> list[TransactionRecord]:
1007
+ from chia.cmds.wallet_funcs import did_message_spend
917
1008
 
918
- puzzle_list: List[str] = []
919
- coin_list: List[str] = []
1009
+ puzzle_list: list[str] = []
1010
+ coin_list: list[str] = []
920
1011
  if puzzle_announcements is not None:
921
1012
  try:
922
1013
  puzzle_list = puzzle_announcements.split(",")
@@ -938,6 +1029,7 @@ def did_message_spend_cmd(
938
1029
 
939
1030
  return asyncio.run(
940
1031
  did_message_spend(
1032
+ ChiaCliContext.set_default(ctx).root_path,
941
1033
  wallet_rpc_port,
942
1034
  fingerprint,
943
1035
  id,
@@ -972,7 +1064,9 @@ def did_message_spend_cmd(
972
1064
  default=False,
973
1065
  )
974
1066
  @tx_out_cmd()
1067
+ @click.pass_context
975
1068
  def did_transfer_did(
1069
+ ctx: click.Context,
976
1070
  wallet_rpc_port: Optional[int],
977
1071
  fingerprint: int,
978
1072
  id: int,
@@ -982,11 +1076,12 @@ def did_transfer_did(
982
1076
  reuse: bool,
983
1077
  push: bool,
984
1078
  condition_valid_times: ConditionValidTimes,
985
- ) -> List[TransactionRecord]:
986
- from .wallet_funcs import transfer_did
1079
+ ) -> list[TransactionRecord]:
1080
+ from chia.cmds.wallet_funcs import transfer_did
987
1081
 
988
1082
  return asyncio.run(
989
1083
  transfer_did(
1084
+ ChiaCliContext.set_default(ctx).root_path,
990
1085
  wallet_rpc_port,
991
1086
  fingerprint,
992
1087
  id,
@@ -1017,12 +1112,19 @@ def nft_cmd() -> None:
1017
1112
  # TODO: Change RPC to use puzzlehash instead of address
1018
1113
  @click.option("-di", "--did-id", help="DID Id to use", type=AddressParamType())
1019
1114
  @click.option("-n", "--name", help="Set the NFT wallet name", type=str)
1115
+ @click.pass_context
1020
1116
  def nft_wallet_create_cmd(
1021
- wallet_rpc_port: Optional[int], fingerprint: int, did_id: Optional[CliAddress], name: Optional[str]
1117
+ ctx: click.Context,
1118
+ wallet_rpc_port: Optional[int],
1119
+ fingerprint: int,
1120
+ did_id: Optional[CliAddress],
1121
+ name: Optional[str],
1022
1122
  ) -> None:
1023
- from .wallet_funcs import create_nft_wallet
1123
+ from chia.cmds.wallet_funcs import create_nft_wallet
1024
1124
 
1025
- asyncio.run(create_nft_wallet(wallet_rpc_port, fingerprint, did_id, name))
1125
+ asyncio.run(
1126
+ create_nft_wallet(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, did_id, name)
1127
+ )
1026
1128
 
1027
1129
 
1028
1130
  @nft_cmd.command("sign_message", help="Sign a message by a NFT")
@@ -1036,11 +1138,15 @@ def nft_wallet_create_cmd(
1036
1138
  @options.create_fingerprint()
1037
1139
  @click.option("-i", "--nft_id", help="NFT ID you want to use for signing", type=AddressParamType(), required=True)
1038
1140
  @click.option("-m", "--hex_message", help="The hex message you want to sign", type=str, required=True)
1039
- def nft_sign_message(wallet_rpc_port: Optional[int], fingerprint: int, nft_id: CliAddress, hex_message: str) -> None:
1040
- from .wallet_funcs import sign_message
1141
+ @click.pass_context
1142
+ def nft_sign_message(
1143
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, nft_id: CliAddress, hex_message: str
1144
+ ) -> None:
1145
+ from chia.cmds.wallet_funcs import sign_message
1041
1146
 
1042
1147
  asyncio.run(
1043
1148
  sign_message(
1149
+ root_path=ChiaCliContext.set_default(ctx).root_path,
1044
1150
  wallet_rpc_port=wallet_rpc_port,
1045
1151
  fp=fingerprint,
1046
1152
  addr_type=AddressType.NFT,
@@ -1087,7 +1193,9 @@ def nft_sign_message(wallet_rpc_port: Optional[int], fingerprint: int, nft_id: C
1087
1193
  default=False,
1088
1194
  )
1089
1195
  @tx_out_cmd()
1196
+ @click.pass_context
1090
1197
  def nft_mint_cmd(
1198
+ ctx: click.Context,
1091
1199
  wallet_rpc_port: Optional[int],
1092
1200
  fingerprint: int,
1093
1201
  id: int,
@@ -1107,8 +1215,8 @@ def nft_mint_cmd(
1107
1215
  reuse: bool,
1108
1216
  push: bool,
1109
1217
  condition_valid_times: ConditionValidTimes,
1110
- ) -> List[TransactionRecord]:
1111
- from .wallet_funcs import mint_nft
1218
+ ) -> list[TransactionRecord]:
1219
+ from chia.cmds.wallet_funcs import mint_nft
1112
1220
 
1113
1221
  if metadata_uris is None:
1114
1222
  metadata_uris_list = []
@@ -1122,6 +1230,7 @@ def nft_mint_cmd(
1122
1230
 
1123
1231
  return asyncio.run(
1124
1232
  mint_nft(
1233
+ root_path=ChiaCliContext.set_default(ctx).root_path,
1125
1234
  wallet_rpc_port=wallet_rpc_port,
1126
1235
  fp=fingerprint,
1127
1236
  wallet_id=id,
@@ -1168,7 +1277,9 @@ def nft_mint_cmd(
1168
1277
  default=False,
1169
1278
  )
1170
1279
  @tx_out_cmd()
1280
+ @click.pass_context
1171
1281
  def nft_add_uri_cmd(
1282
+ ctx: click.Context,
1172
1283
  wallet_rpc_port: Optional[int],
1173
1284
  fingerprint: int,
1174
1285
  id: int,
@@ -1180,11 +1291,12 @@ def nft_add_uri_cmd(
1180
1291
  reuse: bool,
1181
1292
  push: bool,
1182
1293
  condition_valid_times: ConditionValidTimes,
1183
- ) -> List[TransactionRecord]:
1184
- from .wallet_funcs import add_uri_to_nft
1294
+ ) -> list[TransactionRecord]:
1295
+ from chia.cmds.wallet_funcs import add_uri_to_nft
1185
1296
 
1186
1297
  return asyncio.run(
1187
1298
  add_uri_to_nft(
1299
+ root_path=ChiaCliContext.set_default(ctx).root_path,
1188
1300
  wallet_rpc_port=wallet_rpc_port,
1189
1301
  fp=fingerprint,
1190
1302
  wallet_id=id,
@@ -1221,7 +1333,9 @@ def nft_add_uri_cmd(
1221
1333
  default=False,
1222
1334
  )
1223
1335
  @tx_out_cmd()
1336
+ @click.pass_context
1224
1337
  def nft_transfer_cmd(
1338
+ ctx: click.Context,
1225
1339
  wallet_rpc_port: Optional[int],
1226
1340
  fingerprint: int,
1227
1341
  id: int,
@@ -1231,11 +1345,12 @@ def nft_transfer_cmd(
1231
1345
  reuse: bool,
1232
1346
  push: bool,
1233
1347
  condition_valid_times: ConditionValidTimes,
1234
- ) -> List[TransactionRecord]:
1235
- from .wallet_funcs import transfer_nft
1348
+ ) -> list[TransactionRecord]:
1349
+ from chia.cmds.wallet_funcs import transfer_nft
1236
1350
 
1237
1351
  return asyncio.run(
1238
1352
  transfer_nft(
1353
+ root_path=ChiaCliContext.set_default(ctx).root_path,
1239
1354
  wallet_rpc_port=wallet_rpc_port,
1240
1355
  fp=fingerprint,
1241
1356
  wallet_id=id,
@@ -1261,10 +1376,15 @@ def nft_transfer_cmd(
1261
1376
  @click.option("-i", "--id", help="Id of the NFT wallet to use", type=int, required=True)
1262
1377
  @click.option("--num", help="Number of NFTs to return", type=int, default=50)
1263
1378
  @click.option("--start-index", help="Which starting index to start listing NFTs from", type=int, default=0)
1264
- def nft_list_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int, num: int, start_index: int) -> None:
1265
- from .wallet_funcs import list_nfts
1379
+ @click.pass_context
1380
+ def nft_list_cmd(
1381
+ ctx: click.Context, wallet_rpc_port: Optional[int], fingerprint: int, id: int, num: int, start_index: int
1382
+ ) -> None:
1383
+ from chia.cmds.wallet_funcs import list_nfts
1266
1384
 
1267
- asyncio.run(list_nfts(wallet_rpc_port, fingerprint, id, num, start_index))
1385
+ asyncio.run(
1386
+ list_nfts(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, id, num, start_index)
1387
+ )
1268
1388
 
1269
1389
 
1270
1390
  @nft_cmd.command("set_did", help="Set a DID on an NFT")
@@ -1288,7 +1408,9 @@ def nft_list_cmd(wallet_rpc_port: Optional[int], fingerprint: int, id: int, num:
1288
1408
  default=False,
1289
1409
  )
1290
1410
  @tx_out_cmd()
1411
+ @click.pass_context
1291
1412
  def nft_set_did_cmd(
1413
+ ctx: click.Context,
1292
1414
  wallet_rpc_port: Optional[int],
1293
1415
  fingerprint: int,
1294
1416
  id: int,
@@ -1298,11 +1420,12 @@ def nft_set_did_cmd(
1298
1420
  reuse: bool,
1299
1421
  push: bool,
1300
1422
  condition_valid_times: ConditionValidTimes,
1301
- ) -> List[TransactionRecord]:
1302
- from .wallet_funcs import set_nft_did
1423
+ ) -> list[TransactionRecord]:
1424
+ from chia.cmds.wallet_funcs import set_nft_did
1303
1425
 
1304
1426
  return asyncio.run(
1305
1427
  set_nft_did(
1428
+ root_path=ChiaCliContext.set_default(ctx).root_path,
1306
1429
  wallet_rpc_port=wallet_rpc_port,
1307
1430
  fp=fingerprint,
1308
1431
  wallet_id=id,
@@ -1327,14 +1450,16 @@ def nft_set_did_cmd(
1327
1450
  @options.create_fingerprint()
1328
1451
  # TODO: Change RPC to use bytes instead of hex string
1329
1452
  @click.option("-ni", "--nft-coin-id", help="Id of the NFT coin to get information on", type=str, required=True)
1453
+ @click.pass_context
1330
1454
  def nft_get_info_cmd(
1455
+ ctx: click.Context,
1331
1456
  wallet_rpc_port: Optional[int],
1332
1457
  fingerprint: int,
1333
1458
  nft_coin_id: str,
1334
1459
  ) -> None:
1335
- from .wallet_funcs import get_nft_info
1460
+ from chia.cmds.wallet_funcs import get_nft_info
1336
1461
 
1337
- asyncio.run(get_nft_info(wallet_rpc_port, fingerprint, nft_coin_id))
1462
+ asyncio.run(get_nft_info(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, nft_coin_id))
1338
1463
 
1339
1464
 
1340
1465
  # Keep at bottom.
@@ -1370,7 +1495,9 @@ def notification_cmd() -> None:
1370
1495
  @click.option("-n", "--message", help="The message of the notification", type=str)
1371
1496
  @options.create_fee()
1372
1497
  @tx_out_cmd()
1498
+ @click.pass_context
1373
1499
  def send_notification_cmd(
1500
+ ctx: click.Context,
1374
1501
  wallet_rpc_port: Optional[int],
1375
1502
  fingerprint: int,
1376
1503
  to_address: CliAddress,
@@ -1379,12 +1506,13 @@ def send_notification_cmd(
1379
1506
  fee: uint64,
1380
1507
  push: bool,
1381
1508
  condition_valid_times: ConditionValidTimes,
1382
- ) -> List[TransactionRecord]:
1383
- from .wallet_funcs import send_notification
1509
+ ) -> list[TransactionRecord]:
1510
+ from chia.cmds.wallet_funcs import send_notification
1384
1511
 
1385
1512
  message_bytes: bytes = bytes(message, "utf8")
1386
1513
  return asyncio.run(
1387
1514
  send_notification(
1515
+ ChiaCliContext.set_default(ctx).root_path,
1388
1516
  wallet_rpc_port,
1389
1517
  fingerprint,
1390
1518
  fee,
@@ -1409,16 +1537,20 @@ def send_notification_cmd(
1409
1537
  @click.option("-i", "--id", help="The specific notification ID to show", type=Bytes32ParamType(), multiple=True)
1410
1538
  @click.option("-s", "--start", help="The number of notifications to skip", type=int, default=None)
1411
1539
  @click.option("-e", "--end", help="The number of notifications to stop at", type=int, default=None)
1540
+ @click.pass_context
1412
1541
  def get_notifications_cmd(
1542
+ ctx: click.Context,
1413
1543
  wallet_rpc_port: Optional[int],
1414
1544
  fingerprint: int,
1415
1545
  id: Sequence[bytes32],
1416
1546
  start: Optional[int],
1417
1547
  end: Optional[int],
1418
1548
  ) -> None:
1419
- from .wallet_funcs import get_notifications
1549
+ from chia.cmds.wallet_funcs import get_notifications
1420
1550
 
1421
- asyncio.run(get_notifications(wallet_rpc_port, fingerprint, id, start, end))
1551
+ asyncio.run(
1552
+ get_notifications(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, id, start, end)
1553
+ )
1422
1554
 
1423
1555
 
1424
1556
  @notification_cmd.command("delete", help="Delete notification(s) that are in your wallet")
@@ -1432,15 +1564,17 @@ def get_notifications_cmd(
1432
1564
  @options.create_fingerprint()
1433
1565
  @click.option("-i", "--id", help="A specific notification ID to delete", type=Bytes32ParamType(), multiple=True)
1434
1566
  @click.option("--all", help="All notifications can be deleted (they will be recovered during resync)", is_flag=True)
1567
+ @click.pass_context
1435
1568
  def delete_notifications_cmd(
1569
+ ctx: click.Context,
1436
1570
  wallet_rpc_port: Optional[int],
1437
1571
  fingerprint: int,
1438
1572
  id: Sequence[bytes32],
1439
1573
  all: bool,
1440
1574
  ) -> None:
1441
- from .wallet_funcs import delete_notifications
1575
+ from chia.cmds.wallet_funcs import delete_notifications
1442
1576
 
1443
- asyncio.run(delete_notifications(wallet_rpc_port, fingerprint, id, all))
1577
+ asyncio.run(delete_notifications(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, id, all))
1444
1578
 
1445
1579
 
1446
1580
  @wallet_cmd.group("vcs", short_help="Verifiable Credential related actions")
@@ -1467,7 +1601,9 @@ def vcs_cmd() -> None: # pragma: no cover
1467
1601
  )
1468
1602
  @options.create_fee("Blockchain fee for mint transaction, in XCH")
1469
1603
  @tx_out_cmd()
1604
+ @click.pass_context
1470
1605
  def mint_vc_cmd(
1606
+ ctx: click.Context,
1471
1607
  wallet_rpc_port: Optional[int],
1472
1608
  fingerprint: int,
1473
1609
  did: CliAddress,
@@ -1475,11 +1611,12 @@ def mint_vc_cmd(
1475
1611
  fee: uint64,
1476
1612
  push: bool,
1477
1613
  condition_valid_times: ConditionValidTimes,
1478
- ) -> List[TransactionRecord]:
1479
- from .wallet_funcs import mint_vc
1614
+ ) -> list[TransactionRecord]:
1615
+ from chia.cmds.wallet_funcs import mint_vc
1480
1616
 
1481
1617
  return asyncio.run(
1482
1618
  mint_vc(
1619
+ ChiaCliContext.set_default(ctx).root_path,
1483
1620
  wallet_rpc_port,
1484
1621
  fingerprint,
1485
1622
  did,
@@ -1506,15 +1643,17 @@ def mint_vc_cmd(
1506
1643
  @click.option(
1507
1644
  "-c", "--count", help="How many results to return", type=int, required=False, default=50, show_default=True
1508
1645
  )
1646
+ @click.pass_context
1509
1647
  def get_vcs_cmd(
1648
+ ctx: click.Context,
1510
1649
  wallet_rpc_port: Optional[int],
1511
1650
  fingerprint: int,
1512
1651
  start: int,
1513
1652
  count: int,
1514
1653
  ) -> None: # pragma: no cover
1515
- from .wallet_funcs import get_vcs
1654
+ from chia.cmds.wallet_funcs import get_vcs
1516
1655
 
1517
- asyncio.run(get_vcs(wallet_rpc_port, fingerprint, start, count))
1656
+ asyncio.run(get_vcs(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, start, count))
1518
1657
 
1519
1658
 
1520
1659
  @vcs_cmd.command("update_proofs", short_help="Update a VC's proofs if you have the provider DID")
@@ -1549,7 +1688,9 @@ def get_vcs_cmd(
1549
1688
  show_default=True,
1550
1689
  )
1551
1690
  @tx_out_cmd()
1691
+ @click.pass_context
1552
1692
  def spend_vc_cmd(
1693
+ ctx: click.Context,
1553
1694
  wallet_rpc_port: Optional[int],
1554
1695
  fingerprint: int,
1555
1696
  vc_id: bytes32,
@@ -1559,11 +1700,12 @@ def spend_vc_cmd(
1559
1700
  reuse_puzhash: bool,
1560
1701
  push: bool,
1561
1702
  condition_valid_times: ConditionValidTimes,
1562
- ) -> List[TransactionRecord]:
1563
- from .wallet_funcs import spend_vc
1703
+ ) -> list[TransactionRecord]:
1704
+ from chia.cmds.wallet_funcs import spend_vc
1564
1705
 
1565
1706
  return asyncio.run(
1566
1707
  spend_vc(
1708
+ root_path=ChiaCliContext.set_default(ctx).root_path,
1567
1709
  wallet_rpc_port=wallet_rpc_port,
1568
1710
  fp=fingerprint,
1569
1711
  vc_id=vc_id,
@@ -1588,15 +1730,19 @@ def spend_vc_cmd(
1588
1730
  @options.create_fingerprint()
1589
1731
  @click.option("-p", "--proof", help="A flag to add as a proof", type=str, multiple=True)
1590
1732
  @click.option("-r", "--root-only", help="Do not add the proofs to the DB, just output the root", is_flag=True)
1733
+ @click.pass_context
1591
1734
  def add_proof_reveal_cmd(
1735
+ ctx: click.Context,
1592
1736
  wallet_rpc_port: Optional[int],
1593
1737
  fingerprint: int,
1594
1738
  proof: Sequence[str],
1595
1739
  root_only: bool,
1596
1740
  ) -> None: # pragma: no cover
1597
- from .wallet_funcs import add_proof_reveal
1741
+ from chia.cmds.wallet_funcs import add_proof_reveal
1598
1742
 
1599
- asyncio.run(add_proof_reveal(wallet_rpc_port, fingerprint, proof, root_only))
1743
+ asyncio.run(
1744
+ add_proof_reveal(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, proof, root_only)
1745
+ )
1600
1746
 
1601
1747
 
1602
1748
  @vcs_cmd.command("get_proofs_for_root", short_help="Get the stored proof flags for a given proof hash")
@@ -1609,14 +1755,18 @@ def add_proof_reveal_cmd(
1609
1755
  )
1610
1756
  @options.create_fingerprint()
1611
1757
  @click.option("-r", "--proof-hash", help="The root to search for", type=str, required=True)
1758
+ @click.pass_context
1612
1759
  def get_proofs_for_root_cmd(
1760
+ ctx: click.Context,
1613
1761
  wallet_rpc_port: Optional[int],
1614
1762
  fingerprint: int,
1615
1763
  proof_hash: str,
1616
1764
  ) -> None: # pragma: no cover
1617
- from .wallet_funcs import get_proofs_for_root
1765
+ from chia.cmds.wallet_funcs import get_proofs_for_root
1618
1766
 
1619
- asyncio.run(get_proofs_for_root(wallet_rpc_port, fingerprint, proof_hash))
1767
+ asyncio.run(
1768
+ get_proofs_for_root(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, proof_hash)
1769
+ )
1620
1770
 
1621
1771
 
1622
1772
  @vcs_cmd.command("revoke", short_help="Revoke any VC if you have the proper DID and the VCs parent coin")
@@ -1650,7 +1800,9 @@ def get_proofs_for_root_cmd(
1650
1800
  show_default=True,
1651
1801
  )
1652
1802
  @tx_out_cmd()
1803
+ @click.pass_context
1653
1804
  def revoke_vc_cmd(
1805
+ ctx: click.Context,
1654
1806
  wallet_rpc_port: Optional[int],
1655
1807
  fingerprint: int,
1656
1808
  parent_coin_id: Optional[bytes32],
@@ -1659,11 +1811,12 @@ def revoke_vc_cmd(
1659
1811
  reuse_puzhash: bool,
1660
1812
  push: bool,
1661
1813
  condition_valid_times: ConditionValidTimes,
1662
- ) -> List[TransactionRecord]:
1663
- from .wallet_funcs import revoke_vc
1814
+ ) -> list[TransactionRecord]:
1815
+ from chia.cmds.wallet_funcs import revoke_vc
1664
1816
 
1665
1817
  return asyncio.run(
1666
1818
  revoke_vc(
1819
+ ChiaCliContext.set_default(ctx).root_path,
1667
1820
  wallet_rpc_port,
1668
1821
  fingerprint,
1669
1822
  parent_coin_id,
@@ -1715,7 +1868,9 @@ def revoke_vc_cmd(
1715
1868
  default=False,
1716
1869
  )
1717
1870
  @tx_out_cmd()
1871
+ @click.pass_context
1718
1872
  def approve_r_cats_cmd(
1873
+ ctx: click.Context,
1719
1874
  wallet_rpc_port: Optional[int],
1720
1875
  fingerprint: int,
1721
1876
  id: int,
@@ -1726,11 +1881,12 @@ def approve_r_cats_cmd(
1726
1881
  reuse: bool,
1727
1882
  push: bool,
1728
1883
  condition_valid_times: ConditionValidTimes,
1729
- ) -> List[TransactionRecord]:
1730
- from .wallet_funcs import approve_r_cats
1884
+ ) -> list[TransactionRecord]:
1885
+ from chia.cmds.wallet_funcs import approve_r_cats
1731
1886
 
1732
1887
  return asyncio.run(
1733
1888
  approve_r_cats(
1889
+ ChiaCliContext.set_default(ctx).root_path,
1734
1890
  wallet_rpc_port,
1735
1891
  fingerprint,
1736
1892
  uint32(id),