chia-blockchain 2.5.4rc1__py3-none-any.whl → 2.5.5__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 (453) hide show
  1. chia/_tests/blockchain/blockchain_test_utils.py +2 -3
  2. chia/_tests/blockchain/test_augmented_chain.py +2 -3
  3. chia/_tests/blockchain/test_blockchain.py +261 -44
  4. chia/_tests/blockchain/test_blockchain_transactions.py +4 -3
  5. chia/_tests/blockchain/test_build_chains.py +197 -1
  6. chia/_tests/blockchain/test_get_block_generator.py +1 -1
  7. chia/_tests/blockchain/test_lookup_fork_chain.py +1 -1
  8. chia/_tests/clvm/benchmark_costs.py +1 -1
  9. chia/_tests/clvm/coin_store.py +3 -4
  10. chia/_tests/clvm/test_message_conditions.py +2 -2
  11. chia/_tests/clvm/test_puzzle_compression.py +2 -3
  12. chia/_tests/clvm/test_puzzles.py +1 -2
  13. chia/_tests/clvm/test_singletons.py +2 -3
  14. chia/_tests/clvm/test_spend_sim.py +7 -7
  15. chia/_tests/cmds/cmd_test_utils.py +30 -25
  16. chia/_tests/cmds/test_dev_gh.py +1 -1
  17. chia/_tests/cmds/test_farm_cmd.py +1 -1
  18. chia/_tests/cmds/test_show.py +1 -2
  19. chia/_tests/cmds/wallet/test_did.py +101 -56
  20. chia/_tests/cmds/wallet/test_nft.py +109 -84
  21. chia/_tests/cmds/wallet/test_notifications.py +1 -1
  22. chia/_tests/cmds/wallet/test_offer.toffer +1 -1
  23. chia/_tests/cmds/wallet/test_vcs.py +8 -8
  24. chia/_tests/cmds/wallet/test_wallet.py +100 -46
  25. chia/_tests/conftest.py +31 -20
  26. chia/_tests/connection_utils.py +1 -1
  27. chia/_tests/core/consensus/stores/__init__.py +0 -0
  28. chia/_tests/core/consensus/stores/test_coin_store_protocol.py +40 -0
  29. chia/_tests/core/consensus/test_block_creation.py +2 -31
  30. chia/_tests/core/consensus/test_pot_iterations.py +38 -3
  31. chia/_tests/core/custom_types/test_proof_of_space.py +154 -26
  32. chia/_tests/core/custom_types/test_spend_bundle.py +2 -3
  33. chia/_tests/core/daemon/test_daemon.py +80 -0
  34. chia/_tests/core/data_layer/test_data_layer.py +1 -1
  35. chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
  36. chia/_tests/core/data_layer/test_data_rpc.py +14 -10
  37. chia/_tests/core/data_layer/test_data_store.py +5 -5
  38. chia/_tests/core/farmer/test_farmer_api.py +2 -2
  39. chia/_tests/core/full_node/full_sync/test_full_sync.py +446 -406
  40. chia/_tests/core/full_node/ram_db.py +3 -1
  41. chia/_tests/core/full_node/stores/test_block_store.py +28 -16
  42. chia/_tests/core/full_node/stores/test_coin_store.py +277 -185
  43. chia/_tests/core/full_node/stores/test_full_node_store.py +11 -4
  44. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  45. chia/_tests/core/full_node/test_address_manager.py +200 -27
  46. chia/_tests/core/full_node/test_block_height_map.py +2 -2
  47. chia/_tests/core/full_node/test_conditions.py +7 -6
  48. chia/_tests/core/full_node/test_full_node.py +456 -40
  49. chia/_tests/core/full_node/test_generator_tools.py +32 -2
  50. chia/_tests/core/full_node/test_hint_management.py +1 -1
  51. chia/_tests/core/full_node/test_node_load.py +20 -21
  52. chia/_tests/core/full_node/test_performance.py +3 -4
  53. chia/_tests/core/full_node/test_prev_tx_block.py +43 -0
  54. chia/_tests/core/full_node/test_subscriptions.py +1 -2
  55. chia/_tests/core/full_node/test_transactions.py +9 -5
  56. chia/_tests/core/full_node/test_tx_processing_queue.py +1 -2
  57. chia/_tests/core/large_block.py +1 -2
  58. chia/_tests/core/make_block_generator.py +3 -4
  59. chia/_tests/core/mempool/test_mempool.py +36 -86
  60. chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
  61. chia/_tests/core/mempool/test_mempool_item_queries.py +1 -3
  62. chia/_tests/core/mempool/test_mempool_manager.py +529 -69
  63. chia/_tests/core/mempool/test_mempool_performance.py +3 -2
  64. chia/_tests/core/mempool/test_singleton_fast_forward.py +61 -132
  65. chia/_tests/core/server/flood.py +1 -1
  66. chia/_tests/core/server/test_dos.py +1 -1
  67. chia/_tests/core/server/test_node_discovery.py +41 -27
  68. chia/_tests/core/server/test_rate_limits.py +1 -1
  69. chia/_tests/core/server/test_server.py +1 -1
  70. chia/_tests/core/services/test_services.py +5 -5
  71. chia/_tests/core/ssl/test_ssl.py +1 -1
  72. chia/_tests/core/test_cost_calculation.py +6 -6
  73. chia/_tests/core/test_crawler.py +2 -2
  74. chia/_tests/core/test_crawler_rpc.py +1 -1
  75. chia/_tests/core/test_db_conversion.py +3 -1
  76. chia/_tests/core/test_db_validation.py +5 -3
  77. chia/_tests/core/test_farmer_harvester_rpc.py +15 -15
  78. chia/_tests/core/test_filter.py +4 -1
  79. chia/_tests/core/test_full_node_rpc.py +99 -82
  80. chia/_tests/core/test_program.py +2 -2
  81. chia/_tests/core/util/test_block_cache.py +1 -1
  82. chia/_tests/core/util/test_keychain.py +2 -2
  83. chia/_tests/core/util/test_lockfile.py +1 -1
  84. chia/_tests/core/util/test_log_exceptions.py +5 -5
  85. chia/_tests/core/util/test_streamable.py +81 -22
  86. chia/_tests/db/test_db_wrapper.py +1 -3
  87. chia/_tests/environments/wallet.py +5 -5
  88. chia/_tests/farmer_harvester/test_farmer.py +9 -7
  89. chia/_tests/farmer_harvester/test_farmer_harvester.py +11 -4
  90. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  91. chia/_tests/farmer_harvester/test_third_party_harvesters.py +15 -9
  92. chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -2
  93. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +7 -5
  94. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
  95. chia/_tests/generator/test_compression.py +1 -2
  96. chia/_tests/generator/test_rom.py +8 -4
  97. chia/_tests/plot_sync/test_plot_sync.py +3 -3
  98. chia/_tests/plot_sync/test_receiver.py +3 -3
  99. chia/_tests/plot_sync/test_sender.py +1 -1
  100. chia/_tests/plot_sync/test_sync_simulated.py +3 -3
  101. chia/_tests/plot_sync/util.py +2 -2
  102. chia/_tests/pools/test_pool_cmdline.py +48 -21
  103. chia/_tests/pools/test_pool_puzzles_lifecycle.py +2 -3
  104. chia/_tests/pools/test_pool_rpc.py +237 -105
  105. chia/_tests/pools/test_pool_wallet.py +11 -2
  106. chia/_tests/pools/test_wallet_pool_store.py +5 -4
  107. chia/_tests/rpc/test_rpc_client.py +1 -1
  108. chia/_tests/simulation/test_simulation.py +13 -8
  109. chia/_tests/simulation/test_simulator.py +2 -2
  110. chia/_tests/timelord/test_new_peak.py +191 -47
  111. chia/_tests/timelord/test_timelord.py +1 -1
  112. chia/_tests/tools/test_full_sync.py +0 -2
  113. chia/_tests/tools/test_run_block.py +3 -1
  114. chia/_tests/util/benchmark_cost.py +3 -3
  115. chia/_tests/util/benchmarks.py +2 -2
  116. chia/_tests/util/blockchain.py +11 -5
  117. chia/_tests/util/blockchain_mock.py +1 -4
  118. chia/_tests/util/coin_store.py +29 -0
  119. chia/_tests/util/constants.py +2 -18
  120. chia/_tests/util/full_sync.py +3 -3
  121. chia/_tests/util/generator_tools_testing.py +2 -3
  122. chia/_tests/util/key_tool.py +2 -3
  123. chia/_tests/util/misc.py +33 -31
  124. chia/_tests/util/network_protocol_data.py +19 -17
  125. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  126. chia/_tests/util/protocol_messages_json.py +3 -1
  127. chia/_tests/util/run_block.py +2 -2
  128. chia/_tests/util/setup_nodes.py +7 -7
  129. chia/_tests/util/spend_sim.py +47 -55
  130. chia/_tests/util/test_condition_tools.py +5 -4
  131. chia/_tests/util/test_config.py +2 -2
  132. chia/_tests/util/test_dump_keyring.py +1 -1
  133. chia/_tests/util/test_full_block_utils.py +12 -14
  134. chia/_tests/util/test_misc.py +2 -2
  135. chia/_tests/util/test_paginator.py +4 -4
  136. chia/_tests/util/test_priority_mutex.py +2 -2
  137. chia/_tests/util/test_replace_str_to_bytes.py +15 -5
  138. chia/_tests/util/test_ssl_check.py +1 -1
  139. chia/_tests/util/test_testnet_overrides.py +13 -3
  140. chia/_tests/util/time_out_assert.py +4 -2
  141. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
  142. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -2
  143. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +352 -432
  144. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +3 -6
  145. chia/_tests/wallet/cat_wallet/test_trades.py +53 -77
  146. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -1
  147. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +3 -3
  148. chia/_tests/wallet/clawback/test_clawback_metadata.py +4 -2
  149. chia/_tests/wallet/conftest.py +11 -12
  150. chia/_tests/wallet/db_wallet/test_db_graftroot.py +11 -4
  151. chia/_tests/wallet/db_wallet/test_dl_offers.py +433 -130
  152. chia/_tests/wallet/db_wallet/test_dl_wallet.py +3 -3
  153. chia/_tests/wallet/did_wallet/test_did.py +2132 -2000
  154. chia/_tests/wallet/nft_wallet/config.py +1 -1
  155. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1610 -742
  156. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +486 -907
  157. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +4 -4
  158. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +517 -294
  159. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +133 -62
  160. chia/_tests/wallet/rpc/test_wallet_rpc.py +495 -265
  161. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +10 -6
  162. chia/_tests/wallet/sync/test_wallet_sync.py +89 -60
  163. chia/_tests/wallet/test_clvm_casts.py +88 -0
  164. chia/_tests/wallet/test_coin_management.py +1 -1
  165. chia/_tests/wallet/test_coin_selection.py +1 -1
  166. chia/_tests/wallet/test_conditions.py +1 -1
  167. chia/_tests/wallet/test_new_wallet_protocol.py +13 -11
  168. chia/_tests/wallet/test_notifications.py +5 -3
  169. chia/_tests/wallet/test_sign_coin_spends.py +6 -6
  170. chia/_tests/wallet/test_signer_protocol.py +13 -12
  171. chia/_tests/wallet/test_singleton.py +1 -1
  172. chia/_tests/wallet/test_singleton_lifecycle_fast.py +5 -7
  173. chia/_tests/wallet/test_util.py +2 -2
  174. chia/_tests/wallet/test_wallet.py +108 -29
  175. chia/_tests/wallet/test_wallet_action_scope.py +9 -2
  176. chia/_tests/wallet/test_wallet_blockchain.py +2 -3
  177. chia/_tests/wallet/test_wallet_key_val_store.py +1 -2
  178. chia/_tests/wallet/test_wallet_node.py +2 -4
  179. chia/_tests/wallet/test_wallet_retry.py +4 -2
  180. chia/_tests/wallet/test_wallet_state_manager.py +191 -5
  181. chia/_tests/wallet/test_wallet_test_framework.py +1 -1
  182. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +8 -8
  183. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -12
  184. chia/_tests/wallet/wallet_block_tools.py +6 -6
  185. chia/_tests/weight_proof/test_weight_proof.py +10 -48
  186. chia/apis.py +1 -1
  187. chia/cmds/beta.py +1 -1
  188. chia/cmds/chia.py +9 -9
  189. chia/cmds/cmd_classes.py +12 -11
  190. chia/cmds/cmd_helpers.py +1 -1
  191. chia/cmds/cmds_util.py +12 -9
  192. chia/cmds/coin_funcs.py +2 -2
  193. chia/cmds/configure.py +2 -2
  194. chia/cmds/data.py +0 -2
  195. chia/cmds/data_funcs.py +1 -1
  196. chia/cmds/db_validate_func.py +1 -2
  197. chia/cmds/dev/__init__.py +0 -0
  198. chia/cmds/dev/data.py +273 -0
  199. chia/cmds/{gh.py → dev/gh.py} +5 -5
  200. chia/cmds/dev/main.py +22 -0
  201. chia/cmds/dev/mempool.py +78 -0
  202. chia/cmds/dev/mempool_funcs.py +63 -0
  203. chia/cmds/farm_funcs.py +5 -4
  204. chia/cmds/init_funcs.py +11 -11
  205. chia/cmds/keys.py +2 -2
  206. chia/cmds/keys_funcs.py +4 -4
  207. chia/cmds/netspace_funcs.py +1 -1
  208. chia/cmds/peer_funcs.py +2 -2
  209. chia/cmds/plotnft_funcs.py +72 -26
  210. chia/cmds/rpc.py +1 -1
  211. chia/cmds/show_funcs.py +5 -5
  212. chia/cmds/signer.py +8 -7
  213. chia/cmds/sim_funcs.py +8 -9
  214. chia/cmds/wallet.py +2 -2
  215. chia/cmds/wallet_funcs.py +165 -131
  216. chia/{util → consensus}/augmented_chain.py +1 -2
  217. chia/consensus/block_body_validation.py +54 -40
  218. chia/consensus/block_creation.py +42 -76
  219. chia/consensus/block_header_validation.py +32 -26
  220. chia/consensus/block_record.py +0 -3
  221. chia/consensus/blockchain.py +23 -32
  222. chia/consensus/blockchain_interface.py +1 -5
  223. chia/consensus/check_time_locks.py +57 -0
  224. chia/consensus/coin_store_protocol.py +151 -0
  225. chia/consensus/coinbase.py +0 -6
  226. chia/consensus/condition_costs.py +4 -0
  227. chia/{util → consensus}/condition_tools.py +4 -5
  228. chia/consensus/cost_calculator.py +1 -1
  229. chia/consensus/default_constants.py +32 -9
  230. chia/consensus/deficit.py +1 -3
  231. chia/consensus/difficulty_adjustment.py +1 -2
  232. chia/consensus/find_fork_point.py +1 -3
  233. chia/consensus/full_block_to_block_record.py +1 -6
  234. chia/{util → consensus}/generator_tools.py +1 -3
  235. chia/consensus/get_block_challenge.py +30 -7
  236. chia/consensus/make_sub_epoch_summary.py +1 -5
  237. chia/consensus/multiprocess_validation.py +21 -20
  238. chia/consensus/pot_iterations.py +74 -13
  239. chia/{util → consensus}/prev_transaction_block.py +1 -1
  240. chia/consensus/vdf_info_computation.py +1 -3
  241. chia/daemon/keychain_proxy.py +5 -5
  242. chia/daemon/server.py +22 -5
  243. chia/data_layer/data_layer.py +92 -51
  244. chia/{rpc → data_layer}/data_layer_rpc_api.py +1 -1
  245. chia/{rpc → data_layer}/data_layer_rpc_util.py +3 -6
  246. chia/data_layer/data_layer_util.py +4 -6
  247. chia/data_layer/data_layer_wallet.py +42 -69
  248. chia/data_layer/dl_wallet_store.py +12 -6
  249. chia/data_layer/download_data.py +3 -3
  250. chia/data_layer/s3_plugin_service.py +0 -1
  251. chia/farmer/farmer.py +3 -4
  252. chia/farmer/farmer_api.py +11 -7
  253. chia/{rpc → farmer}/farmer_rpc_client.py +1 -1
  254. chia/full_node/block_height_map.py +7 -6
  255. chia/full_node/block_store.py +5 -7
  256. chia/full_node/bundle_tools.py +1 -2
  257. chia/full_node/coin_store.py +153 -124
  258. chia/{types → full_node}/eligible_coin_spends.py +39 -70
  259. chia/full_node/fee_estimator.py +1 -1
  260. chia/full_node/fee_estimator_interface.py +0 -8
  261. chia/full_node/fee_tracker.py +25 -25
  262. chia/full_node/full_node.py +70 -53
  263. chia/full_node/full_node_api.py +57 -40
  264. chia/{rpc → full_node}/full_node_rpc_api.py +87 -8
  265. chia/{rpc → full_node}/full_node_rpc_client.py +7 -6
  266. chia/full_node/full_node_store.py +23 -8
  267. chia/full_node/mempool.py +206 -53
  268. chia/full_node/mempool_check_conditions.py +20 -63
  269. chia/full_node/mempool_manager.py +53 -47
  270. chia/full_node/subscriptions.py +1 -3
  271. chia/full_node/tx_processing_queue.py +50 -3
  272. chia/full_node/weight_proof.py +46 -37
  273. chia/harvester/harvester.py +1 -1
  274. chia/harvester/harvester_api.py +22 -7
  275. chia/introducer/introducer.py +1 -1
  276. chia/introducer/introducer_api.py +1 -1
  277. chia/plot_sync/exceptions.py +1 -1
  278. chia/plot_sync/receiver.py +1 -1
  279. chia/plot_sync/sender.py +2 -2
  280. chia/pools/pool_puzzles.py +13 -18
  281. chia/pools/pool_wallet.py +23 -46
  282. chia/protocols/farmer_protocol.py +11 -3
  283. chia/protocols/full_node_protocol.py +1 -4
  284. chia/protocols/harvester_protocol.py +3 -3
  285. chia/protocols/pool_protocol.py +1 -2
  286. chia/protocols/shared_protocol.py +3 -3
  287. chia/protocols/timelord_protocol.py +1 -3
  288. chia/protocols/wallet_protocol.py +3 -3
  289. chia/rpc/rpc_client.py +7 -8
  290. chia/rpc/rpc_server.py +3 -3
  291. chia/rpc/util.py +3 -1
  292. chia/seeder/crawler.py +1 -1
  293. chia/seeder/crawler_api.py +1 -1
  294. chia/seeder/dns_server.py +2 -0
  295. chia/seeder/start_crawler.py +3 -3
  296. chia/server/address_manager.py +286 -38
  297. chia/server/address_manager_store.py +0 -215
  298. chia/{types → server}/aliases.py +7 -7
  299. chia/server/api_protocol.py +1 -1
  300. chia/server/chia_policy.py +1 -1
  301. chia/server/node_discovery.py +76 -113
  302. chia/server/rate_limits.py +1 -1
  303. chia/server/resolve_peer_info.py +43 -0
  304. chia/server/server.py +5 -5
  305. chia/server/start_data_layer.py +4 -4
  306. chia/server/start_farmer.py +5 -4
  307. chia/server/start_full_node.py +5 -4
  308. chia/server/start_harvester.py +7 -5
  309. chia/server/start_introducer.py +2 -2
  310. chia/server/start_service.py +1 -1
  311. chia/server/start_timelord.py +7 -5
  312. chia/server/start_wallet.py +7 -5
  313. chia/server/ws_connection.py +1 -1
  314. chia/simulator/add_blocks_in_batches.py +2 -2
  315. chia/simulator/block_tools.py +245 -201
  316. chia/simulator/full_node_simulator.py +38 -10
  317. chia/simulator/setup_services.py +12 -12
  318. chia/simulator/simulator_full_node_rpc_api.py +2 -2
  319. chia/simulator/simulator_full_node_rpc_client.py +2 -2
  320. chia/simulator/simulator_test_tools.py +2 -2
  321. chia/simulator/start_simulator.py +1 -1
  322. chia/simulator/wallet_tools.py +10 -18
  323. chia/ssl/create_ssl.py +1 -1
  324. chia/timelord/iters_from_block.py +14 -14
  325. chia/timelord/timelord.py +15 -11
  326. chia/timelord/timelord_api.py +14 -2
  327. chia/timelord/timelord_state.py +20 -14
  328. chia/types/blockchain_format/program.py +53 -10
  329. chia/types/blockchain_format/proof_of_space.py +73 -19
  330. chia/types/coin_spend.py +3 -56
  331. chia/types/generator_types.py +28 -0
  332. chia/types/internal_mempool_item.py +1 -2
  333. chia/types/mempool_item.py +12 -7
  334. chia/types/unfinished_header_block.py +1 -2
  335. chia/types/validation_state.py +1 -2
  336. chia/types/weight_proof.py +1 -3
  337. chia/util/action_scope.py +3 -3
  338. chia/util/block_cache.py +1 -2
  339. chia/util/byte_types.py +1 -1
  340. chia/util/casts.py +21 -0
  341. chia/util/config.py +0 -37
  342. chia/util/db_wrapper.py +8 -1
  343. chia/util/errors.py +3 -2
  344. chia/util/initial-config.yaml +21 -5
  345. chia/util/keychain.py +6 -7
  346. chia/util/keyring_wrapper.py +5 -5
  347. chia/util/limited_semaphore.py +1 -1
  348. chia/util/priority_mutex.py +1 -1
  349. chia/util/streamable.py +63 -5
  350. chia/util/task_timing.py +1 -1
  351. chia/util/virtual_project_analysis.py +1 -1
  352. chia/wallet/cat_wallet/cat_info.py +7 -3
  353. chia/wallet/cat_wallet/cat_outer_puzzle.py +9 -5
  354. chia/wallet/cat_wallet/cat_utils.py +1 -1
  355. chia/wallet/cat_wallet/cat_wallet.py +44 -36
  356. chia/wallet/cat_wallet/lineage_store.py +7 -0
  357. chia/wallet/cat_wallet/r_cat_wallet.py +274 -0
  358. chia/wallet/conditions.py +5 -10
  359. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -4
  360. chia/wallet/derivation_record.py +33 -0
  361. chia/wallet/derive_keys.py +3 -3
  362. chia/wallet/did_wallet/did_info.py +12 -3
  363. chia/wallet/did_wallet/did_wallet.py +132 -101
  364. chia/wallet/did_wallet/did_wallet_puzzles.py +9 -9
  365. chia/wallet/driver_protocol.py +3 -1
  366. chia/{types/spend_bundle.py → wallet/estimate_fees.py} +2 -7
  367. chia/wallet/nft_wallet/metadata_outer_puzzle.py +5 -3
  368. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  369. chia/wallet/nft_wallet/nft_wallet.py +69 -112
  370. chia/wallet/nft_wallet/ownership_outer_puzzle.py +5 -3
  371. chia/wallet/nft_wallet/singleton_outer_puzzle.py +6 -4
  372. chia/wallet/nft_wallet/transfer_program_puzzle.py +4 -2
  373. chia/wallet/nft_wallet/uncurry_nft.py +4 -6
  374. chia/wallet/notification_manager.py +2 -3
  375. chia/wallet/outer_puzzles.py +7 -2
  376. chia/wallet/puzzle_drivers.py +1 -1
  377. chia/wallet/puzzles/clawback/drivers.py +5 -4
  378. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -1
  379. chia/wallet/puzzles/singleton_top_layer.py +2 -1
  380. chia/wallet/puzzles/singleton_top_layer_v1_1.py +2 -1
  381. chia/wallet/puzzles/tails.py +1 -3
  382. chia/wallet/signer_protocol.py +5 -6
  383. chia/wallet/singleton.py +5 -4
  384. chia/wallet/singleton_record.py +1 -1
  385. chia/wallet/trade_manager.py +18 -20
  386. chia/wallet/trade_record.py +3 -6
  387. chia/wallet/trading/offer.py +12 -13
  388. chia/wallet/uncurried_puzzle.py +2 -2
  389. chia/wallet/util/compute_additions.py +58 -0
  390. chia/wallet/util/compute_hints.py +3 -3
  391. chia/wallet/util/compute_memos.py +4 -4
  392. chia/wallet/util/curry_and_treehash.py +2 -1
  393. chia/wallet/util/debug_spend_bundle.py +1 -1
  394. chia/wallet/util/merkle_tree.py +1 -1
  395. chia/wallet/util/peer_request_cache.py +1 -2
  396. chia/wallet/util/tx_config.py +3 -8
  397. chia/wallet/util/wallet_sync_utils.py +10 -5
  398. chia/wallet/util/wallet_types.py +1 -0
  399. chia/wallet/vc_wallet/cr_cat_drivers.py +17 -18
  400. chia/wallet/vc_wallet/cr_cat_wallet.py +30 -28
  401. chia/wallet/vc_wallet/cr_outer_puzzle.py +5 -3
  402. chia/wallet/vc_wallet/vc_drivers.py +50 -8
  403. chia/wallet/vc_wallet/vc_store.py +3 -5
  404. chia/wallet/vc_wallet/vc_wallet.py +15 -22
  405. chia/wallet/wallet.py +36 -46
  406. chia/wallet/wallet_action_scope.py +73 -4
  407. chia/wallet/wallet_blockchain.py +1 -3
  408. chia/wallet/wallet_interested_store.py +1 -1
  409. chia/wallet/wallet_nft_store.py +3 -3
  410. chia/wallet/wallet_node.py +17 -16
  411. chia/wallet/wallet_node_api.py +4 -5
  412. chia/wallet/wallet_pool_store.py +1 -1
  413. chia/wallet/wallet_protocol.py +2 -0
  414. chia/wallet/wallet_puzzle_store.py +1 -1
  415. chia/{rpc → wallet}/wallet_request_types.py +670 -81
  416. chia/{rpc → wallet}/wallet_rpc_api.py +735 -766
  417. chia/{rpc → wallet}/wallet_rpc_client.py +268 -420
  418. chia/wallet/wallet_singleton_store.py +8 -7
  419. chia/wallet/wallet_spend_bundle.py +4 -3
  420. chia/wallet/wallet_state_manager.py +320 -191
  421. chia/wallet/wallet_weight_proof_handler.py +1 -2
  422. chia/wallet/wsm_apis.py +98 -0
  423. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/METADATA +7 -7
  424. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/RECORD +443 -436
  425. mozilla-ca/cacert.pem +3 -165
  426. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +0 -145
  427. chia/cmds/dev.py +0 -18
  428. chia/types/blockchain_format/slots.py +0 -9
  429. chia/types/blockchain_format/sub_epoch_summary.py +0 -5
  430. chia/types/end_of_slot_bundle.py +0 -5
  431. chia/types/full_block.py +0 -5
  432. chia/types/header_block.py +0 -5
  433. chia/types/spend_bundle_conditions.py +0 -7
  434. chia/types/transaction_queue_entry.py +0 -56
  435. chia/types/unfinished_block.py +0 -5
  436. /chia/cmds/{installers.py → dev/installers.py} +0 -0
  437. /chia/cmds/{sim.py → dev/sim.py} +0 -0
  438. /chia/{util → cmds}/dump_keyring.py +0 -0
  439. /chia/{full_node → consensus}/signage_point.py +0 -0
  440. /chia/{rpc → data_layer}/data_layer_rpc_client.py +0 -0
  441. /chia/{rpc → farmer}/farmer_rpc_api.py +0 -0
  442. /chia/{util → full_node}/full_block_utils.py +0 -0
  443. /chia/{rpc → harvester}/harvester_rpc_api.py +0 -0
  444. /chia/{rpc → harvester}/harvester_rpc_client.py +0 -0
  445. /chia/{full_node → protocols}/fee_estimate.py +0 -0
  446. /chia/{server → protocols}/outbound_message.py +0 -0
  447. /chia/{rpc → seeder}/crawler_rpc_api.py +0 -0
  448. /chia/{util → simulator}/vdf_prover.py +0 -0
  449. /chia/{util → ssl}/ssl_check.py +0 -0
  450. /chia/{rpc → timelord}/timelord_rpc_api.py +0 -0
  451. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/LICENSE +0 -0
  452. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/WHEEL +0 -0
  453. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/entry_points.txt +0 -0
