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
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Optional
5
4
 
6
5
  import pytest
7
6
  from chia_rs import G2Element, Program
@@ -36,7 +35,7 @@ def test_back_and_forth_serialization() -> None:
36
35
 
37
36
  @dataclass
38
37
  class MockWalletStateManager:
39
- most_recent_call: Optional[
38
+ most_recent_call: (
40
39
  tuple[
41
40
  list[TransactionRecord],
42
41
  bool,
@@ -45,8 +44,9 @@ class MockWalletStateManager:
45
44
  list[SigningResponse],
46
45
  list[WalletSpendBundle],
47
46
  list[SingletonRecord],
48
- ],
49
- ] = None
47
+ ]
48
+ | None
49
+ ) = None
50
50
 
51
51
  async def add_pending_transactions(
52
52
  self,
@@ -22,22 +22,22 @@ async def test_wallet_blockchain(
22
22
  ) -> None:
23
23
  [full_node_api], [(wallet_node, _)], bt = simulator_and_wallet
24
24
 
25
- await add_blocks_in_batches(default_1000_blocks[:600], full_node_api.full_node)
25
+ await add_blocks_in_batches(default_1000_blocks[:700], full_node_api.full_node)
26
26
  resp = await full_node_api.request_proof_of_weight(
27
27
  full_node_protocol.RequestProofOfWeight(
28
- uint32(default_1000_blocks[499].height + 1), default_1000_blocks[499].header_hash
28
+ uint32(default_1000_blocks[599].height + 1), default_1000_blocks[599].header_hash
29
29
  )
30
30
  )
31
31
  assert resp is not None
32
32
  resp_2 = await full_node_api.request_proof_of_weight(
33
33
  full_node_protocol.RequestProofOfWeight(
34
- uint32(default_1000_blocks[460].height + 1), default_1000_blocks[460].header_hash
34
+ uint32(default_1000_blocks[560].height + 1), default_1000_blocks[560].header_hash
35
35
  )
36
36
  )
37
37
  assert resp_2 is not None
38
38
  resp_3 = await full_node_api.request_proof_of_weight(
39
39
  full_node_protocol.RequestProofOfWeight(
40
- uint32(default_1000_blocks[505].height + 1), default_1000_blocks[505].header_hash
40
+ uint32(default_1000_blocks[605].height + 1), default_1000_blocks[605].header_hash
41
41
  )
42
42
  )
43
43
  assert resp_3 is not None
@@ -59,18 +59,18 @@ async def test_wallet_blockchain(
59
59
  await chain.new_valid_weight_proof(weight_proof, records)
60
60
  peak_block = await chain.get_peak_block()
61
61
  assert peak_block is not None
62
- assert peak_block.height == 499
62
+ assert peak_block.height == 599
63
63
  assert chain.get_latest_timestamp() > 0
64
64
 
65
65
  await chain.new_valid_weight_proof(weight_proof_short, records_short)
66
66
  peak_block = await chain.get_peak_block()
67
67
  assert peak_block is not None
68
- assert peak_block.height == 499
68
+ assert peak_block.height == 599
69
69
 
70
70
  await chain.new_valid_weight_proof(weight_proof_long, records_long)
71
71
  peak_block = await chain.get_peak_block()
72
72
  assert peak_block is not None
73
- assert peak_block.height == 505
73
+ assert peak_block.height == 605
74
74
 
75
75
  header_blocks: list[HeaderBlock] = []
76
76
  for block in default_1000_blocks:
@@ -81,24 +81,24 @@ async def test_wallet_blockchain(
81
81
  print(res, err)
82
82
  assert res == AddBlockResult.DISCONNECTED_BLOCK
83
83
 
84
- res, err = await chain.add_block(header_blocks[400])
84
+ res, err = await chain.add_block(header_blocks[500])
85
85
  print(res, err)
86
86
  assert res == AddBlockResult.ALREADY_HAVE_BLOCK
87
87
 
88
- res, err = await chain.add_block(header_blocks[507])
88
+ res, err = await chain.add_block(header_blocks[607])
89
89
  print(res, err)
90
90
  assert res == AddBlockResult.DISCONNECTED_BLOCK
91
91
 
92
92
  res, err = await chain.add_block(
93
- header_blocks[506].replace(challenge_chain_ip_proof=VDFProof(uint8(2), b"123", True))
93
+ header_blocks[606].replace(challenge_chain_ip_proof=VDFProof(uint8(2), b"123", True))
94
94
  )
95
95
  assert res == AddBlockResult.INVALID_BLOCK
96
96
 
97
97
  peak_block = await chain.get_peak_block()
98
98
  assert peak_block is not None
99
- assert peak_block.height == 505
99
+ assert peak_block.height == 605
100
100
 
101
- for header_block in header_blocks[506:]:
101
+ for header_block in header_blocks[606:]:
102
102
  res, err = await chain.add_block(header_block)
103
103
  assert res == AddBlockResult.NEW_PEAK
104
104
  peak_block = await chain.get_peak_block()
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import random
4
4
  from dataclasses import dataclass, field, replace
5
- from typing import Optional
6
5
 
7
6
  import pytest
8
7
  from chia_rs.sized_bytes import bytes32
@@ -14,7 +13,7 @@ from chia.util.streamable import Streamable, UInt32Range, UInt64Range, Versioned
14
13
  from chia.wallet.puzzles.clawback.metadata import ClawbackMetadata
15
14
  from chia.wallet.util.query_filter import AmountFilter, HashFilter
16
15
  from chia.wallet.util.wallet_types import CoinType, WalletType
17
- from chia.wallet.wallet_coin_record import WalletCoinRecord
16
+ from chia.wallet.wallet_coin_record import WalletCoinRecord, WalletCoinRecordMetadataParsingError
18
17
  from chia.wallet.wallet_coin_store import CoinRecordOrder, GetCoinRecords, GetCoinRecordsResult, WalletCoinStore
19
18
 
20
19
  clawback_metadata = ClawbackMetadata(uint64(0), bytes32(b"1" * 32), bytes32(b"2" * 32))
@@ -134,7 +133,7 @@ class DummyWalletCoinRecords:
134
133
  ],
135
134
  )
136
135
  def test_wallet_coin_record_parsed_metadata_failures(invalid_record: WalletCoinRecord, error: str) -> None:
137
- with pytest.raises(ValueError, match=error):
136
+ with pytest.raises(WalletCoinRecordMetadataParsingError, match=error):
138
137
  invalid_record.parsed_metadata()
139
138
 
140
139
 
@@ -632,7 +631,7 @@ get_coin_records_mixed_tests: list[tuple[GetCoinRecords, int, list[WalletCoinRec
632
631
 
633
632
 
634
633
  async def run_get_coin_records_test(
635
- request: GetCoinRecords, total_count: Optional[int], coin_records: list[WalletCoinRecord]
634
+ request: GetCoinRecords, total_count: int | None, coin_records: list[WalletCoinRecord]
636
635
  ) -> None:
637
636
  async with DBConnection(1) as db_wrapper:
638
637
  store = await WalletCoinStore.create(db_wrapper)
@@ -5,7 +5,7 @@ import sys
5
5
  import time
6
6
  import types
7
7
  from pathlib import Path
8
- from typing import Any, Optional
8
+ from typing import Any
9
9
 
10
10
  import pytest
11
11
  from chia_rs import CoinState, FullBlock, G1Element, PrivateKey
@@ -72,7 +72,7 @@ async def test_get_private_key_default_key(root_path_populated_with_config: Path
72
72
  @pytest.mark.anyio
73
73
  @pytest.mark.parametrize("fingerprint", [None, 1234567890])
74
74
  async def test_get_private_key_missing_key(
75
- root_path_populated_with_config: Path, get_temp_keyring: Keychain, fingerprint: Optional[int]
75
+ root_path_populated_with_config: Path, get_temp_keyring: Keychain, fingerprint: int | None
76
76
  ) -> None:
77
77
  root_path = root_path_populated_with_config
78
78
  keychain = get_temp_keyring # empty keyring
@@ -163,7 +163,7 @@ async def test_get_public_key_default_key(root_path_populated_with_config: Path,
163
163
  @pytest.mark.anyio
164
164
  @pytest.mark.parametrize("fingerprint", [None, 1234567890])
165
165
  async def test_get_public_key_missing_key(
166
- root_path_populated_with_config: Path, get_temp_keyring: Keychain, fingerprint: Optional[int]
166
+ root_path_populated_with_config: Path, get_temp_keyring: Keychain, fingerprint: int | None
167
167
  ) -> None:
168
168
  root_path: Path = root_path_populated_with_config
169
169
  keychain: Keychain = get_temp_keyring # empty keyring
@@ -357,7 +357,7 @@ def test_get_last_used_fingerprint_file_cant_read_win32(
357
357
  m.setattr(WindowsPath, "read_text", patched_pathlib_path_read_text)
358
358
 
359
359
  # Calling get_last_used_fingerprint() should not throw an exception
360
- last_used_fingerprint: Optional[int] = node.get_last_used_fingerprint()
360
+ last_used_fingerprint: int | None = node.get_last_used_fingerprint()
361
361
 
362
362
  # Verify that the file is unreadable
363
363
  assert called_read_text is True
@@ -432,7 +432,7 @@ async def test_get_timestamp_for_height_from_peer(
432
432
  ) -> None:
433
433
  [full_node_api], [(wallet_node, wallet_server)], _ = simulator_and_wallet
434
434
 
435
- async def get_timestamp(height: int) -> Optional[uint64]:
435
+ async def get_timestamp(height: int) -> uint64 | None:
436
436
  return await wallet_node.get_timestamp_for_height_from_peer(uint32(height), full_node_peer)
437
437
 
438
438
  await wallet_server.start_client(PeerInfo(self_hostname, full_node_api.server.get_port()), None)
@@ -492,7 +492,7 @@ async def test_unique_puzzle_hash_subscriptions(simulator_and_wallet: OldSimulat
492
492
  @pytest.mark.anyio
493
493
  @pytest.mark.standard_block_tools
494
494
  async def test_get_balance(
495
- simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_400_blocks: list[FullBlock]
495
+ simulator_and_wallet: OldSimulatorsAndWallets, self_hostname: str, default_1000_blocks: list[FullBlock]
496
496
  ) -> None:
497
497
  [full_node_api], [(wallet_node, wallet_server)], _bt = simulator_and_wallet
498
498
  full_node_server = full_node_api.full_node.server
@@ -500,7 +500,7 @@ async def test_get_balance(
500
500
  def wallet_synced() -> bool:
501
501
  return full_node_server.node_id in wallet_node.synced_peers
502
502
 
503
- async def restart_with_fingerprint(fingerprint: Optional[int]) -> None:
503
+ async def restart_with_fingerprint(fingerprint: int | None) -> None:
504
504
  wallet_node._close()
505
505
  await wallet_node._await_closed(shutting_down=False)
506
506
  await wallet_node._start_with_fingerprint(fingerprint=fingerprint)
@@ -512,7 +512,7 @@ async def test_get_balance(
512
512
  # with that to a KeyError when applying the race cache if there are less than WEIGHT_PROOF_RECENT_BLOCKS
513
513
  # blocks but we still have a peak stored in the DB. So we need to add enough blocks for a weight proof here to
514
514
  # be able to restart the wallet in this test.
515
- await add_blocks_in_batches(default_400_blocks, full_node_api.full_node)
515
+ await add_blocks_in_batches(default_1000_blocks[:600], full_node_api.full_node)
516
516
  # Initially there should be no sync and no balance
517
517
  assert not wallet_synced()
518
518
  assert await wallet_node.get_balance(wallet_id) == Balance()
@@ -611,7 +611,7 @@ async def test_transaction_send_cache(
611
611
  ) -> None:
612
612
  """
613
613
  The purpose of this test is to test that calling _resend_queue on the wallet node does not result in resending a
614
- spend to a peer that has already recieved that spend and is currently processing it. It also tests that once we
614
+ spend to a peer that has already received that spend and is currently processing it. It also tests that once we
615
615
  have heard that the peer is done processing the spend, we _do_ properly resend it.
616
616
  """
617
617
  [full_node_api], [(wallet_node, wallet_server)], _ = simulator_and_wallet
@@ -625,7 +625,7 @@ async def test_transaction_send_cache(
625
625
 
626
626
  async def send_transaction(
627
627
  self: Self, request: wallet_protocol.SendTransaction, *, test: bool = False
628
- ) -> Optional[Message]:
628
+ ) -> Message | None:
629
629
  logged_spends.append(request.transaction.name())
630
630
  return None
631
631
 
@@ -649,7 +649,7 @@ async def test_transaction_send_cache(
649
649
  with pytest.raises(AssertionError):
650
650
  await time_out_assert(5, logged_spends_len, 2)
651
651
 
652
- # Tell the wallet that we recieved the spend (but failed to process it so it should send again)
652
+ # Tell the wallet that we received the spend (but failed to process it so it should send again)
653
653
  msg = make_msg(
654
654
  ProtocolMessageTypes.transaction_ack,
655
655
  wallet_protocol.TransactionAck(
@@ -688,7 +688,7 @@ async def test_wallet_node_bad_coin_state_ignore(
688
688
 
689
689
  async def register_for_coin_updates(
690
690
  self: Self, request: wallet_protocol.RegisterForCoinUpdates, *, test: bool = False
691
- ) -> Optional[Message]:
691
+ ) -> Message | None:
692
692
  return make_msg(
693
693
  ProtocolMessageTypes.respond_to_coin_updates,
694
694
  wallet_protocol.RespondToCoinUpdates(
@@ -721,7 +721,7 @@ async def test_start_with_multiple_key_types(
721
721
  ) -> None:
722
722
  [_full_node_api], [(wallet_node, _wallet_server)], _bt = simulator_and_wallet
723
723
 
724
- async def restart_with_fingerprint(fingerprint: Optional[int]) -> None:
724
+ async def restart_with_fingerprint(fingerprint: int | None) -> None:
725
725
  wallet_node._close()
726
726
  await wallet_node._await_closed(shutting_down=False)
727
727
  await wallet_node._start_with_fingerprint(fingerprint=fingerprint)
@@ -752,7 +752,7 @@ async def test_start_with_multiple_keys(
752
752
  ) -> None:
753
753
  [_full_node_api], [(wallet_node, _wallet_server)], _bt = simulator_and_wallet
754
754
 
755
- async def restart_with_fingerprint(fingerprint: Optional[int]) -> None:
755
+ async def restart_with_fingerprint(fingerprint: int | None) -> None:
756
756
  wallet_node._close()
757
757
  await wallet_node._await_closed(shutting_down=False)
758
758
  await wallet_node._start_with_fingerprint(fingerprint=fingerprint)
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import pytest
4
4
  from chia_rs import BlockRecord
5
+ from chia_rs.sized_bytes import bytes32
5
6
 
6
7
  from chia._tests.environments.wallet import (
7
8
  BalanceCheckingError,
@@ -145,7 +146,7 @@ async def test_balance_checking(
145
146
  )
146
147
  ]
147
148
  )
148
- await CATWallet.get_or_create_wallet_for_cat(env_0.wallet_state_manager, env_0.xch_wallet, "00" * 32)
149
+ await CATWallet.get_or_create_wallet_for_cat(env_0.wallet_state_manager, env_0.xch_wallet, bytes32.zeros)
149
150
  with pytest.raises(KeyError, match="No wallet state for wallet id 2"):
150
151
  await env_0.check_balances()
151
152
 
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from collections.abc import Collection
4
- from typing import Optional
5
4
 
6
5
  import pytest
7
6
  from chia_rs import Coin, CoinState
@@ -32,7 +31,7 @@ def assert_race_cache(cache: PeerRequestCache, expected_entries: dict[int, set[C
32
31
  cache.get_race_cache(i)
33
32
 
34
33
 
35
- def dummy_coin_state(*, created_height: Optional[int], spent_height: Optional[int]) -> CoinState:
34
+ def dummy_coin_state(*, created_height: int | None, spent_height: int | None) -> CoinState:
36
35
  return CoinState(
37
36
  Coin(bytes(b"0" * 32), bytes(b"0" * 32), uint64(0)),
38
37
  uint32.construct_optional(spent_height),
@@ -40,7 +39,7 @@ def dummy_coin_state(*, created_height: Optional[int], spent_height: Optional[in
40
39
  )
41
40
 
42
41
 
43
- def heights(coin_states: Collection[CoinState]) -> list[tuple[Optional[int], Optional[int]]]:
42
+ def heights(coin_states: Collection[CoinState]) -> list[tuple[int | None, int | None]]:
44
43
  return [(coin_state.created_height, coin_state.spent_height) for coin_state in coin_states]
45
44
 
46
45
 
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  from chia_rs.sized_bytes import bytes32
6
4
  from chia_rs.sized_ints import uint64
7
5
 
@@ -22,18 +20,18 @@ from chia.wallet.vc_wallet.cr_cat_drivers import construct_cr_layer
22
20
 
23
21
  def test_cat_outer_puzzle() -> None:
24
22
  authorized_providers: list[bytes32] = [bytes32.zeros, bytes32.zeros]
25
- proofs_checker: Program = Program.to(None)
23
+ proofs_checker: Program = Program.NIL
26
24
  ACS: Program = Program.to(1)
27
25
  cr_puzzle: Program = construct_cr_layer(authorized_providers, proofs_checker, ACS)
28
26
  double_cr_puzzle: Program = construct_cr_layer(authorized_providers, proofs_checker, cr_puzzle)
29
27
  uncurried_cr_puzzle = uncurry_puzzle(double_cr_puzzle)
30
- cr_driver: Optional[PuzzleInfo] = match_puzzle(uncurried_cr_puzzle)
28
+ cr_driver: PuzzleInfo | None = match_puzzle(uncurried_cr_puzzle)
31
29
 
32
30
  assert cr_driver is not None
33
31
  assert cr_driver.type() == "credential restricted"
34
32
  assert cr_driver["authorized_providers"] == authorized_providers
35
33
  assert cr_driver["proofs_checker"] == proofs_checker
36
- inside_cr_driver: Optional[PuzzleInfo] = cr_driver.also()
34
+ inside_cr_driver: PuzzleInfo | None = cr_driver.also()
37
35
  assert inside_cr_driver is not None
38
36
  assert inside_cr_driver.type() == "credential restricted"
39
37
  assert inside_cr_driver["authorized_providers"] == authorized_providers
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import itertools
4
- from typing import Optional
5
4
 
6
5
  import pytest
7
6
  from chia_rs import CoinSpend, G2Element
@@ -105,7 +104,7 @@ async def test_covenant_layer(cost_logger: CostLogger) -> None:
105
104
  ].coin
106
105
 
107
106
  # With the honest coin, attempt to spend the non-eve case too soon
108
- result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
107
+ result: tuple[MempoolInclusionStatus, Err | None] = await client.push_tx(
109
108
  WalletSpendBundle(
110
109
  [
111
110
  make_spend(
@@ -117,7 +116,7 @@ async def test_covenant_layer(cost_logger: CostLogger) -> None:
117
116
  inner_puzzle_hash=ACS_PH,
118
117
  amount=uint64(acs_coin.amount),
119
118
  ),
120
- Program.to(None),
119
+ Program.NIL,
121
120
  Program.to([[51, covenant_puzzle_hash, acs_coin.amount]]),
122
121
  ),
123
122
  ),
@@ -139,7 +138,7 @@ async def test_covenant_layer(cost_logger: CostLogger) -> None:
139
138
  covenant_puzzle,
140
139
  solve_covenant_layer(
141
140
  LineageProof(parent_name=parent.parent_coin_info, amount=uint64(parent.amount)),
142
- Program.to(None),
141
+ Program.NIL,
143
142
  Program.to([[51, covenant_puzzle_hash, cov.amount]]),
144
143
  ),
145
144
  ),
@@ -173,7 +172,7 @@ async def test_covenant_layer(cost_logger: CostLogger) -> None:
173
172
  inner_puzzle_hash=ACS_PH,
174
173
  amount=uint64(acs_cov.amount),
175
174
  ),
176
- Program.to(None),
175
+ Program.NIL,
177
176
  Program.to([[51, covenant_puzzle_hash, new_acs_cov.amount]]),
178
177
  ),
179
178
  ),
@@ -213,7 +212,7 @@ async def test_did_tp(cost_logger: CostLogger) -> None:
213
212
  bad_data: bytes32 = bytes32.zeros
214
213
 
215
214
  # Try to update metadata and tp without any announcement
216
- result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
215
+ result: tuple[MempoolInclusionStatus, Err | None] = await client.push_tx(
217
216
  WalletSpendBundle(
218
217
  [
219
218
  make_spend(
@@ -327,7 +326,7 @@ async def test_revocation_layer(cost_logger: CostLogger) -> None:
327
326
  )[0].coin
328
327
 
329
328
  # Reveal the wrong puzzle
330
- result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
329
+ result: tuple[MempoolInclusionStatus, Err | None] = await client.push_tx(
331
330
  WalletSpendBundle(
332
331
  [
333
332
  make_spend(
@@ -335,7 +334,7 @@ async def test_revocation_layer(cost_logger: CostLogger) -> None:
335
334
  p2_either_puzzle,
336
335
  solve_revocation_layer(
337
336
  ACS,
338
- Program.to(None),
337
+ Program.NIL,
339
338
  hidden=True,
340
339
  ),
341
340
  )
@@ -415,7 +414,7 @@ async def test_proofs_checker(cost_logger: CostLogger, num_proofs: int) -> None:
415
414
 
416
415
  block_height: uint32 = sim.block_height
417
416
  for i, proof_list in enumerate(itertools.permutations(flags, num_proofs)):
418
- result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
417
+ result: tuple[MempoolInclusionStatus, Err | None] = await client.push_tx(
419
418
  cost_logger.add_cost(
420
419
  f"Proofs Checker only - num_proofs: {num_proofs} - permutation: {i}",
421
420
  WalletSpendBundle(
@@ -506,7 +505,7 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
506
505
  ACS_PH,
507
506
  [bytes32.zeros],
508
507
  )
509
- result: tuple[MempoolInclusionStatus, Optional[Err]] = await client.push_tx(
508
+ result: tuple[MempoolInclusionStatus, Err | None] = await client.push_tx(
510
509
  cost_logger.add_cost(
511
510
  "Launch VC",
512
511
  WalletSpendBundle(
@@ -616,16 +615,16 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
616
615
  dpuz_1, launch_crcat_spend_1, cr_1 = CRCAT.launch(
617
616
  cr_coin_1,
618
617
  CreateCoin(ACS_PH, uint64(cr_coin_1.amount)),
619
- Program.to(None),
620
- Program.to(None),
618
+ Program.NIL,
619
+ Program.NIL,
621
620
  AUTHORIZED_PROVIDERS,
622
621
  proofs_checker.as_program(),
623
622
  )
624
623
  dpuz_2, launch_crcat_spend_2, cr_2 = CRCAT.launch(
625
624
  cr_coin_2,
626
625
  CreateCoin(ACS_PH, uint64(cr_coin_2.amount)),
627
- Program.to(None),
628
- Program.to(None),
626
+ Program.NIL,
627
+ Program.NIL,
629
628
  AUTHORIZED_PROVIDERS,
630
629
  proofs_checker.as_program(),
631
630
  )
@@ -700,7 +699,7 @@ async def test_vc_lifecycle(test_syncing: bool, cost_logger: CostLogger) -> None
700
699
  ),
701
700
  ],
702
701
  NEW_PROOFS if error != "use_malicious_cats" else MALICIOUS_PROOFS,
703
- Program.to(None),
702
+ Program.NIL,
704
703
  launcher_id,
705
704
  vc.launcher_id,
706
705
  vc.wrap_inner_with_backdoor().get_tree_hash(),
@@ -1,14 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
- from collections.abc import Awaitable
5
- from typing import Any, Callable, Optional
4
+ from collections.abc import Awaitable, Callable
5
+ from typing import Any, Literal
6
6
 
7
7
  import pytest
8
8
  from chia_rs import G2Element
9
9
  from chia_rs.sized_bytes import bytes32
10
10
  from chia_rs.sized_ints import uint8, uint16, uint32, uint64
11
- from typing_extensions import Literal
12
11
 
13
12
  from chia._tests.environments.wallet import WalletEnvironment, WalletStateTransition, WalletTestFramework
14
13
  from chia._tests.util.time_out_assert import time_out_assert_not_none
@@ -31,7 +30,10 @@ from chia.wallet.vc_wallet.vc_store import VCProofs, VCRecord
31
30
  from chia.wallet.wallet import Wallet
32
31
  from chia.wallet.wallet_node import WalletNode
33
32
  from chia.wallet.wallet_request_types import (
33
+ Addition,
34
34
  CATSpend,
35
+ CRCATApprovePending,
36
+ CreateSignedTransaction,
35
37
  GetTransactions,
36
38
  GetWallets,
37
39
  VCAddProofs,
@@ -55,7 +57,7 @@ async def mint_cr_cat(
55
57
  full_node_api: FullNodeSimulator,
56
58
  tx_config: TXConfig,
57
59
  authorized_providers: list[bytes32] = [],
58
- tail: Program = Program.to(None),
60
+ tail: Program = Program.NIL,
59
61
  proofs_checker: ProofsChecker = ProofsChecker(["foo", "bar"]),
60
62
  ) -> None:
61
63
  async with wallet_0.wallet_state_manager.new_action_scope(tx_config, push=True) as action_scope:
@@ -70,14 +72,16 @@ async def mint_cr_cat(
70
72
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_0, timeout=20)
71
73
  tx = (
72
74
  await client_0.create_signed_transactions(
73
- [
74
- {
75
- "puzzle_hash": cat_puzzle.get_tree_hash(),
76
- "amount": CAT_AMOUNT_0,
77
- }
78
- ],
75
+ CreateSignedTransaction(
76
+ wallet_id=uint32(1),
77
+ additions=[
78
+ Addition(
79
+ puzzle_hash=cat_puzzle.get_tree_hash(),
80
+ amount=CAT_AMOUNT_0,
81
+ )
82
+ ],
83
+ ),
79
84
  tx_config,
80
- wallet_id=1,
81
85
  )
82
86
  ).signed_tx
83
87
  spend_bundle = tx.spend_bundle
@@ -165,7 +169,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
165
169
  }
166
170
 
167
171
  # Generate DID as an "authorized provider"
168
- async with wallet_0.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
172
+ async with wallet_0.wallet_state_manager.new_action_scope(wallet_environments.tx_config, push=True) as action_scope:
169
173
  did_id: bytes32 = bytes32.from_hexstr(
170
174
  (
171
175
  await DIDWallet.create_new_did_wallet(
@@ -173,9 +177,10 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
173
177
  )
174
178
  ).get_my_DID()
175
179
  )
180
+ await full_node_api.wait_for_wallet_synced(wallet_node_0)
176
181
 
177
182
  # Mint a VC
178
- async with wallet_0.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
183
+ async with wallet_0.wallet_state_manager.new_action_scope(wallet_environments.tx_config, push=True) as action_scope:
179
184
  ph = await action_scope.get_puzzle_hash(wallet_0.wallet_state_manager)
180
185
  vc_record = (
181
186
  await client_0.vc_mint(
@@ -235,7 +240,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
235
240
  WalletStateTransition(),
236
241
  ]
237
242
  )
238
- new_vc_record: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
243
+ new_vc_record: VCRecord | None = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
239
244
  assert new_vc_record is not None
240
245
 
241
246
  # Spend VC
@@ -291,7 +296,7 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
291
296
  WalletStateTransition(),
292
297
  ]
293
298
  )
294
- vc_record_updated: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
299
+ vc_record_updated: VCRecord | None = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
295
300
  assert vc_record_updated is not None
296
301
  assert vc_record_updated.vc.proof_hash == proof_root
297
302
 
@@ -463,8 +468,8 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
463
468
  await client_1.get_transactions(
464
469
  GetTransactions(
465
470
  uint32(env_1.dealias_wallet_id("crcat")),
466
- uint16(0),
467
- uint16(1),
471
+ uint32(0),
472
+ uint32(1),
468
473
  reverse=True,
469
474
  type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CRCAT_PENDING]),
470
475
  )
@@ -505,10 +510,10 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
505
510
 
506
511
  # Claim the pending approval to our wallet
507
512
  await client_1.crcat_approve_pending(
508
- env_1.dealias_wallet_id("crcat"),
509
- uint64(90),
513
+ CRCATApprovePending(
514
+ wallet_id=env_1.dealias_wallet_id("crcat"), min_amount_to_claim=uint64(90), fee=uint64(90), push=True
515
+ ),
510
516
  wallet_environments.tx_config,
511
- fee=uint64(90),
512
517
  )
513
518
  await wallet_environments.process_pending_states(
514
519
  [
@@ -748,7 +753,7 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
748
753
  )
749
754
  ]
750
755
  )
751
- new_vc_record: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
756
+ new_vc_record: VCRecord | None = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
752
757
  assert new_vc_record is not None
753
758
 
754
759
  # Test a negative case real quick (mostly unrelated)
@@ -804,7 +809,7 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
804
809
  )
805
810
  ]
806
811
  )
807
- vc_record_revoked: Optional[VCRecord] = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
812
+ vc_record_revoked: VCRecord | None = (await client_0.vc_get(VCGet(vc_record.vc.launcher_id))).vc_record
808
813
  assert vc_record_revoked is None
809
814
  assert (
810
815
  len(await (await wallet_node_0.wallet_state_manager.get_or_create_vc_wallet()).store.get_unconfirmed_vcs()) == 0
@@ -849,7 +854,7 @@ async def test_cat_wallet_conversion(
849
854
 
850
855
  # Key point of test: create a normal CAT wallet first, and see if it gets converted to CR-CAT wallet
851
856
  await CATWallet.get_or_create_wallet_for_cat(
852
- wallet_node_0.wallet_state_manager, wallet_0, Program.to(None).get_tree_hash().hex()
857
+ wallet_node_0.wallet_state_manager, wallet_0, Program.NIL.get_tree_hash()
853
858
  )
854
859
 
855
860
  did_id = bytes32.zeros
@@ -857,7 +862,7 @@ async def test_cat_wallet_conversion(
857
862
  await full_node_api.farm_blocks_to_wallet(count=num_blocks, wallet=wallet_0)
858
863
  await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_0, timeout=20)
859
864
 
860
- async def check_length(length: int, func: Callable[..., Awaitable[Any]], *args: Any) -> Optional[Literal[True]]:
865
+ async def check_length(length: int, func: Callable[..., Awaitable[Any]], *args: Any) -> Literal[True] | None:
861
866
  if len(await func(*args)) == length:
862
867
  return True
863
868
  return None # pragma: no cover