chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.6.0rc2__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 (531) 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_blockchain_transactions.py +5 -2
  6. chia/_tests/blockchain/test_build_chains.py +2 -4
  7. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  8. chia/_tests/clvm/coin_store.py +4 -7
  9. chia/_tests/clvm/test_clvm_step.py +4 -4
  10. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  11. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  12. chia/_tests/clvm/test_singletons.py +2 -4
  13. chia/_tests/clvm/test_spend_sim.py +2 -2
  14. chia/_tests/cmds/cmd_test_utils.py +27 -45
  15. chia/_tests/cmds/test_cmd_framework.py +6 -6
  16. chia/_tests/cmds/test_daemon.py +3 -3
  17. chia/_tests/cmds/test_show.py +4 -4
  18. chia/_tests/cmds/test_tx_config_args.py +1 -2
  19. chia/_tests/cmds/testing_classes.py +4 -5
  20. chia/_tests/cmds/wallet/test_did.py +24 -27
  21. chia/_tests/cmds/wallet/test_nft.py +12 -10
  22. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  23. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  24. chia/_tests/conftest.py +66 -31
  25. chia/_tests/connection_utils.py +2 -2
  26. chia/_tests/core/cmds/test_beta.py +4 -4
  27. chia/_tests/core/cmds/test_keys.py +2 -3
  28. chia/_tests/core/cmds/test_wallet.py +15 -15
  29. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  30. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  31. chia/_tests/core/daemon/test_daemon.py +11 -11
  32. chia/_tests/core/data_layer/conftest.py +2 -2
  33. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  34. chia/_tests/core/data_layer/test_data_store.py +10 -10
  35. chia/_tests/core/data_layer/util.py +11 -11
  36. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  37. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  38. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  39. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  40. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  41. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  42. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  43. chia/_tests/core/full_node/test_conditions.py +21 -23
  44. chia/_tests/core/full_node/test_full_node.py +273 -70
  45. chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
  46. chia/_tests/core/full_node/test_hint_management.py +2 -4
  47. chia/_tests/core/full_node/test_performance.py +0 -1
  48. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  49. chia/_tests/core/full_node/test_transactions.py +1 -2
  50. chia/_tests/core/full_node/test_tx_processing_queue.py +198 -30
  51. chia/_tests/core/mempool/test_mempool.py +54 -50
  52. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  53. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  54. chia/_tests/core/mempool/test_mempool_manager.py +988 -854
  55. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  56. chia/_tests/core/server/serve.py +7 -7
  57. chia/_tests/core/server/test_dos.py +1 -2
  58. chia/_tests/core/server/test_event_loop.py +12 -4
  59. chia/_tests/core/server/test_loop.py +7 -8
  60. chia/_tests/core/server/test_rate_limits.py +9 -8
  61. chia/_tests/core/server/test_server.py +61 -1
  62. chia/_tests/core/services/test_services.py +2 -2
  63. chia/_tests/core/ssl/test_ssl.py +2 -2
  64. chia/_tests/core/test_cost_calculation.py +2 -6
  65. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  66. chia/_tests/core/test_filter.py +0 -1
  67. chia/_tests/core/test_full_node_rpc.py +2 -2
  68. chia/_tests/core/test_merkle_set.py +1 -2
  69. chia/_tests/core/test_seeder.py +4 -4
  70. chia/_tests/core/util/test_config.py +4 -4
  71. chia/_tests/core/util/test_jsonify.py +2 -2
  72. chia/_tests/core/util/test_keychain.py +3 -3
  73. chia/_tests/core/util/test_lockfile.py +2 -1
  74. chia/_tests/core/util/test_log_exceptions.py +1 -2
  75. chia/_tests/core/util/test_streamable.py +17 -17
  76. chia/_tests/db/test_db_wrapper.py +3 -2
  77. chia/_tests/environments/wallet.py +14 -14
  78. chia/_tests/ether.py +4 -3
  79. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  80. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  81. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  82. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  83. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  84. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  85. chia/_tests/harvester/test_harvester_api.py +11 -4
  86. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  87. chia/_tests/plot_sync/test_receiver.py +11 -10
  88. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  89. chia/_tests/plot_sync/util.py +1 -2
  90. chia/_tests/plotting/test_plot_manager.py +7 -6
  91. chia/_tests/plotting/test_prover.py +30 -38
  92. chia/_tests/pools/test_pool_cmdline.py +4 -6
  93. chia/_tests/pools/test_pool_rpc.py +203 -61
  94. chia/_tests/pools/test_pool_wallet.py +3 -3
  95. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  96. chia/_tests/process_junit.py +2 -2
  97. chia/_tests/rpc/test_rpc_client.py +4 -4
  98. chia/_tests/rpc/test_rpc_server.py +3 -3
  99. chia/_tests/simulation/test_simulation.py +12 -25
  100. chia/_tests/solver/test_solver_service.py +13 -4
  101. chia/_tests/testconfig.py +2 -2
  102. chia/_tests/timelord/test_new_peak.py +22 -11
  103. chia/_tests/tools/test_run_block.py +0 -2
  104. chia/_tests/tools/test_virtual_project.py +2 -1
  105. chia/_tests/util/benchmarks.py +1 -0
  106. chia/_tests/util/blockchain.py +38 -36
  107. chia/_tests/util/blockchain_mock.py +11 -11
  108. chia/_tests/util/build_network_protocol_files.py +2 -1
  109. chia/_tests/util/coin_store.py +2 -1
  110. chia/_tests/util/config.py +1 -1
  111. chia/_tests/util/db_connection.py +2 -3
  112. chia/_tests/util/full_sync.py +9 -11
  113. chia/_tests/util/gen_ssl_certs.py +4 -5
  114. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  115. chia/_tests/util/misc.py +24 -24
  116. chia/_tests/util/network_protocol_data.py +20 -3
  117. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  118. chia/_tests/util/protocol_messages_json.py +292 -3
  119. chia/_tests/util/setup_nodes.py +62 -47
  120. chia/_tests/util/spend_sim.py +57 -57
  121. chia/_tests/util/test_async_pool.py +2 -3
  122. chia/_tests/util/test_chia_version.py +1 -3
  123. chia/_tests/util/test_config.py +3 -3
  124. chia/_tests/util/test_full_block_utils.py +6 -3
  125. chia/_tests/util/test_limited_semaphore.py +1 -2
  126. chia/_tests/util/test_misc.py +2 -2
  127. chia/_tests/util/test_network.py +1 -2
  128. chia/_tests/util/test_priority_mutex.py +3 -3
  129. chia/_tests/util/test_recursive_replace.py +5 -6
  130. chia/_tests/util/test_replace_str_to_bytes.py +9 -10
  131. chia/_tests/util/test_testnet_overrides.py +3 -3
  132. chia/_tests/util/time_out_assert.py +2 -2
  133. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  134. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  135. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  136. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  137. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  138. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  139. chia/_tests/wallet/conftest.py +6 -6
  140. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  141. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  142. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  145. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  146. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  147. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  148. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  149. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  150. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  151. chia/_tests/wallet/sync/test_wallet_sync.py +63 -60
  152. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  153. chia/_tests/wallet/test_coin_management.py +2 -2
  154. chia/_tests/wallet/test_conditions.py +45 -51
  155. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  156. chia/_tests/wallet/test_new_wallet_protocol.py +17 -17
  157. chia/_tests/wallet/test_notifications.py +14 -14
  158. chia/_tests/wallet/test_signer_protocol.py +5 -5
  159. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  160. chia/_tests/wallet/test_transaction_store.py +20 -20
  161. chia/_tests/wallet/test_util.py +2 -2
  162. chia/_tests/wallet/test_wallet.py +380 -228
  163. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  164. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  165. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  166. chia/_tests/wallet/test_wallet_node.py +16 -15
  167. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  168. chia/_tests/wallet/test_wallet_utils.py +2 -3
  169. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  170. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  171. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  172. chia/_tests/wallet/wallet_block_tools.py +12 -11
  173. chia/_tests/weight_proof/config.py +1 -0
  174. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  175. chia/apis/__init__.py +21 -0
  176. chia/apis/farmer_stub.py +102 -0
  177. chia/apis/full_node_stub.py +374 -0
  178. chia/apis/harvester_stub.py +57 -0
  179. chia/apis/introducer_stub.py +35 -0
  180. chia/apis/solver_stub.py +30 -0
  181. chia/apis/stub_protocol_registry.py +21 -0
  182. chia/apis/timelord_stub.py +39 -0
  183. chia/apis/wallet_stub.py +161 -0
  184. chia/cmds/beta.py +3 -4
  185. chia/cmds/beta_funcs.py +4 -3
  186. chia/cmds/check_wallet_db.py +4 -4
  187. chia/cmds/chia.py +1 -2
  188. chia/cmds/cmd_classes.py +11 -13
  189. chia/cmds/cmd_helpers.py +11 -11
  190. chia/cmds/cmds_util.py +15 -15
  191. chia/cmds/coin_funcs.py +6 -7
  192. chia/cmds/coins.py +2 -3
  193. chia/cmds/configure.py +1 -2
  194. chia/cmds/data.py +42 -42
  195. chia/cmds/data_funcs.py +81 -81
  196. chia/cmds/db.py +4 -5
  197. chia/cmds/db_backup_func.py +2 -2
  198. chia/cmds/db_upgrade_func.py +3 -3
  199. chia/cmds/db_validate_func.py +2 -2
  200. chia/cmds/dev/data.py +4 -4
  201. chia/cmds/dev/gh.py +5 -5
  202. chia/cmds/dev/installers.py +2 -3
  203. chia/cmds/dev/mempool.py +3 -4
  204. chia/cmds/dev/mempool_funcs.py +4 -4
  205. chia/cmds/dev/sim.py +8 -8
  206. chia/cmds/dump_keyring.py +3 -3
  207. chia/cmds/farm.py +6 -8
  208. chia/cmds/farm_funcs.py +25 -24
  209. chia/cmds/init_funcs.py +4 -4
  210. chia/cmds/keys.py +16 -18
  211. chia/cmds/keys_funcs.py +36 -36
  212. chia/cmds/netspace.py +1 -3
  213. chia/cmds/netspace_funcs.py +1 -2
  214. chia/cmds/options.py +3 -2
  215. chia/cmds/param_types.py +17 -16
  216. chia/cmds/passphrase.py +6 -7
  217. chia/cmds/passphrase_funcs.py +11 -13
  218. chia/cmds/peer.py +1 -3
  219. chia/cmds/peer_funcs.py +3 -3
  220. chia/cmds/plotnft.py +6 -7
  221. chia/cmds/plotnft_funcs.py +37 -26
  222. chia/cmds/rpc.py +3 -3
  223. chia/cmds/show.py +3 -5
  224. chia/cmds/show_funcs.py +9 -9
  225. chia/cmds/sim_funcs.py +25 -26
  226. chia/cmds/solver.py +1 -3
  227. chia/cmds/solver_funcs.py +1 -2
  228. chia/cmds/start_funcs.py +2 -2
  229. chia/cmds/wallet.py +76 -81
  230. chia/cmds/wallet_funcs.py +206 -177
  231. chia/consensus/augmented_chain.py +6 -6
  232. chia/consensus/block_body_validation.py +19 -15
  233. chia/consensus/block_creation.py +25 -21
  234. chia/consensus/block_header_validation.py +27 -13
  235. chia/consensus/block_height_map.py +3 -6
  236. chia/consensus/block_height_map_protocol.py +2 -2
  237. chia/consensus/block_record.py +2 -4
  238. chia/consensus/blockchain.py +58 -40
  239. chia/consensus/blockchain_interface.py +7 -7
  240. chia/consensus/coin_store_protocol.py +5 -6
  241. chia/consensus/condition_tools.py +4 -4
  242. chia/consensus/cost_calculator.py +2 -3
  243. chia/consensus/default_constants.py +19 -13
  244. chia/consensus/deficit.py +1 -3
  245. chia/consensus/difficulty_adjustment.py +3 -5
  246. chia/consensus/find_fork_point.py +2 -4
  247. chia/consensus/full_block_to_block_record.py +11 -13
  248. chia/consensus/generator_tools.py +2 -3
  249. chia/consensus/get_block_challenge.py +50 -26
  250. chia/consensus/get_block_generator.py +2 -3
  251. chia/consensus/make_sub_epoch_summary.py +8 -7
  252. chia/consensus/multiprocess_validation.py +31 -20
  253. chia/consensus/pos_quality.py +6 -23
  254. chia/consensus/pot_iterations.py +17 -44
  255. chia/consensus/signage_point.py +4 -5
  256. chia/consensus/vdf_info_computation.py +2 -4
  257. chia/daemon/client.py +8 -8
  258. chia/daemon/keychain_proxy.py +31 -37
  259. chia/daemon/server.py +32 -33
  260. chia/daemon/windows_signal.py +4 -3
  261. chia/data_layer/data_layer.py +86 -77
  262. chia/data_layer/data_layer_rpc_api.py +9 -9
  263. chia/data_layer/data_layer_rpc_client.py +13 -15
  264. chia/data_layer/data_layer_server.py +3 -3
  265. chia/data_layer/data_layer_util.py +14 -14
  266. chia/data_layer/data_layer_wallet.py +94 -101
  267. chia/data_layer/data_store.py +50 -50
  268. chia/data_layer/dl_wallet_store.py +9 -12
  269. chia/data_layer/download_data.py +8 -9
  270. chia/data_layer/s3_plugin_service.py +5 -9
  271. chia/data_layer/start_data_layer.py +5 -5
  272. chia/farmer/farmer.py +31 -31
  273. chia/farmer/farmer_api.py +45 -33
  274. chia/farmer/farmer_rpc_api.py +5 -4
  275. chia/farmer/farmer_rpc_client.py +6 -6
  276. chia/farmer/start_farmer.py +6 -6
  277. chia/full_node/block_store.py +13 -16
  278. chia/full_node/check_fork_next_block.py +1 -2
  279. chia/full_node/coin_store.py +15 -16
  280. chia/full_node/eligible_coin_spends.py +3 -3
  281. chia/full_node/fee_estimate_store.py +2 -3
  282. chia/full_node/fee_tracker.py +1 -2
  283. chia/full_node/full_block_utils.py +4 -4
  284. chia/full_node/full_node.py +239 -223
  285. chia/full_node/full_node_api.py +197 -152
  286. chia/full_node/full_node_rpc_api.py +34 -32
  287. chia/full_node/full_node_rpc_client.py +18 -19
  288. chia/full_node/full_node_store.py +45 -43
  289. chia/full_node/hard_fork_utils.py +44 -0
  290. chia/full_node/hint_management.py +2 -2
  291. chia/full_node/mempool.py +17 -19
  292. chia/full_node/mempool_manager.py +89 -42
  293. chia/full_node/pending_tx_cache.py +2 -3
  294. chia/full_node/start_full_node.py +5 -5
  295. chia/full_node/sync_store.py +3 -4
  296. chia/full_node/tx_processing_queue.py +120 -36
  297. chia/full_node/weight_proof.py +61 -48
  298. chia/harvester/harvester.py +25 -24
  299. chia/harvester/harvester_api.py +61 -38
  300. chia/harvester/harvester_rpc_api.py +10 -10
  301. chia/harvester/start_harvester.py +4 -4
  302. chia/introducer/introducer.py +3 -3
  303. chia/introducer/introducer_api.py +6 -4
  304. chia/introducer/start_introducer.py +4 -4
  305. chia/legacy/keyring.py +3 -3
  306. chia/plot_sync/delta.py +1 -2
  307. chia/plot_sync/receiver.py +20 -17
  308. chia/plot_sync/sender.py +15 -10
  309. chia/plotters/bladebit.py +7 -7
  310. chia/plotters/chiapos.py +2 -2
  311. chia/plotters/madmax.py +4 -4
  312. chia/plotters/plotters.py +4 -4
  313. chia/plotters/plotters_util.py +3 -3
  314. chia/plotting/cache.py +20 -14
  315. chia/plotting/check_plots.py +26 -35
  316. chia/plotting/create_plots.py +22 -23
  317. chia/plotting/manager.py +21 -14
  318. chia/plotting/prover.py +59 -42
  319. chia/plotting/util.py +16 -16
  320. chia/pools/pool_config.py +2 -1
  321. chia/pools/pool_puzzles.py +11 -12
  322. chia/pools/pool_wallet.py +34 -57
  323. chia/pools/pool_wallet_info.py +39 -10
  324. chia/protocols/farmer_protocol.py +8 -9
  325. chia/protocols/fee_estimate.py +3 -4
  326. chia/protocols/full_node_protocol.py +3 -4
  327. chia/protocols/harvester_protocol.py +27 -15
  328. chia/protocols/outbound_message.py +3 -3
  329. chia/protocols/pool_protocol.py +8 -9
  330. chia/protocols/shared_protocol.py +1 -2
  331. chia/protocols/solver_protocol.py +9 -2
  332. chia/protocols/timelord_protocol.py +4 -7
  333. chia/protocols/wallet_protocol.py +11 -12
  334. chia/rpc/rpc_client.py +9 -9
  335. chia/rpc/rpc_server.py +17 -17
  336. chia/rpc/util.py +2 -2
  337. chia/seeder/crawler.py +8 -8
  338. chia/seeder/crawler_api.py +21 -27
  339. chia/seeder/crawler_rpc_api.py +2 -2
  340. chia/seeder/dns_server.py +21 -21
  341. chia/seeder/start_crawler.py +4 -4
  342. chia/server/address_manager.py +15 -16
  343. chia/server/api_protocol.py +11 -11
  344. chia/server/chia_policy.py +46 -26
  345. chia/server/introducer_peers.py +2 -3
  346. chia/server/node_discovery.py +19 -19
  347. chia/server/rate_limit_numbers.py +4 -5
  348. chia/server/rate_limits.py +4 -4
  349. chia/server/resolve_peer_info.py +4 -4
  350. chia/server/server.py +49 -52
  351. chia/server/signal_handlers.py +6 -6
  352. chia/server/start_service.py +17 -17
  353. chia/server/upnp.py +4 -6
  354. chia/server/ws_connection.py +52 -37
  355. chia/simulator/add_blocks_in_batches.py +1 -3
  356. chia/simulator/block_tools.py +312 -200
  357. chia/simulator/full_node_simulator.py +56 -35
  358. chia/simulator/keyring.py +2 -3
  359. chia/simulator/setup_services.py +15 -15
  360. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  361. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  362. chia/simulator/simulator_protocol.py +1 -2
  363. chia/simulator/simulator_test_tools.py +3 -3
  364. chia/simulator/start_simulator.py +7 -7
  365. chia/simulator/wallet_tools.py +10 -10
  366. chia/solver/solver.py +10 -10
  367. chia/solver/solver_api.py +10 -8
  368. chia/solver/solver_rpc_api.py +2 -2
  369. chia/solver/start_solver.py +4 -4
  370. chia/ssl/cacert.pem +148 -90
  371. chia/ssl/chia_ca.crt +14 -10
  372. chia/ssl/chia_ca_old.crt +19 -0
  373. chia/ssl/create_ssl.py +4 -4
  374. chia/ssl/renewedselfsignedca.conf +4 -0
  375. chia/ssl/ssl_check.py +1 -2
  376. chia/timelord/iters_from_block.py +1 -4
  377. chia/timelord/start_timelord.py +4 -4
  378. chia/timelord/timelord.py +44 -40
  379. chia/timelord/timelord_api.py +6 -4
  380. chia/timelord/timelord_launcher.py +2 -2
  381. chia/timelord/timelord_rpc_api.py +2 -2
  382. chia/timelord/timelord_state.py +11 -12
  383. chia/types/block_protocol.py +1 -3
  384. chia/types/blockchain_format/coin.py +1 -3
  385. chia/types/blockchain_format/program.py +11 -8
  386. chia/types/blockchain_format/proof_of_space.py +123 -76
  387. chia/types/blockchain_format/tree_hash.py +3 -3
  388. chia/types/blockchain_format/vdf.py +1 -2
  389. chia/types/coin_spend.py +3 -3
  390. chia/types/mempool_item.py +5 -5
  391. chia/types/mempool_submission_status.py +2 -3
  392. chia/types/peer_info.py +1 -2
  393. chia/types/unfinished_header_block.py +3 -4
  394. chia/types/validation_state.py +1 -2
  395. chia/util/action_scope.py +8 -8
  396. chia/util/async_pool.py +5 -5
  397. chia/util/bech32m.py +1 -2
  398. chia/util/beta_metrics.py +2 -2
  399. chia/util/block_cache.py +4 -4
  400. chia/util/chia_logging.py +2 -2
  401. chia/util/chia_version.py +1 -2
  402. chia/util/config.py +15 -16
  403. chia/util/db_wrapper.py +26 -27
  404. chia/util/default_root.py +1 -2
  405. chia/util/errors.py +3 -3
  406. chia/util/file_keyring.py +14 -14
  407. chia/util/files.py +2 -3
  408. chia/util/hash.py +4 -4
  409. chia/util/initial-config.yaml +4 -5
  410. chia/util/inline_executor.py +2 -1
  411. chia/util/ip_address.py +1 -2
  412. chia/util/keychain.py +25 -27
  413. chia/util/keyring_wrapper.py +18 -19
  414. chia/util/lock.py +3 -4
  415. chia/util/log_exceptions.py +1 -2
  416. chia/util/lru_cache.py +2 -2
  417. chia/util/network.py +6 -6
  418. chia/util/path.py +2 -3
  419. chia/util/priority_mutex.py +2 -2
  420. chia/util/profiler.py +1 -2
  421. chia/util/safe_cancel_task.py +1 -2
  422. chia/util/streamable.py +24 -10
  423. chia/util/task_referencer.py +1 -1
  424. chia/util/timing.py +3 -3
  425. chia/util/virtual_project_analysis.py +6 -5
  426. chia/util/ws_message.py +2 -2
  427. chia/wallet/cat_wallet/cat_info.py +3 -4
  428. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  429. chia/wallet/cat_wallet/cat_utils.py +3 -4
  430. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  431. chia/wallet/cat_wallet/lineage_store.py +3 -4
  432. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  433. chia/wallet/coin_selection.py +9 -10
  434. chia/wallet/conditions.py +142 -106
  435. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  436. chia/wallet/derivation_record.py +1 -2
  437. chia/wallet/derive_keys.py +2 -4
  438. chia/wallet/did_wallet/did_info.py +10 -11
  439. chia/wallet/did_wallet/did_wallet.py +36 -82
  440. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  441. chia/wallet/driver_protocol.py +5 -7
  442. chia/wallet/lineage_proof.py +4 -4
  443. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  444. chia/wallet/nft_wallet/nft_info.py +8 -9
  445. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  446. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  447. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  448. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  449. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  450. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  451. chia/wallet/notification_manager.py +3 -3
  452. chia/wallet/notification_store.py +44 -61
  453. chia/wallet/outer_puzzles.py +6 -7
  454. chia/wallet/puzzle_drivers.py +34 -6
  455. chia/wallet/puzzles/clawback/drivers.py +6 -6
  456. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  457. chia/wallet/puzzles/load_clvm.py +1 -1
  458. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  459. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  460. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  461. chia/wallet/puzzles/tails.py +3 -3
  462. chia/wallet/singleton.py +5 -7
  463. chia/wallet/singleton_record.py +3 -3
  464. chia/wallet/start_wallet.py +5 -5
  465. chia/wallet/trade_manager.py +37 -58
  466. chia/wallet/trade_record.py +4 -4
  467. chia/wallet/trading/offer.py +59 -46
  468. chia/wallet/trading/trade_store.py +8 -9
  469. chia/wallet/transaction_record.py +8 -8
  470. chia/wallet/uncurried_puzzle.py +1 -2
  471. chia/wallet/util/clvm_streamable.py +12 -12
  472. chia/wallet/util/compute_hints.py +4 -5
  473. chia/wallet/util/curry_and_treehash.py +1 -2
  474. chia/wallet/util/merkle_tree.py +2 -3
  475. chia/wallet/util/peer_request_cache.py +8 -8
  476. chia/wallet/util/signing.py +85 -0
  477. chia/wallet/util/tx_config.py +15 -6
  478. chia/wallet/util/wallet_sync_utils.py +14 -16
  479. chia/wallet/util/wallet_types.py +2 -2
  480. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  481. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  482. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  483. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  484. chia/wallet/vc_wallet/vc_store.py +5 -6
  485. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  486. chia/wallet/wallet.py +50 -78
  487. chia/wallet/wallet_action_scope.py +11 -11
  488. chia/wallet/wallet_blockchain.py +12 -12
  489. chia/wallet/wallet_coin_record.py +12 -6
  490. chia/wallet/wallet_coin_store.py +24 -25
  491. chia/wallet/wallet_interested_store.py +3 -5
  492. chia/wallet/wallet_nft_store.py +10 -11
  493. chia/wallet/wallet_node.py +53 -61
  494. chia/wallet/wallet_node_api.py +5 -3
  495. chia/wallet/wallet_protocol.py +23 -23
  496. chia/wallet/wallet_puzzle_store.py +15 -18
  497. chia/wallet/wallet_request_types.py +778 -114
  498. chia/wallet/wallet_retry_store.py +1 -3
  499. chia/wallet/wallet_rpc_api.py +572 -909
  500. chia/wallet/wallet_rpc_client.py +87 -279
  501. chia/wallet/wallet_singleton_store.py +3 -4
  502. chia/wallet/wallet_state_manager.py +332 -106
  503. chia/wallet/wallet_transaction_store.py +11 -14
  504. chia/wallet/wallet_user_store.py +4 -6
  505. chia/wallet/wallet_weight_proof_handler.py +4 -4
  506. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +6 -5
  507. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
  508. chia/apis.py +0 -21
  509. chia/consensus/check_time_locks.py +0 -57
  510. chia/data_layer/puzzles/__init__.py +0 -0
  511. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  512. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  513. chia/types/coin_record.py +0 -44
  514. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  515. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  516. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  517. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  518. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  520. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  521. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  522. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  524. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  525. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  526. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  527. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  528. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  529. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
  530. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
  531. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