@@ -10,7 +10,6 @@ from chia_rs.sized_ints import uint64
10
10
  from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
11
11
  from chia.types.blockchain_format.coin import Coin
12
12
  from chia.types.blockchain_format.program import Program
13
- from chia.types.blockchain_format.serialized_program import SerializedProgram
14
13
  from chia.types.coin_spend import make_spend
15
14
  from chia.types.mempool_inclusion_status import MempoolInclusionStatus
16
15
  from chia.wallet.cat_wallet.cat_utils import (
@@ -265,11 +264,9 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
265
264
  valid_spend = tail_offer.to_valid_spend(random_hash)
266
265
  real_blue_spend = next(spend for spend in valid_spend.coin_spends if b"hey there" in bytes(spend))
267
266
  real_blue_spend_replaced = real_blue_spend.replace(
268
- solution=SerializedProgram.from_program(
269
- real_blue_spend.solution.to_program().replace(
270
- ffrfrf=Program.to(-113), ffrfrr=Program.to([str_to_tail("blue"), []])
271
- )
272
- ),
267
+ solution=Program.from_serialized(real_blue_spend.solution)
268
+ .replace(ffrfrf=Program.to(-113), ffrfrr=Program.to([str_to_tail("blue"), []]))
269
+ .to_serialized(),
273
270
  )
274
271
  valid_spend = WalletSpendBundle(
275
272
  [real_blue_spend_replaced, *[spend for spend in valid_spend.coin_spends if spend != real_blue_spend]],
@@ -1,10 +1,10 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
- from typing import Any, Union
4
+ from typing import Any
5
5
 
6
6
  import pytest
7
- from chia_rs import G2Element
7
+ from chia_rs import G2Element, SpendBundle
8
8
  from chia_rs.sized_bytes import bytes32
9
9
  from chia_rs.sized_ints import uint32, uint64
10
10
 
@@ -12,23 +12,23 @@ from chia._tests.conftest import SOFTFORK_HEIGHTS
12
12
  from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
13
13
  from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
14
14
  from chia._tests.util.time_out_assert import time_out_assert
15
+ from chia._tests.wallet.cat_wallet.test_cat_wallet import mint_cat
15
16
  from chia._tests.wallet.vc_wallet.test_vc_wallet import mint_cr_cat
16
17
  from chia.consensus.cost_calculator import NPCResult
17
18
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
18
19
  from chia.full_node.bundle_tools import simple_solution_generator
19
- from chia.rpc.wallet_request_types import VCAddProofs, VCGetList, VCGetProofsForRoot, VCMint, VCSpend
20
- from chia.types.blockchain_format.program import INFINITE_COST, Program
21
- from chia.types.spend_bundle import SpendBundle
20
+ from chia.types.blockchain_format.program import INFINITE_COST, Program, run
22
21
  from chia.util.bech32m import encode_puzzle_hash
23
22
  from chia.util.hash import std_hash
24
23
  from chia.wallet.cat_wallet.cat_wallet import CATWallet
24
+ from chia.wallet.cat_wallet.r_cat_wallet import RCATWallet
25
25
  from chia.wallet.conditions import CreateCoinAnnouncement, parse_conditions_non_consensus
26
26
  from chia.wallet.did_wallet.did_wallet import DIDWallet
27
27
  from chia.wallet.outer_puzzles import AssetType
28
28
  from chia.wallet.puzzle_drivers import PuzzleInfo
29
29
  from chia.wallet.trade_manager import TradeManager
30
30
  from chia.wallet.trade_record import TradeRecord
31
- from chia.wallet.trading.offer import Offer
31
+ from chia.wallet.trading.offer import Offer, OfferSummary
32
32
  from chia.wallet.trading.trade_status import TradeStatus
33
33
  from chia.wallet.transaction_record import TransactionRecord
34
34
  from chia.wallet.util.transaction_type import TransactionType
@@ -36,10 +36,9 @@ from chia.wallet.vc_wallet.cr_cat_drivers import ProofsChecker
36
36
  from chia.wallet.vc_wallet.cr_cat_wallet import CRCATWallet
37
37
  from chia.wallet.vc_wallet.vc_store import VCProofs
38
38
  from chia.wallet.wallet_node import WalletNode
39
+ from chia.wallet.wallet_request_types import VCAddProofs, VCGetList, VCGetProofsForRoot, VCMint, VCSpend
39
40
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
40
41
 
41
- OfferSummary = dict[Union[int, bytes32], int]
42
-
43
42
 
44
43
  async def get_trade_and_status(trade_manager: TradeManager, trade: TradeRecord) -> TradeStatus:
45
44
  trade_rec = await trade_manager.get_trade_by_id(trade.trade_id)
@@ -99,10 +98,12 @@ async def get_trade_and_status(trade_manager: TradeManager, trade: TradeRecord)
99
98
  ],
100
99
  indirect=["wallet_environments"],
101
100
  )
