chia-blockchain 2.5.4rc2__py3-none-any.whl → 2.5.5rc2__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 +421 -69
  63. chia/_tests/core/mempool/test_mempool_performance.py +3 -2
  64. chia/_tests/core/mempool/test_singleton_fast_forward.py +60 -131
  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 +143 -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 +26 -40
  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.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/METADATA +7 -7
  424. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.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.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/LICENSE +0 -0
  452. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/WHEEL +0 -0
  453. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc2.dist-info}/entry_points.txt +0 -0
@@ -1,8 +1,12 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from typing import Optional
4
+
3
5
  import pytest
6
+ from chia_rs import Coin, ConsensusConstants, FullBlock, additions_and_removals, get_flags_for_height_and_constants
7
+ from chia_rs.sized_ints import uint64
4
8
 
5
- from chia.types.full_block import FullBlock
9
+ from chia.simulator.block_tools import BlockTools
6
10
 
7
11
  # These test targets are used to trigger a build of the test chains.
8
12
  # On CI we clone the test-cache repository to load the chains from, so they
@@ -57,3 +61,195 @@ def test_trigger_default_2000_compact(default_2000_blocks_compact: list[FullBloc
57
61
  @pytest.mark.build_test_chains
58
62
  def test_trigger_default_10000_compact(default_10000_blocks_compact: list[FullBlock]) -> None:
59
63
  pass
64
+
65
+
66
+ def validate_coins(constants: ConsensusConstants, blocks: list[FullBlock]) -> None:
67
+ unspent_coins: set[Coin] = set()
68
+ for block in blocks:
69
+ rewards = block.get_included_reward_coins()
70
+
71
+ if block.transactions_generator is not None:
72
+ flags = get_flags_for_height_and_constants(block.height, constants)
73
+ additions, removals = additions_and_removals(
74
+ bytes(block.transactions_generator),
75
+ [],
76
+ flags,
77
+ constants,
78
+ )
79
+
80
+ for _, rem in removals:
81
+ try:
82
+ unspent_coins.remove(rem)
83
+ except KeyError: # pragma: no cover
84
+ print(f"at height: {block.height} removal: {rem} does not exist")
85
+ print("coinset: ", unspent_coins)
86
+ raise
87
+
88
+ for add, _ in additions:
89
+ unspent_coins.add(add)
90
+
91
+ for add in rewards:
92
+ unspent_coins.add(add)
93
+
94
+
95
+ def validate_chain(
96
+ bt: BlockTools,
97
+ blocks: list[FullBlock],
98
+ *,
99
+ seed: bytes = b"",
100
+ empty_sub_slots: int = 0,
101
+ normalized_to_identity_cc_eos: bool = False,
102
+ normalized_to_identity_icc_eos: bool = False,
103
+ normalized_to_identity_cc_sp: bool = False,
104
+ normalized_to_identity_cc_ip: bool = False,
105
+ block_list_input: Optional[list[FullBlock]] = None,
106
+ time_per_block: Optional[float] = None,
107
+ dummy_block_references: bool = False,
108
+ include_transactions: bool = False,
109
+ ) -> None:
110
+ validate_coins(bt.constants, blocks)
111
+
112
+ # make sure that the blocks we found on-disk are consistent with
113
+ # the ones we would have generated
114
+ input_length = len(block_list_input) if block_list_input else 0
115
+
116
+ # 80 blocks is a balance between capturing all features of the
117
+ # chains (such as block references) versus the cost of
118
+ # generating and comparing blocks.
119
+ request_length = min(80, len(blocks) - input_length)
120
+
121
+ expected_blocks: list[FullBlock] = bt.get_consecutive_blocks(
122
+ request_length,
123
+ block_list_input=block_list_input,
124
+ time_per_block=time_per_block,
125
+ seed=seed,
126
+ skip_slots=empty_sub_slots,
127
+ normalized_to_identity_cc_eos=normalized_to_identity_cc_eos,
128
+ normalized_to_identity_icc_eos=normalized_to_identity_icc_eos,
129
+ normalized_to_identity_cc_sp=normalized_to_identity_cc_sp,
130
+ normalized_to_identity_cc_ip=normalized_to_identity_cc_ip,
131
+ dummy_block_references=dummy_block_references,
132
+ include_transactions=include_transactions,
133
+ genesis_timestamp=uint64(1234567890),
134
+ )
135
+ assert len(expected_blocks) - request_length == input_length
136
+ # if this assert fails, and changing the test chains was
137
+ # intentional, please also update the test chain cache.
138
+ # run: pytest -m build_test_chains
139
+ for i in range(input_length, len(expected_blocks)):
140
+ print(f"i: {i}")
141
+ if blocks[i] != expected_blocks[i]: # pragma: no cover
142
+ print(
143
+ f"Block {i} in the block cache on disk differs "
144
+ "from what BlockTools generated. Please make sure "
145
+ "your test blocks are up-to-date"
146
+ )
147
+ print(f"disk:\n{blocks[i]}")
148
+ print(f"block-tools:\n{expected_blocks[i]}")
149
+ assert blocks[i] == expected_blocks[i]
150
+
151
+
152
+ def test_validate_default_400(bt: BlockTools, default_400_blocks: list[FullBlock]) -> None:
153
+ validate_chain(bt, default_400_blocks, seed=b"400")
154
+
155
+
156
+ def test_validate_default_1000(bt: BlockTools, default_1000_blocks: list[FullBlock]) -> None:
157
+ validate_chain(bt, default_1000_blocks, seed=b"1000")
158
+
159
+
160
+ def test_validate_pre_genesis_empty_1000(bt: BlockTools, pre_genesis_empty_slots_1000_blocks: list[FullBlock]) -> None:
161
+ validate_chain(bt, pre_genesis_empty_slots_1000_blocks, seed=b"empty_slots", empty_sub_slots=1)
162
+
163
+
164
+ def test_validate_default_1500(bt: BlockTools, default_1500_blocks: list[FullBlock]) -> None:
165
+ validate_chain(bt, default_1500_blocks, seed=b"1500")
166
+
167
+
168
+ def test_validate_default_10000(
169
+ bt: BlockTools,
170
+ default_10000_blocks: list[FullBlock],
171
+ ) -> None:
172
+ validate_chain(
173
+ bt,
174
+ default_10000_blocks,
175
+ seed=b"10000",
176
+ dummy_block_references=True,
177
+ )
178
+
179
+
180
+ def test_validate_default_2000_compact(bt: BlockTools, default_2000_blocks_compact: list[FullBlock]) -> None:
181
+ validate_chain(
182
+ bt,
183
+ default_2000_blocks_compact,
184
+ normalized_to_identity_cc_eos=True,
185
+ normalized_to_identity_icc_eos=True,
186
+ normalized_to_identity_cc_ip=True,
187
+ normalized_to_identity_cc_sp=True,
188
+ seed=b"2000_compact",
189
+ )
190
+
191
+
192
+ def test_validate_default_10000_compact(bt: BlockTools, default_10000_blocks_compact: list[FullBlock]) -> None:
193
+ validate_chain(
194
+ bt,
195
+ default_10000_blocks_compact,
196
+ normalized_to_identity_cc_eos=True,
197
+ normalized_to_identity_icc_eos=True,
198
+ normalized_to_identity_cc_ip=True,
199
+ normalized_to_identity_cc_sp=True,
200
+ seed=b"1000_compact",
201
+ )
202
+
203
+
204
+ def test_validate_long_reorg_blocks(
205
+ bt: BlockTools, test_long_reorg_blocks: list[FullBlock], default_10000_blocks: list[FullBlock]
206
+ ) -> None:
207
+ validate_chain(
208
+ bt,
209
+ test_long_reorg_blocks,
210
+ block_list_input=default_10000_blocks[:500],
211
+ seed=b"reorg_blocks",
212
+ time_per_block=8,
213
+ dummy_block_references=True,
214
+ include_transactions=True,
215
+ )
216
+
217
+
218
+ def test_validate_long_reorg_blocks_light(
219
+ bt: BlockTools, test_long_reorg_blocks_light: list[FullBlock], default_10000_blocks: list[FullBlock]
220
+ ) -> None:
221
+ validate_chain(
222
+ bt,
223
+ test_long_reorg_blocks_light,
224
+ block_list_input=default_10000_blocks[:500],
225
+ seed=b"reorg_blocks2",
226
+ dummy_block_references=True,
227
+ include_transactions=True,
228
+ )
229
+
230
+
231
+ def test_validate_long_reorg_1500_blocks(
232
+ bt: BlockTools, test_long_reorg_1500_blocks: list[FullBlock], default_10000_blocks: list[FullBlock]
233
+ ) -> None:
234
+ validate_chain(
235
+ bt,
236
+ test_long_reorg_1500_blocks,
237
+ block_list_input=default_10000_blocks[:1500],
238
+ seed=b"reorg_blocks",
239
+ time_per_block=8,
240
+ dummy_block_references=True,
241
+ include_transactions=True,
242
+ )
243
+
244
+
245
+ def test_validate_long_reorg_1500_blocks_light(
246
+ bt: BlockTools, test_long_reorg_1500_blocks_light: list[FullBlock], default_10000_blocks: list[FullBlock]
247
+ ) -> None:
248
+ validate_chain(
249
+ bt,
250
+ test_long_reorg_1500_blocks_light,
251
+ block_list_input=default_10000_blocks[:1500],
252
+ seed=b"reorg_blocks2",
253
+ dummy_block_references=True,
254
+ include_transactions=True,
255
+ )
@@ -6,11 +6,11 @@ from typing import Optional
6
6
  import pytest
7
7
  from chia_rs.sized_bytes import bytes32
8
8
  from chia_rs.sized_ints import uint32
9
- from clvm.casts import int_to_bytes
10
9
 
11
10
  from chia.consensus.get_block_generator import get_block_generator
12
11
  from chia.types.blockchain_format.serialized_program import SerializedProgram
13
12
  from chia.types.generator_types import BlockGenerator
13
+ from chia.util.casts import int_to_bytes
14
14
 
15
15
 
16
16
  @dataclass(frozen=True)
@@ -3,11 +3,11 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
 
5
5
  import pytest
6
+ from chia_rs import BlockRecord
6
7
  from chia_rs.sized_bytes import bytes32
7
8
  from chia_rs.sized_ints import uint32
8
9
 
9
10
  from chia._tests.util.benchmarks import rand_hash
10
- from chia.consensus.block_record import BlockRecord
11
11
  from chia.consensus.blockchain_interface import BlockRecordsProtocol
12
12
  from chia.consensus.find_fork_point import find_fork_point_in_chain, lookup_fork_chain
13
13
  from chia.simulator.block_tools import test_constants
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from chia_rs import SpendBundle
3
4
  from chia_rs.sized_ints import uint64
4
5
 
5
6
  from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
@@ -8,7 +9,6 @@ from chia.consensus.default_constants import DEFAULT_CONSTANTS
8
9
  from chia.full_node.bundle_tools import simple_solution_generator
9
10
  from chia.types.blockchain_format.program import INFINITE_COST
10
11
  from chia.types.generator_types import BlockGenerator
11
- from chia.types.spend_bundle import SpendBundle
12
12
 
13
13
 
14
14
  def cost_of_spend_bundle(spend_bundle: SpendBundle) -> int:
@@ -5,17 +5,16 @@ from collections.abc import Iterator
5
5
  from dataclasses import dataclass, replace
6
6
  from typing import Optional
7
7
 
8
- from chia_rs import ConsensusConstants
8
+ from chia_rs import ConsensusConstants, SpendBundle
9
9
  from chia_rs.sized_bytes import bytes32
10
10
  from chia_rs.sized_ints import uint32, uint64
11
11
 
12
12
  from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
13
+ from chia.consensus.check_time_locks import check_time_locks
13
14
  from chia.consensus.cost_calculator import NPCResult
14
15
  from chia.full_node.bundle_tools import simple_solution_generator
15
- from chia.full_node.mempool_check_conditions import mempool_check_time_locks
16
16
  from chia.types.blockchain_format.coin import Coin
17
17
  from chia.types.coin_record import CoinRecord
18
- from chia.types.spend_bundle import SpendBundle
19
18
  from chia.util.errors import Err
20
19
 
21
20
  MAX_COST = 11000000000
@@ -84,7 +83,7 @@ class CoinStore:
84
83
  uint64(now.seconds),
85
84
  )
86
85
 
87
- err = mempool_check_time_locks(
86
+ err = check_time_locks(
88
87
  ephemeral_db,
89
88
  result.conds,
90
89
  # TODO: this is technically not right, it's supposed to be the
@@ -129,13 +129,13 @@ def test_message_error_conditions() -> None:
129
129
  mode_integer=uint8(0b111),
130
130
  ).necessary_args
131
131
 
132
- with pytest.raises(ValueError, match="Must specify either mode_integer or both sender and reciever"):
132
+ with pytest.raises(ValueError, match="Must specify either mode_integer or both sender and receiver"):
133
133
  SendMessage(
134
134
  msg=b"foo",
135
135
  sender=MessageParticipant(coin_id_committed=test_coin.name()),
136
136
  )
137
137
 
138
- with pytest.raises(ValueError, match="Must specify either mode_integer or both sender and reciever"):
138
+ with pytest.raises(ValueError, match="Must specify either mode_integer or both sender and receiver"):
139
139
  SendMessage(
140
140
  msg=b"foo",
141
141
  receiver=MessageParticipant(coin_id_committed=test_coin.name()),
@@ -5,14 +5,13 @@ from dataclasses import dataclass
5
5
  from typing import Callable, SupportsBytes
6
6
 
7
7
  import pytest
8
- from chia_rs import G1Element, G2Element
8
+ from chia_rs import CoinSpend, G1Element, G2Element, SpendBundle
9
9
  from chia_rs.sized_bytes import bytes32
10
10
  from chia_rs.sized_ints import uint64
11
11
 
12
12
  from chia.types.blockchain_format.coin import Coin
13
13
  from chia.types.blockchain_format.program import Program
14
- from chia.types.coin_spend import CoinSpend, make_spend
15
- from chia.types.spend_bundle import SpendBundle
14
+ from chia.types.coin_spend import make_spend
16
15
  from chia.wallet.cat_wallet.cat_utils import CAT_MOD, construct_cat_puzzle
17
16
  from chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle import puzzle_for_pk
18
17
  from chia.wallet.trading.offer import OFFER_MOD
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from collections.abc import Iterable
4
4
 
5
- from chia_rs import AugSchemeMPL, G1Element
5
+ from chia_rs import AugSchemeMPL, G1Element, SpendBundle
6
6
  from chia_rs.sized_bytes import bytes32
7
7
  from chia_rs.sized_ints import uint32, uint64
8
8
 
@@ -12,7 +12,6 @@ from chia._tests.util.key_tool import KeyTool
12
12
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
13
13
  from chia.types.blockchain_format.program import Program
14
14
  from chia.types.coin_spend import make_spend
15
- from chia.types.spend_bundle import SpendBundle
16
15
  from chia.util.hash import std_hash
17
16
  from chia.wallet.puzzles import (
18
17
  p2_conditions,
@@ -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, SpendBundle
7
7
  from chia_rs.sized_bytes import bytes32
8
8
  from chia_rs.sized_ints import uint64
9
9
 
@@ -13,9 +13,8 @@ from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_
13
13
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
14
14
  from chia.types.blockchain_format.coin import Coin
15
15
  from chia.types.blockchain_format.program import Program
16
- from chia.types.coin_spend import CoinSpend, make_spend
16
+ from chia.types.coin_spend import make_spend
17
17
  from chia.types.condition_opcodes import ConditionOpcode
18
- from chia.types.spend_bundle import SpendBundle
19
18
  from chia.util.errors import Err
20
19
  from chia.wallet.lineage_proof import LineageProof
21
20
  from chia.wallet.puzzles import p2_conditions, p2_delegated_puzzle_or_hidden_puzzle
@@ -1,20 +1,20 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import pytest
4
- from chia_rs import G2Element
4
+ from chia_rs import G2Element, SpendBundle
5
5
  from chia_rs.sized_bytes import bytes32
6
6
 
7
7
  from chia._tests.util.spend_sim import sim_and_client
8
8
  from chia.types.blockchain_format.program import Program
9
- from chia.types.coin_spend import compute_additions, make_spend
9
+ from chia.types.coin_spend import make_spend
10
10
  from chia.types.condition_opcodes import ConditionOpcode
11
- from chia.types.spend_bundle import SpendBundle
11
+ from chia.wallet.util.compute_additions import compute_additions
12
12
 
13
13
 
14
14
  @pytest.mark.anyio
15
15
  async def test_farming():
16
16
  async with sim_and_client(pass_prefarm=False) as (sim, _):
17
- for i in range(0, 5):
17
+ for i in range(5):
18
18
  await sim.farm_block()
19
19
 
20
20
  assert len(sim.blocks) == 5
@@ -25,7 +25,7 @@ async def test_farming():
25
25
  @pytest.mark.anyio
26
26
  async def test_rewind():
27
27
  async with sim_and_client() as (sim, _):
28
- for i in range(0, 5):
28
+ for i in range(5):
29
29
  await sim.farm_block()
30
30
 
31
31
  save_height = sim.get_height()
@@ -39,11 +39,11 @@ async def test_rewind():
39
39
  @pytest.mark.anyio
40
40
  async def test_all_endpoints():
41
41
  async with sim_and_client() as (sim, sim_client):
42
- for i in range(0, 5):
42
+ for i in range(5):
43
43
  await sim.farm_block()
44
44
  await sim.farm_block(bytes32.zeros)
45
45
  await sim.farm_block(bytes32([1] * 32))
46
- for i in range(0, 5):
46
+ for i in range(5):
47
47
  await sim.farm_block()
48
48
 
49
49
  # get_coin_records_by_hint
@@ -7,23 +7,20 @@ from dataclasses import dataclass, field
7
7
  from pathlib import Path
8
8
  from typing import Any, Optional, Union, cast
9
9
 
10
- from chia_rs import Coin, G2Element
10
+ from chia_rs import BlockRecord, Coin, G2Element
11
11
  from chia_rs.sized_bytes import bytes32
12
12
  from chia_rs.sized_ints import uint8, uint16, uint32, uint64
13
13
 
14
14
  import chia.cmds.wallet_funcs
15
15
  from chia._tests.cmds.testing_classes import create_test_block_record
16
- from chia._tests.cmds.wallet.test_consts import STD_TX, STD_UTX
16
+ from chia._tests.cmds.wallet.test_consts import STD_TX, STD_UTX, get_bytes32
17
17
  from chia.cmds.chia import cli as chia_cli
18
18
  from chia.cmds.cmds_util import _T_RpcClient, node_config_section_names
19
- from chia.consensus.block_record import BlockRecord
20
19
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
21
- from chia.rpc.data_layer_rpc_client import DataLayerRpcClient
22
- from chia.rpc.farmer_rpc_client import FarmerRpcClient
23
- from chia.rpc.full_node_rpc_client import FullNodeRpcClient
20
+ from chia.data_layer.data_layer_rpc_client import DataLayerRpcClient
21
+ from chia.farmer.farmer_rpc_client import FarmerRpcClient
22
+ from chia.full_node.full_node_rpc_client import FullNodeRpcClient
24
23
  from chia.rpc.rpc_client import RpcClient
25
- from chia.rpc.wallet_request_types import GetSyncStatusResponse, SendTransactionMultiResponse
26
- from chia.rpc.wallet_rpc_client import WalletRpcClient
27
24
  from chia.simulator.simulator_full_node_rpc_client import SimulatorFullNodeRpcClient
28
25
  from chia.types.coin_record import CoinRecord
29
26
  from chia.types.signing_mode import SigningMode
@@ -36,6 +33,15 @@ from chia.wallet.transaction_record import TransactionRecord
36
33
  from chia.wallet.util.transaction_type import TransactionType
37
34
  from chia.wallet.util.tx_config import CoinSelectionConfig, TXConfig
38
35
  from chia.wallet.util.wallet_types import WalletType
36
+ from chia.wallet.wallet_request_types import (
37
+ GetSyncStatusResponse,
38
+ NFTCalculateRoyalties,
39
+ NFTCalculateRoyaltiesResponse,
40
+ NFTGetInfo,
41
+ NFTGetInfoResponse,
42
+ SendTransactionMultiResponse,
43
+ )
44
+ from chia.wallet.wallet_rpc_client import WalletRpcClient
39
45
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
40
46
 
41
47
  # Any functions that are the same for every command being tested should be below.
@@ -151,16 +157,14 @@ class TestWalletRpcClient(TestRpcClient):
151
157
  if bytes32([1] * 32), return (uint32(2), "test1"), if bytes32([1] * 32), return (uint32(3), "test2")
152
158
  """
153
159
  self.add_to_log("cat_asset_id_to_name", (asset_id,))
154
- if asset_id == bytes32([1] * 32):
155
- return uint32(2), "test1"
156
- elif asset_id == bytes32([2] * 32):
157
- return uint32(3), "test2"
158
- else:
159
- return None
160
+ for i in range(256):
161
+ if asset_id == get_bytes32(i):
162
+ return uint32(i + 1), "test" + str(i)
163
+ return None
160
164
 
161
- async def get_nft_info(self, coin_id: str, latest: bool = True) -> dict[str, Any]:
162
- self.add_to_log("get_nft_info", (coin_id, latest))
163
- coin_id_bytes = bytes32.fromhex(coin_id)
165
+ async def get_nft_info(self, request: NFTGetInfo) -> NFTGetInfoResponse:
166
+ self.add_to_log("get_nft_info", (request.coin_id, request.latest))
167
+ coin_id_bytes = bytes32.fromhex(request.coin_id)
164
168
  nft_info = NFTInfo(
165
169
  nft_id=encode_puzzle_hash(coin_id_bytes, "nft"),
166
170
  launcher_id=bytes32([1] * 32),
@@ -183,17 +187,18 @@ class TestWalletRpcClient(TestRpcClient):
183
187
  supports_did=True,
184
188
  p2_address=bytes32([8] * 32),
185
189
  )
186
- return {"nft_info": nft_info.to_json_dict()}
190
+ return NFTGetInfoResponse(nft_info)
187
191
 
188
192
  async def nft_calculate_royalties(
189
193
  self,
190
- royalty_assets_dict: dict[Any, tuple[Any, uint16]],
191
- fungible_asset_dict: dict[Any, uint64],
192
- ) -> dict[Any, list[dict[str, Any]]]:
193
- self.add_to_log("nft_calculate_royalties", (royalty_assets_dict, fungible_asset_dict))
194
- return NFTWallet.royalty_calculation(
195
- royalty_assets_dict=royalty_assets_dict,
196
- fungible_asset_dict=fungible_asset_dict,
194
+ request: NFTCalculateRoyalties,
195
+ ) -> NFTCalculateRoyaltiesResponse:
196
+ self.add_to_log("nft_calculate_royalties", (request,))
197
+ return NFTCalculateRoyaltiesResponse.from_json_dict(
198
+ NFTWallet.royalty_calculation(
199
+ {asset.asset: (asset.royalty_address, asset.royalty_percentage) for asset in request.royalty_assets},
200
+ {asset.asset: asset.amount for asset in request.fungible_assets},
201
+ )
197
202
  )
198
203
 
199
204
  async def get_spendable_coins(
@@ -14,7 +14,7 @@ from _pytest.capture import CaptureFixture
14
14
 
15
15
  import chia._tests
16
16
  from chia._tests.util.misc import Marks, datacases
17
- from chia.cmds.gh import Per, TestCMD, get_gh_token
17
+ from chia.cmds.dev.gh import Per, TestCMD, get_gh_token
18
18
 
19
19
  test_root = Path(chia._tests.__file__).parent
20
20
 
@@ -9,9 +9,9 @@ from chia._tests.util.time_out_assert import time_out_assert
9
9
  from chia.cmds.farm_funcs import summary
10
10
  from chia.farmer.farmer import Farmer
11
11
  from chia.harvester.harvester import Harvester
12
+ from chia.server.aliases import FarmerService, HarvesterService, WalletService
12
13
  from chia.simulator.block_tools import BlockTools
13
14
  from chia.simulator.start_simulator import SimulatorFullNodeService
14
- from chia.types.aliases import FarmerService, HarvesterService, WalletService
15
15
 
16
16
 
17
17
  @pytest.mark.anyio
@@ -4,7 +4,7 @@ from dataclasses import dataclass
4
4
  from pathlib import Path
5
5
  from typing import Any, Optional
6
6
 
7
- from chia_rs import FoliageTransactionBlock
7
+ from chia_rs import FoliageTransactionBlock, FullBlock
8
8
  from chia_rs.sized_bytes import bytes32
9
9
  from chia_rs.sized_ints import uint32, uint64
10
10
 
@@ -12,7 +12,6 @@ from chia._tests.cmds.cmd_test_utils import TestFullNodeRpcClient, TestRpcClient
12
12
  from chia._tests.cmds.testing_classes import hash_to_height, height_hash
13
13
  from chia._tests.util.test_full_block_utils import get_foliage, get_reward_chain_block, get_transactions_info, vdf_proof
14
14
  from chia.types.blockchain_format.serialized_program import SerializedProgram
15
- from chia.types.full_block import FullBlock
16
15
 
17
16
 
18
17
  @dataclass