@@ -8,7 +8,7 @@ from collections.abc import AsyncIterator
8
8
  from dataclasses import dataclass
9
9
  from pathlib import Path
10
10
  from shutil import rmtree
11
- from typing import Any, Union
11
+ from typing import Any
12
12
 
13
13
  import pytest
14
14
 
@@ -22,7 +22,7 @@ from pytest_mock import MockerFixture
22
22
  from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
23
23
  from chia._tests.util.setup_nodes import setup_simulators_and_wallets_service
24
24
  from chia._tests.util.time_out_assert import time_out_assert
25
- from chia.pools.pool_wallet_info import PoolSingletonState, PoolWalletInfo
25
+ from chia.pools.pool_wallet_info import NewPoolWalletInitialTargetState, PoolSingletonState, PoolWalletInfo
26
26
  from chia.rpc.rpc_client import ResponseFailureError
27
27
  from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
28
28
  from chia.simulator.block_tools import BlockTools, get_plot_dir
@@ -41,6 +41,8 @@ from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
41
41
  from chia.wallet.util.wallet_types import WalletType
42
42
  from chia.wallet.wallet_node import WalletNode
43
43
  from chia.wallet.wallet_request_types import (
44
+ CreateNewWallet,
45
+ CreateNewWalletType,
44
46
  DeleteUnconfirmedTransactions,
45
47
  GetTransactions,
46
48
  GetWalletBalance,
@@ -50,6 +52,7 @@ from chia.wallet.wallet_request_types import (
50
52
  PWSelfPool,
51
53
  PWStatus,
52
54
  SendTransaction,
55
+ WalletCreationMode,
53
56
  )
54
57
  from chia.wallet.wallet_rpc_client import WalletRpcClient
55
58
  from chia.wallet.wallet_service import WalletService
@@ -211,7 +214,7 @@ async def process_plotnft_create(
211
214
  ) -> int:
212
215
  wallet_rpc: WalletRpcClient = wallet_test_framework.environments[0].rpc_client
213
216
 
214
- pre_block_balance_updates: dict[Union[int, str], dict[str, int]] = {
217
+ pre_block_balance_updates: dict[int | str, dict[str, int]] = {
215
218
  1: {
216
219
  "confirmed_wallet_balance": 0,
217
220
  "unconfirmed_wallet_balance": -1,
@@ -222,7 +225,7 @@ async def process_plotnft_create(
222
225
  }
223
226
  }
224
227
 
225
- post_block_balance_updates: dict[Union[int, str], dict[str, int]] = {
228
+ post_block_balance_updates: dict[int | str, dict[str, int]] = {
226
229
  1: {
227
230
  "confirmed_wallet_balance": -1,
228
231
  "unconfirmed_wallet_balance": 0,
@@ -269,14 +272,20 @@ async def create_new_plotnft(
269
272
  async with wallet_state_manager.new_action_scope(wallet_test_framework.tx_config, push=True) as action_scope:
270
273
  our_ph = await action_scope.get_puzzle_hash(wallet_state_manager)
271
274
 
272
- await wallet_rpc.create_new_pool_wallet(
273
- target_puzzlehash=our_ph,
274
- backup_host="",
275
- mode="new",
276
- relative_lock_height=uint32(0) if self_pool else LOCK_HEIGHT,
277
- state="SELF_POOLING" if self_pool else "FARMING_TO_POOL",
278
- pool_url="" if self_pool else "http://pool.example.com",
279
- fee=uint64(0),
275
+ await wallet_rpc.create_new_wallet(
276
+ CreateNewWallet(
277
+ wallet_type=CreateNewWalletType.POOL_WALLET,
278
+ initial_target_state=NewPoolWalletInitialTargetState(
279
+ target_puzzle_hash=None if self_pool else our_ph,
280
+ state="SELF_POOLING" if self_pool else "FARMING_TO_POOL",
281
+ pool_url=None if self_pool else "http://pool.example.com",
282
+ relative_lock_height=None if self_pool else LOCK_HEIGHT,
283
+ ),
284
+ mode=WalletCreationMode.NEW,
285
+ fee=uint64(0),
286
+ push=True,
287
+ ),
288
+ wallet_test_framework.tx_config,
280
289
  )
281
290
 
282
291
  return await process_plotnft_create(
@@ -297,15 +306,22 @@ class TestPoolWalletRpc:
297
306
  client, wallet_node, full_node_api, _total_block_rewards, _ = one_wallet_node_and_rpc
298
307
  wallet = wallet_node.wallet_state_manager.main_wallet
299
308
 
300
- async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
301
- our_ph = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
302
309
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
303
310
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET.value)))
304
311
  assert len(summaries_response.wallets) == 0
305
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
306
- our_ph, "", uint32(0), f"{self_hostname}:5000", "new", "SELF_POOLING", fee
312
+ create_response = await client.create_new_wallet(
313
+ CreateNewWallet(
314
+ wallet_type=CreateNewWalletType.POOL_WALLET,
315
+ initial_target_state=NewPoolWalletInitialTargetState(
316
+ state="SELF_POOLING",
317
+ ),
318
+ mode=WalletCreationMode.NEW,
319
+ fee=fee,
320
+ push=True,
321
+ ),
322
+ DEFAULT_TX_CONFIG,
307
323
  )
308
- await full_node_api.process_transaction_records(records=[creation_tx])
324
+ await full_node_api.process_transaction_records(records=create_response.transactions)
309
325
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=30)
310
326
 
311
327
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET.value)))
@@ -334,7 +350,7 @@ class TestPoolWalletRpc:
334
350
  )
335
351
  # It can be one of multiple launcher IDs, due to selecting a different coin
336
352
  launcher_id = None
337
- for addition in creation_tx.additions:
353
+ for addition in create_response.transactions[0].additions:
338
354
  if addition.puzzle_hash == SINGLETON_LAUNCHER_HASH:
339
355
  launcher_id = addition.name()
340
356
  break
@@ -357,10 +373,22 @@ class TestPoolWalletRpc:
357
373
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
358
374
  assert len(summaries_response.wallets) == 0
359
375
 
360
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
361
- our_ph, "http://pool.example.com", uint32(10), f"{self_hostname}:5000", "new", "FARMING_TO_POOL", fee
376
+ create_response = await client.create_new_wallet(
377
+ CreateNewWallet(
378
+ wallet_type=CreateNewWalletType.POOL_WALLET,
379
+ initial_target_state=NewPoolWalletInitialTargetState(
380
+ target_puzzle_hash=our_ph,
381
+ state="FARMING_TO_POOL",
382
+ pool_url="http://pool.example.com",
383
+ relative_lock_height=uint32(10),
384
+ ),
385
+ mode=WalletCreationMode.NEW,
386
+ fee=fee,
387
+ push=True,
388
+ ),
389
+ DEFAULT_TX_CONFIG,
362
390
  )
363
- await full_node_api.process_transaction_records(records=[creation_tx])
391
+ await full_node_api.process_transaction_records(records=create_response.transactions)
364
392
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
365
393
 
366
394
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
@@ -389,7 +417,7 @@ class TestPoolWalletRpc:
389
417
  )
