chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.5.8rc1__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 (528) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_build_chains.py +2 -4
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  7. chia/_tests/clvm/coin_store.py +4 -7
  8. chia/_tests/clvm/test_clvm_step.py +4 -4
  9. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  10. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  11. chia/_tests/clvm/test_singletons.py +2 -4
  12. chia/_tests/clvm/test_spend_sim.py +2 -2
  13. chia/_tests/cmds/cmd_test_utils.py +27 -45
  14. chia/_tests/cmds/test_cmd_framework.py +6 -6
  15. chia/_tests/cmds/test_daemon.py +3 -3
  16. chia/_tests/cmds/test_show.py +4 -4
  17. chia/_tests/cmds/test_tx_config_args.py +1 -2
  18. chia/_tests/cmds/testing_classes.py +4 -5
  19. chia/_tests/cmds/wallet/test_did.py +24 -27
  20. chia/_tests/cmds/wallet/test_nft.py +12 -10
  21. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  22. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  23. chia/_tests/conftest.py +59 -30
  24. chia/_tests/connection_utils.py +2 -2
  25. chia/_tests/core/cmds/test_beta.py +4 -4
  26. chia/_tests/core/cmds/test_keys.py +2 -3
  27. chia/_tests/core/cmds/test_wallet.py +15 -15
  28. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  29. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  30. chia/_tests/core/daemon/test_daemon.py +11 -11
  31. chia/_tests/core/data_layer/conftest.py +2 -2
  32. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  33. chia/_tests/core/data_layer/test_data_store.py +10 -10
  34. chia/_tests/core/data_layer/util.py +11 -11
  35. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  36. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  37. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  38. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  39. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  40. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  41. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  42. chia/_tests/core/full_node/test_conditions.py +21 -23
  43. chia/_tests/core/full_node/test_full_node.py +225 -62
  44. chia/_tests/core/full_node/test_hint_management.py +2 -4
  45. chia/_tests/core/full_node/test_performance.py +0 -1
  46. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  47. chia/_tests/core/full_node/test_transactions.py +1 -2
  48. chia/_tests/core/full_node/test_tx_processing_queue.py +109 -25
  49. chia/_tests/core/mempool/test_mempool.py +29 -37
  50. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  51. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  52. chia/_tests/core/mempool/test_mempool_manager.py +963 -839
  53. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  54. chia/_tests/core/server/serve.py +7 -7
  55. chia/_tests/core/server/test_dos.py +1 -2
  56. chia/_tests/core/server/test_event_loop.py +12 -4
  57. chia/_tests/core/server/test_loop.py +7 -8
  58. chia/_tests/core/server/test_rate_limits.py +9 -8
  59. chia/_tests/core/server/test_server.py +61 -1
  60. chia/_tests/core/services/test_services.py +2 -2
  61. chia/_tests/core/ssl/test_ssl.py +2 -2
  62. chia/_tests/core/test_cost_calculation.py +2 -6
  63. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  64. chia/_tests/core/test_filter.py +0 -1
  65. chia/_tests/core/test_full_node_rpc.py +2 -2
  66. chia/_tests/core/test_merkle_set.py +1 -2
  67. chia/_tests/core/test_seeder.py +4 -4
  68. chia/_tests/core/util/test_config.py +4 -4
  69. chia/_tests/core/util/test_jsonify.py +2 -2
  70. chia/_tests/core/util/test_keychain.py +3 -3
  71. chia/_tests/core/util/test_lockfile.py +2 -1
  72. chia/_tests/core/util/test_log_exceptions.py +1 -2
  73. chia/_tests/core/util/test_streamable.py +17 -17
  74. chia/_tests/db/test_db_wrapper.py +3 -2
  75. chia/_tests/environments/wallet.py +14 -14
  76. chia/_tests/ether.py +4 -3
  77. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  78. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  79. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  80. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  81. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  82. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  83. chia/_tests/harvester/test_harvester_api.py +11 -4
  84. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  85. chia/_tests/plot_sync/test_receiver.py +11 -10
  86. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  87. chia/_tests/plot_sync/util.py +1 -2
  88. chia/_tests/plotting/test_plot_manager.py +7 -6
  89. chia/_tests/plotting/test_prover.py +30 -38
  90. chia/_tests/pools/test_pool_cmdline.py +4 -6
  91. chia/_tests/pools/test_pool_rpc.py +203 -61
  92. chia/_tests/pools/test_pool_wallet.py +3 -3
  93. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  94. chia/_tests/process_junit.py +2 -2
  95. chia/_tests/rpc/test_rpc_client.py +4 -4
  96. chia/_tests/rpc/test_rpc_server.py +3 -3
  97. chia/_tests/simulation/test_simulation.py +12 -25
  98. chia/_tests/solver/test_solver_service.py +13 -4
  99. chia/_tests/testconfig.py +2 -2
  100. chia/_tests/timelord/test_new_peak.py +22 -11
  101. chia/_tests/tools/test_run_block.py +0 -2
  102. chia/_tests/tools/test_virtual_project.py +2 -1
  103. chia/_tests/util/benchmarks.py +1 -0
  104. chia/_tests/util/blockchain.py +38 -36
  105. chia/_tests/util/blockchain_mock.py +11 -11
  106. chia/_tests/util/build_network_protocol_files.py +2 -1
  107. chia/_tests/util/coin_store.py +2 -1
  108. chia/_tests/util/config.py +1 -1
  109. chia/_tests/util/db_connection.py +2 -3
  110. chia/_tests/util/full_sync.py +9 -11
  111. chia/_tests/util/gen_ssl_certs.py +4 -5
  112. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  113. chia/_tests/util/misc.py +24 -24
  114. chia/_tests/util/network_protocol_data.py +20 -3
  115. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  116. chia/_tests/util/protocol_messages_json.py +292 -3
  117. chia/_tests/util/setup_nodes.py +62 -47
  118. chia/_tests/util/spend_sim.py +57 -57
  119. chia/_tests/util/test_async_pool.py +2 -3
  120. chia/_tests/util/test_chia_version.py +1 -3
  121. chia/_tests/util/test_config.py +3 -3
  122. chia/_tests/util/test_full_block_utils.py +6 -3
  123. chia/_tests/util/test_limited_semaphore.py +1 -2
  124. chia/_tests/util/test_misc.py +2 -2
  125. chia/_tests/util/test_network.py +1 -2
  126. chia/_tests/util/test_priority_mutex.py +3 -3
  127. chia/_tests/util/test_recursive_replace.py +5 -6
  128. chia/_tests/util/test_replace_str_to_bytes.py +8 -10
  129. chia/_tests/util/test_testnet_overrides.py +3 -3
  130. chia/_tests/util/time_out_assert.py +2 -2
  131. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  132. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  133. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  134. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  135. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  136. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  137. chia/_tests/wallet/conftest.py +6 -6
  138. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  139. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  140. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  141. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  142. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  145. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  146. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  147. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  148. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  149. chia/_tests/wallet/sync/test_wallet_sync.py +43 -47
  150. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  151. chia/_tests/wallet/test_coin_management.py +2 -2
  152. chia/_tests/wallet/test_conditions.py +45 -51
  153. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  154. chia/_tests/wallet/test_new_wallet_protocol.py +4 -6
  155. chia/_tests/wallet/test_notifications.py +14 -14
  156. chia/_tests/wallet/test_signer_protocol.py +5 -5
  157. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  158. chia/_tests/wallet/test_transaction_store.py +20 -20
  159. chia/_tests/wallet/test_util.py +2 -2
  160. chia/_tests/wallet/test_wallet.py +380 -228
  161. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  162. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  163. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  164. chia/_tests/wallet/test_wallet_node.py +14 -14
  165. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  166. chia/_tests/wallet/test_wallet_utils.py +2 -3
  167. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  168. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  169. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  170. chia/_tests/wallet/wallet_block_tools.py +12 -11
  171. chia/_tests/weight_proof/config.py +1 -0
  172. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  173. chia/apis/__init__.py +21 -0
  174. chia/apis/farmer_stub.py +102 -0
  175. chia/apis/full_node_stub.py +372 -0
  176. chia/apis/harvester_stub.py +57 -0
  177. chia/apis/introducer_stub.py +35 -0
  178. chia/apis/solver_stub.py +30 -0
  179. chia/apis/stub_protocol_registry.py +21 -0
  180. chia/apis/timelord_stub.py +39 -0
  181. chia/apis/wallet_stub.py +161 -0
  182. chia/cmds/beta.py +3 -4
  183. chia/cmds/beta_funcs.py +4 -3
  184. chia/cmds/check_wallet_db.py +4 -4
  185. chia/cmds/chia.py +1 -2
  186. chia/cmds/cmd_classes.py +11 -13
  187. chia/cmds/cmd_helpers.py +11 -11
  188. chia/cmds/cmds_util.py +15 -15
  189. chia/cmds/coin_funcs.py +6 -7
  190. chia/cmds/coins.py +2 -3
  191. chia/cmds/configure.py +1 -2
  192. chia/cmds/data.py +42 -42
  193. chia/cmds/data_funcs.py +81 -81
  194. chia/cmds/db.py +4 -5
  195. chia/cmds/db_backup_func.py +2 -2
  196. chia/cmds/db_upgrade_func.py +3 -3
  197. chia/cmds/db_validate_func.py +2 -2
  198. chia/cmds/dev/data.py +4 -4
  199. chia/cmds/dev/gh.py +5 -5
  200. chia/cmds/dev/installers.py +2 -3
  201. chia/cmds/dev/mempool.py +3 -4
  202. chia/cmds/dev/mempool_funcs.py +4 -4
  203. chia/cmds/dev/sim.py +8 -8
  204. chia/cmds/dump_keyring.py +3 -3
  205. chia/cmds/farm.py +6 -8
  206. chia/cmds/farm_funcs.py +25 -24
  207. chia/cmds/init_funcs.py +4 -4
  208. chia/cmds/keys.py +16 -18
  209. chia/cmds/keys_funcs.py +36 -36
  210. chia/cmds/netspace.py +1 -3
  211. chia/cmds/netspace_funcs.py +1 -2
  212. chia/cmds/options.py +3 -2
  213. chia/cmds/param_types.py +17 -16
  214. chia/cmds/passphrase.py +6 -7
  215. chia/cmds/passphrase_funcs.py +11 -13
  216. chia/cmds/peer.py +1 -3
  217. chia/cmds/peer_funcs.py +3 -3
  218. chia/cmds/plotnft.py +6 -7
  219. chia/cmds/plotnft_funcs.py +37 -26
  220. chia/cmds/rpc.py +3 -3
  221. chia/cmds/show.py +3 -5
  222. chia/cmds/show_funcs.py +9 -9
  223. chia/cmds/sim_funcs.py +25 -26
  224. chia/cmds/solver.py +1 -3
  225. chia/cmds/solver_funcs.py +1 -2
  226. chia/cmds/start_funcs.py +2 -2
  227. chia/cmds/wallet.py +76 -81
  228. chia/cmds/wallet_funcs.py +206 -177
  229. chia/consensus/augmented_chain.py +6 -6
  230. chia/consensus/block_body_validation.py +19 -15
  231. chia/consensus/block_creation.py +25 -21
  232. chia/consensus/block_header_validation.py +27 -13
  233. chia/consensus/block_height_map.py +3 -6
  234. chia/consensus/block_height_map_protocol.py +2 -2
  235. chia/consensus/block_record.py +2 -4
  236. chia/consensus/blockchain.py +58 -40
  237. chia/consensus/blockchain_interface.py +7 -7
  238. chia/consensus/coin_store_protocol.py +5 -6
  239. chia/consensus/condition_tools.py +4 -4
  240. chia/consensus/cost_calculator.py +2 -3
  241. chia/consensus/default_constants.py +16 -13
  242. chia/consensus/deficit.py +1 -3
  243. chia/consensus/difficulty_adjustment.py +3 -5
  244. chia/consensus/find_fork_point.py +2 -4
  245. chia/consensus/full_block_to_block_record.py +11 -13
  246. chia/consensus/generator_tools.py +2 -3
  247. chia/consensus/get_block_challenge.py +42 -26
  248. chia/consensus/get_block_generator.py +2 -3
  249. chia/consensus/make_sub_epoch_summary.py +8 -7
  250. chia/consensus/multiprocess_validation.py +31 -20
  251. chia/consensus/pos_quality.py +6 -23
  252. chia/consensus/pot_iterations.py +17 -44
  253. chia/consensus/signage_point.py +4 -5
  254. chia/consensus/vdf_info_computation.py +2 -4
  255. chia/daemon/client.py +8 -8
  256. chia/daemon/keychain_proxy.py +31 -37
  257. chia/daemon/server.py +32 -33
  258. chia/daemon/windows_signal.py +4 -3
  259. chia/data_layer/data_layer.py +86 -77
  260. chia/data_layer/data_layer_rpc_api.py +9 -9
  261. chia/data_layer/data_layer_rpc_client.py +13 -15
  262. chia/data_layer/data_layer_server.py +3 -3
  263. chia/data_layer/data_layer_util.py +14 -14
  264. chia/data_layer/data_layer_wallet.py +94 -101
  265. chia/data_layer/data_store.py +50 -50
  266. chia/data_layer/dl_wallet_store.py +9 -12
  267. chia/data_layer/download_data.py +8 -9
  268. chia/data_layer/s3_plugin_service.py +5 -9
  269. chia/data_layer/start_data_layer.py +5 -5
  270. chia/farmer/farmer.py +31 -31
  271. chia/farmer/farmer_api.py +45 -33
  272. chia/farmer/farmer_rpc_api.py +5 -4
  273. chia/farmer/farmer_rpc_client.py +6 -6
  274. chia/farmer/start_farmer.py +6 -6
  275. chia/full_node/block_store.py +13 -16
  276. chia/full_node/check_fork_next_block.py +1 -2
  277. chia/full_node/coin_store.py +15 -16
  278. chia/full_node/eligible_coin_spends.py +3 -3
  279. chia/full_node/fee_estimate_store.py +2 -3
  280. chia/full_node/fee_tracker.py +1 -2
  281. chia/full_node/full_block_utils.py +4 -4
  282. chia/full_node/full_node.py +238 -224
  283. chia/full_node/full_node_api.py +193 -150
  284. chia/full_node/full_node_rpc_api.py +53 -31
  285. chia/full_node/full_node_rpc_client.py +18 -19
  286. chia/full_node/full_node_store.py +45 -43
  287. chia/full_node/hint_management.py +2 -2
  288. chia/full_node/mempool.py +17 -19
  289. chia/full_node/mempool_manager.py +89 -42
  290. chia/full_node/pending_tx_cache.py +2 -3
  291. chia/full_node/start_full_node.py +5 -5
  292. chia/full_node/sync_store.py +3 -4
  293. chia/full_node/tx_processing_queue.py +34 -13
  294. chia/full_node/weight_proof.py +61 -48
  295. chia/harvester/harvester.py +25 -24
  296. chia/harvester/harvester_api.py +61 -38
  297. chia/harvester/harvester_rpc_api.py +10 -10
  298. chia/harvester/start_harvester.py +4 -4
  299. chia/introducer/introducer.py +3 -3
  300. chia/introducer/introducer_api.py +6 -4
  301. chia/introducer/start_introducer.py +4 -4
  302. chia/legacy/keyring.py +3 -3
  303. chia/plot_sync/delta.py +1 -2
  304. chia/plot_sync/receiver.py +20 -17
  305. chia/plot_sync/sender.py +15 -10
  306. chia/plotters/bladebit.py +7 -7
  307. chia/plotters/chiapos.py +2 -2
  308. chia/plotters/madmax.py +4 -4
  309. chia/plotters/plotters.py +4 -4
  310. chia/plotters/plotters_util.py +3 -3
  311. chia/plotting/cache.py +20 -14
  312. chia/plotting/check_plots.py +26 -35
  313. chia/plotting/create_plots.py +22 -23
  314. chia/plotting/manager.py +21 -14
  315. chia/plotting/prover.py +59 -42
  316. chia/plotting/util.py +16 -16
  317. chia/pools/pool_config.py +2 -1
  318. chia/pools/pool_puzzles.py +11 -12
  319. chia/pools/pool_wallet.py +34 -57
  320. chia/pools/pool_wallet_info.py +39 -10
  321. chia/protocols/farmer_protocol.py +8 -9
  322. chia/protocols/fee_estimate.py +3 -4
  323. chia/protocols/full_node_protocol.py +3 -4
  324. chia/protocols/harvester_protocol.py +27 -15
  325. chia/protocols/outbound_message.py +3 -3
  326. chia/protocols/pool_protocol.py +8 -9
  327. chia/protocols/shared_protocol.py +1 -2
  328. chia/protocols/solver_protocol.py +9 -2
  329. chia/protocols/timelord_protocol.py +4 -7
  330. chia/protocols/wallet_protocol.py +11 -12
  331. chia/rpc/rpc_client.py +9 -9
  332. chia/rpc/rpc_server.py +17 -17
  333. chia/rpc/util.py +2 -2
  334. chia/seeder/crawler.py +8 -8
  335. chia/seeder/crawler_api.py +21 -27
  336. chia/seeder/crawler_rpc_api.py +2 -2
  337. chia/seeder/dns_server.py +21 -21
  338. chia/seeder/start_crawler.py +4 -4
  339. chia/server/address_manager.py +15 -16
  340. chia/server/api_protocol.py +11 -11
  341. chia/server/chia_policy.py +46 -26
  342. chia/server/introducer_peers.py +2 -3
  343. chia/server/node_discovery.py +19 -19
  344. chia/server/rate_limit_numbers.py +4 -5
  345. chia/server/rate_limits.py +4 -4
  346. chia/server/resolve_peer_info.py +4 -4
  347. chia/server/server.py +49 -52
  348. chia/server/signal_handlers.py +6 -6
  349. chia/server/start_service.py +17 -17
  350. chia/server/upnp.py +4 -6
  351. chia/server/ws_connection.py +52 -37
  352. chia/simulator/add_blocks_in_batches.py +1 -3
  353. chia/simulator/block_tools.py +312 -200
  354. chia/simulator/full_node_simulator.py +56 -35
  355. chia/simulator/keyring.py +2 -3
  356. chia/simulator/setup_services.py +15 -15
  357. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  358. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  359. chia/simulator/simulator_protocol.py +1 -2
  360. chia/simulator/simulator_test_tools.py +3 -3
  361. chia/simulator/start_simulator.py +7 -7
  362. chia/simulator/wallet_tools.py +10 -10
  363. chia/solver/solver.py +10 -10
  364. chia/solver/solver_api.py +10 -8
  365. chia/solver/solver_rpc_api.py +2 -2
  366. chia/solver/start_solver.py +4 -4
  367. chia/ssl/cacert.pem +148 -90
  368. chia/ssl/chia_ca.crt +14 -10
  369. chia/ssl/chia_ca_old.crt +19 -0
  370. chia/ssl/create_ssl.py +4 -4
  371. chia/ssl/renewedselfsignedca.conf +4 -0
  372. chia/ssl/ssl_check.py +1 -2
  373. chia/timelord/iters_from_block.py +1 -4
  374. chia/timelord/start_timelord.py +4 -4
  375. chia/timelord/timelord.py +44 -40
  376. chia/timelord/timelord_api.py +6 -4
  377. chia/timelord/timelord_launcher.py +2 -2
  378. chia/timelord/timelord_rpc_api.py +2 -2
  379. chia/timelord/timelord_state.py +11 -12
  380. chia/types/block_protocol.py +1 -3
  381. chia/types/blockchain_format/coin.py +1 -3
  382. chia/types/blockchain_format/program.py +11 -8
  383. chia/types/blockchain_format/proof_of_space.py +123 -76
  384. chia/types/blockchain_format/tree_hash.py +3 -3
  385. chia/types/blockchain_format/vdf.py +1 -2
  386. chia/types/coin_spend.py +3 -3
  387. chia/types/mempool_item.py +5 -5
  388. chia/types/mempool_submission_status.py +2 -3
  389. chia/types/peer_info.py +1 -2
  390. chia/types/unfinished_header_block.py +3 -4
  391. chia/types/validation_state.py +1 -2
  392. chia/util/action_scope.py +8 -8
  393. chia/util/async_pool.py +5 -5
  394. chia/util/bech32m.py +1 -2
  395. chia/util/beta_metrics.py +2 -2
  396. chia/util/block_cache.py +4 -4
  397. chia/util/chia_logging.py +2 -2
  398. chia/util/chia_version.py +1 -2
  399. chia/util/config.py +15 -16
  400. chia/util/db_wrapper.py +26 -27
  401. chia/util/default_root.py +1 -2
  402. chia/util/errors.py +3 -3
  403. chia/util/file_keyring.py +14 -14
  404. chia/util/files.py +2 -3
  405. chia/util/hash.py +4 -4
  406. chia/util/initial-config.yaml +3 -5
  407. chia/util/inline_executor.py +2 -1
  408. chia/util/ip_address.py +1 -2
  409. chia/util/keychain.py +25 -27
  410. chia/util/keyring_wrapper.py +18 -19
  411. chia/util/lock.py +3 -4
  412. chia/util/log_exceptions.py +1 -2
  413. chia/util/lru_cache.py +2 -2
  414. chia/util/network.py +6 -6
  415. chia/util/path.py +2 -3
  416. chia/util/priority_mutex.py +2 -2
  417. chia/util/profiler.py +1 -2
  418. chia/util/safe_cancel_task.py +1 -2
  419. chia/util/streamable.py +22 -8
  420. chia/util/task_referencer.py +1 -1
  421. chia/util/timing.py +3 -3
  422. chia/util/virtual_project_analysis.py +6 -5
  423. chia/util/ws_message.py +2 -2
  424. chia/wallet/cat_wallet/cat_info.py +3 -4
  425. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  426. chia/wallet/cat_wallet/cat_utils.py +3 -4
  427. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  428. chia/wallet/cat_wallet/lineage_store.py +3 -4
  429. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  430. chia/wallet/coin_selection.py +9 -10
  431. chia/wallet/conditions.py +120 -105
  432. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  433. chia/wallet/derivation_record.py +1 -2
  434. chia/wallet/derive_keys.py +2 -4
  435. chia/wallet/did_wallet/did_info.py +10 -11
  436. chia/wallet/did_wallet/did_wallet.py +36 -82
  437. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  438. chia/wallet/driver_protocol.py +5 -7
  439. chia/wallet/lineage_proof.py +4 -4
  440. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  441. chia/wallet/nft_wallet/nft_info.py +8 -9
  442. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  443. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  444. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  445. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  446. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  447. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  448. chia/wallet/notification_manager.py +3 -3
  449. chia/wallet/notification_store.py +44 -61
  450. chia/wallet/outer_puzzles.py +6 -7
  451. chia/wallet/puzzle_drivers.py +34 -6
  452. chia/wallet/puzzles/clawback/drivers.py +6 -6
  453. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  454. chia/wallet/puzzles/load_clvm.py +1 -1
  455. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  456. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  457. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  458. chia/wallet/puzzles/tails.py +3 -3
  459. chia/wallet/singleton.py +5 -7
  460. chia/wallet/singleton_record.py +3 -3
  461. chia/wallet/start_wallet.py +5 -5
  462. chia/wallet/trade_manager.py +37 -58
  463. chia/wallet/trade_record.py +4 -4
  464. chia/wallet/trading/offer.py +59 -46
  465. chia/wallet/trading/trade_store.py +8 -9
  466. chia/wallet/transaction_record.py +8 -8
  467. chia/wallet/uncurried_puzzle.py +1 -2
  468. chia/wallet/util/clvm_streamable.py +12 -12
  469. chia/wallet/util/compute_hints.py +4 -5
  470. chia/wallet/util/curry_and_treehash.py +1 -2
  471. chia/wallet/util/merkle_tree.py +2 -3
  472. chia/wallet/util/peer_request_cache.py +8 -8
  473. chia/wallet/util/signing.py +85 -0
  474. chia/wallet/util/tx_config.py +15 -6
  475. chia/wallet/util/wallet_sync_utils.py +14 -16
  476. chia/wallet/util/wallet_types.py +2 -2
  477. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  478. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  479. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  480. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  481. chia/wallet/vc_wallet/vc_store.py +5 -6
  482. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  483. chia/wallet/wallet.py +50 -78
  484. chia/wallet/wallet_action_scope.py +11 -11
  485. chia/wallet/wallet_blockchain.py +12 -12
  486. chia/wallet/wallet_coin_record.py +12 -6
  487. chia/wallet/wallet_coin_store.py +24 -25
  488. chia/wallet/wallet_interested_store.py +3 -5
  489. chia/wallet/wallet_nft_store.py +10 -11
  490. chia/wallet/wallet_node.py +53 -61
  491. chia/wallet/wallet_node_api.py +5 -3
  492. chia/wallet/wallet_protocol.py +23 -23
  493. chia/wallet/wallet_puzzle_store.py +15 -18
  494. chia/wallet/wallet_request_types.py +778 -114
  495. chia/wallet/wallet_retry_store.py +1 -3
  496. chia/wallet/wallet_rpc_api.py +572 -909
  497. chia/wallet/wallet_rpc_client.py +87 -279
  498. chia/wallet/wallet_singleton_store.py +3 -4
  499. chia/wallet/wallet_state_manager.py +332 -106
  500. chia/wallet/wallet_transaction_store.py +11 -14
  501. chia/wallet/wallet_user_store.py +4 -6
  502. chia/wallet/wallet_weight_proof_handler.py +4 -4
  503. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
  504. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/RECORD +507 -516
  505. chia/apis.py +0 -21
  506. chia/consensus/check_time_locks.py +0 -57
  507. chia/data_layer/puzzles/__init__.py +0 -0
  508. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  509. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  510. chia/types/coin_record.py +0 -44
  511. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  512. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  513. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  514. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  515. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  516. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  517. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  518. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  520. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  521. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  522. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  524. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  525. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  526. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
  527. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
  528. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
