chia-blockchain 2.5.7rc3__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 +12 -7
  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 +16 -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.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
  504. {chia_blockchain-2.5.7rc3.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.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
  527. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
  528. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
@@ -4,7 +4,6 @@ import dataclasses
4
4
  import logging
5
5
  import sqlite3
6
6
  from contextlib import AbstractAsyncContextManager
7
- from typing import Optional
8
7
 
9
8
  import aiosqlite
10
9
  import typing_extensions
@@ -134,7 +133,7 @@ class BlockStore:
134
133
  async def add_full_block(self, header_hash: bytes32, block: FullBlock, block_record: BlockRecord) -> None:
135
134
  self.block_cache.put(header_hash, block)
136
135
 
137
- ses: Optional[bytes] = (
136
+ ses: bytes | None = (
138
137
  None if block_record.sub_epoch_summary_included is None else bytes(block_record.sub_epoch_summary_included)
139
138
  )
140
139
 
@@ -174,8 +173,8 @@ class BlockStore:
174
173
  async def get_sub_epoch_challenge_segments(
175
174
  self,
176
175
  ses_block_hash: bytes32,
177
- ) -> Optional[list[SubEpochChallengeSegment]]:
178
- cached: Optional[list[SubEpochChallengeSegment]] = self.ses_challenge_cache.get(ses_block_hash)
176
+ ) -> list[SubEpochChallengeSegment] | None:
177
+ cached: list[SubEpochChallengeSegment] | None = self.ses_challenge_cache.get(ses_block_hash)
179
178
  if cached is not None:
180
179
  return cached
181
180
 
@@ -195,7 +194,7 @@ class BlockStore:
195
194
  def transaction(self) -> AbstractAsyncContextManager[aiosqlite.Connection]:
196
195
  return self.db_wrapper.writer()
197
196
 
198
- def get_block_from_cache(self, header_hash: bytes32) -> Optional[FullBlock]:
197
+ def get_block_from_cache(self, header_hash: bytes32) -> FullBlock | None:
199
198
  return self.block_cache.get(header_hash)
200
199
 
201
200
  def rollback_cache_block(self, header_hash: bytes32) -> None:
@@ -206,8 +205,8 @@ class BlockStore:
206
205
  # block to the cache yet
207
206
  pass
208
207
 
209
- async def get_full_block(self, header_hash: bytes32) -> Optional[FullBlock]:
210
- cached: Optional[FullBlock] = self.block_cache.get(header_hash)
208
+ async def get_full_block(self, header_hash: bytes32) -> FullBlock | None:
209
+ cached: FullBlock | None = self.block_cache.get(header_hash)
211
210
  if cached is not None:
212
211
  return cached
213
212
  async with self.db_wrapper.reader_no_transaction() as conn:
@@ -219,7 +218,7 @@ class BlockStore:
219
218
  return block
220
219
  return None
221
220
 
222
- async def get_full_block_bytes(self, header_hash: bytes32) -> Optional[bytes]:
221
+ async def get_full_block_bytes(self, header_hash: bytes32) -> bytes | None:
223
222
  cached = self.block_cache.get(header_hash)
224
223
  if cached is not None:
225
224
  return bytes(cached)
@@ -247,7 +246,7 @@ class BlockStore:
247
246
  ret.append(decompress(row[0]))
248
247
  return ret
249
248
 
250
- async def get_block_info(self, header_hash: bytes32) -> Optional[GeneratorBlockInfo]:
249
+ async def get_block_info(self, header_hash: bytes32) -> GeneratorBlockInfo | None:
251
250
  cached = self.block_cache.get(header_hash)
252
251
  if cached is not None:
253
252
  return GeneratorBlockInfo(
@@ -273,7 +272,7 @@ class BlockStore:
273
272
  b.foliage.prev_block_hash, b.transactions_generator, b.transactions_generator_ref_list
274
273
  )
275
274
 
276
- async def get_generator(self, header_hash: bytes32) -> Optional[bytes]:
275
+ async def get_generator(self, header_hash: bytes32) -> bytes | None:
277
276
  cached = self.block_cache.get(header_hash)
278
277
  if cached is not None:
279
278
  return None if cached.transactions_generator is None else bytes(cached.transactions_generator)
@@ -429,7 +428,7 @@ class BlockStore:
429
428
  ret.append(all_blocks[hh])
430
429
  return ret
431
430
 
432
- async def get_block_record(self, header_hash: bytes32) -> Optional[BlockRecord]:
431
+ async def get_block_record(self, header_hash: bytes32) -> BlockRecord | None:
433
432
  async with self.db_wrapper.reader_no_transaction() as conn:
434
433
  async with conn.execute(
435
434
  "SELECT block_record FROM full_blocks WHERE header_hash=?",
@@ -489,7 +488,7 @@ class BlockStore:
489
488
  raise ValueError(f"Some blocks in range {start}-{stop} were not found.")
490
489
  return [decompress_blob(row[0]) for row in rows]
491
490
 
492
- async def get_peak(self) -> Optional[tuple[bytes32, uint32]]:
491
+ async def get_peak(self) -> tuple[bytes32, uint32] | None:
493
492
  async with self.db_wrapper.reader_no_transaction() as conn:
494
493
  async with conn.execute("SELECT hash FROM current_peak WHERE key = 0") as cursor:
495
494
  peak_row = await cursor.fetchone()
@@ -502,9 +501,7 @@ class BlockStore:
502
501
  return None
503
502
  return bytes32(peak_row[0]), uint32(peak_height[0])
504
503
 
505
- async def get_block_records_close_to_peak(
506
- self, blocks_n: int
507
- ) -> tuple[dict[bytes32, BlockRecord], Optional[bytes32]]:
504
+ async def get_block_records_close_to_peak(self, blocks_n: int) -> tuple[dict[bytes32, BlockRecord], bytes32 | None]:
508
505
  """
509
506
  Returns a dictionary with all blocks that have height >= peak height - blocks_n, as well as the
510
507
  peak header hash. Only blocks that are part of the main chain/current peak are included.
@@ -534,7 +531,7 @@ class BlockStore:
534
531
  async with self.db_wrapper.writer_maybe_transaction() as conn:
535
532
  await conn.execute("INSERT OR REPLACE INTO current_peak VALUES(?, ?)", (0, header_hash))
536
533
 
537
- async def is_fully_compactified(self, header_hash: bytes32) -> Optional[bool]:
534
+ async def is_fully_compactified(self, header_hash: bytes32) -> bool | None:
538
535
  async with self.db_wrapper.writer_maybe_transaction() as conn:
539
536
  async with conn.execute(
540
537
  "SELECT is_fully_compactified from full_blocks WHERE header_hash=?", (header_hash,)
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from collections.abc import Awaitable
4
- from typing import Callable
3
+ from collections.abc import Awaitable, Callable
5
4
 
6
5
  from chia_rs.sized_ints import uint32
7
6
 
@@ -5,16 +5,15 @@ import logging
5
5
  import sqlite3
6
6
  import time
7
7
  from collections.abc import Collection
8
- from typing import Any, ClassVar, Optional
8
+ from typing import Any, ClassVar
9
9
 
10
10
  import typing_extensions
11
11
  from aiosqlite import Cursor
12
- from chia_rs import CoinState
12
+ from chia_rs import CoinRecord, CoinState
13
13
  from chia_rs.sized_bytes import bytes32
14
14
  from chia_rs.sized_ints import uint32, uint64
15
15
 
16
16
  from chia.types.blockchain_format.coin import Coin
17
- from chia.types.coin_record import CoinRecord
18
17
  from chia.types.mempool_item import UnspentLineageInfo
19
18
  from chia.util.batches import to_batches
20
19
  from chia.util.db_wrapper import SQLITE_MAX_VARIABLE_NUMBER, DBWrapper2
@@ -179,7 +178,7 @@ class CoinStore:
179
178
  log.log(level, message)
180
179
 
181
180
  # Checks DB and DiffStores for CoinRecord with coin_name and returns it
182
- async def get_coin_record(self, coin_name: bytes32) -> Optional[CoinRecord]:
181
+ async def get_coin_record(self, coin_name: bytes32) -> CoinRecord | None:
183
182
  async with self.db_wrapper.reader_no_transaction() as conn:
184
183
  async with conn.execute(
185
184
  "SELECT confirmed_index, spent_index, coinbase, puzzle_hash, "
@@ -190,7 +189,7 @@ class CoinStore:
190
189
  if row is not None:
191
190
  coin = self.row_to_coin(row)
192
191
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
193
- return CoinRecord(coin, row[0], spent_index, row[2], row[6])
192
+ return CoinRecord(coin, row[0], spent_index, row[2] != 0, row[6])
194
193
  return None
195
194
 
196
195
  async def get_coin_records(self, names: Collection[bytes32]) -> list[CoinRecord]:
@@ -216,7 +215,7 @@ class CoinStore:
216
215
  for row in await cursor.fetchall():
217
216
  coin = self.row_to_coin(row)
218
217
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
219
- record = CoinRecord(coin, row[0], spent_index, row[2], row[6])
218
+ record = CoinRecord(coin, row[0], spent_index, row[2] != 0, row[6])
220
219
  coins.append(record)
221
220
 
222
221
  return coins
@@ -233,7 +232,7 @@ class CoinStore:
233
232
  for row in rows:
234
233
  coin = self.row_to_coin(row)
235
234
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
236
- coins.append(CoinRecord(coin, row[0], spent_index, row[2], row[6]))
235
+ coins.append(CoinRecord(coin, row[0], spent_index, row[2] != 0, row[6]))
237
236
  return coins
238
237
 
239
238
  async def get_coins_removed_at_height(self, height: uint32) -> list[CoinRecord]:
@@ -250,7 +249,7 @@ class CoinStore:
250
249
  for row in await cursor.fetchall():
251
250
  if row[1] > 0:
252
251
  coin = self.row_to_coin(row)
253
- coin_record = CoinRecord(coin, row[0], row[1], row[2], row[6])
252
+ coin_record = CoinRecord(coin, row[0], row[1], row[2] != 0, row[6])
254
253
  coins.append(coin_record)
255
254
  return coins
256
255
 
@@ -275,7 +274,7 @@ class CoinStore:
275
274
  for row in await cursor.fetchall():
276
275
  coin = self.row_to_coin(row)
277
276
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
278
- coins.add(CoinRecord(coin, row[0], spent_index, row[2], row[6]))
277
+ coins.add(CoinRecord(coin, row[0], spent_index, row[2] != 0, row[6]))
279
278
  return list(coins)
280
279
 
281
280
  async def get_coin_records_by_puzzle_hashes(
@@ -304,7 +303,7 @@ class CoinStore:
304
303
  for row in await cursor.fetchall():
305
304
  coin = self.row_to_coin(row)
306
305
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
307
- coins.add(CoinRecord(coin, row[0], spent_index, row[2], row[6]))
306
+ coins.add(CoinRecord(coin, row[0], spent_index, row[2] != 0, row[6]))
308
307
  return list(coins)
309
308
 
310
309
  async def get_coin_records_by_names(
@@ -331,7 +330,7 @@ class CoinStore:
331
330
  for row in await cursor.fetchall():
332
331
  coin = self.row_to_coin(row)
333
332
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
334
- coins.add(CoinRecord(coin, row[0], spent_index, row[2], row[6]))
333
+ coins.add(CoinRecord(coin, row[0], spent_index, row[2] != 0, row[6]))
335
334
 
336
335
  return list(coins)
337
336
 
@@ -402,7 +401,7 @@ class CoinStore:
402
401
  async for row in cursor:
403
402
  coin = self.row_to_coin(row)
404
403
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
405
- coins.add(CoinRecord(coin, row[0], spent_index, row[2], row[6]))
404
+ coins.add(CoinRecord(coin, row[0], spent_index, row[2] != 0, row[6]))
406
405
 
407
406
  return list(coins)
408
407
 
@@ -454,7 +453,7 @@ class CoinStore:
454
453
  include_hinted: bool = True,
455
454
  min_amount: uint64 = uint64(0),
456
455
  max_items: int = 50000,
457
- ) -> tuple[list[CoinState], Optional[uint32]]:
456
+ ) -> tuple[list[CoinState], uint32 | None]:
458
457
  """
459
458
  Returns the coin states, as well as the next block height (or `None` if finished).
460
459
  You cannot exceed `CoinStore.MAX_PUZZLE_HASH_BATCH_SIZE` puzzle hashes in the query.
@@ -576,7 +575,7 @@ class CoinStore:
576
575
  for row in rows:
577
576
  coin = self.row_to_coin(row)
578
577
  spent_index = uint32(0) if row[1] <= 0 else uint32(row[1])
579
- record = CoinRecord(coin, uint32(0), spent_index, row[2], uint64(0))
578
+ record = CoinRecord(coin, uint32(0), spent_index, row[2] != 0, uint64(0))
580
579
  coin_name = bytes32(row[7])
581
580
  coin_changes[coin_name] = record
582
581
 
@@ -591,7 +590,7 @@ class CoinStore:
591
590
  )
592
591
  for row in rows:
593
592
  coin = self.row_to_coin(row)
594
- record = CoinRecord(coin, row[0], uint32(0), row[2], row[6])
593
+ record = CoinRecord(coin, row[0], uint32(0), row[2] != 0, row[6])
595
594
  coin_name = bytes32(row[7])
596
595
  if coin_name not in coin_changes:
597
596
  coin_changes[coin_name] = record
@@ -649,7 +648,7 @@ class CoinStore:
649
648
  )