390
418
  # It can be one of multiple launcher IDs, due to selecting a different coin
391
419
  launcher_id = None
392
- for addition in creation_tx.additions:
420
+ for addition in create_response.transactions[0].additions:
393
421
  if addition.puzzle_hash == SINGLETON_LAUNCHER_HASH:
394
422
  launcher_id = addition.name()
395
423
  break
@@ -415,15 +443,38 @@ class TestPoolWalletRpc:
415
443
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
416
444
  assert len(summaries_response.wallets) == 0
417
445
 
418
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
419
- our_ph_1, "", uint32(0), f"{self_hostname}:5000", "new", "SELF_POOLING", fee
446
+ create_response_1 = await client.create_new_wallet(
447
+ CreateNewWallet(
448
+ wallet_type=CreateNewWalletType.POOL_WALLET,
449
+ initial_target_state=NewPoolWalletInitialTargetState(
450
+ state="SELF_POOLING",
451
+ ),
452
+ mode=WalletCreationMode.NEW,
453
+ fee=fee,
454
+ push=True,
455
+ ),
456
+ DEFAULT_TX_CONFIG,
420
457
  )
421
458
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
422
- creation_tx_2: TransactionRecord = await client.create_new_pool_wallet(
423
- our_ph_1, self_hostname, uint32(12), f"{self_hostname}:5000", "new", "FARMING_TO_POOL", fee
459
+ create_response_2 = await client.create_new_wallet(
460
+ CreateNewWallet(
461
+ wallet_type=CreateNewWalletType.POOL_WALLET,
462
+ initial_target_state=NewPoolWalletInitialTargetState(
463
+ target_puzzle_hash=our_ph_1,
464
+ state="FARMING_TO_POOL",
465
+ pool_url=self_hostname,
466
+ relative_lock_height=uint32(12),
467
+ ),
468
+ mode=WalletCreationMode.NEW,
469
+ fee=fee,
470
+ push=True,
471
+ ),
472
+ DEFAULT_TX_CONFIG,
424
473
  )
425
474
 
426
- await full_node_api.process_transaction_records(records=[creation_tx, creation_tx_2])
475
+ await full_node_api.process_transaction_records(
476
+ records=[*create_response_1.transactions, *create_response_2.transactions]
477
+ )
427
478
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
428
479
 
429
480
  async def pw_created(check_wallet_id: int) -> bool:
@@ -471,10 +522,19 @@ class TestPoolWalletRpc:
471
522
 
472
523
  for i in range(5):
473
524
  await time_out_assert(10, mempool_empty)
474
- res = await client.create_new_cat_and_wallet(uint64(20), test=True)
475
- assert res["success"]
476
- cat_0_id = res["wallet_id"]
477
- asset_id = bytes.fromhex(res["asset_id"])
525
+ create_cat_res = await client.create_new_wallet(
526
+ CreateNewWallet(
527
+ wallet_type=CreateNewWalletType.CAT_WALLET,
528
+ mode=WalletCreationMode.NEW,
529
+ amount=uint64(20),
530
+ test=True,
531
+ push=True,
532
+ ),
533
+ tx_config=DEFAULT_TX_CONFIG,
534
+ )
535
+ cat_0_id = create_cat_res.wallet_id
536
+ asset_id = create_cat_res.asset_id
537
+ assert asset_id is not None # mypy doesn't know about __post_init__
478
538
  assert len(asset_id) > 0
479
539
  await full_node_api.process_all_wallet_transactions(wallet=wallet)
480
540
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
@@ -486,10 +546,22 @@ class TestPoolWalletRpc:
486
546
  if not trusted:
487
547
  for i in range(22):
488
548
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
489
- creation_tx_3: TransactionRecord = await client.create_new_pool_wallet(
490
- our_ph_1, self_hostname, uint32(5), f"{self_hostname}:5000", "new", "FARMING_TO_POOL", fee
549
+ create_response = await client.create_new_wallet(
550
+ CreateNewWallet(
551
+ wallet_type=CreateNewWalletType.POOL_WALLET,
552
+ initial_target_state=NewPoolWalletInitialTargetState(
553
+ target_puzzle_hash=our_ph_1,
554
+ state="FARMING_TO_POOL",
555
+ pool_url=self_hostname,
556
+ relative_lock_height=uint32(5),
557
+ ),
558
+ mode=WalletCreationMode.NEW,
559
+ fee=fee,
560
+ push=True,
561
+ ),
562
+ DEFAULT_TX_CONFIG,
491
563
  )
492
- await full_node_api.process_transaction_records(records=[creation_tx_3])
564
+ await full_node_api.process_transaction_records(records=create_response.transactions)
493
565
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
494
566
 
495
567
  full_config = load_config(wallet.wallet_state_manager.root_path, "config.yaml")
@@ -524,10 +596,19 @@ class TestPoolWalletRpc:
524
596
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
525
597
  assert len(summaries_response.wallets) == 0
526
598
 
527
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
528
- our_ph, "", uint32(0), f"{self_hostname}:5000", "new", "SELF_POOLING", fee
599
+ create_response = await client.create_new_wallet(
600
+ CreateNewWallet(
601
+ wallet_type=CreateNewWalletType.POOL_WALLET,
602
+ initial_target_state=NewPoolWalletInitialTargetState(
603
+ state="SELF_POOLING",
604
+ ),
605
+ mode=WalletCreationMode.NEW,
606
+ fee=fee,
607
+ push=True,
608
+ ),
609
+ DEFAULT_TX_CONFIG,
529
610
  )
530
- await full_node_api.process_transaction_records(records=[creation_tx])
611
+ await full_node_api.process_transaction_records(records=create_response.transactions)
531
612
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
532
613
  status: PoolWalletInfo = (await client.pw_status(PWStatus(uint32(2)))).state
533
614
 
@@ -633,10 +714,19 @@ class TestPoolWalletRpc:
633
714
  assert len(summaries_response.wallets) == 0
634
715
 
635
716
  main_expected_confirmed_balance = total_block_rewards
636
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
637
- our_ph, "", uint32(0), f"{self_hostname}:5000", "new", "SELF_POOLING", fee
717
+ create_response = await client.create_new_wallet(
718
+ CreateNewWallet(
719
+ wallet_type=CreateNewWalletType.POOL_WALLET,
720
+ initial_target_state=NewPoolWalletInitialTargetState(
721
+ state="SELF_POOLING",
722
+ ),
723
+ mode=WalletCreationMode.NEW,
724
+ fee=fee,
725
+ push=True,
726
+ ),
727
+ DEFAULT_TX_CONFIG,
638
728
  )
639
- await full_node_api.process_transaction_records(records=[creation_tx])
729
+ await full_node_api.process_transaction_records(records=create_response.transactions)
640
730
  main_expected_confirmed_balance -= fee
641
731
  main_expected_confirmed_balance -= 1
642
732
  pool_expected_confirmed_balance = 0
@@ -708,10 +798,22 @@ class TestPoolWalletRpc:
708
798
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
709
799
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
710
800
  assert len(summaries_response.wallets) == 0
711
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
712
- our_ph, "http://123.45.67.89", uint32(10), f"{self_hostname}:5000", "new", "FARMING_TO_POOL", fee
801
+ create_response = await client.create_new_wallet(
802
+ CreateNewWallet(
803
+ wallet_type=CreateNewWalletType.POOL_WALLET,
804
+ initial_target_state=NewPoolWalletInitialTargetState(
805
+ target_puzzle_hash=our_ph,
806
+ state="FARMING_TO_POOL",
807
+ pool_url="http://123.45.67.89",
808
+ relative_lock_height=uint32(10),
809
+ ),
810
+ mode=WalletCreationMode.NEW,
811
+ fee=fee,
812
+ push=True,
813
+ ),
814
+ DEFAULT_TX_CONFIG,
713
815
  )
714
- await full_node_api.process_transaction_records(records=[creation_tx])
816
+ await full_node_api.process_transaction_records(records=create_response.transactions)
715
817
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
716
818
  main_expected_confirmed_balance -= 1
717
819
  main_expected_confirmed_balance -= fee
@@ -827,7 +929,7 @@ class TestPoolWalletRpc:
827
929
  if fee != 0:
828
930
  pytest.skip("need to fix this test for non-zero fees")
829
931
 
830
- full_node_api, wallet_node, our_ph, _total_block_rewards, client = setup
932
+ full_node_api, wallet_node, _our_ph, _total_block_rewards, client = setup
831
933
  pool_ph = bytes32.zeros
832
934
 
833
935
  assert wallet_node._wallet_state_manager is not None
@@ -835,20 +937,39 @@ class TestPoolWalletRpc:
835
937
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
836
938
  assert len(summaries_response.wallets) == 0
837
939
 
838
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
839
- our_ph, "", uint32(0), f"{self_hostname}:5000", "new", "SELF_POOLING", fee
940
+ create_response_1 = await client.create_new_wallet(
941
+ CreateNewWallet(
942
+ wallet_type=CreateNewWalletType.POOL_WALLET,
943
+ initial_target_state=NewPoolWalletInitialTargetState(
944
+ state="SELF_POOLING",
945
+ ),
946
+ mode=WalletCreationMode.NEW,
947
+ fee=fee,
948
+ push=True,
949
+ ),
950
+ DEFAULT_TX_CONFIG,
840
951
  )
841
- await full_node_api.wait_transaction_records_entered_mempool(records=[creation_tx])
842
- creation_tx_2: TransactionRecord = await client.create_new_pool_wallet(
843
- our_ph, "", uint32(0), f"{self_hostname}:5001", "new", "SELF_POOLING", fee
952
+ await full_node_api.wait_transaction_records_entered_mempool(records=create_response_1.transactions)
953
+ await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
954
+ create_response_2 = await client.create_new_wallet(
955
+ CreateNewWallet(
956
+ wallet_type=CreateNewWalletType.POOL_WALLET,
957
+ initial_target_state=NewPoolWalletInitialTargetState(
958
+ state="SELF_POOLING",
959
+ ),
960
+ mode=WalletCreationMode.NEW,
961
+ fee=fee,
962
+ push=True,
963
+ ),
964
+ DEFAULT_TX_CONFIG,
844
965
  )
845
966
 
846
- for r in creation_tx.removals:
847
- assert r not in creation_tx_2.removals
967
+ for r in create_response_1.transactions[0].removals:
968
+ assert r not in create_response_2.transactions[0].removals
848
969
 
849
- await full_node_api.process_transaction_records(records=[creation_tx_2])
970
+ await full_node_api.process_transaction_records(records=create_response_2.transactions)
850
971
 
851
- assert not full_node_api.txs_in_mempool(txs=[creation_tx])
972
+ assert not full_node_api.txs_in_mempool(txs=create_response_1.transactions)
852
973
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
853
974
 
854
975
  summaries_response = await client.get_wallets(GetWallets(uint16(WalletType.POOLING_WALLET)))
@@ -927,14 +1048,23 @@ class TestPoolWalletRpc:
927
1048
 
928
1049
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
929
1050
 
930
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
931
- our_ph, "", uint32(0), f"{self_hostname}:5000", "new", "SELF_POOLING", fee
1051
+ create_response = await client.create_new_wallet(
1052
+ CreateNewWallet(
1053
+ wallet_type=CreateNewWalletType.POOL_WALLET,
1054
+ initial_target_state=NewPoolWalletInitialTargetState(
1055
+ state="SELF_POOLING",
1056
+ ),
1057
+ mode=WalletCreationMode.NEW,
1058
+ fee=fee,
1059
+ push=True,
1060
+ ),
1061
+ DEFAULT_TX_CONFIG,
932
1062
  )
933
1063
 
934
- await full_node_api.wait_transaction_records_entered_mempool(records=[creation_tx])
1064
+ await full_node_api.wait_transaction_records_entered_mempool(records=create_response.transactions)
935
1065
 
936
1066
  await full_node_api.farm_blocks_to_puzzlehash(count=6, farm_to=our_ph, guarantee_transaction_blocks=True)
937
- assert not full_node_api.txs_in_mempool(txs=[creation_tx])
1067
+ assert not full_node_api.txs_in_mempool(txs=create_response.transactions)
938
1068
 
939
1069
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
940
1070
 
@@ -1119,14 +1249,26 @@ class TestPoolWalletRpc:
1119
1249
 
1120
1250
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
1121
1251
 
1122
- creation_tx: TransactionRecord = await client.create_new_pool_wallet(
1123
- pool_a_ph, "https://pool-a.org", uint32(5), f"{self_hostname}:5000", "new", "FARMING_TO_POOL", uint64(fee)
1252
+ create_response = await client.create_new_wallet(
1253
+ CreateNewWallet(
1254
+ wallet_type=CreateNewWalletType.POOL_WALLET,
1255
+ initial_target_state=NewPoolWalletInitialTargetState(
1256
+ target_puzzle_hash=pool_a_ph,
1257
+ state="FARMING_TO_POOL",
1258
+ pool_url="https://pool-a.org",
1259
+ relative_lock_height=uint32(5),
1260
+ ),
1261
+ mode=WalletCreationMode.NEW,
1262
+ fee=uint64(0),
1263
+ push=True,
1264
+ ),
1265
+ DEFAULT_TX_CONFIG,
1124
1266
  )
1125
1267
 
1126
- await full_node_api.wait_transaction_records_entered_mempool(records=[creation_tx])
1268
+ await full_node_api.wait_transaction_records_entered_mempool(records=create_response.transactions)
1127
1269
 
1128
1270
  await full_node_api.farm_blocks_to_puzzlehash(count=6, farm_to=our_ph, guarantee_transaction_blocks=True)
1129
- assert not full_node_api.txs_in_mempool(txs=[creation_tx])
1271
+ assert not full_node_api.txs_in_mempool(txs=create_response.transactions)
1130
1272
 
1131
1273
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
1132
1274
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass, field
4
4
  from pathlib import Path
5
- from typing import Any, Optional, cast
5
+ from typing import Any, cast
6
6
  from unittest.mock import MagicMock
7
7
 
8
8
  import pytest
@@ -27,7 +27,7 @@ class MockStandardWallet:
27
27
 
28
28
  @dataclass
29
29
  class MockWalletStateManager:
30
- root_path: Optional[Path] = None
30
+ root_path: Path | None = None
31
31
  config: dict[str, Any] = field(default_factory=dict)
32
32
 
33
33
 
@@ -43,7 +43,7 @@ class MockPoolWalletConfig:
43
43
 
44
44
  @dataclass
45
45
  class MockPoolState:
46
- pool_url: Optional[str]
46
+ pool_url: str | None
47
47
  target_puzzle_hash: bytes32
48
48
  owner_pubkey: G1Element
49
49
 
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import random
4
4
  from dataclasses import dataclass, field
5
- from typing import Optional
6
5
 
7
6
  import pytest
8
7
  from chia_rs import CoinSpend
@@ -18,9 +17,7 @@ from chia.wallet.util.compute_additions import compute_additions
18
17
  from chia.wallet.wallet_pool_store import WalletPoolStore
19
18
 
20
19
 
21
- def make_child_solution(
22
- coin_spend: Optional[CoinSpend], new_coin: Optional[Coin], seeded_random: random.Random
23
- ) -> CoinSpend:
20
+ def make_child_solution(coin_spend: CoinSpend | None, new_coin: Coin | None, seeded_random: random.Random) -> CoinSpend:
24
21
  new_puzzle_hash: bytes32 = bytes32.random(seeded_random)
25
22
  solution = "()"
26
23
  puzzle = f"(q . ((51 0x{new_puzzle_hash.hex()} 1)))"
@@ -7,7 +7,7 @@ from collections import defaultdict
7
7
  from dataclasses import dataclass, field
8
8
  from pathlib import Path
9
9
  from statistics import StatisticsError, mean, stdev
10
- from typing import Any, Optional, TextIO, final
10
+ from typing import Any, TextIO, final
11
11
 
12
12
  import click
13
13
  import lxml.etree
@@ -126,7 +126,7 @@ def main(
126
126
  percent_margin: int,
127
127
  randomoji: bool,
128
128
  tag: str,
129
- result_count_limit: Optional[int],
129
+ result_count_limit: int | None,
130
130
  ) -> None:
131
131
  data_type = supported_data_types_by_tag[tag]
132
132
 
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
- from collections.abc import AsyncIterator, Awaitable
3
+ from collections.abc import AsyncIterator, Awaitable, Callable
4
4
  from dataclasses import dataclass
5
5
  from pathlib import Path
6
- from typing import Any, Callable, Optional
6
+ from typing import Any
7
7
 
8
8
  import pytest
9
9
  from chia_rs.sized_ints import uint16
@@ -31,8 +31,8 @@ client_fetch_methods = [
31
31
  @dataclass
32
32
  class InvalidCreateCase:
33
33
  id: str
34
- root_path: Optional[Path] = None
35
- net_config: Optional[dict[str, Any]] = None
34
+ root_path: Path | None = None
35
+ net_config: dict[str, Any] | None = None
36
36
  marks: Marks = ()
37
37
 
38
38
 
@@ -7,7 +7,7 @@ import ssl
7
7
  import sys
8
8
  from collections.abc import AsyncIterator
9
9
  from pathlib import Path
10
- from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
10
+ from typing import TYPE_CHECKING, Any, ClassVar, cast
11
11
 
12
12
  import aiohttp
13
13
  import pytest
@@ -42,7 +42,7 @@ class TestRpcApi:
42
42
  service: RpcServiceProtocol
43
43
  service_name: str = service_name
44
44
 
45
- async def _state_changed(self, change: str, change_data: Optional[dict[str, Any]] = None) -> list[WsRpcMessage]:
45
+ async def _state_changed(self, change: str, change_data: dict[str, Any] | None = None) -> list[WsRpcMessage]:
46
46
  # just here to satisfy the complete protocol
47
47
  return [] # pragma: no cover
48
48
 
@@ -73,7 +73,7 @@ class Client:
73
73
  async with aiohttp.ClientSession() as session:
74
74
  yield cls(session=session, ssl_context=ssl_context, url=url)
75
75
 
76
- async def request(self, endpoint: str, json: Optional[dict[str, Any]] = None) -> dict[str, Any]:
76
+ async def request(self, endpoint: str, json: dict[str, Any] | None = None) -> dict[str, Any]:
77
77
  if json is None:
78
78
  json = {}
79
79
 
@@ -12,8 +12,9 @@ import dns.rdtypes.IN.AAAA
12
12
  import pytest
13
13
  from chia_rs import BlockRecord
14
14
  from chia_rs.sized_bytes import bytes32
15
- from chia_rs.sized_ints import uint8, uint16, uint32, uint64
15
+ from chia_rs.sized_ints import uint16, uint32, uint64
16
16
 
17
+ from chia._tests.conftest import test_constants_modified
17
18
  from chia._tests.core.node_height import node_height_at_least
18
19
  from chia._tests.util.setup_nodes import FullSystem, OldSimulatorsAndWallets
19
20
  from chia._tests.util.time_out_assert import time_out_assert
@@ -24,7 +25,7 @@ from chia.full_node.full_node import FullNode
24
25
  from chia.full_node.full_node_api import FullNodeAPI
25
26
  from chia.protocols.outbound_message import NodeType
26
27
  from chia.server.server import ChiaServer
27
- from chia.simulator.block_tools import BlockTools, create_block_tools_async, test_constants
28
+ from chia.simulator.block_tools import BlockTools, create_block_tools_async
28
29
  from chia.simulator.full_node_simulator import FullNodeSimulator
29
30
  from chia.simulator.keyring import TempKeyring
30
31
  from chia.simulator.setup_services import setup_full_node
@@ -36,20 +37,6 @@ from chia.wallet.wallet_node import WalletNode
36
37
 
37
38
  chiapos_version = importlib.metadata.version("chiapos")
38
39
 
39
- test_constants_modified = test_constants.replace(
40
- DIFFICULTY_STARTING=uint64(2**8),
41
- DISCRIMINANT_SIZE_BITS=uint16(1024),
42
- SUB_EPOCH_BLOCKS=uint32(140),
43
- WEIGHT_PROOF_THRESHOLD=uint8(2),
44
- WEIGHT_PROOF_RECENT_BLOCKS=uint32(350),
45
- MAX_SUB_SLOT_BLOCKS=uint32(50),
46
- NUM_SPS_SUB_SLOT=uint8(32), # Must be a power of 2
47
- EPOCH_BLOCKS=uint32(280),
48
- SUB_SLOT_ITERS_STARTING=uint64(2**20),
49
- NUMBER_ZERO_BITS_PLOT_FILTER_V1=uint8(5),
50
- NUMBER_ZERO_BITS_PLOT_FILTER_V2=uint8(5),
51
- )
52
-
53
40
 
54
41
  # TODO: Ideally, the db_version should be the (parameterized) db_version
55
42
  # fixture, to test all versions of the database schema. This doesn't work
@@ -58,15 +45,15 @@ test_constants_modified = test_constants.replace(
58
45
  @pytest.fixture(scope="function")
59
46
  async def extra_node(self_hostname) -> AsyncIterator[FullNodeAPI | FullNodeSimulator]:
60
47
  with TempKeyring() as keychain:
61
- b_tools = await create_block_tools_async(constants=test_constants_modified, keychain=keychain)
62
- async with setup_full_node(
63
- test_constants_modified,
64
- "blockchain_test_3.db",
65
- self_hostname,
66
- b_tools,
67
- db_version=2,
68
- ) as service:
69
- yield service._api
48
+ async with create_block_tools_async(constants=test_constants_modified, keychain=keychain) as b_tools:
49
+ async with setup_full_node(
50
+ test_constants_modified,
51
+ "blockchain_test_3.db",
52
+ self_hostname,
53
+ b_tools,
54
+ db_version=2,
55
+ ) as service:
56
+ yield service._api
70
57
 
71
58
 
72
59
  class FakeDNSResolver:
@@ -4,7 +4,9 @@ from pathlib import Path
4
4
  from unittest.mock import patch
5
5
 
6
6
  import pytest
7
- from chia_rs import ConsensusConstants
7
+ from chia_rs import ConsensusConstants, PartialProof
8
+ from chia_rs.sized_bytes import bytes32
9
+ from chia_rs.sized_ints import uint8, uint64
8
10
 
9
11
  from chia.protocols.outbound_message import Message
10
12
  from chia.protocols.solver_protocol import SolverInfo
@@ -16,12 +18,19 @@ from chia.simulator.setup_services import setup_solver
16
18
  @pytest.mark.anyio
17
19
  async def test_solver_api_methods(blockchain_constants: ConsensusConstants, tmp_path: Path) -> None:
18
20
  with TempKeyring(populate=True) as keychain:
19
- bt = await create_block_tools_async(constants=blockchain_constants, keychain=keychain)
20
- async with setup_solver(tmp_path, bt, blockchain_constants) as solver_service:
21
+ async with (
22
+ create_block_tools_async(constants=blockchain_constants, keychain=keychain) as bt,
23
+ setup_solver(tmp_path, bt, blockchain_constants) as solver_service,
24
+ ):
21
25
  solver = solver_service._node
22
26
  solver_api = solver_service._api
23
27
  assert solver_api.ready() is True
24
- test_info = SolverInfo(partial_proof=b"test_partial_proof_42")
28
+ test_info = SolverInfo(
29
+ PartialProof([uint64(256)] * 64),
30
+ plot_id=bytes32.fromhex("abababababababababababababababababababababababababababababababab"),
31
+ strength=uint8(5),
32
+ size=uint8(28),
33
+ )
25
34
  expected_proof = b"test_proof_data_12345"
26
35
  with patch.object(solver, "solve", return_value=expected_proof):
27
36
  api_result = await solver_api.solve(test_info)
chia/_tests/testconfig.py CHANGED
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Literal, Union
3
+ from typing import Literal
4
4
 
5
5
  # Defaults are conservative.
6
- parallel: Union[bool, int, Literal["auto"]] = True
6
+ parallel: bool | int | Literal["auto"] = True
7
7
  checkout_blocks_and_plots = False
8
8
  install_timelord = False
9
9
  # NOTE: do not use until the hangs are fixed