101
+ @pytest.mark.parametrize("wallet_type", [CATWallet, RCATWallet])
102
102
  @pytest.mark.limit_consensus_modes(reason="irrelevant")
103
103
  async def test_cat_trades(
104
104
  wallet_environments: WalletTestFramework,
105
105
  credential_restricted: bool,
106
+ wallet_type: type[CATWallet],
106
107
  active_softfork_height: uint32,
107
108
  ) -> None:
108
109
  # Setup
@@ -191,6 +192,7 @@ async def test_cat_trades(
191
192
  wallet_node_maker,
192
193
  client_maker,
193
194
  full_node,
195
+ wallet_environments.tx_config,
194
196
  authorized_providers,
195
197
  tail_maker,
196
198
  proofs_checker_maker,
@@ -201,6 +203,7 @@ async def test_cat_trades(
201
203
  wallet_node_taker,
202
204
  client_taker,
203
205
  full_node,
206
+ wallet_environments.tx_config,
204
207
  authorized_providers,
205
208
  tail_taker,
206
209
  proofs_checker_taker,
@@ -237,26 +240,36 @@ async def test_cat_trades(
237
240
  )
238
241
 
239
242
  # Mint some VCs that can spend the CR-CATs
240
- vc_record_maker = (
241
- await client_maker.vc_mint(
242
- VCMint(
243
- did_id=encode_puzzle_hash(did_id_maker, "did"),
244
- target_address=encode_puzzle_hash(await wallet_maker.get_new_puzzlehash(), "txch"),
245
- push=True,
246
- ),
247
- wallet_environments.tx_config,
248
- )
249
- ).vc_record
250
- vc_record_taker = (
251
- await client_taker.vc_mint(
252
- VCMint(
253
- did_id=encode_puzzle_hash(did_id_taker, "did"),
254
- target_address=encode_puzzle_hash(await wallet_taker.get_new_puzzlehash(), "txch"),
255
- push=True,
256
- ),
257
- wallet_environments.tx_config,
258
- )
259
- ).vc_record
243
+ async with env_maker.wallet_state_manager.new_action_scope(
244
+ wallet_environments.tx_config, push=True
245
+ ) as action_scope:
246
+ vc_record_maker = (
247
+ await client_maker.vc_mint(
248
+ VCMint(
249
+ did_id=encode_puzzle_hash(did_id_maker, "did"),
250
+ target_address=encode_puzzle_hash(
251
+ await action_scope.get_puzzle_hash(env_maker.wallet_state_manager), "txch"
252
+ ),
253
+ push=True,
254
+ ),
255
+ wallet_environments.tx_config,
256
+ )
257
+ ).vc_record
258
+ async with env_taker.wallet_state_manager.new_action_scope(
259
+ wallet_environments.tx_config, push=True
260
+ ) as action_scope:
261
+ vc_record_taker = (
262
+ await client_taker.vc_mint(
263
+ VCMint(
264
+ did_id=encode_puzzle_hash(did_id_taker, "did"),
265
+ target_address=encode_puzzle_hash(
266
+ await action_scope.get_puzzle_hash(env_taker.wallet_state_manager), "txch"
267
+ ),
268
+ push=True,
269
+ ),
270
+ wallet_environments.tx_config,
271
+ )
272
+ ).vc_record
260
273
  await wallet_environments.process_pending_states(
261
274
  [
262
275
  # Balance checking for this scenario is covered in tests/wallet/vc_wallet/test_vc_lifecycle
@@ -343,52 +356,11 @@ async def test_cat_trades(
343
356
  }
344
357
 
345
358
  # Mint some standard CATs
346
- async with wallet_maker.wallet_state_manager.new_action_scope(
347
- wallet_environments.tx_config, push=True
348
- ) as action_scope:
349
- cat_wallet_maker = await CATWallet.create_new_cat_wallet(
350
- wallet_node_maker.wallet_state_manager,
351
- wallet_maker,
352
- {"identifier": "genesis_by_id"},
353
- uint64(100),
354
- action_scope,
355
- )
356
-
357
- async with wallet_taker.wallet_state_manager.new_action_scope(
358
- wallet_environments.tx_config, push=True
359
- ) as action_scope:
360
- new_cat_wallet_taker = await CATWallet.create_new_cat_wallet(
361
- wallet_node_taker.wallet_state_manager,
362
- wallet_taker,
363
- {"identifier": "genesis_by_id"},
364
- uint64(100),
365
- action_scope,
366
- )
367
-
368
- await wallet_environments.process_pending_states(
369
- [
370
- # Balance checking for this scenario is covered in test_cat_wallet
371
- WalletStateTransition(
372
- pre_block_balance_updates={
373
- "xch": {"set_remainder": True},
374
- "cat": {"init": True, "set_remainder": True},
375
- },
376
- post_block_balance_updates={
377
- "xch": {"set_remainder": True},
378
- "cat": {"set_remainder": True},
379
- },
380
- ),
381
- WalletStateTransition(
382
- pre_block_balance_updates={
383
- "xch": {"set_remainder": True},
384
- "new cat": {"init": True, "set_remainder": True},
385
- },
386
- post_block_balance_updates={
387
- "xch": {"set_remainder": True},
388
- "new cat": {"set_remainder": True},
389
- },
390
- ),
391
- ]
359
+ cat_wallet_maker = await mint_cat(
360
+ wallet_environments, env_maker, "xch", "cat", uint64(100), wallet_type, "cat maker"
361
+ )
362
+ new_cat_wallet_taker = await mint_cat(
363
+ wallet_environments, env_taker, "xch", "new cat", uint64(100), wallet_type, "cat taker"
392
364
  )
393
365
 
394
366
  if credential_restricted:
@@ -419,8 +391,12 @@ async def test_cat_trades(
419
391
  proofs_checker_taker,
420
392
  )
421
393
  else:
422
- new_cat_wallet_maker = await CATWallet.get_or_create_wallet_for_cat(
423
- wallet_node_maker.wallet_state_manager, wallet_maker, new_cat_wallet_taker.get_asset_id()
394
+ if wallet_type is RCATWallet:
395
+ extra_args: Any = (bytes32.zeros,)
396
+ else:
397
+ extra_args = tuple()
398
+ new_cat_wallet_maker = await wallet_type.get_or_create_wallet_for_cat(
399
+ wallet_node_maker.wallet_state_manager, wallet_maker, new_cat_wallet_taker.get_asset_id(), *extra_args
424
400
  )
425
401
 
426
402
  await env_maker.change_balances(
@@ -1906,7 +1882,7 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework) -> N
1906
1882
  [
1907
1883
  c.to_program()
1908
1884
  for c in parse_conditions_non_consensus(
1909
- spend.puzzle_reveal.to_program().run(spend.solution.to_program()).as_iter(), abstractions=False
1885
+ run(spend.puzzle_reveal, Program.from_serialized(spend.solution)).as_iter(), abstractions=False
1910
1886
  )
1911
1887
  ]
1912
1888
  )
@@ -8,6 +8,7 @@ from chia.simulator.full_node_simulator import FullNodeSimulator
8
8
  from chia.types.peer_info import PeerInfo
9
9
  from chia.wallet.puzzles.clawback.puzzle_decorator import ClawbackPuzzleDecorator
10
10
  from chia.wallet.util.puzzle_decorator import PuzzleDecoratorManager
11
+ from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
11
12
  from chia.wallet.wallet_node import WalletNode
12
13
 
13
14
 
@@ -74,5 +75,6 @@ async def test_decorator(
74
75
  assert isinstance(wallet_node.wallet_state_manager.decorator_manager.decorator_list[0], ClawbackPuzzleDecorator)
75
76
  clawback_decorator: ClawbackPuzzleDecorator = wallet_node.wallet_state_manager.decorator_manager.decorator_list[0]
76
77
  assert clawback_decorator.time_lock == 3600
77
- puzzle = await wallet.get_new_puzzle()
78
+ async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
79
+ puzzle = await action_scope.get_puzzle(wallet.wallet_state_manager)
78
80
  assert puzzle == wallet_node.wallet_state_manager.decorator_manager.decorate(puzzle)
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  from typing import Optional
4
4
 
5
5
  import pytest
6
- from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey
6
+ from chia_rs import AugSchemeMPL, CoinSpend, G1Element, G2Element, PrivateKey
7
7
  from chia_rs.sized_bytes import bytes32
8
8
  from chia_rs.sized_ints import uint64
9
9
 
@@ -12,12 +12,12 @@ from chia._tests.clvm.test_puzzles import public_key_for_index, secret_exponent_
12
12
  from chia._tests.util.key_tool import KeyTool
13
13
  from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
14
14
  from chia._tests.util.time_out_assert import time_out_assert
15
+ from chia.consensus.condition_tools import conditions_dict_for_solution, pkm_pairs_for_conditions_dict
15
16
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
16
17
  from chia.types.blockchain_format.program import INFINITE_COST, Program
17
- from chia.types.coin_spend import CoinSpend, make_spend
18
+ from chia.types.coin_spend import make_spend
18
19
  from chia.types.condition_opcodes import ConditionOpcode
19
20
  from chia.types.mempool_inclusion_status import MempoolInclusionStatus
20
- from chia.util.condition_tools import conditions_dict_for_solution, pkm_pairs_for_conditions_dict
21
21
  from chia.util.errors import Err
22
22
  from chia.util.streamable import VersionedBlob
23
23
  from chia.wallet.puzzles.clawback.drivers import (
@@ -11,6 +11,7 @@ from chia.simulator.block_tools import BlockTools
11
11
  from chia.simulator.full_node_simulator import FullNodeSimulator
12
12
  from chia.types.peer_info import PeerInfo
13
13
  from chia.wallet.puzzles.clawback.metadata import ClawbackMetadata
14
+ from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
14
15
  from chia.wallet.wallet_node import WalletNode
15
16
 
16
17
 
@@ -30,8 +31,9 @@ async def test_is_recipient(
30
31
  server_1: ChiaServer = full_node_api.full_node.server
31
32
  wallet_node, server_2 = wallets[0]
32
33
  wallet = wallet_node.wallet_state_manager.main_wallet
33
- puzhash_1 = await wallet.get_new_puzzlehash()
34
- puzhash_2 = await wallet.get_new_puzzlehash()
34
+ async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
35
+ puzhash_1 = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
36
+ puzhash_2 = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
35
37
  await server_2.start_client(PeerInfo(self_hostname, server_1.get_port()), None)
36
38
  invalid_data = ClawbackMetadata(uint64(500), bytes32.random(seeded_random), bytes32.random(seeded_random))
37
39
  both_data = ClawbackMetadata(uint64(500), puzhash_1, puzhash_2)
@@ -5,30 +5,29 @@ import unittest
5
5
  from collections.abc import AsyncIterator, Awaitable
6
6
  from contextlib import AsyncExitStack
7
7
  from dataclasses import replace
8
- from typing import Any, Callable, Literal, Optional
8
+ from typing import Any, Callable, Optional
9
9
 
10
10
  import pytest
11
11
  from chia_rs import (
12
12
  DONT_VALIDATE_SIGNATURE,
13
13
  ConsensusConstants,
14
+ FullBlock,
14
15
  SpendBundleConditions,
15
16
  get_flags_for_height_and_constants,
16
17
  run_block_generator,
17
18
  run_block_generator2,
18
19
  )
19
- from chia_rs.sized_bytes import bytes32
20
20
  from chia_rs.sized_ints import uint32, uint64, uint128
21
21
 
22
22
  from chia._tests.environments.wallet import NewPuzzleHashError, WalletEnvironment, WalletState, WalletTestFramework
23
23
  from chia._tests.util.setup_nodes import setup_simulators_and_wallets_service
24
24
  from chia._tests.wallet.wallet_block_tools import WalletBlockTools
25
25
  from chia.full_node.full_node import FullNode
26
- from chia.rpc.full_node_rpc_client import FullNodeRpcClient
27
- from chia.rpc.wallet_rpc_client import WalletRpcClient
28
- from chia.types.full_block import FullBlock
26
+ from chia.full_node.full_node_rpc_client import FullNodeRpcClient
29
27
  from chia.types.peer_info import PeerInfo
30
28
  from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
31
29
  from chia.wallet.wallet_node import Balance
30
+ from chia.wallet.wallet_rpc_client import WalletRpcClient
32
31
  from chia.wallet.wallet_state_manager import WalletStateManager
33
32
 
34
33
 
@@ -65,7 +64,7 @@ async def ignore_block_validation(
65
64
  if "standard_block_tools" in request.keywords:
66
65
  return None
67
66
 
68
- async def validate_block_body(*args: Any, **kwargs: Any) -> Literal[None]:
67
+ async def validate_block_body(*args: Any, **kwargs: Any) -> None:
69
68
  return None
70
69
 
71
70
  def create_wrapper(original_create: Any) -> Any:
@@ -121,10 +120,10 @@ async def ignore_block_validation(
121
120
  "chia.consensus.multiprocess_validation.validate_finished_header_block", lambda *_, **__: (uint64(1), None)
122
121
  )
123
122
  monkeypatch.setattr(
124
- "chia.consensus.multiprocess_validation.verify_and_get_quality_string", lambda *_, **__: bytes32.zeros
123
+ "chia.consensus.multiprocess_validation.validate_pospace_and_get_required_iters", lambda *_, **__: uint64(0)
125
124
  )
126
- monkeypatch.setattr("chia.consensus.block_record.BlockRecord.sp_total_iters", lambda *_: uint128(0))
127
- monkeypatch.setattr("chia.consensus.block_record.BlockRecord.ip_sub_slot_total_iters", lambda *_: uint128(0))
125
+ monkeypatch.setattr("chia_rs.BlockRecord.sp_total_iters", lambda *_: uint128(0))
126
+ monkeypatch.setattr("chia_rs.BlockRecord.ip_sub_slot_total_iters", lambda *_: uint128(0))
128
127
  monkeypatch.setattr("chia.consensus.make_sub_epoch_summary.calculate_sp_iters", lambda *_: uint64(0))
129
128
  monkeypatch.setattr("chia.consensus.make_sub_epoch_summary.calculate_ip_iters", lambda *_: uint64(0))
130
129
  monkeypatch.setattr("chia.consensus.difficulty_adjustment._get_next_sub_slot_iters", lambda *_: uint64(1))
@@ -132,7 +131,7 @@ async def ignore_block_validation(
132
131
  monkeypatch.setattr("chia.full_node.full_node_store.calculate_sp_interval_iters", lambda *_: uint64(1))
133
132
  monkeypatch.setattr("chia.consensus.pot_iterations.calculate_sp_interval_iters", lambda *_: uint64(1))
134
133
  monkeypatch.setattr("chia.consensus.pot_iterations.calculate_ip_iters", lambda *_: uint64(1))
135
- monkeypatch.setattr("chia.consensus.block_record.BlockRecord.sp_sub_slot_total_iters", lambda *_: uint64(1))
134
+ monkeypatch.setattr("chia_rs.BlockRecord.sp_sub_slot_total_iters", lambda *_: uint64(1))
136
135
 
137
136
 
138
137
  @pytest.fixture(scope="function", params=[True, False])
@@ -152,7 +151,7 @@ def new_action_scope_wrapper(func: Any) -> Any:
152
151
  # Take note of the number of puzzle hashes if we're supposed to be reusing
153
152
  ph_indexes: dict[uint32, int] = {}
154
153
  for wallet_id in self.wallets:
155
- ph_indexes[wallet_id] = await self.puzzle_store.get_unused_count(wallet_id)
154
+ ph_indexes[wallet_id] = await self.puzzle_store.get_used_count(wallet_id)
156
155
 
157
156
  async with func(self, *args, **kwargs) as action_scope:
158
157
  yield action_scope
@@ -160,7 +159,7 @@ def new_action_scope_wrapper(func: Any) -> Any:
160
159
  # Finally, check that the number of puzzle hashes did or did not increase by the specified amount
161
160
  if action_scope.config.tx_config.reuse_puzhash:
162
161
  for wallet_id, ph_index in zip(self.wallets, ph_indexes):
163
- if not ph_indexes[wallet_id] == (await self.puzzle_store.get_unused_count(wallet_id)):
162
+ if not ph_indexes[wallet_id] == (await self.puzzle_store.get_used_count(wallet_id)):
164
163
  raise NewPuzzleHashError(
165
164
  f"wallet ID {wallet_id} generated new puzzle hashes while reuse_puzhash was False"
166
165
  )
@@ -38,7 +38,7 @@ NIL_PH = Program.to(None).get_tree_hash()
38
38
  async def test_graftroot(cost_logger: CostLogger) -> None:
39
39
  async with sim_and_client() as (sim, sim_client):
40
40
  # Create the coin we're testing
41
- all_values: list[bytes32] = [bytes32([x] * 32) for x in range(0, 100)]
41
+ all_values: list[bytes32] = [bytes32([x] * 32) for x in range(100)]
42
42
  root, proofs = build_merkle_tree(all_values)
43
43
  p2_conditions = Program.to((1, [[51, ACS_PH, 0]])) # An coin to create to make sure this hits the blockchain
44
44
  desired_key_values = ((bytes32.zeros, bytes32([1] * 32)), (bytes32([7] * 32), bytes32([8] * 32)))
@@ -125,9 +125,16 @@ async def test_graftroot(cost_logger: CostLogger) -> None:
125
125
  await sim.rewind(same_height)
126
126
 
127
127
  # try with a bad merkle root announcement
128
+ fake_puzzle_bad_announcement = ACS.curry(
129
+ fake_struct, ACS.curry(ACS_PH, (bytes32.zeros, None), None, None)
130
+ )
131
+ await sim.farm_block(fake_puzzle_bad_announcement.get_tree_hash())
132
+ fake_coin_bad_announcement: Coin = (
133
+ await sim_client.get_coin_records_by_puzzle_hash(fake_puzzle_bad_announcement.get_tree_hash())
134
+ )[0].coin
128
135
  new_fake_spend = make_spend(
129
- fake_coin,
130
- ACS.curry(fake_struct, ACS.curry(ACS_PH, (bytes32.zeros, None), None, None)),
136
+ fake_coin_bad_announcement,
137
+ fake_puzzle_bad_announcement,
131
138
  Program.to([[[62, "$"]]]),
132
139
  )
133
140
  new_final_bundle = WalletSpendBundle([new_fake_spend, graftroot_spend], G2Element())
@@ -136,4 +143,4 @@ async def test_graftroot(cost_logger: CostLogger) -> None:
136
143
  else:
137
144
  assert result == (MempoolInclusionStatus.FAILED, Err.GENERATOR_RUNTIME_ERROR)
138
145
  with pytest.raises(ValueError, match="clvm raise"):
139
- graftroot_puzzle.run(graftroot_spend.solution.to_program())
146
+ graftroot_puzzle.run(Program.from_serialized(graftroot_spend.solution))