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/dao.py CHANGED
@@ -1,11 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
- from typing import List, Optional, Sequence
4
+ from collections.abc import Sequence
5
+ from typing import Optional
5
6
 
6
7
  import click
7
8
 
8
9
  from chia.cmds import options
10
+ from chia.cmds.cmd_classes import ChiaCliContext
9
11
  from chia.cmds.cmds_util import CMDTXConfigLoader, tx_config_args, tx_out_cmd
10
12
  from chia.cmds.param_types import AmountParamType, Bytes32ParamType, CliAmount, TransactionFeeParamType, Uint64ParamType
11
13
  from chia.cmds.units import units
@@ -50,16 +52,22 @@ def dao_cmd(ctx: click.Context) -> None:
50
52
  default=uint64(1),
51
53
  show_default=True,
52
54
  )
55
+ @click.pass_context
53
56
  def dao_add_cmd(
57
+ ctx: click.Context,
54
58
  wallet_rpc_port: Optional[int],
55
59
  fingerprint: int,
56
60
  treasury_id: bytes32,
57
61
  filter_amount: uint64,
58
62
  name: Optional[str],
59
63
  ) -> None:
60
- from .dao_funcs import add_dao_wallet
64
+ from chia.cmds.dao_funcs import add_dao_wallet
61
65
 
62
- asyncio.run(add_dao_wallet(wallet_rpc_port, fingerprint, name, treasury_id, filter_amount))
66
+ asyncio.run(
67
+ add_dao_wallet(
68
+ ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, name, treasury_id, filter_amount
69
+ )
70
+ )
63
71
 
64
72
 
65
73
  # ----------------------------------------------------------------------------------------
@@ -147,7 +155,9 @@ def dao_add_cmd(
147
155
  )
148
156
  @tx_config_args
149
157
  @tx_out_cmd()
158
+ @click.pass_context
150
159
  def dao_create_cmd(
160
+ ctx: click.Context,
151
161
  wallet_rpc_port: Optional[int],
152
162
  fingerprint: int,
153
163
  proposal_timelock: uint64,
@@ -169,8 +179,8 @@ def dao_create_cmd(
169
179
  reuse: Optional[bool],
170
180
  push: bool,
171
181
  condition_valid_times: ConditionValidTimes,
172
- ) -> List[TransactionRecord]:
173
- from .dao_funcs import create_dao_wallet
182
+ ) -> list[TransactionRecord]:
183
+ from chia.cmds.dao_funcs import create_dao_wallet
174
184
 
175
185
  if self_destruct == proposal_timelock:
176
186
  raise ValueError("Self Destruct and Proposal Timelock cannot be the same value")