650
649
 
651
650
  # Lookup the most recent unspent lineage that matches a puzzle hash
652
- async def get_unspent_lineage_info_for_puzzle_hash(self, puzzle_hash: bytes32) -> Optional[UnspentLineageInfo]:
651
+ async def get_unspent_lineage_info_for_puzzle_hash(self, puzzle_hash: bytes32) -> UnspentLineageInfo | None:
653
652
  async with self.db_wrapper.reader_no_transaction() as conn:
654
653
  async with conn.execute(
655
654
  "SELECT unspent.coin_name, "
@@ -172,7 +172,7 @@ class SingletonFastForward:
172
172
  fast_forward_spends: dict[bytes32, UnspentLineageInfo] = dataclasses.field(default_factory=dict)
173
173
 
174
174
  def process_fast_forward_spends(
175
- self, *, mempool_item: InternalMempoolItem, height: uint32, constants: ConsensusConstants
175
+ self, *, mempool_item: InternalMempoolItem, prev_tx_height: uint32, constants: ConsensusConstants
176
176
  ) -> dict[bytes32, BundleCoinSpend]:
177
177
  """
178
178
  Provides the caller with a `bundle_coin_spends` map that has a proper
@@ -182,7 +182,7 @@ class SingletonFastForward:
182
182
  Args:
183
183
  mempool_item: The internal mempool item to process
184
184
  constants: needed in order to refresh the mempool item if needed
185
- height: needed in order to refresh the mempool item if needed
185
+ prev_tx_height: needed in order to refresh the mempool item if needed
186
186
 
187
187
  Returns:
188
188
  The resulting `bundle_coin_spends` map of coin IDs to coin spends
@@ -273,7 +273,7 @@ class SingletonFastForward:
273
273
  try:
274
274
  # Run the new spend bundle to make sure it remains valid. What we
275
275
  # care about here is whether this call throws or not.
276
- get_conditions_from_spendbundle(new_sb, mempool_item.conds.cost, constants, height)
276
+ get_conditions_from_spendbundle(new_sb, mempool_item.conds.cost, constants, prev_tx_height)
277
277
  # get_conditions_from_spendbundle raises a ValueError with an error code
278
278
  except ValueError as e:
279
279
  # Convert that to a ValidationError
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
- from typing import Optional
5
4
 
6
5
  import typing_extensions
7
6
 
@@ -15,9 +14,9 @@ class FeeStore:
15
14
  This object stores Fee Stats
16
15
  """
17
16
 
18
- _backup: Optional[FeeTrackerBackup] = None
17
+ _backup: FeeTrackerBackup | None = None
19
18
 
20
- def get_stored_fee_data(self) -> Optional[FeeTrackerBackup]:
19
+ def get_stored_fee_data(self) -> FeeTrackerBackup | None:
21
20
  return self._backup
22
21
 
23
22
  def store_fee_data(self, fee_backup: FeeTrackerBackup) -> None:
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import logging
4
4
  from bisect import bisect_left
5
5
  from dataclasses import dataclass
6
- from typing import Optional
7
6
 
8
7
  from chia_rs.sized_ints import uint8, uint32, uint64
9
8
 
@@ -454,7 +453,7 @@ class FeeTracker:
454
453
  self.fee_store,
455
454
  "long",
456
455
  )