chia/cmds/param_types.py CHANGED
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from collections.abc import Callable
3
4
  from dataclasses import dataclass
4
5
  from decimal import Decimal, InvalidOperation
5
- from typing import Any, Callable, Optional, Union
6
+ from typing import Any
6
7
 
7
8
  import click
8
9
  from chia_rs.sized_bytes import bytes32
@@ -20,9 +21,9 @@ one_decimal_mojo = Decimal("1e-12")
20
21
 
21
22
  def validate_uint64(
22
23
  value: str,
23
- fail_func: Callable[[str, Optional[click.Parameter], Optional[click.Context]], None],
24
- param: Optional[click.Parameter],
25
- ctx: Optional[click.Context],
24
+ fail_func: Callable[[str, click.Parameter | None, click.Context | None], None],
25
+ param: click.Parameter | None,
26
+ ctx: click.Context | None,
26
27
  ) -> uint64:
27
28
  try:
28
29
  d_value = Decimal(value)
@@ -41,9 +42,9 @@ def validate_uint64(
41
42
 
42
43
  def validate_decimal_xch(
43
44
  value: str,
44
- fail_func: Callable[[str, Optional[click.Parameter], Optional[click.Context]], None],
45
- param: Optional[click.Parameter],
46
- ctx: Optional[click.Context],
45
+ fail_func: Callable[[str, click.Parameter | None, click.Context | None], None],
46
+ param: click.Parameter | None,
47
+ ctx: click.Context | None,
47
48
  ) -> Decimal:
48
49
  try:
49
50
  d_value = Decimal(value)
@@ -64,7 +65,7 @@ class TransactionFeeParamType(click.ParamType):
64
65
  name: str = "XCH" # type name for cli, TODO: Change once the mojo flag is implemented
65
66
  value_limit: Decimal = Decimal("0.5")
66
67
 
67
- def convert(self, value: Any, param: Optional[click.Parameter], ctx: Optional[click.Context]) -> uint64:
68
+ def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> uint64:
68
69
  # suggested by click, but we are not using it to avoid possible misinterpretation of units.
69
70
  # if isinstance(value, uint64):
70
71
  # return value
@@ -89,11 +90,11 @@ class CliAmount:
89
90
  """
90
91
 
91
92
  mojos: bool
92
- amount: Union[uint64, Decimal, None] # uint64 if mojos, Decimal if not, None if default value is none
93
+ amount: uint64 | Decimal | None # uint64 if mojos, Decimal if not, None if default value is none
93
94
 
94
95
  def convert_amount_with_default(
95
- self, mojo_per_unit: int, default_value: Optional[uint64] = uint64(0)
96
- ) -> Optional[uint64]:
96
+ self, mojo_per_unit: int, default_value: uint64 | None = uint64(0)
97
+ ) -> uint64 | None:
97
98
  if self.amount is None: # if the value is set to none, return the default value
98
99
  return default_value
99
100
  return self.convert_amount(mojo_per_unit)
@@ -122,7 +123,7 @@ class AmountParamType(click.ParamType):
122
123
 
123
124
  name: str = "XCH" # type name for cli, TODO: Change once the mojo flag is implemented
124
125
 
125
- def convert(self, value: Any, param: Optional[click.Parameter], ctx: Optional[click.Context]) -> CliAmount:
126
+ def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> CliAmount:
126
127
  # suggested by click, but being left in as mojos flag makes default misrepresentation less likely.
127
128
  if isinstance(value, CliAmount):
128
129
  return value
@@ -164,7 +165,7 @@ class AddressParamType(click.ParamType):
164
165
 
165
166
  name: str = "Address" # type name for cli
166
167
 
167
- def convert(self, value: Any, param: Optional[click.Parameter], ctx: Optional[click.Context]) -> CliAddress:
168
+ def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> CliAddress:
168
169
  # suggested by click, but not really used so removed to make unexpected types more obvious.
169
170
  # if isinstance(value, CliAddress):
170
171
  # return value
@@ -176,7 +177,7 @@ class AddressParamType(click.ParamType):
176
177
  addr_type: AddressType = AddressType.XCH
177
178
 
178
179
  # attempt to get cached prefix
179
- expected_prefix: Optional[str] = None
180
+ expected_prefix: str | None = None
180
181
  root_path = DEFAULT_ROOT_PATH
181
182
 
182
183
  if ctx is not None:
@@ -208,7 +209,7 @@ class Bytes32ParamType(click.ParamType):
208
209
 
209
210
  name: str = "HexString" # type name for cli
210
211
 
211
- def convert(self, value: Any, param: Optional[click.Parameter], ctx: Optional[click.Context]) -> bytes32:
212
+ def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> bytes32:
212
213
  # suggested by click but deemed not necessary due to unnecessary complexity.
213
214
  # if isinstance(value, bytes32):
214
215
  # return value
@@ -227,7 +228,7 @@ class Uint64ParamType(click.ParamType):
227
228
 
228
229
  name: str = uint64.__name__ # type name for cli
229
230
 
230
- def convert(self, value: Any, param: Optional[click.Parameter], ctx: Optional[click.Context]) -> uint64:
231
+ def convert(self, value: Any, param: click.Parameter | None, ctx: click.Context | None) -> uint64:
231
232
  if isinstance(value, uint64): # required by click
232
233
  return value
233
234
  if not isinstance(value, str):
chia/cmds/passphrase.py CHANGED
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  import sys
5
5
  from io import TextIOWrapper
6
- from typing import Optional
7
6
 
8
7
  import click
9
8
 
@@ -31,9 +30,9 @@ def passphrase_cmd() -> None:
31
30
  @click.pass_context
32
31
  def set_cmd(
33
32
  ctx: click.Context,
34
- passphrase_file: Optional[TextIOWrapper],
35
- current_passphrase_file: Optional[TextIOWrapper],
36
- hint: Optional[str],
33
+ passphrase_file: TextIOWrapper | None,
34
+ current_passphrase_file: TextIOWrapper | None,
35
+ hint: str | None,
37
36
  ) -> None:
38
37
  from chia.cmds.passphrase_funcs import (
39
38
  async_update_daemon_passphrase_cache_if_running,
@@ -43,7 +42,7 @@ def set_cmd(
43
42
  )
44
43
 
45
44
  success: bool = False
46
- current_passphrase: Optional[str] = None
45
+ current_passphrase: str | None = None
47
46
  if current_passphrase_file is not None:
48
47
  current_passphrase = read_passphrase_from_file(current_passphrase_file)
49
48
 
@@ -86,14 +85,14 @@ def set_cmd(
86
85
  "--current-passphrase-file", type=click.File("r"), help="File or descriptor to read the current passphrase from"
87
86
  )
88
87
  @click.pass_context
89
- def remove_cmd(ctx: click.Context, current_passphrase_file: Optional[TextIOWrapper]) -> None:
88
+ def remove_cmd(ctx: click.Context, current_passphrase_file: TextIOWrapper | None) -> None:
90
89
  from chia.cmds.passphrase_funcs import (
91
90
  async_update_daemon_passphrase_cache_if_running,
92
91
  read_passphrase_from_file,
93
92
  remove_passphrase,
94
93
  )
95
94
 
96
- current_passphrase: Optional[str] = None
95
+ current_passphrase: str | None = None
97
96
  if current_passphrase_file is not None:
98
97
  current_passphrase = read_passphrase_from_file(current_passphrase_file)
99
98
 
@@ -5,7 +5,7 @@ import sys
5
5
  from getpass import getpass
6
6
  from io import TextIOWrapper
7
7
  from pathlib import Path
8
- from typing import Any, Optional
8
+ from typing import Any
9
9
 
10
10
  import click
11
11
  import colorama
@@ -24,9 +24,7 @@ SAVE_MASTER_PASSPHRASE_WARNING = (
24
24
  )
25
25
 
26
26
 
27
- def verify_passphrase_meets_requirements(
28
- new_passphrase: str, confirmation_passphrase: str
29
- ) -> tuple[bool, Optional[str]]:
27
+ def verify_passphrase_meets_requirements(new_passphrase: str, confirmation_passphrase: str) -> tuple[bool, str | None]:
30
28
  match = new_passphrase == confirmation_passphrase
31
29
  min_length = Keychain.minimum_passphrase_length()
32
30
  meets_len_requirement = len(new_passphrase) >= min_length
@@ -46,8 +44,8 @@ def prompt_to_save_passphrase() -> bool:
46
44
 
47
45
  try:
48
46
  if supports_os_passphrase_storage():
49
- location: Optional[str] = None
50
- warning: Optional[str] = None
47
+ location: str | None = None
48
+ warning: str | None = None
51
49
 
52
50
  if sys.platform == "darwin":
53
51
  location = "macOS Keychain"
@@ -113,7 +111,7 @@ def initialize_passphrase() -> None:
113
111
  # We'll rely on Keyring initialization to leverage the cached passphrase for
114
112
  # bootstrapping the keyring encryption process
115
113
  print("Setting keyring passphrase")
116
- passphrase: Optional[str] = None
114
+ passphrase: str | None = None
117
115
  # save_passphrase indicates whether the passphrase should be saved in the
118
116
  # macOS Keychain or Windows Credential Manager
119
117
  save_passphrase: bool = False
@@ -127,7 +125,7 @@ def initialize_passphrase() -> None:
127
125
  Keychain.set_master_passphrase(current_passphrase=None, new_passphrase=passphrase, save_passphrase=save_passphrase)
128
126
 
129
127
 
130
- def set_or_update_passphrase(passphrase: Optional[str], current_passphrase: Optional[str], hint: Optional[str]) -> bool:
128
+ def set_or_update_passphrase(passphrase: str | None, current_passphrase: str | None, hint: str | None) -> bool:
131
129
  # Prompt for the current passphrase, if necessary
132
130
  if Keychain.has_master_passphrase():
133
131
  # Try the default passphrase first
@@ -142,7 +140,7 @@ def set_or_update_passphrase(passphrase: Optional[str], current_passphrase: Opti
142
140
  sys.exit(1)
143
141
 
144
142
  success: bool = False
145
- new_passphrase: Optional[str] = passphrase
143
+ new_passphrase: str | None = passphrase
146
144
  save_passphrase: bool = False
147
145
 
148
146
  try:
@@ -167,7 +165,7 @@ def set_or_update_passphrase(passphrase: Optional[str], current_passphrase: Opti
167
165
  return success
168
166
 
169
167
 
170
- def remove_passphrase(current_passphrase: Optional[str]) -> bool:
168
+ def remove_passphrase(current_passphrase: str | None) -> bool:
171
169
  """
172
170
  Removes the user's keyring passphrase. The keyring will be re-encrypted to the default passphrase.
173
171
  """
@@ -204,7 +202,7 @@ def cache_passphrase(passphrase: str) -> None:
204
202
  Keychain.set_cached_master_passphrase(passphrase)
205
203
 
206
204
 
207
- def get_current_passphrase() -> Optional[str]:
205
+ def get_current_passphrase() -> str | None:
208
206
  if not Keychain.has_master_passphrase():
209
207
  return None
210
208
 
@@ -240,12 +238,12 @@ def display_passphrase_hint() -> None:
240
238
  print("Passphrase hint is not set")
241
239
 
242
240
 
243
- def update_passphrase_hint(hint: Optional[str] = None) -> bool:
241
+ def update_passphrase_hint(hint: str | None = None) -> bool:
244
242
  updated: bool = False
245
243
  if Keychain.has_master_passphrase() is False or using_default_passphrase():
246
244
  print("Updating the passphrase hint requires that a passphrase has been set")
247
245
  else:
248
- current_passphrase: Optional[str] = get_current_passphrase()
246
+ current_passphrase: str | None = get_current_passphrase()
249
247
  if current_passphrase is None:
250
248
  print("Keyring is not passphrase-protected")
251
249
  else:
chia/cmds/peer.py CHANGED
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  import click
6
4
 
7
5
  from chia.cmds.cmd_classes import ChiaCliContext
@@ -31,7 +29,7 @@ from chia.cmds.peer_funcs import peer_async
31
29
  @click.pass_context
32
30
  def peer_cmd(
33
31
  ctx: click.Context,
34
- rpc_port: Optional[int],
32
+ rpc_port: int | None,
35
33
  connections: bool,
36
34
  add_connection: str,
37
35
  remove_connection: str,
chia/cmds/peer_funcs.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- from typing import Any, Optional
4
+ from typing import Any
5
5
 
6
6
  from chia.cmds.cmds_util import NODE_TYPES, get_any_service_client
7
7
  from chia.rpc.rpc_client import RpcClient
@@ -20,7 +20,7 @@ async def add_node_connection(rpc_client: RpcClient, add_connection: str) -> Non
20
20
  except Exception:
21
21
  print(f"Failed to connect to {host}:{port}")
22
22
  except ValueError:
23
- print("Enter a valid IP and port in the following format: 10.5.4.3:8000")
23
+ print("Enter a valid IP and port in the following format: 10.5.4.3:8444 or [2606:f6c0:80:5::a]:8444")
24
24
 
25
25
 
26
26
  async def remove_node_connection(rpc_client: RpcClient, remove_connection: str) -> None:
@@ -107,7 +107,7 @@ async def print_connections(rpc_client: RpcClient, trusted_peers: dict[str, Any]
107
107
 
108
108
  async def peer_async(
109
109
  node_type: str,
110
- rpc_port: Optional[int],
110
+ rpc_port: int | None,
111
111
  root_path: Path,
112
112
  show_connections: bool,
113
113
  add_connection: str,
chia/cmds/plotnft.py CHANGED
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import field
4
- from typing import Optional
5
4
 
6
5
  import click
7
6
  from chia_rs.sized_bytes import bytes32
@@ -33,7 +32,7 @@ def plotnft_cmd(ctx: click.Context) -> None:
33
32
  class ShowPlotNFTCMD:
34
33
  rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
35
34
  context: ChiaCliContext = field(default_factory=ChiaCliContext)
36
- id: Optional[int] = option(
35
+ id: int | None = option(
37
36
  "-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
38
37
  )
39
38
 
@@ -77,7 +76,7 @@ class GetLoginLinkCMD:
77
76
  )
78
77
  class CreatePlotNFTCMD:
79
78
  rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
80
- pool_url: Optional[str] = option("-u", "--pool-url", help="HTTPS host:port of the pool to join", required=False)
79
+ pool_url: str | None = option("-u", "--pool-url", help="HTTPS host:port of the pool to join", required=False)
81
80
  state: str = option(
82
81
  "-s",
83
82
  "--state",
@@ -135,7 +134,7 @@ class JoinPlotNFTCMD:
135
134
  required=True,
136
135
  )
137
136
  dont_prompt: bool = option("-y", "--yes", help="No prompts", is_flag=True)
138
- id: Optional[int] = option(
137
+ id: int | None = option(
139
138
  "-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
140
139
  )
141
140
 
@@ -171,7 +170,7 @@ class LeavePlotNFTCMD:
171
170
  show_default=True,
172
171
  required=True,
173
172
  )
174
- id: Optional[int] = option(
173
+ id: int | None = option(
175
174
  "-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
176
175
  )
177
176
 
@@ -195,7 +194,7 @@ class LeavePlotNFTCMD:
195
194
  )
196
195
  class InspectPlotNFTCMD:
197
196
  rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
198
- id: Optional[int] = option(
197
+ id: int | None = option(
199
198
  "-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
200
199
  )
201
200
 
@@ -215,7 +214,7 @@ class InspectPlotNFTCMD:
215
214
  )
216
215
  class ClaimPlotNFTCMD:
217
216
  rpc_info: NeedsWalletRPC # provides wallet-rpc-port and fingerprint options
218
- id: Optional[int] = option(
217
+ id: int | None = option(
219
218
  "-i", "--id", help="ID of the wallet to use", default=None, show_default=True, required=False
220
219
  )
221
220
  fee: uint64 = option(
@@ -4,11 +4,11 @@ import asyncio
4
4
  import functools
5
5
  import json
6
6
  import time
7
- from collections.abc import Awaitable
7
+ from collections.abc import Awaitable, Callable
8
8
  from dataclasses import replace
9
9
  from pathlib import Path
10
10
  from pprint import pprint
11
- from typing import Any, Callable, Optional
11
+ from typing import Any
12
12
 
13
13
  import aiohttp
14
14
  import click
@@ -30,7 +30,7 @@ from chia.pools.pool_config import (
30
30
  load_pool_config,
31
31
  update_pool_config,
32
32
  )
33
- from chia.pools.pool_wallet_info import PoolSingletonState, PoolWalletInfo
33
+ from chia.pools.pool_wallet_info import NewPoolWalletInitialTargetState, PoolSingletonState, PoolWalletInfo
34
34
  from chia.protocols.pool_protocol import POOL_PROTOCOL_VERSION
35
35
  from chia.rpc.rpc_client import ResponseFailureError
36
36
  from chia.server.server import ssl_context_for_root
@@ -38,11 +38,12 @@ from chia.ssl.create_ssl import get_mozilla_ca_crt
38
38
  from chia.util.bech32m import encode_puzzle_hash
39
39
  from chia.util.default_root import DEFAULT_ROOT_PATH
40
40
  from chia.util.errors import CliRpcConnectionError
41
- from chia.wallet.transaction_record import TransactionRecord
42
41
  from chia.wallet.util.address_type import AddressType
43
42
  from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
44
43
  from chia.wallet.util.wallet_types import WalletType
45
44
  from chia.wallet.wallet_request_types import (
45
+ CreateNewWallet,
46
+ CreateNewWalletType,
46
47
  GetTransaction,
47
48
  GetWalletBalance,
48
49
  GetWallets,
@@ -51,6 +52,7 @@ from chia.wallet.wallet_request_types import (
51
52
  PWSelfPool,
52
53
  PWStatus,
53
54
  TransactionEndpointResponse,
55
+ WalletCreationMode,
54
56
  WalletInfoResponse,
55
57
  )
56
58
  from chia.wallet.wallet_rpc_client import WalletRpcClient
@@ -81,17 +83,17 @@ async def create_pool_args(pool_url: str) -> dict[str, Any]:
81
83
 
82
84
  async def create(
83
85
  wallet_info: WalletClientInfo,
84
- pool_url: Optional[str],
86
+ pool_url: str | None,
85
87
  state: str,
86
88
  fee: uint64,
87
89
  *,
88
90
  prompt: bool,
89
91
  ) -> None:
90
- target_puzzle_hash: Optional[bytes32]
92
+ target_puzzle_hash: bytes32 | None
91
93
  # Could use initial_pool_state_from_dict to simplify
92
94
  if state == "SELF_POOLING":
93
95
  pool_url = None
94
- relative_lock_height = uint32(0)
96
+ relative_lock_height = None
95
97
  target_puzzle_hash = None # wallet will fill this in
96
98
  elif state == "FARMING_TO_POOL":
97
99
  enforce_https = wallet_info.config["selected_network"] == "mainnet"
@@ -110,22 +112,31 @@ async def create(
110
112
  cli_confirm("Confirm (y/n): ", "Aborting.")
111
113
 
112
114
  try:
113
- tx_record: TransactionRecord = await wallet_info.client.create_new_pool_wallet(
114
- target_puzzle_hash,
115
- pool_url,
116
- relative_lock_height,
117
- "localhost:5000",
118
- "new",
119
- state,
120
- fee,
115
+ create_response = await wallet_info.client.create_new_wallet(
116
+ CreateNewWallet(
117
+ wallet_type=CreateNewWalletType.POOL_WALLET,
118
+ initial_target_state=NewPoolWalletInitialTargetState(
119
+ target_puzzle_hash=target_puzzle_hash,
120
+ state=state,
121
+ pool_url=pool_url,
122
+ relative_lock_height=relative_lock_height,
123
+ ),
124
+ mode=WalletCreationMode.NEW,
125
+ fee=fee,
126
+ push=True,
127
+ ),
128
+ DEFAULT_TX_CONFIG,
121
129
  )
130
+ assert create_response.transaction is not None # mypy doesn't know about __post_init__
122
131
  start = time.time()
123
132
  while time.time() - start < 10:
124
133
  await asyncio.sleep(0.1)
125
- tx = (await wallet_info.client.get_transaction(GetTransaction(tx_record.name))).transaction
134
+ tx = (
135
+ await wallet_info.client.get_transaction(GetTransaction(create_response.transaction.name))
136
+ ).transaction
126
137
  if len(tx.sent_to) > 0:
127
138
  print(transaction_submitted_msg(tx))
128
- print(transaction_status_msg(wallet_info.fingerprint, tx_record.name))
139
+ print(transaction_status_msg(wallet_info.fingerprint, create_response.transaction.name))
129
140
  return None
130
141
  except Exception as e:
131
142
  raise CliRpcConnectionError(
@@ -138,7 +149,7 @@ async def pprint_pool_wallet_state(
138
149
  wallet_id: int,
139
150
  pool_wallet_info: PoolWalletInfo,
140
151
  address_prefix: str,
141
- pool_state_dict: Optional[dict[str, Any]],
152
+ pool_state_dict: dict[str, Any] | None,
142
153
  ) -> None:
143
154
  print(f"Wallet ID: {wallet_id}")
144
155
  if pool_wallet_info.current.state == PoolSingletonState.LEAVING_POOL.value and pool_wallet_info.target is None:
@@ -222,7 +233,7 @@ async def pprint_all_pool_wallet_state(
222
233
  async def show(
223
234
  wallet_info: WalletClientInfo,
224
235
  root_path: Path,
225
- wallet_id_passed_in: Optional[int],
236
+ wallet_id_passed_in: int | None,
226
237
  ) -> None:
227
238
  summaries_response = await wallet_info.client.get_wallets(GetWallets())
228
239
  config = wallet_info.config
@@ -261,7 +272,7 @@ async def show(
261
272
 
262
273
  async def get_login_link(launcher_id: bytes32, root_path: Path) -> None:
263
274
  async with get_any_service_client(FarmerRpcClient, root_path=root_path) as (farmer_client, _):
264
- login_link: Optional[str] = await farmer_client.get_pool_login_link(launcher_id)
275
+ login_link: str | None = await farmer_client.get_pool_login_link(launcher_id)
265
276
  if login_link is None:
266
277
  raise CliRpcConnectionError("Was not able to get login link.")
267
278
  else:
@@ -298,7 +309,7 @@ async def submit_tx_with_confirmation(
298
309
  print(f"Error performing operation on Plot NFT -f {fingerprint} wallet id: {wallet_id}: {e}")
299
310
 
300
311
 
301
- async def wallet_id_lookup_and_check(wallet_client: WalletRpcClient, wallet_id: Optional[int]) -> int:
312
+ async def wallet_id_lookup_and_check(wallet_client: WalletRpcClient, wallet_id: int | None) -> int:
302
313
  selected_wallet_id: int
303
314
 
304
315
  # absent network errors, this should not fail with an error
@@ -326,7 +337,7 @@ async def join_pool(
326
337
  wallet_info: WalletClientInfo,
327
338
  pool_url: str,
328
339
  fee: uint64,
329
- wallet_id: Optional[int],
340
+ wallet_id: int | None,
330
341
  prompt: bool,
331
342
  ) -> None:
332
343
  selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
@@ -389,7 +400,7 @@ async def join_pool(
389
400
  )
390
401
 
391
402
 
392
- async def self_pool(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: Optional[int], prompt: bool) -> None:
403
+ async def self_pool(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: int | None, prompt: bool) -> None:
393
404
  selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
394
405
  msg = (
395
406
  "Will start self-farming with Plot NFT on wallet id "
@@ -405,7 +416,7 @@ async def self_pool(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: Op
405
416
  )
406
417
 
407
418
 
408
- async def inspect_cmd(wallet_info: WalletClientInfo, wallet_id: Optional[int]) -> None:
419
+ async def inspect_cmd(wallet_info: WalletClientInfo, wallet_id: int | None) -> None:
409
420
  selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
410
421
  res = await wallet_info.client.pw_status(PWStatus(uint32(selected_wallet_id)))
411
422
  print(
@@ -420,7 +431,7 @@ async def inspect_cmd(wallet_info: WalletClientInfo, wallet_id: Optional[int]) -
420
431
  )
421
432
 
422
433
 
423
- async def claim_cmd(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: Optional[int]) -> None:
434
+ async def claim_cmd(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: int | None) -> None:
424
435
  selected_wallet_id = await wallet_id_lookup_and_check(wallet_info.client, wallet_id)
425
436
  msg = f"\nWill claim rewards for wallet ID: {selected_wallet_id}."
426
437
  func = functools.partial(
@@ -435,7 +446,7 @@ async def claim_cmd(*, wallet_info: WalletClientInfo, fee: uint64, wallet_id: Op
435
446
  await submit_tx_with_confirmation(msg, False, func, wallet_info.client, wallet_info.fingerprint, selected_wallet_id)
436
447
 
437
448
 
438
- async def change_payout_instructions(launcher_id: bytes32, address: CliAddress, root_path: Optional[Path]) -> None:
449
+ async def change_payout_instructions(launcher_id: bytes32, address: CliAddress, root_path: Path | None) -> None:
439
450
  new_pool_configs: list[PoolWalletConfig] = []
440
451
  id_found = False
441
452
  puzzle_hash = address.validate_address_type_get_ph(AddressType.XCH)
chia/cmds/rpc.py CHANGED
@@ -4,7 +4,7 @@ import asyncio
4
4
  import json
5
5
  import sys
6
6
  from pathlib import Path
7
- from typing import Any, Optional, TextIO
7
+ from typing import Any, TextIO
8
8
 
9
9
  import click
10
10
  from aiohttp import ClientResponseError
@@ -184,8 +184,8 @@ def create_commands() -> None:
184
184
  def rpc_client_cmd(
185
185
  ctx: click.Context,
186
186
  endpoint: str,
187
- request: Optional[str],
188
- json_file: Optional[TextIO],
187
+ request: str | None,
188
+ json_file: TextIO | None,
189
189
  service: str = service,
190
190
  ) -> None:
191
191
  root_path: Path = ChiaCliContext.set_default(ctx).root_path
chia/cmds/show.py CHANGED
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  import click
6
4
 
7
5
  from chia.cmds.cmd_classes import ChiaCliContext
@@ -39,14 +37,14 @@ from chia.cmds.show_funcs import show_async
39
37
  @click.pass_context
40
38
  def show_cmd(
41
39
  ctx: click.Context,
42
- rpc_port: Optional[int],
43
- wallet_rpc_port: Optional[int],
40
+ rpc_port: int | None,
41
+ wallet_rpc_port: int | None,
44
42
  fee: bool,
45
43
  state: bool,
46
44
  connections: bool,
47
45
  add_connection: str,
48
46
  remove_connection: str,
49
- block_header_hash_by_height: Optional[int],
47
+ block_header_hash_by_height: int | None,
50
48
  block_by_header_hash: str,
51
49
  ) -> None:
52
50
  import asyncio
chia/cmds/show_funcs.py CHANGED
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  from pathlib import Path
5
- from typing import Any, Optional, Union
5
+ from typing import Any
6
6
 
7
7
  from chia_rs.sized_bytes import bytes32
8
8
 
@@ -21,7 +21,7 @@ async def print_blockchain_state(node_client: FullNodeRpcClient, config: dict[st
21
21
  if blockchain_state is None:
22
22
  print("There is no blockchain found yet. Try again shortly")
23
23
  return True
24
- peak: Optional[BlockRecord] = blockchain_state["peak"]
24
+ peak: BlockRecord | None = blockchain_state["peak"]
25
25
  node_id = blockchain_state["node_id"]
26
26
  difficulty = blockchain_state["difficulty"]
27
27
  sub_slot_iters = blockchain_state["sub_slot_iters"]
@@ -104,8 +104,8 @@ async def print_block_from_hash(
104
104
 
105
105
  from chia.util.bech32m import encode_puzzle_hash
106
106
 
107
- block: Optional[BlockRecord] = await node_client.get_block_record(bytes32.from_hexstr(block_by_header_hash))
108
- full_block: Optional[FullBlock] = await node_client.get_block(bytes32.from_hexstr(block_by_header_hash))
107
+ block: BlockRecord | None = await node_client.get_block_record(bytes32.from_hexstr(block_by_header_hash))
108
+ full_block: FullBlock | None = await node_client.get_block(bytes32.from_hexstr(block_by_header_hash))
109
109
  # Would like to have a verbose flag for this
110
110
  if block is not None:
111
111
  assert full_block is not None
@@ -123,7 +123,7 @@ async def print_block_from_hash(
123
123
  )
124
124
  block_time_string = time.strftime("%a %b %d %Y %T %Z", block_time)
125
125
  cost = str(full_block.transactions_info.cost)
126
- tx_filter_hash: Union[str, bytes32] = "Not a transaction block"
126
+ tx_filter_hash: str | bytes32 = "Not a transaction block"
127
127
  if full_block.foliage_transaction_block:
128
128
  tx_filter_hash = full_block.foliage_transaction_block.filter_hash
129
129
  fees: Any = block.fees
@@ -152,8 +152,8 @@ async def print_block_from_hash(
152
152
  f"Total VDF Iterations {block.total_iters}\n"
153
153
  f"Is a Transaction Block?{block.is_transaction_block}\n"
154
154
  f"Deficit {block.deficit}\n"
155
- f"PoSpace 'k' Size (v1) {full_block.reward_chain_block.proof_of_space.size().size_v1}\n"
156
- f"PoSpace 'k' Size (v2) {full_block.reward_chain_block.proof_of_space.size().size_v2}\n"
155
+ f"PoSpace 'k' Size (v1) {full_block.reward_chain_block.proof_of_space.param().size_v1}\n"
156
+ f"PoSpace strength (v2) {full_block.reward_chain_block.proof_of_space.param().strength_v2}\n"
157
157
  f"Plot Public Key 0x{full_block.reward_chain_block.proof_of_space.plot_public_key}\n"
158
158
  f"Pool Public Key {pool_pk}\n"
159
159
  f"Tx Filter Hash {tx_filter_hash}\n"
@@ -191,11 +191,11 @@ async def print_fee_info(node_client: FullNodeRpcClient) -> None:
191
191
 
192
192
 
193
193
  async def show_async(
194
- rpc_port: Optional[int],
194
+ rpc_port: int | None,
195
195
  root_path: Path,
196
196
  print_fee_info_flag: bool,
197
197
  print_state: bool,
198
- block_header_hash_by_height: Optional[int],
198
+ block_header_hash_by_height: int | None,
199
199
  block_by_header_hash: str,
200
200
  ) -> None:
201
201
  from chia.cmds.cmds_util import get_any_service_client