@@ -179,6 +189,7 @@ def dao_create_cmd(
179
189
 
180
190
  return asyncio.run(
181
191
  create_dao_wallet(
192
+ ChiaCliContext.set_default(ctx).root_path,
182
193
  wallet_rpc_port,
183
194
  fingerprint,
184
195
  fee,
@@ -220,14 +231,16 @@ def dao_create_cmd(
220
231
  )
221
232
  @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
222
233
  @click.option("-i", "--wallet-id", help="DAO Wallet ID", type=int, required=True)
234
+ @click.pass_context
223
235
  def dao_get_id_cmd(
236
+ ctx: click.Context,
224
237
  wallet_rpc_port: Optional[int],
225
238
  fingerprint: int,
226
239
  wallet_id: int,
227
240
  ) -> None:
228
- from .dao_funcs import get_treasury_id
241
+ from chia.cmds.dao_funcs import get_treasury_id
229
242
 
230
- asyncio.run(get_treasury_id(wallet_rpc_port, fingerprint, wallet_id))
243
+ asyncio.run(get_treasury_id(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id))
231
244
 
232
245
 
233
246
  @dao_cmd.command("add_funds", short_help="Send funds to a DAO treasury", no_args_is_help=True)
@@ -257,7 +270,9 @@ def dao_get_id_cmd(
257
270
  @options.create_fee()
258
271
  @tx_config_args
259
272
  @tx_out_cmd()
273
+ @click.pass_context
260
274
  def dao_add_funds_cmd(
275
+ ctx: click.Context,
261
276
  wallet_rpc_port: Optional[int],
262
277
  fingerprint: int,
263
278
  wallet_id: int,
@@ -271,11 +286,12 @@ def dao_add_funds_cmd(
271
286
  reuse: Optional[bool],
272
287
  push: bool,
273
288
  condition_valid_times: ConditionValidTimes,
274
- ) -> List[TransactionRecord]:
275
- from .dao_funcs import add_funds_to_treasury
289
+ ) -> list[TransactionRecord]:
290
+ from chia.cmds.dao_funcs import add_funds_to_treasury
276
291
 
277
292
  return asyncio.run(
278
293
  add_funds_to_treasury(
294
+ ChiaCliContext.set_default(ctx).root_path,
279
295
  wallet_rpc_port,
280
296
  fingerprint,
281
297
  wallet_id,
@@ -305,14 +321,18 @@ def dao_add_funds_cmd(
305
321
  )
306
322
  @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
307
323
  @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
324
+ @click.pass_context
308
325
  def dao_get_balance_cmd(
326
+ ctx: click.Context,
309
327
  wallet_rpc_port: Optional[int],
310
328
  fingerprint: int,
311
329
  wallet_id: int,
312
330
  ) -> None:
313
- from .dao_funcs import get_treasury_balance
331
+ from chia.cmds.dao_funcs import get_treasury_balance
314
332
 
315
- asyncio.run(get_treasury_balance(wallet_rpc_port, fingerprint, wallet_id))
333
+ asyncio.run(
334
+ get_treasury_balance(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id)
335
+ )
316
336
 
317
337
 
318
338
  @dao_cmd.command("rules", short_help="Get the current rules governing the DAO", no_args_is_help=True)
@@ -325,14 +345,16 @@ def dao_get_balance_cmd(
325
345
  )
326
346
  @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
327
347
  @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
348
+ @click.pass_context
328
349
  def dao_rules_cmd(
350
+ ctx: click.Context,
329
351
  wallet_rpc_port: Optional[int],
330
352
  fingerprint: int,
331
353
  wallet_id: int,
332
354
  ) -> None:
333
- from .dao_funcs import get_rules
355
+ from chia.cmds.dao_funcs import get_rules
334
356
 
335
- asyncio.run(get_rules(wallet_rpc_port, fingerprint, wallet_id))
357
+ asyncio.run(get_rules(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id))
336
358
 
337
359
 
338
360
  # ----------------------------------------------------------------------------------------
@@ -355,18 +377,24 @@ def dao_rules_cmd(
355
377
  help="Include previously closed proposals",
356
378
  is_flag=True,
357
379
  )
380
+ @click.pass_context
358
381
  def dao_list_proposals_cmd(
382
+ ctx: click.Context,
359
383
  wallet_rpc_port: Optional[int],
360
384
  fingerprint: int,
361
385
  wallet_id: int,
362
386
  include_closed: Optional[bool],
363
387
  ) -> None:
364
- from .dao_funcs import list_proposals
388
+ from chia.cmds.dao_funcs import list_proposals
365
389
 
366
390
  if not include_closed:
367
391
  include_closed = False
368
392
 
369
- asyncio.run(list_proposals(wallet_rpc_port, fingerprint, wallet_id, include_closed))
393
+ asyncio.run(
394
+ list_proposals(
395
+ ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id, include_closed
396
+ )
397
+ )
370
398
 
371
399
 
372
400
  @dao_cmd.command("show_proposal", short_help="Show the details of a specific proposal", no_args_is_help=True)
@@ -386,15 +414,19 @@ def dao_list_proposals_cmd(
386
414
  type=str,
387
415
  required=True,
388
416
  )
417
+ @click.pass_context
389
418
  def dao_show_proposal_cmd(
419
+ ctx: click.Context,
390
420
  wallet_rpc_port: Optional[int],
391
421
  fingerprint: int,
392
422
  wallet_id: int,
393
423
  proposal_id: str,
394
424
  ) -> None:
395
- from .dao_funcs import show_proposal
425
+ from chia.cmds.dao_funcs import show_proposal
396
426
 
397
- asyncio.run(show_proposal(wallet_rpc_port, fingerprint, wallet_id, proposal_id))
427
+ asyncio.run(
428
+ show_proposal(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id, proposal_id)
429
+ )
398
430
 
399
431
 
400
432
  # ----------------------------------------------------------------------------------------
@@ -434,7 +466,9 @@ def dao_show_proposal_cmd(
434
466
  @options.create_fee()
435
467
  @tx_config_args
436
468
  @tx_out_cmd()
469
+ @click.pass_context
437
470
  def dao_vote_cmd(
471
+ ctx: click.Context,
438
472
  wallet_rpc_port: Optional[int],
439
473
  fingerprint: int,
440
474
  wallet_id: int,
@@ -449,13 +483,14 @@ def dao_vote_cmd(
449
483
  reuse: Optional[bool],
450
484
  push: bool,
451
485
  condition_valid_times: ConditionValidTimes,
452
- ) -> List[TransactionRecord]:
453
- from .dao_funcs import vote_on_proposal
486
+ ) -> list[TransactionRecord]:
487
+ from chia.cmds.dao_funcs import vote_on_proposal
454
488
 
455
489
  is_yes_vote = False if vote_no else True
456
490
 
457
491
  return asyncio.run(
458
492
  vote_on_proposal(
493
+ ChiaCliContext.set_default(ctx).root_path,
459
494
  wallet_rpc_port,
460
495
  fingerprint,
461
496
  wallet_id,
@@ -507,7 +542,9 @@ def dao_vote_cmd(
507
542
  @options.create_fee()
508
543
  @tx_config_args
509
544
  @tx_out_cmd()
545
+ @click.pass_context
510
546
  def dao_close_proposal_cmd(
547
+ ctx: click.Context,
511
548
  wallet_rpc_port: Optional[int],
512
549
  fingerprint: int,
513
550
  wallet_id: int,
@@ -521,11 +558,12 @@ def dao_close_proposal_cmd(
521
558
  reuse: Optional[bool],
522
559
  push: bool,
523
560
  condition_valid_times: ConditionValidTimes,
524
- ) -> List[TransactionRecord]:
525
- from .dao_funcs import close_proposal
561
+ ) -> list[TransactionRecord]:
562
+ from chia.cmds.dao_funcs import close_proposal
526
563
 
527
564
  return asyncio.run(
528
565
  close_proposal(
566
+ ChiaCliContext.set_default(ctx).root_path,
529
567
  wallet_rpc_port,
530
568
  fingerprint,
531
569
  wallet_id,
@@ -569,7 +607,9 @@ def dao_close_proposal_cmd(
569
607
  @options.create_fee()
570
608
  @tx_config_args
571
609
  @tx_out_cmd()
610
+ @click.pass_context
572
611
  def dao_lockup_coins_cmd(
612
+ ctx: click.Context,
573
613
  wallet_rpc_port: Optional[int],
574
614
  fingerprint: int,
575
615
  wallet_id: int,
@@ -582,11 +622,12 @@ def dao_lockup_coins_cmd(
582
622
  reuse: Optional[bool],
583
623
  push: bool,
584
624
  condition_valid_times: ConditionValidTimes,
585
- ) -> List[TransactionRecord]:
586
- from .dao_funcs import lockup_coins
625
+ ) -> list[TransactionRecord]:
626
+ from chia.cmds.dao_funcs import lockup_coins
587
627
 
588
628
  return asyncio.run(
589
629
  lockup_coins(
630
+ ChiaCliContext.set_default(ctx).root_path,
590
631
  wallet_rpc_port,
591
632
  fingerprint,
592
633
  wallet_id,
@@ -618,7 +659,9 @@ def dao_lockup_coins_cmd(
618
659
  @options.create_fee()
619
660
  @tx_config_args
620
661
  @tx_out_cmd()
662
+ @click.pass_context
621
663
  def dao_release_coins_cmd(
664
+ ctx: click.Context,
622
665
  wallet_rpc_port: Optional[int],
623
666
  fingerprint: int,
624
667
  wallet_id: int,
@@ -630,11 +673,12 @@ def dao_release_coins_cmd(
630
673
  reuse: Optional[bool],
631
674
  push: bool,
632
675
  condition_valid_times: ConditionValidTimes,
633
- ) -> List[TransactionRecord]:
634
- from .dao_funcs import release_coins
676
+ ) -> list[TransactionRecord]:
677
+ from chia.cmds.dao_funcs import release_coins
635
678
 
636
679
  return asyncio.run(
637
680
  release_coins(
681
+ ChiaCliContext.set_default(ctx).root_path,
638
682
  wallet_rpc_port,
639
683
  fingerprint,
640
684
  wallet_id,
@@ -665,7 +709,9 @@ def dao_release_coins_cmd(
665
709
  @options.create_fee()
666
710
  @tx_config_args
667
711
  @tx_out_cmd()
712
+ @click.pass_context
668
713
  def dao_exit_lockup_cmd(
714
+ ctx: click.Context,
669
715
  wallet_rpc_port: Optional[int],
670
716
  fingerprint: int,
671
717
  wallet_id: int,
@@ -677,11 +723,12 @@ def dao_exit_lockup_cmd(
677
723
  reuse: Optional[bool],
678
724
  push: bool,
679
725
  condition_valid_times: ConditionValidTimes,
680
- ) -> List[TransactionRecord]:
681
- from .dao_funcs import exit_lockup
726
+ ) -> list[TransactionRecord]:
727
+ from chia.cmds.dao_funcs import exit_lockup
682
728
 
683
729
  return asyncio.run(
684
730
  exit_lockup(
731
+ ChiaCliContext.set_default(ctx).root_path,
685
732
  wallet_rpc_port,
686
733
  fingerprint,
687
734
  wallet_id,
@@ -761,7 +808,9 @@ def dao_proposal(ctx: click.Context) -> None:
761
808
  @options.create_fee()
762
809
  @tx_config_args
763
810
  @tx_out_cmd()
811
+ @click.pass_context
764
812
  def dao_create_spend_proposal_cmd(
813
+ ctx: click.Context,
765
814
  wallet_rpc_port: Optional[int],
766
815
  fingerprint: int,
767
816
  wallet_id: int,
@@ -778,11 +827,12 @@ def dao_create_spend_proposal_cmd(
778
827
  reuse: Optional[bool],
779
828
  push: bool,
780
829
  condition_valid_times: ConditionValidTimes,
781
- ) -> List[TransactionRecord]:
782
- from .dao_funcs import create_spend_proposal
830
+ ) -> list[TransactionRecord]:
831
+ from chia.cmds.dao_funcs import create_spend_proposal
783
832
 
784
833
  return asyncio.run(
785
834
  create_spend_proposal(
835
+ ChiaCliContext.set_default(ctx).root_path,
786
836
  wallet_rpc_port,
787
837
  fingerprint,
788
838
  wallet_id,
@@ -868,7 +918,9 @@ def dao_create_spend_proposal_cmd(
868
918
  @options.create_fee()
869
919
  @tx_config_args
870
920
  @tx_out_cmd()
921
+ @click.pass_context
871
922
  def dao_create_update_proposal_cmd(
923
+ ctx: click.Context,
872
924
  wallet_rpc_port: Optional[int],
873
925
  fingerprint: int,
874
926
  wallet_id: int,
@@ -887,11 +939,12 @@ def dao_create_update_proposal_cmd(
887
939
  reuse: Optional[bool],
888
940
  push: bool,
889
941
  condition_valid_times: ConditionValidTimes,
890
- ) -> List[TransactionRecord]:
891
- from .dao_funcs import create_update_proposal
942
+ ) -> list[TransactionRecord]:
943
+ from chia.cmds.dao_funcs import create_update_proposal
892
944
 
893
945
  return asyncio.run(
894
946
  create_update_proposal(
947
+ ChiaCliContext.set_default(ctx).root_path,
895
948
  wallet_rpc_port,
896
949
  fingerprint,
897
950
  wallet_id,
@@ -952,7 +1005,9 @@ def dao_create_update_proposal_cmd(
952
1005
  @options.create_fee()
953
1006
  @tx_config_args
954
1007
  @tx_out_cmd()
1008
+ @click.pass_context
955
1009
  def dao_create_mint_proposal_cmd(
1010
+ ctx: click.Context,
956
1011
  wallet_rpc_port: Optional[int],
957
1012
  fingerprint: int,
958
1013
  wallet_id: int,
@@ -967,11 +1022,12 @@ def dao_create_mint_proposal_cmd(
967
1022
  reuse: Optional[bool],
968
1023
  push: bool,
969
1024
  condition_valid_times: ConditionValidTimes,
970
- ) -> List[TransactionRecord]:
971
- from .dao_funcs import create_mint_proposal
1025
+ ) -> list[TransactionRecord]:
1026
+ from chia.cmds.dao_funcs import create_mint_proposal
972
1027
 
973
1028
  return asyncio.run(
974
1029
  create_mint_proposal(
1030
+ ChiaCliContext.set_default(ctx).root_path,
975
1031
  wallet_rpc_port,
976
1032
  fingerprint,
977
1033
  wallet_id,
chia/cmds/dao_funcs.py CHANGED
@@ -2,9 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  import json
5
+ import pathlib
5
6
  import time
6
7
  from decimal import Decimal
7
- from typing import List, Optional
8
+ from typing import Optional
8
9
 
9
10
  from chia.cmds.cmds_util import CMDTXConfigLoader, get_wallet_client, transaction_status_msg, transaction_submitted_msg
10
11
  from chia.cmds.param_types import CliAmount
@@ -21,12 +22,17 @@ from chia.wallet.util.wallet_types import WalletType
21
22
 
22
23
 
23
24
  async def add_dao_wallet(
24
- wallet_rpc_port: Optional[int], fp: int, name: Optional[str], treasury_id: bytes32, filter_amount: uint64
25
+ root_path: pathlib.Path,
26
+ wallet_rpc_port: Optional[int],
27
+ fp: int,
28
+ name: Optional[str],
29
+ treasury_id: bytes32,
30
+ filter_amount: uint64,
25
31
  ) -> None:
26
32
  print(f"Adding wallet for DAO: {treasury_id}")
27
33
  print("This may take awhile.")
28
34
 
29
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
35
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
30
36
  res = await wallet_client.create_new_dao_wallet(
31
37
  mode="existing",
32
38
  tx_config=CMDTXConfigLoader(reuse_puzhash=True).to_tx_config(units["chia"], config, fingerprint),
@@ -45,6 +51,7 @@ async def add_dao_wallet(
45
51
 
46
52
 
47
53
  async def create_dao_wallet(
54
+ root_path: pathlib.Path,
48
55
  wallet_rpc_port: Optional[int],
49
56
  fp: int,
50
57
  fee: uint64,
@@ -62,7 +69,7 @@ async def create_dao_wallet(
62
69
  cli_tx_config: CMDTXConfigLoader,
63
70
  push: bool,
64
71
  condition_valid_times: ConditionValidTimes,
65
- ) -> List[TransactionRecord]:
72
+ ) -> list[TransactionRecord]:
66
73
  if proposal_minimum % 2 == 0:
67
74
  proposal_minimum = uint64(1 + proposal_minimum)
68
75
  print("Adding 1 mojo to proposal minimum amount")
@@ -77,7 +84,7 @@ async def create_dao_wallet(
77
84
  "proposal_minimum_amount": proposal_minimum,
78
85
  }
79
86
 
80
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
87
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
81
88
  conf_coins, _, _ = await wallet_client.get_spendable_coins(
82
89
  wallet_id=1, coin_selection_config=DEFAULT_COIN_SELECTION_CONFIG
83
90
  )
@@ -106,15 +113,15 @@ async def create_dao_wallet(
106
113
  return res.transactions
107
114
 
108
115
 
109
- async def get_treasury_id(wallet_rpc_port: Optional[int], fp: int, wallet_id: int) -> None:
110
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, _, _):
116
+ async def get_treasury_id(root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int) -> None:
117
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
111
118
  res = await wallet_client.dao_get_treasury_id(wallet_id=wallet_id)
112
119
  treasury_id = res["treasury_id"]
113
120
  print(f"Treasury ID: {treasury_id}")
114
121
 
115
122
 
116
- async def get_rules(wallet_rpc_port: Optional[int], fp: int, wallet_id: int) -> None:
117
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, _, _):
123
+ async def get_rules(root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int) -> None:
124
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
118
125
  res = await wallet_client.dao_get_rules(wallet_id=wallet_id)
119
126
  rules = res["rules"]
120
127
  for rule, val in rules.items():
@@ -122,6 +129,7 @@ async def get_rules(wallet_rpc_port: Optional[int], fp: int, wallet_id: int) ->
122
129
 
123
130
 
124
131
  async def add_funds_to_treasury(
132
+ root_path: pathlib.Path,
125
133
  wallet_rpc_port: Optional[int],
126
134
  fp: int,
127
135
  wallet_id: int,
@@ -131,8 +139,8 @@ async def add_funds_to_treasury(
131
139
  cli_tx_config: CMDTXConfigLoader,
132
140
  push: bool,
133
141
  condition_valid_times: ConditionValidTimes,
134
- ) -> List[TransactionRecord]:
135
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
142
+ ) -> list[TransactionRecord]:
143
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
136
144
  try:
137
145
  typ = await get_wallet_type(wallet_id=funding_wallet_id, wallet_client=wallet_client)
138
146
  mojo_per_unit = get_mojo_per_unit(typ)
@@ -165,8 +173,10 @@ async def add_funds_to_treasury(
165
173
  return res.transactions
166
174
 
167
175
 
168
- async def get_treasury_balance(wallet_rpc_port: Optional[int], fp: int, wallet_id: int) -> None:
169
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, _, _):
176
+ async def get_treasury_balance(
177
+ root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int
178
+ ) -> None:
179
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
170
180
  res = await wallet_client.dao_get_treasury_balance(wallet_id=wallet_id)
171
181
  balances = res["balances"]
172
182
 
@@ -183,8 +193,10 @@ async def get_treasury_balance(wallet_rpc_port: Optional[int], fp: int, wallet_i
183
193
  print(f"{asset_id}: {balance / cat_mojos}")
184
194
 
185
195
 
186
- async def list_proposals(wallet_rpc_port: Optional[int], fp: int, wallet_id: int, include_closed: bool) -> None:
187
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, _, _):
196
+ async def list_proposals(
197
+ root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int, include_closed: bool
198
+ ) -> None:
199
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
188
200
  res = await wallet_client.dao_get_proposals(wallet_id=wallet_id, include_closed=include_closed)
189
201
  proposals = res["proposals"]
190
202
  soft_close_length = res["soft_close_length"]
@@ -201,8 +213,10 @@ async def list_proposals(wallet_rpc_port: Optional[int], fp: int, wallet_id: int
201
213
  print("############################")
202
214
 
203
215
 
204
- async def show_proposal(wallet_rpc_port: Optional[int], fp: int, wallet_id: int, proposal_id: str) -> None:
205
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, _, config):
216
+ async def show_proposal(
217
+ root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int, proposal_id: str
218
+ ) -> None:
219
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, config):
206
220
  res = await wallet_client.dao_parse_proposal(wallet_id, proposal_id)
207
221
  pd = res["proposal_dictionary"]
208
222
  blocks_needed = pd["state"]["blocks_needed"]
@@ -275,6 +289,7 @@ async def show_proposal(wallet_rpc_port: Optional[int], fp: int, wallet_id: int,
275
289
 
276
290
 
277
291
  async def vote_on_proposal(
292
+ root_path: pathlib.Path,
278
293
  wallet_rpc_port: Optional[int],
279
294
  fp: int,
280
295
  wallet_id: int,
@@ -285,8 +300,8 @@ async def vote_on_proposal(
285
300
  cli_tx_config: CMDTXConfigLoader,
286
301
  push: bool,
287
302
  condition_valid_times: ConditionValidTimes,
288
- ) -> List[TransactionRecord]:
289
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
303
+ ) -> list[TransactionRecord]:
304
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
290
305
  res = await wallet_client.dao_vote_on_proposal(
291
306
  wallet_id=wallet_id,
292
307
  proposal_id=proposal_id,
@@ -313,6 +328,7 @@ async def vote_on_proposal(
313
328
 
314
329
 
315
330
  async def close_proposal(
331
+ root_path: pathlib.Path,
316
332
  wallet_rpc_port: Optional[int],
317
333
  fp: int,
318
334
  wallet_id: int,
@@ -322,8 +338,8 @@ async def close_proposal(
322
338
  cli_tx_config: CMDTXConfigLoader,
323
339
  push: bool,
324
340
  condition_valid_times: ConditionValidTimes,
325
- ) -> List[TransactionRecord]:
326
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
341
+ ) -> list[TransactionRecord]:
342
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
327
343
  res = await wallet_client.dao_close_proposal(
328
344
  wallet_id=wallet_id,
329
345
  proposal_id=proposal_id,
@@ -350,6 +366,7 @@ async def close_proposal(
350
366
 
351
367
 
352
368
  async def lockup_coins(
369
+ root_path: pathlib.Path,
353
370
  wallet_rpc_port: Optional[int],
354
371
  fp: int,
355
372
  wallet_id: int,
@@ -358,9 +375,9 @@ async def lockup_coins(
358
375
  cli_tx_config: CMDTXConfigLoader,
359
376
  push: bool,
360
377
  condition_valid_times: ConditionValidTimes,
361
- ) -> List[TransactionRecord]:
378
+ ) -> list[TransactionRecord]:
362
379
  final_amount: uint64 = amount.convert_amount(units["cat"])
363
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
380
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
364
381
  res = await wallet_client.dao_send_to_lockup(
365
382
  wallet_id=wallet_id,
366
383
  amount=final_amount,
@@ -386,6 +403,7 @@ async def lockup_coins(
386
403
 
387
404
 
388
405
  async def release_coins(
406
+ root_path: pathlib.Path,
389
407
  wallet_rpc_port: Optional[int],
390
408
  fp: int,
391
409
  wallet_id: int,
@@ -393,8 +411,8 @@ async def release_coins(
393
411
  cli_tx_config: CMDTXConfigLoader,
394
412
  push: bool,
395
413
  condition_valid_times: ConditionValidTimes,
396
- ) -> List[TransactionRecord]:
397
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
414
+ ) -> list[TransactionRecord]:
415
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
398
416
  res = await wallet_client.dao_free_coins_from_finished_proposals(
399
417
  wallet_id=wallet_id,
400
418
  fee=fee,
@@ -418,6 +436,7 @@ async def release_coins(
418
436
 
419
437
 
420
438
  async def exit_lockup(
439
+ root_path: pathlib.Path,
421
440
  wallet_rpc_port: Optional[int],
422
441
  fp: int,
423
442
  wallet_id: int,
@@ -425,8 +444,8 @@ async def exit_lockup(
425
444
  cli_tx_config: CMDTXConfigLoader,
426
445
  push: bool,
427
446
  condition_valid_times: ConditionValidTimes,
428
- ) -> List[TransactionRecord]:
429
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
447
+ ) -> list[TransactionRecord]:
448
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
430
449
  res = await wallet_client.dao_exit_lockup(
431
450
  wallet_id=wallet_id,
432
451
  coins=[],
@@ -452,6 +471,7 @@ async def exit_lockup(
452
471
 
453
472
 
454
473
  async def create_spend_proposal(
474
+ root_path: pathlib.Path,
455
475
  wallet_rpc_port: Optional[int],
456
476
  fp: int,
457
477
  wallet_id: int,
@@ -464,7 +484,7 @@ async def create_spend_proposal(
464
484
  cli_tx_config: CMDTXConfigLoader,
465
485
  push: bool,
466
486
  condition_valid_times: ConditionValidTimes,
467
- ) -> List[TransactionRecord]:
487
+ ) -> list[TransactionRecord]:
468
488
  if additions_file is None and (address is None or amount is None):
469
489
  raise ValueError("Must include a json specification or an address / amount pair.")
470
490
  if additions_file: # pragma: no cover
@@ -477,7 +497,7 @@ async def create_spend_proposal(
477
497
  additions.append(addition)
478
498
  else:
479
499
  additions = None
480
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
500
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
481
501
  wallet_type = await get_wallet_type(wallet_id=wallet_id, wallet_client=wallet_client)
482
502
  mojo_per_unit = get_mojo_per_unit(wallet_type=wallet_type)
483
503
  final_amount: Optional[uint64] = uint64(int(Decimal(amount) * mojo_per_unit)) if amount else None
@@ -504,6 +524,7 @@ async def create_spend_proposal(
504
524
 
505
525
 
506
526
  async def create_update_proposal(
527
+ root_path: pathlib.Path,
507
528
  wallet_rpc_port: Optional[int],
508
529
  fp: int,
509
530
  wallet_id: int,
@@ -518,7 +539,7 @@ async def create_update_proposal(
518
539
  cli_tx_config: CMDTXConfigLoader,
519
540
  push: bool,
520
541
  condition_valid_times: ConditionValidTimes,
521
- ) -> List[TransactionRecord]:
542
+ ) -> list[TransactionRecord]:
522
543
  new_dao_rules = {
523
544
  "proposal_timelock": proposal_timelock,
524
545
  "soft_close_length": soft_close_length,
@@ -527,7 +548,7 @@ async def create_update_proposal(
527
548
  "self_destruct_length": self_destruct_length,
528
549
  "oracle_spend_delay": oracle_spend_delay,
529
550
  }
530
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
551
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
531
552
  res = await wallet_client.dao_create_proposal(
532
553
  wallet_id=wallet_id,
533
554
  proposal_type="update",
@@ -546,6 +567,7 @@ async def create_update_proposal(
546
567
 
547
568
 
548
569
  async def create_mint_proposal(
570
+ root_path: pathlib.Path,
549
571
  wallet_rpc_port: Optional[int],
550
572
  fp: int,
551
573
  wallet_id: int,
@@ -556,8 +578,8 @@ async def create_mint_proposal(
556
578
  cli_tx_config: CMDTXConfigLoader,
557
579
  push: bool,
558
580
  condition_valid_times: ConditionValidTimes,
559
- ) -> List[TransactionRecord]:
560
- async with get_wallet_client(wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
581
+ ) -> list[TransactionRecord]:
582
+ async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
561
583
  res = await wallet_client.dao_create_proposal(
562
584
  wallet_id=wallet_id,
563
585
  proposal_type="mint",