457
- fee_backup: Optional[FeeTrackerBackup] = self.fee_store.get_stored_fee_data()
456
+ fee_backup: FeeTrackerBackup | None = self.fee_store.get_stored_fee_data()
458
457
 
459
458
  if fee_backup is not None:
460
459
  self.first_recorded_height = fee_backup.first_recorded_height
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from collections.abc import Callable
3
4
  from dataclasses import dataclass
4
- from typing import Callable, Optional
5
5
 
6
6
  from chia_rs import G1Element, G2Element, TransactionsInfo, serialized_length
7
7
  from chia_rs.sized_bytes import bytes32
@@ -203,7 +203,7 @@ def skip_transactions_info(buf: memoryview) -> memoryview:
203
203
  return skip_list(buf, skip_coin)
204
204
 
205
205
 
206
- def generator_from_block(buf: memoryview) -> Optional[bytes]:
206
+ def generator_from_block(buf: memoryview) -> bytes | None:
207
207
  buf = skip_list(buf, skip_end_of_sub_slot_bundle) # finished_sub_slots
208
208
  buf = skip_reward_chain_block(buf) # reward_chain_block
209
209
  buf = skip_optional(buf, skip_vdf_proof) # challenge_chain_sp_proof
@@ -228,7 +228,7 @@ def generator_from_block(buf: memoryview) -> Optional[bytes]:
228
228
  @dataclass(frozen=True)
229
229
  class GeneratorBlockInfo:
230
230
  prev_header_hash: bytes32
231
- transactions_generator: Optional[SerializedProgram]
231
+ transactions_generator: SerializedProgram | None
232
232
  transactions_generator_ref_list: list[uint32]
233
233
 
234
234
 
@@ -284,7 +284,7 @@ def header_block_from_block(
284
284
 
285
285
  buf2 = skip_optional(buf2, skip_foliage_transaction_block) # foliage_transaction_block
286
286
 
287
- transactions_info: Optional[TransactionsInfo] = None
287
+ transactions_info: TransactionsInfo | None = None
288
288
  # we make it optional even if it's not by default
289
289
  # if request_filter is True it will read extra bytes and populate it properly
290
290
  transactions_info_optional: bytes = bytes([0])